Одним из достоинств микропрограммных устройств управления является их наглядность, облегчающая изучение процесса функционирования ЭВМ и их эксплуатацию. Поэтому рассмотрение методов построения устройств управления начнем с микропрограммных устройств, не учитывая того обстоятельства, что они стали применяться позже управляющих устройств с жесткой (схемной) логикой. В настоящее время микропрограммное управление является наиболее распространенным методом построения управления, по крайней мере, в процессорах машин малой и средней производительности, а также в других устройствах (каналах, устройствах управления периферийными устройствами и др.). Микропрограммное управление применяется в некоторых типах микропроцессоров.
Хранимая в памяти микропрограмма должна содержать информацию о функциях переходов и выходов управляющего микропрограммного автомата.
Интерпретируя рассматриваемый ниже УА в терминах конечных автоматов, обнаружим, что он функционирует подобно автомату Мили с задержанными на такт выходными сигналами. Аргументами функций переходов и выходов автомата являются входные переменные Z(t) и U{t) и переменные q(t), задающие своими значениями состояние автомата Q (t). Набор значений аргументов удобно отождествить с адресом микрокоманды. Этот адрес заносится в регистр адреса микрокоманды во время такта. В управляющей памяти (УП) по данному адресу хранится код, задающий набор значений выходных сигналов управляющего автомата V(t +1),- операционная часть микрокоманды — и набор значений переменных q{t + 1), представляющий состояние Q(t + 1). Значения V(t + 1) и Q (t + 1) определяются функциями переходов и выходов.
Рис. 3.10. Структурная схема простейшего варианта управляющего автомата с хранимой в памяти логикой
Структурная схема простейшего варианта управляющего автомата с хранимой в памяти программой приведена на Рис. 3.10. Автомат работает следующим образом. Серия синхросигналов СС определяет такты работы автомата, при этом значение СС = 1 выделяет такт, а значение СС = 0 — паузу между тактами. Напомним, что значения входных и выходных сигналов и состояние автомата должны быть неизменными во время такта и могут меняться только в паузах.
Состояние автомата Q{t) представляется набором значений переменных q{t), в дальнейшем называемым для краткости кодом Q{t).
Пусть в такте (t—1) в РгАМк занесены U{t—1), Z(t—l) и код Q(t—1). Тогда в паузе перед тактом t при СС=0 на РгАМк эти значения сохраняются и из УП можно выбрать коды V{t), которые у рассматриваемого нами автомата, как и Q(t), зависят от Q{t—1), Z(t—1) и U(t—1). Эти коды при СС = 0 заносятся в РгМк (одновременно происходит изменение значений входных сигналов). После возникновения СС = 1, задающего такт t, в РгМк хранятся сформированные коды V{t) и Q(t), при этом сигналы V{t) используются для инициирования микроопераций, а код Q(t) переносится в РгАМк, после чего цикл работы автомата повторяется.
Воздействие управляющих сигналов V(t) на операционный блок синхронизируется сигналом СС = 1, обеспечивающим выдачу V{t) строго в такте t из РгМк, находящегося в режиме хранения.
Управляющая память может быть двух типов: постоянная и с произвольным обращением, т. е. допускающая как считывание, так и запись. В последнем случае загрузка УП производится пользователем со специального внешнего ЗУ по шине загрузки управляющей памяти ШЗгУП при каждом включении машины в работу.
Анализируя рассматриваемую структурную схему, можно заметить, что число слов, хранимых в УП, очень велико из-за большой разрядности РгАМк, обусловленной значительным числом используемых оповещающих сигналов U(t). Сократить объем УП можно, если учесть, что для каждого Q(t) существенными являются значения не всех, а лишь некоторых переменных из Z(t) и U(t), задающих различные переходы из состояния Q(t) в состояние Q(t+l).
Число таких переходов в микропрограммных автоматах обычно невелико, и поэтому для каждого Q(t) можно выделить группу адресов УП, хранящих коды только различных состояний перехода Q(t + 1). Объем УП при этом во много раз сократится, так как в УП не будут храниться многократно повторяющиеся коды, описывающие одинаковые переходы автомата.
Адрес микрокоманды при таком подходе формируется специальной комбинационной схемой формирования адреса микрокоманд СхФАМк по значениям Q(t), U(t) и Z(t). Схема СхФАМк подключается ко входам РгАМк, как показано штриховыми линиями на Рис. 3.10.
Адрес очередной микрокоманды можно назначить без учета значений Z(t) и U(t), если эта микрокоманда задает функцию перехода автомата в состоянии, имеющем единственный переход, не зависящий от значения входных сигналов. В этом случае адрес очередной микрокоманды можно указать значением отдельной группы разрядов исполняемой микрокоманды. Если очередная микрокоманда должна задавать функцию перехода автомата в состоянии, имеющем различные переходы, зависящие от значений входных сигналов, то ее адрес должен зависеть от входных сигналов,
Для получения простой схемы СхФАМк обычно используется следующий способ формирования очередного адреса. В микрокоманде выделяется помимо операционной части адресная. Адресная часть содержит несколько полей (групп разрядов): поле типа формирования адреса (ТФА) и поля формирования отдельных групп разрядов очередного адреса (ПФА). При определенных значениях поля ТФА очередной адрес формируется только из значений ПФА (в простейшем случае в РгАМк переносятся значения ПФА, заданные в микрокоманде).
Если адрес очередной микрокоманды должен формироваться с учетом значений входных сигналов, то в поле ТФА заносится специальный код, настраивающий СхФАМк на особую обработку ПФА. При этом содержимое некоторых ПФА по-прежнему переносится в РгАМк, а коды из других ПФА обеспечивают занесение в РгАМк значений, указываемых этими ПФА входных переменных. Таким образом, очередной адрес оказывается зависящим не только от ранее исполнявшейся микрокоманды (состояния автомата), но и от значений входных сигналов, влияющих на переходы автомата в новое состояние.
Рассмотренный способ формирования адреса следующей микрокоманды носит название принудительного формирования адреса.
Формирование адреса следующей микрокоманды иногда осуществляют способом естественной адресации с помощью счетчика. Безусловный переход от микрокоманды с адресом i осуществляется к микрокоманде с адресом i + 1, что позволяет иметь в микрокоманде только операционную часть. Однако при этом в микропрограмму вводят помимо операционных адресные микрокоманды, различаемые по специальному признаку. В адресных микрокомандах отсутствует операционная часть и все разряды используются в качестве полей ТФА и ПФА, таких же, как и в адресной части рассматривавшихся выше микрокоманд. Такой способ формирования адреса микрокоманды вызывает усложнение схем дешифрирования микрокоманд и увеличение длины микропрограмм, но сокращает длину микрокоманд.
Примером использования естественной адресации микрокоманд может служить управляющий блок микропроцессора Am2900.
Управляющие автоматы с хранимой в памяти логикой различаются по способу формирования управляющих функциональных сигналов. Возможно использование горизонтального, вертикального и смешанного микропрограммирования.
Горизонтальное микропрограммирование. Каждому разряду операционной части микрокоманды ставится в соответствие определенный управляющий функциональный сигнал, т. е. определенная микрооперация. Если в разряде стоит 1, то соответствующая микрооперация выполняется независимо от значения других разрядов. При таком способе операционная часть микрокоманды содержит т разрядов, где т — общее число микроопераций. Достоинствами горизонтального микропрограммирования являются возможность одновременного выполнения в одном такте любого набора из т микроопераций и простота формирования функциональных сигналов, так как последние могут возбуждаться непосредственно от сигналов из регистра микрокоманды.
Однако оно имеет и существенный недостаток, заключающийся в том, что требуется большая длина микрокоманды, поскольку число функциональных сигналов в современном процессоре может достигать нескольких сотен. Поэтому, хотя и известны случаи практического применения горизонтального микропрограммирования, главным образом в малых машинах, где число управляющих функциональных сигналов сравнительно невелико (около 150), большее распространение получили другие методы.
При вертикальном микропрогра.имировании микрооперация определяется не состоянием одного из разрядов микрокоманды, а двоичным кодом, содержащимся в операционной части микрокоманды, при этом отдельный код задает отсутствие микрооперации.
Число разрядов операционной части микрокоманды
n о.ч =] log2 (т+ 1) [.
Достоинством вертикального микропрограммирования является небольшая длина микрокоманды. Однако в этом случае требуются сложные дешифраторы на большое число микроопераций, а главное — в каждой микрокоманде указывается лишь одна микрооперация, что приводит к увеличению длины микропрограмм по сравнению с их длиной при горизонтальном микропрограммировании. Вертикальное микропрограммирование часто используется в микропроцессорах, как, например, для управления центральными процессорными элементами набора К589.
В настоящее время наибольшее распространение имеет смешанное микропрограммирование, в котором сочетаются горизонтальное и вертикальное микропрограммирования.
При смешанном микропрограммировании множество микроопераций V разбивается на А: подмножеств (или полей):
V l
Микрооперации внутри каждого из подмножеств кодируются либо горизонтальным, либо вертикальным способом. Можно выделить два способа.
Вертикально-горизонтальное микропрограммирование. Все множество микроопераций V расчленяют на k подмножеств Vl, в каждом из которых объединяют микрооперации, наиболее часто встречающиеся вместе в одном такте. Подмножества стараются по возможности сделать равномощными. Операционная часть микрокоманды (Рис. 3.12) состоит из двух полей. В первом поле, длина которого равна mах|Vl|, применен горизонтальный способ кодирования микроопераций, т. е. каждый разряд соответствует определенной микрооперации из подмножества Vl, а другое поле, имеющее длину ]1оg2k[, указывает, к какому из А: подмножеств принадлежат микрооперации в первом поле микрокоманды.
Рис. 3.12. Структура микрокоманды при вертикально-горизонтальном микропрограммировании
Более гибким и часто используемым является горизонтально-вертикальный способ кодирования.
Горизонтально-вертикальное микропрограммирование (Рис. 3.13). Подмножества Vl кодируются горизонтальным, а микрооперации внутри каждого из подмножеств — вертикальным способом. В этом случае каждому подмножеству Vl выделяется
Рис. 3.13. Структура управляющего автомата при горизонтально-вертикальном микропрограммировании
отдельное поле в операционной части микрокоманды. Длина операционной части микрокоманды
n o.ч = ]log2 (m+1)[,
где ml — число микроопераций, представляемых в поле l.
Микрокоманды такого типа называют микрокомандами с полевой структурой. При таком способе кодирования желательно, чтобы
Vi Vj = при i j
т. е. чтобы каждая микрооперация встречалась только в одном поле.
При прямом кодировании микрокоманд каждое поле микрокоманды несет фиксированные функции. Косвенное кодирование характеризуется наличием дополнительных полей, содержимое которых меняет смысл основных полей микрокоманды. Таким образом, интерпретация полей, формирующих управляющие сигналы, зависит от бит дополнительных полей.
Косвенное кодирование широко используется, так как позволяет уменьшить длину микрокоманды. Однако оно в некоторой степени нарушает стройность микропрограммного управления, вызывает усложнение дешифраторов и приводит к снижению скорости работы из-за потерь времени на дешифрирование дополнительных полей микрокоманды.
Различают одно- и многофазные микрокоманды. В первом случае все микрооперации, указанные в микрокоманде, выполняются одновременно в течение одного такта. Во втором — такт разбивается на части, называемые фазами или микротактами,
и указанные в команде микрооперации выполняются в различные микротакты (фазы такта). В этом случае приходится учитывать временные зависимости между отдельными микрооперациями. Однако становится возможным включать в микрокоманду взаимно исключающие микрооперации, разводя их по разным тактам. Многофазные микрокоманды часто применяются . в ЭВМ с горизонтальным или горизонтально-вертикальным микропрограммированием (например, в ЕС ЭВМ).
Для повышения скорости работы управляющего автомата (УА) с хранимой в памяти логикой используются различные методы. Чаще всего осуществляется совмещение отдельных действий, задаваемых микрокомандой, что особенно существенно при использовании многофазных микрокоманд. Например, в ЭВМ ЕС-1030 двухфазные микрокоманды выполняются с совмещениями вида, указанного на Рис. 3.5. В цикле i работы осуществляется выполнение микроопераций 1-й микрокоманды ВЫП Моi а одновременно с этим происходит формирование адреса очередной микрокоманды ФAi+1 и ее выборка ВЫБi+1. При таком совмещении адрес (i + 1)-й микрокоманды формируется i-й микрокомандой с учетом значений оповещающих сигналов, представляющих собой результаты (i — 1)-й микрокоманды. Учет результатов i-й микрокоманды может осуществляться только (i + 1)-й микрокомандой при формировании адреса (i + 2)-й микрокоманды.
Хотя идея микропрограммирования известна с 1951 г., однако еще до недавнего времени этот принцип управления не находил широкого применения в ЭВМ из-за отсутствия достаточно надежных и дешевых быстродействующих УП для хранения микропрограмм и сложности разработки текстов микропрограмм. Однако в последние годы интерес к микропрограммному принципу управления (к УА с хранимой в памяти логикой) возродился. Были созданы постоянные запоминающие устройства для УП с циклом обращения 0,25-0,5 мкс. Появились интегральные ПЗУ и ЗУ с произвольным обращением, обладающие еще большим быстродействием. Выяснилось, что эффективность методов построения УА зависит от числа и сложности команд ЭВМ и при увеличении и усложнении команд и функций процессора эффективность микропрограммного управления растет.
Рис. 3.14. Временная диаграмма работы управляющего автомата с хранимой в памяти логикой
Использование принципа микропрограммного управления позволяет строить более регулярные схемы УА, создавать эффективные системы диагностики для автоматического поиска неисправностей, упрощает документирование алгоритмов работы УА. В последнее время микропрограммирование используется как средство для аппаратурной реализации фрагментов операционных систем, трансляторов и т. п.
Микропрограммирование широко используется для проблемной ориентации микропроцессорных устройств и систем при помощи специализированного набора команд, обеспечивающего наиболее эффективное решение определенных задач пользователя.
Все чаще в ЭВМ применяется загружаемая управляющая память, при этом в качестве первичных носителей микропрограмм используются гибкие диски или кассеты портативных магнитофонов, с которых микропрограммы загружаются в УП.
Микропрограммное управление с использованием загружаемой УП позволяет расширять или даже менять состав команд ЭВМ.
Наиболее выгодно использование УА с хранимой в памяти логикой для операционных блоков процессоров, в которых реализуются алгоритмы с относительно небольшим числом условий ветвления. Реализация в этих автоматах алгоритмов с большим числом условий ветвления ведет к значительному усложнению СхФАМк и, следовательно, к увеличению времени формирования адреса микрокоманды и в конечном счете к уменьшению быстродействия УА с хранимой в памяти логикой. В этом случае используются УА с «жесткой» логикой, обладающие большим быстродействием. В некоторых случаях в ЭВМ используются одновременно УА с хранимой в памяти логикой и УА с «жесткой» логикой.