Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КP схемотехника =МУ=.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.17 Mб
Скачать
  1. Микрокомандное управление.

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

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

Исполнение каждой ассемблерной команды можно представить ниже в виде последовательности шагов (микрокоманд).

Для команды: переход, если «равно» КОп – 1112, ДКОп – 11112:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • проанализировать состояния флага z:

  • если состояние флага z = 0, следовательно, передачи управления нет, готовится к исполнению следующая команда и выполняется переход на исполнение последней микрокоманды;

  • если состояние флага z = 1, следовательно, выполняется передача управления, и исполняются все следующие микрокоманды (кроме последней);

    • инкрементировать РСчК;

    • извлечь следующее слово памяти программ (константу перехода);

    • алгебраически суммировать текущее состояние РСчК и константы памяти программ;

    • загрузить новое число в РСчК – перейти к исполнению команды по ветвлению.

    • инкрементировать РСчК – перейти к исполнению следующей команды.

Для команды абсолютного вызова подпрограммы КОп – 1112, ДКОп – 00002:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • декрементировать РУС;

  • инкрементировать РСчК;

  • извлечь следующее слово памяти программ, определяющее младшую часть адреса абсолютного перехода (разряды );

  • загрузить младший адрес абсолютного перехода в разряды 0…6 ДР;

  • инкрементировать РСчК;

  • извлечь следующее слово памяти программ, определяющее среднюю часть адреса абсолютного перехода (разряды );

  • загрузить средний адрес абсолютного перехода в разряды 7…13 ДР;

  • инкрементировать РСчК;

  • извлечь следующее слово памяти программ, определяющее старшую часть адреса абсолютного перехода (разряды );

  • загрузить старший адрес абсолютного перехода в разряды 14…15 ДР;

  • формировать адрес ОЗУ (по состоянию РУС);

  • инкремент РСчК;

  • загрузить содержимое РСчК в ячейку оперативной памяти;

  • загрузить содержимое ДР в РСчК – перейти к исполнению первой команды вызываемой подпрограммы.

Для команды сброс РОН КОп – 0012:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • формировать адрес РОНа, который необходимо обнулить (операнд источник);

  • читать данные из РОНа источника;

  • выполнить логическую операцию исключающее ИЛИ над РОНом;

  • изменить состояние РФ (в соответствии с результатом операции);

  • загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.

Для команды сложение двух РОН с переносом КОп – 1112, ДКОп – 11002:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • формировать адреса РОНов, участвующих в суммировании (операнды источники Rd, Rr);

  • читать данные из РОНов (Rd, Rr);

  • выполнить арифметическую операцию суммирования содержимого двух РОНов (Rd + Rr);

  • прибавить, к полученной сумме, содержимое флага перенос;

  • изменить состояние РФ, в соответствии с выполненным действием;

  • загрузить новое значение в РОН – перейти к исполнению следующей команды.

Для команды сложение двух РОН КОп – 1112, ДКОп – 01002:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • формировать адреса РОНов, участвующих в суммировании (операнды источники Rd, Rr);

  • читать данные из РОНов (Rd, Rr);

  • выполнить арифметическую операцию суммирования содержимого двух РОНов (Rd + Rr);

  • изменить состояние РФ, в соответствии с выполненным действием;

  • загрузить новое значение в РОН – перейти к исполнению следующей команды.

Для команды перевод в дополнительный код РОН КОп – 0102:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • формировать адрес РОНа, участвующего в переводе (операнд источник Rd);

  • читать данные из РОНа источника;

  • выполнить арифметическую операцию вычитания содержимого РОН из нуля (0 - Rd);

  • изменить состояние РФ (в соответствии с результатом операции);

  • загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.

Для команды декремент РОН КОп – 0112:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • формировать адрес РОНа, участвующего в декрементировании (операнд источник Rd);

  • читать данные из РОНа (Rd);

  • выполнить арифметическую операцию вычитание единицы из содержимого РОН (Rd - 1);

  • изменить состояние РФ (в соответствии с результатом операции);

  • загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.

Для команды пересылки данных между двумя РОНами КОп – 1012:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • формировать адрес РОНа, откуда берутся данные (операнд источник Rr);

  • читать данные из РОНа (Rr);

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • формировать адрес РОНа, для внесения данных (операнда приемника Rd);

  • загрузить новое значение в РОН приемник – перейти к исполнению следующей команды.

Для команды косвенного чтения данных в РОН из ОЗУ КОп – 1112, ДКОп – 11102:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • формировать адрес РОНа (адреса РОНов), с указанием ячейки ОЗУ (операнд источник косвенно указан индексом Z);

  • формировать адрес ячейки ОЗУ;

  • читать данные из ОЗУ;

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • формировать адрес РОНа, для внесения данных (операнда приемника Rd);

  • загрузить новое значение в РОН приемник – перейти к исполнению следующей команды.

Для команды сохранение в стеке содержимого РОН КОп – 1002:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • декрементировать РУС;

  • формировать адрес РОНа, данные которого необходимо внести в стек (операнд источник Rr);

  • читать данные из РОНа (Rr);

  • формировать адрес ОЗУ (адрес содержится в РУС);

  • загрузить содержимое РОНа в ячейку памяти – перейти к исполнению следующей команды.

Для команды возврата из подпрограммы обработки прерывания КОп – 1112, ДКОп – 10002:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной и дополнительный);

  • формировать адрес ячейки памяти ОЗУ, которой содержится в РУС;

  • читать данные из ячейки оперативной памяти;

  • загрузить содержимое ячейки памяти в РСчК;

  • установить флаг I, регистра флагов;

  • инкрементировать РУС – перейти к исполнению следующей команды.

Для команды преобразование числа КОп – 1102:

  • инкрементировать РСчК;

  • извлечь код команды из памяти программ;

  • декодировать код команды (основной);

  • формировать адрес РОНа приемника (операнд приемник Rd);

  • загрузить число с выходов преобразователя кодов в РОН приемник;

  • изменить состояние РФ (в соответствии с результатом операции);

  • перейти к исполнению следующей команды.

Схемотехническая реализация центрального процессорного элемента с использованием микрокомандного управления позволяет создать временнýю последовательность сигналов жестко управляющих процессом исполнения каждой ассемблерной команды.