Введение
Серия 32-битных супермини-ЭВМ Orion – это серия 32-битных супермини-ЭВМ, разработанных и произведенных в 1980-х годах компанией High Level Hardware Limited (HLH), расположенной в Оксфорде, Великобритания. Компания выпустила четыре версии машины:
The Orion was a series of 32 bit super minicomputers designed and produced in the 1980s by High Level Hardware Limited (HLH), a company based in Oxford, UK. The company produced four versions of the machine:
The original Orion, sometimes referred to as the "Microcodeable Orion". The Orion 1/05, in which the microcodeable CPU was replaced with the much faster Fairchild Clipper RISC C 100 processor providing approximately 5.5 MIPS of integer performance and 1 Mflop of double precision floating point performance. The Orion 1/07 which offered approximately 33% greater performance over the 1/05 (7.3 MIPS and 1.33 Mflops). The Orion 1/10 based on a later generation C 300 Clipper from the Advanced Processor Division at Intergraph Corporation that required extensive cooling. The Orion 1/10 offered a further 30% improvement for integer and single precision floating point operations and over 150% improvement for double precision floating point (10 MIPS and 3 Mflops). All four machines employed the same I/O sub system.
Оригинальный Orion, иногда называемый "Microcodeable Orion". Orion 1/05, в котором микрокодируемый процессор был заменен на значительно более быстрый процессор Fairchild Clipper RISC C 100, обеспечивающий приблизительно 5,5 МИПС производительности в операциях с целыми числами и 1 Мфлопс производительности в операциях с плавающей точкой двойной точности. Orion 1/07, который обеспечивал примерно на 33% более высокую производительность по сравнению с 1/05 (7,3 МИПС и 1,33 МФлопс). Orion 1/10, основанный на процессоре C 300 Clipper более позднего поколения от подразделения Advanced Processor Division компании Intergraph Corporation, требовавший интенсивного охлаждения. Orion 1/10 обеспечивал дополнительное увеличение производительности на 30% в операциях с целыми числами и одинарной точностью, а также более чем на 150% в операциях с плавающей точкой двойной точности (10 МИПС и 3 МФлопс). Все четыре машины использовали единую подсистему ввода-вывода.
The Orion was a series of 32 bit super minicomputers designed and produced in the 1980s by High Level Hardware Limited (HLH), a company based in Oxford, UK. The company produced four versions of the machine:
The original Orion, sometimes referred to as the "Microcodeable Orion". The Orion 1/05, in which the microcodeable CPU was replaced with the much faster Fairchild Clipper RISC C 100 processor providing approximately 5.5 MIPS of integer performance and 1 Mflop of double precision floating point performance. The Orion 1/07 which offered approximately 33% greater performance over the 1/05 (7.3 MIPS and 1.33 Mflops). The Orion 1/10 based on a later generation C 300 Clipper from the Advanced Processor Division at Intergraph Corporation that required extensive cooling. The Orion 1/10 offered a further 30% improvement for integer and single precision floating point operations and over 150% improvement for double precision floating point (10 MIPS and 3 Mflops). All four machines employed the same I/O sub system.
Предыстория
High Level Hardware – независимая британская компания, основанная в начале 1982 года Дэвидом Г. Смолом и Тимоти Б. Робинсоном. Дэвид Смолл ранее был одним из основателей и директором компании Research Machines Limited, базирующейся в Оксфорде. Оба партнера ранее занимали должности старших сотрудников в группе специальных проектов Research Machines. В 1984 году, как результат этих исследований, High Level Hardware представила Orion – высокопроизводительный, микрокодируемый супермини-компьютер на базе UNIX, ориентированный, в частности, на научные приложения, такие как математическое моделирование, искусственный интеллект и символьная алгебра. В апреле 1987 года High Level Hardware выпустила серию Orion на основе процессора Fairchild Clipper, но в конце 1989 года отказалась от производства аппаратного обеспечения, чтобы сосредоточиться на продаже высококлассных компьютеров Apple Macintosh.
Микрокодируемый Орион
Оригинальный Orion использовал процессорную архитектуру, основанную на микросхемах серии Am2900. Этот процессор был новаторским благодаря записываемому микрокоду, то есть возможности переопределения набора инструкций. Эта функция использовалась для настройки некоторых Orion с наборами инструкций, оптимизированными для языков программирования Occam и LISP, или даже для вычисления фракталов.
Центральный блок обработки
Процессор состоял из АЛУ, построенного на основе микропроцессора Am2901 с битовым срезом. К нему был добавлен блок манипулирования байтами, способный выполнять операции сдвига, вращения и маскирования, необходимые для обработки восьми- и шестнадцатибитных данных. Дополнительная логика обеспечивала поддержку сравнений в дополнительном коде с двумя знаками (как со знаком, так и без) за одну операцию, арифметики произвольной точности и нормализации чисел с плавающей точкой. Большинство операций выполнялись за 150 нс, однако время цикла варьировалось от 125 нс до 200 нс под управлением микропрограммы для оптимизации временных характеристик. Микросекуэ́нсор, основанный на Am2910, управлял потоком управления в микропрограмме. Он мог выполнять ветвления, циклы и вызовы подпрограмм, большинство из которых могли быть условными в зависимости от различных состояний процессора. Декодер инструкций ЦП декодировал инструкции машинного уровня (в отличие от микроинструкций). Это достигалось с помощью таблиц соответствия, хранящихся в быстрой оперативной памяти с проверкой четности, которые сопоставляли однобайтовые опкоды адресам микроинструкций. Управление передавалось по этим адресам с помощью специальной операции секвенсора, выполнявшейся параллельно с другими функциями ЦП. Таким образом, декодирование инструкции перекрывалось с ее выполнением. Был предусмотрен механизм обхода, позволяющий расширить набор инструкций за пределы 256 записей, выбираемых одним опкодом. Существовал также механизм переключения между несколькими наборами таблиц диспетчеризации, позволяющий машине одновременно поддерживать несколько наборов инструкций. С помощью этого механизма можно было выбирать другой набор инструкций при каждом переключении контекста. Этот механизм также использовался для реализации привилегированных инструкций, динамического профилирования (для мониторинга производительности) и нескольких режимов работы ЦП (например, пользовательского и ядра). Кэш-память, независимая от основной памяти, предназначалась для хранения вершины стека вычислений для процедурно-ориентированного языка. Кэш имел задержку в два цикла, после чего мог выдавать одно слово за цикл и был разделен на несколько страниц, каждая из которых содержала 512 32-битных слов с защитой четности. Страницы группировались попарно, с архитектурным максимумом в 16 пар. Оригинальная машина реализовала две пары. Второй элемент каждой пары обычно использовался в качестве дополнительных быстрых регистров и временного хранилища, не влияя на страницу стека. Младшие девять бит регистра ЦП, адресующего кэш, были реализованы в виде счетчиков и позволяли выполнять операции инкремента и декремента (push и pop), а также произвольный доступ.
Контрольный магазин
Контрольное хранилище было построено на основе высокоскоростных статических оперативных запоминающих устройств. Оно обычно загружалось при загрузке системы, что позволяло полностью микропрограммировать машину пользователем. Время цикла контрольного хранилища составляло 125 нс, что соответствовало самому быстрому циклу процессора. Архитектура предусматривала контрольное хранилище объемом до 32 Кслов (64-битное слово), однако из-за ограничений в технологии памяти первоначальная реализация позволяла максимум 8 Кслов. Стандартная конфигурация включала 4 Кслова на одной печатной плате. Можно было установить две такие платы. Предусмотрена была проверка четности. Для достижения необходимой скорости при разумной стоимости вокруг контрольного хранилища использовался двухступенчатый конвейер. Позже была разработана плата на 16 Кслов, что обеспечивало максимальный размер контрольного хранилища в 32 Кслова.
Главная память
Основная память была организована в виде 32-битных слов с двухканальным чередованием, что позволяло извлекать или сохранять 64 бита данных за одну операцию. В нормальном режиме к основной памяти осуществлялся доступ через блок управления виртуальной памятью. В первоначальной реализации каждый модуль основной памяти содержал 0,5 Мбайт памяти с защитой по четности, реализованной на основе 64K динамических МОП-микросхем. Время произвольного доступа составляло 500 нс на 32-битное слово, но при передаче нескольких слов, например, в кэш и из кэша, достигалось эффективное время цикла 250 нс на 32-битное слово (16 Мбайт в секунду). Модули памяти декодировали 26-битные физические адреса слов, и в пределах этого ограничения общий объем памяти ограничивался только количеством доступных слотов системной шины; в зависимости от конфигурации ввода-вывода системы, можно было установить до 10 Мбайт физической памяти. В более поздней реализации размер модуля памяти был увеличен до 2 МБ с использованием 256K микросхем памяти. Преобразование логических адресов в физические осуществлялось с использованием набора таблиц преобразования адресов. Каждый процесс имел доступ к трем независимо расширяемым областям памяти, обычно используемым для программы, кучи и стека. Четвертая область обычно резервировалась для операционной системы. Таблицы также содержали набор битов прав доступа для каждой страницы памяти, обеспечивающих полную защиту и поддержку реализации виртуальной памяти с подкачкой по требованию. Таблицы преобразования адресов кэшировались в процессоре, что в большинстве случаев приводило к накладным расходам всего в одну микроинструкцию при выполнении преобразования адресов. Размер страницы, фиксированный аппаратным обеспечением, составлял 4 Кбайт. Каждая логическая область могла достигать 256 Мбайт.
independently extensible regions of memory, used typically for program, heap and stack. A fourth region was normally reserved for the operating system. The tables also contained a set of rights bits for each memory page giving full protection and supporting the implementation of demand paged virtual memory. The translation tables were cached in the CPU resulting, in most cases, in an overhead of only one microinstruction when performing address translation. The page size which was fixed by the hardware, was 4 Kbytes. Each logical region could be up to 256 Mbytes.
Подсистема "Вход/выход"
Подсистемы ввода/вывода Orion включали в себя ряд подключенных микрокомпьютеров для выполнения задач низкого уровня, таких как запуск диагностики и управление терминалами и дисками. Диагностический микрокомпьютер (на базе Zilog Z80) был встроен в центральный процессор. Его функции включали выполнение проверки работоспособности системы при первом включении питания, загрузку процессора и перехват управления в случае обнаружения неисправимой ошибки четности хранилища команд. Он также мог использоваться для динамической загрузки нового микрокода во время работы машины. Предусмотрен был интерфейс RS 232C, к которому можно было подключить терминал. Затем можно было проводить расширенную диагностику в сочетании со специальным микрокодом для анализа неисправностей при сбое системы. Проблемы обычно можно было локализовать до одной или двух интегральных схем. Один или несколько интеллектуальных каналов ввода/вывода контролировали работу периферийных устройств. Каждый из них включал полнофункциональный микрокомпьютер на базе Z80, выполнявший функции управления и обслуживания. Передача данных между периферийными устройствами и системой осуществлялась по каналу прямого доступа к памяти (DMA), реализованному на основе битовых микропроцессоров Am2901. Это позволяло в полной мере использовать производительность системы памяти Orion и периферийных устройств, а микрокомпьютер мог принимать корректирующие меры при возникновении программных ошибок ввода/вывода. Программное обеспечение Orion взаимодействовало с микрокомпьютером посредством протокола обмена сообщениями высокого уровня.
Операционная система
Операционной системой для микрокодируемого Orion была OTS (Orion Time Sharing) версии 1.x, порт операционной системы 4.1BSD UNIX. На Orion с процессорами Clipper работала версия OTS 2.x, порт UNIX 4.2BSD с некоторыми дополнениями. Эта система не отличалась особой надежностью и безопасностью и имела склонность к "забыванию" идентификаторов пользователей процессов, что приводило к случайному запуску пользовательских процессов с правами root. Компания HLH также разработала графический терминал для Orion под названием StarPoint, на который была портирована система X Window System. Серия Orion пользовалась умеренной популярностью в кафедрах компьютерных наук британских университетов, включая Вестфилдский колледж в Лондоне, университеты Бат, Эдинбург, Хериот-Уотт, Кингстонский политехнический институт, Кент, Саутгемптон, Уорвик, Йорк, а также Королевский колледж в Лондоне. Типичная многопользовательская конфигурация Orion включала 8 МБ оперативной памяти, жесткий диск SMD (например, Kennedy объемом 168 МБ или Fujitsu Eagle объемом 434 МБ), ленточный накопитель QIC 24 объемом 60 МБ и от 8 до 32 портов RS 232 для подключения терминалов.