Мейнфрейм GE 645 был развитием GE 635 для использования в проекте Multics . Это был первый компьютер, в котором реализована настраиваемая аппаратно защищенная система памяти. Он был разработан для удовлетворения требований Project MAC по разработке платформы, на которой будет размещена предложенная ими операционная система разделения времени следующего поколения ( Multics ), а также для удовлетворения требований теоретической компьютерной утилиты . [1] Система была первой по-настоящему симметричной многопроцессорной машиной, использовавшей виртуальную память , она также была одной из первых машин, реализовавших то, что сейчас известно как резервный буфер трансляции , [2] [3] [4] основополагающий патент, на который был предоставлен Джону Кулеру и Эдварду Глейзеру. [5]
General Electric первоначально публично анонсировала GE 645 на Осенней совместной компьютерной конференции [1] [3] в ноябре 1965 года. На последующей пресс-конференции в декабре [6] [7] того же года было объявлено, что они будут работать над « широкая коммерческая доступность» [8] системы. Однако впоследствии в конце 1966 года они сняли его с активного маркетинга. [8] Всего в период с 1967 по 1975 год системы GE 645 использовались как минимум на 6 предприятиях. [9]
Базовая конфигурация системы состояла из комбинации 4 базовых модулей [4] [10] :
Модули системного контроллера (SCM) фактически выступали в качестве сердца системы. Это были пассивные устройства, которые подключались к каждому активному устройству (процессору, GIOC, EMU) и обеспечивали следующее: [4] [11]
По сравнению с остальной частью серии 600, в 645 не использовались стандартные IOC (контроллеры ввода-вывода) для ввода-вывода. Для связи он также не использовал внешний процессор DATANET-30 . Вместо этого оба набора функций были объединены в один блок, называемый GIOC (обобщенный контроллер ввода-вывода), который предоставлял выделенные каналы как для периферийных устройств (дисков/лент), так и для терминального ввода-вывода. [4] [12] GIOC действовал как активное устройство и был напрямую подключен к памяти через выделенные каналы связи с каждым системным контроллером, который присутствовал в определенной конфигурации.
Блок расширенной памяти, хотя и назывался барабаном , на самом деле представлял собой большой жесткий диск с фиксированной головкой, по одной головке на дорожку, [13] это был OEM-продукт от Librascope . [13] [14] EMU состоял из 4096 дорожек, обеспечивающих 4 МВт (мегаслова) памяти (что эквивалентно 16 МБ). Каждая дорожка имела отдельную головку чтения/записи, они были организованы в группы по 16 «наборов дорожек», которые используются для чтения/записи сектора. Сектор является единицей распределения данных по умолчанию в EMU и состоит из 80 слов, из которых 64 слова являются данными, а остальные 16 используются в качестве защитной полосы. [4] Средняя скорость передачи данных между EMU и памятью составляла 470 000 слов в секунду, все передачи имели ширину 72 бита (два слова), при этом для передачи 4 слов требовалось 6,7 мкс. [4] Устройство имело скорость вращения 1725 об/мин, что обеспечивало среднюю задержку 17,4 миллисекунды. [4]
GE-645 имеет два режима выполнения инструкций (главный и подчиненный), унаследованные от GE-635, однако он также добавляет еще одно измерение, имея два режима адресации памяти (абсолютный и добавляющий). Когда процесс выполняется в абсолютном режиме, адресация ограничена 2 18 словами памяти, и любые инструкции выполняются в главном режиме. Для сравнения, в режиме добавления адрес вычисляется с использованием «добавления слов» с адресным пространством 2 24 слова и выполнением инструкций в режиме ведущего или ведомого. [15]
По умолчанию это обычный режим, в котором процессор должен работать в любой момент времени. Почти все инструкции будут выполняться в этом режиме, за исключением небольшого набора привилегированных инструкций, которые не могут выполняться в этом режиме. Выполнение таких инструкций вызовет недопустимую ошибку процедуры, а также запрещена возможность запрета прерываний (бит 28 командного слова). Формат адресов команд осуществляется посредством процесса добавления.
В этом режиме процессор может выполнять все инструкции и при этом блокировать прерывания. Как и в ведомом режиме, форма формирования адреса по умолчанию осуществляется через процесс добавления.
В этом режиме могут выполняться все инструкции и предоставляется полный доступ к любым привилегированным функциям оборудования. Прерывания могут быть запрещены, а выборка команд ограничена абсолютным адресом длиной 2 18 (18 бит), что ограничивает процессор возможностью доступа только к нижним 256 КВт физической памяти ядра. Процессор перейдет в этот режим в случае неисправности или прерывания и останется в нем до тех пор, пока не выполнит инструкцию передачи, адрес операнда которой был получен в процессе добавления.
По умолчанию это обычный режим адресации памяти, в этом режиме обычно работают как главный, так и подчиненный режимы. Доступ к косвенным словам и операндам осуществляется через механизм добавления посредством помещения 1 в бит 29 исполняемой инструкции. Таким образом, эффективные адреса либо добавляются к базовому адресу, либо смещение привязывается к базовому адресу.
Процессор 645 был разделен на четыре основных функциональных блока: [15]
Одним из ключевых отличий от GE 635 было добавление «добавляющего блока» (APU), который использовался для реализации гибридной модели виртуальной памяти «Постраничная сегментация» . APU также использовался для реализации одноуровневого хранилища , которое является одной из фундаментальных абстракций, вокруг которых построен Multics. Формат команды также был расширен за счет ранее не использовавшегося бита 29, определяющего, использует ли адрес операнда инструкции 18-битный формат (бит 29 = 0) или формат, состоящий из 3-битного адреса базового регистра с 15-битным адресом. битовое смещение (бит 29 = 1). [4] : 18, 22 [15]
Формат инструкции с битом 29, установленным в 1:
1 1 2 2 2 2 3 3 0 2 3 7 8 6 7 8 9 0 5 +---+---------------+---------+-+-+-+------+ |БР | Ю | ОП |0|I|1| Тег | +---+---------------+---------+-+-+-+------+
GE 645 имел 8 базовых регистров адреса (abr), [17] они могли работать как в «парном», так и в «неспарном» режимах. [18] Более поздний Honeywell 6180 изменил их на 8 регистров-указателей. Каждый abr имел ширину 24 бита и состоял из 18 бит для адреса и 6 бит для функций управления. [19]
Один бит поля функций управления указывает, где abr является «внутренним» или «внешним». Если abr является внутренним, другое 3-битное подполе поля функций управления указывает другое abr, с которым это abr связано; этот другой abr является внешним: внешний abr содержит номер сегмента в поле адреса, а внутренний abr содержит смещение внутри сегмента, заданного внешним abr. [15] : 4–4 Если инструкция или косвенное слово ссылается на внешнее abr, поле адреса в инструкции или косвенном слове используется как смещение в сегменте, заданном внешним abr. Если оно относится к внутреннему abr, поле адреса в инструкции или косвенном слове добавляется к смещению в abr, а полученное значение используется как смещение в сегменте, указанном внешним abr, с которым соединено внутреннее abr. . [15] : 6–26
Регистры имеют следующие форматы в зависимости от того, как установлен бит 21. [19]
Форматировать как «внешнюю» базу с установленным битом 21:
1 1 2 2 22 0 7 8 0 1 23 +------------------+---+-+--+ | ПДВ |\\\|1|\\| +------------------+---+-+--+
Форматировать как компонент эффективного «внутреннего» адреса с указателем на «внешнюю» базу, с очищенным битом 21:
1 1 2 2 22 0 7 8 0 1 23 +------------------+---+-+--+ | PY |PB |0|\\| +------------------+---+-+--+
В Multics abr с четным номером и следующий за ним abr с нечетным номером были объединены в пары. При записи на ассемблере (EPLBSA/ALM) [NB 1] стандартная практика Multics заключалась в том, чтобы маркировать эти регистры следующим образом: [20]
Схема именования основана на следующем: [21]
8 регистров-указателей в Honeywell 6180 и его преемниках служили той же цели, что и 4 парных базовых регистра в GE-645, ссылаясь на смещение внутри сегмента.
CTSS был разработан в Вычислительном центре Массачусетского технологического института на базе IBM 709 и впервые был продемонстрирован в ноябре 1961 года, [22] впоследствии он был модернизирован до 7090 в 1962 году, [23] и, наконец, до 7094 в 1963 году . [24] Это потребовало модификации. к этим стандартным системам путем добавления ряда RPQ, которые, среди прочего, добавляли два банка памяти и переключение банков между режимом пользователя и супервизора, то есть программы, работающие в банке памяти ядра A, имели доступ к инструкциям, которые программы, работающие в банке памяти B, имели доступ к инструкциям. -базовый банк этого не сделал. [25]
Формально проект MAC начался с подписания контракта с ARPA 1 июля 1963 года. К октябрю 1963 года они получили специальный 7094 для запуска CTSS, который был назван «Красной машиной» из-за наличия красных боковых панелей. [24] Это обеспечит среду разделения времени для проекта MAC и впоследствии будет активно использоваться для разработки Multics. В течение этого периода проводилась исследовательская работа над тем, как будет выглядеть замена CTSS и какой тип оборудования потребуется для ее работы. Был сформирован комитет, состоящий из Фернандо Дж. Корбато , Теда Глейзера, Джека Денниса и Роберта Грэма, которому было поручено посетить производителей компьютеров, чтобы оценить уровень интереса к отрасли к участию в тендерах на аппаратную платформу. [26] [27] Стало ясно, что проект MAC искал партнера по разработке, учитывая значительные модификации оборудования, которые потребуются для удовлетворения их требований, которые были указаны как: [28]
Они посетили, в частности, компании Burroughs , CDC , DEC , General Electric , IBM и Sperry Univac . Из них наибольший интерес проявили GE и IBM. [26] К лету 1964 года были получены предложения от DEC, IBM и GE, после оценок Технического комитета было принято единогласное решение принять предложение GE по GE 645, которое представляло собой конструкцию, основанную на GE 635, но модифицированную для соответствовать требованиям, изложенным выше. [28]
Пока аппаратное обеспечение GE 645 проектировалось и отлаживалось в Фениксе, была создана система, в которой GE 635 можно было использовать для запуска симулятора, известного как 6.36, [30] , чтобы разработка и проверка Multics могли происходить параллельно. Этот процесс включал создание ленты в системе CTSS, которая будет вводиться в GECOS в системе 635 в Массачусетском технологическом институте, чтобы она могла работать под управлением симулятора 6.36; результирующий вывод будет перенесен на ленте в CTSS для отладки/анализа. [31] Эта моделируемая среда была заменена первым аппаратным обеспечением 645 в 1967 году. Операционная система GECOS была полностью заменена Multics в 1969 году с супервизором Multics [3] , разделенным защитными кольцами с «воротами», обеспечивающими доступ из пользовательского режима. [32]
Более позднее поколение в виде 645F (F для последующего) не было завершено к моменту продажи подразделения Honeywell и стало известно как Honeywell 6180 . Первоначальный механизм контроля доступа GE/Honeywell 645 оказался неадекватным для высокоскоростного перехвата инструкций доступа, и повторная реализация в 6180 решила эти проблемы. [33] Большая часть этих компьютеров с разделением времени на Multics была установлена в АНБ и аналогичных правительственных учреждениях. Их использование было ограничено крайними мерами безопасности и имело ограниченное влияние на последующие системы, за исключением защитного кольца. [34]
Аппаратная защита, представленная на этом компьютере и модифицированная на 6180, позже была реализована в компьютерном процессоре Intel 286 в виде четырехуровневого защитного кольца, но четыре кольца оказались слишком громоздкими для программирования и слишком медленными в работе. Архитектура защитного кольца теперь используется только для защиты режима ядра от кода пользовательского режима, как это было при первоначальном использовании 645. [3]