Выборка осуществляется контроллером шинного интерфейса по адресу, хранящемуся в ПС. Выбираемую ком-ду контроллер помещает в очередь ком-д. В современных процессорах осуществляется не поком-дная выборка, а выборка ком-д в виде блока длиной в 16 байт, который может содержать более одной ком-ды. Такая выборка называется опережающей. Блоки из ОП выбираются выровненными, то есть их младший байт имеет адрес, содержащий нули в четырех младших битах. Опережающая выборка ком-д сочетается с опережающим декодированием.
Декодирование ком-д делится на первичное и вторичное. При первичном декодировании определяется тип ком-ды и ее адрес. Знание типа ком-ды позволяет упростить алгоритм обработки ком-д, так как ком-ды одного типа выполняются одинаковым образом. Это позволяет уменьшить длину адресного кода. Вторичное декодирование осуществляется после вычисления адресов операндов и их выборки.
Производится только для адресных ком-д и зависит от типа адресации операндов в ком-де. Первым вычисляется адрес операнда-источника, то есть такого операнда, который не изменяет своего значения в процессе выполнения ком-ды. Вторым вычисляется адрес операнда-приемника, то есть операнда, изменяющего свое значение и по адресу которого располагается результат выполнения операции. Процесс вычисления адресов операндов сочетается с выборкой, то есть после вычисления адреса операнда-источника, затем он выбирается из ОП, а потом вычисляется адрес приемника. На этапе вычисления адресов операндов используется содержимое базовых, индексных и регистров смещения:
Aи=(B)+(I)+D, где D-смещение, с использованием сумматора контроллера шинного интерфейса. Вычисленный адрес помещается в регистр адреса РА.
В случае безадресных ком-д выборка не производится. Эти ком-ды выполняются сразу же после первичного декодирования. В случае ком-д пересылки выборка операнда-приемника заменяется операцией записи операнда-источника по адресу операнда-приемника. По отношению к интерфейсу процессора выборка операндов сводится к последовательности операций: ввод – пауза – вывод. Пауза необходима для выполнения операций, предписываемой ком-дой.
Исполнение операции осуществляется в зависимости от типа операции, определяемой ком-дой. В арифметико-логических операциях УУ процессора вырабатывает последовательность сигналов для АЛУ. Операнды подключаются к АЛУ, результат записывается по адресу операнда-приемника. В ком-де безусловного перехода адрес перехода, содержащийся в ком-де, загружается в ПС. В ком-дах условного перехода предварительно перед загрузкой адреса, в ПС анализируется условие. Если оно не выполняется, содержимое ПС сохраняется, если выполняется – в ПС загружается адрес перехода. Ком-ды управления являются безадресными и выполняются после первичного декодирования. Действия этих ком-д сводятся к изменению внутренних регистров процессора, содержащих управляющую информацию. Ком-ды ввода/вывода обеспечивают обмен информацией между процессором и внешними ПУ. Этот процесс аналогичен операции пересылки информации, поэтому для его реализации используются ком-ды пересылки, в которых в качестве операндов источника и приемника используются регистры портов ввода/вывода и ПУ. Этим регистрам присваиваются определенные адреса из адресного пространства ЭВМ.
30. Программная модель процессора (регистры общего назначения и сегментные регистры)
Набор программно доступных регистров, имеющихся в составе процессора, определяет его программную или регистровую модель. Эти регистры определяют те ресурсы, которые предоставляются пользователю при программировании процессора. В разработке программных моделей процессора существуют 2 подхода:
В первом подходе все регистры считаются универсальными, то есть могут участвовать в одних и тех же операциях.
Во втором подходе, характерном для МП Intel, регистры являются специализированными, то есть могут участвовать в определенных операциях, в которых за ними закрепляются специальные функции.
В программную модель 32-битовых МП входит 31 регистр, которые делятся на 16 регистров прикладного программиста (пользовательские регистры) и 15 системных регистров.
Основные пользовательские регистры:
Они делятся на 8 регистров РОН, 6 сегментных регистров, на ПС-регистр и регистр флагов. РОН имеет длину 32 бита: (см. рис)
Первые 4 РОН допускают адресацию двойных слов так называемые расширенные регистры EAX, EBX, EDX, ECX (32 бита). AX, BX, CX, DX (16 бит). Допускается адресация только младшей половины регистров (биты 0 - 15), а 16 – 31 биты не допускают адресации. В младшей половине регистров допускается адресация старшего и младшего байтов:
AH BH DH CH (биты 8 - 15)
AL BL DL CL (биты 0 - 7)
Такая адресация первых 4 РОН позволяет легко оперировать при программировании на ассемблере байтами, словами и двойными словами. Все РОН могут использоваться в различных операциях, но существуют операции, в которых эти регистры выполняют специальные функции. Отсюда происходит и название регистров:
EAX/ AX/ AL – регистр-аккумулятор. Используется в арифметических и логических операциях, операциях ввода/вывода и др. в операциях деления и умножения в этих регистрах хранятся делимое и множимое, в него же помещается результат. Причем используется подразумеваемая адресация.
EBX/ BX/ BL – базовый регистр, используется для хранения базового адреса при относительной адресации операндов.
EDX/ DX/ DL – регистр данных, используется для хранения данных в арифметических и логических операциях, операциях пересылки и пр. В операциях ввода/вывода с использованием портов в этом регистре хранится адрес порта ввода/вывода.
ECX/ CX/ CL – регистр-счетчик циклических операций над цепочками бит, байт, слов и двойных слов.
ESP/ SP – используется в стековых операциях. Имя этого регистра неявно полагается в операциях PUSH и POP, применяется для хранения адреса вершины стека в данном сегменте памяти.
EBP/ BP – указатель базы, используется для указания базового адреса при строковых операциях.
ESI/ SI – индекс источника.
EDI/ DI – индекс приемника. оба эти регистра используются для хранения индексов при выполнении цепочных операций.
Сегментные регистры
Введены в связи с сегментной организацией памяти. Сегмент – совокупность ячеек памяти с последовательными адресами. В 32-битовых МП используется 6 сегментных регистров:
CS, SS, DS, ES, FS, GS (см. рис)
Сегментные регистры содержат информацию о текущих сегментах памяти, используемых при выполнении программы. В МП i8086 в них хранится физический базовый адрес сегмента. В МП начиная с i80386 сегментные регистры адресуют сегменты с помощью дескрипторной таблицы, которая определяет базовый адрес сегмента, его размеры и права доступа, то есть те программы и операции, которые доступны для данного сегмента. В МП i8086 составлял 64 Кб, а в современных 32-битовых МП память может содержать тысячи сегментов длиной по 4 Гб. Каждый сегментный регистр имеет следующее назначение:
1. регистр CS – сегмент кода, хранит информацию о сегменте памяти, в которых располагается команда текущей выполняемой программы.
2. SS содержит информацию о сегменте памяти, используемой в типовых операциях, то есть все операции осуществляются через SS. Вершина стека для сегмента, определяемого SS адресует регистр ESP/ SP.
3. DS – сегмент данных, определяет сегмент памяти, в котором хранятся данные, обрабатываемые в текущей программе.
4. ES, FS, BS – определяет дополнительные сегменты памяти, доступные текущей выполняемой программы.
31. Программная модель процессора (указатель команд и регистр флагов)
Регистр – указатель команд EIP/ IP (см рис)
Содержит адрес текущей команды, выполняемой процессором. К моменту завершению рабочего цикла процессора здесь формируется адрес, подлежащий выполнению.
Регистр флагов. EFLAGS/ FLAGS
Флажки управления: AC, VM, RF, DF, IF, TF.
Флажки состояния: NT, IOPL, OF, SF, ZF, AF,PF, CF.
Регистр флагов содержит 8 флагов состояния и 6 флагов управления. Флаги состояния определяют вычислительные ситуации, которые могут возникать во время выполнения программы, фиксирует признаки результатов при выполнении операций и программ. Флаги управления позволяют управлять работой процессора.
CF – перенос, 1, если перенос из старшего бита.
PF – паритет, 1, если четное число единиц.
AF – дополнительный перенос, используется в операциях десятичной арифметики.
ZF – нуль, 1, если нуль.
SF – знак, 1, если отрицательный результат.
TF – флаг трассировки, 1, если режим трассировки.
IF – прерывание, 1, если прерывания разрешены.
DF – флаг направления.
OF – переполнение, 1, если переполнение.
IOPL – привилегии доступа.
NT – флаг вложенности задачи, 1, если существует переключение к другой задаче.
RF – используется при редактировании программы.
VM – устанавливает виртуальный режим процессора.
AC – выравнивание данных в ОП.
32. Понятие о состоянии процессора. Слово состояния процессора
В процессе выполнения каждой команды происходит изменение состояния управляющих регистров, содержимого регистров, счетчиков проце-ов. В этом смысле можно говорить об изменении состояния процессора. Состояние процессора в любой момент времени, должно как-то фиксироваться. Для того, чтобы восстановить выполнение программы с той точки, с которой она была прервана по какой-либо причине. В общем случае под состоянием процессора понимается содержимое всех его управляющих триггеров, регистров, счетчиков, а также ячеек ОП ЭВМ.