Национальный исследовательский университет "Высшая Школа Экономики"
Опубликован: 19.11.2012 | Доступ: свободный | Студентов: 12623 / 7806 | Длительность: 29:54:00
Специальности: Менеджер, Преподаватель
Лекция 15:

Устройства ЭВМ

< Лекция 14 || Лекция 15: 1234 || Лекция 16 >

Центральный процессор ЭВМ

Основу центрального процессора ПЭВМ составляет микропроцессор (МП) - обрабатывающее устройство, служащее для арифметических и логических преобразований данных, для организации обращения к ОП и ВНУ и для управления ходом вычислительного процесса. В настоящее время существует большое число разновидностей микропроцессоров, различающихся назначением, функциональными возможностями, структурой, исполнением. Наиболее существенными классификационными различиями между ними чаще всего выступают:

  • назначение (микропроцессоры для серверов и мощных приложений; МП для персональных компьютеров и т.д.);
  • количество разрядов в обрабатываемой информационной единице (8-битные, 16-битные, 32-битные, 64-битные и др.);
  • технология изготовления (0.5мкм-технология; 0.35мкм; 0.25мкм; 0.18мкм; 0.13мкм; 0.07мкм, и т.п.).

Обобщенная структурная схема 32-разрядного микропроцессора x86 (серии Pentium) приведена на рис.15.3.

Условно микропроцессор можно разделить на три части: исполнительный блок (Execution Unit - EU), устройство сопряжения с системной магистралью (Bus Interface Unit - BIU) и блок управления микропроцессором (Control Unit - CU).

В исполнительном блоке находятся: арифметический блок (кэш данных - DATE CACHE, микросхемы арифметико-логического устройства - АЛУ, регистр флагов), регистры общего назначения (РОН) EAX, EBX, ECX, EDX; общие регистры ESI, EDI, ESP, EBP.

В регистре флагов каждый разряд имеет строго определенное назначение. Обычно разряды регистра флагов устанавливаются аппаратно при выполнении очередной операции в зависимости от получаемого в АЛУ результата. При этом фиксируются такие свойства получаемого результата, как нулевой результат, отрицательное число, переполнение разрядной сетки АЛУ и т.д.

Регистры общего назначения EAX, EBX, ECX, EDX имеют длину по 32 бита. Каждый из них делится на два 16-битных регистра, младший из которых имеет свое имя (что обеспечивает совместимость с 16-разрядными версиями микропроцессоров). Так, в регистре EAX содержится 16-битный регистр AX, в регистре EBX содержится регистр BX, в ECX - регистр CX, в EDX - регистр DX. Каждый из 16-битных регистров, в свою очередь, состоит из двух 8-битных регистров, имеющих свои имена. Например, АХ (аккумулятор) делится на AH и AL, регистр базы (Base Register) - BX, делится на BH и BL. Счетчик (Count Register) CX включает регистры CH и CL. Регистр данных (Data Register) DX содержит регистры DH и DL. Каждый из коротких регистров может использоваться самостоятельно или в составе регистровой пары. Условные названия (аккумулятор, регистр базы, счетчик, регистр данных) не ограничивают применения этих регистров - эти названия говорят о наиболее частом их использовании или об особенности применения того или иного регистра в той или иной команде. Буква "Н" в имени 8-битного регистра означает верхний (или старший) регистр, буква "L" - младший (т.е. младший байт 16-битного регистра или младший однобайтный регистр двухбайтного регистра).

 Обобщенная структурная схема 32-разрядного микропроцессора

Рис. 15.3. Обобщенная структурная схема 32-разрядного микропроцессора

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

Общие регистры - ESP, EBP, ESI, EDI также 32-битные, младшая половина которых доступна как регистры S P, B P, SI, DI.

Регистр ESP указывает на адрес вершины стека (адрес, куда будет заноситься следующая переменная командой PUSH).

Регистр ЕВР содержит адрес базы, который может использоваться при работе со стеком.

Регистр ESI - адрес источника, обычно содержит адрес начала блока информации для операций типа "переместить блок", а регистр EDI - адрес приемника (назначения) в этой операции.

Блок управления микропроцессором содержит сегментные регистры, системные регистры и блок выработки управляющих сигналов микропроцессора.

Сегментные регистры CS, DS, ES, FS, GS, SS имеют длину по 16 бит и используются для формирования физических адресов команд и данных в основной памяти.

CS - сегмент кода исполняемой в данный момент программы.

DS - сегмент данных исполняемой программы, т.е. константы, строковые ссылки и т.д.

SS - сегмент стека исполняемой программы.

ES, FS, GS - дополнительные сегменты, которые в некоторых программах могут не использоваться.

Системные регистры GDTR и LDTR являются регистрами глобальной и локальной дескрипторных таблиц. GDTR имеет длину 48 бит, LDTR - 16 бит (точнее, 16 бит - это только "видимая" часть этого регистра).

Регистр IDTR (таблицы дескрипторов прерываний - DTR) имеет длину 48 бит, 32 из которых являются базовым адресом таблицы дескрипторов прерываний (IDT), а 16 - смещением этого адреса (пределом).

Регистр TR является регистром состояния задачи. "Видимая" его часть имеет длину 16 бит и содержит селектор дескриптора. "Скрытая" часть регистра содержит загружаемые автоматически базовый адрес точки входа, предел и атрибуты задачи.

Структурная схема блока выработки управляющих сигналов микропроцессора приведена на рис.15.4.

Основу его составляют счетчик команд, АЛУ, конвейер команд и группа управляющих, отладочных и тестовых регистров.

Регистр EIP является указателем адреса команды (Instruction Pointer), которая будет выбираться в конвейер команд в качестве очередной команды (в отечественной литературе такое устройство называется счетчик команд).

 Структурная схема блока выработки управляющих сигналов

Рис. 15.4. Структурная схема блока выработки управляющих сигналов

Конвейер команд МП хранит несколько команд, что позволяет при выполнении линейных программ совместить подготовку очередной команды с выполнением текущей. Команды в конвейер команд поступают с внутренней магистрали микропроцессора и накапливаются в кэше команд. Блок предвыборки и прогнозирования переходов осуществляет трансляцию команд x86 в RISС-команды, прогнозирует последовательность исполнения команд и направляет полученные последовательности команд в соответствующие ветви конвейера команд (U,V,…). Каждый конвейер команд имеет свой буфер (память магазинного типа FIFO), из которого команды поступают в соответствующий регистр команд для исполнения.

АЛУ команд используется для вычисления физических адресов необходимых для работы микропроцессора команд и данных.

Управляющие регистры - CR0, CR1, CR2, CR3, - имеют длину по 32 бита. Эти регистры устанавливают режим работы процессора (нормальный, защищенный и т.д.), контролируют постраничное распределение памяти, и т.д. Они доступны только для привилегированных программ. Младшая часть регистра CR0 используется как слово состояния машины.

Отладочные регистры - DR0-DR7 - содержат адреса восьми точек прерывания и устанавливают, что должно произойти при достижении программой соответствующей точки прерывания. Эти регистры используются при отладке программы с помощью таких отладочных средств, как debug.exe (для реального режима) или ntsd.exe (для защищенного режима). Тестовые (контрольные) регистры TRj используются для контроля постраничной системы распределения памяти, реализуемой операционной системой.

Система команд микропроцессора

Один из основных принципов построения ЭВМ был сформулирован американским ученым Дж. фон Нейманом: работой ЭВМ управляет программа, состоящая из отдельных команд. Программа размещается вместе с данными в основной памяти ЭВМ. Каждая команда хранится в отдельной ячейке памяти (или группе смежных ячеек) и имеет свой адрес. Все команды имеют одинаковую структуру. Они состоят из двух частей: кода операции и адресной части. Код операции определяет, какую команду нужно выполнить. Адресная часть определяет, где хранятся операнды, т.е. обрабатываемые данные, и куда необходимо поместить результат операции.

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

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

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

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

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

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

Все команды программы выполняются последовательно, команда за командой, в том порядке, как они записаны в памяти ЭВМ (естественный порядок следования команд). Этот порядок характерен для линейных программ, т.е. программ, не содержащих разветвлений.

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

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

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

  1. команды пересылки данных:

    • команды пересылки данных внутри МП (MOV, PUSH, POP, XCHNG и т.д.);
    • команды ввода-вывода (IN, OUT);
    • операции с флагами;
    • операции с адресами (LEA, LDS и т.п.);
  2. арифметические команды:

    • основные (сложение, вычитание, умножение, деление);
    • дополнительные (INS, DEC и др.);
  3. логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание равнозначности и др.);
  4. команды обработки строковых данных (пересылка, сравнение, сканирование, слияние/разделение и др.);
  5. команды передачи управления (безусловный переход, условный переход, прерывания, переход с возвратом);
  6. команды управления ("нет операции", "внешняя синхронизация" и т.д.).

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

Взаимодействие элементов при работе микропроцессора

Работой МП управляет программа, записанная в ОП ЭВМ. Адрес очередной команды хранится в счетчике команд EIP (Instruction Pointer) и в одном из сегментных регистров, чаще всего - в CS. Каждый из них в реальном режиме имеет длину 16 бит, тогда как физический адрес ОП должен иметь длину 20 бит. Несогласованность длины машинного слова (16 бит) и длины физического адреса ОП (20 бит) приводит к тому, что в командах невозможно указать физический адрес ОП - его приходится формировать, собирать из разных регистров МП в процессе работы.

В защищенном режиме базовые адреса сегментов хранятся в дескрипторных таблицах и имеют длину 24 или 32 бита (в зависимости от типа МП). В сегментных же регистрах хранится селектор, содержащий номер дескрипторной таблицы и дескрипторное смещение, т.е. порядковый номер дескриптора (в котором и хранится базовый адрес сегмента) в данной дескрипторной таблице (рис.15.5).

 Формирование адреса в защищенном режиме

Рис. 15.5. Формирование адреса в защищенном режиме

Физический адрес очередной команды через внутреннюю магистраль МП и интерфейс памяти поступает на шину адреса системной магистрали. Одновременно из устройства управления (УУ) исполнительного блока на шину управления выдается команда (управляющий сигнал) в ОП, предписывающая выбрать число, находящееся по адресу, указанному в системной магистрали. Выбранное число, являющееся очередной командой, поступает из ОП через шину данных системной магистрали, интерфейс памяти, внутреннюю магистраль МП в конвейер команд (в блок Instruction Cashe). После обработки полученной команды и преобразования ее в последовательность RISC-команд (операций) очередная операция поступает в регистр команд.

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

В зависимости от используемого в команде режима адресации организуется выборка необходимых исходных данных.

< Лекция 14 || Лекция 15: 1234 || Лекция 16 >
Фахруддин хемракулыев
Фахруддин хемракулыев
Шерхон Давлатов
Шерхон Давлатов

Почему тесты (1,2,3..) не работают. Хочу пройти тест но не получается