PDP-11

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
PDP-11/40
Векторний графічний термінал DEC GT40

PDP-11 — серія 16-розрядних міні-ЕОМ компанії DEC, що серійно вироблялися та продавалися в 1970-80-х роках; розвиток серії PDP-8 із загальної лінійки комп'ютерів PDP. У PDP-11 з'явилося кілька унікальних технологічних інновацій, ця серія була простішою в програмуванні, ніж її попередники. Але, попри її загальне визнання з боку програмістів, PDP-11 з часом була витіснена персональними комп'ютерами, включаючи IBM PC та Apple II.

Система команд ряду PDP-11 значно вплинула на мову програмування C.

Особливості PDP-11

[ред. | ред. код]

Система команд

[ред. | ред. код]

Програмісти полюбили PDP-11 за її «ортогональну» систему команд: можна було окремо запам'ятовувати команди, і окремо — методи доступу до операндів. Можна було вважати, що будь-який метод доступу (режим адресації) буде працювати з будь-якою операцією, не потрібно було запам'ятовувати список винятків і особливих випадків, у яких операція має обмежений набір режимів адресації, всі регістри були універсальними та могли використовуватися з будь-якою командою. Насправді винятки й особливі випадки були, але лише в кількох досить рідко застосовуваних командах.

У певному сенсі, набір режимів адресації утворював «базис», а набір операцій — інший базис. Кожна двооперандна інструкція складалася з двох 6-бітних ідентифікаторів операндів (кожен з них містив три біти на номер регістра і три біти на режим адресації), а також з 4-бітного коду операції; однооперандна інструкція містила один 6-бітний ідентифікатор операнда і 10-бітний код операції. З восьми регістрів (з номерами від 0 до 7), шість були регістрами загального призначення; регістр 6 особливо виділявся як вказівник стека; регістр 7 був покажчиком поточної інструкції. Проте всі ці регістри могли використовуватися як операнди в арифметико-логічних операціях або використовуватися при формуванні адрес операндів.

Відсутність окремої шини вводу/виводу

[ред. | ред. код]

На відміну від багатьох інших комп'ютерів того часу, перші моделі PDP-11 не мали окремої шини вводу/виводу — тільки шину пам'яті Unibus. Всі регістри пристроїв введення/виведення мали свої адреси, аналогічні адресами пам'яті, тому окремі інструкції введення/виведення були не потрібні. Система переривань була зроблена максимально простою, але достатньо гнучкою. Кожен пристрій мав свій вектор переривання, який, при необхідності, повідомляв процесору, тому не було жорсткого обмеження на кількість векторів, доступних для використання пристроями.

Високопродуктивні машини сімейства, починаючи з PDP-11/45, вже мали окрему шину пам'яті, Unibus же продовжувала використовуватися тільки для вводу/виводу. У PDP-11/70 був зроблений ще один крок вперед: додався окремий інтерфейс для магнітних дисків і стрічок — Massbus. Однак, керівні регістри пристроїв введення/виведення, як і раніше проєктувалися на пам'ять, і окремих інструкцій введення/виведення не було потрібно.

Розроблено для масового виробництва

[ред. | ред. код]

І нарешті, комп'ютери PDP-11 були розроблені для виробництва на заводах з низькокваліфікованої робочою силою. Розміри всіх конструктивних частин були відносно некритичними. При збірці, штамповані плати підключалися до загальної плати, на якій застосовувався монтаж навивкою. Сполучні блоки були дуже схожі на ті, які вже давно застосовувалися в телефонії.

Плата Q-Bus з процесором LSI-11/2
Чипсет DEC "Fonz-11" (F11)
Чипсет DEC "Jaws-11" (J11)

LSI-11 (PDP-11/03), представлений в лютому 1975[1] був першою моделлю PDP-11 виробленою з використанням великих інтегральних схем; центральний процесор складався з чотирьох інтегральних схем виробництва Western Digital (чипсет MCP-1600; п'ята мікросхема могла додаватися, аби розширити набір інструкцій, як зображено на фото справа). Він використовував шину, яка була варіантом Unibus — цей варіант називався LSI Bus або Q-Bus[en].

У Радянському Союзі випускалася лінійка сумісних з LSI-11 мікрокомп'ютерів під назвою «Електроніка-60».

Приклад програми

[ред. | ред. код]

Приклад програми «Hello, World!» На макроассемблері MACRO-11, для запуску під RT-11:

         .TITLE  HELLO WORLD
         .MCALL  .TTYOUT,.EXIT ; МАКРОСИ СИСТЕМНИХ ВИКЛИКІВ З SYSMAC.SML
 HELLO:: MOV     #MSG,R1       ; ПОЧАТКОВА АДРЕСА СТРІЧКИ
 1$:     MOVB    (R1)+,R0      ; ОТРИМУЄМО НАСТУПНИЙ СИМВОЛ
         BEQ     DONE          ; ЯКЩО 0, ВИХОДИМО З ЦИКЛУ
         .TTYOUT               ; ІНАКШЕ ДРУКУЄМО СИМВОЛ
         BR      1$            ; ПОВТОРЕННЯ ЦИКЛУ
 DONE:   .EXIT

 MSG:    .ASCIZ /Hello, world!/
         .END    HELLO

Для компіляції та запуску цієї програми в системі RT-11 виконується послідовність команд:

. MACRO HELLO
ERRORS DETECTED: 0
. LINK HELLO

. RUN HELLO
Hello, world!

Операційні системи

[ред. | ред. код]
Перфострічка, що використовувалась на PDP-11

В СРСР та інших країнах східного блоку було розроблено і випускалося кілька машин, сумісних за системою команд і частково за архітектурою з серією PDP-11: [2]

Примітки

[ред. | ред. код]
  1. 16-bit Timeline. microsoft.com (англ.). Архів оригіналу за 8 грудня 2008. Процитовано 8 листопада 2016.
  2. faq.pages/Soviet11s.html The PDP-11 FAQ — PDP-11s behind the Iron Curtain [Архівовано 29 січня 1999 у Wayback Machine.] (англ.)

Література

[ред. | ред. код]
  • Р. Экхауз, Л. Моррис, Мини-ЭВМ: организация и программирование, М.: Финансы и статистика, 1983. (рос.)
  • М. Сингер, Мини-ЭВМ PDP-11: Программирование на языке ассемблера и организация машины, Москва: Мир, 1984. == Michael Singer. PDP-11. Assembler Language Programming and Machine Organization. 1980. (рос.)

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]