- •1. Вычислительный цикл процессора.
- •2. Вентили и логические элементы.
- •3. Понятие архитектуры и микроархитектуры. Классификация вычислительных средств по архитектуре (классификация Флинна).
- •4. Микропроцессор (мп). Состав и основные функции. Процессоры risc и cisc.
- •5. Архитектура ia-32. Режимы работы процессора.
- •6. Архитектура ia-32. Особенности представления информации.
- •7. Архитектура ia-32. Регистры общего назначения и сегментные регистры.
- •8. Архитектура ia-32. Регистры смещений и регистр флагов.
- •9. Архитектура ia-32. Организация памяти.
- •10. Архитектура ia-32. Организация прерываний.
- •11. Ассемблер. Области применения. Достоинства и недостатки.
- •12. Ассемблер. Структура программы. Модель памяти small.
- •13. Ассемблер. Основные типы предложений.
- •14. Ассемблер. Описание сегмента данных.
- •15. Ассемблер. Способы адресации памяти.
- •16. Ассемблер. Команды пересылки данных. Арифметические команды
- •17. Ассемблер. Команды переходов. Процедуры.
- •18. Ассемблер. Команды управления циклами. Команды прерывания.
- •19. Запоминающие устройства. Иерархичная организация памяти. Основные показатели быстродействия системы памяти.
- •20. Физические основы работы внутренней памяти. Энергозависимая память.
- •21. Внутренняя энергонезависимая память.
- •22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции
- •23. Аппаратно-программные методы ускорения обработки данных. Кэширование памяти.
- •24. Кэш прямого отображения. Наборно-ассоциативный и ассоциативный кэш.
- •25. Микроархитектурные особенности процессоров x86 I-V поколений.
- •26. Микроархитектурные особенности процессоров x86 VI поколений.
- •27. Микроархитектура NetBurst и Intel Core.
- •28. Архитектура ia-64.
7. Архитектура ia-32. Регистры общего назначения и сегментные регистры.
Регистры процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).
Доступ к значениям, хранящимся в регистрах как правило в несколько раз быстрее чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объем оперативной памяти намного превосходит суммарный объем регистров (объем среднего модуля оперативной памяти сегодня составляет 512 Мб - 2 Гб, суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байтов)).
Регистры процессоров x86 подразделяются на следующие категории:
-
Регистры общего назначения.
Обозначаются буквами А, В, С, D. 16-битные регистры обозначаются как AX, BX, CX, DX, при этом младшие их байты обозначаются, соответственно AL, BL, CL, DL, а старшие как AH, BH, CH, DH. В процессорах IA-32 эти регистры расширены до 32 бит, и для обозначения 32-битных регистров используется приставка E, например, EAX, EBX, ECX, EDX. Отсутствие приставки означает обращение к младшим 16-битам этих расширенных регистров.
Каждый из этих регистров может использоваться для временного хранения любых данных. Однако принято их использовать для следующих целей:
Регистр EAX/AX/AH/AL (Accumulator register) – регистр-аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно.
Регистр EBX/BX/BH/BL (Base register) – применяется для хранения базового адреса некоторого объекта в памяти, например, адреса первого элемента массива.
Регистр EСX/СX/СH/СL (Base register) – регистр-счетчик. Используется как счетчик числа повторений при циклических операциях. Некоторые команды (например, LOOP) изменяют неявно значение этого регистра.
Регистр EDX/DX/DH/DL (Data register) – регистр данных. Также как и регистр EAX/AX/AH/AL хранит промежуточные данные.
-
Сегментные регистры.
Существование этих регистров обусловлено спецификой и организацией использования оперативной памяти. Подробнее с особенностями этой организации мы познакомимся позднее. Сейчас нам важно лишь то, что пространство оперативной памяти логически разбивается на сегменты. Вот для того, чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически, с небольшой поправкой (которую мы сделаем позже), в этих регистрах содержатся адреса памяти, с которых начинаются соответствующие сегменты. МП поддерживает следующие типы сегментов:
Сегмент кода. В этом сегменте содержатся команды (инструкции) программы. На начальный адрес этого сегмента указывает 16-ти битный сегментный регистр кода CS (Code segment register).
Сегмент данных. Содержит обрабатываемые программой данные (операнды). На начальный адрес этого сегмента указывает 16-битный сегментный регистр данных DS (Data segment register).
Сегмент стека. Этот сегмент представляет собой специально организованную область памяти, называемую стеком. Принцип действия этой памяти – LIFO – последний пришел, первый вышел. На начальный адрес этого сегмента указывает (16-ти битный) сегментный регистр стека SS (Stack segment register).
Дополнительный сегмент данных.
По умолчанию, алгоритмы работы большинства инструкций предполагают, что операнды находятся в сегменте данных. Если программе недостаточно одного сегмента данных, она может использовать еще три дополнительных сегмента данных, но их надо уже указывать явно, с помощью специальных префиксов. Адреса дополнительных сегментов данных должны содержаться в 16-битных регистрах ES, GS, FS.