Когда микрокоманда попадает в MIR, в тракт данных поступают различные сигналы. Значение определенного регистра помещается на шину В, а АЛУ узнает, какую операцию нужно выполнять. Все это происходит во время второго под-цикла. После периода Aw + Ar входные сигналы АЛУ стабилизируются.
После периода Ау стабилизируются сигналы N и Z АЛУ, а также выходной сигнал схемы сдвига. Затем значения N и Z сохраняются в двух одноразрядных триггерах. Эти биты, как и биты всех регистров, которые загружаются с шины С и памяти, сохраняются на фронте синхронизирующего сигнала, ближе к концу цикла тракта данных. Выходной сигнал АЛУ не сохраняется, а просто передается в схему сдвига. Работа АЛУ и схемы сдвига происходит во время подцикла 3.
После следующего интервала, Az, выходной сигнал схемы сдвига, пройдя через шину С, достигает регистров. Регистры загружаются в конце цикла на фронте синхронизирующего сигнала (см. рис. 4.2). Во время подцикла 4 происходит загрузка регистров и триггеров N и Z. Подцикл завершается сразу после окончания фронта, когда все значения сохранены, результаты предыдущих операций памяти доступны, регистр MPC загружен. Этот процесс продолжается снова и снова, пока вы не выключите компьютер.
Микропрограмме приходится не только управлять трактом данных, но и определять, какая микрокоманда должна выполняться следующей, поскольку микропрограммы не упорядочены в управляющей памяти. Вычисление адреса следующей микрокоманды начинается после загрузки регистра MIR. Сначала в регистр MPC копируется 9-разрядное поле NEXT_ADDRESS (следующий адрес). Пока происходит копирование, проверяется поле JAM. Если оно содержит значение ООО, то ничего больше делать не нужно, и когда копирование поля NEXT_ ADDRESS завершится, регистр MPC укажет на следующую микрокоманду.
Если один или несколько битов в поле JAM равны 1, то требуются еще некоторые действия. Если бит JAMN равен 1, то триггер N соединяется через схему ИЛИ со старшим битом регистра MPC. Если бит JAMZ равен 1, то триггер Z соединяется через схему ИЛИ со старшим битом регистра MPC. Если оба бита равны 1, они оба соединяются через схему ИЛИ с тем же битом. А теперь объясним, зачем нужны триггеры N и Z. Дело в том, что после фронта сигнала (и вплоть до спада) шина В больше не запускается, поэтому выходные сигналы АЛУ уже не могут считаться правильными. Сохранение флагов состояния АЛУ в регистрах
N и Z делает правильные значения установившимися и доступными для вычисления регистра MPC, независимо от того, что происходит вокруг АЛУ.
На рис. 4.5 блок, который выполняет это вычисление, помечен как «Старший бит». Он вычисляет следующую булеву функцию:
F= (CJAMZ И Z) ИЛИ (JAMN И N)) ИЛИ NEXT_ADDRESS[8]
Отметим, что в любом случае регистр MPC может принять только одно из двух возможных значений:
1. Значение NEXT_ADDRESS.
2. Значение NEXT_ADDRESS со старшим битом, соединенным операцией ИЛИ с логической единицей.
Других значений не существует. Если старший бит значения NEXTADDRESS уже равен 1, нет смысла использовать J AMN или JAMZ.