Архитектура PDP-11

редактировать

Архитектура PDP-11 - это архитектура набора команд CISC (ISA), разработанная Digital Equipment Corporation (DEC). Это реализовано центральными процессорами (ЦП) и микропроцессорами, используемыми в миникомпьютерах PDP-11. Он широко использовался в 1970-х, но в конечном итоге был вытеснен более мощной архитектурой VAX-11 в 1980-х.

СОДЕРЖАНИЕ
  • 1 Память
    • 1.1 Форматы данных
    • 1.2 Управление памятью
    • 1.3 Расширение памяти
  • 2 регистра процессора
  • 3 режима адресации
    • 3.1 Общие режимы адресации регистров
    • 3.2 Режимы адресации программного счетчика
    • 3.3 Режимы адресации стека
  • 4 Набор инструкций
    • 4.1 Инструкции с двойным операндом
    • 4.2 Инструкции с одним операндом
    • 4.3 Инструкции ветвления
    • 4.4 Инструкции подпрограммы
    • 4.5 Инструкции по ловушке
      • 4.5.1 Назначение адресов векторов прерываний и исключений
    • 4.6 Прочие инструкции
    • 4.7 Операции с кодом условия
    • 4.8 Дополнительные наборы инструкций
    • 4.9 Несогласованные инструкции
    • 4.10 Скорость
  • 5 прерываний
  • 6 язык ассемблера MACRO-11
  • 7 Примечания
  • 8 ссылки
  • 9 Дальнейшее чтение
  • 10 Внешние ссылки
объем памяти

Форматы данных

Шестнадцатиразрядные слова хранятся с прямым порядком байтов ( сначала младшие байты ). Тридцатидвухразрядные данные - поддерживаются как расширения базовой архитектуры, например, с плавающей запятой в наборе инструкций FPU, двойные слова в расширенном наборе инструкций или длинные данные в коммерческом наборе инструкций - хранятся в более чем одном формате, включая необычный формат с прямым порядком байтов, иногда называемый "PDP-endian".

Управление памятью

16-битные адреса PDP-11 могут адресовать 64  КБ. К тому времени, когда PDP-11 уступил место VAX, 8-битные байты и шестнадцатеричное представление стали стандартом в отрасли; однако числовые значения на PDP-11 всегда используют восьмеричную нотацию, а объем памяти, подключенной к PDP-11, всегда указывается в виде количества слов. Базовое логическое адресное пространство составляет 32 КБ слов, но высокие 4 КБ физического адресного пространства (адреса с 160000 8 по 177777 8 при отсутствии управления памятью) не заполняются, потому что регистры ввода / вывода на шине отвечают на адреса в этом диапазоне. Итак, изначально полностью загруженный PDP-11 содержал 28К слов.

Процессор резервирует младшие адреса памяти для векторов из двух слов, которые дают счетчик программ и слово состояния процессора, с которых можно начать процедуру обслуживания. Когда устройство ввода-вывода прерывает программу, оно помещает адрес своего вектора на шину, чтобы указать, какая служебная процедура должна взять на себя управление. Самые низкие векторы - это служебные программы для обработки различных типов ловушек. Ловушки возникают при некоторых ошибках программы, таких как попытка выполнить неопределенную инструкцию; а также когда программа выполняет такую ​​инструкцию, как BPT, EMT, IOT или TRAP, чтобы запросить обслуживание у операционной системы.

Расширение памяти

В статье PDP-11 описывается, как 16-битное логическое адресное пространство стало непреодолимым ограничением. Во время существования PDP-11 для обхода ограничения использовались следующие методы:

  • Процессоры PDP-11 более поздней модели включали управление памятью для поддержки виртуальной адресации. Физическое адресное пространство было расширено до 18 или 22 бит, что позволило использовать до 256 КБ или 4 МБ ОЗУ. Логическое адресное пространство (то есть адресное пространство, доступное в любой момент без изменения таблицы отображения памяти) оставалось ограниченным 16 битами.
  • Некоторые модели, начиная с PDP-11/45, могут быть настроены на использование 32К слов (64 КБ) в качестве «пространства команд» для программного кода и отдельных 32К слов «пространства данных». Некоторые операционные системы - особенно Unix, начиная с версии V7, и RSX11-M + - полагаются на эту функцию.
  • Методы программирования, такие как наложение блока сохраненных инструкций или данных на другой по мере необходимости, могут скрыть проблемы пейджинга от прикладного программиста. Например, компилятор Modula-2 создает код, в соответствии с которым система времени выполнения подкачивает страницы размером 8 Кбайт в память, когда отдельные процедуры получают управление. (См. Внешнюю ссылку здесь.)
Регистры процессора
Регистры DEC PDP-11
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (битовая позиция)
Основные регистры
R0 R egister 0
R1 R egister 1
R2 R egister 2
R3 R egister 3
R4 R egister 4
R5 R egister 5
Указатель стека
R6 / SP R egister 6 / С липкости Р ointer
Счетчик команд
R7 / ПК R egister 7 / Р rogram С ounter
Флаги состояния
я Т N Z V C Р rocessor S ОСТОЯНИЕ W Ord
F loating P oint S tatus R egister

ЦП содержит восемь 16-разрядных регистров общего назначения (от R0 до R7). Регистр R7 - это счетчик программ (ПК). Хотя любой регистр может использоваться в качестве указателя стека, R6 является указателем стека (SP), используемым для аппаратных прерываний и ловушек. R5 часто используется для указания на текущий кадр вызова процедуры. Для ускорения переключения контекста в некоторых моделях PDP-11 предусмотрены двойные наборы регистров R1-R5. Ядро, Супервизор (если присутствует) и Пользовательский режимы имеют отдельные карты памяти, а также отдельные указатели стека (так что пользовательская программа не может вызвать сбой в работе системы, сохранив недопустимое значение в регистре указателя стека).

Режимы адресации

Большинство инструкций выделяют шесть битов для определения операнда. Три бита выбирают один из восьми режимов адресации, а три бита выбирают общий регистр.

Кодирование режима адресации шестибитных операндов выглядит следующим образом:

5 3 2 0
Режим регистр

В следующих разделах каждый элемент включает пример написания операнда на языке ассемблера. Rn означает один из восьми регистров, записанных с R0 по R7.

Общие режимы адресации регистров

Следующие восемь режимов могут быть применены к любому общему регистру. Их эффекты при применении к R6 (указатель стека, SP) и R7 (счетчик программ, PC) изложены отдельно в следующих разделах.

Код Имя Пример Описание
0n регистр Rn Операнд находится в Rn
1n Регистрация отложена (Rn) Rn содержит адрес операнда
2n Автоматическое приращение (Rn) + Rn содержит адрес операнда, затем увеличивает Rn
3n Автоинкремент отложен @ (Rn) + Rn содержит адрес адреса операнда, затем увеличивает Rn на 2
4n Автодекремент - (Rn) Уменьшите Rn, затем используйте результат как адрес операнда
Отложенный автодекремент @ - (Rn) Уменьшите Rn на 2, затем используйте результат как адрес адреса операнда.
6n Индекс X (Rn) Rn + X - адрес операнда
7n Индекс отложен @X (Rn) Rn + X - адрес адреса операнда

В режимах с отложенным индексом и индексированием X - это 16-битное значение, взятое из второго слова инструкции. В командах с двойным операндом оба операнда могут использовать эти режимы. Такие инструкции состоят из трех слов.

Операции автоинкремента и автодекремента в регистре выполняются на 1 в байтовых инструкциях, на 2 в словарных инструкциях и на 2 всякий раз, когда используется отложенный режим, поскольку количество адресов регистра является (словесным) указателем.

Программный счетчик режимов адресации

Когда указан R7 (программный счетчик), четыре режима адресации, естественно, дают полезные эффекты:

Код Имя Пример Описание
27 Немедленный #n Операнд - это следующее слово инструкции
37 Абсолютный @ # а Адрес операнда - это следующее слово инструкции
67 Родственник а Адрес операнда - это следующее слово инструкции, добавляемой в ПК.
77 Относительно отложенный @a Адрес адреса операнда - это следующее слово инструкции, добавляемой в ПК.

Единственное распространенное использование абсолютного режима, синтаксис которого сочетает в себе немедленный и отложенный режим, - это указание регистров ввода / вывода, поскольку регистры для каждого устройства имеют определенные адреса памяти. Относительный режим имеет более простой синтаксис и более типичен для обращения к программным переменным и пунктам назначения перехода. Программа, которая использует относительный режим (и относительный отложенный режим) исключительно для внутренних ссылок, не зависит от позиции ; он не содержит предположений о своем собственном местоположении, поэтому его можно загрузить в произвольную ячейку памяти или даже переместить без необходимости корректировки его адресов для отражения его местоположения ( перемещенного ). При вычислении таких адресов относительно текущего местоположения процессор выполнял перемещение на лету.

Немедленный и абсолютный режимы - это просто режим отложенного автоинкремента и автоинкремента, соответственно, применяемые к ПК. Когда вспомогательное слово находится «в инструкции», как сказано в приведенной выше таблице, ПК для следующей инструкции автоматически получает приращение после вспомогательного слова. Поскольку ПК всегда указывает на слова, операция автоинкремента всегда на 2.

Режимы адресации стека

R6, также обозначаемый как SP, используется в качестве аппаратного стека для ловушек и прерываний. Соглашение, обеспечиваемое набором режимов, предоставляемых PDP-11, заключается в том, что стек растет вниз - к более низким адресам - по мере того, как в него помещаются элементы. Когда режим применяется к SP или к любому регистру, который программист выбирает для использования в качестве программного стека, режимы адресации имеют следующие эффекты:

Код Имя Пример Описание
16 Отложено (SP) Операнд находится наверху стека
26 год Автоматическое приращение (SP) + Операнд находится наверху стека, затем вытащите его
36 Автоинкремент отложен @ (SP) + Указатель на операнд находится на вершине стека; убрать указатель
46 Автодекремент - (SP) Помещать значение в стек
66 Проиндексировано X (SP) Это относится к любому элементу в стеке по положительному расстоянию от вершины.
76 Индексированный отложенный @X (SP) Это относится к значению, на которое указатель находится в указанном месте в стеке.

Хотя программные стеки могут содержать байты, SP всегда является стеком слов. Операции автоинкремента и автодекремента для SP всегда на 2.

Набор инструкций

PDP-11 оперирует байтами и словами. Байты определяются номером регистра, определяющим младший байт регистра, или ячейкой памяти. Слова определяются номером регистра или ячейкой памяти младшего байта, который должен быть четным числом. В большинстве инструкций, которые принимают операнды, бит 15 установлен для указания байтовой адресации или снят для указания адресации слов. В списках в следующих двух разделах программист на ассемблере добавил B к символу инструкции, чтобы указать байтовую операцию; например, MOV превратился в MOVB.

Некоторые инструкции, например MARK и SOB, не были реализованы на некоторых моделях PDP-11.

Инструкции с двойным операндом

Четыре старших бита определяют операцию, которая должна быть выполнена (бит 15 обычно выбирает адресацию слов, а не байтов). Две группы по шесть битов определяют режим адресации операнда источника и режим адресации операнда назначения, как определено выше.

15 12 11 9 8 6 5 3 2 0
Код операции Src регистр Dest регистр
Код операции Мнемонический Операция
01 MOV Двигаться: Dest ← Src

Примечание: при перемещении байта в регистр знак расширяется до битов 8-15.

11 MOVB
02 CMP Сравнивать: Set-flags(Src − Dest)
12 CMPB
03 НЕМНОГО Битовый тест: Set-flags(Src ∧ Dest)
13 BITB
04 BIC Немного ясно: Dest ← Dest ∧ Ones-complement(Src)
14 BICB
05 БИС Набор бит: Dest ← Dest ∨ Src
15 BISB
06 ДОБАВЛЯТЬ Добавлять: Dest ← Dest + Src
16 SUB Вычесть: Dest ← Dest − Src

Команды ADD и SUB используют адресацию слов и не имеют побайтно-ориентированных вариаций.

Некоторые инструкции с двумя операндами используют операнд режима адресации и дополнительный регистровый операнд:

15 9 8 6 5 3 2 0
Код операции Рег Src / Dest регистр

Если используется пара регистров (записанная ниже как «(Reg, Reg + 1)», первый регистр содержит младшую часть операнда и должен быть регистром с четным номером. Следующий регистр с более высоким номером содержит старшую часть часть операнда (или остаток). Исключением является инструкция умножения; Reg может быть нечетным, но если это так, старшие 16 бит результата не сохраняются.

Код операции Мнемонический Операция
070 MUL Умножить: (Reg, Reg+1) ← Reg × Src
071 DIV Делить: Compute (Reg, Reg+1) ÷ Src; Reg ← quotient; Reg+1 ← remainder
072 ПЕПЕЛ Арифметический сдвиг: if Srclt;5:0gt; lt; 0 then Reg ← Shift-right(Reg, -Srclt;5:0gt;) else Reg ← Shift-left(Reg, Srclt;5:0gt;)
073 ASHC Комбинированный арифметический сдвиг: if Srclt;5:0gt; lt; 0 then (Reg, Reg+1) ← Shift-right((Reg, Reg+1), -Srclt;5:0gt;) else (Reg, Reg+1) ← Shift-left((Reg, Reg+1), Srclt;5:0gt;)
074 XOR Эксклюзивный или: Dest ← Dest ⊻ Reg

Инструкции с одним операндом

Десять битов старшего разряда определяют выполняемую операцию, при этом бит 15 обычно выбирает байтовую адресацию, а не словесную. Одна группа из шести битов определяет операнд, как определено выше.

15 6 5 3 2 0
Код операции Src / Dest регистр
Код операции Мнемонический Операция
0001 JMP Прыгать: PC ← Src
0003 ТАМПОН Поменять местами байты слова: Dest ← Swap-bytes(Dest)
0050 CLR Ясно: Dest ← 0
1050 CLRB
0051 COM Дополнение: Dest ← Ones-complement(Dest)
1051 ГРЕБЕНЬ
0052 INC Приращение: Dest ← Dest + 1
1052 INCB
0053 DEC Уменьшение: Dest ← Dest − 1
1053 DECB
0054 NEG Отрицать: Dest ← Twos-complement(Dest)
1054 NEGB
0055 АЦП Добавить перенос: Dest ← Dest + C flag
1055 ADCB
0056 SBC Вычесть перенос: Dest ← Dest - C flag
1056 SBCB
0057 TST Контрольная работа: Set-flags(Src)
1057 TSTB
0060 ROR Повернуть вправо: Dest ← Rotate-right(Dest, 1)
1060 RORB
0061 ROL Повернуть налево: Dest ← Rotate-left(Dest, 1)
1061 ROLB
0062 ASR Арифметический сдвиг вправо: Dest ← Shift-right(Dest, 1)
1062 ASRB
0063 ASL Арифметический сдвиг влево: Dest ← Shift-left(Dest, 1)
1063 ASLB
1064 MTPS Перейти в PSW: PSW ← Src
0065 MFPI Перейти из предыдущего I пробела: −(SP) ← Src
1065 MFPD Перейти из предыдущего пробела D: −(SP) ← Src
0066 MTPI Перейти к предыдущей позиции I: Dest ← (SP)+
1066 MTPD Перейти к предыдущей позиции D: Dest ← (SP)+
0067 SXT Знак продлить: if N flag ≠ 0 then Dest ← -1 else Dest ← 0
1067 MFPS Перейти из PSW: Dest ← PSW

Инструкции по отделению

В большинстве инструкций перехода решение о переходе зависит от состояния кодов условий. Команде ветвления обычно предшествует инструкция с двумя операндами CMP (сравнение), BIT (битовая проверка) или инструкция TST с одним операндом (проверка). Арифметические и логические инструкции также устанавливают коды условий. В отличие от процессоров Intel в архитектуре x86, инструкции MOV также устанавливают их, поэтому для перехода можно использовать инструкцию ветвления в зависимости от того, было ли перемещенное значение нулевым или отрицательным.

Старший байт инструкции определяет операцию. Биты с 9 по 15 - это код операции, а бит 8 - это значение вычисления кода условия, в результате которого выполняется переход. Младший байт - это смещение слова со знаком относительно текущего местоположения программного счетчика. Это позволяет выполнять прямые и обратные переходы в коде.

15 9 8 7 0
Код операции C Компенсировать
Код операции C Мнемонический Состояние или работа
000 1 BR Филиал всегда PC ← PC + 2 × Sign-extend(Offset)
001 0 BNE Ветвь, если не равно Z = 0
001 1 БЫТЬ Q Ветвь, если равно Z = 1
002 0 BGE Переходить, если больше или равно (N ⊻ V) = 0
002 1 BLT Ветвь, если меньше чем (N ⊻ V) = 1
003 0 BGT Ветвь, если больше, чем (Z ∨ (N ⊻ V)) = 0
003 1 BLE Переходить, если меньше или равно (Z ∨ (N ⊻ V)) = 1
100 0 BPL Ветвь, если плюс N = 0
100 1 ИМТ Ветвь, если минус N = 1
101 0 BHI Ветвь, если выше (C ∨ Z) = 0
101 1 BLOS Ветвь, если ниже или такая же (C ∨ Z) = 1
102 0 BVC Перейти, если сбросить переполнение V = 0
102 1 BVS Переход, если установлено переполнение V = 1
103 0 BCC или BHIS Ветвь, если несёт ясно, или Ветвь, если выше или такая же C = 0
103 1 BCS или BLO Переход, если установлен перенос, или Переход, если ниже C = 1

Ограниченный диапазон инструкций ветвления означал, что по мере роста кода целевые адреса некоторых ветвей становились недоступными. Программист изменил бы однословную BR на двухсловную инструкцию JMP из следующей группы. Поскольку JMP не имеет условных форм, программист должен изменить BEQ на BNE, который разветвляется вокруг JMP.

SOB (вычитание единицы и переход) - еще одна инструкция условного перехода. Указанный регистр уменьшается на 1, и если результат не равен нулю, выполняется обратная ветвь на основе 6-битного смещения слова.

15 9 8 6 5 0
Код операции Рег Компенсировать
Код операции Мнемонический Операция
077 Сука Subtract One and Branch: Reg ← Reg - 1; if Reg ≠ 0 then PC ← PC - 2 × Offset

Подпрограммные инструкции

Инструкция JSR может сохранить любой регистр в стеке. Программы, которым эта функция не нужна, указали ПК в качестве регистра (ПК JSR, адрес) и процедуру, возвращенную с помощью ПК RTS. Если подпрограмма была вызвана, например, с «адресом JSR R4», то старое значение R4 будет наверху стека, а адрес возврата (сразу после JSR) будет в R4. Это позволило подпрограмме получить доступ к значениям, закодированным в строке, указав (R4) +, или к встроенным указателям, указав @ (R4) +. Автоинкремент прошел мимо этих данных до точки, в которой код вызывающего абонента возобновился. Такая процедура должна указать RTS R4 для возврата к вызывающему.

15 9 8 6 5 3 2 0
Код операции Рег Src регистр
Код операции Мнемонический Операция
004 JSR Перейти к подпрограмме: -(SP) ← Reg; Reg ← PC; PC ← Src
15 3 2 0
Код операции Рег
Код операции Мнемонический Операция
00020 РТС Возврат из подпрограммы: PC ← Reg; Reg ← (SP)+

Инструкции по ловушке

15 9 8 7 0
Код операции S Код операции
Код операции S Мнемонический Операция
104 0 ЕМТ Ловушка эмулятора: -(SP) ← PS; -(SP) ← PC; PC ← (30); PS ← (32)
104 1 ЛОВУШКА Общая ловушка: -(SP) ← PS; -(SP) ← PC; PC ← (34); PS ← (36)
15 0
Код операции
Код операции Мнемонический Операция
000002 RTI Возврат из прерывания: PC ← (SP)+; PS ← (SP)+
000003 BPT Ловушка точки останова: -(SP) ← PS; -(SP) ← PC; PC ← (14); PS ← (16)
000004 IOT Ловушка ввода / вывода: -(SP) ← PS; -(SP) ← PC; PC ← (20); PS ← (22)
000006 RTT Возвращение из ловушки: PC ← (SP)+; PS ← (SP)+

Назначение адресов векторов ловушек и исключений

Вектор Условие
000000 (Зарезервированный)
000004 Недопустимая инструкция, ошибка шины, ограничение стека
000010 Зарезервированная инструкция
000014 Инструкция BPT, трассировка ловушки
000020 Инструкция по IOT
000030 Инструкция ЕМТ
000034 Инструкция TRAP
000244 Исключение с плавающей точкой
000250 Ошибка управления памятью

Разные инструкции

15 0
Код операции
Код операции Мнемонический Операция
000000 HALT Остановить процессор: Halt execution before next instruction
000001 ЖДАТЬ Дождитесь прерывания: Halt execution before next instruction; Resume execution at next interrupt handler
000005 СБРОС НАСТРОЕК Сбросить UNIBUS: Assert INIT on UNIBUS for 10 ms; All other devices reset to power up state

Операции с кодом условия

15 6 5 4 3 2 1 0
Код операции 1 S N Z V C
Код операции S Мнемонический Операция
0002 0 Ccc Очистить коды условий: Clear codes according to N, Z, V, C bits
0002 1 Scc Установите коды состояния: Set codes according to N, Z, V, C bits

Четыре кода состояния в слове состояния процессора (PSW):

  • N означает отрицательное значение
  • Z обозначает нулевое (равное) состояние
  • V указывает на состояние переполнения, и
  • C указывает на состояние переноса.

Инструкции в этой группе представляли собой то, что компания Digital называла «микропрограммированными»: единственный бит в командном слове ссылался на единственный код состояния. Ассемблер не определил синтаксис для определения каждой комбинации, но символы SCC и CCC составляют инструкцию, которая устанавливает или очищает, соответственно, все четыре кода условий.

Очистка или установка ни одного из кодов условий (коды операций 000240 и 000260 соответственно) могут эффективно рассматриваться как инструкции, не требующие выполнения операции. Фактически, мнемоника NOP собрана в 000240.

Дополнительные наборы инструкций

Расширенный набор команд (EIS)

EIS был опцией для 11/35/40 и 11/03 и был стандартным для новых процессоров.

  • MUL, DIV умножить и разделить целочисленный операнд для регистрации пары
  • ASH, ASHC арифметика - сдвиг регистра или пары регистров. Для положительного числа он будет сдвигаться влево, а для отрицательного - вправо.
Плавающий набор команд (FIS)

Набор инструкций FIS был опцией для PDP-11/35/40 и 11/03.

  • FADD, FSUB, FMUL, FDIV только для операций с одинарной точностью в стеке, адресуемом операндом регистра
Процессор с плавающей запятой (FPP)

Это был дополнительный вариант процессора с плавающей запятой для 11/45 и большинства последующих моделей.

  • полные операции с плавающей запятой над операндами одинарной или двойной точности, выбираемые одинарным / двойным битом в регистре состояния с плавающей запятой
  • предшественник формата данных с плавающей запятой одинарной точности формата IEEE 754 : знаковый бит, 8-битная экспонента, 23-битная мантисса со скрытым битом 24
Набор коммерческих инструкций (СНГ)

CIS был реализован с помощью дополнительного микрокода в 11/23/24 и с помощью дополнительного модуля в 11/44 и в одной версии 11/74. Он предоставил строковые и десятичные инструкции, используемые COBOL и Dibol.

Доступ к слову состояния процессора (PSW)

PSW был отображен на адрес памяти 177 776, но инструкции, найденные на всех, кроме самых ранних PDP-11, давали программам более прямой доступ к регистру.

  • SPL (установить уровень приоритета)
  • MTPS (перейти в состояние процессора)
  • MFPS (переход от состояния процессора)
Доступ к другим областям памяти

На PDP-11, которые предоставляли несколько пространств для инструкций и пространств данных, набор неортогональных инструкций Move давал доступ к другим пространствам. Например, подпрограммы в операционной системе, которые обрабатывали вызовы службы времени выполнения, могли бы использовать эти инструкции для обмена информацией с вызывающей стороной.

  • MTPD (перейти к предыдущему пространству данных)
  • MTPI (перейти к предыдущей инструкции)
  • MFPD (переход из предыдущего пространства данных)
  • MFPI (перейти из предыдущей области инструкций)

Несогласованные инструкции

За время жизни PDP-11 возникли тонкие различия в реализации инструкций и комбинаций режимов адресации, хотя ни одна реализация не считалась правильной. Несоответствия не повлияли на обычное использование PDP-11.

Скорость

Скорость процессора PDP-11 зависит от модели, конфигурации памяти, операционного кода и режимов адресации. Синхронизация инструкции включает до трех компонентов: выполнение / выборка самой инструкции и время доступа для источника и пункта назначения. Последние два компонента зависели от режима адресации. Например, на PDP-11/70 (около 1975 г.) команда вида ADD  x (R m), y (R n) имела время выборки / выполнения 1,35 микросекунды плюс время источника и назначения по 0,6 микросекунды каждая., что дает общее время инструкции 2,55 микросекунды. Любой случай, когда адресуемая память не была в кэше, добавляет 1,02 микросекунды. Регистр-регистр ADD R m, R n может выполняться из кэша за 0,3 микросекунды. С плавающей запятой было еще сложнее, поскольку между ЦП и процессором с плавающей запятой было некоторое перекрытие, но в целом с плавающей запятой было значительно медленнее. Команда сложения с плавающей точкой одинарной точности может составлять от 2,4 до 5,5 микросекунд плюс время на выборку операндов.

Прерывания

PDP-11 работал с уровнем приоритета от 0 до 7, объявленным тремя битами в слове состояния процессора (PSW), а модели высокого класса могли работать в различных режимах: ядро ​​(привилегированный), пользовательский (приложение), и иногда Supervisor, согласно двум битам в PSW.

Чтобы запросить прерывание, устройство шины будет использовать одну из четырех линий общей шины с BR4 по BR7, пока процессор не ответит. Более высокие числа указывают на большую срочность, возможно, что данные могут быть потеряны или нужный сектор может выйти из контакта с головками чтения / записи, если процессор не отреагирует быстро. Готовность принтера к другому символу была самым низким приоритетом (BR4), так как он будет оставаться готовым бесконечно. Если бы процессор работал на уровне 5, то BR6 и BR7 были бы в порядке. Если бы процессор работал на 3 или ниже, он выдал бы любое прерывание; если в 7, он не предоставит ни одного. Запросы на автобус, которые не были удовлетворены, не терялись, а просто откладывались. Устройство, нуждающееся в обслуживании, продолжит подтверждать свой запрос шины.

Каждый раз, когда прерывание превышало уровень приоритета процессора, процессор выдавал соответствующее разрешение шины, от BG4 до BG7. Линии предоставления шины не были общими линиями, а представляли собой шлейфовую цепочку : вход каждого элемента был выходом предыдущего элемента в цепочке. Шлюз был на каждом устройстве шины, а устройство, физически ближе к процессору, было раньше в гирляндной цепи. Если устройство сделало запрос, то, обнаружив вход разрешения шины, оно могло бы сделать вывод, что оно контролирует шину и не передало сигнал разрешения следующему устройству на шине. Если устройство не отправляло запрос, оно распространяло входные данные разрешения шины на выход разрешения шины, давая возможность ответить следующему ближайшему устройству. (Если устройства не занимали слоты, смежные с процессорной платой, «карты предоставления целостности», вставленные в пустые слоты, распространяли линию разрешения шины.)

Получив управление шиной, устройство сбросило свой запрос шины и поместило на шину адрес памяти своего вектора из двух слов. Процессор сохранил счетчик программ (ПК) и PSW, перешел в режим ядра и загрузил новые значения из указанного вектора. Для устройства в BR6 новый PSW в своем векторе обычно будет указывать 6 в качестве нового приоритета процессора, поэтому процессор будет учитывать более срочные запросы (BR7) во время процедуры обслуживания, но откладывать запросы с таким же или более низким приоритетом. В новом ПК процессор перешел к процедуре обслуживания прерывающего устройства. Эта процедура управляла устройством, по крайней мере, устраняя условие, вызвавшее прерывание. Процедура завершилась инструкцией RTI (ReTurn from Interrupt), которая восстановила PC и PSW как раз перед тем, как процессор предоставил прерывание.

Если запрос шины был сделан по ошибке и ни одно устройство не ответило на предоставление шины, процессор прервал тайм-аут и выполнил ловушку, которая указала бы на неисправное оборудование.

МАКРО-11 язык ассемблера
Перфолента для ПДП-11

MACRO-11 - это ассемблер для PDP-11. Это преемник PAL-11 (Program Assembler Loader), более ранней версии языка ассемблера PDP-11 без средств макросов. MACRO-11 поддерживался во всех операционных системах DEC PDP-11. PDP-11 Unix- системы также включают ассемблер (называемый « as »), структурно подобный MACRO-11, но с другим синтаксисом и меньшим количеством функций.

Заметки
Рекомендации
  • Руководство по процессору pdp11 - pdp11 / 05/10/35/40. Корпорация цифрового оборудования. 1973 г.
  • Руководство по процессору pdp11 - pdp11 / 04 / 34a / 44/60/70. Корпорация цифрового оборудования. 1979 г.
дальнейшее чтение
  • Экхаус, младший, Ричард Х.; Моррис, Л. Роберт (1979). Организация, программирование и приложения микрокомпьютерных систем (PDP-11). Энглвуд Клиффс, Нью-Джерси : Прентис-Холл. ISBN   0-13-583914-9.
  • Майкл Сингер, PDP-11. Программирование на языке ассемблера и организация машин, John Wiley amp; Sons, NY: 1980.
Внешние ссылки
Последняя правка сделана 2023-03-21 05:35:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте