Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
267
Добавлен:
01.06.2015
Размер:
14.91 Mб
Скачать

Кодирование микрокоманд

Информация о том, какие сигналы управления должны быть сформированы в про­цессе выполнения текущей МК, в закодированном виде содержится в микроопе­рационной части (МО) микрокоманды. Способ кодирования микрооперации во многом определяет сложность аппаратных средств устройства управления и его скоростные характеристики. Применяемые в микрокомандах варианты кодирова­ния сигналов управления можно свести к трем группам: минимальное кодирование (горизонтальное микропрограммирование), максимальное кодирование (верти­кальное микропрограммирование) и групповое кодирование (смешанное микропрограммирование). Структуры микропрограммных автоматов при различных способах кодирования микроопераций показаны на рис. 6.9 [12, 28].

При горизонтальном микропрограммировании (см. рис. 6.9, а) под каждый сигнал управления в микрооперационной части микрокоманды выделен один разряд (RMO = Ncy). Это позволяет в рамках одной микрокоманды формировать любые сочетания СУ, чем обеспечивается максимальный параллелизм выполнения микроопераций. Кроме того, отсутствует необходимость в декодировании МО и выхода регистра микрокоманды могут быть непосредственно подключены к соответствующим управляемым точкам ВМ. Широкому распространению горизонтален микропрограммирования тем не менее препятствуют большие затраты на хранение микрооперационных частей микрокоманд , причем эффек

Микропрограммный автомат с программируемой логикой 305

Рис. 6.9. Структуры МПА при различных способах кодирования микроопераций:

а — минимальном; б — максимальном; е — максимальном с шифратором;

г— горизонтально-вертикальном; д — вертикально-горизонтальном

тивность использования ПМП получается низкой, так как при большом числе микроопераций в каждой отдельной МК реализуется лишь одна или несколько из них, то есть подавляющая часть разрядов МО содержит нули.

При максимальном (вертикальном) кодировании (см. рис. 6.9, б) каждой мик­рооперации присваивается определенный код, например, ее порядковый номер в полном списке возможных микроопераций. Этот код и заносится в МО. Микро­операционная часть МК имеет минимальную длину, определяемую как двоич­ный логарифм от числа управляющих сигналов (микроопераций) по формуле (6.2). такой способ кодирования требует минимальных аппаратных затрат в ПМП на хранение микрокоманд, однако возникает необходимость в дешифраторе ДшМК, который должен преобразовать код микрооперации в соответствующий сигнал уп­равления. При большом количестве СУ дешифратор вносит значительную временную задержку, а главное — в каждой МК указывается лишь один сигнал управления, инициирующий только одну микрооперацию, за счет чего увеличиваются длина микропрограммы и время ее реализации.

Последний недостаток устраняется при подключении к выходам ДшМК шифратора (Ш) (см. рис. 6.9, в), что приводит к увеличению количества СУ, формируемых одновременно. Естественно, что помимо кодов отдельных микроопераций должны быть предусмотрены коды, представляющие и определенные комбинации микроопераций. Для повышения универсальности шифратор целесообразно строить на базе запоминающего устройства.

Вариант, представленный на рис. 6.9, в, рационален, если

где NDколичество выходов дешифратора. При этих условиях аппаратные затраты на хранение микрооперационных частей МК относительно малы:

Однако полная емкость используемой памяти равна

откуда ясно, что при близких NMK и ND вариант теряет смысл.

Минимальное и максимальное кодирование являются двумя крайними точками широкого спектра возможных решений задачи кодирования СУ. Промежуточ­ное положение занимает групповое или смешанное кодирование.

Здесь все сигналы управления (микрооперации) разбиваются на К групп

В зависимости от принципа разбиения микроопераций на группы различают горизонтально-вертикальное и вертикально-горизонтальное кодирование.

В горизонтально-вертикальном методе (см. рис. 6.9, г) в каждую группу включаются взаимно несовместимые сигналы управления (микрооперации), то есть СУ, которые никогда не встречаются вместе в одной микрокоманде. При этом сигналы, обычно формируемые в одном и том же такте, оказываются в разных груп­пах. Внутри каждой группы сигналы управления кодируются максимальным (вер­тикальным) способом, а группы — минимальным (горизонтальным) способом.

Каждой группе У, выделяется отдельное поле в микрооперационной части МК, общая разрядность которой равна

где Nсу — количество СУ, представляемых 1-м полем (группой).

Общая емкость памяти микропрограмм рассмотренного варианта кодирования определяется из выражения:

При вертикально-горизонтальном способе (см. рис. 6.9, д) все множество сигналов управления (микроопераций) также делится на несколько групп, однако в группу включаются сигналы управления (микрооперации), наиболее часто встречающиеся вместе в одном такте. Поле МО делится на две части: MO1 и М02. Поле М01, длина которого равна максимальному количеству сигналов управления (микроопераций) в группе, кодируется горизонтально, а поле М02, указывающее на принадлежность к определенной группе, — вертикально. Со сменой группы меняются и управляемые точки, куда должны быть направлены сигналы управления из каждой позиции М01. Это достигается с помощью демультиплексоров (Дмп), управляемых кодом номера группы из поля М02.

При горизонтальном, вертикальном и горизонтально-вертикальном способах кодирования МИКроопераций каждое поле микрокоманды несет фиксированные функции, то есть имеет место прямое кодирование. При косвенном кодировании одно из полей отводится для интерпретации других полей. Примером косвенного кодирования микрооперации может служить вертикально-горизонтальное кодирования

Иногда используется двухуровневое кодирование микроопераций. На первого уровне с вертикальным кодированием выбирается микрокоманда, поле МО которой является адресом горизонтальной микрокоманды второго уровня — нанокоманды Данный способ сочетания вертикального и горизонтального микропрограммирования часто называют нанопрограммированием. Метод предполагает двухуровневую систему кодирования микроопераций и, соответственно, двухуровневую организацию управляющей памяти (рис 6.10).

Верхний уровень управления образуют микропрограммы, хранящиеся в памяти микропрограмм. В микрокомандах используется вертикальное кодирование микроопераций. Каждой микрокоманде соответствует нанокоманда, хранящаяся в управляющей памяти нижнего уровня — памяти нанокоманд. В нанокомандах применено горизонтальное кодирование микроопераций. Именно нанокоманды используются для непосредственного формирования сигналов управления. Микрокоманды вместо закодированного номера СУ содержат адресную ссылку на соответствующую нанокоманду.

Такой подход, сохраняя все достоинства горизонтального микропрограммирония, позволяет значительно сократить суммарную емкость управляющей памяти. Дело в том, что число различных сочетаний сигналов управления, а следовательно количество «длинных» нанокоманд, обычно невелико. В то же время практически все микрокоманды многократн повторяются в различных микропрограммах,

и замена в микрокомандах «длинного» горизонтального управляющего поля на короткую адресную ссылку дает ощутимый эффект. Проиллюстрируем это примером.

Пусть в системе вырабатывается 200 управляющих сигналов, а общая длина микропрограмм составляет 2048 микрокоманд. Предположим также, что реально используется только 256 различных сочетаний сигналов управления. В случае обычного УУ с горизонтальным микропрограммированием емкость управляющей памяти составила бы 2048 х 200 = 409 600 бит. При нанопрограммировании требуется память микропрограмм емкостью 2048 х 8 = 16 384 бит и память нанокоманд емкостью 256 х 200 = 51 200 бит. Таким образом, суммарная емкость обоих видов управляющей памяти равна 67 584 битам.

Иначе говоря, нанопамять реализует функцию шифратора управляющих сигналов (см. рис. 6.9, в). Справедливы следующие соотношения: RM < RH, EM »Ем где Ем, RMемкость и разрядность микропамяти;

Ен, RH —емкость и разрядность памяти нанокоманд.

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

Двухуровневая память рассматривается как способ для уменьшения необходимой емкости ПМП, ее использование целесообразно только при многократном повторении микрокоманд в микропрограмме.

При разбиении микрокоманды на поля могут действовать два принципа: по функциональному назначению СУ и по ресурсам. Функциональное кодирование предполагает, что каждое поле соответствует одной функции внутри ВМ. Например, информация в аккумулятор может заноситься из различных источников, и для указания источника в микрокоманде может быть отведено одно поле, где каждая

кодовая комбинация прикреплена к определенному источнику. При ресурсном кодировании ВМ рассматривается как набор независимых ресурсов (память, УВВ,АЛУ и т. п.), и каждому из ресурсов в микрокоманде отводится свое поле.