В.А. Фисун - Параллельная обработка данных (2005) (1127758), страница 4
Текст из файла (страница 4)
Обновление содержимогоосновной памяти производится при выталкивании строки кеша, при выборкиданного по адресу другими абонентами, которым доступна память: вывод,другие процессоры. Естественно, при первом способе записи кэш-эффектотсутствует, но реализация второго способа дороже.12. Конвейеризация вычислительных операцийДлительность арифметической операции может быть уменьшена за счетвременного перекрытия ее различных фаз, путем конвейеризации вычислительнойработы. Для этого механизмы Арифметического Логического Устройства (АЛУ)выполняется по конвейерному принципу. Пусть, работа АЛУ - для сложенииданных, разделена на три этапа, на три автономных блока Рi : Р1 - выравниваниепорядков операндов, Р2 - операция сложения мантисс, Р3 - нормализациярезультата, каждый из которых выполняется за один условный такт вычислителя.
Ипусть на таком АЛУ выполняются вычисления:A1 = B1+C1A2 = B2+C2A3 = B3+C3A4 = B4+C4Тогда временная диаграмма работы АЛУ имеет вид:Устройство 1 такт2 такт3 такт 4 такт 5 такт6 тактP1B1+C1В2+C2B3+C3 B4+C4 нет работы нет работыP2нет работы B1+C1 B2+C2 B3+C3 B4+C4нет работыP3нет работы нет работы B1+C1 B2+C2 B3+C3В4+С4Вычисления будут выполнены за 6 тактов работы вычислителя, причем,здесь, только два такта работы оборудование было загружено полностью.ВОПРОС !!!! За сколько тактов будет выполнены эти вычисления, еслиАЛУ не конвейеризовано. Сокращает ли конвейеризация время выполненияотдельной операции ?Оптимальную загрузку конвейерных АЛУ можно получить при работе срегулярными структурами, например, по-элементное сложение векторов. Вобщем случае, пусть работа операционного блока разбивается на nпоследовательных частей (стадий, выполняемые за одинаковое время), накоторых вычислительные операции выполняются в конвейерном режиме.
Тогда,если на выполнение одной операции сложения блоку требуется время T, то наобработку N операций сложения время: Tn = (n + N) * (Т / n). Следовательно,если n << N, то , то ускорение вычислений будет в n раз.13Фактором, снижающим производительность конвейеров, является конфликты поданных. Так вычисления:Вычислениядругая форма этих вычисленийA1 = B1+C1A2 = A1+C2 A2 = (B1+C1)+ C2A3 = B3+C3 A3 = B3+C3A4 = B4+C4 A4 = B4+C4для правильной работы будут выполняться на два такта дольше:Устр. 1такт 2такт 3такт 4такт 5такт 6такт 7такт 8тактP1B1+C1 н/р н/р A1+C2 B3+C3 B4+C4 н/рн/рP2н/р B1+C1 н/р н/р A1+C2 B3+C3 B4+C4 н/рP3н/р н/р B1+C1 н/рн/р A1+C2 B3+C3 В4+С4На этой диаграмме видно, что количество простаивающих тактов работыоборудования “н/р” – “конвейерных пузырей “ (pipeline bubble) стало больше.13.
Внеочередное выполнение командМетоды динамической оптимизации: неупорядоченное выполнение “out-of-orderexecution” , неупорядоченная выдача “out-of-order issue” основаны на изменениипорядка вычислений. Так, пример вычислений из предыдущего раздела после егопреобразования к виду:A1 = B1+C1A3 = B3+C3 A3 = B3+C3A4 = B4+C4 A4 = B4+C4A2 = A1+C2 A2 = (B1+C1)+ C2позволит проводить вычисления без пропуска рабочих тактов для ожиданиявычисления.Оптимизационныепреобразованияпоследовательностивычисления могут проводиться динамически, аппаратурой АЛУ, а также, в рядеслучаев и статически проводиться системами программирования.14. Спекулятивное выполнение командВ конвейерных архитектурах устройство выборки команд является таким жеконвейером, как и другие функциональные устройства.
Так, для условного операторы:IF (A<B) GO TO L;S1;L:S2 еще до вычисления значения условного выражения А<Внеобходимо решать задачу о заполнении конвейера команд кодами S1 или S2 –спекулятивного выполнения программы (чтобы не было пропуска тактов конвейера изза неверно выбранной ветки, коды которой потребуется убирать из конвейера).Тривиальное решение состоит в выборе кода, текстуально следующего закомандой условного перехода. Для такого оборудования компиляторы могутформировать объектный код с размещением наиболее вероятно выполняемымфрагменте программы непосредственно за командой условного перехода.
Так, дляциклических конструкций, вероятность перехода на повторение цикла вышевероятности выхода из него. Некоторые системы программирования дают14возможность программисту указывать вероятность перехода по метке в условномпереходе.Аппаратный механизм учета вероятности перехода состоит из блока предсказанияпереходов. Этот блок, кроме (вместо) статически определенных предпочтений дляветвлений, имеет таблицу переходов, в которой хранится история переходов длякаждого (в рамках объема таблицы) перехода программы. Большинства современныхмикропроцессоров обещают точность предсказаний переходов этим способом выше90%. Причина повышенного внимания к этому вопросу обусловлена большими задержками, возникающими при неверном предсказании переходов, что грозитсущественной потерей производительности. Используемые в микропроцессорахметоды предсказания переходов, как уже было сказано, бывают статические идинамические.
Как динамический, так и статический подходы имеют своипреимущества и недостатки.Статические методы предсказания используются реже. Такие предсказанияделаются компилятором еще до момента выполнения программы. Соответствующиедействия компилятора можно считать оптимизацией программ. Такая оптимизацияможет основываться на сборе информации, получаемой при тестовом прогонепрограммы (Profile Based Optimisation, PBO) или на эвристических оценках.Результатом деятельности компилятора являются "советы о направлении перехода",помещаемые непосредственно в коды выполняемой программы. Эти советыиспользует затем аппаратура во время выполнения. В случае, когда переходпроисходит, или наоборот - как правило, не происходит, советы компилятора частобывают весьма точны, что ведет к отличным результатам. Преимущество статическогоподхода - отсутствие необходимости интегрировать на чипе дополнительнуюаппаратуру предсказания переходов.Большинство производителей современных микропроцессоров снабжают ихразличными средствами динамического предсказания переходов, производимого набазе анализа "предыстории".
Тогда аппаратура собирает статистику переходов,которая помещается в таблицу истории переходов BHT (Branch History Table).В обоихслучаях компилятор не может выработать эффективные рекомендации на этапетрансляции программы. В то же время схемы динамического предсказания переходовлегко справляются с такими задачами. В этом смысле динамическое предсказаниепереходов "мощнее" статического.
Однако у динамического предсказания есть и своислабые места - это проблемы, возникающие из-за ограниченности ресурсов для сборастатистики .15. Векторно - конвейерные ЭВМ.Реализация команд организации цикла (счетчик и переход) при регулярной работес данными - накладные расходы и препятствие опережающему просмотру наобычных, скалярных вычислителях, показывает, что такие вычисления эффективнеевыполнять на специализированном векторно-конвейерном вычислителе.Если вместо цикла:15DO L=1,N A(I) = B(I)+C(I) ENDDOиспользовать запись алгоритма в виде векторной команды сложения вида:VADD(B,C,A,N), то векторный вычислитель, выполняющий такие команды, будетвырабатовать результаты на каждом такте.
В таком вычислителе имеется один (илинебольшое число) конвейерный процессор, выполняющий векторные команды путемзасылки элементов векторов в конвейер с интервалом, равным длительностипрохождения одной стадии обработки. Скорость вычислений зависит только отдлительности стадии и не зависит от задержек в процессоре в целом.Так как конвейер для однотипных операций дешевле и быстрее чем длямногофукциональных , то выгодно их делать специализированными однофункциональным: например, только для + или только для *. Для их совместногоработы используется принцип зацепления конвейеров.
Так, в ЭВМ Крей-1 имеется 12конвейеров, из них 8 могут быть зацеплены, то есть результаты вычисления конвейерамогут входными аргументами для другого.Операнды (результаты) находятся впамяти верхнего уровня или на регистрах. Для операндов задается: базовый адресвектора, число элементов, тип данных в каждом элементе, схема хранения вектора впамяти. Некоторые векторные машины могут работать с двух-трех мернымимассивами.16.
Производительность конвейерных вычислителейВремя выполнения отдельной скалярной операции на конвейерном вычислителеравно: Т = S + K, где K - время работы, за которое конвейер выдает очереднойрезультат, а S - время запуска конвейера, время заполнения конвейера, которое безучета времени подготовки операндов, равно: S = K*(m-1), где m - число ступенейконвейера. Производительность конвейерного вычислителя на скалярных операциях(число результатов, выдаваемых за единицу времени) равна: R = 1/(S + K).Время выполнения векторной операции на конвейерном вычислителе равно: Т = S+ K*N, где N - длина вектора.
Производительность конвейерного вычислителя привекторной работе (число результатов, выдаваемых за единицу времени) равна: R =N/(S + K*N), асимптотическая производительность Rб = 1/K.Например, при К = 10 нс, Rб = 10**8 результатов/сек, т.е. 100 мегафлопов. Графикидостижения такой производительности для S = 100 нс.
и S= 1000 нс. показывают, чтоони имеют различное расстояние до асимптоты. Для оценки этого эффектаиспользуется величина N1/2, определяемая как длина вектора, для которойдостигается половина асимптотыческой зависимости. Для приведенного вышепримера N1/2 = 100 для S =1000 и N1/2 = 10 для S = 100.17.
Системы команд процессоровТрадиционные процессоры универсальных ЭВМ называются CISC (Complex(Complicated) Instruction Set Computer) - компьютерами с полной системой команд(Семействa Intel ЭВМ от серии ix86 до Pentium и Pentium Pro). Помимоарифметических и логических операций в систему команд (аппаратно реализуемые16функции) включались сложные операции, такие как извлечения корня; реализуютсясложные схемы формирования исполнительных адресов (в i486 доступно до 12способов).
Расширение спектра операций облегчает программирование и отладкупрограмм, однако увеличивает трудоемкость разработки процессоров. Времявыполнения даже таких операций, как умножение и деление чисел с плавающейзапятой варьюируется в зависимости от значений аргументов операций, чтоограничивает возможности аппаратного планирования совмещенного выполнениякоманд.CISC набор команд нельзя было разместить целиком на одном кристалле – чипепервых СБИС. Исполнение процессоров на кристалле потребовало ревизии системыкоманд: что привело к реализации компьютеров с сокращенным набором команд RISC (Reduced Inctruction Set Computing) архитектуры.
Традиционное число командздесь - 128. Выполнение команд, не входящие в этот состав производится программно,для этого в архитектуре предусматривается развитый механизм реализацииподпрограмм: реализация запоминания-восстановления регистров, стеки и т.д.Упрощение оборудования, конвейеризация выполнения команд позволило RISCпроцессорам резко повысить производительность. Недостатки данной архитектуры:отсутствие операций регистр-память вызывают необходимость подкачки данныхкомандами обмена между регистровым файлом процессора и оперативной памятью, аограниченный формат команд не позволяют минимизировать объем исполняемогокода.