GEC 4000 — серия 16 / 32-разрядных мини-компьютеров, выпускавшихся компанией GEC Computers Ltd в Великобритании в 1970-х, 1980-х и начале 1990-х годов.
Компания GEC Computers была образована в 1968 году как бизнес-подразделение конгломерата GEC . Она унаследовала от Elliott Automation устаревшую серию Elliott 900 и нуждалась в разработке новой линейки систем. Были определены три линейки, известные внутри компании как Alpha, Beta и Gamma. Alpha появилась первой и стала 8-битным мини-компьютером GEC 2050. Затем последовала Beta, которая стала GEC 4080. Gamma так и не была разработана, поэтому некоторые из ее улучшенных функций впоследствии были возвращены в 4080. Главным конструктором GEC 4080 был доктор Майкл Меллиар-Смит, а главным конструктором 4060 и 4090 был Питер Макли.
Системы серии 4000 были разработаны и изготовлены в Великобритании в офисах GEC Computers в Борехэмвуде в Элстри-Уэй. Разработка и производство были переведены на новые заводы компании в Вудсайд-Эстейт, Данстейбл в конце 1970-х годов. В 1979 году GEC Computers была награждена Королевской премией за технические достижения за разработку серии 4000, в частности Nucleus. [2] К 1991 году количество изготовленных систем стало падать, поэтому производство было переведено на завод GPT в Бистоне, Ноттингемшир , а разработка вернулась в Борехэмвуд. Последние системы были изготовлены около 1995 года. В 2018 году все еще работало несколько систем GEC 4220 с обслуживанием, предоставляемым Telent , а некоторые GEC 4310 работали до 2013 года . Лондонское метро продолжает использовать системы GEC 4190 в 2022 году.
Аппаратное и встроенное ПО серии GEC 4000 включало новаторское средство, известное как Nucleus . [3] Nucleus реализует ряд функций, которые обычно реализуются в ядре операционной системы , и, следовательно, операционным системам, работающим на системах серии GEC 4000, не нужно напрямую предоставлять эти функции. Встроенное ПО Nucleus не может быть перепрограммировано никаким кодом, работающим в системе, и это сделало системы особенно привлекательными для ряда приложений безопасности.
Nucleus выполняет: [4]
Нет возможности запустить какой-либо код режима супервизора/привилегированного/ядра на системах 4000 — весь код операционной системы выполняется как процессы. Следовательно, драйверы устройств , код файловой системы и другие функции, которые часто встречаются в ядрах операционной системы, должны выполняться в процессах на системах 4000. Присуще этому то, что все они работают в своих собственных адресных пространствах, защищенных от действий друг друга, как и все процессы.
Nucleus настраивается набором системных таблиц, и процессам, которым необходимо изменить работу ядра, предоставляется доступ к соответствующим системным таблицам. Это касается процессов, которые напрямую изменяют состояние других процессов, процессов, которые выделяют и удаляют сегменты памяти, процессов, которые могут изменять маршрутизацию сообщений между другими процессами или изменять сопоставление устройств ввода-вывода с процессами и т. д. Обычно доступ к системным таблицам ограничен относительно небольшим числом доверенных процессов, а другие процессы, которым необходимо выполнять такие операции, как загрузка процессов, выделение памяти и т. д., будут передавать сообщение соответствующему доверенному процессу, который он проверит перед выполнением действия и ответом.
Серия 4000 имеет набор инструкций CISC . Она имеет 8-битные байты , big-endian , адресуемую побайтно память, арифметику с дополнением до двух и формат с плавающей точкой base-16 extra-64 (такой же, как у IBM System/360 ). [5]
Номера моделей ниже 4090 являются 16-битными процессорами, а номера моделей от 4090 и выше являются смешанными 16-битными и 32-битными. Это относится к размерам указателей, доступным программам. Все системы поддерживают 16-битные указатели, что известно как адресация CST (Current Segment Table). 32-битные системы также поддерживают 32-битные указатели, что известно как адресация PAS (Paged Address Space). Каждый процесс имеет PAST (Program Accessible Segment Table), в которой перечислены сегменты памяти системы, к которым программе разрешен доступ. Адресация CST позволяет отображать четыре записи PAST по адресам 0, 16 КБ, 32 КБ и 48 КБ, что дает 16-битное/64 КБ адресное пространство. Программы, использующие более 64 КБ памяти, должны явно отображать записи PAST, которые им требуются в любой момент, в свои 4 записи CST, хотя Nucleus автоматически отображает различные сегменты кода в CST. Адресация PAS позволяет программам просматривать свое адресное пространство как плоское 32-битное адресное пространство, в котором последовательные записи PAST появляются каждые 16 КБ, а Nucleus автоматически выполняет отображение сегмента записи PAST. 32-битные системы поддерживают смешивание адресации CST и PAS в одном процессе. Все инструкции имеют ширину 16 бит, за исключением некоторых инструкций адресации PAS, которые имеют длину 32 бита. Инструкции могут быть запущены только из адресного пространства CST.
32-битный регистр A является основным регистром-аккумулятором. Также имеется 32-битный регистр B, который чаще всего используется вместе с регистром A как 64-битный регистр BA для операций с плавающей точкой двойной точности. 16-битный регистр X используется в основном для индексации массива, а два 16-битных регистра Y и Z используются как 16-битные указатели. 16-битный регистр L указывает на локальные данные функции, а регистр G всегда содержит ноль, который может использоваться как 16-битный глобальный указатель, а также 8-битное, 16-битное или 32-битное нулевое значение. 16-битный регистр S (последовательность) указывает на следующую инструкцию, которая должна быть выполнена. 8-битный регистр EC содержит биты кодов условий. (Часть этого проиллюстрирована в гораздо более простом наборе инструкций GEC 2050. ) Регистр «ключей», доступный только для чтения, позволяет программам считывать значение, установленное на тумблеры передней панели операционным персоналом. 32-битного регистра указателя PAS не существует — 32-битные указатели PAS находятся в памяти в 16-битном адресном пространстве CST и доступны с помощью 16-битного указателя. Поддержка набора инструкций для стека отсутствует . Существует ряд регистров, недоступных программам, которые используются Nucleus, например, регистры сегментов оборудования, которые указывают на четыре CST запущенного процесса, главный сегмент и сегменты PAS, а также системные таблицы.
Набор инструкций содержит инструкции, которые работают с регистром-регистром, хранилищем-регистром, регистром-хранилищем и хранилищем-хранилищем. Есть набор инструкций по обработке строк, которые работают с переменной длиной хранилища, копированием, сравнением или сканированием шаблона. Есть ряд инструкций Nucleus для таких задач, как отправка сообщения другому процессу или периферийному устройству, получение сообщения или прерывания, изменение записи CST для указания на другой сегмент, который доступен процессу, и т. д.
4080 имеет двухступенчатый конвейер инструкций . Для 4220, самой производительной системы в серии, он становится четырехступенчатым конвейером. Системы начального уровня 415x и 4x6x имеют только одноступенчатый конвейер.
Нормальный режим работы ЦП называется Full Nucleus . Все системы также поддерживают ограниченный режим работы, называемый Basic Test . В режиме Basic Test Nucleus отключен, ввод-вывод выполняется по-другому, и может работать только одна программа, ограниченная нижними 64 КБ памяти, но все остальные инструкции, не относящиеся к ядру и не относящиеся к PAS, работают нормально. Этот режим используется на самом раннем этапе загрузки для настройки системных таблиц, требуемых Nucleus, перед выполнением инструкции Switch Full Nucleus . После того, как система переключилась в режим Full Nucleus, она не может вернуться в режим Basic Test без вмешательства оператора на передней панели, что фактически убивает любую работающую операционную систему. Режим Basic Test также используется для запуска определенного тестового программного обеспечения (отсюда и название).
Конструкция 4000 I/O основана на ряде процессоров ввода/вывода , известных как IOP , каждый из которых взаимодействует между хранилищем и набором контроллеров ввода/вывода. IOP управляются функцией Nucleus в ЦП, но после запуска события ввода/вывода они работают автономно без взаимодействия с ЦП до завершения ввода/вывода. IOP с обычным интерфейсом могут поддерживать до 255 или 256 одновременных операций ввода/вывода, каждая на отдельном Way . Контроллеры ввода/вывода на каждом IOP будут занимать один или несколько Way, в зависимости от того, сколько одновременных операций ввода/вывода им необходимо обработать. IOP контролирует доступ каждого Way к основному хранилищу, разрешая доступ только к последовательным ячейкам памяти, определенным для операции ввода/вывода, которую Way в данный момент выполняет. Более ранние IOP выполняли 8-битный и 16-битный доступ к хранилищу с пакетным режимом для выполнения до 8 передач вместе для контроллеров ввода/вывода с более высокой пропускной способностью. Более поздние IOP добавили 32-битный доступ к хранилищу.
Все системы имеют по крайней мере один IOP. На 4080 этот первый IOP назывался Basic Multiplexer Channel, [6] или BMC, а передняя панель 4080 обеспечивает управление как ЦП, так и BMC. Системы начального уровня 415x и 4x6x имеют свой первый IOP (Integral Multiplexer Channel, или IMC), интегрированный в прошивку Nucleus, и, таким образом, операции ввода-вывода на IMC действительно оказывали некоторое влияние на производительность ЦП, хотя системы 4x6x могли иметь добавленные внешние IOP. Инструкции ввода-вывода Nucleus серии 4000 и системные таблицы допускают до 8 IOP, хотя большинство моделей в диапазоне серии 4000 имели некое ограничение аппаратного обеспечения, которое уменьшало это. Системы 408x имели 4-портовое хранилище, причем ЦП и первый IOP совместно использовали один из них, и до трех дополнительных IOP, подключенных к оставшимся портам хранилища. (Ранняя документация показывает, что эти дополнительные порты хранилища также были разработаны для подключения дополнительных ЦП, хотя эта конфигурация никогда не продавалась с использованием процессоров 4080.) Более поздние модели имели больше портов хранилища, в зависимости от того, сколько плат портов хранилища можно было установить в систему. 4190 мог поддерживать полный комплект из восьми IOP, а 4190D поддерживал восемь IOP с двумя ЦП.
Некоторые часто используемые контроллеры ввода-вывода — это интервальный таймер , системный консольный контроллер, контроллеры считывания и перфорации перфоленты , контроллер линейного принтера (все они используют один канал), ряд контроллеров дисков SMD (и более раннего интерфейса шины диска ) для управления до четырех приводов (все используют два канала), контроллеры магнитной ленты Pertec PPC для четырех ленточных приводов 1 ⁄ 2 " и ряд многопортовых синхронных и асинхронных контроллеров последовательной связи (использующих от 4 до 32 каналов). Цифровая плата ввода-вывода (использующая четыре канала) обычно использовалась для прямого интерфейса управления процессом и для обеспечения быстрой параллельной связи между системами. Также был доступен контроллер ящика CAMAC (опять же, используемый для интерфейса управления процессом). Шина обычного интерфейса, к которой подключаются эти контроллеры, является опубликованным интерфейсом [7] , и многие клиенты также создавали свои собственные контроллеры для своих собственных конкретных требований к управлению процессом. Более ранний мини-компьютер GEC 2050 использовал 8-битную версию обычного интерфейса, и большинство Контроллеры ввода-вывода могут использоваться в обоих диапазонах систем.
Все IOP, спроектированные и построенные в 1970-х годах, обеспечивали одну и ту же шину Normal Interface для контроллеров ввода-вывода, и контроллеры ввода-вывода могли, как правило, использоваться в любом из них. В 1980-х годах были разработаны некоторые более специализированные IOP. IOP Direct Memory Access Director (DMAD) позволил создать новый тип контроллера ввода-вывода, который имел больше свободы для доступа к основной памяти и позволял разрабатывать более интеллектуальные контроллеры связи. IOP SCSI генерировал шину SCSI для подключения более современных дисков, а также включал интегрированный таймер интервалов, контроллер системной консоли и календарные часы, так что для поддержки только этих функций не требовался дополнительный IOP Normal Interface и отдельные контроллеры.
Пользователями систем серии GEC 4000 были многие физические и инженерные факультеты британских университетов, центральная вычислительная служба Лондонского университетского колледжа (Euclid) и Университета Кила , коммутационная магистраль академической/исследовательской сети JANET X.25 , Лаборатория Резерфорда-Эплтона , [8] Лаборатория Дарсбери , Лаборатория Харвелла , NERC , Метеорологическое бюро , ЦЕРН , ICI , British Telecom , SIP (итальянская телекоммуникационная компания ) и Плесси . British Steel Corporation и BHP Steel использовали их для управления прокатными станами в реальном времени, British Rail и Лондонский метрополитен для составления расписания поездов в реальном времени, Лондонская пожарная бригада и Даремская пожарная бригада для систем управления и контроля. Компьютеры управляли большинством национальных систем Videotex в мире , включая службу Prestel viewdata .
В лаборатории Резерфорда-Эплтона система GEC 4000 использовалась для управления синхротроном и инжекторами, использовавшимися для источника нейтронного расщепления ISIS до 1998 года.
GEC 4080M использовался в качестве центрального процессора для радиолокационной системы злополучного самолета дальнего радиолокационного обнаружения Nimrod AEW.3 . [9]
Центральный совет по производству электроэнергии использовал процессоры GEC 4080 в трех своих центрах управления сетями. Известные как GI74, они использовались для сбора данных с подстанций и отображения их на настенных диаграммах и табличных дисплеях.
Было выпущено несколько вариантов процессора GEC 4000, в том числе (в примерном хронологическом порядке):
Для серии GEC 4000 было доступно несколько операционных систем, в том числе:
Доступные языки программирования включают Babbage ( язык ассемблера высокого уровня ), FORTRAN IV , CORAL 66 , ALGOL , APL и BASIC .
Babbage — язык ассемблера высокого уровня для миникомпьютеров серии GEC 4000. Он появился в 1971 году. [10] [11] Он был назван в честь Чарльза Бэббиджа , английского пионера вычислительной техники. [10]
Этот код выводит факториал чисел от 1 до 9.
ПРОЦЕСС ГЛАВА ФАКТОРИАЛЭТИКЕТКА ВХОДА ТОЧКА ВХОДАLITERAL TO = 4 // Предположим, что используется проформа по умолчаниюВНЕШНЯЯ РУТИНА ОТКРЫТЬ, ПОМЕЩАТЬ, ЗАКРЫВАТЬ, ТОЧАРВЕКТОР [0,19] БАЙТА ОТВЕТ = "факториал x = xxxxxx" ПОЛОВИНА СЧЕТАПОЛОВИНА ЦЕННОСТИПОЛНЫЙ РЕЗУЛЬТАТ//************************************************ ****************************** ОБЫЧНЫЙ ФАКТ(ЗНАЧЕНИЕ) // вернуть факториал RA. ЗНАЧЕНИЕ => РЕЗУЛЬТАТ ПОКА УМЕНЬШАЕТСЯ ЗНАЧЕНИЕ GT //0// DO << РЕЗУЛЬТАТ * ЗНАЧЕНИЕ => РЕЗУЛЬТАТ >> ВОЗВРАТ(РЕЗУЛЬТАТ) КОНЕЦ//************************************************ ******************************ТОЧКА ВХОДА: ОТКРЫТЬ(ДО, 1) // Вывести факториалы для чисел от 1 до 9 1 => РА ПОВТОРИТЬ << РА => СЧЕТЧИК ФАКТ(РА) => РА ТОЧАР(РА, 7, ОТВЕТ + 13) TOCHAR(СЧЕТ, 2, ОТВЕТ + 9) ПОЛОЖИТЬ(В, 20, ОТВЕТ) СЧЕТ + 1 => РА >> ПОКА РА ЛТ 10 ЗАКРЫТЬ(ДО) СТОП(0) КОНЕЦ//************************************************ ******************************