Аппаратура, программное обеспечение и микропрограммы

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

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

Простой гипотетический небольшой компьютер ITSIAC имеет набор команд машинного языка, показанный на рис. 2.1.

Компьютер ITSIAC имеет накапливающий регистр-аккумулятор АКК, который участвует в выполнении всех арифметических операций. Каждая команда машинного языка содержит два поля

 

КомандаОписаниеADD (Сложить)АКК ( АКК + (А)SUB (Вычесть)АКК ( АКК - (А)LOAD (Загрузить)АКК ( (А)STORE (Записать)(А) ( АККBRANCH (Переход)Переход на АCOND BRANCH (Условный переход)Если АКК=0, то переход на Апо 8 бит код операции (КОП) и адрес памяти А. В состав процессора входит арифметико-логическое устройство (АЛУ) для выполнения некоторых арифметических действий. Регистры компьютера ITSIAC и их функции показаны на рис. 2.2.

 

РегистрФункцияАККАккумулятор. Этот накапливающий регистр участвует в выполнении всех арифметических операций. При выполнении каждой арифметической операции один из операндов должен находиться в аккумуляторе, а другой в основной памяти.РАКОПРегистр адреса команды основной памяти. Этот регистр указывает ячейку основной памяти, где находится следующая команда машинного языка, подлежащая выполнению.РАПРегистр адреса памяти. Этот регистр участвует во всех обращениях к основной памяти. Он содержит адрес ячейки памяти, к которой производится обращение для чтения или записи.РДПРегистр данных памяти. Этот регистр также участвует во всех обращениях к основной памяти. Он содержит данные, которые записываются, или принимает данные, которые считываются из ячейки основной памяти, указанной в РАП.РРРабочий регистр. Этот регистр используется для выделения поля адреса (8 бит справа) машинной команды, хранящейся в регистре РДП, чтобы его можно было поместить в РАП (в машине прямая пересылка данных из РДП в РАП невозможна).РАКУПРегистр адреса команд управляющей памяти. Этот регистр указывает адрес следующей микрокоманды (в управляющей памяти), подлежащей выполнению.РМКРегистр микрокоманды. Этот регистр содержит текущую выполняемую микрокоманду.

Машина ITSIAC работает следующим образом. Прежде всего в управляющую память загружается микропрограмма. Команда машинного языка декодируется, и управление передается соответствующей подпрограмме микропрограммы для ее интерпретации. Каждая команда микропрограммы занимает одну ячейку управляющей памяти. Регистр адреса команды управляющей памяти РАКУП указывает на следующую выполняемую микрокоманду. Эта микрокоманда выбирается из управляющей памяти и помещается в регистр микрокоманд РМК.

Затем содержимое регистра РАКУП увеличивается на 1 (теперь он указывает на следующую выполняемую микрокоманду), и весь процесс повторяется. Микропрограмма принимает из регистра адреса команды основной памяти РАКОП адрес ячейки, где хранится следующая команда машинного языка, подлежащая интерпретации. После интерпретации очередной команды машинного языка микропрограмма меняет содержимое регистра РАКОП теперь он указывает на ячейку основной памяти, где хранится следующая выполняемая команда машинного языка.

Декодированные микрокоманды непосредственно соответствуют тем элементарным операциям, которые могут выполняться аппаратными средствами; они гораздо проще, чем команды машинного я зыка

 

Межрегистровые передачи (РЕГ это АКК, РАКОП или РР):РДП РЕГ

РЕГ РДП

РАП РДПОперации с основной памятью:READ (чтение ячейки основной памяти в РДП)

WRITE (запись РДП в ячейку основной памяти)Операции управления последовательностью:РАКУП РАКУП+1 (обычный случай)

РАКУП декодированный РДП

РАКУП константа

SKIP (перескок, т. е. прибавление 2 к РАКУП, если АКК = 0; в противном случае прибавляется 1)Операции с участием аккумулятора:АКК АКК + РЕГ

АКК АКК РЕГ

АКК РЕГ

РЕГ АКК

АКК РЕГ + 1

Из перечисленных микроопераций составляются последовательности, которые реализуют команды машинного языка нашей простой машины. Микропрограмма, выполняющая команды машинного языка, показана на рис. 2.4. Выполнение микропрограммы начинается с ячейки 00, с подпрограммы, которая выбирает следующую выполняемую команду машинного языка.

Рассматриваемая машина с микропрограммным управлением работает следующим образом. Вначале регистр РАКУП устанавливается в нуль и тем самым указывает на микрокод подпрограммы, осуществляющей выборку команды машинного языка. Следующая команда машинного языка для выполнения выбирается из ячейки, адрес которой находится в РАКОП. Загрузка этой команды из основной

 

Выбор команды:(00) РАП РАКОП

(01) READ

(02) РАКУП декодированный РДПADD:(10) АКК РАКОП 4- 1

(11) РАКОП АКК

(12) РР РДП

(13) РАП РР

(14) READ

(15) РР РДП

(16) АКК АКК + РР

(17) РАКУП 0SUB:(20) АКК РАКОП + 1

(21) РАКОП АКК

(22) РР РДП

(23) РАП РР

(24) READ

(25) РР РДП

(26) АКК АКК - РР

(27) РАКУП 0LOAD:(30) АКК РАКОП + 1

(31) РАКОП АКК

(32) РР РДП

(33) РАП РР

(34) READ

(35) РР РДП

(36) АКК РР

(37) РАКУП 0STORE:(40) АКК РАКОП + 1

(41) РАКОП АКК

(42) РР РДП

(43) РАП РР

(44) РДП АКК

(45) WRITE

(46) РАКУП 0BRANCH:(50) РАКОП РДП

(51) РАКУП 0COND BRANCH:(60) SKIP

(61) РАКУП 0

(62) РАКОП РДП

(63) РАКУП 0

памяти в регистр РДП осуществляется по команде чтения READ. Команда

РАКУП ( декодированный РДП

устанавливает в РАКУП адрес соответствующей микрокодированной подпрограммы управляющей памяти для инт