Лекция 7. Система команд микропроцессора Выполнение команд в микропроцессоре КР580ВМ80 Адресное пространство с прямой адресацией данного процессора составляет 216 = 64 Кбайт памяти. Микропроцессоры с 8-разрядной шиной данных имеют 4 режима адресации операндов: 1. Прямая. В этом режиме второй и третий байты команд содержат адрес операнда. 2. Регистровая. В мнемокоде команды указывается регистр общего назначения, в котором находится операнд. 3. Непосредственная. В этом режиме во втором и третьем байтах команды указывается 8- или 16-битовый операнд. 4. Косвенная регистровая. В команде указывается регистр (или пара регистров), содержащий адрес ячейки памяти. Выполнение команд в МП Каждая команда в МП выполняется на протяжении командного цикла. Командный цикл состоит из нескольких машинных циклов (M). В команде может быть от одного до пяти машинных циклов, в зависимости от формата команды и способа адресации операндов. Команды занимают от одного до трех байтов в программной памяти. Каждый машинный цикл представляет собой цикл обращения к системной магистрали: выборку очередного байта команды или данных из памяти, запись в память, ввод или вывод данных. Выполнение команд в МП Машинный цикл, в свою очередь, разбивается на некоторое количество машинных тактов (T), на протяжении каждого из которых выполняется элементарное действие (микрооперация) в процессоре. Количество тактов в цикле определяется кодом команды и лежит в пределах от 3 до 5. Выполнение команд в МП Продолжительность такта задается периодом импульсов синхронизации и определяется как интервал времени между фронтами двух соседних импульсов последовательности F1 (CLK1). F1 t T = 0,5 мкс (f = 2 МГц) Для данного МП продолжительность такта равна 0,5 мкс, т. е. тактовая частота равна 2 МГц. Выполнение команд в МП В зависимости от действий, выполняемых МП, различают следующие типы машинных циклов: • выборка (чтение первого байта команды); • чтение памяти (чтение второго и третьего байтов команды, чтение операнда(аргумента операции)); • запись в память; • чтение стека; • запись в стек; • ввод данных из внешнего устройства; • вывод данных во внешнее устройство; • прерывание; • останов; • прерывание при останове. Выполнение команд в МП Первым машинным циклом команды всегда является цикл «Выборка», на протяжении которого осуществляется выборка из памяти байта кода команды по адресу, определяемому содержимым PC. Содержимое программного счетчика в цикле увеличивается на единицу. Для выполнения однобайтных команд с регистровой адресацией требуется лишь один цикл выборки. Для выборки двух- или трехбайтных команд, кроме цикла «Выборка», нужно выполнить еще один или два машинных цикла для чтения второго или второго и третьего байтов команды. Эти циклы определяются как циклы «Чтение памяти». Для записи операндов или сохранения адресов при выполнении команд пересылок используются машинные циклы «Запись в память». В командах с обращением к стеку выполняются циклы «Чтение стека» и «Запись в стек». Для выполнения команд ввода/вывода выполняются машинные циклы «Ввод» и «Вывод»; для организации прерываний программы и остановки процессора – циклы «прерывание», «останов» и «прерывание при останове». Выполнение команд в МП Каждый машинный цикл МП идентифицируется байтом, называемым байтом состояния (PSW). Байт состояния выдается на шину данных в начале каждого машинного цикла и сопровождается одновременной выдачей сигнала SYNC. Байт состояния несет информацию о последующих действиях МП. Его можно «запомнить» по сигналу SYNC и сформировать такие управляющие сигналы, которые не удалось вывести в явном виде на контакты БИС МП из-за ограниченного количества контактов микросхемы. Байт состояния программы (PSW) Схема управления буфером данных (BDU) Схема управления буфером данных (BDU) предназначена для управления выбором направления потока данных через буфер данных (BD) и выдачи соответствующих этому направлению внешних сигналов DBIN (прием) и WR (запись). Когда процессор выполняет операцию записи, схемой BDU формируется два сигнала: • внешний сигнал WR ; • внутренний сигнал управления буфером данных, соответствующий выбранному направлению потока данных от процессора на системную шину. Схема управления буфером адреса (BАU) предназначена для управления передачей адресов (устройств, к которым обращается МП, и ячеек памяти) по адресной шине. Сброс в исходное состояние МП (команда RESET) Схема управления сбросом воспринимает внешний сигнал RESET и выполняет установку МП в исходное состояние. Под исходным состоянием понимается следующее состояние: • очищены регистры PC и указателя стека SP; • сброшен триггер разрешения прерывания. Фактически это означает, что сразу после рестарта поведение МП будет характеризоваться следующими моментами: • интерпретацию команд МП начнёт с той команды, которая помещена в ячейке с адресом 0000; • положение стека будет не определено, так как адрес 0000 - это адрес команды; • на прерывания процессор реагировать не будет. Сброс в исходное состояние МП (команда RESET) Исходя из условий исходного состояния, для настройки МП на требуемый вариант поведения программисту после выполнения команды RESET необходимо сделать следующее. 1) Расположить по адресу 0000 команду безусловного перехода на место старта управляющей программы, чтобы она автоматически запускалась после рестарта микро-ЭВМ. 2) В начале управляющей программы специальными командами определить вершину стека в подходящем для стека месте памяти данных (ОЗУ). 3) Если требуются прерывания МП, специальной командой установить триггер разрешения прерываний, то есть разрешить процессору реагировать на запросы прерываний. Состояния МП МП в каждый такт своей работы может пребывать в одном из четырёх возможных состояний: • Выполнение команды • Ожидание • Захват • Останов Состояния МП. Выполнение программы Выполнение программы МП занимается интерпретацией команд. Он читает из памяти, дешифрирует и выполняет последовательности команд программ. Это основное рабочее состояние МП. В нём он окажется сразу после старта при следующем состоянии входных управляющих сигналов: • наличие готовности или активен сигнал READY = 1; • отсутствие захвата или пассивен сигнал HOLD = 0; • снят сигнал сброса RESET— 0. Вывести МП из состояния выполнения программы можно двумя принципиально разными путями: • воздействием на МП внешним сигналом (аппаратно); • воздействием на МП командой (программно). Более детально, имеется всего три способа: • снятие сигнала READY (готовность) - состояние ожидания; • подаче сигнала HOLD (захват) - состояние захвата; • выполнение команды HLT (останов) - состояние останова. Состояния МП. Ожидание Ожидание Состояние ожидания возникает, когда при выполнении процессором обращения к устройству шины исчезает его входной сигнал READY (готовность). Это естественное состояние для асинхронного режима взаимодействия МП с устройствами меньшего быстродействия (см. рис. 1.14). При пребывании в состоянии ожидания на выходе WAIT установится активный уровень сигнала, а остальные выходные сигналы шины МП будет удерживать в неизменном состояния, то есть в том состоянии, которое непосредственно предшествовало ожиданию. Выход из состояния ожидания возможен при восстановлении активного уровня сигнала READY (готовность). Когда это произойдет, МП продолжит прерванный машинный цикл. Состояния МП. Захват Захват Состояние захват возникает, когда при выполнении МП машинного цикла н при наличии сигнала готовности на входе READY, устанавливается сигнал захвата на входе HOLD. Оно необходимо, чтобы обеспечить возможность прямого (без участия МП) доступа к памяти (ПДП). В этом состоянии сформируется активный уровень на выходе HLDA. МП физически отключится (раскоммутируется) от шины, то есть переведет свои сигналы шины в высокоимпедансное состояние. Высокоимпедансное состояние или Z-состояние — такое состояние контакта логической схемы, при котором сопротивление между этим контактом и остальной схемой очень велико. Физически реализуется закрытым транзистором, работающим в ключевом режиме. Выход из состояния захвата - после снятия внешнего сигнала HOLD (захват). Состояния МП. Останов Останов Состояние останов возникает при выполнении МП команды HLT (код - 76). Это состояние позволяет наилучшим образом "привязать" МП к внешним событиям, реагируя на них максимально быстро ничего не делая в интервалах между ними. В состоянии останова МП установит активный уровень на выходе WAIT, а свои линии адреса и данных отключит от шины (переведёт в высокоимпедансное состояние). Вывести МП из состояния останова можно одним из трёх вариантов внешнего воздействия: • подав активный уровень на вход RESET выполнение программы адреса 0; • подав активный уровень на вход HOLD переход в состояние захвата, а после снятия сигнала захвата - возврат в состояние останова; • подав активный уровень на вход INТ при условии предварительно установленного разрешения прерывания МП начнёт машинный цикл прерывания при останове. Тактирование цикла M1 (прием первого байта команды) Такты отсчитываются по передним фронтам последовательности CLK1, а микрооперации в каждом такте определяются передним фронтом последовательности CLK2. В такте T1 на шину адреса выдается адрес – содержимое PC (для цикла «Выборка») – или содержимое регистра «Указатель адреса» (для цикла «Чтение памяти»). На шину данных выдается байт состояния (SW) и также формируется сигнал SYNC. Тактирование цикла M1 (прием первого байта команды) С начала второго такта T2 МП формирует сигнал SYNC для стробирования приема байта состояния PSW в системный контроллер. Затем, по фронту CLK2, МП выдает сигнал DBIN. А системный контроллер, дешифрировав байт PSW, установит активный уровень сигнала MRD (строб чтение памяти). Этот сигнал инициирует адресованную ячейку к выдаче на шину данных своего содержимого. Интервал времени между моментом появления MRD и установкой данных чтения зависит от быстродействия памяти. С помощью соответствующей логики формирования сигнала READY, можно обеспечить снятие сигнала REАDY на период указанного временного интервала (подстроится под медленнодействующую память). Снятие сигнала READY приводит к переводу МП в состояние ожидания. Тактирование цикла M1 (прием первого байта команды) Если быстродействие памяти ниже быстродействия МП, то после второго такта, будут выполнятся такты ожидания до восстановления READY. Если быстродействие памяти не ниже чем у МП, то без ожидания сразу после второго такта последует третий. Третий такт Т3 начинается, когда читаемые данные установлены и сигнал READY равен 1. В этом такте МП примет данные с шины DO..7 и отправит их в регистр команд. Затем снимет свой сигнал DBIN со входа СК, а последний в ответ снимет свой сигнал MRD с линии управления шины. В четвёртом такте Т4 МП снимает адрес команды с шины адреса. Её состояние становится неопределённым. Машинный цикл «Чтение памяти» Чтение памяти В этом машинном цикле МП выполняет чтение из памяти байта, не являющегося первым байтом команды, т. е. этот байт может быть: • вторым или третьим байтом команды (например, при чтении команд LXI B,0150; STA 8015 и т. п.); • байтом данных, читаемым при выполнении команды (например, команда LDAX D). В машинном цикле «Чтение памяти» по сравнению с циклом М1 отсутствует четвёртый такт и возникает неопределённое состояния шины адреса. Следующим тактом после третьего адрес сразу обновляется адресом актуальным в новом машинном цикле, поскольку это и есть начало нового машинного цикла. Машинный цикл «Чтение стека» Чтение стека В этом машинном цикле МП выполняет чтение памяти, адрес которой содержится в регистре SP. Временные диаграммы не отличаются от диаграмм цикла чтения памяти. Считанный из стека байт МП помещает, в зависимости от выполняемой команды: • в рабочий регистр (команды POP В); • в регистр АЛУ (команда POP PSW); • в программный счётчик (команда RET).