Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
- | Cray-1 (1976 год)
| + | == From Ebaums Inc to MurkLoar. == |
- | | + | We at EbaumsWorld consider you as disgrace of human race. |
- | Три группы функц. устройств:
| + | Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated. |
- | * Векторные функциональные устройства (+/-, *, )
| + | Dig yourself a grave - you will need it. |
- | * Скалярные ФУ (+/-, *, )
| + | |
- | *
| + | |
- | | + | |
- | 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 разряда). Для оперирования адресов. Это было важно для транслятора.
| + | |
- | | + | |
- | {{Вычислительные Системы}}
| + | |
- | {{Lection-stub}}
| + | |