- •Организация эвм и систем
- •Содержание
- •Глава 1. Становление и эволюция цифровой вычислительной техники 8
- •Глава 2. Архитектура системы команд 37
- •Глава 3. Программная модель процессора на примере Intel i8086 71
- •Глава 4. Интерфейсы и шины в вычислительной системе 87
- •Глава 5. Системы ввода/вывода. Организация обмена в вычислительной системе 116
- •Глава 6. Основные направления в архитектуре процессоров 129
- •Глава 7. Подсистема памяти 169
- •Глава 8. Внешние накопители 197
- •Глава 9. Основы параллельных вычислений 220
- •Глава 10. Архитектура многопроцессорных систем 237
- •Глава 1. Становление и эволюция цифровой вычислительной техники
- •1.1. Определение понятия «архитектура»
- •1.2. Уровни детализации структуры вычислительной машины
- •1.3. Эволюция средств автоматизации вычислений
- •1.3.1. Нулевое поколение (1492-1945)
- •1.3.2. Первое поколение(1937-1953)
- •1.3.3. Второе поколение (1954-1962)
- •1.3.4. Третье поколение (1963-1972)
- •1.3.5. Четвертое поколение (1972-1984)
- •1.3.6. Пятое поколение (1984-1990)
- •1.3.7. Шестое поколение (1990–)
- •1.4. Концепция машины с хранимой в памяти программой
- •1.4.1. Принцип двоичного кодирования
- •1.4.2. Принцип программного управления
- •1.4.3. Принцип однородности памяти
- •1.4.4. Принцип адресности
- •1.6 Типы структур вычислительных машин и систем
- •1.6.1. Структуры вычислительных машин
- •1.6.2. Структуры вычислительных систем
- •1.6.3. Перспективные направления исследований в области архитектуры
- •Контрольные вопросы
- •Глава 2. Архитектура системы команд
- •2.1. Понятие архитектуры системы команд
- •2.2. Классификация архитектур системы команд
- •2.2.1. Классификация по составу и сложности команд
- •2.2.2. Классификация по месту хранения операндов
- •2.3. Форматы команд
- •2.3.1. Длина команды
- •2.3.2. Разрядность полей команды
- •2.3.3. Количество адресов в команде
- •2.4. Выбор адресности команд
- •2.4.1. Адресность и емкость запоминающего устройства
- •2.4.2. Адресность и время выполнения программы
- •2.4.3. Адресность и эффективность использования памяти
- •2.5. Способы адресации операндов
- •2.5.1. Непосредственная адресация
- •2.5.2. Прямая адресация
- •2.5.3. Косвенная адресация
- •2.5.4. Регистровая адресация
- •2.5.5. Косвенная регистровая адресация
- •2.5.6. Адресация со смещением
- •2.5.7. Относительная адресация
- •2.5.8. Базовая регистровая адресация
- •2.5.9. Индексная адресация
- •2.5.10. Страничная адресация
- •2.6. Цикл команды
- •2.7. Основные показатели вычислительных машин
- •Контрольные вопросы
- •Глава 3. Программная модель процессора на примере Intel i8086
- •3.1. Программная архитектура i80х86
- •3.2. Микропроцессор i8086
- •3.3. Доступ к ячейкам памяти
- •3.4. Команды микропроцессора
- •3.5. Основные группы команд и их краткая характеристика
- •3.6. Способы адресации в архитектуре i80x86
- •Контрольные вопросы
- •Лабораторная работа №1. Программная архитектура процессора i8086
- •Глава 4. Интерфейсы и шины в вычислительной системе
- •4.1. Структура взаимосвязей вычислительной машины
- •4.2. Типы шин
- •4.2.1. Шина «процессор-память»
- •4.2.2. Шина ввода/вывода
- •4.2.3. Системная шина
- •4.3. Иерархия шин
- •4.3.1. Вычислительная машина с одной шиной
- •4.3.2. Вычислительная машина с двумя видами шин
- •4.3.3. Вычислительная машина с тремя видами шин
- •4.4. Физическая реализация шин
- •4.4.1. Механические аспекты
- •4.4.2. Электрические аспекты
- •4.5. Распределение линий шины
- •4.6. Выделенные и мультиплексируемые линии
- •4.7. Арбитраж шин
- •4.7.1. Схемы приоритетов
- •4.7.2. Схемы арбитража
- •4.8. Основные интерфейсы современных вм на базе архитектуры ia-32
- •4.8.1. Интерфейс pci
- •4.8.2. Порт agp
- •4.8.3. Pci Express
- •Глава 5. Системы ввода/вывода. Организация обмена в вычислительной системе
- •5.1. Основные функции модуля ввода-вывода
- •5.1.1. Локализация данных
- •5.1.2. Управление и синхронизация
- •5.1.3. Обмен информацией
- •5.2. Методы управления вводом/выводом
- •5.3. Система прерываний и исключений в архитектуре ia-32
- •5.4. Расширенный программируемый контроллер прерываний (apic)
- •Глава 6. Основные направления в архитектуре процессоров
- •6.1. Конвейеризация вычислений
- •6.1.1. Синхронные линейные конвейеры
- •6.1.2. Метрики эффективности конвейеров
- •6.1.3. Нелинейные конвейеры
- •6.2. Конвейер команд
- •6.3. Конфликты в конвейере команд
- •6.4. Методы решения проблемы условного перехода
- •6.5. Предсказание переходов
- •6.5.1. Статическое предсказание переходов
- •6.5.2. Динамическое предсказание переходов
- •6.6. Суперконвейерные процессоры
- •6.7. Архитектуры с полным и сокращенным набором команд
- •6.8. Основные черты risc-архитектуры
- •6.9. Преимущества и недостатки risc
- •6.10. Суперскалярные процессоры
- •Лабораторная работа №4. Исполнительные устройства вм
- •Глава 7. Подсистема памяти
- •7.1. Характеристики систем памяти
- •7.2. Иерархия запоминающих устройств
- •7.3. Основная память
- •7.4. Блочная организация основной памяти
- •7.5. Организация микросхем памяти
- •7.6. Синхронные и асинхронные запоминающие устройства
- •7.7. Оперативные запоминающие устройства
- •7.8 Статическая и динамическая оперативная память
- •7.9. Статические оперативные запоминающие устройства
- •7.10. Динамические оперативные запоминающие устройства
- •Лабораторная работа №5. Расширенная работа с памятью и передача управления в программе
- •Глава 8. Внешние накопители
- •8.1. Магнитные диски
- •8.1.1. Организация данных и форматирование
- •8.1.2. Внутреннее устройство дисковых систем
- •8.2. Массивы магнитных дисков с избыточностью
- •8.2.1. Концепция массива с избыточностью
- •8.2.2. Повышение производительности дисковой подсистемы
- •8.2.3. Повышение отказоустойчивости дисковой подсистемы
- •8.2.4. Raid уровня 0
- •8.2.5. Raid уровня 1
- •8.2.6. Raid уровня 2
- •8.2.7. Raid уровня 3
- •8.2.8. Raid уровня 4
- •8.2.9. Raid уровня 5
- •8.2.10. Raid уровня 6
- •8.2.11. Raid уровня 7
- •8.2.12. Raid уровня 10
- •8.2.13. Raid уровня 53
- •8.2.14. Особенности реализации raid-систем
- •8.3. Оптическая память
- •Контрольные вопросы
- •Глава 9. Основы параллельных вычислений
- •9.1. Уровни параллелизма
- •9.1.1. Параллелизм уровня задания
- •9.1.2. Параллелизм уровня программ
- •9.1.3. Параллелизм уровня команд
- •9.2. Метрики параллельных вычислений
- •9.2.1. Профиль параллелизма программы
- •9.2.2. Ускорение, эффективность, загрузка и качество
- •9.3. Закон Амдала
- •9.4. Закон Густафсона
- •9.5. Классификация параллельных вычислительных систем. Классификация Флинна
- •Контрольные вопросы
- •Глава 10. Архитектура многопроцессорных систем
- •Классификация многопроцессорных систем
- •Организация коммуникационной среды в системах с разделяемой памятью.
- •Когерентность кэш- памяти в smp- системах.
- •Когерентность кэш- памяти в mpp-системах.
- •Организация прерываний в мультипроцессорных системах.
- •Заключение
- •Библиографический список
3.2. Микропроцессор i8086
С точки зрения программиста микропроцессор представляется в виде набора регистров. Регистры предназначены для хранения некоторых данных и поэтому, в некотором смысле, они соответствует ячейкам памяти. Однако между ними есть несколько различий. Во-первых, доступ к регистрам осуществляется гораздо быстрее, чем к ячейкам памяти, поэтому в регистрах целесообразно хранить или временные данные, или такие, к которым необходим быстрый доступ (например, счетчики циклов). Во-вторых, у регистров, в отличии от ячеек памяти, нет адресов, а доступ к ним осуществляется по их имени. В-третьих, в зависимости от типа микропроцессора, размерность регистров может быть разной, а размерность ячеек памяти всегда постоянна и остается равной одному байту. Рассмотрим состав внутренних регистров микропроцессоров семейства i80х86.
Все внутренние регистры микропроцессоров являются шестнадцатиразрядными и позволяют хранить 2 байта. Они подразделяются на:
Регистры данных.
Регистры указателей и индексов.
Сегментные регистры.
Регистр флагов.
Регистры данных предназначены для временного хранения переменных и результатов различных операций над ними. В состав регистров данных входят следующие регистры:
АХ – Регистр-аккумулятор.
ВХ – Базовый регистр.
СХ – Регистр-счетчик.
DX – Регистр дополнительных данных.
Такое название регистры данных получили потому, что, кроме функций хранения данных, они имеют дополнительные функции при выполнении тех или иных команд.
Регистр-аккумулятор представляет собой регистр, в котором хранится один из операндов перед некоторой операцией и в который попадает результат такой операции.
Базовый регистр может использоваться дня формирования адреса (базы) любых переменных в памяти.
Регистр-счетчик в командах организации цикла неявно (по умолчанию) используется как счетчик циклов.
Регистр дополнительных данных в некоторых операциях, в которых результат операции может превысить 2 байта, хранит старшие разряды результата, которые не помещаются в аккумулятор. Кроме того, в командах ввода/вывода этот регистр содержит адрес соответствующего внешнего порта.
В отличие от всех других регистров все регистры АХ, ВХ, СХ, DX могут быть разбиты на два однобайтных регистра:
АХ – АН и АL
ВХ – ВН и ВL
СХ – СН и СL
DX – DH и DL
Символ Н (сокращение слова High) означает старшую половину (старший байт) шестнадцатиразрядного числа, символ L (сокращение слова Low - младшую часть (младший байт). Некоторые из этих восьмиразрядных регистров также неявно используются в некоторых командах микропроцессора.
Группу индексных регистров образуют следующие регистры:
ВР – Указатель базы (Вase pointer).
SI – Индекс источника (Source index).
DI – Индекс приемника (Destination index).
SP – Указатель стека (Stack pointer).
Размерность всех регистров – 2 байта, 16 бит, причем в таких регистрах невозможно иметь доступ к только старшему или только младшему байту. Первые три регистра используются или при формировании адресов переменных, или как регистры для хранения временных данных.
Стек обычно неявно используется в командах передачи управления например, при вызове или возврате из подпрограммы или прерываниях микропроцессора для временного хранения адресов, по которым необходимо вернутся после того, как выполнится процедура обработки прерывания или вызова подпрограммы. Кроме того, с помощью стека можно обеспечить временное хранение значения любого из регистров (например, если при вызове некоторой стандартной подпрограммы известно, что его содержимое может измениться). И, наконец, с помощью стека легко организуется передача параметров в вызываемую функцию и организация локальных переменных внутри подпрограммы (такой подход используется практически во всех языках программирования высокого уровня и его необходимо поэтому обязательно применять при написании программ на смешанных языках).
Как уже отмечалось, все программы состоят из нескольких сегментов (частей), поэтому в состав микропроцессора входят специальные регистры для хранения информации о начальных адресах этих сегментов. Состав этой группы 16-разрядных регистров следующий:
CS – регистр сегмента команд (сегмент кода программы).
SS – регистр сегмента стека.
DS – регистр сегмента данных.
ES – регистр сегмента дополнительных данных.
Регистр CS совместно с регистром указателя команд используется для вычисления адреса следующей исполняемой команды в программе. В этом сегменте хранится код программы.
Регистр SS совместно с указателем стека SP используется для определения адреса области памяти для хранения временных данных. При вычислении адресов параметров и локальных переменных подпрограмм обычно совместно с регистром SS используется регистр указателя базы ВР.
В сегмент данных, определяемый регистром DS, обычно помещаются переменные, используемые в программе. Адрес этих переменных определяется с использованием регистров ВХ, SI и DI.
Сегмент дополнительных данных используется как еще один сегмент при операциях над строками. Его можно использовать не только для формирования дополнительного сегмента при доступе к некоторым областям памяти компьютера, но и как еще один регистр для хранения некоторых значений.
В обычных микропроцессорах всегда есть регистр, называемый Счетчиком Команд (РС, Program Counter), определяющий, какую команду выполнять следующей. После чтения текущей команды и всех ее параметров содержимое Счетчика Команд автоматически увеличивается для того, что бы он указывал на следующую команду в программе.
Однако во всех микропроцессорах семейства i80х86 роль такого регистра выполняет регистр с другим названием – регистр Указателя Команд (IP, Instruction pointer).В системе команд микропроцессора отсутствуют команды явного (непосредственного) изменения значения такого регистра (его значения изменяется автоматически в зависимости от логики выполнения программы). Размерность Указателя Команд – 2 байта, 16 бит.
Так как в формировании адреса следующей выполняемой команды совместно с сегментным регистром CS (начальный адрес сегмента) участвует регистр IР (смещение в сегменте), то размерности этих регистров определяют максимальный размер сегмента кода. Максимально возможное смещение в сегменте кода может быть 216 байт, т.е. максимальная длина сегмента кода равна 64 Кбайт.
Для написания программ, принимающих решения в зависимости от тех или иных условий, необходимо знать результат выполнения предыдущих команд (например, при сравнении двух переменных, при арифметических или логических командах и т.д.). Традиционно во всех микропроцессорах для этого используется так называемый регистр флагов, сохраняющий информацию о результате выполнения некоторой команды). Этот регистр представляет собой набор из 16 битов (не все из 16 битов в данном регистре используются), показывающий текущее состояние результата команды программы и текущее состояние микропроцессора.