- •Организация эвм и систем
- •Содержание
- •Глава 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-системах.
- •Организация прерываний в мультипроцессорных системах.
- •Заключение
- •Библиографический список
5.4. Расширенный программируемый контроллер прерываний (apic)
Микропроцессоры IA-32, начиная с модели Pentium, содержат встроенный расширенный программируемый контроллер прерываний (APIC). Встроенный APIC предназначен для регистрирования прерываний от источников внутри процессора (например, блок температурного контроля у Pentium 4) или от внешнего контроллера прерываний и передачи их ядру процессора на обработку. Особо важная роль возлагается на встроенный APIC в многопроцессорных системах, где APIC принимает и генерирует сообщения о межпроцессорных прерываниях (IPI - InterProcessor Interrupt). Такие сообщения могут использоваться для распределения обработки прерываний между процессорами или для выполнения системных функций (первоначальная загрузка, диспетчеризация задач и т.п.).
Встроенный APIC различает следующие источники прерываний.
От локальных устройств. Прерывания, генерируемые по фронту или уровню сигнала, который поступает от устройства, непосредственно подключенного к сигналам LINT0 и LINT1 (например, контроллер прерываний типа 8259A).
От внешних устройств. Прерывания, генерируемые по фронту или уровню сигнала, который поступает от устройства, подключенного к внешнему контроллеру прерываний. Такое прерывание передается в виде сообщения по шине APIC (или системной шине в Pentium 4).
Межпроцессорные (IPI). В многопроцессорных системах один из процессоров может прервать другой при помощи сообщения IPI на шине APIC (или системной шине в Pentium 4).
От таймера APIC. Встроенный APIC содержит таймер, который можно запрограммировать на генерацию прерывания по достижении определенного отсчета.
От таймера монитора производительности. Процессоры P6 и Pentium 4 содержат блок мониторинга производительности. Этот блок можно запрограммировать таким образом, чтобы связанный с ним таймер при достижении определенного отсчета генерировал прерывание.
От термодатчика. Процессоры Pentium 4 содержат встроенный блок температурного контроля, который можно запрограммировать на генерацию прерываний.
Внутренние ошибки APIC. Встроенный APIC может генерировать прерывания при возникновении внутренних ошибочных ситуаций (например, при попытке обратиться к несуществующему регистру APIC).
Источники 1, 4, 5, 6, 7 считаются локальными источниками прерываний и обслуживаются специальным набором регистров APIC, называемым таблицей локальных векторов (LVT – local vector table). Два других источника обрабатываются APIC через механизм сообщений. Эти сообщения в Pentium и P6 передаются по выделенной трехпроводной шине APIC (рис. 47). В Pentium 4 для передачи APIC-сообщений используется системная шина, поэтому контроллер прерываний может быть подключен непосредственно к обычному системному интерфейсу (например, PCI).
Рис. 47. Взаимодействие встроенного APIC и внешнего контроллера прерываний.
Структура встроенного APIC является архитектурным подмножеством микросхемы контроллера прерываний Intel 82489DX. Регистры APIC отображаются на 4К-байтный блок оперативной памяти по адресу FEE00000h (может быть изменен через MSR регистры процессора).
Наличие встроенного APIC в процессоре обнаруживается при помощи инструкции CPUID(1). После RESET встроенный APIC включен, однако впоследствии он может быть отключен, тогда процессор будет работать с прерываниями как Intel-386/486 (линии LINT0 и LINT1 будут использоваться как NMI# и INTR#, к которым может быть подключен контроллер прерываний типа 8259A).
Таблица локальных векторов (LVT) состоит из шести 32-битных регистров (в P6 – 5, в Pentium – 4):
регистр вектора прерывания от таймера;
регистр вектора прерывания от термодатчика (только в Pentium 4);
регистр вектора прерывания от монитора производительности (P6 и Pentium 4);
регистр вектора прерывания LINT0;
регистр вектора прерывания LINT1;
регистр вектора прерывания ошибки.
Значения в этих регистрах определяют:
номер вектора прерывания;
тип прерывания (fixed – с указанным вектором, SMI - переход в режим системного управления, NMI – немаскируемое, INIT – сброс, ExtINT – внешнее: процессор генерирует цикл INTA и ожидает номер вектора прерывания от внешнего контроллера);
активный уровень сигнала (низкий или высокий) или триггерный режим (прерывание по фронту или по уровню);
маску прерывания (прерывание может быть замаскировано).
Эти регистры также отражают состояние прерывания (доставляется ли это прерывание ядру процессора в данный момент).
Кроме того, APIC содержит регистры управления таймером APIC, регистр версии, регистр ошибки, регистры, связанные с обслуживанием прерываний (регистр приоритета, регистр запроса IRR, регистр обслуживания ISR), и регистры, связанные с передачей и приемом IPI.
Лабораторная работа №3. Прерывания и работа с монитором
Прерывание int 10h обеспечивает управление всем экраном. В регистре AH устанавливается код, определяющий функцию прерывания.
Функция 02h. Установить позицию курсора.
На входе:
AH – 02h
BH – номер страницы
DH – строка
DL – столбец
Эта процедура может позиционировать курсор, как на активной, так и на пассивной видеостранице. Чтобы сделать курсор невидимым, спозиционируйте его в 25-ую строку.
Функция 05h. Установить активную страницу
На входе:
AH – 05h
AL – номер страницы
Содержимое видеостраницы не уничтожается, когда происходит замена текущей видеостраницы. Фактически, Вы можете писать в пассивную страницу, затем сделать ее активной, тем самым обеспечить быстрый вывод на экран.
Функция 0Ah. Записать символ(ы).
На входе:
AX – 09h
AL – ASCII-код символа
BH – номер видеостраницы (в текстовом режиме)
CX – количество раз
Символы записываются от положения курсора по направлениям вправо и вниз, но сам курсор при этом не перемещается.
Пример программы на языке ассемблер:
;Программа вывода на экран движущейся по диагонали группы символов.
cseg1 SEGMENT 'code1'
face PROC far
assume cs:cseg1
push ds ;Сохранение регистров для выхода.
sub ax,ax ;
push ax;
mov ah,5 ;Задание активной страницы.
mov al,0 ;
int 10h ;
mov cx,3 ;Задание числа символов.
mov dx,0 ;Столбец и строка по 0 (dh -номер
; строки, dl -номер колонки).
crsr: mov ah,2 ;Функция установки позиции курсора.
int 10h
mov al,4 ;Задание ASCII-кода символа.
mov ah,10 ;Функция вывода символа.
int 10h
push cx ;Количество символов - в стек.
mov cx,4 ;Временная задержка внешнего цикла
ps1: push cx ; около 0.5 сек.
mov cx,0ffffh
ps2: loop ps2 ;
pop cx ;
loop ps1 ;
pop cx
sub al,al ;Для гашения символа.
mov ah,10 ;
int 10h ;
inc dl ;Смена столбца.
inc dl ;
inc dl ;
inc dh ;Смена строки.
cmp dh,25 ;Дошли до нижней строки ?
jne crsr ;Если нет - переход на новую.
retf
face ENDP
cseg1 ENDS
END face
Выполните следующие задания:
Задать вывод строки символов и ее перемещение сверху вниз.
Задать вывод строки символов и ее перемещение снизу вверх.
Задать вывод колонки символов с 0 позиции, и ее перемещение слева направо по экрану.
Задать вывод колонки символов в правой части экрана и ее перемещения справа налево.
Задать линию символов с левого верхнего угла экрана в правый нижний угол.
Задать линию символов с верхнего правого угла экрана в левый нижний угол.
Задать три строки символов и их перемещение сверху вниз по экрану.
Изобразить в центре экрана квадрат со сторонами 10 на 10 символов.
Задать последовательное перемещение символа по строке расположенной в середине экрана.
Задать перемещающуюся группу символов (5 символов) по строке экрана.
Задать в центре экрана квадрат с изменяющимися сторонами.
Задать диагональную линию символов, перемещающуюся по экрану.
Задать перемещение символа по экрану с образованием треугольника.
Задать три колонки символов в левой части экрана и обеспечить их перемещение в правую часть экрана.
Задать три колонки символов в правой части экрана и задать их перемещение в левую часть экрана.