Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КP схемотехника =МУ=.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆
  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);

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

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

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

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