Архитектура 16 разрядных процессоров.
(процессоры интел, от 8086 до пентиум 2) Процессор 8086 появился в 1978 г. Частота 5 Мгц, 16 разрядный, 29 тыс. транзисторов, адресуемая память 1мб, шина адреса — 20 разрядная, шина данных — 16 разрядная. Появилась конвейерная архитектура, которая предполагает выборку команд из памяти и их декодирование во время выполнения внутренних операций. В процессоре 8086 имеется 6 регистров предназначенных для предварительной выборки команд. Когда не занята шина адреса, процессор изымает из памяти следующие команды так, чтобы 6 регистров были заняты. Процессор имеет 14 регистров по 16 бит, данные могут быть - либо 8 бит либо 16 бит. Система команд включает 24 режима адресации. Общее количество команд — 98.
рисунок.
Два основных блока: блок исполнения команд и блок интерфейса шин. В блок исполнения входят АЛУ и 10 регистров. Блок исполнения выполняет всю обработку команд. Блок интерфейса шин содержит 3 основных устройства: блок контроля шиной (БКШ), блок очереди команд (конвейер команд) состоящий из шести 16 разрядных регистров. Блок сегментных регистров. (es, de, ss, es). Блок контроля шиной управляет шиной. Конвейер команд.
Регистры процессора. 1. Регистры общего назначения. Восемь 16 разрядных. Из них половина разделены на две части — старшую и младшую. Где h обозначает старшую часть, а l младшую. Регистр ax служит для хранения данных, выступает в роли аккумулятора при работе с АЛУ. Bx — базовый регистр, хранит адрес некоторой области памяти. Cx — выступает в роли счетчика. Dx — хранит данные. Адреса могут хранится в регистре bx, bp. В регистре si хранится адрес источника информации. В регистре di хранится адрес результата. Регистр sp — указатель вершины стека.
2. Регистр указателя команд или индексный регистр (ИР, счетчик команд). 3. Регистр флагов имеет 16 разрядов и отдельные биты его имеют следующее назначение: в нулевой бит заносится единица если результат получился отрицательный, в шестой бит заносится единица, если результат равен 0, 11 бит — признак переполнения,
Сегменты и принцип сегментации. Размер ячейки оперативной памяти составляет 8 разрядов. Вся память разбивается на отдельный части — сегменты. Объем сегмента равен 64 килобайта. Адрес ячейки памяти информацию в которую необходимо записать или изъять информацию формируется по следующему правилу: берется адрес сегмента который кратен 16 и адреса ячейки внутри сегмента — эта часть адреса называется смещением. Физический адрес памяти состоит из двух 16-битных частей адреса сегмента и исполнительного адреса EA, суммируемых со смещением на 4 бита. Сдвиг адреса на 4 бита влево эквивалентен его умножению на 16, следовательно физический адрес PA=16*Seg+EA. Адрес сегмента Seg является содержимым одного из регистров (cs, ds, ss, es). Исполнительный адрес EA (смещение) так же может называться эффективным адресом, может быть константой, содержимым регистров, ячейки памяти или суммой нескольких величин (например двух регистров и константы), но эта сумма является 16-разрядной (перенос игнорируется). Таким образом физический адрес никогда не перейдет границу 64-Кбайтного сегмента, на начало которого указывает используемый сегментный указатель, то есть адрес сегмента. С одной стороны это свойство обеспечивает некоторую защиту сегментов друг от друга (хотя некорректно написанная программа может легко перезагрузить указатель сегмента и «наехать» на данные другого сегмента), с другой стороны сегментация памяти является существенным неудобством для написания больших программных модулей. С сегментацией связаны понятия ближнего и дальнего адреса. При ближнем вызове доступ к требуемой ячейки осуществляется только указанием смещения, а адрес сегмента определяется текущим содержимым соответствующего регистра сегмента. Разновидностью ближнего перехода по которому доступен любой адрес сегмента, является короткий переход, а котором смещение указывается не двумя а одним байтом, что используется в командах условных переходов. Короткий переход позволяет достигать смещения 128...+127 байт относительно текущего адреса в пределах указанного сегмента. При дальнем обращении указывается полный адрес содержащий …...............(загружаемое в соответствующий регистр) и 16-байтное смещение. Есстественно что дальнее обращение выполняется медленнее. Процессор может обращаться к 1 байту памяти как к слову, состоящему из 2-х байт, или двойному слову (4 байта). При размещении слова в памяти байт с адресом соответствующим адресу слова, содержит его младшую часть l. Тогда следующий байт будет содержать старшую часть слова. Слово может размещаться в памяти как по четному, так и нечетному адресу. Двойное слово обычно используется для хранения полного адреса, и в нем располагается сначала слово смещения (в порядке l, h), а затем сегмента в том же порядке. Сегментация памяти в порядке l,h характерная черта процессоров Intel.
Адресация ввода/вывода. Для обращения к устройствам ввода/вывода процессор имеет отдельные команды in/out. Данные при чтении могут помещаться только в регистр al или ax. В циклах ввода/вывода используются только 16 младших бит адреса (старшие биты при этом нулевые), что позволяет адресовать до 64 Кб регистров ввода/вывода. Адрес устройства задается либо в команде (только младший байт, старший — нулевой), либо берется из регистра dx (полный 16-битнай адрес). Инициализация прерывания, останов и синхронизация. По сигналу reset процессор завершает текущий шинный цикл, а по снятию сигнала он в течении примерно 7-и циклов синхронизации начинает выполнение инструкции считываемой по адресу FFFF0h (сигнал reset устанавливает сегментные регистры и указатель команд (счетчик команд) в состояние cs=FFFFh, ip=0, ds=ss=es=0 и сбрасывает все флаги). Во время действия сигнала reset все трех-стабильные (буферные) схемы переходит в высокоимпедансное (выключенное) состояние.
Адресация операндов. В связи с кругом решаемых задач в микропроцессорной технике возможны следующие способы адресации операндов: - регистровая адресация. При регистровой адресации необходимые данные находятся непосредственно в регистре процессора (непосредственно в команде указан регистр где находятся данные); - прямая адресация используется чаще всего при арифметических действиях, поэтому один операнд находится в памяти, а второй в регистре. В формате команды будет указан физический адрес ячейки памяти откуда необходимо взять данные; - непосредственная адресация. При непосредственной адресации операнд (необходимые данные) находится прямо в команде; - косвенная. В формате команды находится адрес сегментного регистра и одного из регистров bx, bp, si, di в которых находятся необходимые данные. Чаще всего применяется когда необходимо сформировать физический адрес с использованием сегмента и смещения, тогда адрес сегмента находится в сегментном регистре, а смещение в одном из вышеуказанных регистров; - базовая. При базовой адресации исполнительный адрес является суммой смещения + содержимое базовых регистров bp или bx; - индексная. При индексной адресации исполнительный адрес определяется суммой: смещение и содержимой индексных регистров si или di; - базово-индексная адресация предполагает что для вычисления исполнительного адреса складываются вместе содержимое базового регистра и индексного регистра а так же смещение находящееся в команде. Формат команды: 5 частей. 1) Префикс (содержит от 0 до 3 байт) — указание по модификации выполняемой команды. 2) КОП (код операции. всегда 1 байт). 3) ModReg R/M (1 байт) — с помощью этого поля определяются операнды явно задаваемые в команде (например Mod содержит 2 разряда, Reg — 3 разряда, R/M — 3 разряда). Mod определяет местонахождение одного из операндов (в регистре или в памяти). Если операнд находится в памяти то поле R/M определяет способ адресации. Reg — либо указывает регистр, являющийся операндом инструкции, либо является расширением кода операции. Как номер регистра-операнда поле reg используется только в инструкциях вида «регистр регистр» или «регистр память», а в инструкциях вида «регистра — непосредственный операнд» а так же в инструкциях имеющих только один явно заданный операнд это поле является частью кода операции. Поле R/M содержит либо номер регистра, операнда и инструкции, либо совместно с полем Mod определяет способ вычисления фиктивного адреса операнда, находящегося в памяти. Содержимое поля R/M зависит от содержимого поля Mod.
Кодировка регистров общего назначение (РОН'ов) в полях Reg и R/M: AX || AL — 000 CX || CL — 001 DX || DL — 010 BX || BL — 011 SP || AH — 100 BP || CH — 101 SI || DH — 110 DI || BH — 111 Разрядность регистров определяется кодом операции. Местоположение операнда определяется полями Mod и R/M следующим образом: если поле Mod содержит значение 11, поле R/M определяет регистр общего назначения являющийся операндом инструкции. Значение поля Mod = 00, 01, 10 определяет операнд в памяти. Значение 00 указывает что при вычислении эффективного адреса операнда отклонение не используется. Значение 01 указывает что используется 8-разрядное отклонение находящееся в байте следующим за байтом ModRegR/M. Значение 10 указывает что используется 16-разрядное отклонение, записанное в двух байтах, следующих за байтом ModRegR/M.
Отклонение является 8-и или 16-разрядной величиной используемой при вычислении эффективного адреса операнда. Один или два байта отклонения располагаются в коде команды сразу за ModRegR/M. Для 16-разрядного отклонения сразу идет младший байт, а потом старший. Наличие отклонения определяется содержимым байта ModRegR/M. 16-разрядное отклонение присутствует в двух случаях: когда поле Mod содержит код 10 либо когда поле Mod содержит значение 00, а поле R/M — 110. Непосредственный операнд 8-и или 16-разрядный присутствует только в командах вида «регистр — непосредственный операнд» и «память — непосредственный операнд». Его наличие определяется кодом операции в которой состоит из байта КОП и поля Reg. Поле Mod и R/M этого байта определяют местоположение второго операнда инструкции — в регистре общего назначения или в памяти.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|