Рекурсивно
Rekursiv — компьютерный процессор, разработанный Дэвидом М. Харландом в середине 1980-х годов в подразделении Hi-Fi производителя Linn Products . Это была одна из немногих компьютерных архитектур, предназначенных для реализации объектно-ориентированных концепций непосредственно в аппаратном обеспечении, форма компьютерной архитектуры на языке высокого уровня . Рекурсив оперировал непосредственно с объектами, а не с битами, байтами и словами. Виртуальная память использовалась в качестве постоянного хранилища объектов, и, что необычно, набор инструкций процессора поддерживал рекурсию (отсюда и название).
К моменту первой реализации проекта новые процессоры, такие как Sun SPARC и Intel 486, превзошли его по производительности, и в 1988 году разработка была прекращена.
История
[ редактировать ]Проект Rekursiv начался как попытка улучшить управление сборочной линией на заводах Linn в Глазго , Шотландия . Их линии были автоматизированы с использованием набора систем VAX-11 , но они были медленными, и их было очень сложно запрограммировать с той гибкостью, которую желал основатель Linn Айвор Тифенбрун . К началу 1980-х годов Тифенбрун убедился, что объектно-ориентированное программирование может предложить решения этих проблем. [1]
В 1981 году Тифенбрун нанял несколько программистов для написания версии языка Smalltalk для систем VAX, позаимствовав часть синтаксиса из ALGOL . Система, известная как LINGO, работала, но на платформе VAX работала очень медленно. Тифенбрун пришел к выводу, что решение проблемы производительности заключалось не в улучшении языка VAX, а в создании совершенно нового процессора, специально предназначенного для запуска объектных программ. [1]
В 1984 году Тифенбрун основал дочернюю компанию Linn Smart Computing под руководством профессора Университета Стратклайда Дэвида Харланда, и родился проект Rekursiv. Первая версия системы появилась в 1988 году. [1] Было выпущено небольшое количество прототипов VMEbus плат , названных Hades , состоящих из этих четырех чипов и 80 МБ ОЗУ. Они предназначались для установки в хост-системе, такой как Sun-3 рабочая станция . Хотя Rekursiv так и не был полностью разработан и не имел коммерческого успеха, несколько плат Hades использовались в академических исследовательских проектах в Великобритании . Последняя известная копия компьютера «Рекурсив» оказалась на дне канала Форт и Клайд в Глазго. [2]
Согласно сообщению исследователя из Университета Стратклайда, пока разрабатывалась система Rekursiv, была написана новая версия языка LINGO для Sun SPARC появившейся примерно в это время системы . Он работал в два раза быстрее, чем аппаратное обеспечение Rekursiv, что делало усилия бессмысленными. [3] Через некоторое время после этого компанию закрыли. [а]
Описание
[ редактировать ]Основные понятия
[ редактировать ]Основная концепция платформы Rekursiv заключалась в обеспечении аппаратного постоянного хранилища объектов, постоянно и незаметно записывающего состояние памяти на диск без вмешательства операционной системы или программы пользователя. Один рецензент описал его как «механизм объектной базы данных для создания и управления постоянными объектами». [5]
Чтобы такая система работала с разумной производительностью при запуске сложных программ, Rekursiv был разработан, чтобы позволить программисту написать свою собственную архитектуру набора команд (ISA), предназначенную для используемого языка. хранился Набор инструкций микрокода в статической оперативной памяти . [6] ISA по умолчанию не было, хотя Linn предоставила его для запуска программ на языке программирования C. [7]
Обработка памяти
[ редактировать ]Система не предоставляла аналог адреса памяти программам, работающим на ней, вместо этого объектам давался 40-битный идентификатор, который чип Objekt хэшировал и использовал в качестве указателя на физическую память. [8] Objekt также выполнил преобразование объектной памяти на жесткий диск для постоянного хранения, реализовав систему виртуальной памяти . Чтобы справиться со сборкой мусора , Objekt разделил предоставленную динамическую оперативную память (основную память) на две половины, используя одну для создания новых объектов, а другую оставив неиспользованной. Когда новому объекту требовалось больше памяти, чем было свободно в используемой части, Objekt приостанавливал работу системы, копировал любой объект с действительным указателем на него в неиспользуемую половину памяти, а затем переключался, чтобы сделать ранее неиспользованную половину активной части. В случаях крайне ограниченной памяти Objekt сначала пытается записать некоторые объекты на диск, а если при этом не удается освободить достаточно места, использует обе половины памяти. [9]
Объекты представляют собой составные структуры с множеством значений внутри них, которые в большинстве систем реализованы как серии указателей на ячейки памяти, содержащие значения. В Rekursiv адреса заменяются 40-битными идентификаторами объектов, указывающими на раздел памяти, выделенный Objekt. Самый старший бит (MSB) 40-битного указателя был установлен в 1, если значение было идентификатором объекта, или в 0, если это было нетипизированное двоичное значение. Последний использовался для хранения больших неформатированных данных, таких как данные цифрового изображения, и мог использоваться только внутри объектов. [9]
В случае полного объекта было доступно дальнейшее упрощение для хранения коротких полей как значений внутри самого указателя. Это было указано путем установки второго старшего бита в 0. В этом случае следующие пять битов обозначают тип, определенный ISA программы, который может быть «целым числом» или «фрагментом строки». Фактическое значение этого «компактного объекта» помещалось в младшие 32 бита указателя. Это позволило немедленно представить процессору такие простые значения без необходимости следовать указателю на физическое местоположение, что позволило сэкономить память и повысить производительность. [9] [б]
Поскольку два верхних бита 40-битного указателя использовались для флагов состояния, Objekt мог идентифицировать только 2 бита. 38 объекты в общей сложности. Поскольку объекты постоянно подвергались сборке мусора, многие из этих значений могли указывать на несуществующие объекты, а это означает, что при практическом использовании в системе могут закончиться идентификаторы. Чтобы решить эту проблему, весь образ системы периодически записывался на диск, при этом все указатели перенумеровывались, чтобы они были последовательными. [9]
Микрокод
[ редактировать ]Набор инструкций процессора хранился в выделенной области статической оперативной памяти, известной как «хранилище управления». Доступ к нему осуществлялся через выделенную 16-битную шину, организованную в виде 16 384 слов по 128 бит каждое. Отдельный раздел «карты хранилища управления» SRAM содержит пронумерованную таблицу точек входа в микрокодированные процедуры, отображая 10-битный код операции на один из 2048 объектов. В обычном процессоре карта обычно реализуется в аппаратной логике декодера кода операции. [10]
Коды операций могут быть частями объектов и храниться так же, как любые другие данные с использованием Objekt. По соображениям производительности отдельный банк памяти, известный как NAM (и NAMARG), зарезервировал 524 288 40-битных слов для хранения 10-битных кодов операций и 30-битных аргументов. NAM подключается напрямую к процессору через собственную шину, что делает его более похожим на кэш в современных архитектурах. [10]
На практике разработчик языка программирования сначала должен обрисовать желаемый язык ассемблера , который будет базовым синтаксисом языка, содержащим до 2048 инструкций. Часто используемые процедуры, такие как те, которые находятся в stdlib на C, затем будут закодированы с использованием этого языка ассемблера и записаны в NAM. Моделирование показало, что Lisp подпрограммы , написанные с использованием этого стиля, работали примерно в 20 раз быстрее, чем машина с символикой Lisp . Компания также создала аналогичные системы микрокода для Smalltalk и Prolog, позднее сократив сложную операцию унификации Prolog до одного кода операции. [10]
Физическая упаковка
[ редактировать ]Процессор Rekursiv состоял из четырех микросхем вентильной матрицы, названных Numerik ( 32-битное АЛУ ), Logik (секвенсор инструкций), Objekt (объектно-ориентированный блок управления памятью ) и Klock (тактовые часы процессора и вспомогательная логика). Исходные версии работали на частоте 10 МГц. [10]
Линн намеревалась продавать набор микросхем Rekursiv поставщикам, а также производить с его использованием собственные рабочие станции . Первоначально единственным продуктом был «HADES», «Аппаратный ускоритель для динамических экспертных систем», который состоял из карты VMEbus , которую можно было подключить к рабочей станции Sun-3 или Sun-4 . HADES включал четыре основных чипа: 2 МБ SRAM 45 наносекунд (22 МГц) и 5 МБ DRAM 100 нс (10 МГц). Доступ к диску осуществлялся программой, работающей в базовой системе Sun, что значительно снижало производительность. [10]
Примечания
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Перейти обратно: а б с Паунтин 1988 , с. 341.
- ^ Роуз, Сев (19 апреля 2011 г.). «Рекурсив» . SlideShare.net . Слайдшер . Проверено 27 февраля 2017 г. .
- ^ Рекурсивная история Линн - РЕПОСТ
- ^ Лотиан 1993 .
- ^ Паунтин 1988 , с. 348.
- ^ Паунтин 1988 , с. 342.
- ^ Pountain 1988 , стр. 348–349.
- ^ Паунтин 1988 , с. 346.
- ^ Перейти обратно: а б с д Паунтейн 1988 , с. 347.
- ^ Перейти обратно: а б с д и Паунтин 1988 , с. 349.
Библиография
[ редактировать ]- Паунтейн, Дик (ноябрь 1988 г.). «Рекурсив: объектно-ориентированный процессор» (PDF) . БАЙТ . 13 (12): 341–349.
- Лотиан, Джеймс (15 марта 1993 г.). "Re: Фишка рекурсив (довольно длинный)" . Группа новостей : comp.arch . Usenet: [электронная почта защищена] .
Дальнейшее чтение
[ редактировать ]- Харланд, Дэвид М. (август 1988 г.). Рекурсив: Объектно-ориентированная компьютерная архитектура (Серия Эллиса Хорвуда «Компьютеры и их приложения») . Эллиса Хорвуда Лтд. ISBN 0-13-771965-5 .
- Бейнс, Руперт (март 1990 г.). «Прием RISC». Мир персональных компьютеров . 13 (3): 136–140.
- Харланд, Дэвид М.; Ганн, Хэмиш И.Е.; Прингл, Ян А.; Белофф, Бруно (сентябрь 1986 г.). «Рекурсив: архитектура искусственного интеллекта». Учеб. ИИ Европа .
- Харланд, Дэвид М.; Белофф, Бруно (декабрь 1986 г.). «Микрокодирование объектно-ориентированного набора команд» . Новости компьютерной архитектуры ACM SIGARCH . 14 (5). Ассоциация вычислительной техники : 3. doi : 10.1145/18981.18982 . S2CID 17125054 .
- Харланд, Дэвид М.; Белофф, Бруно (апрель 1987 г.). «Объект: постоянное хранилище объектов со встроенным сборщиком мусора» . Уведомления ACM SIGPLAN . 22 (4). Ассоциация вычислительной техники : 70. doi : 10.1145/24714.24723 . S2CID 14704178 .
- Роуз, Себ. «Рекурсивный» .
- Харланд, Дэвид М. «Объектно-ориентированная компьютерная архитектура: - Концепции и проблемы - Объектно-ориентированная компьютерная архитектура REKURSIV» (PDF) .