6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
Повышение производительности микропроцессоров достигается за счет увеличения тактовой частоты, совершенствования параллельной и конвейерной обработки данных, а также уменьшения времени доступа к памяти. В настоящее время возможно проектирование микропроцессоров с несколькими сотнями миллионов транзисторов на кристалле. Уверенно просматривается перспектива увеличения количества транзисторов до миллиарда. Возросший объем транзисторов может быть использован для построения функциональных устройств микропроцессора или для увеличения объема внутрикристальной кэш-памяти или для того и другого. Возможно также создание новых классов кристаллов – однокристальных параллельных систем.
Прирост объема кэш-памяти дает эффект лишь до определенного объема, пока удается локализовать блоки исполняемого кода и блоки данных. Если, например, имеется большой объем данных, превышающий возможный размер кэш-памяти, и адреса обрабатываемых данных вырабатываются в ходе вычислений, то кэш-память будет только постоянно обновлять запрошенные строки, что приведет к потере производительности.
Память представляет собой ресурс, не производящий непосредственно вычислений, поэтому привлекательным выглядит использование ресурса транзисторов кристалла для построения совокупности функциональных устройств. Основное препятствие на пути повышения производительности за счет увеличения количества функциональных устройств – это загрузка устройств полезной работой.
Идея распараллеливания вычислений основана на том, что большинство задач может быть разделено на набор меньших задач, которые могут быть решены одновременно. Обычно параллельные вычисления требуют координации действий. Параллельные вычисления использовались много лет в основном в высокопроизводительных вычислительных системах, но в последнее время к ним возрос интерес у производителей микропроцессоров вследствие существования физических ограничений на рост тактовой частоты процессоров. Параллельные вычисления стали доминирующей парадигмой в архитектуре многоядерных процессоров.
Писать программы для параллельных систем сложнее, чем для последовательных, так как конкуренция за ресурсы порождает явление гонок (кто быстрее обратится к памяти), что является причиной появления нового вида ошибок в программном обеспечении. Взаимодействие и синхронизация между процессами представляют большой барьер для получения высокой производительности параллельных систем.
Если при вычислении не применяются циклические (повторяющиеся) действия, то N вычислительных модулей никогда не выполнят работу в N раз быстрее, чем один единственный вычислительный модуль. Какое-то время часть вычислителей будет заниматься распределением работы других модулей, синхронизацией процессов, сборкой результатов и т.п., и не участвовать непосредственно в полезной работе.
Для получения точных показателей параллелизма программ воспользуемся моделью многопоточного выполнения, представленной в виде направленного ациклического графа НАГ (directed acyclic graph, DAG). В модели НАГ выполнение многопоточной программы рассматривается с точки зрения групп инструкций (вершины НАГа), а ребра отражают зависимости между инструкциями. Если инструкция x должна завершиться перед тем, как может начаться инструкция у, то будем обозначать это как x < y. Если инструкции могут выполняться параллельно, будем обозначать это как х ∥ у. На рисунке 6.1 представлен многопоточный НАГ. Из этого рисунка видно, что, например, 1 < 2, 6 < 12 и 4 ∥ 9.
Существуют три характеристики НАГа, которые позволяют точно определить его параллелизм.
1. Участок (span) – самый длинный путь зависимых инструкций графа. Участок графа на рисунке 23 равен 9, что соответствует пути 1→ 2→ 3→ 6→ 7 → 8 → 11→ 12 → 18. Этот участок НАГа иногда называют “длиной критического пути”. Поскольку участок определяет минимальное число инструкций, которые должны быть выполнены последовательно, то, приняв, что издержки на коммуникацию, планирование и т.д. равны нулю и время выполнения инструкции одной вершины НАГа равно 1, мы получим, что минимальное время выполнения рассматриваемой многопоточной программы Tmin = S, где S – участок НАГа. В нашем примере Tmin = 9.
2. Обозначив буквой долю вершин НАГа, которые нужно выполнять последовательно, 01, (в нашем примере = 9/18 = 0,5), можно выразить закон Амдала, гласящий, что производительность процессора (вычислительной системы) при использовании p вычислителей увеличится в K раз по отношению к производительности процессора (вычислительной системы) с одним вычислителем:
.
Заметим, что граничные значения соответствуют полностью параллельной (=0) и полностью последовательной (=1) программе.
3. Максимальное число вычислителей pmax требуемых для организации параллельных вычислений многопоточной программы равно ширине НАГа – количеству вершин в самом широком месте графа. В нашем примере pmax = 5 ( вершины 5,7,9,15,17). Однако максимальное число pmax не всегда является оптимальным, так как в тех местах, где НАГ имеет ширину меньше максимальной, часть вычислителей будет простаивать. Поэтому можно использовать меньшее число вычислителей и загружать их по возможности все сразу после прохождения самого широкого места НАГа для выполнения инструкций тех вершин самого широкого места, которые не были выполнены.
В нашем примере вместо пяти вычислителей достаточно четырёх и даже трёх для выполнения программы за минимальное время Tmin = 9. При использовании двух вычислителей для выполнения программы потребуется уже 11 единиц времени, а при использовании одного вычислителя – 18 единиц времени.
- Предисловие
- Глава 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, кор. А.