Введение

Nord 10 был миникомпьютером среднего размера, 16-разрядным компьютером общего назначения, разработанным компанией Norsk Data для многоязыковых систем разделения времени и многопрограммных систем реального времени. Он был представлен в 1973 году. Более поздняя модель, Nord 10/S, представленная в 1975 году, включала в себя кэш процессора, страничную организацию памяти и другие различные улучшения. Процессор (ЦП) содержал микропроцессор, который в руководстве определялся как комбинация слов "микрокод" и "процессор", и не должен был путаться с только начинающими появляться микропроцессорами. ЦП также содержал инструкции, средства связи с оператором, загрузчики и программы аппаратного тестирования, реализованные в постоянной памяти объемом 1 КБ. Микропроцессор позволял также встраивать инструкции, заданные заказчиком. Nord 10 обладал системой управления памятью с аппаратной страничной организацией, расширяющей объем памяти с 64 до 256 КБ 16-разрядных слов, и двумя независимыми системами защиты: одна действовала на уровне каждой страницы, а другая – на режиме выполнения инструкций. Система прерываний имела 16 аппаратных уровней, каждый из которых имел свой собственный набор регистров общего назначения. Примечание: Большая часть представленной ниже информации взята из документа, выпущенного компанией Norsk Data для представления Nord 10. Некоторые сведения, особенно касающиеся системы памяти, могут быть неточными для более поздней модели Nord 10/S.

Центральный процессор

Центральный процессор (ЦП) состоял из общего числа 24 печатных плат. Последние восемь позиций в стойке были заняты устройствами ввода/вывода (I/O), работающими под программным управлением, такими как консольный телепринтер (телетип), перфолента, считыватель и перфоратор карт, строчный принтер, дисплей, панель оператора и часы реального времени. Nord 10 располагал 160 процессорными регистрами, из которых 128 были доступны для программ – по восемь на каждом из 16 уровней программ. Шесть из этих регистров были универсальными, один – счетчиком команд, а остальные содержали информацию о состоянии. Операции с плавающей точкой выполнялись стандартно. Инструкции могли оперировать с пятью различными форматами данных: битом, 8-битным байтом, 16-битными словами, 32-битными двойными словами и 48-битными словами с плавающей точкой.

Память

Система памяти с произвольным доступом первых Nord 10s была построена из 8K 16-битовых модулей, размещенных в специальной стойке памяти. Один 19-дюймовый стеллаж мог вместить до восьми модулей 8K. Была возможность расширить физическое адресное пространство Nord 10 за пределы 64K до максимума 256K 16-битовых слов. Система подкачки (paging) преобразовывала 16-битный виртуальный адрес в 18-битный физический адрес. Аппаратная система подкачки позволяла одному пользователю создавать программы размером до 64 КБ (виртуальная память), при этом в физической памяти одновременно находились только части программы (с использованием динамического распределения памяти). Система подкачки разбивала память на страницы размером 1K. Четыре таблицы индексов страниц находились в блоке сверхбыстрой памяти объемом 256 слов. Вычисление физического адреса не приводило к ощутимой задержке эффективного времени цикла памяти. Nord 10 имел две независимые системы защиты. Каждую отдельную страницу можно было защитить от чтения, записи (данных или инструкций) или от чтения инструкций. Кроме того, существовала система, которая разделяла страницы на четыре различные категории, называемые кольцами. Кольца имели приоритет от 0 до 3. Программа, работающая на более низком кольце, никогда не могла получить доступ к страницам на более высоком кольце. Программы, работающие на кольцах 2 и 3, могли использовать весь набор инструкций Nord 10, в то время как программы на кольцах 0 и 1 имели доступ только к ограниченному набору инструкций. Различные кольца отображались на панели оператора. Например, кольцо 0 (Пользователь) могло содержать пользовательскую программу, в то время как компиляторы и ассемблеры работали в кольце 1 (Защищенный пользователь). Большая часть операционной системы могла работать в кольце 2 (Система), а ядро – в кольце 3 (Защищенная система). Если кто-либо пытался выполнить привилегированные инструкции в кольце 0 или 1, или предпринимались попытки доступа к защищенной странице, автоматически генерировалось аппаратное прерывание состояния на уровне программы 14, указывающее на ошибку.

Архитектура системы ввода-вывода и шины

NORD 10 был оснащен общей системой шины для всех внешних периферийных устройств. Шина была разделена на группы, и были приложены значительные усилия для предотвращения блокировки шины устройством в случае неисправности. Каждая группа имела свой контроллер, который, помимо функции электронного переключателя шины, мог также изменять приоритет для всей группы. Все соединения между картами осуществлялись с помощью многослойных печатных плат, а все интерфейсы ввода/вывода имели единый стандартный формат. Таким образом, систему можно было расширить или переконфигурировать путем подключения новых или перестановки существующих интерфейсных карт. Положение интерфейса устройства в стойке определяло приоритет прерывания этого устройства. При прямом доступе к памяти устройство отправляло запрос. Процессор отвечал сигналом подтверждения, который передавался от устройства к устройству, пока не достигал устройства, инициировавшего запрос, после чего могла начаться передача данных в память. Если два или более устройств одновременно запрашивали DMA, запрос к процессору имел наивысший приоритет. Через один цикл памяти следующему устройству в цепочке разрешалось отправлять данные, и так далее, пока устройство с более высоким приоритетом не отправляло новый запрос. Это позволяло множеству DMA-устройств использовать одну и ту же шину на полной скорости передачи данных. Установление связи "ведущий-ведомый" не требовалось. Передача данных осуществлялась блоками по 16 бит за 850 наносекунд, что соответствовало скорости 2,2 МБ/с. Печатная плата шины ввода/вывода была модульной, состоящей из групп по 8 интерфейсных слотов. Интерфейсы для устройств массового хранения, таких как диски, барабаны, магнитные ленты и т.д., реализовывались с помощью одной интерфейсной карты, подключаемой в соответствующее место в шине, а остальные управляющие карты (6-7) размещались в одном из модулей задней панели.

Система прерывания

В Nord 10 была многопрограммная система с 16 уровнями приоритета. Каждый уровень имел свой собственный набор регистров, включая счетчик программы и регистр состояния. Отображение активных уровней на передней панели осуществлялось нажатием кнопки "активные уровни". Уровни с 0 по 9 использовались для программ. Прерывания от внутреннего аппаратного состояния назначались уровню 14, а уровень 15 был зарезервирован для чрезвычайно быстрых пользовательских прерываний (в разговорной речи его называли "синхротронным уровнем", поскольку единственной программой, использовавшей его, была программа управления синхротроном в CERN).

Уровни 10, 11, 12 и 13 были зарезервированы для внешних устройств. Каждое устройство имело свой уникальный идентификационный вектор. Всего было доступно 2048 таких векторов. Инструкция "ident" определяла, какое устройство инициировало прерывание. Идентификация прерывания занимала 1,7 микросекунды, включая время на включение и отключение регистров.

Система программного обеспечения

Nord 10 поставлялся с системой разделения времени Nord TSS и операционной системой реального времени с многозадачностью Sintran III. Минимальная конфигурация для Sintran III включала стандартный Nord 10 с 8К магнитной ячеистой памяти. С помощью NORD TSS все пользователи могли одновременно запускать любую из систем Fortran IV, BASIC, MAC Assembler, NODAL, NORD PL или QED.

Известные остальные системы

Известно о существовании нескольких систем Nord 10 и Nord 10/S, многие из которых находятся в почти рабочем состоянии, а часть из них находится на хранении в NODAF. Реставрация систем планируется в Осло силами NODAF и в Тронхейме Норвежским университетом науки и технологии. Предшественником этой системы был Nord 1, а преемником – Nord 100.