Научный форум dxdy
Последний раз редактировалось e2e4 16.06.2011, 17:20, всего редактировалось 1 раз.
Вопрос нечеткий, хотелось бы получить хотя бы наметки ответа.
Понятно, что процессоры бывают разного назначения, скажем для целей управления, для мощных (возможно, специфических) вычислений, общего применения и т.п. Но давайте рассмотрим некоторый «среднестатистический» микропроцессор, одинаково хороший (и плохой) для всех возможных задач, ну, скажем, центральный микропроцессор для бытового ПК. Архитектура RISC/CISC, никакой экзотики.
Далее, условимся, что у него строго фиксирован размер длины поля команды (по ряду не важных в этом обсуждении причин).
Вопрос: как бы поумнее подойти к вопросу выбора этой длины команды (разрядности), добиваясь максимальной эффективности? С одной стороны, слишком короткие команды слишком просты, и требуется из большое число (т.е. кол-во обращений к памяти), чтобы выполнить некоторую задачу. С другой стороны, слишком длинные команды сильно усложняют декодер команд, и, соответственно, выполняются медленнее. Есть и ряд других соображений, которые знакомы разработчикам процессоров, я просто привел два противоположных, чтобы подчеркнуть мысль о том, что где-то должен быть некоторый оптимум размера команды с учетом конкретного применения процессора.
Также хотелось бы пообсуждать «джентельменский набора» команд процессора в привязке к предлагаемой длине команд (с учетом естественного ограничения кол-ва возможных команд), хотя, в отрыве от архитектуры, наверное это не очень актуально.
Большая просьба, не давать ответов общего характера, а также невнятных ссылок (внятные — очень желательны, однако проведя много дней тематического поиска в инете, не нашел практически ничего вразумительного). Хотелось бы услышать именно Ваши соображения по поднятому вопросу. Спасибо.
Re: Разрядность команд процессора
16.06.2011, 18:29
Заслуженный участник |
e2e4 в сообщении #458757 писал(а):
размер длины поля команды
e2e4 в сообщении #458757 писал(а):
Вопрос: как бы поумнее подойти к вопросу выбора этой длины команды (разрядности),
Так «длины команды» или «разрядности»? Это разные вещи.
e2e4 в сообщении #458757 писал(а):
С одной стороны, слишком короткие команды слишком просты, и требуется из большое число (т.е. кол-во обращений к памяти), чтобы выполнить некоторую задачу.
Большее число команд не означает большего количества обращений к памяти. Скорее наоборот.
e2e4 в сообщении #458757 писал(а):
С другой стороны, слишком длинные команды сильно усложняют декодер команд, и, соответственно, выполняются медленнее.
Длинные команды наоборот упрощают декодер. А медленнее они могут выполнятся потому что программа становится длиннее и требуется больше времени на чтение кода из памяти.
С другой стороны, более длинные команды дают возможность использовать больше регистров, уменьшая количество обращений к памяти за данными.
Не забывайте, что в современных компьютерах память обычно медленнее процессора, и для повышения производительности надо уменьшать количество обращений к памяти.
Микропроцессор должен быть шестнадцатиразрядным (формальное обоснование)
Берём всё бесконечное и неопределимое множество возможных реализаций микропроцессора и выделяем ключевые параметры, определяющие его архитектуру:
R — разрядность (ширина единицы памяти в битах)
A — количество адресуемых единиц памяти (объём адресного пространства)
C — количество исполняемых команд (объём командного пространства)
Задаём ключевое условие, способствующее целостности и завершённости информационной модели (и как следствие — эффективности и удобству в использовании устройства, реализованного на её базе):
A = C = 2 ^ R
Соблюдение данного условия означает, что любая ячейка способна вместить адрес любой другой ячейки, а также содержит исчерпывающую информацию о выполняемом действии. Уменьшение адресного пространства чревато ссылками на несуществующую память, а увеличение — избыточной информацией, необходимой для обеспечения возможности адресовать всю память. То же самое с командным пространством. Таким образом наше гипотетическое множество не перестаёт быть бесконечным, зато становится более определимым.
Существуют ли другие условия, удовлетворяющие перечисленным выше критериям и очевидные без углубления в детали разработки низкоуровневой архитектуры? Да, по крайней мере одно такое условие существует:
R = 2 ^ n
Соблюдение данного условия означает, что для задания номера любого бита в ячейке требуется целое число бит (опять же, избыток или недостаток здесь нежелателен из соображений удобства написания и надёжности работы машинного кода).
Очевидно, что n=4 — это минимальное приемлемое значение, поскольку 256 байт памяти при n=3 годится разве что для программирования ёлочных гирлянд. При n=5 получаем объём памяти, соответствующий последним достижениям в сфере ИТ. Но если считать главным назначением памяти, адресуемой процессором, хранение машинного кода (движка), а данные, которыми манипулирует этот движок, вынести за пределы адресного пространства (то есть если исходить из представления, что их носителями будут внешние устройства), то такой объём памяти (16 Гб) будет явно избыточным. Действительно, в ОЗУ современных компьютеров на долю машинного кода приходится лишь малая части памяти, всё остальное — данные. Кроме того, разделение кода и данных на аппаратном уровне вполне согласуется с представлением о хорошем стиле как проектирования микропроцессора, так и программирования на его асемблере. В мегабит машинного кода, написанного на эффективном асме (при условии вынесения данных за пределы адресуемого процессором ОЗУ), можно вместить полноценную ОСь. Если же этой памяти окажется недостаточно (например, для реализации многозадачности), можно использовать несколько процессоров, ведь «разделение труда» в области ИТ тоже, как правило, способствует удобству разработки программ и эффективности их функционирования. В принципе, для реализации многозадачности ничего не мешает обойтись и одним процессором: можно, скажем, реализовать быстрый интерфейс обмена данными между ОЗУ и внешней памятью — благо, небольшой объём ОЗУ позволяет обновлять его не последовательно, а параллельно (одним «кадром»), так что любой участок процессорной памяти можно будет перезаписать за считанные такты.
Я это всё к тому, что любые препятствия, вызванные ограничением объёма адресуемой памяти до одного мегабита, несложно обойти посредством аппаратной реализации обмена данными с внешней памятью. Преимуществу же использования именно шестнадцатиразрядной архитектуры, помимо приведённых выше соображений, можно дать формальное обоснование, а именно:
R % n = 0
Соблюдение данного условия означает, что в одной ячейке памяти можно разместить целое число значений в диапазоне [ 0..R-1 ] (например, для n=5 это условие не соблюдается — в данном случае R, равное 32-м битам, не делится на 5 без остатка). Поскольку разрядность процессора является фундаментальным параметром, такое свойство может оказаться в дальнейшем весьма полезным.
Ну и наконец главным аргументом в пользу числа 16, положенного в основу низкоуровневой архитектуры, является то обстоятельство, что оно задаёт оптимальный объём командного пространства — примером тому может послужить процессор PDP-11 (впрочем как и большинство современных процессоров, расширение разрядности которых практически не сказалось на их системе команд).
Для наглядности приведу последовательность, отражающую фундаментальность приведённых выше обоснований:
2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4 ( = n )
2 ^ 4 = 16 ( = R )
2 ^ 16 = 65536 ( = A = C )
Стоит также упомянуть о том, что с тех пор как ИТ начали развиваться бешенными темпами, не было предложено, пожалуй, ни одного завершённого решения. Даже PDP-11 (в моём представлении наиболее удачная реализация) вряд ли использует командное пространство больше, чем на 50% — довольно значительную его часть составляет резервный код, а также способы адресации, формально допустимые (так как попадают под общие правила), но реально неиспользуемые, поскольку они либо приводят к гарантированному зависанию программы ( MOV -(PC),… ), либо просто бесполезны ( MOV R1,R1 ).
Другими словами, в области информационных технологий до сих пор не изобрели «колесо», ну или все они не совсем «круглые» — что делает «езду на велосипеде» не совсем удобной. Возможно именно по этой причине «первобытные» компьютеры (БК, ДВК, Спектрум, . ) и по сей день пользуются большим спросом. Мне, например, как человеку, искушённому в программировании, современные программные технологии, при всей их мощности и надёжности, напоминают Франкенштейна, вызывая противоречия эстетического характера. Хотя это скорее радует, чем огорчает, ибо изобретение неизобретённых колёс является моим хобби. Возможно, не один я задумываюсь в этом направлении и кто-нибудь ещё сочтёт такое занятие интересным.
- Микропроцессор
- разрядность
- система команд
- формализация
Учебно-методический комплекс
1. Организация работы и функционирование процессора. Микропроцессоры типа CISC, RISC, MISC. Характеристики микропроцессора. Устройство управления, арифметико-логическое устройство.
1. Организация работы и функционирование процессора. Микропроцессоры типа CISC, RISC, MISC. Характеристики микропроцессора. Устройство управления, арифметико-логическое устройство.
Организация работы процессора:
Во время процесса процессор считывает последовательность команд, содержащихся в памяти, и исполняет их. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Другим примером изменения процесса может служить случай получения команды останова или переключение в режим обработки аппаратного прерывания.
Скорость перехода от одного этапа цикла к другому определяется тактовым генератором. Тактовый генератор вырабатывает импульсы, служащие ритмом для центрального процессора.
В основу было положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. Соответствующая система классификации основана на рассмотрении числа потоков инструкций и потоков данных и описывает четыре архитектурных класса:
· SISD (single instruction stream / single data stream) — одиночный поток команд и одиночный поток данных
· MISD (multiple instruction stream / single data stream) — множественный поток команд и одиночный поток данных.
· SIMD (single instruction stream / multiple data stream) — одиночный поток команд и множественный поток данных.
· MIMD (multiple instruction stream / multiple data stream) — множественный поток команд и множественный поток данных
В основе параллельного компьютера лежит идея использования для решения одной задачи нескольких процессоров, работающих сообща, причем процессоры могут быть как скалярными, так и векторными.
Конвейерная архитектура (pipelining) была введена в центральный процессор с целью повышения быстродействия. Обычно для выполнения каждой команды требуется осуществить некоторое количество однотипных операций, например: выборка команды из ОЗУ, дешифрация команды, адресация операнда в ОЗУ, выборка операнда из ОЗУ, выполнение команды, запись результата в ОЗУ. Каждую из этих операций сопоставляют одной ступени конвейера. Например, конвейер микропроцессора с архитектурой MIPS-I содержит четыре стадии:
· получение и декодирование инструкции (Fetch)
· адресация и выборка операнда из ОЗУ (Memory access)
· выполнение арифметических операций (Arithmetic Operation)
· сохранение результата операции (Store)
После освобождения k-й ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в n ступеней займёт n единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени
Способность выполнения нескольких машинных инструкций за один такт процессора. Появление этой технологии привело к существенному увеличению производительности.
Основными параметрами процессоров являются:
· коэффициент внутреннего умножения тактовой частоты,
· размер кэш памяти.
Тактовая частота определяет количество элементарных операций (тактов), выполняемые процессором за единицу времени. Тактовая частота современных процессоров измеряется в МГц (1 Гц соответствует выполнению одной операции за одну секунду, 1 МГц=106 Гц). Чем больше тактовая частота, тем больше команд может выполнить процессор, и тем больше его производительность. Первые процессоры, которые использовались в ПК работали на частоте 4,77 МГц, сегодня рабочие частоты современных процессоров достигают отметки в 2 ГГц (1 ГГц=103 МГц).
Разрядность процессора показывает, сколько бит данных он может принять и обработать в своих регистрах за один такт. Разрядность процессора определяется разрядностью командной шины, то есть количеством проводников в шине, по которой передаются команды. Современные процессоры семейства Intel являются 32-разрядными.
Рабочее напряжение процессора обеспечивается материнской платой, поэтому разным маркам процессоров отвечают разные материнские платы. Рабочее напряжение процессоров не превышает 3 В. Снижение рабочего напряжения разрешает уменьшить размеры процессоров, а также уменьшить тепловыделение в процессоре, что разрешает увеличить его производительность без угрозы перегрева.
Коэффициент внутреннего умножения тактовой частоты — это коэффициент, на который следует умножить тактовую частоту материнской платы, для достижения частоты процессора. Тактовые сигналы процессор получает от материнской платы, которая из чисто физических причин не может работать на таких высоких частотах, как процессор. Для получения более высоких частот в процессоре происходит внутреннее умножение на коэффициент 4, 4.5, 5 и больше.
В процессе работы процессор обрабатывает данные, находящиеся в его регистрах, оперативной памяти и внешних портах процессора. Часть данных интерпретируется как собственно данные, часть данных — как адресные данные, а часть — как команды. Совокупность разнообразных команд, которые может выполнить процессор над данными, образовывает систему команд процессора. Чем больше набор команд процессора, тем сложнее его архитектура, тем длиннее запись команд в байтах и тем дольше средняя продолжительность выполнения команд.
Весь ряд процессоров фирмы Intel, устанавливаемых в персональные компьютеры IBM, имеют архитектуруCISC, а процессоры Motorola, используемые фирмой Apple для своих персональных компьютеров, имеют архитектуру RISC. Обе архитектуры имеют свои преимущества и недостатки. Так CISC-процессоры имеют обширный набор команд (до 400), из которых программист может выбрать команду, наиболее подходящую ему в данном случае. Недостатком этой архитектуры является то, что большой набор команд усложняет внутреннее устройство управления процессором, увеличивает время исполнения команды на микропрограммном уровне. Команды имеют различную длину и время исполнения.
RISC-архитектура имеет ограниченный набор команд и каждая команда выполняется за один такт работы процессора. Небольшое число команд упрощает устройство управления процессора. К недостаткам RISC-архитектуры можно отнести то, что если требуемой команды в наборе нет, программист вынужден реализовать ее с помощью нескольких команд из имеющегося набора, увеличивая размер программного кода.
Упрощенная схема процессора, отражающая основные особенности архитектуры микроуровня, приведена на рис. 5. Наиболее сложным функциональным устройством процессора является устройство управления выполнением команд. Оно содержит:
· буфер команд, который хранит одну или несколько очередных команд программы; читает следующие команды из запоминающего устройства, пока выполняется очередная команда, уменьшая время ее выборки из памяти;
· дешифратор команд расшифровывает код операции очередной команды и преобразует его в адрес начала микропрограммы, которая реализует исполнение команды;
· управление выборкой очередной микрокоманды представляет собой небольшой процессор, работающий по принципу фон Неймана, имеет свой счетчик микрокоманд, который автоматически выбирает очередную микрокоманду из ПЗУ микрокоманд;
· постоянное запоминающее устройство (ПЗУ) микрокоманд — это запоминающее устройство, в которое информация записывается однократно и затем может только считываться; отличительной особенностью ПЗУ является то, что записанная в него информация сохраняется сколь угодно долго и не требует постоянного питающего напряжения.
Поступивший от дешифратора команд адрес записывается в счетчик микрокоманд устройства выборки, и начинается процесс обработки последовательности микрокоманд. Каждый разряд микрокоманды связан с одним управляющим входом какого-либо функционального устройства. Так, например, управляющие входы регистра хранения «Сброс», «Запись», «Чтение» соединены с соответствующими разрядами микрокоманды. Общее число разрядов микрокоманды может составлять от нескольких сотен до нескольких тысяч и равно общему числу управляющих входов всех функциональных устройств процессора. Часть разрядов микрокоманды подается на устройство управления выборкой очередной микрокоманды и используется для организации условных переходов и циклов, так как алгоритмы обработки команд могут быть достаточно сложными.
Выборка очередной микрокоманды осуществляется через определенный интервал времени, который, в свою очередь, зависит от времени выполнения предыдущей микрокоманды. Частота, с которой осуществляется выборка микрокоманд, называется тактовой частотой процессора. Тактовая частота является важной характеристикой процессора, так как определяет скорость выполнения процессором команд, и, в конечном итоге, быстродействие процессора. Другими словами тактовая частота показывает количество элементарных операций, выполняемых центральным процессором в секунду. Под элементарной операцией понимается любая простейшая операция типа сложения, пересылки, сравнения и т.д.
Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации. Функционально АЛУ состоит из нескольких специальных регистров, полноразрядного сумматора и схем местного управления.
Регистры общего назначения (РОН) используются для временного хранения операндов исполняемой команды и результатов вычислений, а также хранят адреса ячеек памяти или портов ввода-вывода для команд, обращающихся к памяти и внешним устройствам. Необходимо отметить, что если операнды команды хранятся в РОН, то время выполнения команды значительно сокращается. Одна из причин, почему программисты иногда обращаются к программированию на языке машинных команд, это наиболее полное использование РОН для получения максимального быстродействия при выполнении программ, критичных по времени.
Основными параметрами процессоров являются: рабочее напряжение, разрядность, рабочая тактовая частота, коэффициент внутреннего умножения тактовой частоты и размер кэш-памяти.
Рабочее напряжение процессора обеспечивает материнская плата, поэтому разным маркам процессоров соответствуют разные материнские платы (их надо выбирать совместно). Ранние модели процессоров x86 имели рабочее напряжение 5 В. С переходом к процессорам Intel Pentium оно понижено до 3,3 В, а в настоящее время составляет менее 3 В. Сверху микропроцессора всегда устанавливают вентилятор (куллер) для его охлаждения во время работы.
Разрядность процессора показывает, сколько бит данных он может принять и обработать в своих регистрах за одни раз (за одни такт) и определяется разрядностью этих регистров. Первые процессоры x86 были 16-разрядными. Начиная с процессора 80386, они имеют 32-разрядную архитектуру. Современные процессоры семейства Intel Pentium остаются 32 разрядными, хотя и работают с 64 разрядной шиной данных.
Обмен данными внутри процессора происходит в несколько раз быстрее, чем обмен с другими устройствами, например, с оперативной памятью. Для того чтобы уменьшить количество обращений к оперативной памяти, внутри процессора создают буферную область — так называемую кэш-память. Это как бы «сверхоперативная память». Когда процессору нужны данные, он сначала обращается в кэш-память, и только если там нужных данных нет, происходит его обращение в оперативную память. Принимая блок данных из оперативной памяти, процессор заносит его одновременно и в кэш-память. Высокопроизводительные процессоры имеют повышенный объем кэш-памяти.
Рассмотрим аппаратную архитектуру физической памяти и организацию управления ею на примере последних поколений процессоров Intel Pentium. Для управления памятью в процессор включен специальный модуль управления памятью, или, иначе, контроллер памяти (Memory Controller). В этом контексте схема обмена данными в компьютерной системе может быть представлена так, как показано на рис. 6. Данная схема отображает обмен данными в компьютерной системе, в которой используется процессор Intel Pentium 4. Все операции по обмену данными с устройствами со стороны процессора выполняет контроллер памяти.
Количество памяти, которая может быть использована программой, ограничено максимальным размером адресного пространства процессора. У процессора Intel Pentium 4, например, максимальное адресное пространство, включая физическую (оперативную) и виртуальную память, может достигать 64 Гбайт.
Процессор Intel Pentium 4 имеет два кэша данных, которые называются кэшем 1-го уровня (L1 Cache) и кэшем 2-го уровня (L2 Cache). Для серверных платформ разработаны модификации процессора, содержащие и кэш 3-го уровня, реализуется на отдельных быстродействующих микросхемах с расположением на материнской плате и имеют объем один и более Мб. Отметим важное обстоятельство — процессоры Intel Pentium 4 имеют также и кэш команд 1-го уровня (он называется Trace Cache), специфика работы которого отличается от особенностей работы кэшей данных.
Для сопоставления большого числа изготовленных и изготовляемых МП существует множество классификационных признаков. Ограничимся самыми главными:
по числу больших интегральных схем (БИС) в микропроцессорном комплекте различают микропроцессоры однокристальные, многокристальные и многокристальные секционные;
по технологии изготовления:
* рМОП — самая простая технология, но не обеспечивает высокого быстродействия МП (в настоящее время устарела);
* nМОП — более сложная технология, которая обеспечивает более высокое быстродействие МП, но не обеспечивает низкое энергопотребление;
* КМОП — самая сложная технология, которая обеспечивает низкое энергопотребление при достаточно высоком быстродействии МП (в настоящее время доминирует);
по ширине ШД (по длине обрабатываемых данных):
* 8-разрядные, применяемые для построения простых МПС (контроллеров);
* 16-разрядные, применяемые для построения микро-ЭВМ (персональных микро-ЭВМ — ПЭВМ);
* 32-разрядные для построения ПЭВМ высокой производительности;
* секционные — для построения МПС с произвольной шириной ШД;
по виду синхронизации:
* синхронные, когда все процессы в МП и МПС синхронизированы сигналами тактового генератора (МП фирмы Intel);
* асинхронные, когда все процессы в МП и МПС протекают асинхронно (без участия сигналов тактового генератора, МП фирмы DEC);
по способу декодирования и выполнения команд: с использованием жесткой логики или микропрограммно.
Процессоры даже самых простых ЭВМ имеют сложную функциональную структуру, содержат большое количество электронных элементов и множество разветвленных связей. Изменять структуру процессора необходимо так, чтобы полная принципиальная схема или ее части имели количество элементов и связей, совместимое с возможностями БИС. При этом микропроцессоры приобретают внутреннюю магистральную архитектуру, т. е. в них к единой внутренней информационной магистрали подключаются все основные функциональные блоки (арифметико-логический, рабочих регистров, стека, прерываний, интерфейса, управления и синхронизации и др.).
Вырабатывает последовательность внутренних и внешних управляющих сигналов, обеспечивающих выборку и выполнение команд. Устройство управления интерпретирует команду выбранную из программной памяти, и формирует для АЛУ и других устройств требуемый набор команд низкого уровня – микрокоманд.
Микрокоманды задают последовательность элементарных низкоуровневых операций (микроопераций) (пересылка данных, сдвиг данных, установка и анализ признаков, запоминание результатов и т.д.)
Последовательность микрокоманд соответствующая оной команде называется микропрограммой.
В состав управляющего устройства входят три устройства:
1. Регистр команды – содержит код команды во время ее выполнения
2. Программный счетчик – в нем содержится адрес очередной подлежащей выполнению команды.
3. Регистр адреса – в нем вычисляются адреса операндов, находящихся в памяти.
4. Пульт управления – предусмотрен для связи пользователя с ЭВМ и позволяет производить сброс в начальное состояние, просматривать регистры и ячейки памяти, записывать адрес в программный счетчик, пошагово выполнять программу при ее отладке и т.д.
5. Память – устройство предназначено для запоминания, хранения и выборки программ и данных. Она состоит из конечного числа ячеек, каждая из которых имеет свой уникальный адрес (номер), доступ к ячейке осуществляется путем указания ее адреса.
Лекция 2: Регистровая структура универсального микропроцессора
Аннотация: Цель лекции: рассмотреть состав, назначение и особенности использования различных групп регистров, входящих в состав универсального микропроцессора. Состав, структура и назначение регистров микропроцессора являются важной чертой его архитектуры и во многом определяют его функциональные возможности. Поэтому изучение этого вопроса весьма важно для понимания дальнейшего материала.
Регистровая структура универсального микропроцессора
В универсальном 32-разрядном микропроцессоре выделяют следующие группы регистров:
- основные функциональные регистры;
- регистры процессора с плавающей точкой;
- системные регистры;
- регистры отладки и тестирования.
Первые две группы регистров используются прикладными программами, последние две группы — системными программами , имеющими наивысший уровень привилегий .
Рассмотрим каждую из этих групп подробнее.
Основные функциональные регистры
В состав регистров этой группы входят:
- регистры общего назначения;
- регистр указателя команд;
- регистр флагов ;
- сегментные регистры .
Состав и структура регистров общего назначения представлены на рис. 2.1.
Блок состоит из восьми 32-разрядных регистров. К каждому из них можно обращаться как к одному двойному слову (32 разряда).
Отметим, что понятие » слово » в данной архитектуре не идентично разрядности микропроцессора. Исторически сложилось так, что под словом понимается единица информации длиной 2 байта, или 16 двоичных разрядов. К младшим 16 разрядам регистров общего назначения можно обращаться так же, как и в 16-разрядном микропроцессоре (AX, BX… SP ). Четыре 16-разрядных регистра AX , BX , CX , DX допускают обращение отдельно к своему старшему и младшему байту. Тем самым регистры позволяют на программном уровне работать либо с восемью 32-разрядными, либо с восемью 16-разрядными, либо с восемью 8-разрядными регистрами.
Рис. 2.1. Регистры общего назначения
Все эти регистры используются для хранения промежуточных результатов вычислений и составных частей адреса при различных режимах адресации операндов, расположенных в памяти.
Кроме того, ряд регистров этого блока имеют свое, присущее только им назначение:
- EAX/AX/AL — регистр-аккумулятор, используется для сокращения длины команды при работе с непосредственными операндами;
- AX/AL — приемник (источник) данных в командах ввода (вывода) данных из (в) внешнего устройства;
- DX — определяет адрес ВУ в командах ввода (вывода) данных;
- ECX — используется в качестве счетчика циклов в командах циклов ;
- BP , SP — используются при работе со стеком;
- ESI , EDI ( DI , SI ) — определяют положение строк в памяти в командах обработки строк.
Регистр указателя команд и регистр флагов имеют длину 32 разряда.
Младшее слово каждого из этих регистров (разряды 0-15) функционально соответствует аналогичным разрядам в 16-разрядном микропроцессоре (рис. 2.2).
Рис. 2.2. Регистр указателя команд и регистр флагов
Регистр указателя команд EIP хранит смещение адреса команд относительно начала сегмента кода (сегмента команд).
Регистр флагов EFLAGS содержит признаки результата выполненной команды, а также разряды, управляющие работой микропроцессора: обработкой маскированных прерываний, последовательностью вызываемых задач, вводом-выводом и рядом других действий. Из этих флагов рассмотрим только наиболее значимые и интересные с точки зрения дальнейшего изучения работы микропроцессора.
К битам состояния регистра флагов относятся:
- ZF — признак нуля результата ( ZF = 1 , если все разряды результата равны 0);
- SF — знак результата ( SF = 1 , если старший разряд результата равен 1, то есть если результат отрицательный);
- OF — признак переполнения ( OF = 1 , если при выполнении арифметических операций над числами со знаком происходит переполнение разрядной сетки);
- CF — флаг переноса ( CF = 1 , если выполнение операции сложения приводит к переносу за пределы разрядной сетки), устанавливается также в некоторых других операциях;
- PF — признак четности (дополняет до нечетного числа единиц младший байт результата);
- AF — флаг полупереноса (используется при операциях над двоичнодесятичными числами);
- DF — устанавливается пользователем и определяет порядок обработки строк символов в соответствующих командах: декремент (при DF = 1 ) или инкремент (при DF = 0 ) содержимого индексных регистров ESI , EDI ( SI , DI ) после обработки одного символа.
В состав флагов управления входят:
- IF — флаг прерываний (при IF = 1 разрешается обработка маскированных аппаратных прерываний );
- TF — флаг ловушки , или трассировки (при ТF = 1 после выполнения каждой команды возникает прерывание, используемое отладчиками;);
- NТ — бит вложенной задачи (показывает, что данная задача была вызвана из другой программы, аналогично подпрограмме, и возврат из этой задачи должен проводиться по механизму переключения задач);
- IOPL — 2-разрядное поле уровня привилегий ввода/вывода (определяет уровень привилегий программ, которым разрешено выполнение операции ввода-вывода);
- VM — режим виртуального микропроцессора i8086 (при работе микропроцессора в защищенном режиме установка VM = 1 вызывает переключение в режим виртуального микропроцессора i8086; в этом случае микропроцессор функционирует как быстрый МП i8086, но реализует механизмы защиты памяти , страничной адресации и ряд других дополнительных возможностей; бит VM может быть установлен только в защищенном режиме).
Блок сегментных регистров состоит из шести 16-разрядных регистров, которые указывают на различные сегменты , расположенные в памяти компьютера:
- CS ( Code Segment ) — сегмент кода программы;
- DS ( Data Segment ) — сегмент данных;
- SS ( Stack Segment ) — сегмент стека;
- ES , FS , GS — дополнительные сегменты данных.
При работе микропроцессора в реальном режиме в сегментном регистре содержатся старшие 16 разрядов 20-разрядного базового адреса сегмента. Физический адрес начала сегмента получается умножением этой величины на 16: