Майк Тули - Справочное пособие по цифровой электронике
Наряду с фирмой Intel к производству микропроцессоров подключились и другие фирмы, например Motorola (микропроцессор 6800) и MOS Technology (микропроцессор 6502). В последующие годы было затрачено много усилий на переход к 16- и 32-битным микропроцессорам. Несмотря на новейшие разработки, первые образцы микропроцессоров, а также их модификации довольно широко применяются и в настоящее время. Цены на них значительно снизились, и теперь можно собрать микропроцессорную систему (состоящую из центрального процессора и ряда вспомогательных микросхем) за умеренную плату. Например, основой системы управления микроклиматом почти наверняка будет микропроцессор или однокристальный микрокомпьютер. Такая система не только выполнит все традиционные функции, но и обеспечит более сложные средства обработки данных, а также хранение их с возможностью использования в последующем и даже передаст информацию в удаленный компьютер. Сэкономленное при проектировании аппаратных средств время целесообразно посвятить программному обеспечению проекта, а последующие улучшения свести к замене программного ПЗУ.
5.1. Внутренняя архитектура
Главными внутренними элементами микропроцессора являются:
• регистры для временного хранения команд, данных и адресов;
• арифметико-логическое устройство (АЛУ), которое реализует множество арифметических и логических функций;
• схема управления, воспринимающая и генерирующая внешние управляющие сигналы (например, считывания и записи) и формирующая сигналы для синхронизации всей системы.
Конечно, внутреннее устройство (или архитектура) микропроцессоров разных семейств различно, но в них имеется и много общих элементов. Например, в основных микропроцессорных семействах заметна тенденция сохранить «совместимость вверх» в части их внутренней архитектуры и системы команд, что, безусловно, делает новые приборы более привлекательными для потребителей.
Внутренние регистры — это просто наборы триггеров-защелок (см. гл. 3), в которые при обработке помещаются двоичные данные. Некоторые из регистров доступны программисту (т. е. он может записать в них или считать их содержимое), а другие не доступны. Регистры подразделяются на специализированные (т. е. имеющие конкретное назначение, например указание ячейки памяти или хранения результата операции АЛУ) и общего назначения.
Особенно важную роль в микропроцессоре играют следующие регистры.
Программный счетчик или указатель команды. Программный счетчик PC или указатель команды IP в 8-битном микропроцессоре — это 16-битный регистр, содержащий адрес следующего командного байта. При выборке каждого командного байта производится автоматический инкремент программного счетчика.
Аккумулятор А функционирует как регистр-источник и регистр-получатель; он одновременно является и источником одного из байт данных, которые требуются для операции АЛУ, и местом, куда помещается результат операции АЛУ. Разумеется, в 8-битных микропроцессорах длина аккумулятора составляет 8 бит.
Регистр флажков F (или регистр состояния SR, регистр кода условия CCR) содержит информацию о внутреннем состоянии микропроцессора, в частности об особенностях результата последней операции АЛУ. Подчеркнем, что регистр флажков не является регистром в обычном смысле, а представляет собой просто набор триггер-защелок, состояния которых зависят от результата операции АЛУ. Можно считать, что выход каждого триггера действует как флажок. Обычно имеются флажки нуля Z, переполнения V, отрицательного результата N и переноса С.
Указатель стека. В большинстве микропроцессоров требуется доступ к такой области внешнего ЗУПВ, которая предназначена для временного хранения данных. Эта область называется стеком и занимает от 16 до 256 байт. (Заметим, однако, что стек — это динамическая структура и его размер изменяется в процессе обработки).
Стек работает по принципу «последний пришел — первый ушел» (LIFO). Данные включаются («проталкиваются») в стек, а затем извлекаются («выталкиваются») из него. Указатель стека SP следит за положением стека, т. е. содержит адрес последней использованной ячейки стека. В некоторых микропроцессорах, например в микропроцессоре 6809, имеются два независимых указателя стека — системный указатель стека SSP и пользовательский указатель стека USР.
Регистр команды непосредственно программисту недоступен. Он содержит текущий командный байт, который декодируется дешифратором команды. Выходы дешифратора команды подаются в схему управления микропроцессора, определяющую направление передач данных и реагирующую на внешние сигналы, появляющиеся на шине управления, а также выполняет другие функции.
Упрощенная внутренняя архитектура типичного 8-битного микропроцессора показана на рис. 5.1.
Рис. 5.1. Упрощенная внутренняя архитектура типичного 8-битного микропроцессора.
Отметим, что линии внешней шины управления изолированы от линий внутренней шины с помощью буферов и основные внутренние элементы связаны быстродействующей внутренней шиной данных.
5.2. Линии управления
Рассмотрим вкратце функции наиболее важных внешних линий управления, которые имеются в большинстве микропроцессоров.
Считывание/запись. На линии считывания/записи R/W¯ действует сигнал низкого уровня, когда микропроцессор выполняет операцию записи, и сигнал высокого уровня в операции считывания. В некоторых микропроцессорах, например в Z80, имеются отдельные линии считывания READ и записи WRITE.
Запрос прерывания. На входной линии запроса прерывания или внешнее устройство формирует сигнал низкого уровня, обращая «внимание» микропроцессора на этот сигнал. Если флажок прерывания сброшен (логический 0), запрос воспринимается и микропроцессор прерывает обычную обработку и переходит к выполнению нужной процедуры прерывания.
Немаскируемое прерывание. Реакция на обычный запрос прерывания ( или ) определяется флажком прерывания, поэтому прерывание может быть замаскировано. В программу вводятся команды, которые устанавливают и сбрасывают флажок прерывания и, следовательно, разрешают или запрещают прерывания. Такой способ позволяет гибко реагировать на прерывания — мы сами определяем, воспринимаются они или игнорируются. Однако в некоторых ситуациях требуется, чтобы прерывание обслуживалось независимо от текущих действий микропроцессора. Для этой цели предусмотрена отдельная линия немаскируемого прерывания . Когда на ней появляется сигнал низкого уровня, выполнение программы прерывается независимо от состояния флажка прерывания, т. е. независимо от того, разрешены прерывания или запрещены.
Сброс. Сигнал низкого уровня на входной линии сброса применяется для инициализации системы, т. е. приведения ее в известное состояние, до обычного выполнения программы. При активном сигнале сброса программный счетчик PC переводится в определенное состояние (например, в него загружается нуль или конкретный адресный вектор) и прерывания запрещаются.
Выполняются и другие внутренние операции, зависящие от типа микропроцессора.
Синхронизация. Для упорядочивания передач данных внутри микропроцессора необходимо синхронизировать их специальными сигналами. Они формируются либо внешним генератором (рис. 5.2), либо аналогичным внутренним генератором. Для поддержания точности и стабильности сигналов синхронизации обычно применяется кварцевый осциллятор; диапазон частоты синхронизации составляет от 1 до 8 МГц.
Рис. 5.2. Типичная схема синхронизации.
Такт синхронизации (Т-состояние) является в микропроцессоре основным временным интервалом. Машинный цикл (М-цикл) — это минимальная неделимая единица действий микропроцессора. Обычно он состоит из 3–5 тактов синхронизации. Командный цикл, включающий в себя выборку, дешифрование и выполнение команды, обычно требует от 1 до 5 машинных циклов.
Оценим реальные временные интервалы, о которых идет речь. Предположим, что микропроцессор Z80 работает с частотой синхронизации 4 МГц. Тогда такт синхронизации (Т-состояние) соответствует 250 нс. Продолжительность машинного цикла (М-цикла) составляет от 0,75 до 1,25 мкс, а командного цикла (в зависимости от команды) — от 1,25 до 6,25 мкс. Другими словами, микропроцессор может выполнить от 160000 до 800 000 команд в секунду!