Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация ЭВМ и систем. Учебное пособие
.pdf
7 Организация ЭВМ на базе МП Intel
7.1 Структура микропроцессора
Упрощенная структурная схема микропроцессора ВМ86, представленная на
рисунке 7.1, состоит из двух относительно автономных компонентов: операционно-
го блока, который реализует операции, указанные в команде, и блока шинного ин-
терфейса, отвечающего за выборку команд из памяти, а также обращение к памяти и
внешним устройствам для считывания операндов и записи результатов.
Рисунок 7.1 – Структурная схема МП ВМ86
Оба эти устройства способны функционировать параллельно, что обеспечива-
ет одновременное выполнение процессов выборки команд и их исполнения. Это
значительно повышает производительность микропроцессора, поскольку операци-
онный блок, как правило, выполняет команды, для которых коды уже находятся во
внутренней памяти микропроцессора, и поэтому такты, связанные с выборкой ко-
манды из внешней памяти, не включаются в общий цикл выполнения команды [13].
101

7.2 Регистровая (программистская) модель МП ВМ86
Под программистской моделью следует понимать совокупность регистров, ко-
торые доступны программисту, оперирующему на уровне низкоуровневых машин-
ных команд или инструкций на языке ассемблера.
Программистская модель включает в себя 14 регистров:
1) регистры общего назначения : (AX, BX, CX, DX, BP, SI, DI, SP);
2) сегментные регистры: (CS, DS, SS, ES);
3) счетчик (указатель) команд (IP);
4) регистр флагов (Flags) (F).
Расшифровка этих названий:
A - accumulator, аккумулятор;
B - base, база;
C - counter, счетчик;
D - data, данные;
BP - base pointer, указатель базы;
SI - source index, индекс источника;
DI - destination index, индекс приемника;
SP - stack pointer, указатель стека;
CS - code segment, сегмент команд;
DS - data segment, сегмент данных;
SS - stack segment, сегмент стека;
ES - extra segment, дополнительный сегмент;
IP - instruction pointer, счетчик команд.)
Кроме основных функций, соответствующих названию регистров, общие ре-
гистры выполняют специальные функции, указанные в таблице 7.1.
102

Таблица 7.1 – Регистры, название и их специальные функции
Регистр
Название
Специальная функция регистра
AX
Аккумулятор
Умножение, деление
и ввод – вывод слов
AL
Аккумулятор (младший байт)
Умножение, деление и ввод – вывод
байтов; десятичная арифметика
AH
Аккумулятор (старый байт)
Умножение и деление слов
BX
Базовый регистр
Адресация по базе;
преобразование адресов
CX
Счетчик
Подсчет циклов; подсчет элементов
цепочек
CL
Счетчик
(младший байт)
Реализация параметрических сдвигов
DX
Регистр данных
Умножение и деление слов;
косвенный ввод – вывод
SP
Указатель стека
Операции с использованием стека
BP
Указатель базы
Базовый регистр
SI
Индекс источника
Указатель цепочки – источника, индексный
регистр
DI
Индекс приемника
Указатель цепочки – приемника,
индексный регистр
7.3 Состав микропроцессора
7.3.1 Операционное устройство микропроцессора (МП) включает в себя сово-
купность элементов, таких как группа общих регистров, арифметико-логическое
устройство (АЛУ), регистр флагов F и блок управления. Этот комплекс представля-
ет собой ключевую часть МП, отвечающую за выполнение команд [14].
В состав операционного устройства входит восемь 16-битовых регистров об-
щего назначения, которые активно используются в различных командах. В таких
случаях регистры общего назначения кодируются трехбитовыми кодами, которые
размещаются в соответствующих полях формата команды. Рассматриваемые реги-
103

стры классифицируются на регистры AX, BX, CX и DX, прежде всего предназна-
ченные для хранения данных, и регистры SP, BP, SI и DI, которые в основном слу-
жат для хранения адресной информации. Важной особенностью регистров AX, ВX,
СX и DX является возможность их разделенного использования, как для младших
байтов AL, BL, CL и DL, так и для старших байтов AH, BH, CH и DH. Это обеспе-
чивает гибкость при обработке данных как в формате слов, так и в формате байтов.
Все остальные регистры являются неделимыми и оперируют только 16-
битовыми словами, даже в случаях, когда используется лишь старший или младший
байт. Указательные регистры SP и BP хранят смещение адреса в пределах текущего
стекового сегмента памяти, в то время как индексные регистры SI и DI хранят сме-
щение адреса в текущем сегменте данных и текущем дополнительном сегменте со-
ответственно. Но при использовании этих регистров для адресации операндов суще-
ствует возможность переключения между сегментами памяти.
7.3.2 Арифметико-логическое устройство (АЛУ) представляет собой состав-
ную часть микропроцессора, включающую в себя 16-битовый комбинационный
сумматор, предназначенный для выполнения арифметических операций, набор ком-
бинационных схем, предназначенных для логических операций, а также схемы,
предназначенные для выполнения операций сдвигов и десятичной коррекции. Кро-
ме того, АЛУ включает в себя регистры, которые используются для временного
хранения операндов и результатов операций.
7.3.3 К арифметико-логическому устройству (АЛУ) примыкает регистр флагов
F, что проиллюстрировано на рисунке 7.2, где символ "X" обозначает неопределен-
ное состояние бита. Этот регистр флагов F состоит из двух байтов: младший байт FL
полностью соответствует регистру флагов К580ВМ80, в то время как старший байт
FH содержит четыре дополнительных флага, которых нет в регистре флагов
К580ВМ80.
Шесть арифметических флагов, предусмотренных в регистре флагов F, служат
для фиксации различных признаков, связанных с результатами выполнения опера-
ций, будь то арифметические, логические, операции сдвига или загрузки регистра
104

флагов. Значения этих флагов (за исключением флага AF) используются для реали-
зации условных переходов, которые воздействуют на ход выполнения программы.
Рисунок 7.2 – Состав регистра флагов
Рассмотрим функциональное предназначение арифметических флагов, кото-
рые играют важную роль в системе управления микропроцессором.
Флаг переноса (CF): Данный флаг фиксирует наличие переноса (или заема),
возникающего при выполнении арифметических операций, таких как сложение или
вычитание байтов или слов. Кроме того, флаг CF также фиксирует значение бита,
выдвигаемого при операциях сдвига операндов.
Флаг четности (PF): Флаг PF служит для определения четности (или паритета)
младшего байта результата операции. Он может быть использован, например, для
контроля правильности передачи данных.
Флаг вспомогательного переноса (AF): Флаг AF фиксирует перенос (или заем)
из младшей тетрады, то есть из бита a3, в старшую тетраду при выполнении опера-
ций сложения или вычитания. Флаг AF используется исключительно в контексте
двоично-десятичной арифметики, которая оперирует младшими байтами.
Флаг нуля (ZF): Флаг ZF устанавливается в случае получения нулевого ре-
зультата операции, что позволяет определить, что результат является нулем.
Флаг знака (SF): Флаг SF дублирует значение старшего бита результата, кото-
рый при использовании дополнительного кода соответствует знаку числа.
Флаг переполнения (OF): Флаг OF сигнализирует о возможной потере старше-
го бита результата при выполнении операций сложения или вычитания с знаковыми
числами. При сложении, флаг OF устанавливается в 1, если происходит перенос в
старший бит, но нет переноса из старшего бита, или если есть перенос из старшего
бита, но отсутствует перенос в него. При вычитании, флаг OF устанавливается в 1,
105

если происходит заем из старшего бита, но отсутствует заем в старший бит. Микро-
процессор предоставляет специальную команду для обработки ситуаций, связанных
с переполнением, что приводит к генерации программного прерывания в указанных
случаях.
Для управления определенными аспектами работы микропроцессора преду-
смотрены три дополнительных флага:
Флаг направления (DF): Флаг DF управляется командами CLD и STD и опре-
деляет порядок обработки цепочек в соответствующих командах: от меньших адре-
сов (DF = 0) или от больших адресов (DF = 1).
Флаг разрешения прерываний (IF): Флаг IF управляется командами CLI и STI.
Если IF = 1, микропроцессор обрабатывает запросы прерываний по входу INTR. При
IF = 0 прерывания по этому входу запрещаются, и микропроцессор игнорирует по-
ступающие запросы прерываний. Значение флага IF не влияет на обработку внеш-
них немаскируемых прерываний по входу NMI и внутренних (программных) преры-
ваний, которые выполняются по команде INT.
Флаг трассировки (TF): Флаг TF используется при отладке программ. При
установке TF = 1, микропроцессор переходит в пошаговый режим, автоматически
генерируя сигналы внутренних прерываний после выполнения каждой команды. Это
позволяет отслеживать выполнение программы и контролировать состояние внут-
ренних регистров микропроцессора. Команды для установки или сброса флага TF
отсутствуют, поэтому управление им осуществляется через пересылку содержимого
регистра флагов F через стек в общий регистр, установку требуемого значения
восьмого бита и обратную пересылку сформированного слова в регистр F.7.3.4
Управляющее устройство (УУ) дешифрует команды, а также воспринимает и выра-
батывает необходимые управляющие сигналы. В его состав входит блок микропро-
граммного управления, в котором реализовано программирование МП на микроко-
мандном уровне.
7.3.5 Шинный интерфейс, или просто интерфейс системной шины, представ-
ляет собой компонент микропроцессорной системы, включающий в себя блок сег-
ментных регистров, указатель команд, сумматор адресов, очередь команд и буферы,
106

которые обеспечивают эффективную связь между микропроцессором и памятью, а
также портами ввода-вывода. Задачей шинного интерфейса является осуществление
операций обмена данными между микропроцессором и памятью, а также портами
ввода-вывода в ответ на запросы операционного устройства.
В ситуации, когда операционное устройство находится в процессе выполнения
команды, шинный интерфейс автономно осуществляет операцию предварительной
выборки кодов следующих команд из памяти. Это позволяет обеспечивать непре-
рывную и эффективную работу микропроцессорной системы, минимизируя ожида-
ние операционного устройства и ускоряя обмен данными между микропроцессором
и внешними устройствами.
7.3.6 Очередь команд представляет собой набор байтовых регистров, служа-
щих в качестве регистра команд, где хранятся коды команд, выбранные из про-
граммной памяти. Длина этой очереди составляет 6 байт, что соответствует макси-
мальной длине формата команды. Присутствие очереди команд и способность опе-
рационного устройства и шинного интерфейса работать параллельно позволяют эф-
фективно объединить во времени фазы выборки команд и выполнения заданной
операции. В момент, когда операционное устройство выполняет текущую команду,
шинный интерфейс автоматически начинает выборку следующей команды. Этот
процесс обеспечивает высокую загрузку системной шины и увеличивает скорость
выполнения программы.
Шинный интерфейс инициирует выборку следующего командного слова ав-
томатически, когда в очереди освобождаются два байта. Обычно в очереди всегда
находится по крайней мере один байт команды, что позволяет операционному
устройству не простаивать в ожидании выборки команды. Однако стоит отметить,
что опережающая выборка команд эффективна только в том случае, если команды
выполняются в естественном порядке. Когда операционное устройство выполняет
команду, связанную с передачей управления (переходом) в программе, шинный ин-
терфейс сбрасывает очередь, выбирает команду по новому адресу, передает ее в
операционное устройство и начинает заполнять очередь команд данными из следу-
ющих ячеек памяти. Эти действия выполняются при условных и безусловных пере-
107

ходах, вызовах подпрограмм, возвратах из подпрограмм и при обработке прерыва-
ний.
По мере необходимости операционное устройство считывает байт из очереди
и выполняет предписанную командой операцию. При многобайтовых командах из
очереди считываются и другие байты команды. В случае, когда очередь оказывается
пустой к моменту считывания, операционное устройство ожидает выборку следую-
щего командного слова, которую инициирует шинный интерфейс. Если команда
требует доступа к памяти или портам ввода-вывода, операционное устройство за-
прашивает у шинного интерфейса выполнение соответствующего цикла системной
шины для передачи данных. Когда шинный интерфейс не занят выполнением вы-
борки команды, он удовлетворяет запрос операционного устройства немедленно. В
противном случае операционное устройство ожидает завершения текущего цикла
шины. Сам шинный интерфейс приостанавливает операцию выборки команд во
время передачи данных между операционным устройством и памятью или портами
ввода-вывода.
7.3.7 Буфер шины адреса/данных (БАД) содержит 16 двунаправленных управ-
ляемых усилителей с тремя выходными состояниями и обеспечивает номинальную
нагрузочную способность линий AD15 – ADO.
7.3.8 Буфер шины адреса/состояния (БАС) представляет собой устройство, ко-
торое состоит из четырех однонаправленных усилителей с тремя выходными состо-
яниями и предназначено для обеспечения номинальной нагрузочной способности
линий A19/S6 - A16/S3.
7.3.9 Сегментные регистры представляют собой специальные регистры, в ко-
торых хранятся базовые (начальные) адреса различных сегментов памяти. Эти сег-
менты включают в себя кодовый сегмент CS, в котором хранится программа; стеко-
вый сегмент SS; сегмент данных DS; и дополнительный сегмент ES, который обыч-
но используется для хранения данных. Наличие сегментных регистров связано с
принципом разделения памяти на сегменты и методом формирования адресов в па-
мяти.
108

Несмотря на то, что микропроцессор имеет 20-битную физическую адресную
шину, он оперирует 16-битными логическими адресами. Логический адрес состоит
из базового адреса сегмента и внутрисегментного смещения. Внутрисегментное
смещение может быть вычислено в соответствии с методом адресации, указанным в
команде, может быть частью формата команды или содержаться в общем регистре.
Физический адрес формируется путем сложения внутрисегментного смещения и со-
держимого соответствующего сегментного регистра, при этом результат дополняет-
ся четырьмя нулевыми младшими разрядами.
7.3.10 Сумматор адресов осуществляет вычисление 20-битовых физических
адресов.
7.3.11 Указатель команд IP хранит смещение следующей команды в текущем
кодовом сегменте, т. е. указывает на следующую по порядку команду. Он является
аналогом стандартного программного счетчика с той лишь разницей, что его содер-
жимое определяет адрес команды лишь в совокупности с содержимым регистра CS;
если же CS заполнен нулями, аналогия становится полной. Модификация IP осу-
ществляется шинным интерфейсом так, что при обычной работе IP содержит сме-
щение того командного слова, которое шинный интерфейс будет выбирать из памя-
ти. Оно не совпадает со смещением очередной команды (находящейся в этот момент
на выходе очереди команд), которую будет выполнять операционное устройство.
Поэтому при запоминании содержимого IP в стеке, например при вызове подпро-
грамм, оно автоматически корректируется, чтобы адресовать следующую команду,
которая будет выполняться. Эта особенность является следствием опережающей
выборки команд, реализованной в BM86. Непосредственный доступ к IP имеют ко-
манды передачи управления.
7.4 Адресное пространство основной памяти
7.4.1 Размещение байтов и слов в памяти. Память организована как одномер-
ный массив байтов, и каждый байт имеет 20-битовый физический адрес в диапазоне
от 00000 до FFFFF (в шестнадцатеричной системе счисления). Любые два смежных
109

байта в памяти могут быть рассмотрены как 16-битное слово, где младший байт
слова имеет меньший адрес, а старший байт имеет больший адрес. Такое размеще-
ние байтов в слове используется в архитектуре ВМ80 и в большинстве современных
микро-ЭВМ. Адресом слова считается адрес его младшего байта. Таким образом,
20-битовый адрес памяти может быть интерпретирован как адрес байта и как адрес
слова.
Для определения физического адреса используется адресный объект «сег-
мент:смещение», известный как указатель адреса. Он содержит адрес сегмента и
внутрисегментное смещение. Для хранения указателя адреса требуется два слова
памяти, где младшее слово всегда содержит смещение, а старшее слово содержит
базовый адрес сегмента (рисунок 7.3). Каждое слово хранится так, что младший
байт находится по меньшему адресу.
Рисунок 7.3 – Размещение слов в памяти
Команды, байты и слова данных в архитектуре памяти могут быть размещены
по произвольным адресам, что способствует оптимальному использованию памяти в
контексте ее плотной упаковки. Однако, с целью оптимизации времени выполнения
программы, предпочтительно размещать слова данных в памяти по четным адресам,
поскольку микропроцессор передает такие слова за один цикл шины данных. Слово,
расположенное на четном адресе, называется выровненным на границе слов. Слова,
расположенные на нечетных адресах (не выровненные), также допустимы, но для их
передачи требуется два цикла шины данных, что ведет к снижению производитель-
ности микропроцессора. Каждый цикл шины данных имеет четыре обязательных
такта.
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
