Рекурсив - Rekursiv

Rekursiv был компьютерный процессор разработан David M. Harland в середине 1980-х годов в разделении привет-Fi производитель Linn Products . Это была одна из немногих компьютерных архитектур, предназначенных для реализации объектно-ориентированных концепций непосредственно в аппаратном обеспечении, форма компьютерной архитектуры на языке высокого уровня . Rekursiv работал непосредственно с объектами, а не с битами, полубайтами, байтами и словами. Виртуальная память использовалась как постоянное хранилище объектов, и, что необычно, набор команд процессора поддерживал рекурсию (отсюда и название).

К тому времени, когда проект представил свою первую реализацию, новые процессоры, такие как Sun SPARC и Intel 486, превзошли его по производительности, и разработка была прекращена в 1988 году.

История

Проект Rekursiv начался как попытка улучшить контроль сборочной линии на заводах Linn в Глазго , Шотландия . Их линии были автоматизированы с использованием набора систем VAX-11 , но они были медленными и очень сложными для программирования с той гибкостью, которую желал основатель Linn, Айвор Тифенбрун . К началу 1980-х Тифенбрун убедился, что объектно-ориентированное программирование предложит решения этих проблем.

В 1981 году Тифенбрун нанял несколько программистов, чтобы они написали версию основополагающего языка Smalltalk для систем VAX, позаимствовав некоторый синтаксис из ALGOL . Система, известная как LINGO, работала, но очень медленно работала на платформе VAX. Тифенбрун пришел к выводу, что решение проблемы производительности заключалось не в улучшении языка VAX, а в создании полностью нового ЦП, специально предназначенного для выполнения объектных программ.

В 1984 году Тифенбрун основал дочернюю компанию Linn Smart Computing под руководством профессора Дэвида Харланда из Стратклайдского университета, в результате чего родился проект Rekursiv. Первая версия системы появилась в 1988 году. Было произведено небольшое количество прототипов плат VMEbus , получивших название Hades , содержащих эти четыре микросхемы плюс 80 МБ оперативной памяти. Они были предназначены для установки в хост-системе, такой как рабочая станция Sun-3 . Хотя Rekursiv так и не был полностью разработан и не имел коммерческого успеха, несколько досок Hades использовались в академических исследовательских проектах в Великобритании . Последняя известная копия компьютера «Рекурсив» оказалась на дне канала Форт-энд-Клайд в Глазго.

Согласно сообщению исследователя из Университета Стратклайда, во время разработки системы Rekursiv была написана новая версия языка LINGO для системы Sun SPARC , которая появилась примерно в это время. Он работал в два раза быстрее, чем оборудование Rekursiv, что делало усилия бессмысленными. Через некоторое время компания была закрыта.

Описание

Основные понятия

Основная концепция платформы Rekursiv заключалась в предоставлении аппаратного хранилища постоянных объектов, которое постоянно и незаметно записывает состояние памяти на диск без вмешательства операционной системы или программы пользователя. Один рецензент описал его как «механизм объектной базы данных для создания постоянных объектов и управления ими».

Чтобы такая система работала с разумной производительностью при выполнении сложных программ, Rekursiv был разработан, чтобы позволить программисту писать свою собственную архитектуру набора инструкций (ISA), предназначенную для языка, который они использовали. Набор команд микрокода хранился в статической ОЗУ . Там не было по умолчанию ISA, хотя Linn поставляется один для запуска программ на языке программирования Си .

Работа с памятью

Система не предоставляла аналог адреса памяти программам, работающим в ней, вместо этого объектам давался 40-битный идентификатор, который чип Objekt хешировал и использовал в качестве указателя на физическую память. Objekt также обработал отображение объектной памяти на жесткий диск для постоянного хранения, реализовав систему виртуальной памяти . Чтобы обрабатывать сборку мусора , Objekt разделил предоставленную динамическую RAM (основную память) на две половины, используя одну для создания нового объекта и оставив другую неиспользованной. Когда для нового объекта требовалось больше памяти, чем было свободно в используемой части, Objekt приостанавливал систему, копировал любой объект с действительным указателем на него в неиспользуемую половину памяти, а затем переключался, чтобы сделать ранее неиспользуемую половину активной частью. В случаях крайне ограниченного объема памяти Objekt сначала попытается разместить некоторые объекты на диске, а если это не сможет освободить достаточно места, будет использовать обе половины памяти.

Объекты представляют собой составные структуры с несколькими значениями внутри них, которые в большинстве систем реализованы в виде серии указателей на ячейки памяти, в которых хранятся значения. В Rekursiv адреса заменяются 40-битными идентификаторами объектов, указывающими на раздел памяти, выделенный Objekt. Наиболее значимый бит (MSB) из 40-битного указателя был установлен в 1 , если значение было идентификатор объекта, или 0 , если он был нетипизированный двоичное значение. Последний использовался для хранения больших неформатированных данных, таких как данные для цифрового изображения, и мог использоваться только внутри объектов.

В случае полного объекта было доступно дальнейшее упрощение для хранения коротких полей как значений внутри самого указателя. На это указывает также установка второго MSB на 0. В этом случае следующие пять битов указывают тип, определенный ISA программы, который может быть «целым числом» или «фрагментом строки». Фактическое значение этого «компактного объекта» помещалось в младшие 32 бита указателя. Это позволило немедленно представить такие простые значения процессору без необходимости следовать указателю на физическое местоположение, что сэкономило память и повысило производительность.

Поскольку два верхних бита 40-битного указателя использовались для флагов состояния, Objekt смог идентифицировать всего лишь 2 38 объекта. Поскольку объекты постоянно собирались сборщиком мусора, многие из этих значений могут указывать на несуществующие объекты, а это означает, что в системе могут закончиться идентификаторы при практическом использовании. Чтобы решить эту проблему, весь образ системы периодически записывался на диск, в течение которого все указатели были перенумерованы, чтобы они были последовательными.

Микрокод

Набор команд процессора хранился в специальной области статической ОЗУ, известной как «хранилище управления». Доступ к нему осуществлялся через выделенную 16-битную шину, состоящую из 16 384 слов по 128 бит каждое. Отдельный раздел SRAM «карта хранилища управления» содержит нумерованную таблицу точек входа в микрокодированные подпрограммы, отображая 10-битный код операции на один из 2048 объектов. В обычном процессоре отображение обычно реализуется в аппаратной логике в декодере кода операции.

Коды операций могут быть частями объектов и храниться так же, как любые другие данные, использующие Objekt. По соображениям производительности в отдельном банке памяти, известном как NAM (и NAMARG), зарезервировано 524 288 40-битных слов, в которых хранятся 10-битные коды операций и 30-битные аргументы. NAM подключается непосредственно к процессору через его собственную шину, что делает его более похожим на кэш в современных архитектурах.

На практике разработчик языка программирования сначала должен обрисовать в общих чертах желаемый язык ассемблера , который будет основным синтаксисом языка, содержащим до 2048 инструкций. Обычно используемые процедуры, такие как те, что находятся в stdlib в C, затем будут закодированы с использованием этого языка ассемблера и записаны в NAM. Моделирование показало, что подпрограммы Lisp , написанные с использованием этого стиля, работали примерно в 20 раз быстрее, чем машина Symbolics Lisp . Компания также произвела аналогичные системы микрокода для Smalltalk и Prolog, которые позже сократили сложную операцию унификации Prolog до единственного кода операции.

Физическая упаковка

Процессор Rekursiv состоял из четырех микросхем вентильной матрицы с именами Numerik ( 32-битный ALU ), Logik (секвенсор команд), Objekt (объектно-ориентированный блок управления памятью ) и Klock (часы процессора и вспомогательная логика). Оригинальные версии работали на частоте 10 МГц.

Linn намеревалась продавать чипсет Rekursiv поставщикам, а также производить на его основе собственные рабочие станции . Первоначально единственным продуктом был «HADES», «Аппаратный ускоритель для динамических экспертных систем», который состоял из карты VMEbus, которую можно было подключить к рабочей станции Sun-3 или Sun-4 . HADES включала четыре основных чипа, 2 МБ SRAM 45 наносекунд (22 МГц) и 5 ​​МБ DRAM 100 нс (10 МГц). Доступ к диску осуществлялся программой, работающей в базовой системе Sun, что значительно снижало производительность.

Примечания

использованная литература

Цитаты

Список используемой литературы

дальнейшее чтение