КАК МИКРОПРОЦЕССОР ВЫПОЛНЯЕТ КОМАНДУ?
В ПМ-ЭВМ используется микропроцессор КР580ИК80А, структурная схема которого приведена на рис. 4.4. Микропроцессор содержит 16-разрядную шину адреса и 8-разрядную шину данных, способную к передаче сообщений в двух возможных направлениях. Единовременно передаваемая порция информации соответствует одному байту (8 двоичных разрядов). В самом общем случае возможны следующие передачи сообщений: 1) пересылка байта данных от устройства ввода; 2) пересылка байта данных к устройству вывода; 3) считывание байта данных из памяти или запись в память; 4) генерирование в шину данных специального байта, называемого управляющим словом и предназначенного для установления правильного схемного соединения.
Работа МП (или центрального процессорного элемента ЦПЭ) по реализации каждой команды программы пользователя основана на принципе микропрограммного управления. Это означает, что каждая команда реализуется как некоторая последовательность микрокоманд или микроопераций, приводящая к требуемому результату. Считываемая из памяти микропроцессором команда, вернее, ее 8-разрядный двоичный код (код операции), поступает в регистр команд, где и хранится в течение времени выполнения команды. По результату дешифрирования кода команды происходит формирование последовательности микрокоманд (микропрограммы), процесс выполнения которой и определяет все последующие операции, необходимые для выполнения считанной команды.
Таким образом, выполнение каждой считанной ЦПЭ команды программы пользователя осуществляется в строго определенной последовательности, задаваемой кодом команды. При этом выполнение отдельных микроопераций синхронизируется во времени сигналами Ф1 и Ф2 тактового генератора. Одним из важнейших понятий всего процесса выполнения команд программы является понятие машинного цикла.
В микропроцессоре КР580ИК80А процесс выполнения каждой команды можно разбить на ряд основных операций. Время, отведенное на выполнение операции обращения к памяти или к устройству вывода, составляет машинный цикл.
Таким образом, процесс выполнения команды состоит из стольких машинных циклов, сколько обращений к памяти или к устройствам ввода/вывода требуется для ее исполнения. Машинный цикл в свою очередь состоит из нескольких машинных тактов.
Каждая команда в зависимости от ее вида может занимать от одного до пяти машинных циклов. Микропроцессор КР580ИК80А имеет 10 типов машинных циклов, перечисленных в табл. 6.2, а каждый машинный цикл может состоять из 3 — 5 машинных тактов. Под машинным тактом подразумевается интервал времени, соответствующий одному периоду тактовых импульсов, подаваемых от синхрогенератора.
Рис. 4.5. Временная диаграмма для команды, требующей четыре машинных цикла
Для организации машинных циклов требуется формирование строго синхронизированной во времени последовательности управляющих сигналов, обеспечивающих правильные пути прохождения данных в строго определенные моменты времени, и выполнение требуемых микроопераций. Как уже отмечалось, исходными данными для этого являются результаты дешифрирования операционного кода команды. Выполнение команды всегда начинается с цикла обращения к памяти, в результате которого производится считывание кода, интерпретируемого МП как код операции. Будем обозначать машинные циклы одной команды символами Cl, C2 и т. д., а машинные такты одного цикла — символами Tl, T2 и т. д. Таким образом, машинный цикл С1 — это всегда цикл выборки команды. Его длительность обычно — четыре или пять тактов. Последующие циклы С2 — С5 состоят обычно из трех тактов. Для простых операций, таких как арифметические, команды занимают четыре или пять тактов. Команды более сложных операций требуют для выполнения до 18 машинных тактов.
В качестве примера рассмотрим команду LDA (ЗАГРУЗИТЬ данные в аккумулятор), требующую для реализации четыре машинных цикла. На рис. 4.5 приведена временная диаграмма команды LDA. Эта команда переписывает в аккумулятор данные, содержащиеся в определенной ячейке памяти.
Первый машинный цикл C1, как и следовало ожидать, отведен под выборку команды из памяти. При этом код операции помещается, как уже говорилось, в регистр команд. Выполнение последовательности микрокоманд приводит к следующим действиям. В первом такте Tt содержимое счетчика команд выдается через буфер шины адреса в шину адреса. Второй такт выделен для представления времени для ответа памяти. В третьем такте появившиеся данные в шине данных пересылаются в регистр команд. В четвертом такте выборка команды завершена, операционный код команды передается дешифратору команд для формирования последовательности микроопераций. При этом получает приращение содержимое счетчика команд.
Второй машинный цикл соответствует чтению из памяти восьми младших разрядов адреса, которые в результате выполнения этого цикла должны быть помещены в регистр Z. В первом такте этого цикла содержимое счетчика команд передается через буфер шины адреса в адресную шину. Во втором такте микропроцессор ожидает ответ из памяти. В третьем такте содержимое шины данных передается в регистр Z и счетчик команд опять получает приращение.
Третий машинный цикл аналогичен второму, за исключением того, что из памяти выбираются и пересылаются в регистр W восемь старших разрядов адреса. Последовательность микроопераций та же.
В четвертом машинном цикле происходит окончательное выполнение команды: аккумулятор загружается данными из памяти по адресу, записанному в регистрах W и Z.
В первом такте четвертого машинного цикла содержимое регистров W и Z передается через буфер в шину адреса. Во втором такте предоставляется время для ответа памяти. Наконец, в третьем такте содержимое шины данных пересылается через буфер в аккумулятор. Выполнение команды полностью завершено за 13 машинных тактов.
Перейдем теперь к рассмотрению системы команд микропроцессора КР580ИК80А и особенностей их работы.