А.Н. Томилин - Вычислительные системы (2006), страница 10
Описание файла
PDF-файл из архива "А.Н. Томилин - Вычислительные системы (2006)", который расположен в категории "". Всё это находится в предмете "вычислительные сети и системы" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 10 страницы из PDF
Например, операция:+ V2 V3 V7Это значит, что берётся операнд из регистра V2 (все 64 компонента), берётся операндиз регистра V3, и результат записывается в V7. При этом эта операция только тогда сдвинется с регистра результата (РР), т.е. начнёт выполняться на ФУ, когда оно готово, и на регистрах V2 и V3 готовы операнды, т.е. до этого прошло считывание данных и загрузка этих регистров. Когда команда приходит на уровень регистра результата (РР), сразу опрашивается V2:готово? — готово, V7 свободен, устройство свободно, и операция вылетает на ФУ и пошла.Начинают выбираться данные из V2, V3, результат записываться обратно в V7. И всё это вконвейерном режиме.За сколько тактов это всё произойдёт? Считаем, что время взятия данных с регистровравно нулю.
Поэтому как только операция пришла, она сразу началась. Сколько понадоби26лось времени на первую операцию? 4 такта. Чтобы получить каждый следующий результат,записывающийся в V7, нужен ещё один такт. Итого: 4 + 63 = 67 — операция сложения двухвекторов по 64 компонента выполнилась за 67 тактов. Если бы не было конвейера, и каждаяоперация выполнялась бы за 4 такта, все 64 операции выполнились бы за 256 тактов. Конвейерность дала 67. Получили весьма заметный выигрыш.Я вам говорил, что понятие «суперЭВМ» возникло в литературе в 1976 году с появлением машины Cray.
Но как определяли суперЭВМ — наиболее высокопроизводительнаямашина на данный момент. Тогда решили так: 100 миллионов операций — это уже вычислительный комплекс. Так же, как космос как вычисляется? Условно будем считать 100 км. Также и тут тоже.Ещё одно определение, которое мне больше всего нравится: супермашина — котораяумеет решать те задачи, которые на порядок менее сложны тех, которые уже нужно решить.Самая мощная супермашина всегда занимает размер одного большого машинного зала.Так было, так есть и так будет.
Естественно, количество оборудования (единицы электронных схем) увеличивается, но они становятся меньше. Поэтому объём оборудования сохраняется в пределах одного большого машинного зала.Вот, мы с вами видели, как выполняется. Итак, операция полетела и началась работаэтих 67 тактов. Если у нас следующая операция умножения:(+) V2 V3 V7(×) V1 V0 V6и она попадёт сюда ровно через такт, через такт будет запущено умножение, и два ФУпойдут в параллель. Значит, нужно транслятору так назначить регистры и передать на нихданные, т.е.
осуществить машинно-зависимую оптимизацию.Что ещё он должен сделать? А ещё он должен сделать следующее. Представьте себе,что у вас по вашему алгоритму пойдёт вот такая команда:(+) V2 V3 V7(+) V7 V4 V5(×) V1 V0 V6Ясно, что вторая команда не пойдёт, пока вообще не кончится операция сложения. Хотя бы потому, что устройство сложения уже занято. И будет она, голубушка, сидеть здесь66 тактов по крайней мер. И будет как собака на сене: сама не есть и другим не даёт. Которые, на самом деле, могли бы вычисляться. Какова задача транслятора? Переставить эти вещи.
В алгоритме у вас так, но ведь можно переставить хотя бы так:(+) V2 V3 V7(×) V1 V0 V6(+) V7 V4 V5И вот эта перестановка команд — это шедъюринг — перестановка команд. Этим тожезанимается оптимизирующий транслятор.Итак команды идут, запускают векторные функциональные устройства, они работают ит.д. Нужно уметь так подготовить набор векторных команд и так заранее передать эти вещи,чтоб всегда векторные ФУ были бы загружены.Ещё были скалярные функциональные устройства.
И была группа адресных функциональных устройств. И соответственно был набор регистров. Было 8 S-регистров (скалярных).И если у вас была операция над скалярами, она уходила на скалярные ФУ, где было указаноот s0 до s7. Но это уже регистр всего лишь 64 разряда. Операнды брались отсюда, и результатзаписывался сюда. Все ФУ были конвейерные. Конвейерные хорошо для векторных, а соскалярными как? Просто идут операнды:(+) a b c(×) k l m(+) p t nВ этом случае, т.к. на следующий такт пришла операция другая (умножение, а не сложение), то один такт сложение будет простаивать. Будет недозагрузка совершенно явная.Кстати, очень хорошие операции были такие: умножение вектора A на константу c.27Что такое адресные ФУ? Были так называемые А-регистры, тоже 8 штук.
А-регистрыотличались тем, что они 24-х разрядные — специально для адресной арифметики. В БЭСМ-6можно было складывать адреса, а умножать — нет. Здесь же есть вся адресная арифметика,правда через некий промежуточный буфер из 64-х регистров, который назывался B-регистр.Для S-регистров тоже был сделан буфер тоже на 64 регистра — Т-регистр.векторные регистры- 64 V2±×64ОПV3V7векторныефункциональныеустройства...V0V1V7S-регистрыT-регистры- 64 -s0БК8скалярныефункциональныеустройства8адресныефункциональныеустройстваs7УУ РРКОП +№ рег V2№ рег V3№ рег V7А-регистры- 24 -В-регистрыРис.
2 Структурная схема CrayТакова была идея Cray: иметь быструю регистровую память и возложить на трансляторобязанности так располагать данные на регистровой памяти, чтобы вызываемые форматыкоманды находили во время всегда себе «пищу» для выполнения. Понятно, что две командыпри одном векторном ФУ сложения A + B и C + D надо их как-то разводить в программе, потому что сложитель был один. Это тоже задача транслятора была.Посмотрим, какая здесь по сравнению с БЭСМ-6 разница в модели программирования:там была модель памяти, здесь модель регистров. Конечно, когда вы пишите на языке высразу так не очень, тут уже транслятор имеет это в виду. Там не было прямо адресуемых регистров. Но именно в расчёте на эти регистры, на их вовремя наполнение, мгновенное использование и рассчитывал Крэй, когда рассчитывал свою машину.Сколько здесь можно разогнать? Конечно, в основном разгонка идёт здесь.
Частота уCray была 80 МГц, это приблизительно 80 миллионов операций в секунду с плавающей запятой при выполнении векторных операций. Сколько операций можно запустить параллельно? Одна операция требует 3 векторных регистра, всего их 8, значит 2 операции. Таким образом, до 160 MFlops можно было раскрутить Cray-1. Это, конечно, очень серьёзное былоприобретение в мировом вычислительном хозяйстве, и потому и названа была «супермашина».На самом деле можно было больше. И это «больше» достигалось вот каким способом:28Q=( A + B) ⋅ CDaiqibicidiРис. 3Результат сложителя попадает не на регистр, а на умножитель. Туда же приходят ci.Отсюда это идёт на делитель, куда подсовываются di.
И отсюда выскакивает на векторныйрегистр Q. Итого, сколько нам нужно векторных регистров: 1 — вектор A, 2 — вектор B, 3 —вектор C, 4 — вектор D и 5 — вектор Q. Даже пяти хватает, чтобы сколько получитьопераций в секунду? Через 12 тактов появится q1 и плюс ещё 63. Таким образом, через 75тактов у вас появится результат скольких операции? 64 на 3 = 192 операций. Таким образомразогнали почти до 240 MFlops (чуть меньше).
Но это ещё не предел. На Cray’е можно былов определённых случаях получать существенно больший результат. Вот это называется«зацепление работы векторных функциональных конвейерных устройств» или«супервекторная производительность», за счёт вот такой работы. Чуть сложнее, конечно,оборудование работает. Но вот это очень важный момент векторно-конвейерных машин и онтут реализован.Вот эти два новых уровня параллелизма (вертикальный — количество функциональных устройств, и горизонтальный — конвейер) и привело к высокой производительностимашины, которую изобрёл Крэй, и это всё было почтительно показано, мировое достижение,и появилось слово «суперкомпьютер».Вспоминаются яркие впечатления студенчества, когда ходили в поход в Подмосковье иостанавливались в школах, вокзалах и т.д.
Вот в одной школе мы остановились города Рогачёва, и поскольку вечером пришли, утром ушли, посмотрели там учебные пособия. Запомнилось два учебных пособия. Одно с некоторой усмешкой запомнили. Например, пособие порусскому языку: «коза — козы — козочка, гора — горы — горочка, вода — воды — водочка».А вот второе — пособие по арифметике: написана таблица 10 на 10, по краям числа от0 до 9, но не так, как умножение. Думаем, по какому же принципу построена эта таблица?Студенты мехмата ничего понять не могут, как организована таблица.
Утром мы аккуратненько, чтобы своё непонимание не светить, спросили у учителя, что это такое. Он сказал:«А вот когда ученик хочет найти число 25, он смотрит 7-ю и 3-ю колонку, он знает, что напересечение 7-й и 3-ей колонки стоит число 25». Мы совершенно не поняли.Итак, мы с вами рассмотрели следующие 2 уровня параллелизма: параллелизм работыфункциональных устройств и параллелизм выполнения операции в конвейерном режиме вкаждом из этих функциональных устройств. Мы рассмотрели с вами зацепление ФУ, т.е.,напоминаю, когда у нас имеется несколько векторных операций, в которые включены операции над векторными операндами, то мы можем устроить зацепление (см. Рис. 3). Соответственно, в кодах операции указывается: у нас будет работать сложитель, со своими четырьмяступенями, передаётся результат на следующее устройство, т.е.
на умножитель, и выход идётна делитель, и выход, естественно, идёт в свободный регистр. После разгона всех трёх конвейеров, т.е. первый результат q1 появляется через 12 тактов, но зато уже каждый следующий qi выходит через один такт. Итого, если взять машину Cray, где у нас 64 компонента вкаждом векторном регистре, у нас получается вычисление за 12 + 63 = 75 тактов, т.е. за 75тактов получаем, на самом деле, 192 двухместных операций. Это и есть супервекторная производительность.
Если бы этого не было, нужно было бы использовать 12 на 192 — совсеммного. Видите, какая большая выгода.29Называется это «зацепление работы конвейерных устройств» или «супервекторнаяпроизводительность».Кстати, мы здесь видим, что в этой ситуации у нас экономятся регистры. Всего 5 регистров задействованы. Если б мы взяли вот такие операции:A+B=KC×P=LD÷N=EВ таких случаях нам бы понадобилось 9 векторных регистров. Уже Cray с этим бы несправился, потому что у него всего 8 векторных регистров.
Кстати, тут вы видите, здесь тоже3 операции выполняются, тоже 192 элементарных двуместных операции, и выполняется этовсё за 4 + 63 = 67, «×» на такт позже начинает работать, «÷» ещё на такт, т.е. к исходу 69-готакта вы получаете результат.Кстати, вот в Cray было по одному устройству для выполнения операций над векторами: один сложитель/вычитатель, умножитель, делитель. Поскольку мы сейчас богатенькиестали, то можно заказать столько ФУ, сколько нужно.