4) Машинные команды, циклы и такты. Микропрограммный принцип выполнения команд.
Каждая команда в МП выполняется на протяжении командного цикла. Командный цикл состоит из цикла выборки команды и цикла выполнения команды (рис.1.8).
Рис.1.8. Пример командного цикла 8-разрядного МП
Продолжительность цикла выборки команды зависит от формата команды (количества байт в машинном коде команды). Команды занимают от одного до трех байт в программной памяти. Многобайтные команды хранятся в соседних ячейках памяти. Для выборки однобайтной команды (например, сложения содержимого аккумулятора А и регистра B - ADD В) необходимо одно обращение к памяти, для выборки трехбайтной команды (например, вызова подпрограммы по адресу addr — call addr) — три обращения. Продолжительность цикла исполнения команды зависит от способа адресации операндов. Так, при выполнении команд с регистровой адресацией не нужно дополнительное обращение к памяти для чтения операнда, в командах с косвенной адресацией такое обращение необходимо. Поэтому продолжительность командного цикла различна для различных команд и определяется количеством обращений к памяти или к внешнему устройству.
Машинный цикл М - интервал, на протяжении которого осуществляется одно обращение процессора к памяти или к внешнему устройству.
Машинный такт T - интервал, на протяжении которого выполняется элементарное действие (микрооперация) в процессоре.
В зависимости от действий, выполняемых МП, различают следующие типы машинных циклов:
- выборка (чтение первого байта команды)
- чтение памяти (чтение второго и третьего байтов команды, чтение операнда)
- запись в память
- чтение стека
- запись в стек
- ввод данных из внешнего устройства
- вывод данных на внешнее устройство
- прерывание
- останов
- прерывание при останове
Первым машинным циклом команды всегда является цикл ВЫБОРКА, на протяжении которого осуществляется выборка из памяти байта кода команды по адресу, определяемому содержимым указателя команд. Содержимое указателя в цикле увеличивается на единицу. Для выполнения однобайтных команд с регистровой адресацией требуется лишь один цикл ВЫБОРКА.
Для выборки двух- или трехбайтных команд, кроме цикла ВЫБОРКА, нужны еще один или два машинных цикла для чтения второго или второго и третьего байтов команды. Эти циклы определяются как циклы ЧТЕНИЕ ПАМЯТИ. Цикл ЧТЕНИЕ ПАМЯТИ необходим также для выборки операнда при выполнении команд с косвенной или прямой адресацией. Для записи операндов или сохранения адресов при выполнении команд пересылок нужны машинные циклы ЗАПИСЬ В ПАМЯТЬ.
В командах с обращением к стеку выполняются циклы ЧТЕНИЕ СТЕКА и ЗАПИСЬ В СТЕК. Адрес памяти определяются указателем стека SP.
Для выполнения команд ввода/вывода выполняются машинные циклы ВВОД и ВЫВОД; для организации прерываний программы и остановки процессора — циклы ПРЕРЫВАНИЕ, ОСТАНОВ, ПРЕРЫВАНИЕ ПРИ ОСТАНОВЕ.
Каждый машинный цикл процессора идентифицируется байтом, называемым байтом состояния. Байт состояния выдается на шину данных в начале каждого машинного цикла и сопровождается одновременной выдачей сигнала SYNC на одноименный контакт БИС МП. Байт состояния несет информацию о последующих действиях процессора. Его можно запомнить по сигналу SYNC и сформировать такие управляющие сигналы, которые не удалось вывести в явном виде на контакты БИС МП из-за ограниченного количества контактов микросхемы. Байты состояния для процессора i8080 приведены в табл. 1.1.
Рис.1.10. Цикл ЗАПИСЬ В ПАМЯТЬ
Такты отсчитываются по передним фронтам последовательности F1, а микрооперации в каждом такте определяются передним фронтом последовательности F2. При тактовой частоте 2МГц продолжительность такта равна 0,5мкс.
Сигналы на линиях шин А15—А0 (D7—D0) изображены на рис.1.9 на одной временной диаграмме в виде линий L- и Н-уровней одновременно. Таким образом, на диаграмме указан лишь тип информации на шине, например — присутствие на ней адреса или данных. Пунктирной линией обозначено высокоимпедансное состояние линий шин (z-состояние).
В первом машинном такте Т1 на шину адреса (линии А15—А0) выдается адрес - содержимое указателя команд IP, если выполняется цикл ВЫБОРКА, или содержимое регистра-указателя адреса — если выполняется цикл ЧТЕНИЕ ПАМЯТИ. Вместе с тем на шину данных (линии D7—D0) выдается байт состояния, а также формируется сигнал SYNC на одноименном выводе БИС МП.
Во втором такте Т2 заканчивается поступление байта состояния и сигнала SYNC, продолжительность которых равняется одному такту. В машинном цикле ВЫБОРКА содержимое IP увеличивается для адресации следующего байта команды или следующей команды. В этом же такте устройство управления МП производит анализ сигналов на входах READY и HOLD, а также контроль выполнения команды останова hlt. Если память или внешнее устройство не готовы к обмену (READY = 0) вследствие того, что поступил запрос ПДП (HOLD = 1) или выполняется команда останова hit, то обмен данными осуществляться не может, и процессор переходит в один из режимов — ожидания, захвата шин или останова. В этих режимах осуществляется ожидание сигнала на протяжении нескольких тактов ожидания Tw, количество которых определяется внешними сигналами. На рис.1.9 в такте Т2 сигнал READY равняется логическому нулю, а в такте Тw — логической единице.
В такте ТЗ в зависимости от типа машинного цикла осуществляется обращение к памяти, стеку или внешнему устройству. В результате в МП вводится (см. рис.1.9) или из него выводится (см. рис.1.10) байт команды, адреса или данных. В зависимости от типа команды машинный цикл может содержать такты Т4 и Т5 (например, если для выполнения команды нужна обработка операндов). В последнем такте команды (ТЗ, Т4 или Т5) анализируется наличие сигнала запроса прерывания INT. Если прерывание разрешено, то процессор переходит к машинному циклу ПРЕРЫВАНИЕ.