Инструменты пользователя

Инструменты сайта


examination:asm:question2

Вопрос №2. Центральный процессор ЭВМ. Устройство управления и арифметико-логическое устройство. Регистры. Схема работы центрального процессора.

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

Центральный процессор - это центральное устройство компьютера, которое выполняет операции по обработке данных и управляет периферийными устройствами компьютера. У компьютеров четвёртого поколения и старше функции центрального процессора выполняет микропроцессор на основе СБИС, содержащей несколько миллионов элементов, конструктивно созданный на полупроводниковом кристалле путём применения сложной микроэлектронной технологии.

В состав центрального процессора входят:

1. устройство управления (УУ);

2. арифметико-логическое устройство (АЛУ);

3. запоминающее устройство (ЗУ) на основе регистров процессорной памяти и кэш-памяти процессора;

4. генератор тактовой частоты (ГТЧ).

  • Устройство управления организует процесс выполнения программ и координирует взаимодействие всех устройств ЭВМ во время её работы.
  • Арифметико-логическое устройство выполняет арифметические и логические операции над данными: сложение, вычитание, умножение, деление, сравнение и др.
  • Запоминающее устройство - это внутренняя память процессора. Регистры служит промежуточной быстрой памятью, используя которые, процессор выполняет расчёты и сохраняет промежуточные результаты. Для ускорения работы с оперативной памятью используется кэш-память, в которую с опережением подкачиваются команды и данные из оперативной памяти, необходимые процессору для последующих операций.
  • Генератор тактовой частоты генерирует электрические импульсы, синхронизирующие работу всех узлов компьютера. В ритме ГТЧ работает центральный процессор.

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

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


Регистры

Программные регистры

Регистрами называют участки высокоскоростной памяти, расположенные внутри ЦПУ и предназначенные для оперативного хранения данных и быстрого доступа к ним со стороны внутренних компонентов процессора. Например, при выполнении оптимизации циклов программы по скорости, переменные, к которым выполняется доступ внутри цикла, располагают в регистрах процессора, а не в памяти.

На рис. 2.10 изображена структура основных программных регистров (program execution registers) процессора семейства IA-32 и их названия, определенные специалистами фирмы Intel. Существует 8 регистров общего назначения, 6 сегментных регистров, регистр состояния процессора, или регистр флагов (ЕFLAGS), и регистр указателя команд (EIP).

Регистры общего назначения. Эти регистры используются в основном для выполнения арифметических операций и пересылки данных. Как показано на рис. 2.11, к каждому регистру общего назначения можно обратиться как к 32-разрядному или как к 16-разрядному регистру.

К некоторым 16-разрядным регистрам можно обращаться как к двум 8-разрядным регистрам. Например, регистр ЕАХ является 32-разрядным, однако его младшие 16-разрядов находятся в регистре АХ. Старшие 8-разрядов регистра АХ находятся в регистре АН, а младшие 8-разрядов — в регистре AL.

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

К оставшимся регистрам общего назначения, которые не указаны в табл. 2.1, можно обращаться либо как к 32-разрядным, либо как к 16 разрядным регистрам, как показано в табл. 2.2. Они не поддерживают возможность обращения к младшим и старшим байтам своей 16-разрядной части, как это было при рассмотрении примера с регистром ЕАХ. 16-разрядные части этих регистров обычно используются только при написании программ для реального режима адресации.

Особенности использования регистров. При выполнении команд процессором часть регистров общего назначения имеют особое значение.

• Содержимое регистра ЕАХ автоматически используется при выполнении команд умножения и деления. Поскольку этот регистр обычно связан с выполнением арифметических команд, его часто называют расширенным регистром аккумулятора (extended accumulator).

• Регистр ЕСХ автоматически используется процессором в качестве счетчика цикла.

• С помощью регистра ESP происходит обращение к данным, хранящимся в стеке. Стек — это системная область памяти, обращение к которой осуществляется по принципу «последним записали, первым взяли». Этот регистр обычно никогда не используется для выполнения обычных арифметических операций и команд пересылки данных. Его часто называют расширенным регистром указателя стека (extended stack pointer).

• Регистры ЕSI и ЕDI обычно используют для команд высокоскоростной пересылки данных из одного участка памяти в другой. Поэтому их иногда называют расширенными индексными регистрами источника и получателя данных (extended source index и extended destination index).

• Регистр EВР обычно используется в языках программирования высокого уровня для обращения к параметрам функции и для ссылок на локальные переменные, размещенные в стеке. Он не должен использоваться для выполнения обычных арифметических операций или для перемещения данных, за исключением случаев применения особых методик программирования опытными программистами. Его часто называют расширенным регистром указателя стекового фрейма (extended frame pointer).

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

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

данных (DS, ES, FS и GS), в них хранятся области памяти, выделяемые под переменные программы и под данные;

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

Регистр указателя команд. В регистре EIP, который также называют регистром указателя команд, хранится адрес следующей выполняемой команды. В процессоре есть несколько команд, которые влияют на содержимое этого регистра. Изменение адреса, хранящегося в регистре ЕIP, вызывает передачу управления на новый участок программы.

Регистр флагов EFLAGS. Каждый бит этого регистра отвечает либо за особенности выполнения некоторых команд ЦПУ, либо отражает результат выполнения команд блоком АЛУ процессора. Для анализа битов этого регистра предусмотрены специальные команды процессора.

Управляющие флаги. Состояние битов регистра EFLAGS, соответствующих управляющим флагам, программист может изменить с помощью специальных команд процессора. Эти флаги управляют процессом выполнения некоторых команд ЦПУ. В качестве примера можно привести флаги управления направлением пересылки данных (Direction) и прерыванием (Interrupt). Все эти флаги будут описаны по мере необходимости на страницах этой книги.

Флаги состояния. Эти флаги отражают результат выполнения арифметической или логической команды ЦПУ. Их название, описание и сокращенное обозначение приведены ниже.

Флаг переноса (Сапу flag, или CF) устанавливается, если при выполнении беззнаковой арифметической операции получается число, разрядность которого превышает разрядность выделенного для него поля результата.

Флаг переполнения (Overflow flag, или OF) устанавливается, если при выполнении арифметической операции со знаком получается число, разрядность которого превышает разрядность выделенного для него поля результата.

Флаг знака (Sign flag, или SF) устанавливается, если при выполнении арифметической или логической операции получается отрицательное число (т.е. старший бит результата равен 1).

Флаг нуля (Zero flag, или ZF) устанавливается, если при выполнении арифметической или логической операции получается число, равное нулю (т.е. все биты результата равны 0).

Флаг служебного переноса (Auxiliary Carry, или AF) устанавливается, если при выполнении арифметической операции с 8-разрядным операндом происходит перенос из третьего бита в четвертый.

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


Схема работы процессора

Цикл выполнения команды

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

Перед выполнением программа должна быть загружена в оперативную память компьютера. Упрощенная схема цикла выполнения команды показана на рис. 2.3. На этом рисунке под термином счетчик команд (СК) подразумевается регистр, в котором содержится адрес следующей по порядку выполняемой команды. Очередь команд — это область сверхоперативной памяти внутри микропроцессора, в которую помещается одна или несколько команд непосредственно перед их выполнением. При выполнении каждой машинной команды процессор должен выполнить как минимум три основные операции: выборка, декодирование и выполнение. Если в команде используется операнд, расположенный в памяти, процессору нужно выполнить еще две дополнительные операции: выборку операнда из памяти и запись результата в память. Другими словами, при выполнении команды, связанной с обращением к памяти, процессор должен выполнить, как минимум, пять операций, перечисленных ниже.

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

Декодирование команды. Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, соответствующие типу выполняемой операции.

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

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

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

examination/asm/question2.txt · Последние изменения: 2014/01/15 08:12 (внешнее изменение)