Amiga. Вычислительная техника
Меню сайта
Главная
Amiga
Amiga Corporation
Модельный ряд
История развития
Аппаратная платформа
Операционные системы
Эмуляция
AMIGA # 1
Программирование на Ассемблере
Организация процессоров
Методы защиты информации
Компьютерные новеллы
Боятся ли компьютеры адского пламени?
Виртуальная реальность
Корпоративные сети
Телекоммуникационные сети
Архитектура ЭВМ
ЕС ЭВМ
Рождение ЭВМ
Компьютер
Гарвардская архитектура
Современные высокопроизводительные компьютеры
Дорога в будущее
Vista
Инфоpматика
ЭВМ
Операционные системы
Linux
Windows
Освой компьютер
Макинтош
Набор текста
Поколения
Компьютерная грамотность
Устройство компьютера
Железо
Графика
Звук
Ремонт
Сети
Программирование
Информационные технологии
Криптография
Микроэлектроника
Истории
 
 

Современные высокопроизводительные компьютеры



Основы планирования загрузки конвейера и разворачивание циклов
Для поддержания максимальной загрузки конвейера должен использоваться параллелизм уровня команд, основанный на выявлении последовательностей несвязанных команд, которые могут выполняться в конвейере с совмещением. Чтобы избежать приостановки конвейера зависимая команда должна быть отделена от исходной команды на расстояние в тактах, равное задержке конвейера для этой исходной команды. Способность компилятора выполнять подобное планирование зависит как от степени параллелизма уровня команд, доступного в программе, так и от задержки функциональных устройств в конвейере. В рамках этой главы мы будем предполагать задержки, показанные на рис. 6.2, если только явно не установлены другие задержки. Мы предполагаем, что условные переходы имеют задержку в один такт, так что команда следующая за командой перехода не может быть определена в течение одного такта после команды условного перехода. Мы предполагаем, что функциональные устройства полностью конвейеризованы или дублированы (столько раз, какова глубина конвейера), так что операция любого типа может выдаваться для выполнения в каждом такте и структурные конфликты отсутствуют. Команда, вырабатывающая результат
Команда, использующая
результат
Задержка в тактах
Операция АЛУ с ПТ
Другая операция АЛУ с ПТ
3
Операция АЛУ с ПТ
Запись двойного слова
2
Загрузка двойного слова
Другая операция АЛУ с ПТ
1
Загрузка двойного слова
Запись двойного слова
0

Рис. 6.2.
В данном коротком разделе мы рассмотрим вопрос о том, каким образом компилятор может увеличить степень параллелизма уровня команд путем разворачивания циклов. Для иллюстрации этих методов мы будем использовать простой цикл, который добавляет скалярную величину к вектору в памяти; это параллельный цикл, поскольку зависимость между итерациями цикла отсутствует. Мы предполагаем, что первоначально в регистре R1 находится адрес последнего элемента вектора (например, элемент с наибольшим адресом), а в регистре F2 - скалярная величина, которая должна добавляться к каждому элементу вектора.

 

 

© 2010 Amigo. All Rights Reserved
Создание сайтов ЕкатеринбургШаблоны сайтовПоиск товаров - справочник цен, каталог магазинов, прайс-листыБесплатные шаблоны дизайна компьютерных сайтов
Hosted by uCoz