
-
Язык микроопераций
Исполнение машинной команды в микропроцессоре производится над целыми словами или частью слов, параллельно хранящимися в различных узлах и передающимися в исполнительные узлы для выполнения требуемых действий, при этом параллельные линии, по которым производится передача слов, называются шинами. Функциональные узлы, где слова расположены параллельно, а также шины для передачи слов можно представить при помощи языка микроопераций.
Язык микроопераций предназначен для описания последовательности элементарных преобразований параллельных данных в функциональных узлах микропроцессора под воздействием как управляющих сигналов, так и сигналов синхронизации.
Микрооперация элементарная операция, выполняющаяся над данными, содержащимися в функциональных узлах микропроцессора, инициирующаяся одним управляющим сигналом и имеющая продолжительность один такт сигнала синхронизации.
Микрокоманда с позиции формирования кодов машинных команд параллельное во времени исполнение одной либо нескольких микроопераций, инициирующихся сигналами управления, при продолжительности один или более тактов сигналов синхронизации. Простейшая микрокоманда содержит одну микрооперацию, управляется одним сигналом и исполняется за один такт сигналов синхронизации.
Используя структуру языка микроопераций, машинные команды произвольной сложности можно представить совместной последовательностью как воздействий управляющих сигналов, так и преобразования данных в функциональных узлах микропроцессора, при этом время преобразований определяется сигналами синхронизации.
Средства языка микроопераций. Язык микроопераций позволяет простыми и наглядными средствами представить и параллельные функциональные узлы микропроцессора (регистры, элементы ЗУ, массивы данных, шины, счётчики и др.), и элементарные операции над целыми словами либо над их частью (пересылка слова или его части, сложение двух слов, инверсия слова, сдвиг слова, инкремент слова и др.).
Слова. Описание слов состоит из называния (идентификатора) и указателя на количество разрядов. Идентификатор слова произвольная последовательность букв и цифр, начинающаяся с буквы. Указатель количества разрядов содержит номера старшего и младшего разрядов, разделённых знаком «÷», например:
В58 7 ÷ 0
описание восьмиразрядного слова В5, при этом указатель на разрядность (8) может отсутствовать, если это не влияет на смысл.
Регистры. Описание идентично описанию слова и включает в себя называние (идентификатор) регистра и указатель на количество разрядов в нём. Например, описание 82-разрядного регистра для хранения числа с плавающей точкой (рис. 5.8) имеет вид: RC 81 ÷ 0.
Аналогичным образом можно привести описание отдельных полей регистра, например, только поля мантиссы RC 63÷0 или только поля знакового разряда RC 81.
Шины. Описание идентично описанию слова и содержит идентификатор шины Ш и указатель на количество разрядов в ней. Например, описание 16-разрядной шины, по которой происходит передача адреса физической ячейки памяти, имеет вид: ША 15 ÷ 0.
Запоминающие устройства. Структурно ЗУ состоит из слов одинаковой длины, следовательно, в его описание входит идентификатор модуля памяти и в квадратных скобках наименьший и наибольший номера ячеек памяти, а также порядок нумерации разрядов в словах. Например, описание модуля кэш-памяти первого уровня, содержащего r восьмиразрядных ячеек памяти, имеет вид: Кэш1 r–1÷0, 7÷0; i-ячейка кэш-памяти второго уровня и её k-й разряд Кэш2 i, k.
Массивы данных. Массив совокупность ячеек памяти определённого ЗУ, следовательно, при описании массива необходимо использовать структуру описания ЗУ, в котором расположены данные.
Структура языка микроопераций. Назначение микрооперации выполнить функциональное, логическое или арифметическое преобразование данных над одним, двумя или более словами, расположенными в узлах микропроцессора:
-
микрооперации над двумя словами: дизъюнкция, конъюнкция, сложение, вычитание, сравнение и др.;
-
микрооперации над одним словом: инверсия, сдвиг, инкремент, декремент, установка слова или его части и др.
Микрооперации в зависимости от количества слов, задействованных при их исполнении, могут быть одноместными, двухместными или многоместными.
Микрооператор одноместной операции сдвиг. Микрооперация сдвига (SHift) относится к машинным командам целочисленной арифметики, отображает сквозное перемещение бит операнда и содержит:
-
обозначение направления сдвига: вправо (Right), влево (Ltft);
-
характеристики сдвига: циклический (Rotate), циклический через флаг переноса (Rotate through Carry flag), логический (Logical), арифметический (Arithmetical);
-
число разрядов, на которое производится сдвиг.
Например, микрооперация машинной команды арифметического сдвига содержимого регистра D вправо на три разряда имеет вид
i3-5 SH RD = SH A R (3) RD
где знак «» разделяет идентификатор и микрооператор, а также характерную особенность микрооператора (сдвиг) и характеристику операнда (регистр D); знак « =» отображает операцию присваивания результата; i3-5 идентификатор сигнала, управляющего непосредственным исполнением сдвига, содержит номер группы и номер команды в группе (полное исполнение машинной команды может содержать несколько идентификаторов).
Микрооперация арифметического сдвига представляется идентификатором сигнала управления и микрооператором, причём микрооператор содержит все сведения о машинной команде и расположении операндов, данные которых участвуют в микрооперации.
Формула микрооператора определяет преобразование, выполняемое микрооперацией (SH A R (3) арифметический сдвиг на три разряда) и местоположение операнда источника (RD регистр D), над данными которого будет производиться операция.
По аналогии, микрооперация машинной команды циклического сдвига через флаг переноса содержимого регистра B влево на пять разрядов имеет вид
i SH RB = SH RoC L (5) RB.
При выполнении микрооперации значение флага С будет внесено только при первом сдвиге, а все последующие сдвиги будут принимать значения младших разрядов регистра В.
Микрооператор одноместной операции конъюнкция. Микрооперация относится к машинным командам логического типа (Logical AND), отображает поразрядное умножение двух двоичных чисел, содержит характеристики двух операндов и имеет вид
i Lo RC = RB AND RC.
Если изменить вид логической операции, то, аналогично можно получить произвольную логическую либо арифметическую операцию:
дизъюнкция i Lo RD = RA OR RD,
сложение по модулю два i Lo RB = RD XOR RB,
сложение i Ar RC = RB ADD RC,
вычитание i Ar RA = RD SUB RA.
Микрооператор многоместной операции переход по условию. Микрооперация выполняет проверку признака флага нуля (FZ) и по этому условию исполняется либо сложение восьмиразрядной константы (k) с текущим содержанием регистра Е, либо к содержанию регистра Е прибавляется единица:
i Jcond RE = if FZ =0 then RE [7 ÷ 0] ADD k [7 ÷ 0];
else RE ADD 1.
Условие для выполнения перехода можно представлять как проверку состояния одного флага (FZ = 0) либо совокупности флагов (FZ = 0 и FС = 0).
Вывод. Используя средства языка микроопераций, можно сформировать последовательность действий при выполнении произвольной машинной команды.