Выходной сигнал шины С можно записать сразу в несколько регистров, однако нежелательно передавать значения более одного регистра на шину В. Немного усовершенствовав схемотехнику, мы можем сократить количество битов, необходимых для выбора одного из возможных источников для запуска шины В. Существуют только 9 входных регистров, которые могут запустить шину В (регистры MBR со знаком и без знака учитываются отдельно). Следовательно, мы можем закодировать информацию для шины В в 4 бита и использовать декодер для порождения 16 сигналов управления, 7 из которых не нужны (у разработчиков коммерческих моделей, возможно, возникло бы желание избавиться от одного из регистров, чтобы обойтись тремя битами, но мы, как ученые, предпочитаем иметь один лишний бит, но при этом получить более понятную конструкцию).
Теперь мы можем управлять трактом данных с помощью 9 + 4 + 8 + 2 + 1 = 24 сигналов, следовательно, нам требуется 24 бита. Однако эти 24 бита управляют трактом данных только в течение одного цикла. Задача управления — определить, что нужно делать в следующем цикле. Чтобы учесть это в конструкции контроллера, мы создадим формат для описания операций, которые нужно выполнить, использовав 24 бита управления и два дополнительных поля: поле NEXT_ADDRESS (следующий адрес) и поле JAM. Содержание каждого из этих полей мы обсудим позже. На рис. 4.4 изображен один из возможных форматов. В нем представлены следующие 6 групп, содержащие 36 сигналов:
♦ Addr — адрес следующей потенциальной микрокоманды;
♦ JAM — определение того, как выбирается следующая микрокоманда;
♦ ALU — функции АЛУ и схемы сдвига;
♦ С — выбор регистров, которые записываются с шины С;
♦ Mem — функции памяти;
♦ В — выбор источника для шины В (как он кодируется, было показано ранее).
Рис. 4.4. Формат микрокоманды для Мю-1
Порядок групп в принципе произволен, хотя мы долго и тщательно его подбирали, чтобы избежать пересечений на диаграмме, показанной на рис. 4.5. По добные пересечения на диаграммах часто соответствуют пересечениям проводов на микросхемах. Они значительно затрудняют разработку, и их лучше сводить к минимуму.
Рис. 4.5. Полная диаграмма микроархитектуры Міс-1
Управление микрокомандами — микроархитектура Мю-1
До сих пор мы рассказывали об управлении трактом данных и не касались вопроса о том, какой именно сигнал управления и на каком цикле должен устанавливаться. Для этого существует контроллер последовательности, который отвечает за последовательность операций, необходимых для выполнения одной команды.
Контроллер последовательности в каждом цикле должен выдавать следующую информацию:
♦ состояние каждого сигнала управления в системе;
♦ адрес микрокоманды, которая будет выполняться следующей.
Рисунок 4.5 представляет собой подробную диаграмму полной микроархитектуры нашей машины, которую мы назвали Mic-1. Хотя на первый взгляд она может показаться внушительной, ее нужно подробно изучить. Если вы разберетесь во всех блоках и их связях, изображенных на этом рисунке, вам легче будет понять структуру уровня микроархитектуры. Диаграмма состоит из двух частей: тракта данных (слева), который мы уже подробно обсудили, и блока управления (справа), который мы рассмотрим сейчас.