Для чего служит регистр признаков
Флаговый регистр или регистр признаков
Запоминание результатов упомянутых проверок позволяет выполнять программы, содержащие ветвления программы, вызовы подпрограммы и возвраты из подпрограммы, содержащие переходы, т.е. позволяет осуществлять нарушения естесственной последовательности выполнения команд.
Рассмотрим некоторые наиболее часто используемые разряды регистра состояния:
При выполнении арифметических операций с числами в дополнительном коде 1 в
старшем значащем разряде показывает, что в регистре находится отрицательное число.
2.Нулевой результат (ZERO-нуль).
Разряд принимает единичное значение, если после окончания операции во всех разрядах регистра результата обнаружены 00.
Данный разряд указывает, что последняя выполненная операция сопровождалась переносом или заемом (отрицательным переносом). Значение разряда переноса устанавливается равным 1, если в результате сложения двух двоичных чисел имеет место перенос из 8-го старшего разряда переноса. Отрицательный перенос (заем) фиксируется в этом разряде при вычитании большего числа из меньшего.
Многие МП располагают дополнительными разрядами состояний: четности (паритета) или нечетности результата (PARITY – четность), дополнительного переноса (additional carry) и др.
Таким образом, каждый флаг представляет собой однобитный регистр. Считается, что флаг установлен, если бит равен логической единицы, и флаг сброшен, если бит равен логическому нулю: состояния флагов можно проверить, набрав адрес ячейки памяти 83ЕА.
S-знак (SIGN).Z- нуль (zero), Р-четность (Parity), AC-дополнительный перенос, CY-перенос Carry.
Z устанавливается в 1, если в аккумуляторе 0.
СУ устанавливается в 1,если есть перенос из 8-го разряда в 9-й.
АС устанавливается в 1,если в есть перенос из 3 в 4.
Триггеры регистра состояния нужны для организации нарушения последовательного хода выполнения программ. Такое ветвление программ осуществляется при вызове подпрограмм и возврате из подпрограмм. Если условие выполняется, то следует скачок (переход на адрес, указанный во втором байте команд.
Регистр адреса памяти.
При каждом обращении к памяти микро-ЭВМ РЕГИСТР АДРЕСА ПАМЯТИ указывает адрес ячейки памяти, которая подлежит использованию МП. Выход этого регистра называется адресной шиной и используется для выбора области памяти или порта ввода-вывода. В течение подцикла выборки команды из памяти регистр адреса памяти и счетчик команд имеют одинаковое содержимое, т.е. регистр адреса памяти указывает местоположение команды, извлекаемой из памяти. После декодирования команды счетчик команд получает приращение в отличие от регистра адреса памяти, который приращения не получает.
Счетчики МП
Счетчик команд, предназначен для хранения адреса текущей команды.
Имеет вход от любого устройства через шину данных и от счетчика команд.
Счетчик команд— это один из наиболее важных блоков МП, выполняющих специальные функции. Для конкретного выполнения поставленного алгоритма команды должны поступать в строго определенном порядке. На счетчике команд лежит ответственность следить за тем, какая команда выполняется, а какая подлежит выполнению следующей.
Счетчик команд соединен с внутренней шиной данных МП. Теоретически этот счетчик может получать данные об адресах программы из любого блока МП, подключенного к внутренней шине. Однако на практике данные об адресах обычно поступают в счетчик команд из памяти микро-ЭВМ. Когда МП начинает работать, то по команде начальной установки в счетчик команд загружается начальный адрес области памяти, заданный проектировщиком МП. Перед пуском программы необходимо поместить начальный адрес программы в область памяти, указанную проектировщиком.(например, для «Микролаб» начальный адрес- в область 8000-83С6). Когда программа начинает выполняться, первым значением содержимого счетчика команд является этот, заранее определенный адрес (например, 8000 в данном случае) памяти, содержащей первую команду программы. Этот адрес первой команды программы посылается из счетчика команд в регистр адреса памяти, после чего содержимое обоих счетчиков становится одинаковым.(назначение регистра адреса памяти описывается в дальнейшем).
Адрес первой команды программы по адресной шине подается к схемам управления памятью, в результате чего содержимое указанной области памяти считывается на шину данных (это должна быть команда), и поступает в регистр команд МП.
После извлечения команды из памяти МП автоматически дает приращение на 1 содержимому счетчика команд. Это приращение счетчик команд получает раз в тот момент, когда МП начинает выполнять команду, только что извлеченную из памяти. Следовательно, начиная с этого момента, счетчик команд «указывает», какой будет адрес следующего обращения к памяти, т.е. следующей команды на протяжении всего времени выполнения текущей команды.
Так как все команды выполняются последовательно, счетчик команд считает прямым счетом.
Нормальная последовательность выполнения команд программы и содержимое счетчика команд могут быть изменены специальными командами ветвления, вызова программ, возврата из подпрограмм или прерывания. Эти команды повлекут переход содержимого счетчика команд на другую величину, отличную от следующего старшего на 1 адреса. Чтобы вернуть программу в исходное состояние после последовательности ее запуска, оператор должен восстановить в счетчике команд номер первой команды программы.
Программный счетчик команд считает прямым счетом, устанавливается либо оператором после нажатия клавиши установки адреса, либо от кнопки сброс. Счетчик команд загружается первоначально, от пункта установки адреса.
Выполнение программы начинается с этого адреса. Счетчик команд передает адрес в регистр команды.
Содержание счетчика программного и счетчика команд одинаково до тех пор, пока код команды в регистре команд не расшифрован.
Как только это произошло, УУиС выдает сигнал на приращение счетчика команд.
Таким образом, начиная с этого момента, счетчик команд хранит адрес команды, подлежащей выполнению следующей.
Указатель стека подобен счетчику команд в том смысле, что в нем содержится адрес, который он инкрементирует или декрементирует, он может быть также загружен новым адресом.
Указатель стека— специализированный 16-разрядный регистр, содержимым которого всегда является адрес. Этот адрес принадлежит особой группе ячеек памяти данных ОЗУ, которая называется СТЕКОМ.
Когда подпрограмма будет полностью выполнена, содержимое счетчика команд должно быть восстановлено таким образом, чтобы МП мог возвратиться в соответствующее место выполняемой программы.. Эта сохранность информации обеспечивается указателем стека.
Специальный регистр- указатель стека необходим для хранения адреса последнего по времени поступления элемента стека. Указатель СТЕКА загружается старше первой ячейки памяти стэка.2209 Н. данные записываются в стек или считываются из него по определенным микропрограммам.
Стек функционирует как память с последовательным доступом по типу: данные, поступившие последними, извлекаются первыми. Извлечение данных из стека и их восстановление в регистре МП является действием, обратным операции загрузки в стек.
Большая Энциклопедия Нефти и Газа
Регистр признаков ( регистр флажков) в более ранних разработках был предназначен только для хранения признаков результата операции. Поскольку результаты всех операций, выполненных АЛУ, передаются в аккумулятор, можно сказать, что регистр признаков содержал информацию о данных, пересылаемых из АЛУ в аккумулятор. [1]
Регистр признаков ( РП) хранит признаковую часть исполняемого УСК и выдает значения признаков в блок управления каналом. [2]
Регистр признаков ( РП) предназначен, для запоминания признаков, указанных в КСК и влияющих на ход выполнения операции ввода-вывода. Информация в РП заносится с помощью микропрограммы через АЛУ во время записи КСК в регистры канала. [4]
Регистр признаков ( регистр состояния) занимает особое место, хотя он также является внутренним регистром процессора. [6]
Регистр признаков имеет девять разрядов и хранит, таким образом, девять признаков, из которых пять аналогичны соответствующим признакам, хранимым в триггерах регистра признаков микропроцессора серии КР580: признаки CF, PF, AF, ZF, SF аналогичны признакам, формируемым в микропроцессоре серии КР580 соответственно в триггерах регистра признаков Тс, Тр, TV, Tz, Ts. [8]
Регистр признаков ( регистр флажков) в более ранних разработках был предназначен только для хранения признаков результата операции. Поскольку результаты всех операций, выполненных АЛУ, передаются в аккумулятор, можно сказать, что регистр признаков содержал информацию о данных, пересылаемых из АЛУ в аккумулятор. [9]
Регистры признаков МП 80286 и МП 8086 аналогичны, но первый имеет дополнительный признак вложенности и 2-разрядный признак Уровня привилегированности ввода-вывода, которые позволяют управлять защищенными операциями ввода-вывода. [13]
Регистр признака опроса принимает коды признаков, являющиеся объектами ассоциативного поиска, преобразует их в требуемую форму, упорядочивает и генерирует управляющие сигналы, необходимые для осуществления поиска и формирования сигналов совпадения. Регистр маски используется в тех случаях, когда предусматривается ассоциативный поиск в определенных группах разрядов. [15]
Функции устройств магистрали
2.4. Функции устройств магистрали
2.4.1. Функции процессора
Кроме выводов для сигналов трех основных шин процессор всегда имеет вывод (или два вывода) для подключения внешнего тактового сигнала или кварцевого резонатора ( CLK ), так как процессор всегда представляет собой тактируемое устройство. Чем больше тактовая частота процессора, тем он быстрее работает, то есть тем быстрее выполняет команды. Впрочем, быстродействие процессора определяется не только тактовой частотой, но и особенностями его структуры. Современные процессоры выполняют большинство команд за один такт и имеют средства для параллельного выполнения нескольких команд. Тактовая частота процессора не связана прямо и жестко со скоростью обмена по магистрали, так как скорость обмена по магистрали ограничена задержками распространения сигналов и искажениями сигналов на магистрали. То есть тактовая частота процессора определяет только его внутреннее быстродействие, а не внешнее. Иногда тактовая частота процессора имеет нижний и верхний пределы. При превышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нерегулярно. Так что с изменением этой частоты надо быть очень осторожным.
Иногда у микросхемы процессора имеется еще один-два входа радиальных прерываний для обработки особых ситуаций (например, для прерывания от внешнего таймера).
Для подключения процессора к магистрали используются буферные микросхемы, обеспечивающие, если необходимо, демультиплексирование сигналов и электрическое буферирование сигналов магистрали. Иногда протоколы обмена по системной магистрали и по шинам процессора не совпадают между собой, тогда буферные микросхемы еще и согласуют эти протоколы друг с другом. Иногда в микропроцессорной системе используется несколько магистралей (системных и локальных), тогда для каждой из магистралей применяется свой буферный узел. Такая структура характерна, например, для персональных компьютеров.
Таким образом, основные функции любого процессора следующие:
Упрощенно структуру микропроцессора можно представить в следующем виде (рис. 2.17).
Основные функции показанных узлов следующие.
Схема управления выборкой команд выполняет чтение команд из памяти и их дешифрацию. В первых микропроцессорах было невозможно одновременное выполнение предыдущей команды и выборка следующей команды, так как процессор не мог совмещать эти операции. Но уже в 16-разрядных процессорах появляется так называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока выполняется предыдущая. Два процесса идут параллельно, что ускоряет работу процессора. Конвейер представляет собой небольшую внутреннюю память процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняемой. Читаются эти команды процессором в том же порядке, что и записываются в конвейер (это память типа FIFO, First In — First Out, первый вошел — первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко.
Развитием идеи конвейера стало использование внутренней кэш-памяти процессора, которая заполняется командами, пока процессор занят выполнением предыдущих команд. Чем больше объем кэш-памяти, тем меньше вероятность того, что ее содержимое придется сбросить при команде перехода. Понятно, что обрабатывать команды, находящиеся во внутренней памяти, процессор может гораздо быстрее, чем те, которые расположены во внешней памяти. В кэш-памяти могут храниться и данные, которые обрабатываются в данный момент, это также ускоряет работу. Для большего ускорения выборки команд в современных процессорах применяют совмещение выборки и дешифрации, одновременную дешифрацию нескольких команд, несколько параллельных конвейеров команд, предсказание команд переходов и некоторые другие методы.
Схема управления прямым доступом к памяти служит для временного отключения процессора от внешних шин и приостановки работы процессора на время предоставления прямого доступа запросившему его устройству.
Логика управления организует взаимодействие всех узлов процессора, перенаправляет данные, синхронизирует работу процессора с внешними сигналами, а также реализует процедуры ввода и вывода информации.
Внутренние регистры любого микропроцессора обязательно выполняют две служебные функции:
Содержимое указателя ( счетчика) команд изменяется следующим образом. В начале работы системы (при включении питания) в него заносится раз и навсегда установленное значение. Это первый адрес программы начального запуска. Затем после выборки из памяти каждой следующей команды значение указателя команд автоматически увеличивается (инкрементируется) на единицу (или на два в зависимости от формата команд и типа процессора). То есть следующая команда будет выбираться из следующего по порядку адреса памяти. При выполнении команд перехода, нарушающих последовательный перебор адресов памяти, в указатель команд принудительно записывается новое значение — новый адрес в памяти, начиная с которого адреса команд опять же будут перебираться последовательно. Такая же смена содержимого указателя команд производится при вызове подпрограммы и возврате из нее или при начале обработки прерывания и после его окончания.
О стеке будет подробнее рассказано в следующем разделе.
Регистры микропроцессоров, их виды и назначение
Общие сведения.
При составлении программ в первую очередь необходимо
знать, какие из регистров микропроцессора являются программно–доступными регистрами, в которых можно хранить подлежащие обработке данные (операнды), адреса и управляющие сигналы (команды). Совокупность программно–доступных регистров образуют регистровую модель микропроцессора. Адресация регистровой области процессора и быстрый доступ к ней обеспечивают создание эффективно исполняемых программ.
В регистровой модели современных процессоров обычно выделяют следующие группы регистров:
● регистры, используемые при выполнении прикладных программ. К ним относят:
• основные функциональные регистры (регистры общего назначения; указатель команд, или программный счетчик; сегментные регистры; регистр флагов, или слова состояния);
обработки чисел с плавающей точкой (регистры данных, тегов, состояния, управления, регистры–указатели команды и операнда);
обработки пакетов чисел с плавающей точкой (регистры пакетов данных и регистр управления–состояния);
● системные регистры (регистры управления режимом, регистры системных адресов, регистры отладки);
● служебные (модельно–специфические) регистры, которые используются в процессе отладки систем, содержат информацию о процессе выполнения программы (число декодированных команд, полученных запросов прерывания, число загрузок в кэш–память и т. п.), обеспечивают различные режимы работы кэш–памяти при обращении к определенным областям основной памяти
О неоднородности регистров.
Регистровая область памяти микропроцессора (
— регистровый сегмент) представляет собой набор неоднородных по возможности доступа и по выполняемым функциям регистров. Например, в рассмотренном выше 8–разрядном процессоре:
● регистр команд является неадресуемым регистром и предназначен только для приема первого байта (кода команды) из памяти;
● адресуемые регистры В и С могут быть использованы для хранения одного байта данных или 16–разрядного адреса (в паре);
● указатель стека, представляющий собой 16–разрядный регистр, используется для доступа к стеку путем явной и неявной (с помощью специальных команд
● программный счетчик, или указатель команд, выполняет строго определенные функции и не может быть использован для хранения 16–разрядных операндов.
Функциональная неоднородность области
процессора проявляется в специализации регистров. В зависимости от выполняемых функций можно выделить три группы регистров:
● регистры данных, используемые в операциях АЛУ в качестве источника и приемника операндов;
● адресные регистры, или указатели, предназначенные для формирования адресов данных и команд;
● специальные регистры, служащие для индикации текущего состояния процессора и управления режимами его работы.
Функциональная специализация затрудняет программирование (из–за необходимости учета организации регистров), однако позволяет создать быстро исполняемую программу с меньшим требуемым объемом памяти для ее хранения.
Регистры обозначаются латинскими буквами, используемыми для символического кодирования и отражающими назначение регистра.
Среди регистров данных важное место занимает аккумулятор А (
), который выполняет функции временного хранения исходных операндов и результатов операций арифметическо–логических устройств (АЛУ). Интенсивное использование аккумулятора и связанное с ним большинство команд арифметической и логической обработки операндов способствует снижению загруженности шины данных, упрощению адресации, повышению быстродействия процессора. В системах команд микропроцессора выделяются операции с аккумулятором. Поэтому ссылка на аккумулятор при адресации, как правило, производится неявно с помощью кода операции. Неявная адресация позволяет не указывать в командах месторасположение одного из операндов и (или) результата операции, что уменьшает длину их кода. В составе микропроцессора может быть не один, а два аккумулятора (например, в МС6809). К регистрам данных относятся явно адресуемые рабочие регистры
1, …., используемые как сверхскоростные регистровые ОЗУ.
Рабочие регистры могут использоваться в операциях совместно с аккумулятором. Некоторые из них могут совмещать функцию хранения данных с функцией адресации. Для образования полноразмерного адреса регистры данных объединяются в пары.
В процессорах, предназначенных для работы в реальном времени, могут быть предусмотрены не один, а два или даже четыре (например, в некоторых микроконтроллерах) набора рабочих регистров. Один из регистров резервируется для системных целей или обработки прерываний, а остальные — для прикладных задач пользователя. В каждый момент времени доступен только один набор рабочих регистров, выбираемый специальным указателем.
К регистрам данных также относятся рассматриваемые ниже регистры общего назначения, которые совмещают функции хранения данных и адресов.
Среди регистров, на которые возложена функция адресации, следует выделить:
), или указатель инструкций–команд (
), хранящий адрес следующей команды выполняемой программы. Его разрядность обычно соответствует числу линий адресной шины. При выполнении программы с последовательно возрастающими адресами команд содержимое
увеличивается на 1 или 2 для указания следующего байта или слова. Увеличение содержимого счетчика происходит автоматически сразу после начала выполнения команды. Изменение последовательной выборки команд из ячеек памяти осуществляется путем загрузки программного счетчика адресом требуемой ячейки. Такая ситуация возникает, например:
• при выполнении команд условных и безусловных переходов;
• при инициализации микропроцессора путем сброса;
• при обслуживании запросов на прерывание;
используемый для обращений к системному стеку. Стек представляет собой область памяти, предназначенную для хранения адресов возврата и состояний процессора (содержимого регистров) при вызове подпрограмм и обслуживании прерываний. Доступ к стеку организован по принципу «последним пришел — первым ушел» (
т. е. в него можно только последовательно добавлять (вталкивать) или извлекать (выталкивать) элементы данных. Типовой стек, применяемый в большинстве процессоров, заполняется в сторону уменьшения адресов.
всегда показывает на последнюю заполненную ячейку, называемую вершиной стека (
Поэтому при операции записи (
) в стек элемента данных сначала содержимое указателя
уменьшается на 1 или 2 в зависимости от длины элемента (байт, два байта), формируя адрес ячейки, в которую затем помещается элемент. При операции считывания (
) сначала элемент данных извлекается из стека, после чего содержимое указателя
увеличивается на 1 или 2.
Принцип взаимодействия указателя
со стеком проиллюстрирован на примере записи в стек и считывания из него четырех однобайтных элементов (рис. 2.4.1, а).
При операциях со стеком значение указателя
непрерывно меняется, поэтому применять его в качестве точки отсчета при доступе к хранящимся в стеке данным вызывает определенные трудности. Поэтому в ряде случаев, например, при хранении в стеке локальных переменных или при обмене параметрами между вызываемой и вызывающей процедурой (подпрограммой), используется указатель кадра (
) — специально зарезервированный адресный регистр. Регистр
, указывающий на начало области параметров в стеке (рис. 2.4.1, б), принадлежит к классу базовых регистров. В 16–разрядных процессорах указателем кадра служит индексный регистр ВХ;
регистры, предназначенные для хранения адресов обращения к основной памяти. Такие регистры, называемые указательными или индексными, позволяют сократить размер кода (программы). К ним следует отнести:
• регистры косвенного адреса (
), содержащие непосредственно адрес операнда;
), хранящие начальные (базовые) адреса массивов и записей;
• индексные регистры I или X (
), содержимое которых является относительным (смещенным) адресом операнда;
• регистры автоинкрементной и автодекрементной адресации, автоматически увеличивающие или уменьшающие свое содержимое после выполнения операции;
• регистры расширения адресного пространства (до 1М байт).
К специальным регистрам следует отнести регистр флагов (
), или регистр слова состояния программы (
а также ряд регистров, используемых в сопроцессорах и микроконтроллерах.
На регистр флагов возлагается функция хранения признаков. С каждым признаком связывается одноразрядная переменная (бит), называемая флагом (флажком). Регистр флагов содержит:
● биты признаков состояния процессора. Обычно эти признаки формируются в АЛУ после выполнения операции и характеризуют ее результат;
● биты управления и системных признаков, которые устанавливаются операционной системой (некоторые пользователем) и задают режим процессора при организации ввода–вывода данных, обслуживании прерываний и исключений, решении последовательности вызываемых задач и реализации ряда других процедур.
Упаковка всех флагов в одно слово и хранение в регистре дает возможность их быстрой пересылки в память с последующим восстановлением, например, при обслуживании запросов на прерывание.
Ниже приведены обозначение, название и назначение флагов признаков состояния, а также показан принцип формирования некоторых флагов из отдельных бит
–разрядных операндов вида
, которые могут быть как исходным операндом, так и результатом выполненной операции: