Микропроцессор представляет собой полупроводниковый прибор, состоящий из одной или нескольких программно-управляемых БИС и выполняющий функции автоматической обработки цифровой информации. Под архитектурой микропроцессора понимают принцип его внутренней организации, которая обуславливается конкретной внутренней логической структурой, совокупностью команд и взаимодействием элементов структуры.
Определяя понятие микропроцессора в целом, необходимо представлять, что в его состав входит, прежде всего, арифметико-логическое устройство (АЛУ) – блок, выполняющий действия над информацией представленной в двоичном коде. Перестройка АЛУ с выполнения одной операции на другую осуществляется за счет структурной перестройки его внутренних элементов. Перестройка осуществляется под действием последовательности управляющих кодов – программы. Для более эффективной организации вычислительного процесса в состав структуры микропроцессора обязательно включают несколько регистров, которые используют как своеобразное внутреннее ОЗУ для хранения операндов и промежуточных результатов вычислений. За последовательностью выполнения всех действий в микропроцессоре – считыванием команд, отдельных операций в рамках выполнения каждой команды следит устройство управления. Прием или передача информации извне (команд или данных) осуществляется по специальным линиям, называемых шинами. Такое представление о микропроцессоре (см. рис.14) является предельно упрощенным, но раскрывает общий подход к его построению.
Р и с. 14. Обобщенная структура микропроцессора
Однако такого представления для детального понимания работы самого микропроцессора и тем более ЭВМ, созданной на его основе, недостаточно. Рассмотрим состав и назначение его узлов более детально (рис.15).
Арифметико-логическое устройство (АЛУ), служащее ядром микропроцессора, как правило, состоит из двоичного сумматора со схемами ускоренного переноса, сдвигающего регистра и регистров для временного хранения операндов. Обычно это устройство выполняет по командам несколько простейших операций: сложение, вычитание, сдвиг, пересылку, логическое сложение (ИЛИ), логическое умножение (И) и т. д.
Так как появились новые понятия – регистр и операнд, то поясним их, прежде чем описывать другие узлы микропроцессора.
Р и с. 15. Внутренняя структура микропроцессора
Регистром называется электронная схема для временного хранения двоичной информации (машинного слова). Ее строят на триггерах, общее число которых определяет разрядность регистра. Каждый триггер регистра используется для ввода, хранения и вывода одного разряда (1 или 0) двоичного числа. Разрядность регистра соответствует длине хранимого в нем слова.
Операндом называют число или символ, участвующие в машинной операции. Так, в выражении у = а + b или w = 2k – 1 операнды – это а, b, 2, k, 1. Типичным примером операнда, используемого при процедуре обработки данных микропроцессором, служит байт.
Устройство управления «руководит» работой АЛУ и внутренних регистров в процессе выполнения команды. Согласно коду операции, содержащемуся в команде, оно формирует внутренние сигналы управления блоками микропроцессора. По сигналам УУ осуществляется выборка каждой новой, очередной команды.
Блок внутренних регистров, расширяющий возможности АЛУ, служит внутренней памятью микропроцессора и используется для временного хранения данных и команд. Он также выполняет некоторые процедуры обработки информации. Обычно этот блок содержит регистры общего назначения и специальные регистры: регистр-аккумулятор, буферный регистр адреса, буферный регистр данных, счетчик команд, регистр команд, регистры стека, регистр признаков. Кратко охарактеризуем функции всех регистров.
Регистры общего назначения (РОН), число которых может быть для различных микропроцессоров разным, в значительной мере определяют вычислительные возможности микропроцессора. Их основная функция – хранение операндов, т. е. подлежащих обработке данных. Все РОН доступны программисту, который их рассматривает как ячейки внутреннего сверхоперативного запоминающего устройства.
Регистр-аккумулятор (А), обычно называемый просто аккумулятором (встречается также название накопитель), предназначен для временного хранения операнда или промежуточного результата арифметических и логических операций, производимых АЛУ. При выполнении какой-либо операции с двумя операндами в этом регистре содержится один из используемых операндов, а после выполнения операции – ее результат. Разрядность регистра равна разрядности внутренней шины данных. Часто ввод и вывод всех данных в микропроцессоре производятся через аккумулятор. Встречаются микропроцессоры с двумя и более аккумуляторами, что позволяет повысить гибкость работы и эффективность решения задач.
Буферный регистр адреса – специальный регистр, служащий для приема и хранения адресной части исполняемой команды. Иначе говоря, в нем содержится до выдачи на адресную шину адрес слова, хранимого в ячейке внешней памяти. Возможное количество адресов определяется разрядностью этого регистра.
Буферный регистр данных – двунаправленный регистр, служащий для временного хранения данных, принимаемых из памяти перед выдачей их внутреннюю шину МП или выдаваемых на внешнюю шину данных для передачи в память или во внешние устройства. Также он обеспечивает нужную нагрузочную способность МП по линиям шины данных и возможность перевода их в Z-состояние.
Программный счетчик (program counter – РС)или счетчик команд – счетчик, содержащий адрес ячейки памяти, по которому помещен код операции (первый байт) выполняемой команды. Обычно команды программы находятся в последовательно расположенных ячейках памяти. Если выполнилась однобайтовая команда, то указание следующей команды достигается увеличением числа, содержащегося в счетчике команд, на единицу. Возможна ситуация, когда требуется после данной команды использовать команду, хранимую не в соседней, а в другой, скажем удаленной, ячейке памяти. Тогда по сигналу устройства управления в счетчик команд заносится адрес удаленной ячейки.
Регистр команд принимает и хранит код операции очередной команды во время ее выполнения.
Регистры стека делятся на стек и указатель стека. Название «стек» происходит от английского слова stack, что в дословном переводе означает колода, штабель. В микропроцессорах стек представляет собой набор регистров, которые используются для хранения адреса возврата при обращении к подпрограммам, для хранения адреса возврата и содержимого регистра признаков или обработке прерываний. Этот набор организован таким образом, что слово выбирается из него по принципу: «вошедший последним – выходит первым» – подобно тому, как из штабеля дров первым берут полено, положенное последним (в английском языке этот принцип определяется выражением «Last input – first output», и аббревиатура LIFO иногда встречается как название стековой памяти). При записи в стек очередного слова все находящиеся в нем слова смещаются на один регистр вниз. После выборки слова из стека оставшиеся слова сдвигаются на один регистр вверх. Стек может быть выполнен либо на внутренних регистрах микропроцессора, либо находиться во внешнем оперативном запоминающем устройстве, занимая там выделенную для него зону. В последнем случае стек получается более глубоким, емким, однако для обращения к нему необходим специальный регистр – указатель стека.
Указатель стека – регистр, служащий для хранения адреса последней занятой ячейки стека. Когда в стек записывается очередное слово, то число в указателе стека соответственно увеличивается. Извлечение слова из стека сопровождается, наоборот, уменьшением заполняющего указатель стека числа. Предусматривается возможность считывания содержимого любой ячейки стека при неизменном числе, хранимом в указателе стека.
Регистр признаков представляет набор триггеров, называемых флажками. В зависимости от результатов операций, выполняемых АЛУ, каждый триггер устанавливается в состояние 0 или 1. Флажковые биты, определяющие содержимое регистра, индицируют условные признаки: нулевого результата, знака результата, переполнения и т. п. Эта информация, характеризующая состояние процессора, важна для выбора дальнейшего пути вычислений (ветвления алгоритмов программы).
Внутренняя шина данных – служит для магистрального соединения между собой структурных элементов микропроцессора. Разрядность внутренней шины данных, т. е. количество передаваемых по ней одновременно (параллельно) битов числа, соответствует разрядности слов, которыми оперирует микропроцессор в рамках одной команды. В простейшем случае разрядность внутренней и внешней шин данных одна и та же. Следует иметь в виду, что по шине данных передаются не только обрабатываемые АЛУ слова, но и командная информация. Следовательно, недостаточно высокая разрядность шины данных может ограничить состав (сложность) команд и их число. Поэтому разрядность шины данных относят к важным характеристикам микропроцессора – она в большой мере определяет его структуру и ее возможности. Внутренняя шина данных, как и внешняя шина данных, работает в режиме двунаправленной передачи.
Зная состав и назначение структурных элементов микропроцессора, можно более детально представить общий порядок его функционирования.
Работа любого микропроцессорного устройства начинается с подачи на него напряжения питания. При подаче питания на микропроцессор формируется сигнал СБРОСА (Reset) по которому производится начальная установка его внутренних структурных элементов. Прежде всего устанавливается в нулевое значение программный счетчик, что обеспечивает выполнение программы после включения питания всегда с нулевого адреса, т. е. всегда с начала.
После окончания начальной установки микропроцессор начинает выполнение программы – команда за командой. Рассмотрим общую процедуру их выполнения структурными элементами МП.
Выполнение любой команды начинается с передачи значения программного счетчика, т. е. адреса по которому хранится эта команда, в регистр адреса. Отсюда адрес выдается на адресную шину и удерживается там все необходимое время. После установки адреса на адресной шине устройство управления перестраивает шину данных на ввод и формирует на шине управления сигнал чтения, разрешающий выдачу блоком ПЗУ на шину данных кода соответствующей команды. Код команды считывается в регистр команд, откуда поступает на дешифратор команд. Сигналы с выходов дешифратора подаются на устройство управления, которое формирует последовательность сигналов, управляющих работой узлов микропроцессора, – выполняются действия, предписываемые данной командой. Если оказывается, что выполняемая команда двух- или трехбайтная, осуществляется соответствующее увеличение содержимого программного счетчика и производится чтение следующих байтов команды.