- •Введение
- •1. Общие требования, предъявляемые к современным компьютерам
- •1.1. Отношение стоимость/производительность
- •1.2. Надежность и отказоустойчивость
- •1.3. Масштабируемость
- •1.4. Совместимость и мобильность программного обеспечения
- •2. Классификация компьютеров по областям применения
- •2.1. Персональные компьютеры и рабочие станции
- •2.3. Серверы
- •2.4. Мейнфреймы
- •2.5. Кластерные архитектуры
- •3. Оценка производительности вычислительных систем
- •3.1. Общие замечания
- •3.6.1. Тесты tpc
- •3.6.2. Тест tpc-a
- •3.6.3. Тест tpc-b
- •3.6.4. Тест tpc-c
- •3.6.5. Следующие тесты tpc
- •4. Основные архитектурные понятия
- •4.1. Определение понятия "архитектура"
- •4.2. Архитектура системы команд. Классификация процессоров (cisc и risc)
- •4.3. Методы адресации и типы данных
- •4.3.1. Методы адресации
- •4.3.2. Типы команд
- •4.4. Команды управления потоком команд
- •4.5. Типы и размеры операндов
- •5. Конвейерная организация
- •5.1. Что такое конвейерная обработка
- •5.2. Простейшая организация конвейера и оценка его производительности
- •5.3. Структурные конфликты и способы их минимизации
- •5.4. Конфликты по данным, остановы конвейера и реализация механизма обходов
- •5.5. Классификация конфликтов по данным
- •5.5.1. Конфликты по данным, приводящие к приостановке конвейера
- •5.5.2. Методика планирования компилятора для устранения конфликтов по данным
- •5.6. Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •5.7. Снижение потерь на выполнение команд условного перехода
- •5.7.1. Метод выжидания
- •5.7.2. Метод возврата
- •5.7.3. Задержанные переходы
- •5.7.4. Статическое прогнозирование условных переходов: использование технологии компиляторов
- •5.8. Проблемы реализации точного прерывания в конвейере
- •5.9. Обработка многотактных операций и механизмы обходов в длинных конвейерах
- •5.10. Конфликты и ускоренные пересылки в длинных конвейерах
- •5.11. Поддержка точных прерываний
- •6.Конвейерная и суперскалярная обработка
- •6.1. Параллелизм на уровне выполнения команд, планирование загрузки конвейера и методика разворачивания циклов
- •6.2. Параллелизм уровня команд: зависимости и конфликты по данным
- •6.3. Зависимости
- •6.4. Параллелизм уровня цикла: концепции и методы
- •6.5. Основы планирования загрузки конвейера и разворачивание циклов
- •6.6. Устранение зависимостей по данным и механизмы динамического планирования
- •6.6.1. Основная идея динамической оптимизации
- •6.6.2. Динамическая оптимизация с централизованной схемой обнаружения конфликтов
- •6.6.3. Другой подход к динамическому планированию - алгоритм Томасуло
- •6.7. Аппаратное прогнозирование направления переходов и снижение потерь на организацию переходов
- •6.7.1. Буфера прогнозирования условных переходов
- •6.7.2. Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •6.8. Одновременная выдача нескольких команд для выполнения и динамическое планирование
- •6.8.1. Суперскалярные машины
- •6.8.2. Архитектура машин с длинным командным словом
- •6.9. Обнаружение и устранение зависимостей компилятором и разворачивание циклов
- •6.9.1. Обнаружение и устранение зависимостей
- •6.9.2. Программная конвейеризация: символическое разворачивание циклов
- •6.10. Аппаратные средства поддержки большой степени распараллеливания
- •6.10.1. Условные команды
- •6.10.2. Выполнение по предположению (speculation)
- •Список использованных источников
5.9. Обработка многотактных операций и механизмы обходов в длинных конвейерах
В рассмотренном нами конвейере стадия выполнения команды (EX) составляла всего один такт, что вполне приемлемо для целочисленных операций. Однако для большинства операций плавающей точки было бы непрактично требовать, чтобы все они выполнялись за один или даже за два такта. Это привело бы к существенному увеличению такта синхронизации конвейера, либо к сверхмерному увеличению количества оборудования (объема логических схем) для реализации устройств плавающей точки. Проще всего представить, что команды плавающей точки используют тот же самый конвейер, что и целочисленные команды, но с двумя важными изменениями. Во-первых, такт EX может повторяться многократно столько раз, сколько необходимо для выполнения операции. Во-вторых, в процессоре может быть несколько функциональных устройств, реализующих операции плавающей точки. При этом могут возникать приостановки конвейера, если выданная для выполнения команда либо вызывает структурный конфликт по функциональному устройству, которое она использует, либо существует конфликт по данным.
Допустим, что в нашей реализации процессора имеются четыре отдельных функциональных устройства:
Основное целочисленное устройство.
Устройство умножения целочисленных операндов и операндов с плавающей точкой.
Устройство сложения с плавающей точкой.
Устройство деления целочисленных операндов и операндов с плавающей точкой.
Целочисленное устройство обрабатывает все команды загрузки и записи в память при работе с двумя наборами регистров (целочисленных и с плавающей точкой), все целочисленные операции (за исключением команд умножения и деления) и все команды переходов. Если предположить, что стадии выполнения других функциональных устройств неконвейерные, то рис. 5.8 показывает структуру такого конвейера. Поскольку стадия EX является неконвейерной, никакая команда, использующая функциональное устройство, не может быть выдана для выполнения до тех пор, пока предыдущая команда не покинет ступень EX. Более того, если команда не может поступить на ступень EX, весь конвейер за этой командой будет приостановлен.
Рис. 5.8. Конвейер с дополнительными функциональными устройствами
В действительности промежуточные результаты возможно не используются циклически ступенью EX, как это показано на рис. 5.8, и ступень EX имеет задержки длительностью более одного такта. Мы можем обобщить структуру конвейера плавающей точки, допустив конвейеризацию некоторых ступеней и параллельное выполнение нескольких операций. Чтобы описать работу такого конвейера, мы должны определить задержки функциональных устройств, а также скорость инициаций или скорость повторения операций. Это скорость, с которой новые операции данного типа могут поступать в функциональное устройство. Например, предположим, что имеют место следующие задержки функциональных устройств и скорости повторения операций (табл. 5.12).
Таблица 5.12
Задержки функциональных устройств и скорости повторения операций
Функциональное устройство |
Задержка |
Скорость повторения |
Целочисленное АЛУ |
1 |
1 |
Сложение с ПТ |
4 |
2 |
Умножение с ПТ (и целочисленное) |
6 |
3 |
Деление с ПТ (и целочисленное) |
15 |
15 |
На рис. 5.9 представлена структура подобного конвейера. Ее реализация требует введения конвейерной регистровой станции EX1/EX2 и модификации связей между регистрами ID/EX и EX/MEM.
Рис. 5.9. Конвейер с многоступенчатыми функциональными устройствами