Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » А.Н. Томилин - Вычислительные системы (2006)

А.Н. Томилин - Вычислительные системы (2006), страница 11

PDF-файл А.Н. Томилин - Вычислительные системы (2006), страница 11, который располагается в категории "лекции и семинары" в предмете "вычислительные системы" изседьмого семестра. А.Н. Томилин - Вычислительные системы (2006), страница 11 - СтудИзба 2019-09-18 СтудИзба

Описание файла

PDF-файл из архива "А.Н. Томилин - Вычислительные системы (2006)", который расположен в категории "лекции и семинары". Всё это находится в предмете "вычислительные системы" из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 11 страницы из PDF

Сейчас нет уже такого понятия, как«серийная машина». А раньше большие машины шли сериями, т.е. машина вот такая. Хочешь — бери, не хочешь — другой нет. Теперь же любую систему берёте на заказ.Вот я напомнил вопрос о зацеплении работы функциональных устройств. В связи сэтим, имеется понятие «суперскалярный».Суперскалярный — это когда у вас в вашем процессоре операций над векторами не задействовано, а есть несколько устройств: тот же сложитель/вычитатель, тот же умножитель,делитель — и вы можете отдельные операции практически параллелить. Вот если такое естьу вас в скалярном процессоре, там где нет соответствующих схем подачи компонентов векторов (это я очень аккуратно выразился), только такие машины называются суперскалярными.Итак, если у вас отдельно есть группа векторных ФУ, отдельно группа скалярных ФУ,адресные — бог с ними, вот что касается скалярных операций, то можно их подсовыватьвнутри векторных и ничего плохого не будет.

Но вот из машин типа Cray сразу вылезло двеидеи. Первая идея заключается вот в чём. Вот у нас есть векторный регистр A (V0), векторный регистр B (V1). Я выполняю операциюA+B=Ca1a2b1b2V0(A)c1c2V1( B)V2(C)Значит, я из A беру a1, из B — b1, в C пишу с1. Но если я так сделал, то можно считатьобработанные компоненты векторных регистров A и B свободными. C я не могу считать свободным, здесь у меня заполняется. И, как бы, я мог заполнять освободившиеся компонентыуже другим материалом.

Тут вопрос: команды одиночной передачи — слишком накладнобудет, команды групповой — синхронизуется ли здесь всё. Можно попробовать, но всё-такисложно. У Cray этого не было. И какая у машины Cray была проблема? А вот какая.Естественно, возникал подъём производительности: все устройства заняты, зацепление,всё работает с максимальной производительностью. А мы пытаемся подкачать до тех пор,пока не закончится эта операция. Как только закончилась — групповая операция идёт, ноона должна завершиться, на это нужно время. При этом, что это может быть? Это можетбыть какие-то другие данные для других операций, если вам достаточно и все операции идутнад 64-х компонентными векторами.

А может быть, это просто продолжение вектора A ивектора B в том смысле, что у вас вектор не 64 компонента, а 1000. Значит, вам нужно под30загружать всё время. Поэтому, может быть падение производительности, потом снова и т.д.Вот такой будет «пилообразный» вариант графика загрузки ФУ:загрузка ФУподгрузкаtТак и случилось в машине Cray.И вот ученики Крэя сделали из этого вывод и попробовали это дело преобразить.

Чтоони сделали? Они сделали следующее. Они убрали все регистры. Давайте смотреть ситуациюQ=( A + B) ⋅ CDНужно при отсутствии регистров уметь подавать на вход каждый такт: ai, bi, ci, di, и qiзаписывать каждый такт. Если нет регистров, то откуда брать информацию? Конечно из памяти. Т.е. в один такт я должен уметь сделать 4 считывания из памяти и одну запись. Т.е.нужно иметь очень высокую степень параллелизма работы памяти.Вот в машине Cyber 205, которую ученики Крэя в фирме Control Data Corporation (CDC)сделали несколько позднее, это достигнуто было, и все ФУ работали непрерывно.Давайте посчитаем какой-нибудь разумный вариант. Они одну трудность убрали (регистры, нужно на них вовремя подавать данные, всё это считает оптимизирующая часть транслятора, причём не всегда удачно).

Они ушли от этой неприятности, но получили другуюнеприятность: организовать высокий параллелизм далеко не так уж просто. И вот этотподход время от времени появлялся в разработках машин векторно-конвейерного класса.Давайте посчитаем пример:Q=( A + B) ⋅ CDИтак, разбиваем на некоторое количество блоков ОП. Как правило, цикл работы блокапамяти бывает дольше цикла работы АЛУ или ФУ, как части АЛУ, в 2 раза или в 4.

Пустьцикл работы блока ОП равен 12 тактам. Сколько нам нужно блоков памяти, естественно безостановки на подгрузку: 12 + (N – 1), где N — число компонент вектора. Хорошо. Допустим,я запустил на выборку a1 и запустил на выборку следующий блок памяти со сдвигом на одинтакт. Итак, сколько мне нужно блоков для размещения компонент вектора A? Вообще говоря,12, потому что считаем, что я запускаю через каждый такт: как только a1 я получу, запускаюего снова на выборку a13. Действительно, поскольку я запустил его через 12 тактов, через 12тактов я получу a13, а он мне как раз раньше и не нужен.

Всё. Таким образом, мне нужно 12блоков, чтобы разместить таким образом компоненты вектора A. Столько же (12 блоков) мненужно, чтобы разместить компоненты вектора B, и т.д.31ФУa13a14A...a24b13b14Ba1a212 блоковa12b1b2......Что у меня получается: 12 + 12 + 12 + 12 + 12 = 60 блоков. Нужно 60 блоков, чтобы получить тот самый результат, чтобы они работали непрерывно. Ну а где не получается, тамнеправильно работать не будет, но будут задержки.Это решение было в машине Cyber 205, и эта идея была жива, и вот мы с вами сейчасрассмотрим отечественную разработку — модульно-конвейерный процессор (МКП), правдаэто был 1990 год. Тем не менее, там реализовался некий симбиоз идей Cray и Cyber 205. Этохарактерно для вычислительной техники — учесть достоинства и недостатки зарубежных исвоих разработок, и разработать некий вариант, преодолевающий эти недостатки.

Институтточной механики и вычислительной техники всегда так и делал.Модульно-конвейерный процессор (МКП)Существовал некий многомашинный комплекс, в который входил основной вычислитель, называемый модульно-конвейерный процессор (МКП), или несколько таковых, и внешние машины, которые поставляют данные для вычислений (программы, данные), занималисьподготовкой заданий для выполнения вычислений, постобработкой, удобной для реальноговывода на реальные устройства. Cray возник тоже как многомашинный комплекс.

ПотомКрэй начал экспериментировать, и, в конечном счете, пришёл к достаточно устойчивому варианту, когда в качестве соединительной машины или нескольких таковых использоваласьмашина CDC серии 7000, которая в 10 раз менее производительна, чем центральный процессор.Это, конечно, было совершенно ясно, уже первая суперЭВМ была двухмашинным(многомашинным) комплексом: модульно-конвейерный процессор или несколько таковыхобъединялся с несколькими тогда в распоряжении Эльбрусами теми же каналами, которыеначали уже зарабатывать хорошее признание в использовании. И вот этойкоммуникационной средой многомашинные комплексы объединялись вместе с, такназываемой, внешней памятью, массовой памятью, но об этом несколько позднее будетразговор.Итак, модульно-конвейерный процессор (МКП) — идея объединения Cray’я иCyber 205 (см.

Рис. 4).Существовал конвейер однофункциональных устройств. Исполнительный блок — этонабор конвейерных ФУ. Существовало некоторое количество S-регистров (скалярные регистры), только их было 128. Существовала оперативная память. Не было двойных как уCray’я S- и T-регистров. Было 2 скалярных блока (S-регистр + УУ). Два устройства управления, и мы получаем 2 потока команд. Та же идея работы с S-регистрами, что и у Cray. Средипотока команд (2 потока команд), естественно, возникают векторные команды. Тогда этивекторные команды набирались в буфере векторных команд.

И существовал векторный блок.Он содержал несколько регистров, но очень мало. Когда выбиралась векторная операция,естественно, она шла в векторный блок (находилась возможность чередования, смотреласьнезависимость данных, ко всему этому руку прикладывал транслятор, и идут аппаратныеконтроли этого дела), и так же как в Cyber 205, идёт поток данных широким горлом из ОП ввекторный блок и обратно. А если нужно работать в зацеплении, то там были буквально не32сколько штук регистров. Вот такая была основная идея — идея соединения решения Crayдля скалярной обработки, а для векторов было взято решения Cyber 205.Исполнительный блокФУФУФУ...Скалярный блоквекторный блоквекторнаякомандакомандыкомандыS-регистрзацеплениеS-регистрУУУУ128128буфервекторныхкомандблок векторныхсортировокОПРис.

4Итак, машина состояла в основном из 4-х основных блоков, т.е. исполнительного блока,двух скалярных блоков, одного векторного блока. Был ещё очень интересный блок, назывался блок векторных сортировок. Т.е. если у вас данные распложены как-то не подряд, то можете их в этом блоке организовать подряд, чтобы потом отсюда они пускались подряд. Естественно, команды сортировок шли сюда. Здесь своя была линия с памятью, никуда дальшене шло, только работа с памятью.

Вот так был устроен МКП.Теперь так. Мысль возбудилась о том, что как же так, УУ выдаёт за один такт толькоодну команду. И что? Каждый раз можно загрузить делом только одно, а остальные в этотмомент простаивают. Их первые ступени будут просто пустыми. Итак, появилась идея длинного командного слова, так называемый very large instruction word (WLIW).Разработки начали появляться сразу, но большую коммерческую выгоду не принесли.Но разработки появлялись, и даже у нас была такая разработка под руководствомБ.А.Бабаяна.

И также точно была загублена в 1990 году из-за отсутствия средств на реализацию идеи. А именно вот что было предложено.Была предложена машина, называемая Эльбрус 3. В этом Эльбрус 3 предполагалось,что процессор состоит из 7 ФУ — так было задумано. Конвейерный режим, конечно, был. Иза такт (усложнение ОП) выбиралась длинная команда.

Свежие статьи
Популярно сейчас