Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PODs 2.0 release Marina_Lesha version beta3 vir...doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3.02 Mб
Скачать

Зацепление функциональных устройств

Архитектура CRAY Y-MP C90 позволяет использовать регистр результатов векторной операции в качестве входного регистра для последующей векторной операции, т.е. выход сразу подается на вход. Это называется зацеплением векторных операций. Вообще говоря, глубина зацепления может быть любой, например, чтение векторов, выполнение операции сложения, выполнение операции умножения, запись векторов.

Дублирование конвейеров.

Векторные ФУ и ФУ с плавающей точкой продублированы:

векторные команды разбивают 128 элементов векторных регистров на четные и нечетные,

обрабатываемые одновременно двумя конвейерами (pipe 0, pipe 1). Когда завершается

выполнение очередной пары операций результаты записываются на соответствующие

четные и нечетные позиции выходного регистра. В полностью скалярных операциях,

использующих ФУ с плавающей точкой, работает только один конвейер. Многопроцессорная обработка: multiprogramming, multitasking

Multiprogramming - выполнение нескольких независимых программ на различных процессорах.

Multitasking - выполнение одной программы на нескольких процессорах. 16 таких процессоров.

21 Вопрос. Векторизация программ, необх. Усл. Векторизации, препятствия для векторизации.

Понятие о векторизации программ

Некоторый фрагмент программы может быть обработан в вектор­ном режиме, если для его выполнения могут быть использованы векторные команды из системы команд компьютера. Если весь фрагмент программы удалось заменить векторными командами, то говорят о его полной вектори­зации. В противном случае мы имеем дело с частичной векторизацией или невозможностью векторизации фрагмента вовсе. Процесс поиска подходя­щих фрагментов в программе и их замена векторными командами называется векторизацией программы.

Вектора данных, вектора в программах

Вектор данных - это упорядоченный набор данных, размещенных в памяти на одинаковом "расстоянии" друг от друга. Примерами векторов в программах могут служить строки, столбцы, диагонали, массивы, в тоже время поддиагональная часть двумерной матрицы вектором не является.

Возможность векторной обработки программ

Некоторый фрагмент программы может быть обработан в векторном режиме, если для его выполнения могут быть использованы векторные команды (соответственно полная или частичная векторизация). Поиск таких фрагментов в программе и их замена на векторные команды называется векторизацией программы. Для векторизации необходимы вектора-аргументы + независимые операции над ними. Кандидаты для векторизации - это самые внутренние циклы программы.

Пример. Нужно выполнить независимую обработку всех элементов поддиагональной части массива; в этом случае можем векторизовать по строкам, можем по столбцам, но не можем обработать все данные сразу в векторном режиме из-за нерегулярности расположения элементов поддиагональной части массива в памяти.

Пример векторизуемого фрагмента, для которого выполнены все указанные условия:

Do i=1,n A(i) = A(i) + s EndDo

Пример невекторизуемого фрагмента (очередная итерация не может начаться, пока не закончится предыдущая):

Do i=1,n A(i) = A(i-1)+s EndDo