Главный компьютер GE 645 был развитием GE 635 для использования в проекте Multics . Это был первый компьютер, который реализовал конфигурируемую аппаратно защищенную систему памяти. Он был разработан для удовлетворения требований проекта MAC по разработке платформы, на которой будет размещена их предложенная операционная система с разделением времени следующего поколения ( Multics ), и для удовлетворения требований теоретической компьютерной утилиты . [1] Система была первой по-настоящему симметричной многопроцессорной машиной, использующей виртуальную память , она также была среди первых машин, реализовавших то, что сейчас известно как буфер трансляции lookaside , [2] [3] [4] основополагающий патент на который был выдан Джону Кулеру и Эдварду Глейзеру. [5]
General Electric первоначально публично анонсировала GE 645 на осенней совместной компьютерной конференции [1] [3] в ноябре 1965 года. На последующей пресс-конференции в декабре [6] [7] того же года было объявлено, что они будут работать над «широкой коммерческой доступностью» [8] системы. Однако впоследствии они сняли ее с активного маркетинга в конце 1966 года. [8] Всего по крайней мере 6 сайтов использовали системы GE 645 в период с 1967 по 1975 год. [9]
Базовая конфигурация системы состояла из комбинации 4 основных модулей [4] [10], а именно:
Модули системного контроллера (SCM) фактически выступали в качестве сердца системы. Это были пассивные устройства, которые были подключены к каждому активному устройству (процессор, GIOC, EMU) и обеспечивали следующее: [4] [11]
По сравнению с остальной серией 600, 645 не использовал стандартные контроллеры ввода-вывода (IOC) для ввода-вывода. Также он не использовал процессор интерфейса DATANET-30 для связи. Вместо этого оба набора функций были объединены в один блок, называемый GIOC (Generalized I/O Controller), который предоставлял выделенные каналы как для периферийного (диск/лента), так и для терминального ввода-вывода. [4] [12] GIOC действовал как активное устройство и был напрямую подключен к памяти через выделенные ссылки к каждому системному контроллеру, который присутствовал в определенной конфигурации.
Extended Memory Unit, хотя и назывался барабаном , на самом деле был большим жестким диском с фиксированной головкой, по одной головке на дорожку, [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 слова инструкции). Формат адресов инструкций осуществляется через процесс добавления.
В этом режиме процессор может выполнять все инструкции и может блокировать прерывания при этом. Как и в режиме Slave, форма формирования адреса по умолчанию — через процесс добавления.
Все инструкции могут быть выполнены в этом режиме, и полный доступ предоставляется ко всем привилегированным функциям оборудования. Прерывания могут быть запрещены, а выборка инструкций ограничена абсолютным адресом 2 18 (18 бит), таким образом ограничивая процессор возможностью доступа только к нижним 256 КВт физической памяти ядра. Процессор переключится в этот режим в случае сбоя или прерывания и останется в нем до тех пор, пока не выполнит инструкцию передачи, адрес операнда которой был получен через процесс добавления.
По умолчанию это обычный режим адресации памяти, оба режима Master и Slave обычно работают в этом режиме. Косвенные слова и операнды доступны через механизм добавления с помощью процесса помещения 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 +---+---------------+---------+-+-+-+------+ |BR | Y | OP |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-core, имели доступ к инструкциям, которые программы, работающие в банке B-core, не имели. [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 в MIT, чтобы она могла работать под управлением симулятора 6.36; полученный вывод должен был передаваться обратно по ленте в CTSS для отладки/анализа. [31] Эта смоделированная среда была заменена первым оборудованием 645 в 1967 году. Операционная система GECOS была полностью заменена Multics в 1969 году с супервизором Multics [3], разделенным защитными кольцами с «воротами», позволяющими получить доступ из пользовательского режима. [32]
Более позднее поколение в форме 645F (F для follow-on) не было завершено к тому времени, когда подразделение было продано Honeywell , и стало известно как Honeywell 6180. Первоначальный механизм контроля доступа GE/Honeywell 645 был признан недостаточным для высокоскоростного перехвата инструкций доступа, и повторная реализация в 6180 решила эти проблемы. [33] Основная часть этих компьютеров, работающих в режиме разделения времени на Multics, была установлена в АНБ и подобных правительственных учреждениях. Их использование было ограничено чрезвычайными мерами безопасности и имело ограниченное влияние на последующие системы, за исключением кольца защиты. [34]
Аппаратная защита, представленная на этом компьютере и модифицированная на 6180, была позже реализована в процессоре компьютера Intel 286 как четырехслойное защитное кольцо, но четыре кольца оказались слишком громоздкими для программирования и слишком медленными для работы. Архитектура защитного кольца теперь используется только для защиты режима ядра от кода пользовательского режима, как это было при первоначальном использовании 645. [3]