Определение формата микрокоманды
На разрядность полей микрокоманды влияют следующие параметры: □количество различных микроопераций, формируемых УА, в конечном итоге определяет (с учетом выбранного способа кодирования) длину поля микроопераций; □ количество различных логических условий определяет длину поля x; □ количество вершин ГСА связано с общим числом микрокоманд, а следовательно, с объемом памяти микропрограмм и разрядностью поля адреса микрокоманды. Множество микроопераций Y, используемых в заданной ГСА Y= {y1, y2,...y13}, мощность множества На сколько подмножеств следует разбивать исходное множество? По меньшей мере, на s=3 в нашем случае. Образуем три подмножества — Y 1, Y 2, Y3 и разместим в них микрооперации операторной вершины, имеющей s микроопераций. Если в ГСА таких вершин несколько — выберем любую из них. Теперь разместим по множествам микрооперации следующей вершины, содержащей (в нашем случае) три микрооперации: Заметим, что первая микрооперация второй рассматриваемой вершины совпадает с первой микрооперацией первой вершины. Она уже присутствует в множестве Теперь нераспределенными остались микрооперации (некоторые) "двойных" и "одинарных" вершин. Вершина (у2, у6) — обе микрооперации несовместимы с уже распределенными, поэтому могут располагаться произвольно, лишь бы они находились в разных подмножествах: Вершина (у2, у9) — у9 нельзя помещать в Y1, поскольку совместимая с ней Остались две нераспределенные микрооперации — y3 и y10, первая из которых совместима с у5, поэтому ее нельзя помещать в Y 2, а вторая несовместима ни с какими другими и может размещаться произвольно. Поместим их в множество, имеющее пока наименьшую мощность — Y1: Все 13 микроопераций распределились по трем подмножествам, при этом выполняются условия (4.8) (т. е. имеет место разбиение исходного множества Y), однако УА обычно должен вырабатывать еще одну микрооперацию, свидетельствующую об окончании выполнения алгоритма и предназначенную для использования не в ОА, а в управляющем автомате верхнего уровня иерархии. Назовем эту микрооперацию ук и включим в произвольное множество (например, в Y2), поскольку она, естественно, несовместима ни с одной микрооперацией. Итак, имеем следующее распределение: Для кодирования элементов каждого из трех подмножеств потребуется по три двоичных разряда. Может показаться, что для Y 3 хватит и двух, ведь В подмножестве Y3 всего одна "лишняя" микрооперация, а среди кодов Y1 и Y2 есть свободные. Попробуем перенести одну из микроопераций из Y3 в другое подмножество, сохраняя, естественно, требование к попарной несовместимости всех микроопераций одного подмножества. Очевидно, первые три элемента подмножества Y3 нельзя перенести в другое, т. к. они являются микрооперациями из "тройных" вершин. Зато микрооперация у9 совместима только с Теперь мы можем определить размеры полей микрокоманды. Поле микроопераций будет состоять из трех подполей — Y1, Y2, Y3 (назовем их по именам соответствующих подмножеств), размером в 3, 3 и 2 двоичных разрядов соответственно, Поле номера условия x должно содержать номер одного из двух логических условий — х1, х2 (один разряд?), однако для повышения гибкости процесса микропрограммирования удобно иметь возможность выбирать еще и тождественно истинное и тождественно ложное условия. Итак, поле x занимает два разряда. Наконец, поле адреса определяется объемом памяти микропрограмм. Если в нашем примере мы будем считать, что разрабатываем УА только для реали зации микропрограммы рис. 4.14, а она содержит 8 вершин, не считая начальной, конечной и условных, количество микрокоманд (каждая микрокоманда — ячейка памяти, имеющая свой адрес), выдаваемых УА, будет никак не менее 8, а реально — (1, 2,..., 1, 3)х8, то для поля адреса в микрокоманде следует отвести 4 разряда (24=16>1, 3х8≈11). В поле адреса будет располагаться адрес памяти — двоичный номер ячейки, а в полях Yi и x — коды микроопераций и логических условий. Окончательно формат микрокоманды будет иметь вид, приведенный на рис. 4.15. Рис. 4.15. Формат микрокоманды
|