7.3.2 Мультитредовые программы
Программа, предназначенная для исполнения на мультитредовом процессоре, должна обеспечивать возможность быстрого обхода ее ГУЗ, в результате которого производится распределение множества сегментов по множеству процессоров.
Спецификация кода для каждого сегмента одинакова. Сегмент определяется как фрагмент программы для последовательной машины. Хотя система команд, в которой представляется код, оказывает влияние на конструкцию каждого индивидуального процессора, это не оказывает влияния на остальную часть конструкции мультитредового процессора.
Для ускорения обхода ГУЗ планировщику мультитредового процессора требуется информация о структуре потока управления программы. В частности, требуется знать, какие сегменты являются возможными преемниками любого сегмента в ГУЗ. Планировщик мультитредового процессора использует эту информацию для предсказания одного из возможных сегментов-преемников и продолжения обхода ГУЗ, начиная с текущей отметки. Такая информация может быть определена статически и помешена в описатель сегмента. Описатели сегментов могут быть расположены внутри текста программы (например, перед кодом сегмента) или помещены отдельно, рядом с текстом программы (например, в конце).
Для согласованного выполнения различных сегментов необходимо характеризовать каждый сегмент в соответствии с набором используемых и производимых сегментом значений.
Процедура обработки регистровых значений проста. В результате статического анализа ГУЗ компилятором формируется маска создания. Потребляя значения, сегмент ожидает их только в том случае, если они еще не были произведены сегментом-предшественником. Иначе она находит требуемые значения внутри локальной памяти, переданные по кольцу сегментом-предшественником.
Естественным является расположение маски создания внутри описателя сегмента. Так как сегмент может содержать множество базисных блоков, выполнение которых зависит от обрабатываемых данных, не представляется возможным определить статически, какие регистровые значения будут созданы в динамике вычислений из-за возможных условных переходов. Маска создания должна быть консервативной и, вследствие этого, включать все возможные регистровые значения, которые могут быть произведены.
По мере выполнения процессором команд сегмента производимые значения регистров пересылаются последующим сегментам. Так как ПЭ не может определять априорно, какие команды содержит назначенный ему сегмент, он не может знать, какие из команд выполняют модификацию регистров, чье значение должно быть послано другим сегментам. В соответствии с последовательной семантикой другим сегментам должен быть послан только результат последней модификации регистра в сегменте. Стратегия, связанная с ожиданием выполнения всех команд в сегменте (когда никакие дальнейшие модификации регистров не возможны), нецелесообразна, т.к. это часто приводит к ожиданию другими сегментами значения, которое уже является доступным.
Не все созданные сегментом значения должны быть переданы сегментам-преемникам. Достаточно передавать лишь те значения, которые будут использованы вне создавшего их сегмента.
Компилятор имеет возможность определения последней команды в сегменте, которая модифицирует соответствующий регистр. Он может отметить эту команду как специальную (выполнить и переслать) команду, которая в дополнение к выполнению определенной операции направляет результат следующим ПЭ. Кроме того, поскольку ПЭ выполняет команды сегмента, он может идентифицировать те регистры, для которых значения не будут произведены.
По тем же самым причинам процессор не может определить, какие команды в действительности выполняет назначенный ему сегмент, так же, как не может определить априорно, на какой команде сегмент завершится, т.е. в какой точке управление передается вне сегмента. Во время разбиения компилятором ГУЗ на сегменты определяются границы сегмента и узлы передачи управления. Команда в одном из этих узлов передачи управления может быть отмечена специальными условиями остановки так, чтобы соответствующие условия могли быть оценены к моменту выборки такой команды процессором. Если связанные с командой условия останова выполнены, то сегмент завершен.
Спецификация пересылки и останова может быть задана с помощью добавления теговой битовой отметки (битов пересылки и стоповых битов) к каждой команде сегмента. Возможно также другое введение битовых отметок. Например, с каждой статической командой может быть ассоциирована таблица теговых битов. Аппаратные средства выбирают команды из текста программы и соответствующие битовые отметки из таблицы объединяют эту пару в новую команду и помещают в кэш-память команд. Освобождение регистра может быть задано добавлением специальной команды освобождения базовой системе команд.
Мультитредовая программа может быть сгенерирована из существующей двоичной путем добавления описателей сегментов и битовых отметок. Эта информация может быть размещена внутри кода программы, а также до или после кода. Разделение исполнительного кода и описателей позволяет упростить процедуру перенесения программы на другие аппаратные средства.
- Предисловие
- Глава 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, кор. А.