Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.39 Mб
Скачать

8. Структура и функционирование cpu.

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

Так, например, обработка вещественных чисел осуществляется в специальном дополнительном арифметическом сопроцессоре (Numeric Coprocessor), или FPU (Floating-point Unit). Он позволяет осуществлять операции с вещественными числами на два порядка быстрее, чем это может сделать CPU программным путем. (CPU, как правило, реализует только целочисленную арифметику). Другим примером может служить видеопроцессор, который позволяет разгрузить CPU от несвойственных ему функций по регенерации изображения на экране дисплея, преобразования координат и других операций в мультимедийных приложениях. Третьим примером могут служить процессоры ввода/вывода, часто называемые контроллерами, которые разгружают CPU от конкретных операций по вводу/выводу информации.

Что касается терминов процессор и микропроцессор, то следует иметь в виду, что они сейчас являются словами-синонимами, так как в настоящее время все процессоры изготавливаются в виде интегральных микросхем. Их различать имеет смысл разве только тогда, когда процессор, как это имеет место в суперкомпьютерах или мощных mainframe’ах, состоит из многих (до десятков тысяч микросхем) микропроцессоров.

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

- Наименьшие размеры элементов на кристалле полупроводника (обычно кремния) у интегральных схем выпускаемых на рынок, а также расстояний между проводниками на ней, достигает 90 и 65 нм. Готовится к реализации технологический процесс с разрешающей способностью 45 нм, а, начиная с 2009 года, корпорация Intel собирается начать массовый выпуск микросхем по 30 нанометровому технологическому процессу. Уменьшение же размеров элементов в результате улучшения технологии ведет к возможности размещения в одной микросхеме более сложного CPU с кэш-памятью 1 и 2 уровня и увеличения тактовой частоты, при том же энергопотреблении. В конечном счете, все это ведет к увеличению производительности процессора.

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

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

Первый микропроцессор, на котором началось массовое производство компьютеров IBM PC типа i8086/88, был выпущен фирмой Intel в 1978 г. Он явился родоначальником знаменитого семейства процессоров i80Х86 и моделируется всеми процессорами этого семейства в реальном режиме работы вплоть до последних процессоров типа Pentium Extreme Edition. И если тактовая частота процессора i8086 была всего 5 МГц, и изготовлен он был по технологическому процессу с разрешением 5 мкм (имел на подложке 29 тысяч транзисторов), то один из последних процессоров этого семейства – Pentium 4 Prescott имеет тактовую частоту 4 ГГц и содержит на подложке 125 млн. транзисторов (технологический процесс с разрешением 90 и 65 нм). В качестве несколько упрощенных, а следовательно, более дешевых микропроцессоров этого семейства, фирма выпускает микропроцессоры типа Celeron.

Второй конкурирующей фирмой по выпуску микропроцессоров является фирма AMD (Advanced Micro Devices). Начала она с копирования микропроцессоров i80386, купив лицензию у фирмы Intel. Затем их пути разошлись и сейчас она выпускает на рынок свои собственные процессоры типа Athlon, Athlon XP, и упрощенные МП этого типа - Duron, хотя они во многом продолжают линию семейства Х86. Их тактовые частоты – до 3 ГГц и выше, технология последних моделей – 90 и 65 нм, число транзисторов, размещенных на подложке – 55 млн. (Athlon 64-105 млн. транзисторов).

В последнее время и фирма Intel и фирма AMD разработали и выпустили на рынок 64 разрядные МП семейства Itanium (Intel) и Athlon 64 (AMD), однако они большей частью будут использоваться в серверах.

Можно упомянуть также 64 разрядные микропроцессоры Power PC фирмы IBM и микропроцессоры Alpha фирмы DEC (Digital Equipment Corporation), которые, правда, в персональных компьютерах не применяются, а используются, как правило, в серверах, мейнфреймах и суперкомпьютерах.

Вы чаще всего будете сталкиваться с персональными компьютерами, в которых в основном используются МП семейства Х86. Поэтому, мы в качестве примера процессора, рассмотрим структуру и функционирование микропроцессора i8086, принцип работы которого моделируется в реальном режиме работы и во всех дальнейших моделях процессоров семейства i80Х86 и Pentium`ов.

Структурная схема МП i8086 приведена на рис.8.1. Ее удобно представлять в виде трех основных блоков:

- блока формирования адресов и очереди команд;

- блока обработки;

- блока управления и синхронизации.

Рис.8.1 Структурная схема микропроцессора i8086

1. Блок формирования адресов и очереди команд.

Прежде всего, рассмотрим принцип сегментации памяти, который в дальнейшем, в несколько модифицированном виде, используется во всех процессорах семейства i80Х86. Суть его заключается в следующем.

Адресное пространство, т.е. максимально возможный объем оперативной памяти, с которой может работать (может адресовать) процессор i8086 равно 1 Мбайт. Однако, по умолчанию, программа может обращаться только к четырем областям (сегментам) оперативной памяти, каждая объемом по 64 Кбайт. Они называются текущими сегментами памяти (см. рисунок 8.2). Эти четыре сегмента носят название:

- кодовый сегмент (Code Segment);

- сегмент данных (Data Segment);

- сегмент стека (Stack Segment);

- экстра сегмент (Extra Segment).

Рис.8.2 Схема размещения текущих сегментов памяти в адресном

пространстве процессора.

В кодовом сегменте обычно размещаются программы пользователя, в сегменте данных – используемые в программах данные, а в сегмент стека заносятся данные при обращении к стеку. Экстра сегмент является дополнительным сегментом данных и используется для размещения данных при операциях со строками (цепочками) данных. Расположение в адресном пространстве этих сегментов определяется их начальными адресами, которые предварительно заносятся в соответствующие, так называемые, сегментные регистры CS, DS, SS и ES.

Заметим, что при дальнейшем развитии микропроцессоров семейства X86, начиная с процессора i30386, определены еще два дополнительных сегмента данных – FS и GS, которые удобно использовать для размещения дополнительных данных в целом ряде случаев.

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

Напомним, что ячейка памяти – это минимальная адресуемая единица запоминающего устройства, используемая для запоминания одного байта данных. Слово в памяти (16 двоичных разрядов, т.е. два байта) занимает две последовательные ячейки в памяти. Одно двойное слово (32 двоичных разряда) занимает четыре ячейки памяти. Но, при адресации, как слова, так и двойного слова всегда указывается адрес их младшего байта. Поэтому, в случаях, когда это может привести к двусмысленности, необходимо указывать в команде – байт, слово или двойное слово адресуется в данном конкретном случае. При этом всегда необходимо помнить основное правило размещения данных в памяти, справедливое для всех процессоров персональных компьютеров, производимых корпорацией Intel и совместимых с ними: младший байт всегда записывается по младшему адресу.

Следовательно, адрес ячеек оперативной памяти в процессоре хранится в виде двух составляющих: кода указателя начала сегмента, заносимого в соответствующий сегментный регистр, и кода смещения в этом сегменте. Совокупность этих двух 16 разрядных двоичных кодов носит название логического или виртуального адреса.

Размещение информации в памяти следует следующим общим правилам:

- программы могут быть размещены только в кодовом сегменте;

- стековые данные располагаются только в сегменте стека;

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

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

выбираются из сегмента основного сегмента данных DS;

- при выполнении строковых команд выполняются следующие правила:

1) строка назначения при пересылке строки (команда MOVS);

2) строка сканирования (при исполнении команды SCAS);

3) строка сохранения (при исполнении команды STOS);

4) одна из строк сравнения (при исполнении команды CMPS);

всегда размещаются в дополнительном сегменте данных (ES).

При этом, кодом смещения в кодовом сегменте, при формировании адреса очередной выполняемой команды, является содержимое регистра (указателя) команд IP (Instruction Pointer). Кодом смещения в сегменте стека, при обращении к стеку, является содержимое регистра указателя стека SP (Stack Pointer). А кодом смещения в сегментах данных, основного и дополнительного, является так называемый эффективный адрес EA (Effective Address). Эффективный адрес EA, в общем случае, формируется как сумма трех составляющих: содержимого базового регистра общего назначения BX (Base Register), содержимого одного из индексных регистров SI (Source Index) или DI (Destination Index), а также некоторой константы. Причем, некоторые из этих составляющих могут отсутствовать. Следует при этом отметить, что если при формировании эффективного адреса вместо базового регистра BX использовать базовый регистр BP, то автоматически этот эффективный адрес используется как смещение в стековом сегменте SS, а не в сегменте данных DS. Следовательно, в этом случае, принцип стека LIFO (Last In, First Out – последним пришел, первым вышел) игнорируется, и стековый сегмент рассматривается как ОЗУ с произвольной выборкой.

Формирование же физического адреса, который выдается процессором на адресную шину, и который для возможности адресации 1 Мбайт оперативной памяти должен быть 20 разрядным, осуществляется путем специального суммирования кода сегментного регистра, сдвинутого на 4 двоичных разряда влево, с соответствующим кодом смещения. Следовательно, сегменты могут быть размещены в адресном пространстве с дискретностью в 16 байт.

Принцип формирования физического адреса из логического иллюстрирован на рис.8. 3.

Рис 8.3 Формирование физического адреса из логического в

процессоре i8086 и в реальном режиме работы всех более

старших моделях процессоров семейства Х86.

Использование принципа сегментации адресного пространства дает возможность обращаться к любой ячейке адресного пространства размером 1 Мбайт, используя внутри процессора только 16 разрядные операнды. Реализация формирования физического адреса, т.е. адреса, выдаваемого на адресную шину процессора, осуществляется адресным сумматором ∑ , выход которого связан с объединенной шиной адреса/данных (AD19…AD0).

Выбранные из оперативной памяти и подлежащие выполнению команды программы, вводятся через объединенную шину адреса/данных и побайтно записываются в регистры очереди команд. Совокупность регистров очереди команд является некоторой буферной памятью между ОЗУ и процессором. Длина очереди команд составляет 6 байт, что соответствует максимально длинному формату команды. Шинный интерфейс инициирует выборку последующих байт команды автоматически, как только в очереди освободятся два байта. Осуществляется это в то время, когда в блоке обработки осуществляется внутренний процесс обработки данных.

В регистре указателя инструкций IP хранится очередная команда, подлежащие выполнению, а в регистре указателя стека SP размещается адрес вершины стека, т.е. последнего, занесенного в стековую область памяти, слова данных. Константы, находящиеся в командах (инструкциях), а также входные данные поступают из команды, или непосредственно из объединенной шины адреса/данных, на внутреннюю шину данных и запоминаются в регистровой памяти (РОН) процессора. Выходные данные (результаты обработки) из регистровой памяти или непосредственно с выхода ALU, через внутреннюю шину данных и, затем, через объединенную шину адреса/данных, передаются в оперативную память или периферийные устройства.

Связь любого процессора с другими блоками (устройствами) компьютера осуществляется с помощью трех типов шин (совокупностей линий, проводов, по которым передается информация):

- шины адреса (ША или AB – Address Bus);

- шины данных (ШД или DB – Data Bus);

- шины управления (ШУ или CB – Control Bus).

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

По шине данных осуществляется собственно обмен данными между процессором, основной памятью и периферийными устройствами.

И, наконец, через шину управления процессор выдает и получает сигналы управления, связывающие компьютер в единую систему.

В рассматриваемом процессоре i8086 шина адресов и шина данных является совмещенной (мультиплексированной). Демультиплексирование, т.е. разделение адресов и данных вне процессора осуществляется следующим образом (см. рис.8.4).

При выдаче 20 разрядного физического (линейного) адреса на адресную шину процессора, он поступает на внешний 21 разрядный регистр RG, на 21-й вход которого поступает специальный бит разрешения старшего байта BHE (Byte High Enable).

Рис.8.4 Схема демультиплексирования шины адресов и данных

микропроцессора i8086

Для уяснения назначения бита (сигнала) BHE рассмотрим принцип адресации и обмена данными процессора с основной памятью компьютера. Обмен информацией между процессором и памятью может осуществляться байтами, словами, двойными словами и, в старших моделях процессоров семейства Х86, даже квадрословами (словами размером 8 байт). Выборка всех этих единиц информации осуществляется всегда адресацией их младших байтов с указанием размерности выбираемой единицы. В процессорах i8086 обмен информацией предусмотрен только байтами или словами. В то же время сама основная память организована таким образом, что логически представляет собой линейную последовательность байт (см. рис.5а). Два соседних байта образует слово, причем младший байт слова имеет меньший адрес, а старший байт – больший. Адресом слова считается адрес его младшего байта. Таким образом, 20 – битовый адрес может рассматриваться и как адрес байта и как адрес слова.

Рис. 8.5 Организация памяти в системе с микропроцессором i8086

Физически же при использовании МП i8086 память компьютера организуется в виде последовательности слов (рис.5б). При этом, при выборке, ненужные байты блокируются сигналами BHE# и A0.

Полная информация, необходимая для формирования физического адреса, как это было уже сказано выше, содержится в 4 байтном адресном объекте «сегмент:смещение», который называется указателем адреса (иначе – логическим или виртуальным адресом) и содержит двухбайтный код, содержащийся в сегментном регистре, и двухбайтный код внутрисегментного смещения. Таким образом, для запоминания указателя адреса требуется два слова памяти, причем слово с меньшим адресом всегда содержит смещение, а слово с большим адресом – код в сегменте.

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

Команды автоматически всегда выбираются словами по четным адресам, за исключением первой выборки после передачи управления по нечетному адресу, когда выбирается один байт. Однако, поток команд разделяется на байты при заполнении очереди команд внутри МП, так что выравнивание команд не влияет на производительность и поэтому не используется. Следовательно, байты команд можно свободно размещать по любому адресу, что позволяет экономить память, благодаря ее более плотной упаковке.

Заметим, что в старших моделях МП семейства Х86, где используется 32 разрядная адресация, для возможности и удобства обращения к любому байту, адресуемого 4 байтного слова, младшие разряды адреса A1 и A0 декодируются в самом процессоре. Поэтому, в этом случае, на адресную шину выдаются 30 старших разрядов адреса A31…A2 и четыре управляющих сигнала, получаемых после декодирования адресных битов A1 и A0, а именно: BE0#, BE1# , BE2# и BE3#. При этом:

BE0# - адресует байт D7…D0;

BE1# - адресует байт D15…D8;

BE2# - адресует байт D23…D16;

BE3# - адресует байт D31…D24.

При использовании процессоров i8086, 20 разрядов адресного кода и сигнал BHE записываются в регистр RG по положительному фронту сигнала ALE (Address Latch Enable) и хранятся там на все время машинного цикла обмена информации с оперативной памятью (см. рис.VIII.4). Выходы регистра RG соединены с системной шиной адреса, к которой подключены адресные входы ОЗУ и периферийных устройств.

Параллельно, младшие 16 разрядов подаются на входы шинного формирователя BD (Bus Driver). Но, во время выдачи адресного кода входы шинного формирователя закрыты высоким уровнем (единичным состоянием) сигнала DEN (Date Enable), вследствие чего адресный код на шину данных не проходит.

После выдачи кода адреса и фиксирования его в регистре адреса RG, на объединенную шину адреса/данных процессор выдает 16 разрядное слово данных. Это слово передается на системную шину данных через шинный формирователь (двусторонний усилитель мощности) BD по низкому уровню сигнала DEN. При этом, данные могут передаваться не только от процессора к ОЗУ, но и приниматься процессором от ОЗУ. Поэтому процессор, в зависимости от того происходит ли цикл записи информации в память, или цикл ее считывания из памяти, меняет направление передачи информации в BD путем генерирования управляющего сигнала DT/R# (Data Transmit/Receive). Во все время передачи данных входы регистра адреса RG закрыты.

Работа процессора разбивается на машинные циклы, в течение которых выполняется одна какая-нибудь операция (команда). Основной смысл работы процессора заключается в последовательном выполнении команд заданной программы. Цикл выполнения одной команды в общем случае состоит из следующих действий.

1. Выборка очередной команды из оперативной памяти, где она размещена, и передача ее в регистры очереди команд.

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

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

4. Осуществить требуемую операцию.

5. Переслать результат операции по адресу первого операнда для дальнейшего хранения.

2. Блок обработки данных.

Сама обработка данных по алгоритмам пользователя или ОС осуществляется в блоке обработки данных, который состоит из арифметико-логического устройства ALU (Arithmetic-Logic Unit), регистра флагов Flags, 7 регистров общего назначения (AX, BX, CX, DX, BP, SI, DI) и регистра временного хранения информации, куда передается один из операндов обработки. Из них регистры AX, BX, CX, DX могут адресоваться не только как 16 разрядные регистры, но и раздельно, т.е. как 8 разрядные регистры AH и AL, BH и BL, CH и CL, DH и DL. При этом регистры H (High) образуют старшие байты соответствующих 16 разрядных регистров, а регистры L (Low) – их младшие байты. Однако каждый регистр общего назначения, кроме их использования в большинстве операций записи и считывания, имеют и ряд специфических применений, в которых использоваться могут только они.

Так, по умолчанию, множимое, при операциях умножения, и делимое, при операциях деления, размещаются только в регистре AX (или AL, при однобайтовом умножении и делении). Результат умножения автоматически фиксируется в регистре AX (при однобайтовом умножении), либо в регистрах DX (старшие байты) и AX (младшие байты) при двухбайтном умножении. При операции деления частное размещается в регистре AL, а остаток в регистре AH (при байтовом делении) и, соответственно, в регистрах AX и DX при двухбайтовом делении. (Напомним, что в центральном процессоре реализуется только целочисленное умножение и деление). Кроме того, регистр AX(AL) всегда является источником или получателем данных при операциях обмена информацией с периферийными устройствами, а также при операциях загрузки (сохранения) или сканирования элементов цепочечных (строковых) данных.

Регистр BX (Base register) при косвенной адресации содержит начальный адрес некоторой области памяти (базовый адрес), который, суммируясь с адресным смещением в команде, формирует эффективный адрес требуемой ячейки памяти.

Регистр-счетчик CX (Counter register) используется по умолчанию при выполнении целого ряда команд:

- при организации циклических операций, в него заносится требуемое число циклов;

- при операциях со строками (цепочками), в него заносится число элементов строки, т.е. длина строки;

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

Регистр DX (Data register) кроме своего участия в описанных выше операциях умножения и деления, используется для косвенной адресации периферийных устройств, если их число превышает 256.

Регистр BP (Base Pointer), используемый как базовый при формировании эффективного адреса, позволяет адресовать ячейки памяти стековой области как обычной области данных, а не последовательно через указатель стека, используя принцип LIFO (Last In, First Out).

Регистры SI (Source Index) и DI (Destination Index) используются для косвенной адресации при исполнении таких строковых команд, как LOADS (Load String) – загрузить строку, MOVS (Move String) – переслать строку, CMPS (Compare String) – сравнить строки. При выполнении этих строковых операций, регистры SI и DI автоматически инкрементируются (при флаге DF=0) или декрементируются (при флаге DF=1), что позволяет при использовании префиксов типа REP выполнять соответствующую строковую команду до тех пор, пока заданное заранее содержимое счетчика CX не сравняется с нулем или не выполнится некоторое заданное условие. Кроме того, эти регистры используются для организации так называемой базово-индексной адресации, когда эффективный адрес EA формируется как сумма содержимого индексного (SI или DI) регистра с содержимым базового регистра (BX или BP) с добавлением в ряде случаев некоторой константы – смещения в команде.

Заметим, что в старших моделях МП семейства Х86, при формировании эффективных адресов, как в качестве базовых, так и в качестве индексных могут быть использованы все регистры общего назначения.

Регистр Flags является регистром флагов (признаков). Отдельные биты этого регистра (флаги) либо представляют информацию о результате выполненной в ALU операции (флаги состояния), либо могут устанавливаться пользователем и позволяют влиять на процесс обработки (флаги управления).

Рассмотрим назначение отдельных флагов регистра Flags подробнее.

Флаги состояния.

CF (Carry Flag) – флаг переноса. Устанавливается аппаратно при возникновении переноса из старшего разряда ALU при осуществлении арифметических и сдвиговых операций. Кроме того, флаг CF может устанавливаться и сбрасываться программно. Состояние флага CF используется процессором при осуществлении арифметических операций для определения переполнения разрядной сетки или переноса и заема, при действиях с многоразрядными целыми беззнаковыми числами, а также для определения знака результата в этих случаях. Кроме того, флаг CF используется при выполнении сдвиговых операций, а также при выполнении операций условного перехода.

PF (Parity Flag) – флаг паритета. Устанавливается аппаратно при четном числе единиц в коде младшего байта результата операции. Процессором флаг PF используется:

- при проверке работоспособности памяти компьютера с помощью диагностических тестов;

- для определения ошибок при передаче данных;

- при выполнении операций условного перехода.

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

ZF (Zero Flag) – флаг нулевого результата. Устанавливается аппаратно при равенстве нулю результата выполнения операции. Процессором используется при исполнении команд условных переходов.

SF (Sign Flag) – флаг знака. Устанавливается аппаратно при появлении 1 в старшем разряде результата выполнения операции и, следовательно, характеризует знак результата при арифметических операциях с целыми числами со знаком. Используется процессором при исполнении команд условных переходов по знаку результата.

OF (Overflow Flag) – флаг переполнения. Устанавливается в случае переполнения разрядной сетки при осуществлении арифметических операций над числами со знаком, поскольку, в этом случае, установление в 1 флага CF не может служить признаком переполнения разрядной сетки. Флаг переполнения OF устанавливается аппаратно и является логической функцией неравнозначности двух переносов: переноса в старший (знаковый) разряд результата и переноса из старшего разряда. Процессором этот флаг используется обычно для вызова процедур обработки прерывания по переполнению с помощью команды INTO (Interrupt on Overflow).

Флаги управления.

IF (Interrupt Flag) – флаг разрешения прерывания. Флаг IF устанавливается и сбрасывается программно самим пользователем. Установкой этого флага (IF=1) пользователь разрешает процессору реагировать на поступление запросов маскируемых прерываний, поступающих от внешних источников по входу INTR. На другие типы прерываний состояние этого флага не влияет. Установка этого флага осуществляется командой STI (Set Interrupt), а сброс – командой CLI (Clear Interrupt).

DF (Direction Flag) – флаг направления. Применяется этот флаг при использовании команд обработки строк, элементы которых адресуются с помощью индексных регистров SI и DI. При DF=0 индексные регистры инкрементируются после каждого выполнения строковой команды, и обработка строк происходит по элементам (байтам или словам) от младших адресов к старшим. При DF=1 индексные регистры после каждого выполнения строковой команды декрементируются, и обработка строк происходит от старших адресов к младшим. Флаг DF устанавливается и сбрасывается программно с помощью команд STD (Set Direction) и CLD (Clear Direction), соответственно.

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

Отметим, что при дальнейшем развитии МП семейства Х86, в более старших моделях, например, процессорах Pentium, число используемых флагов, в регистре Flags увеличивалось, и в последних моделях достигало 18.

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

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

3. Блок управления и синхронизации.

Блок управления и синхронизации (БУС) генерирует управляющие сигналы, которые определяют работу, как самого процессора, так и всего компьютера в целом. Эти управляющие сигналы представляют две группы сигналов: внутренние (УС), поступающие на элементы и узлы самого процессора с микропрограммного устройства управления БУС, и внешние, выдаваемые на внешние, по отношению к процессору, устройства (BHE, ALE, DEN#, DT/R#, WR#, RD, HLDA, INTA#). Напоминаем, что символ # обозначает низкий активный уровень данного сигнала (лог.0).

Внешние выходные сигналы служат для управления шинами, устройствами ввода/вывода, оперативной и внешней памятью, коммутационными устройствами и т.п. Эти выходные сигналы БУС вырабатывает под воздействием целого ряда входных сигналов, таких как:

- кода операции, поступающего на него из текущей команды;

- состояния битов регистра флагов после выполнения предыдущей

команды;

- внешних входных сигналов (RESET, CLK, READY, TEST#, HOLD,

INTR).

Внешние входные сигналы процессора имеют следующее назначение:

CLK (Clock) – вход сигналов синхронизации, которые определяют тактовую частоту процессора;

RESET – сигнал установки процессора в исходное состояние (сброс), активный уровень сигнала соответствует уровню лог.1;

TEST# - сигнал с активным уровнем лог.0, разрешающий выполнение программы, остановленной командой WAIT;

READY сигнал с активным уровнем лог.1, подтверждающий завершение обмена данными с адресуемой ячейкой памяти или портом ввода/вывода (сигнал готовности). Низкий уровень сигнала (лог.0) вызывает появление тактов ожидания (Wait States) процессора;

INTR (Interrupt) - сигнал с активным уровнем лог.1, являющийся маскируемым запросом прерывания от любого периферийного устройства;

NMI (Non masked Interrupt) – сигнал с активным уровнем лог.1, являющийся немаскируемым запросом прерывания от внешних устройств;

HOLD - сигнал с активным уровнем лог.1, являющийся запросом прямого доступа к оперативной памяти;

Внешние выходные сигналы имеют следующее назначение:

RD# (Read) – сигнал с активным уровнем лог.0, характеризующий цикл чтения информации из ОЗУ или периферийных устройств;

WR# (Write) – сигнал с активным уровнем лог.0, характеризующий цикл записи информации в ОЗУ или периферийные устройства;

ALE (Address Latch Enable) – сигнал с активным положительным фронтом, определяющий момент записи кода адреса во внешний буферный регистр, связанный по выходу с системной адресной шиной компьютера;

BHE# (Byte High Enable) – сигнал с активным уровнем лог.0, разрешающий передачу данных по старшей половине канала данных D15…D8;

M/IO# (Memory/Input-Output) – сигнал, определяющий внешнее устройство при обмене данными с процессором (лог.0 – периферийное устройство, лог.1 – оперативная память);

DEN (Data Enable) – сигнал с активным уровнем лог.1, отпирающий усилитель (шинный формирователь), связывающий процессор с системной шиной данных компьютера;

DT/R# (Data Transmit/Receive) – сигнал, определяющий направление передачи данных в системе. (Лог.0 – прием, т.е. данные передаются из системной шины данных в процессор; лог.1 – передача, т.е. данные передаются от процессора в системную шину данных);

INTA# (Interrupt Acknowledge) – сигнал с активным уровнем лог.0, подтверждающий прием запроса на прерывание и готовность принять код типа прерывания от контроллера прерывания;

HLDA (Hold Acknowledge) – сигнал с активным уровнем лог.1, подтверждающий прием запроса на прямой доступ к оперативной памяти и разрешающий его реализацию.