6.5 Условное выполнение команд в vliw-процессорах
Альтернатива суперскалярной обработке – длинное командное слово (VLIW – Very Long Instruction Word). Использование этого метода предполагает задание в командном слове совокупности параллельно выполняемых команд. Подготовкой таких программ занимается компилятор.
В рамках архитектуры IА-64, разрабатываемой Intel и HP, организация длинных команд базируется на связках (bundle) команд, формируемых из трех команд и специального поля шаблона (T, template).
Возможные варианты связки из трех команд:
i1 || i2 || i3 – все команды i1, i2, i3 исполняются параллельно;
i1 & i2 || i3 – сначала команда i1, затем параллельно i2 и i3;
i1 || i2 & i3 – параллельно исполняются i1 и i2, после них команда i3;
i1 & i2 & i3 – последовательно исполняются команды i1, i2, i3.
Поле шаблона используется для управления исполнением команд связки и организации суперсвязок, формируемых из нескольких соседних связок. Шаблон указывает, какие команды связки или соседних связок могут исполняться параллельно на разных функциональных устройствах. Например, на рис. 6.4 представлена суперсвязка из девяти целочисленных команд.
Шаблон связки создается при компиляции программы, и в него помещается вся информация по управлению параллельным выполнением команд. При этом в зависимости от числа требуемых функциональных устройств все девять команд могут исполниться либо за один такт параллельно, либо за три такта по три команды за такт, либо как-то иначе.
Формат команды IА-64 включает: код команды, три 7-разрядных поля операндов, 1 приемник и 2 источника (операндами могут быть только регистры), особые поля для арифметических операций с плавающей и фиксированной точками, а также специальное 6-разрядное предикатное поле.
Эффективность загрузки функциональных устройств в процессорах с длинным или очень длинным командным словом (LIW/VLIW – long/very long instruction word) достигается за счет механизма условного (предикативного) исполнения команд и предвыборки команд.
Механизм условного исполнения команд базируется на введении в команды специального предикатного поля. Условное выполнение команд исключает необходимость использования команд условных переходов. Вместо команды перехода и двух альтернативных ветвей, одна из которых выполняется в зависимости от значения предиката команды перехода, отдельной специальной командой вычисляется тот же предикат, что и в команде перехода, и его значение сохраняется в специальном предикатном регистре. Команды одной альтернативной ветви используют значение U вычисленного предиката, а команды другой альтернативной ветви используют предикат со значением "не U". Команды обеих ветвей запускаются на исполнение, но результативное исполнение будет только у команд со значением предиката "истина". Подобные действия по замене команд перехода на команды условного выполнения носят название "преобразование if" и выполняются компилятором. В листинге 6.1 слева приведен фрагмент программы с использованием команд перехода, а справа соответствующий ему преобразованный фрагмент программы с применением условных команд и команд вычисления предикатов.
Листинг 6.1
if (а < 10) pred_l: р1(-U), р2(U), а, 10
с = с+1 аdd с, с, 1 (р2)
else if (b > 20) pred_g: р3(-U), р4(U), b, 20 (р1)
d = d+1 аdd d, d, 1 (р4)
else е= е+1 аdd е, е, 1 (р3)
Соответствующая граф-схема фрагмента программы представлена на рис. 6.5.
Использование условных команд упрощает загрузку функциональных устройств микропроцессора, перенося проблемы формирования условных команд на стадию компиляции программ. Однако эффективная поддержка условного выполнения команд требует обеспечения следующих механизмов:
введения специального поля команды для указания предикатного операнда;
введения предикатного регистрового файла;
исключения результатов команд со значением предикатного операнда "ложь";
выделения множества условных команд.
Одним из приемов борьбы с удлинением командного слова служит ограничение типов команд, допускающих условное исполнение только теми командами, форматы которых имеют поля для размещения предиката. Например, допускается условное исполнение только команд пересылки МОV. Для этого вводится специальный формат CMOV условной пересылки.
В качестве предикатных регистров могут использоваться как специально выделенные для этого регистры, так и регистры общего назначения. В последнем случае, вообще говоря, может возникнуть проблема недостатка регистров. Кроме того, значения предикатных регистров должны считываться наряду с другими операндами программы, что ведет к увеличению числа портов регистрового файла. Поэтому введение отдельного предикатного файла вполне оправдано.
Конечно, предпочтительным использованием условных команд служит распараллеливание коротких альтернативных ветвей.
При выполнении циклов, организованных с применением команды перехода с заранее известной передачей управления на начальную команду, с заданным большим числом повторений (например, порядка тысячи) команд тела цикла могут без потери эффективности использоваться традиционные команды перехода. Кроме того, команды перехода необходимы для выполнения редко используемых блоков программного кода, связанных, например, с обработкой исключительных ситуаций.
Введение условных команд требует оборудования для задания предикатов и работы с ними. Но в условиях относительного избытка обрабатывающих устройств, которые все равно нет возможности загрузить непосредственно вычислениями, использование этих устройств для вычисления предикатов служит общему повышению производительности микропроцессора.
- Предисловие
- Глава 1. Общие сведения о микропроцессорах
- 1.1 Классификация микропроцессоров
- 1.2 Характеристики микропроцессоров
- 1.2.1 Тактовая частота
- 1.2.2 Архитектура процессора
- 1.2.3 Технологический процесс производства
- 1.2.4 Частота системной шины
- 1.2.5 Размер кэша
- 1.3 Типы архитектур микропроцессоров
- 1.4 Структурная схема микропроцессоров
- 1.4.1 Микропроцессор Фон-Неймана
- 1.4.2 Конвейер
- 1.4.3 Зависимость между частотой и количеством ступеней конвейера
- 1.5 Представление информации в эвм
- 1.5.1 Двоичное представление целых чисел
- 1.5.2 Представление символьной информации
- Глава 2. Архитектура микропроцессоров ia-32
- 2.1 Состав и функции регистров
- 2.1.1 Основные регистры
- 2.1.2 Регистры дополнительных функциональных модулей
- 2.2 Типы адресации
- 2.3 Система команд
- 2.3.1 Классификация команд
- 2.3.2 Формат команды
- 2.3.3 Однобайтовые команды
- 2.3.4 Непосредственно заданные операнды
- 2.3.5 Команды с регистровыми операндами
- 2.3.7 Команды с операндами, расположенными в памяти
- Глава 3. Организация многоуровневой памяти
- 3.1 Принцип построения многоуровневой памяти
- 3.2 Организация кэш-памяти
- 3.3 Протоколы когерентности памяти микропроцессоров
- 3.4 Страничная организация памяти
- Глава 4. Режимы работы процессоров ia-32
- 4.1 Обзор режимов работы
- 4.2 Реальный режим адресации
- 4.3 Защищённый режим
- 4.3.1 Дескрипторные таблицы
- 4.3.2 Дескрипторные регистры
- 4.3.3 Дескриптор
- 4.3.4 Односегментная модель памяти
- 4.3.5 Многосегментная модель памяти
- Глава 5. Страничная организация памяти в процессорах ia‑32
- 5.1 Каталог страниц
- 5.2 Таблица страниц
- 5.3 Страничная переадресация
- 5.4 Диспетчер виртуальных машин системы Microsoft Windows
- Глава 6. Архитектура процессоров с параллелизмом уровня команд
- 6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
- 6.2 Суперскалярные процессоры и процессоры с длинным командным словом
- 6.3 Зависимости между командами, препятствующие их параллельному исполнению
- 6.4 Предварительная выборка команд и предсказание переходов
- 6.5 Условное выполнение команд в vliw-процессорах
- 6.6 Декодирование команд, переименование ресурсов и диспетчеризация
- 6.7 Исполнение команд
- 6.8 Завершение выполнения команды
- 6.9 Направления развития архитектуры процессоров с параллелизмом уровня команд
- Глава 7. Мультитредовые микропроцессоры
- 7.1 Основы мультитредовой архитектуры
- 7.2 Выявление тредов
- 7.3 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
- 7.3.1 Мультитредовая модель выполнения программы
- 7.3.2 Мультитредовые программы
- 7.3.3 Аппаратные средства мультитредовой архитектуры
- 7.3.4 Преимущества мультитредовой архитектуры
- 7.4 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы
- 7.5 Специфика мультитредовых моделей распараллеливания
- Глава 8. Модуль обработки вещественных чисел
- 8.1 Представление чисел с плавающей запятой
- 8.2 Состав модуля fpu
- Глава 9. Основы 64-разрядной архитектуры
- 9.1 Состав и назначение регистров микропроцессора ia-64
- 9.2 Особенности архитектуры epic
- 9.3 Архитектура x86-64
- 9.4 Структура одноядерного процессора
- 9.5 Многоядерные процессоры
- 9.6 Зачем нужны “лишние” разряды?
- Глава 10. Современные 64-разрядные микропроцессоры корпораций Intel и amd
- 10.1 Архитектура Intel Core 2
- 10.1.1 Intel Wide Dynamic Execution
- 10.1.2 Intel Intelligent Power Capability
- 10.1.3 Intel Advanced Smart Cache
- 10.1.4 Intel Smart Memory Access
- 10.1.5 Intel Advanced Digital Media Boost
- 10.1.6 Логическая схема процессора
- 10.2 Архитектура Intel Core i7
- 10.2.1 Технология Hyper-Threading в архитектуре Nehalem
- 10.2.2 Иерархия кэш-памяти в архитектуре Nehalem
- 10.3 Хронология развития семейств микропроцессоров с архитектурой Nehalem
- 10.4 Архитектура amd Athlon 64
- 10.4.1 Ядро процессора
- 10.4.3 Контроллер памяти
- 10.4.4 Контроллер HyperTransport
- 10.5 Архитектура amd k10
- 10.4.1 Технология amd Memory Optimizer Technology
- 10.5.2 Ядро процессора
- 10.5.3 Предвыборка данных и инструкций
- 10.5.4 Выборка из кэша
- 10.5.5 Предсказание переходов и ветвлений
- 10.5.6 Процесс декодирования
- 10.5.7 Диспетчеризация и переупорядочение микроопераций
- 10.5.8 Выполнение микроопераций
- 10.5.9 Технологии энергосбережения
- 10.5.10 Шина HyperTransport 3.0
- 10.5.11 Семейство процессоров Barcelona
- 10.5.12 Семейство процессоров Phenom
- Глава 11. Технологии, поддерживаемые современными микропроцессорами
- 11.1 Технологии тепловой защиты
- 11.1.1 Технология Thermal Monitor
- 11.1.2 Технология Thermal Monitor 2
- 11.1.3 Режим аварийного отключения
- 11.2 Технологии энергосбережения
- 11.2.1 Технология Enhanced Intel SpeedStep
- 11.2.2 Технология Cool'n'Quiet
- 11.3 Технология расширенной памяти
- 11.4 Технология антивирусной защиты
- 11.5 Технология виртуализации
- 11.6 Реализация технологий в современных микроархитектурах
- 11.6.2 Em64t – NetBurst
- 11.6.3 Intel Core
- 11.6.4 Intel Atom
- 11.6.5 Nehalem
- 11.6.6 Xeon
- Глава 12. Графические микропроцессоры
- 12.1 Основные термины и определения
- 12.2 Технологии построения трёхмерного изображения
- 12.2.1 Технологии повышения реалистичности трехмерного изображения
- 12.3 Шейдерный процессор
- 12.4 Особенности современных графических процессоров
- Глава 13. Однокристальные микроконтроллеры
- 13.1 Общая характеристика микроконтроллеров
- 13.2 Микроконтроллеры семейства avr
- Почему именно avr?
- 13.3 Общие сведения об омк avr
- 13.4 Характеристики avr-микроконтроллеров
- Глава 14. Технология производства микропроцессоров
- 14.1 Особенности производства процессоров
- 14.2 Новые технологические решения
- 14.3 Технология производства сверхбольших интегральных схем
- I. Выращивание кристалла кремния
- II. Создание проводящих областей
- III. Тестирование
- IV. Изготовление корпуса
- V. Доставка
- 14.4 Перспективы производства сбис
- Англо-русский словарь терминов и аббревиатур
- Библиографический список
- Интернет-ссылки
- 350072. Краснодар, ул. Московская, 2, кор. А.