Перейти к содержимому

Как называется главный регистр микропроцессора

  • автор:

Как называется главный регистр микропроцессора

Процессор Intel 8086. Учебный курс.

Введение в архитектуру микропроцессора.

Схема образования адреса в процессоре.
Чтобы обеспечить гибкую базовую адресацию и индексирование, адрес данных формируют путем сложения содержимого регистров BX или BP, содержимого регистров SI или DI и смещения. Результат вычислений называют эффективным адресом.

Так как регистры, участвующие в формировании адреса имеют длину всего 16 бит, поэтому и эффективный адрес имеет такую же длину. Но с другой стороны, выдаваемый на шину адреса физический адрес должен содержать 20 бит. Дополнительные 4 бита образуются при сложении содержимого регистров.

Сегментация памяти в процессоре.
В микропроцессоре Intel 8086 память разбивается на сетменты:
CS — сегмент кода,
DS — сегмент данных,
SS — сегмент стека,
ES — дополнительный сегмент.

Сегменты в памяти могут располагаться как последовательно, так и налагаясь друг на друга. Поскольку при формировании эффективного адреса содержимое сегментного регистра сдвигается на 4 бита, сегмент всегда начинается с адреса, кратного 16, т.е. на границе 16-байтового блока памяти (параграфа). Размер сегмента должен находиться в пределах 0 байт — 64 Кбайт (допустимы и иногда используются сегменты нулевой длины).

Структура микропроцессора.

Отличительной особенностью архитектуры процессора Intel 8086 является наличие двух основных асинхронно работающих устройств:

Устройство обработки состоит из:
Арифметико-логического устройства (ALU) с тремя регистрами временного хранения операндов (RGB) и регистром признаков (RS);
группы регистров общего назначения (R0 — R7);
микропрограммного устройства управления (MCU) для управления выполнением команд.

Устройство сопряжения канала состоит из:
сумматора адреса (Sm), служащего для вычисления 20-разрядного физического адреса;
указателя команд (IP), выполняющего функции программного счетчика;
сегментных регистров (RGS), содержащих базовые адреса программ, данных и стека;
регистров очереди команд (RI), предназначенных для формирования шестибайтовой очереди команд готовых к исполнению.

Процессор Intel 8086 содержит двенадцать 16-разрядных программно-адресуемых регистров, которые принято объединять в три группы: регистры данных, регистры-указатели и сегментные регистры. Кроме того, в состав процессора входят счетчик команд и регистр флагов.
В группу регистров данных включаются следующие регистры:
AX — аккумулятор;
BX — базовый регистр;
CX — регистр счетчика;
DX — регистр данных.
Каждый из этих регистров состоит из двух 8-разрядных частей, которые могут хранить данные независимо друг от друга.
В группу регистров-указателей (индексных регистров) входят:
SI — индекс источника;
DI — индекс приемника;
BP — указатель базы;
SP — указатель стека.
Группа сегментных регистров включает в себя:
SS — сегмент стека;
DS — сегмент данных;
ES — дополнительный сегмент;
CS — сегмент кода.
К прочим регистрам можно отнести регистр адреса команд (IP) и регистр флагов (или регистр признаков).

Регистр признаков содержит 16 бит, но семь из них не используются.
Флаги i8086 разделяются на условные, отражающие результат предыдущей операции ALU, и управляющие, от которых зависит выполнение специальных функций. Ниже приведено описание флагов регистра признаков:
0. CF (бит 0) — перенос;
1. PF (бит 2) — четность;
2. AF (бит 4) — вспомогательный перенос;
3. ZF (бит 6) — ноль;
4. SF (бит 7) — знак;
5. TF (бит 8) — пошаговый режим;
6. IF (бит 9) — разрешение прерываний;
7. DF (бит 10) — направление;
8. OF (бит 11) — переполнение.
Флаги TF, IF, DF относятся к управляющим флагам, остальные — к условным (флагам состояния).

Как называется главный регистр микропроцессора

Микропроцессор Intel 80386 cостоит из центрального процессора, блока управления памятью и шины интерфейса:

  1. РЕЖИМ РЕАЛЬНОЙ АДРЕСАЦИИ
  2. РЕЖИМ ЗАЩИЩЕННОЙ ВИРТУАЛЬНОЙ АДРЕСАЦИИ

В реальном режиме 80386 работает как очень быстрый 8086, но с 32-х разрядным расширением. Реальный режим также используется для подготовки микропроцессора к работе в защищенном режиме.
Виртуальный режим обеспечивает доступ к очень сложному способу управления памятью, подкачку (замещение) страниц и другие возможности микропроцессора.
В виртуальном режиме программное обеспечение 80386 может решать задачи по степени сложности такие же, как у 8086 и 80286 в режиме виртуальной памяти. Это позволяет выполнять програмное обеспечение 8086.
Виртуальные задачи 80386 могут защищаться одна от другой и главной ОС 80386 путем использования замещения страниц и эмуляции команд ввода-вывода.
Для совмещения компьютера с высокоэффективными системами интерфейс шины 80386 имеет конвеерную обработку данных, динамическое резервирование шины данных и прямые сигналы BYTE ENABLE.

  1. РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ
  2. РЕГИСТРЫ СЕГМЕНТАЦИИ
  3. РЕГИСТР ФЛАГОВ
  4. РЕГИСТРЫ УПРАВЛЕНИЯ
  5. РЕГИСТРЫ СИСТЕМНОГО АДРЕСА
  6. РЕГИСТР ТЕСТОВ
  7. РЕГИСТР ОТЛАДКИ

Эти регистры являются также набором 8086, 80286, поэтому все 16-и разрядные регистры всех процессоров более ранних выпусков «покрываются» 32-х разрядными регистрами 80386.

На рисунке представлены все регистры базовой архитектуры микропроцессора, которые включают: регистры общего адреса и данных, указатель команд, регистр флагов. Данные регистры при включении новой задачи загружаются новым содержимым.
Базовая архитектура содержит 6 прямо доступных сегмента, каждый размером до 4 гигабайт. Сегменты указываются значениями селектора, помещенными в регистр сегмента.
Селекторы автоматически загружаются при операции включения задач.
Другой тип регистров — это регистры управления, системного адреса, отладки и тестов. Они используются для отладки операционных систем.

РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ.
Микропроцессор имеет 8 32-х разрядных регистров общего назначения. Они поддерживают 16, 32-х разрядные адресные операнды, 1, 8, 16, 32, 64 операнды данных и битовые поля от 1 до 32 битов. Они называются: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
Младшие 16 разрядов каждого регистра могут использоваться по отдельности, они называются: AX, BX, CX, DX, SI, DI, BP, SP.
Также могут индивидуально использоваться младший (0-7) и старший (8-15) байты регистров общего назначения AX, BX, CX, DX, соответственно их называют: AL, BL, CL, DL и AH, BH, CH, DH.
Индивидуальная доступность байтов регистров общего назначения обеспечивает дополнительную гибкость для операций с данными, но не используется при адресации.

УКАЗАТЕЛЬ КОМАНД (IP).
Регистр указателя команд представляет собой 32-х разрядный регистр, который называют EIP. Он содержит смещение следующей команды, которую нужно выполнить. Смещение всегда определяется относительно сегмента кода. Его младшие 16 бит называются IP и используются при шестнадцатиразрядной адресации.
РЕГИСТР ФЛАГОВ.
Регистр флагов является 32-х разрядным и называется EFLAGS. Определенные биты EFLAGS, как показанно на рисунке (ниже), управляют некоторыми операциями и подчеркивают статус 80386. Младшие 16 разрядов EFLAGS представляют собой регистр FLAGS, который может использоваться при выполнении операций с 8086.

Наилучший способ изучения регистра флагов — описание его побитно. Структура регистра флагов показана на рисунке. Заметим, что на рисунке не определяется каждый бит. Неопределенные биты являются зарезервированными, т.е. в 80386 они не имеют значения, однако могут быть использованы для специальных целей в последующих версиях микропроцессора.
Все флаги младшего байта регистра устанавливаются арифметическими или логическими операциями процессора. За исключением флага переполнения, все флаги старшего байта младшего слова отражают состояние микропроцессора и влияют на характер выполнения программ.
Флаг знака SF показывает, положительным или отрицательным был результат последней арифметической или логической операции.
Флаг нуля ZF показывает что результат последней операции был равен нулю.
Флаг четности PF показывает, четно или нечетно число единиц результата. Он устанавливается в 1 если результат операции имеет четное число единиц, иначе — в 0.
Флаг четности СF используется при вычислениях повышенной точности, логических операциях и других командах. Он показывает, был ли перенос из старшего разряда операнда или нет. И, соответственно, устанавливается в 1 или 0.
Флаг AUX позволяет микропроцессору выполнять команды десятичной арифметики. Он показывает правильно ли выполнилась команда десятичной арифметики или нет, и, соответственно, устанавливается в 0 или 1.
Флаг переполнения OF показывает, произошло переполнение при выполнении операций или нет, т.е. показывает правильность результата. Устанавливается в 0 если переполнения не было, иначе — в 1.
Флаг специального прерывания TF помогает отлаживать программы. Этот флаг не устанавливается в результате работы микропроцессора, а устанавливается программой с помощью специальной команды. Его также называют флагом трассировки или пошаговой работы. Когда он установлен, после выполнения каждой команды возникает прерывание по трассировке. Во время процедуры прерывания микропроцессор сбрасывает флаг трассировки. Это позволяет выполнять обработку перывания по трассировке без прерывания после каждой команды. После стандартной обработки флаги устанавливаются в исходное состояние. Т.е. после выполнения следующей команды программы снова возникнет прерывание по трассировке. Этот процесс будет продолжаться до тех пор, пока программа пользователя не сбросит флаг TF или не завершится выполнение задачи.
Флаг прерываний IF управляет внешними прерываниями. Пока флаг прерываний сброшен в 0, никакие внешние прерывания не будут обрабатываться микропроцессором (за исключением немаскируемых). Когда он установлен в 1, будет производиться обработка любых возникающих прерываний.
Флаг направления DF используется микропроцессором при работе со строками, которые работают с большими блоками данных для определения направления продвижения по блоку, т.е. в сторону увеличения адресов или уменьшения. Когда флаг установлен в 1, команды обработки строк работают в сторону уменьшения адресов после обработки единицы информации, если флаг сброшен в 0, — в сторону увеличения.
Рассмотренные биты EFLAGS полностью совпадают с битами регистра FLAGS микропроцессора 8086/8088. А теперь, рассмотрим биты EFLAGS, которые показывают специфику микропроцессора 80386.
Флаг виртуального режима VM (бит 17) обеспечивает виртуальный 8086 режим в пределах защищенного. Если он установлен, в то время, когда 80386 находится в защищенном режиме, 8086 включается в виртуальную 8086 операцию, манипулируя загрузкой сегментов, как это делает 8086, генерируя 13 прерывание привилегированных операционных кодов. Бит VM может быть установлен в защищенном режиме командой IRET, если текущий привилегированный уровень равен 0, и путем включения задач на любом уровне привилегий. Бит VM не подчиняется действию команды POPF. PUSHF всегда посылает 0 в этот разряд, даже, если работает в виртуальном 8086 режиме. Образ EFLAGS, сохраненный в стеке во время обработки прерывания или во время включения задачи, будет содержать единицу в этом бите, если прерывание обрабатывалось как виртуальная 8086 задача.
Флаг возобновления (RF) используется при пошаговом режиме или совместно с точками прерываний регистров отладки. Он проверяется на границе команды, перед обработкой точки останова. Если RF установлен, то любая ошибка отладки будет игнорирована на следующей команде. RF автоматически сбрасывается при успешном окончании каждой команды (ошибки не сигнализируются), кроме команд IRET, POPF, JMP, CALL, INTER, которые вызывают включение задачи. Эти команды устанавливают RF в соответствии с определенным образом памяти.
Например:
В конце обслуживания программы прерываний команда IRET может вытолкнуть образ EFLAGS имеющего RF установленным и возобновляет выполнение программы в адресе точки прерывания без генерирования другого прерывания в том же месте.
Флг признака вложения задач — NT (разряд 14) используется в защищенном режиме. NT устанавливается, чтобы показать, что выполнение данной задачи вложено в пределах другой задачи. Если он установлен, то сегмент состояния текущей вложенной задачи имеет достоверную обратную связь с сегментом состояния предыдущей задачи. Данный бит устанавливается или сбрасывается командами передающими управление другим задачам. Значение NT в EFLAGS проверяется командой IRET. Чтобы его установить следует выполнять внутризадачное возвращение или внешнезадачное возвращение. Команды POPF или IRET будут оказывать воздействие на установку данного бита согласно образу EFLAGS на любом уровне привилегий.
БИТ ОПРЕДЕЛЕНИЯ УРОВНЯ ПРИВИЛЕГИЙ ВВОДА/ВЫВОДА (I/O P/L) — разряды 12,13.
Данное двухбитовое поле также относится к защищенному режиму. Уровень привилегий ввода/вывода (I/O P/L) указывает максимальное значение текущего уровня привилегий. Для максимально допустимого значения текущего уровня привилегий, при выполнении команд ввода/вывода без генерирования прерывания по 13 исключению, он также указывает максимальное значение текущего уровня привилегий, позволяющее изменить бит IF, когда новые значения загружаются из стека в регистры FLAGS или EFLAGS. Команды POPF и IRET могут изменять поле I/O P/L, когда выполняются при уровне привилегий 0. Операции включения задач всегда изменяют поле I/O P/L, когда новый образ флага загружается из сегмента состояния задачи.
СЕГМЕНТНЫЕ РЕГИСТРЫ.
Шесть 16-ти разрядных сегментных регистров содержат базовые адреса сегментов, определяющие сегменты памяти текущей адресации.

В защищенном режиме, каждый сегмент может иметь размеры от одного байта, до целого линейного и физического пространства машины (до 4Гб), в режиме реальной адресации, максимальный размер сегмента ограничен до 64Кб. Шесть сегментов, адресуемых в любой момент времени, определяются содержимым регистров CS, SS, DS, ES, FS и GS. Значение в CS указывает на текущий сегмент кода; содержимое SS указывает на текущий сегмент стека; а значения в DS, ES, FS, GS — на сегменты данных.
РЕГИСТРЫ ДЕСКРИПТОРА СЕГМЕНТА.
Регистры дескриптора сегмента невидимы для програмиста, однако их содержание очень полезно знать. В 80386, регистр дескриптора, невидимый для программиста, соотнесен с каждым видимым регистром селектора, как показано на рисунке выше.
Каждый из них содержит 32-х битовый базовый адрес сегмента, его границу (предел) и другие необходимые признаки сегмента. Когда адрес сегмента загружается в сегментный регистр, ассоциативный (соотнесенный) регистр дескриптора автоматически модифицируется в соответствии с новой информацией. В режиме реальной адресации только базовый адрес модифицируется напрямую, путем сдвига его значения на четыре разряда влево, поскольку максимальная граница и признаки сегмента фиксированы. В защищенном режиме базовый адрес, граница, все признаки модифицируются содержимым регистра дескриптора сегмента, индексированного селектором. Каждый раз, когда происходит ссылка на ячейку памяти, регистр дескриптора сегмента, автоматически вовлекается с сылкой на ячейку памяти. 32-х битовый базовый адрес сегмента становится компонентом вычисления линейного адреса, 32-х битовое значение границы используется для операций контроля границы, а признаки проверяются на соответствие типу ссылки на ячейку памяти, которая запрашивается.
УПРАВЛЯЮЩИЕ РЕГИСТРЫ.
80386 имеет три управляющих регистра по 32 бита: CR0, CR2 и CR3, которые поддерживают состояние машины в глобальном характере, т.е. от специфической до индивидуальной задачи. Эти регистры, наряду с регистрами системного адреса, которые будут описаны в следующем разделе, поддерживают состояние машины и воздействуют на все задачи в системе.
CR 0: УПРАВЛЯЮЩИЙ РЕГИСТР МАШИНЫ (включает 80286 слово состояние машины).
CR 0, представленный на рисунке (ниже), содержит 6 определенных разрядов для целей управления и определения состояния. 16 разрядов младшего порядка CR0 также известны как СЛОВО СОСТОЯНИЯ МАШИНЫ (MSW), для совместимости с защищенным режимом 80286. Команды LMSW и SMSW используются как специальные псевдонимы операций загрузки и хранения в памяти CR0, где используются только его младшие 16 бит. Для совместимости с операционными системами 80286, эти команды 80386 работают аналогично командам 80286, т.е. новые разряды CR0 игнорируются. Новые операционные системы микропроцессора Intel 80386 должны использовать команды для загрузки регистра CR0 полностью: MOV CR0.

Теперь опишем все разряды регистра CR0.
PG (разбиение на страницы, бит 31).
PG бит устанавливается, чтобы разблокировать устройство замещения страниц, выполненное на кристале. PG устанавливается в 0 для его блокировки.
ET (тип расширения процессора, бит 4).
ET показывает тип расширения процессора (80287 или 80387), который определяется уровнем ERROR ввода, следующего за сбросом 80386. При желании, ET бит может также быть сброшен путем загрузки CR0 при выполнении программы. Когда ET установлен в 1, то применяется 32-х битный протокол, иначе — 16-ти битный. Следует обратить внимание, что для строгой совместимости с 80286 бит ЕТ не подвергается воздействию команды LMSW.
TS (переключение задачи, бит 3).
TS автоматически устанавливается каждый раз, когда выполняеся операция переключения задачи. Когда TS установлен в 1, операционный код сопроцессора приводит к операционному прерыванию (исключение 7) «Сопроцессор не готов», при условии, что бит MP тоже установлен. Обработчик прерывания обычно сохраняет контекст 80287/80387, принадлежащий текущей задаче и очищает бит TS перед тем, как возвратиться к ошибочному коду операции сопроцессора.
EM (сопроцессор эмуляции).
Бит EM устанавливается для того, чтобы заставить все коды операций сопроцессора вырабатывать прерывание (исключение7) «Сопроцессор не готов». EM устанавливается в 0, чтобы позволить выполнение кодов операций на фактическом 80287 или 80387 сопроцессоре (случай умолчания после сброса). Обратите внимание, что код операции WAIT не подвержен влиянию бита EM.
MP (монитор сопроцессора, бит 1).
MP бит используется вместе с TS битом для определения, вырабатывает ли код операции WAIT ошибку (исключение 7) «Сопроцессор не готов», когда TS=1. Когда MP=1 и TS=1 код операции WAIT вырабатывает исключение 7. В других случаях этого не происходит. Обратите внимание, что TS устанавливается автоматически каждый раз когда выполняется операция переключения задачи.
PE (защищенный режим, бит 0).
PE бит устанавливается для создания возможности работы в защищенном режиме. Когда PE сбрасывается, процессор работает в реальном режиме. PE может быть установлен путем загрузки CR0 или MSW. PE может быть сброшен только при загрузке в CR0. Обратите внимание, что для строгой совместимости с 80286, PE не может быть сброшен командой LMSW.
CR 1: резерв.
CR 1 зарезирвирован для использования в будущих моделях процессоров INTEL.
CR 2: ЛИНЕЙНЫЙ АДРЕС ПРЕРЫВАНИЯ ИЗ-ЗА ОТСУТСТВИЯ СТРАНИЦЫ.
CR 2, представлен на рисунке (ниже). Он содержит 32-х битовый адрес, который определяет наличее ошибки на последней странице. Код ошибки обработанной страницы, помещенный в стек по запросу может представить дополнительрую информацию о статусе ошибки на странице.

  • GDT (Таблица Глобального Дескриптора)
  • IDT (Таблица Дескриптора Прерывания)
  • LDT (Таблица Локального Дескриптора)
  • TSS (Сегмент Состояния Задачи)

Адреса данных таблиц и сегментов помещены в память специальных регистров, РЕГИСТРОВ СИСТЕМНОГО АДРЕСА и РЕГИСТРОВ СИСТЕМНОГО СЕГМЕНТА (см.рисунок ниже). Называются данные регистры соответственно GDTR, IDTR, LDTR, TR. Использование данных регистров описывается в главе «АРХИТЕКТУРА ЗАЩИЩЕННОГО РЕЖИМА».

GDTR и IDTR.
Эти регистры содержат 32-х битовый линейный базовый адрес и 16-и битовый предел таблицы глобального дескриптора и таблицы дескриптора прерывания соответственно.
Сегменты GDT и IDT, поскольку они глобальны для всех задач в системе, определяются 32-х битовыми линейными адресами (предмет для трансляции страниц если имеется возможность для подкачки) и 16-и битовыми значениями пределов.
LDTR и TR.
Эти регистры содержат 16-и битовые адреса сегментов для LDT и TSS. Сегменты LDT и TSS, поскольку они являются сегментами специфических задач, определяются адресом, помещенным в регистры системного сегмента. Обратите внимание, что регистр дескриптора сегмента (невидимый для программиста) соотносится с каждым регистром системного сегмента.
РЕГИСТРЫ ОТЛАДКИ И ТЕСТОВЫЕ РЕГИСТРЫ.
РЕГИСТРЫ ОТЛАДКИ: Шесть доступных для программиста регистров отладки обеспечивают поддержку (на кристалле) отладки. Регистр отладки CRO-3 классифицирует четыре линейных останова. DR6 используется для установки точек останова и Регистра Статуса Отладки DR7, а также отображает текущее состояние точек останова. Использование регистров отладки будет подробно описано далее в разделе «ПОДДЕРЖКА ОТЛАДКИ».

ТЕСТОВЫЕ РЕГИСТРЫ.
Два регистра микропроцессора используются для управления и тестирования RAM/CAM в буфере предыстории трансляции 80386. TR6-регистр тестирования команд, а TR7-регистр данных, который хранит результат тестирования буфера предыстории трансляции. Их использование также будет рассмотрено позже в разделе «ТЕСТИРУЕМОСТЬ».
ДОСТУПНОСТЬ РЕГИСТРОВ.
Имеются определенные различия в доступах к регистрам в РЕАЛЬНОМ и ЗАЩИЩЕННОМ режимах. В таблице суммированы все эти различия:

Регистры: Использование в реальном режиме Использование в защищенном режиме Использование в виртуальном режиме
загрузка память загрузка память загрузка память
Общие Да Да Да Да Да Да
Сегментные Да Да Да Да Да Да
EFLAGS Да Да Да Да I/O PL I/O PL
Управляющие Да Да PL = 0 PL = 0 Нет Да
GDTR Да Да PL = 0 Да Нет Да
IDTR Да Да PL = 0 Да Нет Да
LDTR Нет Нет PL = 0 Да Нет Нет
TR Нет Нет PL = 0 Да Нет Нет
Управление отладкой Да Да PL = 0 PL = 0 Нет Нет
Тестовые Да Да PL = 0 PL = 0 Нет Нет

Примечания:
PL = 0: Регистры могут использоваться только когда текущий уровень привелегий равен нулю.
I/O PL: команды PUSHF и POPF делают уровень привилегий I/O чувствительным в виртуальном режиме.

  1. При тестировании значений битов определенных регистров, избегайте зависимости от состояний неопределенных битов. Замаскируйте их при тестировании.
  2. Избегайте зависимости от состояний любого из неопределенных битов при помещении их в память или в другой регистр.
  3. Следет избегать зависимости от возможности содержать информацию, записанную в любом из неопределенных разрядов.
  4. При загрузке регистров всегда загружайте их как нули.
  5. Однако, регистры ранее помещенные, могут быть перезагружены без маскировки.

Зависимость от значений неопределенных разрядов регистров сделает Ваше программное обеспечение зависимым от непредусмотренной 80386 обработки данных битов, что подвергает вас риску несовместимости с будущими процессорами. ПОЭТОМУ ИЗБЕГАЙТЕ ЛЮБОЙ ЗАВИСИМОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОТ СОСТОЯНИЯ НЕОПРЕДЕЛЕННЫХ БИТОВ РЕГИСТРОВ МИКРОПРОЦЕССОРА INTEL 80386.

Как называется главный регистр микропроцессора

Основные характеристики микропроцессора

Микропроцессор характеризуется:
1) тактовой частотой, определяющей максимальное время выполнения переключения элементов в ЭВМ;
2) разрядностью, т.е. максимальным числом одновременно обрабатываемых двоичных разрядов.

Разрядностть МП обозначается m/n/k/ и включает:
m — разрядность внутренних регистров, определяет принадлежность к тому или иному классу процессоров;
n — разрядность шины данных, определяет скорость передачи информации;
k — разрядность шины адреса, определяет размер адресного пространства. Например, МП i8088 характеризуется значениями m/n/k=16/8/20;
3) архитектурой. Понятие архитектуры микропроцессора включает в себя систему команд и способы адресации, возможность совмещения выполнения команд во времени, наличие дополнительных устройств в составе микропроцессора, принципы и режимы его работы. Выделяют понятия микроархитектуры и макроархитектуры.

Микроархитектура микропроцессора — это аппаратная организация и логическая структура микропроцессора, регистры, управляющие схемы, арифметико-логические устройства, запоминающие устройства и связывающие их информационные магистрали.

Макроархитектура — это система команд, типы обрабатываемых данных, режимы адресации и принципы работы микропроцессора.

В общем случае под архитектурой ЭВМ понимается абстрактное представление машины в терминах основных функциональных модулей, языка ЭВМ, структуры данных.

Структура типового микропроцессора

Архитектура типичной небольшой вычислительной системы на основе микроЭВМ показана на рис. 2.1 Такая микроЭВМ содержит все 5 основных блоков цифровой машины: устройство ввода информации, управляющее устройство (УУ), арифметико-логическое устройство (АЛУ) (входящие в состав микропроцессора), запоминающие устройства (ЗУ) и устройство вывода информации.

Рис. 2.1. Архитектура типового микропроцессора.

Микропроцессор координирует работу всех устройств цифровой системы с помощью шины управления (ШУ). Помимо ШУ имеется 16-разрядная адресная шина (ША), которая служит для выбора определенной ячейки памяти, порта ввода или порта вывода. По 8-разрядной информационной шине или шине данных (ШД) осуществляется двунаправленная пересылка данных к микропроцессору и от микропроцессора. Важно отметить, что МП может посылать информацию в память микроЭВМ или к одному из портов вывода, а также получать информацию из памяти или от одного из портов ввода.

Постоянное запоминающее устройство (ПЗУ) в микроЭВМ содержит некоторую программу (на практике программу инициализации ЭВМ). Программы могут быть загружены в запоминающее устройство с произвольной выборкой (ЗУПВ) и из внешнего запоминающего устройства (ВЗУ). Это программы пользователя.

В качестве примера, иллюстрирующего работу микроЭВМ, рассмотрим процедуру, для реализации которой нужно выполнить следующую последовательность элементарных операций:
1. Нажать клавишу с буквой «А» на клавиатуре.
2. Поместить букву «А» в память микроЭВМ.
3. Вывести букву «А» на экран дисплея.

Это типичная процедура ввода-запоминания-вывода, рассмотрение которой дает возможность пояснить принципы использования некоторых устройств, входящих в микроЭВМ.

На рис. 2.2 приведена подробная диаграмма выполнения процедуры ввода-запоминания-вывода. Обратите внимание, что команды уже загружены в первые шесть ячеек памяти. Хранимая программа содержит следующую цепочку команд:
1. Ввести данные из порта ввода 1.
2. Запомнить данные в ячейке памяти 200.
3. Переслать данные в порт вывода 10.

Рис. 2.2. Диаграмма выполнения процедуры ввода-запоминания-вывода.

В данной программе всего три команды, хотя на рис. 2.2 может показаться, что в памяти программ записано шесть команд. Это связано с тем, что команда обычно разбивается на части. Первая часть команды 1 в приведенной выше программе — команда ввода данных. Во второй части команды 1 указывается, откуда нужно ввести данные (из порта 1). Первая часть команды, предписывающая конкретное действие, называется кодом операции (КОП), а вторая часть — операндом. Код операции и операнд размещаются в отдельных ячейках памяти программ. На рис. 2.2 КОП хранится в ячейке 100, а код операнда — в ячейке 101 (порт 1); последний указывает откуда нужно взять информацию.

В МП на рис. 2.2 выделены еще два новых блока — регистры: аккумулятор и регистр команд.

Рассмотрим прохождение команд и данных внутри микроЭВМ с помощью занумерованных кружков на диаграмме. Напомним, что микропроцессор — это центральный узел, управляющий перемещением всех данных и выполнением операций.

Итак, при выполнении типичной процедуры ввода-запоминания-вывода в микроЭВМ происходит следующая последовательность действий:
1. МП выдает адрес 100 на шину адреса. По шине управления поступает сигнал, устанавливающий память программ (конкретную микросхему) в режим считывания.
2. ЗУ программ пересылает первую команду («Ввести данные») по шине данных, и МП получает это закодированное сообщение. Команда помещается в регистр команд. МП декодирует (интерпретирует) полученную команду и определяет, что для команды нужен операнд.
3. МП выдает адрес 101 на ША; ШУ используется для перевода памяти программ в режим считывания.
4. Из памяти программ на ШД пересылается операнд «Из порта 1». Этот операнд находится в программной памяти в ячейке 101. Код операнда (содержащий адрес порта 1) передается по ШД к МП и направляется в регистр команд. МП теперь декодирует полную команду («Ввести данные из порта 1»).
5. МП, используя ША и ШУ, связывающие его с устройством ввода, открывает порт 1. Цифровой код буквы «А» передается в аккумулятор внутри МП и запоминается.Важно отметить, что при обработке каждой программной команды МП действует согласно микропроцедуре выборки-декодирования-исполнения.
6. МП обращается к ячейке 102 по ША. ШУ используется для перевода памяти программ в режим считывания.
7. Код команды «Запомнить данные» подается на ШД и пересылается в МП, где помещается в регистр команд.
8. МП дешифрирует эту команду и определяет, что для нее нужен операнд. МП обращается к ячейке памяти 103 и приводит в активное состояние вход считывания микросхем памяти программ.
9. Из памяти программ на ШД пересылается код сообщения «В ячейке памяти 200». МП воспринимает этот операнд и помещает его в регистр команд. Полная команда «Запомнить данные в ячейке памяти 200» выбрана из памяти программ и декодирована.
10. Теперь начинается процесс выполнения команды. МП пересылает адрес 200 на ША и активизирует вход записи, относящийся к памяти данных.
11. МП направляет хранящуюся в аккумуляторе информацию в память данных. Код буквы «А» передается по ШД и записывается в ячейку 200 этой памяти. Выполнена вторая команда. Процесс запоминания не разрушает содержимого аккумулятора. В нем по-прежнему находится код буквы «А».
12. МП обращается к ячейке памяти 104 для выбора очередной команды и переводит память программ в режим считывания.
13. Код команды вывода данных пересылается по ШД к МП, который помещает ее в регистр команд, дешифрирует и определяет, что нужен операнд.
14. МП выдает адрес 105 на ША и устанавливает память программ в режим считывания.
15. Из памяти программ по ШД к МП поступает код операнда «В порт 10», который далее помещается в регистр команд.
16. МП дешифрирует полную команду «Вывести данные в порт 10». С помощью ША и ШУ, связывающих его с устройством вывода, МП открывает порт 10, пересылает код буквы «А» (все еще находящийся в аккумуляторе) по ШД. Буква «А» выводится через порт 10 на экран дисплея.

В большинстве микропроцессорных систем (МПС) передача информации осуществляется способом, аналогичным рассмотренному выше. Наиболее существенные различия возможны в блоках ввода и вывода информации.

Подчеркнем еще раз, что именно микропроцессор является ядром системы и осуществляет управление всеми операциями. Его работа представляет последовательную реализацию микропроцедур выборки-дешифрации-исполнения. Однако фактическая последовательность операций в МПС определяется командами, записанными в памяти программ.

Таким образом, в МПС микропроцессор выполняет следующие функции:
— выборку команд программы из основной памяти;
— дешифрацию команд;
— выполнение арифметических, логических и других операций, закодированных в командах;
— управление пересылкой информации между регистрами и основной памятью, между устройствами ввода/вывода;
— отработку сигналов от устройств ввода/вывода, в том числе реализацию прерываний с этих устройств;
— управление и координацию работы основных узлов МП.

Регистры микропроцессоров, их виды и назначение

Регистры микропроцессоров 1

Общие сведения.

При составлении программ в первую очередь необходимо

знать, какие из регистров микропроцессора являются программно–доступными регистрами, в которых можно хранить подлежащие обработке данные (операн­ды), адреса и управляющие сигналы (команды). Совокупность программно–до­ступных регистров образуют регистровую модель микропроцессора. Адресация регистровой области процессора и быстрый доступ к ней обеспечивают создание эффективно исполняемых программ.

В регистровой модели современных процессоров обычно выделяют следу­ющие группы регистров:

● регистры, используемые при выполнении прикладных программ. К ним относят:

• основные функциональные регистры (регистры общего назначения; ука­затель команд, или программный счетчик; сегментные регистры; регистр флагов, или слова состояния);

обработки чисел с плавающей точкой (регистры данных, тегов, состояния, управления, регистры–указатели команды и операнда);

обработки пакетов чисел с плавающей точкой (регист­ры пакетов данных и регистр управления–состояния);

системные регистры (регистры управления режимом, регистры системных адресов, регистры отладки);

служебные (модельно–специфические) регистры, которые используются в про­цессе отладки систем, содержат информацию о процессе выполнения про­граммы (число декодированных команд, полученных запросов прерывания, число загрузок в кэш–память и т. п.), обеспечивают различные режимы рабо­ты кэш–памяти при обращении к определенным областям основной памяти

О неоднородности регистров.

Регистровая область памяти микропроцессора (

— регистровый сегмент) представляет собой набор неоднородных по возможности доступа и по выполняемым функциям регистров. Например, в рас­смотренном выше 8–разрядном процессоре:

● регистр команд является неадресуемым регистром и предназначен только для приема первого байта (кода команды) из памяти;

адресуемые регистры В и С могут быть использованы для хранения одного байта данных или 16–разрядного адреса (в паре);

указатель стека, представляющий собой 16–разрядный регистр, использует­ся для доступа к стеку путем явной и неявной (с помощью специальных ко­манд

программный счетчик, или указатель команд, выполняет строго определен­ные функции и не может быть использован для хранения 16–разрядных опе­рандов.

Функциональная неоднородность области

процессора проявляется в специализации регистров. В зависимости от выполняемых функций можно вы­делить три группы регистров:

регистры данных, используемые в операциях АЛУ в качестве источника и приемника операндов;

адресные регистры, или указатели, предназначенные для формирования ад­ресов данных и команд;

специальные регистры, служащие для индикации текущего состояния про­цессора и управления режимами его работы.

Функциональная специализация затрудняет программирование (из–за необхо­димости учета организации регистров), однако позволяет создать быстро испол­няемую программу с меньшим требуемым объемом памяти для ее хранения.

Регистры обозначаются латинскими буквами, используемыми для символи­ческого кодирования и отражающими назначение регистра.

Среди регистров данных важное место занимает аккуму­лятор А (

), который выполняет функции временного хранения исход­ных операндов и результатов операций арифметическо–логических устройств (АЛУ). Интенсивное использование аккумулятора и связанное с ним большинство команд арифметической и логической обработки операндов способствует сниже­нию загруженности шины данных, упрощению адресации, повышению быстро­действия процессора. В системах команд микропроцессора выделяются опера­ции с аккумулятором. Поэтому ссылка на аккумулятор при адресации, как прави­ло, производится неявно с помощью кода операции. Неявная адресация позволя­ет не указывать в командах месторасположение одного из операндов и (или) результата операции, что уменьшает длину их кода. В составе микропроцессора может быть не один, а два аккумулятора (например, в МС6809). К регистрам данных относятся явно адресуемые рабочие регистры

1, …., используемые как сверхскоростные регистровые ОЗУ.

Рабочие регистры могут использоваться в операциях совместно с аккумулятором. Некоторые из них могут совмещать функцию хранения данных с функцией адресации. Для образования полноразмерного адреса регистры данных объединяются в пары.

В процессорах, предназначенных для работы в реальном времени, могут быть предусмотрены не один, а два или даже четыре (например, в некоторых микро­контроллерах) набора рабочих регистров. Один из регистров резервируется для системных целей или обработки прерываний, а остальные — для прикладных задач пользователя. В каждый момент времени доступен только один набор ра­бочих регистров, выбираемый специальным указателем.

К регистрам данных также относятся рассматриваемые ниже регистры общего назначения, которые совмещают функции хранения данных и адресов.

Среди регистров, на которые возложена функция адре­сации, следует выделить:

), или указатель инструкций–команд (

), хранящий адрес следующей команды выпол­няемой программы. Его разрядность обычно соответствует числу линий ад­ресной шины. При выполнении программы с последовательно возрастающи­ми адресами команд содержимое

увеличивается на 1 или 2 для указания следующего байта или слова. Увеличение содержимого счетчика происходит автоматически сразу после начала выполнения команды. Изменение после­довательной выборки команд из ячеек памяти осуществляется путем загруз­ки программного счетчика адресом требуемой ячейки. Такая ситуация возни­кает, например:

• при выполнении команд условных и безусловных переходов;

• при инициализации микропроцессора путем сброса;

• при обслуживании запросов на прерывание;

используемый для обращений к систем­ному стеку. Стек представляет собой область памяти, предназначенную для хранения адресов возврата и состояний процессора (содержимого регист­ров) при вызове подпрограмм и обслуживании прерываний. Доступ к стеку организован по принципу «последним пришел — первым ушел» (

т. е. в него можно только последовательно добавлять (втал­кивать) или извлекать (выталкивать) элементы данных. Типовой стек, приме­няемый в большинстве процессоров, заполняется в сторону уменьшения ад­ресов.

всегда показывает на последнюю заполненную ячейку, называемую вершиной стека (

Поэтому при операции за­писи (

) в стек элемента данных сначала содержимое указателя

уменьшается на 1 или 2 в зависимости от длины элемента (байт, два байта), формируя адрес ячейки, в которую затем помещается элемент. При операции считывания (

) сначала элемент данных извлекается из стека, после чего содержимое указателя

увеличивается на 1 или 2.

Принцип взаимодействия указателя

рис. 2.4.1

со стеком проиллюстрирован на примере записи в стек и считывания из него четырех однобайтных элементов (рис. 2.4.1, а).

При операциях со стеком значение указателя

непрерывно меняется, поэтому применять его в качестве точки отсчета при доступе к хранящимся в стеке данным вызывает определенные трудности. Поэтому в ряде случаев, например, при хранении в стеке локальных переменных или при обмене па­раметрами между вызываемой и вызывающей процедурой (подпрограммой), используется указатель кадра (

) — специально зарезерви­рованный адресный регистр. Регистр

, указывающий на начало области па­раметров в стеке (рис. 2.4.1, б), принадлежит к классу базовых регистров. В 16–разрядных процессорах указателем кадра служит индексный регистр ВХ;

регистры, предназначенные для хранения адресов обращения к основной па­мяти. Такие регистры, называемые указательными или индексными, позволя­ют сократить размер кода (программы). К ним следует отнести:

• регистры косвенного адреса (

), содержащие непосред­ственно адрес операнда;

), хранящие начальные (базовые) адреса массивов и записей;

индексные регистры I или X (

), содержимое которых является относи­тельным (смещенным) адресом операнда;

• регистры автоинкрементной и автодекрементной адресации, автоматиче­ски увеличивающие или уменьшающие свое содержимое после выполне­ния операции;

• регистры расширения адресного пространства (до 1М байт).

К специальным регистрам следует отнести регистр флагов (

), или регистр слова состояния программы (

а также ряд регистров, используемых в сопроцессорах и микроконтроллерах.

На регистр флагов возлагается функция хранения признаков. С каждым при­знаком связывается одноразрядная переменная (бит), называемая флагом (флажком). Регистр флагов содержит:

биты признаков состояния процессора. Обычно эти признаки формируются в АЛУ после выполнения операции и характеризуют ее результат;

● биты управления и системных признаков, которые устанавливаются операци­онной системой (некоторые пользователем) и задают режим процессора при организации ввода–вывода данных, обслуживании прерываний и исключений, решении последовательности вызываемых задач и реализации ряда других процедур.

Упаковка всех флагов в одно слово и хранение в регистре дает возможность их быстрой пересылки в память с последующим восстановлением, например, при обслуживании запросов на прерывание.

Ниже приведены обозначение, название и назначение флагов признаков состояния, а также показан принцип формирования некоторых флагов из отдельных бит

–разрядных операндов вида

, которые могут быть как исходным операндом, так и результатом выполненной операции:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *