PDP-11
PDP-11 | |
---|---|
![]() | |
![]() | |
Разработчик | Digital Equipment Corporation |
Разрядность | 16-бит |
Архитектура | CISC |
Тип | Память-Память |
Кодирование СК | 1..3 16-битных слова |
Реализация переходов | Флаги условий |
Порядок байтов | Little-endian |
Размер страницы | 8 KiB |
Расширения | EIS, FIS, FPP, CIS |
Регистры | |
Общего назначения | 6 |
![]() |
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Pdp-11-40.jpg/220px-Pdp-11-40.jpg)
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/2/29/GT40_Lunar_Lander.jpg/220px-GT40_Lunar_Lander.jpg)
PDP-11 — серия 16-разрядных мини-ЭВМ компании DEC, серийно производившихся и продававшихся в 1970—80-х годах. Развитие серии PDP-8 из общей линейки компьютеров PDP. В PDP-11 появилось несколько уникальных технологических инноваций, эта серия была проще в программировании, чем её предшественники. Со временем была вытеснена персональными компьютерами.
Особенности PDP-11
[править | править код]Система команд
[править | править код]Программисты полюбили PDP-11 за её «ортогональную» систему команд: можно было отдельно запоминать команды, и отдельно — методы доступа к операндам. Можно было считать, что любой метод доступа (режим адресации) будет работать с любой операцией; не нужно было запоминать список исключений и особых случаев, в которых операция имеет ограниченный набор режимов адресации, все регистры (R0
…R7
) могли использоваться с любой командой. Регистры R0
…R4
были универсальными, а регистры R5
(FP
, указатель кадра, англ. frame pointer), R6
(SP
, указатель стека, англ. stack pointer) и R7
(PC
, счётчик команд, англ. program counter) — были специальными, для нескольких команд были исключения, но все эти регистры могли использоваться как операнды в арифметико-логических операциях или использоваться при формировании адресов операндов.
В некотором смысле набор режимов адресации образовывал «базис», а набор операций — другой базис. Каждая двухоперандная инструкция состояла из двух 6-битных идентификаторов операндов (каждый из них содержал три бита на номер регистра и три бита на режим адресации), а также из 4-битного кода операции; однооперандная инструкция содержала один 6-битный идентификатор операнда и 10-битный код операции. Благодаря логичной и структурированной системе команд коды достаточно легко читаемы в машинном коде непосредственно в восьмеричном представлении, например, формат двухоперандных команд:
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
B | Opcode | Mode | R Src | Mode | R Dst |
Где бит B — признак того, что операция над байтом или над словом
B Opcode | Мнемоника | Эффект |
---|---|---|
0 1 | MOV | Пересылка: dest = src
|
1 1 | MOVB | |
0 2 | CMP | Сравнение: вычислить src − dest без записи результата
|
1 2 | CMPB | |
0 3 | BIT | Проверить биты: вычислить dest & src без записи результата
|
1 3 | BITB | |
0 4 | BIC | Сброс битов, либо «логическое И с инверсией src»: dest &= ~src
|
1 4 | BICB | |
0 5 | BIS | Установка битов, либо «логическое ИЛИ»: dest |= src
|
1 5 | BISB | |
0 6 | ADD | Сложение, dest += src
|
1 6 | SUB | Вычитание, dest −= src
|
Mode указывает режим использования регистра (непосредственно значение регистра / регистр содержит адрес / адрес с поставтоинкрементом и т. д.)
Таким образом, команда 0101038 читается как «скопировать R1
в R3
».
Отсутствие отдельной шины ввода-вывода
[править | править код]В отличие от многих других компьютеров своего времени, первые модели PDP-11 не имели отдельной шины ввода-вывода — только шину памяти Unibus. Все регистры устройств ввода-вывода имели свои адреса, аналогичные адресам памяти, поэтому отдельные инструкции ввода-вывода были не нужны. Система прерываний была сделана максимально простой, но достаточно гибкой. Каждое устройство имело свой вектор прерывания, которое при необходимости сообщало процессору, поэтому не было жёсткого ограничения на количество векторов, доступных для использования устройствами.
Высокопроизводительные машины семейства, начиная с PDP-11/45, уже имели отдельную шину памяти, Unibus же продолжала использоваться только для ввода-вывода. В PDP-11/70 был сделан ещё один шаг вперёд: добавился отдельный интерфейс для магнитных дисков и лент — Massbus. Тем не менее, управляющие регистры устройств ввода-вывода по-прежнему проецировались на память, и отдельных инструкций ввода-вывода не требовалось.
Разработана для массового производства
[править | править код]И наконец, компьютеры PDP-11 были разработаны для производства на заводах с низкоквалифицированной рабочей силой. Размеры всех конструктивных частей были относительно некритичными. При сборке печатные платы подключались к общей плате, на которой применялся монтаж навивкой. Соединительные блоки были очень похожи на те, которые уже давно применялись в телефонии.
Выпуск
[править | править код]Первоначально компьютер PDP-11 производился на ТТЛ-микросхемах малой степени интеграции. В 1975 году была разработана версия одноплатного процессора на микросхемах большой степени интеграции. В 1979 году был разработан процессор DEC J-11 на двух или трёх микросхемах. Последними моделями линейки PDP-11 были PDP-11/93 и PDP-11/94, представленные в 1990 году.
Пример программы
[править | править код]Пример программы «Hello, World!» на макроассемблере MACRO-11, для запуска под RT-11:
.TITLE HELLO WORLD
.MCALL .TTYOUT,.EXIT
HELLO:: MOV #MSG,R1 ;ИНИЦАЛИЗИРУЕМ R1 - УКАЗАТЕЛЬ НА ТЕКУЩИЙ СИМВОЛ
1$: MOVB (R1)+,R0 ;КОПИРУЕМ СИМВОЛ В R0 С ПОСТАВТОИНКРЕМЕНТОМ R1
BEQ DONE ;ЕСЛИ СИМВОЛ НОЛЬ, ВЫХОДИМ ИЗ ЦИКЛА
.TTYOUT ;ИНАЧЕ ПЕЧАТАЕМ СИМВОЛ
BR 1$ ;ПОВТОР ЦИКЛА
DONE: .EXIT
MSG: .ASCIZ /Hello, world!/
.END HELLO
Для компиляции и запуска этой программы в системе RT-11 выполняется последовательность команд:
. MACRO HELLO ERRORS DETECTED: 0 . LINK HELLO . RUN HELLO Hello, world!
Операционные системы
[править | править код]![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/8/86/Papertape.jpg/220px-Papertape.jpg)
- Компании DEC: DOS-11, IAS, P/OS, RSX-11, RT-11, RSTS/E, Ultrix-11.
- Сторонних производителей: ANDOS, MK-DOS, CSI-DOS, TRIPOS, MUMPS, Unix (несколько версий), TSX-Plus, Venix, SHAREeleven, SHAREplus и другие.
- Советские: РАФОС, ФОДОС, РУДОС, ОС ДВК (клоны RT-11), ОСРВ СМ ЭВМ (клон RSX-11), ДЕМОС (клон UNIX), ИНМОС (клон UNIX), ДОС КП (клон RSTS/E), NTS (вариация на тему ранних версий TSX-Plus), ДИАМС (клон MUMPS).
PDP-11 в странах СЭВ
[править | править код]В СССР и других социалистических странах было разработано и выпускалось несколько машин, совместимых по системе команд и частично по архитектуре с серией PDP-11[1]:
- СМ-3, СМ-4, СМ-1420, СМ-1600 — см. СМ ЭВМ — в СССР
- Электроника-60
- Электроника-79
- Электроника 85
- Электроника 87, СМ-1425
- Электроника 100-16
- Электроника 100-25 — почти 100%-й аналог (не только архитектурного уровня, но и аппаратного) DEC PDP-11/40. Выпускался для собственных нужд Минэлектронмаш, ПО «Кварц» г. Калининград.
- Электроника С5-41
- ДВК — серия персональных компьютеров на основе К1801ВМ1/ВМ2/ВМ3
- ИЗОТ-1016 — в Болгарии
- TPA-11/40, TPA-11/48, TPA-11/110, TPA-11/170, TPA-EMU-11, TPA-11/440, TPA-11/420 — в Венгрии
- CORAL 4001/4011/4030 — в Румынии
- Independent (I-100, I-102F, I-106) — в Румынии
- Mera (MERA-60, MERA-125) — в Польше
- Наири-4 — в Армении
- Электроника БК-0010 и БК-0011М — домашние/учебные компьютеры на основе K1801BM1A, выпускались массово.
- Электроника МС 0511 «УКНЦ» — учебный компьютер на 2 процессорах КМ1801ВМ2
- Немига ПК 588 — в Белорусской ССР
- Саратов-2 — разработана в Центральном НИИ измерительной аппаратуры, г. Саратов[2]
- Электроника МС 0515 — компьютер на процессоре КР1807ВМ1. Выпускался на воронежском заводе «Процессор».
- Электроника МК-85 — программируемый микрокалькулятор с процессором Т234-2 или Т36ВМ1-2 (КА1013ВМ1).
- Электроника МК-90 — программируемый микрокалькулятор с процессором К588ВС2.
- Союз-Неон ПК-11/16 — домашний/учебный компьютер на основе Н1806ВМ2.
Электроника 100-16 | Электроника 100-25 | Электроника-79 | |
---|---|---|---|
Ширина шины адресов, бит | 16 | 18 | 22 |
Набор команд | 73 (базовый без MARK) | 89 (B+, EIS, FIS, менеджер памяти) | 137 (B+, EIS, FIS, FP11, менеджер памяти) |
Быстродействие, оп/с | 250 000 | 800 000 | 3 000 000 |
Число регистров | 8 | 8 | 16 |
Режимы привилегий | 1 | 2 | 3 |
Уровней прерываний | 5 | 5 | 8 |
См. также
[править | править код]- MSP430 — контроллер с архитектурой, достаточно близкой к идеям PDP-11.
- MCP-1600 — многокристальный микропроцессор производства компании Western Digital с архитектурой и системой команд PDP-11.
- General Instrument CP1600 — однокристальный микропроцессор производства компаний General Instrument и Honeywell с архитектурой PDP-11.
Примечания
[править | править код]- ↑ The PDP-11 FAQ — PDP-11s behind the Iron Curtain Архивировано 25 марта 2012 года.
- ↑ Леонид Черняк. Высокопроизводительные встроенные компьютеры (недоступная ссылка) — статья в журнале «Открытые системы»
Литература
[править | править код]- Экхауз Р., Моррис Л., Мини-ЭВМ: организация и программирование / Р. Экхауз, Л. Моррис; Пер. с англ. А. Ф. Кондратюка, Л. С. Черняка. — М. : Финансы и статистика, 1983. — 359 с.
- Сингер М. Мини-ЭВМ PDP-11: Программирование на языке ассемблера и организация машины = PDP-11. Assembler Language Programming and Machine Organization. — М. : Мир, 1984. — 272 с.
- Сичановский Дж. У. Программирование на МАКРО-11 и организация PDP-11. М.: Радио и связь, 1985.
Ссылки
[править | править код]- Проект PDP-11.ORG.RU
- SIMH — эмулятор PDP
- Документация на PDP-11 на сайте bitsavers.org (англ.)
- Документация на PDP-11 / VAX / Alpha
- Проект PDP-11.RU
- Архив ПО для PDP-11/ VAX / Alpha