Над содержимым этих регистров могут выполняться операции инкремента (увеличение на 1), декремента (уменьшение на 1), сложения, сравнения и некоторые другие.
Шина адреса блока используется для адресации внешней памяти и внешних устройств.
Блок регистров является внутренней памятью МП небольшой ёмкости, но, по сравнению с внешней оперативной памятью, более высокого быстро действия.
Регистры этого блока являются многофункциональными и могут использоваться в качестве накопительных, индексных, указателей стека, как буферные для хранения обрабатываемой информации, для автоинкрементной и автодекрементной адресации.
Поэтому блок регистров называется регистрами общего назначения (РОН).
РОН программно доступны, т.е. их адреса явно указываются в кодах команд.
Блок системной магистрали связывает внутреннюю магистраль с внешней шиной данных, управляет буферами данных или усилителями приёма и выдачи информации на совмещённые выводы адресов и данных.
По шине данных передаются числа и команды, с которыми работает МП.
Интерфейсный блок объединяет управляющие сигналы и осуществляет управление обменом информацией между МП и устройствами, расположенными на системной магистрали.
Кроме того, этот блок осуществляет арбитраж при операциях прямого доступа в память, а также приём и предварительную обработку запросов на прерывание.
Рассмотренная совокупность блоков может размещаться на одном кристалле СБИС – тогда говорят об однокристальных МП. Эти приборы в наибольшей мере воплощают достоинства МП, используют самые современные технологии и архитектуру, обеспечивают чрезвычайно широкие функциональные возможности и высокое быстродействие.
|
Однако если требования задачи хотя бы незначительно превосходят их возможности, эффективность применения однокристальных МП резко снижается.
Отдельные блоки МП могут быть размещены на разных БИС, что соответствует секционным МП, на основе которых строятся специализированные вычислители.
8. ЭЛЕМЕНТЫАРХИТЕКТУРЫМП.
Однокристальные микропроцессоры по быстродействию и возможностям системы команд приближаются к процессорам ЭВМ. Поэтому дальнейший материал применим как к тем, так и к другим приборам.
Под архитектурой МП принято понимать совокупность представлений о составе его компонентов, организации обмена информацией внутри МП и с внешней средой, а также о функциональных возможностях, реализуемых посредством системы команд.
Выделим следующие элементы архитектуры МП:
-типы обрабатываемых данных (целое двоичное число, число с плавающей точкой, десятичное число и т.д.) и способы их представления в МП (изложены в первой части курса);
-структуры команд;
-способы адресации информации;
-системы прерывания;
-рабочий цикл процессора;
-конвейеризация обработки команд и данных.
8.1. Структура команд.
Обработка информации и функционирование МП обеспечиваются с помощью программного управления. Программа записывается во внешнем ОЗУ в виде последовательности команд.
Команда представляет собой код, определяющий вид операции, адреса операндов, адрес размещения результата операции и адрес расположения следующей команды.
По функциональному назначению различаются команды передачи данных, обработки данных, передачи управления и дополнительные команды.
|
Команды передачи данных включают в себя команды передачи кодов между регистрами МП, между МП и внешней памятью, между МП и внешними устройствами.
Команды обработки данных подразделяются на арифметические, логические и команды сдвига.
Команды передачи управления используются для изменения естественного порядка следования команд (условные и безусловные переходы) и организации циклических участков в программах.
Дополнительные команды предназначены для задания останова программы, начальной установки аппаратных средств, реализации ожидания.
В общем случае команда состоит из операционной и адресной частей:
Операционная часть содержит код операции
(КОП), который задаёт вид операции (сложение, ум-
ножение, передача и т.д.).
Адресная часть содержит информацию об адресах операндов и результата операции, а в некоторых случаях информацию об адресе следующей команды.
Структура команды определяется составом, назначением и расположением полей в команде.
Форматом команды называют её структуру с разметкой номеров разрядов (бит), определяющих границы полей команды, или с указанием числа бит в каждом поле.
Гибкость МП и его эффективность определяются системой команд, средствами и способами адресации. С увеличением разрядности команды растут и возможности МП.
Вместе с тем для упрощения аппаратной части и повышения быстродействия формат команды должен быть как можно короче.
Поэтому проблема выбора формата команд и кодирование полей команд МП имеет особое значение.
|
Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна содержать поле кода операции и четыре адреса:
Первые два адреса указывают ячейки памяти, содер-
жащие операнды, третий адрес – ячейку памяти, в которую помещается результат операции, и четвёртый адрес – ячейку памяти, содержащую следующую команду.
Такой порядок выборки команд называется принудительным.
Четырёхадресный формат команды неэффективен и в настоящее время не применяется.
Можно установить, что после выполнения данной команды, расположенной по адресу К и занимающей L ячеек памяти, выполняется команда из (К+L)-й ячейки.
Такой порядок выборки команд называется естественным. Он нарушается только специальными командами.
В этом случае отпадает необходимость указывать в явной форме адрес сле-дующей команды. В результате приходим к трёхадресной команде.
Можно условиться, что результат операции всегда помещается на месте одного из операндов, например, первого. В итоге получаем двухадресную команду:
Операция, описываемая двухадресной командой, символи-
чески может быть представлена в виде:
ОП[A1]:= ОП[A1]*ОП[A2],
где знак * обозначает символ операции (+, - и т.п.).
Запись читается так: в ячейку оперативной памяти с номером А1 помещается результат операции над числами, размещёнными в оперативной памяти по адресам А1 и А2.
Таким образом, в этом случае для результата операции используется подразумеваемый адрес.
В одноадресной команде подразумеваемые адреса имеют и результат операции и один из операндов.
Предполагается, что явно не адресуемый операнд всегда находится в аккумуляторе. Туда же записывается и результат операции.
Символическая запись соответствующей операции имеет вид:
Ак:= Ак*ОП[A].
Наконец, в некоторых случаях (например, при работе со стековой памятью) возможно использование безадресных команд.
В таких случаях подразумеваются адреса обоих операндов и результата операции.
В современных МП применяют, как правило, двух- и одноадресные команды. Обусловлено это следующими причинами:
1) необходимость иметь большее число разрядов для представления адресов и кода операции приводит к недопустимо большой длине трёхадресной команды;
2) часто в качестве операндов используются результаты предыдущих операций, хранимых в регистрах МП. В этом случае трёхадресный формат используется неэффективно.
При ограниченной разрядности команд практически невозможно кодировать большое число различных операций и одновременно иметь гибкую форму адресации операндов.
Это противоречие преодолевается расширением кодов операций в команде.
Так, для задания небольшой группы основных операций (арифметических и т.п.) используется короткий код операции, а получаемая при этом сравнительно большая адресная часть команды позволяет реализовать гибкую адресацию (например, двухадресную с многими модификациями).
Для задания других операций используются более длинные (расширяемые) коды операций, при этом сокращаемая адресная часть оставляет возможность лишь для более простой адресации операндов (например, одноадресной).
В пределе расширяемый код операций занимает весь формат команды (безадресная команда).
Приведённые структуры команд достаточно схематичны. В действительности адресные полякоманд большей частью содержат не сами адреса, а только информацию, позволяющую определить действительные (исполнительные) адреса операндов в соответствии с используемыми в командах способами адресации.
8.2. Способы адресации, основанные на прямом использовании
кода команды.
Следует различать понятия адресный код и исполнительный адрес.
Адресный кодАК – это информация об адресе операнда, содержащаяся в команде.
Исполнительный адрес АИ – это номер ячейки памяти, к которой производится фактическое обращение.
Адресный код, как правило, не совпадает с исполнительным адресом.
Способы, в которых исполнительный адрес определяется значением адресного кода команды, включают непосредственную, прямую, укороченную, регистровую, косвенную, автоинкрементную и автодекрементную адресации.
При непосредственной адресации в команде содержится не адрес операнда, а непосредственно сам операнд.
В этом случае не требуется ячейки памяти для хранения операнда, а значит не требуется и обращения к памяти для его выборки. В результате уменьшается время выполнения программы и занимаемого ею объёма памяти.
Непосредственная адресация удобна при работе с различного рода константами.
При прямой адресации исполнительный адрес совпадает с кодом адреса команды.
Укороченная адресация используется для уменьшения длины кода команды.
Суть способа сводится к тому, что в команде задаются только младшие разряды адресов, а старшие подразумеваются нулевыми.
Такая адресация позволяет использовать только небольшую группу фиксированных ячеек с короткими адресами и поэтому может применяться лишь совместно с другими способами адресации.
Косвенная адресация используется для преодоления ограничений короткого формата команды.
Адресный код команды указывает адрес ячейки памяти, в которой находится адрес операнда или команды.
Таким образом, косвенная адресация может быть иначе определена как "адресация адреса".
Данный вид адресации указывается либо кодом операции команды, либо её специальным разрядом – указателем адресации (УА).
В УА цифра 0 означает, что адресная часть команды является прямым адресом, а цифра 1 – косвенным адресом.
Иногда используется многоступенчатая косвенная адресация. В этом случае УА содержится и в ячейках памяти.
Адреса последовательно выбираются из памяти до тех пор, пока не будет найдена ячейка, в которой УА определит прямую адресацию. Адрес из этой последней ячейки и является искомым исполнительным адресом.
В МП широко применяется совместное использование регистровой и косвенной адресаций.
Пусть, например, необходимо передать число 4527 из Рг5 РОНа МП в оперативную память по адресу 1765.
Длина адресных полей достаточна лишь для указания коротких номеров регистров, т.е. не поз-воляет задать в команде полный адрес ячейки памяти. Поэтому операнд 4527 указывается регистровой прямой адресацией (УА=0), а для задания адреса 1765 приходится воспользоваться регистровой косвенной адресацией (УА=1), указывая номер регистра (здесь Рг3), предварительно загруженного полным адресом ячейки.
При автоинкрементной адресации в качестве исполнительного адреса используется содержимое регистра, указанного в команде. Затем содержимое этого регистра увеличивается на некоторую константу. Полученное число является новым исполнительным адресом и т.д.
При автодекрементной адресации содержимое указанного в команде регистра сначала уменьшается на некоторую константу. Полученный результат используется как исполнительный адрес.
8.3. Способы адресации, основанные на преобразовании кода команды.
Способы, в которых исполнительный адрес определяется адресным кодом команды и содержимым регистров МП, включают относительную и индексную адресации.
При относительной адресации (базировании) исполнительный адрес определяется суммой адресного кода команды и некоторого числа, называемого базовым адресом.
Базовые адреса хранятся в отведённых для этой цели регистрах, а в команде выделяется поле для указания номеров этих регистров.
Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти.
Для этого число разрядов в базовом адресе выбирают таким, чтобы можно было адресовать любую ячейку оперативной памяти, а адресный код самой команды используют для представления лишь сравнительно короткого "смещения" (обозначают буквой D):
Смещение D определяет положение операнда относительно начала массива данных, задаваемого базовым адресом.
Поскольку суммирование связано с потерей времени, то
для формирования исполнительного адреса используют так-
же метод совмещения.
В этом случае базовый адрес содержит старшие, а смеще-ние – младшие разряды исполнительного адреса, которые объединяются в регистре адреса.
Однако при совмещении базовый адрес может задавать не любую ячейку, а только те, адреса которых содержат нули в младших разрядах, соответству-ющих смещению.
Относительная адресация обеспечивает так называемую перемещаемость программ, т.е. возможность передвижения программ в памяти без изменений внутри самой программы.
Развитием метода базирования является индексация.
Механизм индексации обеспечивает автоматическую модификацию адресных частей команд и используется для управления циклическими вычислительными процессами.
В данном случае модификация заключается в изменении адресных частей соответствующих команд согласно расположению в оперативной памяти обрабатываемых операндов.
Для выполнения индексации используются так называемые индексные регистры, ав формате команды выделяется поле для указания номера индексного регистра.
Наименование индексных регистров связано с тем, что первоначально они предназначались для хранения индекса текущего элемента массива ai. Хотя назначение индексных регистров значительно расширилось, термин сохранился.
Исполнительный адрес формируется путём сложения адресного кода команды (смещения) с содержимым индексного регистра (индексом), а при наличии базирования – и с базовым адресом.
Отличительной чертой индексации является то, что код команды, хранящейся в оперативной памяти, остаётся неизменным. Следовательно, одна и та же команда может использоваться при соответствующих изменениях индекса для формирования различных исполнительных адресов.
Для управления индексацией используются команды, задающие операции над содержимым индексных регистров.
Можно выделить следующие основные виды индексных операций: а)засылка в соответствующий индексный регистр начального значения индекса; б) изменение индекса и в)проверка окончания циклических вычислений.
Изменение индекса состоит в сложении или вычитаниизначения индекса с фиксированным приращением.
Соответствующаякоманда указывает номер индексного регистра, а также значение и знак (или адрес) приращения.
Для проверки выхода из цикла используются или обычная команда условного перехода, или специальные команды "условный переход по счётчику" и "условный переход по индексу".
Счётчиком обычно служит один из регистров общего назначения, в который перед началом цикла загружается число повторений цикла.
Команда " условный переход по счётчику" может иметь, например, следующий вид:
Эта команда уменьшает на 1содержимое счётчика (здесь регистра с номером R1), и если оно после этого не равно 0, то управление передаётся по адресу, определяемому суммой содержимого регистров Х2 и В2 с содержимым поля D2. В противном случае выход из цикла.
Команда "условный переход по индексу" имеет, например, вид:
Здесь R1 – номер индексного регистра; R3 – номер регистра, хранящего приращение; сумма содержимого регистра В2 с содержимым поля D2 определяет адрес начала цикла; в регистре с номером R3+1 хранится предельное значение индекса.
Команда производит суммирование содержимого регистров R1 и R3. Если новое значение индекса меньше или равно предельному, то это новое значение помещается в регистр R1 и происходит переход к началу цикла (повторение цикла). В противном случае выход из цикла.
Аналогично выполняется проверка окончания цикла в случае обратного условия.
8.4. Понятие вектора состояния МП.
При выполнении микропроцессором программы после завершения каждой МК, а тем более команды, изменяется содержимое регистров, счётчиков, состояния отдельных управляющих триггеров.
Можно говорить, что изменяется состояние МП или, употребляя другую терминологию, состояние программы.
Информация о состоянии МП лежит в основе многих процедур управления вычислительным процессом, например при анализе ситуаций в случаях отказов и сбоев, при возобновлении выполнения программы после перерывов, для фиксации состояния процессора в момент перехода от обработки данной программы к другой и т.п.
Состоянием микропроцессора после данного такта или после выполнения данной команды следует считать совокупность состояний в соответствующий момент времени всех его запоминающих элементов.
Однако не вся эта информация исчезает или искажается при переходе к очередной команде либо другой программе. Поэтому из всего многообразия информации о состоянии МП отбираются наиболее существенные её элементы.
Совокупность значений элементов информации о состоянии МП, как правило, подверженные изменениям при переходе к другой команде или программе, называется вектором состояния микропроцессора.
Вектор состояния в каждый момент времени должен содержать информацию, достаточную для продолжения выполнения программы или её повторного пуска.
При этом предполагается, что остальная информация, характеризующая состояние МП, или сохраняется, или может быть восстановлена программным путём по копии, сохранённой в памяти.
Вектор состояния формируется в соответствующем регистре или регистрах микропроцессора.
В наиболее простом виде вектор состояния включает в себя содержимое счётчика команд (адрес очередной команды), содержимое регистров признаков и содержимое аккумулятора АЛУ.
8.5. Понятие системы прерывания программ.
Процесс прерывания программы заключается в прерывании обработки текущей программы и переходе к выполнению некоторой другой программы. По завершении этой программы МП возвращается к выполнению прерванной программы.
Возможность прерывания программ – важное архитектурное свойство. Оно позволяет организовать обслуживание одним микропроцессором нескольких процессов, протекающих во времени параллельно (одновременно).
Сигналы, сопровождающие события, требующие прерывания текущей программы, называются запросами прерывания.
Программа, затребованная запросом прерывания, называется прерывающей программой.
Совокупность аппаратурных и программных средств, обеспечивающих реализацию прерывания программ, называется системой прерывания программ или контроллером прерывания.
Процесс прерывания реализуется в следующем порядке. По запросу прерывания, поступающего от периферийного (внешнего) устройства, МП заканчивает выполнение текущей МК или команды.
После этого система прерывания загружает текущий вектор состояния МП во внешнюю память (в частности, в стек).
Затем в регистры МП загружается вектор прерывания, соответствующий периферийному устройству, которое требует прерывания.
Вектором прерывания называется вектор начального состояния прерывающей программы. Он содержит всю необходимую информацию для перехода к прерывающей программе, в том числе её начальный адрес.
Структура вектора прерывания аналогична структуре вектора состояния процессора.
Векторы прерывания обычно находятся в специально выделенных фиксированных ячейках внешней памяти.
После обработки прерывания система прерывания возвращает в соответствующие регистры МП сохранённый вектор состояния и процесс обработки прерванной программы возобновляется.
Таким образом, основными функциями системы прерывания являются:
-запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе;
-восстановление состояния прерванной программы и возврат к ней.
Помимо основных функций система прерывания выполняет ещё одну – выделение из выставленных запросов такого, который имеет наибольший приоритет.
Различают абсолютный и относительный приоритеты.
Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы. Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.
Следует отметить, что если наиболее приоритетный из выставленных запросов не превосходит по уровню приоритета выполняемой программы, то запрос прерывания игнорируется или его обслуживание откладывается до завершения выполнения текущей программы.
8.6. Характеристики системы прерывания.
Для оценки эффективности систем прерывания могут быть использованы следующие характеристики.
Общее число запросов прерывания определяется числом входов в систему прерывания.
Для пояснения последующих временных характеристик приведём упрощённую временную диаграмму процесса прерывания в предположении, что управление запоминанием вектора состояния МП и его возвратом возложено на саму программу.
В это случае она состоит из трёх частей, первая и третья из которых (подготовительная и заключительная) обеспечивают переключение программ, а вторая часть является собственно прерывающей программой.
Время реакции tР – это интервал времени между появлением запроса прерывания и началом выполнения прерывающей программы.
Поскольку прерывание допускается после окончания текущей МК или команды, то время реакции определяется в основном длительностью выполнения МК или команды, соответственно.
Для одного и того же запроса задержки в исполнении прерывающей программы зависят от числа прерывающих программ, имеющих старший приоритет. Поэтому время реакции определяют для запроса с наивысшим приоритетом.
Затраты времени на переключение программ (издержки прерывания) равны суммарному расходу времени на запоминание tЗ и восстановление tВ вектора состояния процессора: tИЗД = tЗ + tВ.
Глубина прерывания определяется максимальным числом программ, которые могут прерывать друг друга.
Глубина прерывания равна 1, если после перехода к прерывающей программе и вплоть до её окончания приём других запросов запрещается.
Очерёдность выполнения программ для этого случая можно представить в виде следующей диаграммы (а):
Глубина прерывания равна n, если
допускается последовательное преры-
вание до n программ.
Так, диаграмма очерёдности выполне-
ния программ при глубине 3 будет
иметь вид (б):
Если запрос окажется не обслуженным к моменту прихода нового запроса от того же источника, то возникнет так называемое насыщение системы прерывания.
В этом случае предыдущий запрос прерывания от данного источника будет утрачен, что недопустимо. Поэтому быстродействие МП, характеристики системы прерывания и частота возникновения запросов должны быть согласованы таким образом, чтобы насыщение было невозможным.