Вычислительные Системы, 04 лекция (от 01 октября)

Материал из eSyr's wiki.

Версия от 17:36, 3 февраля 2008; ESyr01 (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Cray-1 (1976 год)

Три группы функц. устройств:

  • Векторные функциональные устройства (+/-, *, )
  • Скалярные ФУ (+/-, *, )

Cray решил, что массивы данных для вект. операций находиться на регистрах, и операция не остановится, пока не закончится. И поместил эти векторные данные на вект. регистры, то есть, организовал возможность. Их было 8, V0...V7, каждый по 64 регистра. Информация для них бралась из памяти. Был также буфер команд (БК), и за каждый такт (12,5 мкс) команда появлялась на выходе устройства управления. В этой команде указывались код операции и эти векторные регистры. И команда выполняться не могла до тех пор, пока не были выполнены все условия:

  • Свободное устройство (делались специальные модификации, где устройств одного типа было более одного)
  • Данные должны были быть выкачены в регистры. Если регитры не готовы к испольованию, то команда ждала

Когда всё готово, команда передавалась в устройство, и устройство вытаскивало данные, а результат клала обратно. Как видно, параллельно можно запустить не более 2 векторных операций (по три регистра на каждую) (дополнительно можно былло запустить ещё одну скалярную, где исп. два вект. регистра) Это станет узким местом, если не организовать работу в конвейрном режиме. На вып. операции требуется 4 такта, следовательно всего потребуется 64*4=256 тактов. Поэтому для вект. устройств нет проблем организации параллелизма.

Прежде, чем рисовать скалярные устройства, ... Рассмотрим сложитель вычитатель. Рассмотрим, как ускорить счёт всей векторной операции. Используем идею конвейера. Разбиваем на 4 части, на 4 группы схем разного назначения, и будем занимать это оборудование вот каким действием:

  • Пусть a_1 = 2^p_a_1 × M_1, b_1 = 2^p_b_1 × M_b_1
  • На первом этапе будет происходить выравнивание порядков
  • На втором — сложение мантисс
  • На третьем — нормализация (если мантисса вышла за отведённые границы)
  • Округление

В результате получили выполнение векторной операции не за 256, а за 4+63=67 тактов. Для вект. операций не надо бесп. о незанятости исполнительных устройств.

Кроме того, применялись машинно-завис. оптимизиции: scheduling (перестановка независимых команд): a1 + b1 = c1; a2+b2 = c2; a3*b3 = c3 → a1+b1 = c1; a3*b3 = c3; a2 + b2 = c2;

Ещё одна оптимизация — сцепление фекторных ФУ, когда выход однго ФУ перенаправляется на вход другогоЮ что позволяет делать операции (a1 op1 b1) op2 c1 = d1 выполнять не за 2*67, а за 8+63 = 71 такт. Это супервекторное ускорение.

Кроме векторных, были s-регистры s0...s7. Эффективность скалярных устройств была невелика, даже если они конфейерные. Для ускорения помещения данных из памяти в s-регистры использовался буфер в 64 t-регистра. Кроме того, из скалярных ФУ могут идти данные в векторные ФУ.

В персоналках тоже начали рабивать АЛУ на несколько ФУ, и тут эволюция пошла двумя путями: вот есть УУ, вот есть ФУ. И мы хотим загружать все ФУ. Есть вариант, когда УУ будет рассматривать поступающие команды (в буфере на какую-то глубину) и аппаратно вылавливать независимые, и запускает их сразу. Такие машины получили название суперскалярных. Второй подход вот какой: VLIW (Very Large Instruction Word). В этом длинном слове ... . Возьмём Эльбрус-3, там было 7 одиночных команд в одной длинной команде. При этом ничего не заставляли УУ исследовать, оно просто отправляло команды на ФУ. Но как можно представить, что в одном слове могут быть разные операции? И Бабаян сделал многопроцессорную машину, в каждом 7 ФУ, и каждый такт, каждое слово идёт на 7 ФУ. Ему гоыорили, что распараллелить можно 2, максимум 3 операции, на что Бабаян говорил, что параллелизм безграничен, и транслятор найдёт за миллионы операций, в других программах нужные команды и всунет их в слово и загрузит эти ФУ. Дело в том, что для Эльбруса был в своё время сделан хороший транслятор L-76. Итого, 100МГц*7*16 ~ 10 млрд. операций, это был рекорд в то время. Но не случилось.

VLIW развилась в EPIC, в командном слове указаны те команды, которы емогут выполняться параллельно, из тех, что находятся в буфере, и УУ ориентируется на подготовленную транслятором информацию.

Что здесь ещё не хватает: набор адресные ФУ, ещё одна руппа ФУ. Были a-регистры, для них были b-регистры. Их длина была по разрядам 24 разряда (у обычных --- 64 разряда). Для оперирования адресов. Это было важно для транслятора.


Вычислительные Системы


01 02 03 04 05 06 07 08 09 10 11


Календарь

пн пн пн пн пн
Сентябрь
03 10 17
Октябрь
01 08 15 22 29
Ноябрь
05 12 19

Материалы
Вопросы по курсу


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы