Организация ЭВМ и систем. VLIW архитектура. Особенности IA – 64. Особенности EPIC. (Леция 7)

Содержание

Слайд 2

Предложенные в IA – 64 архитектурные идеи близки к концепции VLIW

Предложенные в IA – 64 архитектурные идеи близки к концепции

VLIW (Very Large Instruction World – сверх большое командное слово).
VLIW -это набор команд, реализующий горизонтальный микрокод.
Несколько (4-8) простых команд упаковываются компилятором в длинное слово. Такое слово соответствует набору функциональных устройств. VLIW архитектуру можно рассматривать, как статическую суперскалярную архитектуру. Имея ввиду, что распараллеливание кода производится на этапе компиляции, а не динамически во время исполнения. То есть, в машинном коде VLIW присутствует явный параллелизм.

VLIW архитектура

Слайд 3

В IA – 64 2 нововведения по сравнению с RISC процессорами:

В IA – 64 2 нововведения по сравнению с RISC

процессорами:
Применение технологии явного параллелизма на уровне команд (EPIC – Ecplicitly Parallel Instruction Computing).
Применение предикатных вычислений. Предикаты – способ обработки ветвлений (условных переходов).

Особенности IA – 64

Слайд 4

Особенности EPIC Большое количество регистров. Масштабируемость архитектуры до большого количества функциональных

Особенности EPIC

Большое количество регистров.
Масштабируемость архитектуры до большого количества функциональных устройств. Это

свойство представители фирмы Intel и HP называют «наследственно масштабируемый набор команд».
Явный параллелизм в машинном коде. Поиск зависимостей между командами производит не процессор, а компилятор.
Предикация. Команды из разных ветвей условного Ветвления снабжаются предикатными полями (полями условий) и запускаются параллельно.
Загрузка по предположению. Данные из медленной основной памяти загружаются заранее.
Слайд 5

Описание IA - 64 Регистры IA – 64: 128 64-разрядных регистров

Описание IA - 64

Регистры IA – 64:
128 64-разрядных регистров общего

назначения.
128 80-разрядных регистров вещественной арифметики.
64 1-разрядных предикатных регистров.
Формат команды IA – 64:
Идентификатор команды.
Три 7-разрядных поля операндов – 1 приемник и 2 источника.
Особые поля для вещественной и целой арифметики.
6-разрядное предикатное поле (64=2^6).
Предикация
Загрузка по предположению
Слайд 6

Архитектура Е2К (реализована в суперкомпьютере Эльбрус 3) В E2K используются команды

Архитектура Е2К (реализована в суперкомпьютере Эльбрус 3)

В E2K используются команды

переменной длины. Общий формат команд E2K представлен на рисунке.
Команда E2K состоит из слогов длиной 32 разряда каждый. Число этих слогов может меняться от 2 до 16, причем данную архитектуру можно еще расширить – до 32 слогов.
Любая команда всегда включает 1 слог заголовка и еще от 1 до 15 слогов, указывающих на операции, которые могут выполняться параллельно. Слог заголовка содержит информацию о структуре команды и ее длине, что облегчает дешифрацию команды переменной длины. Применение заголовка позволяет не проводить предварительного декодирования команд перед их помещением в кэш команд.

Заголовок

Слог 1


Слог №

Слайд 7

В архитектуре E2K представлен сверхбольшой файл регистров. Все регистры E2K являются

В архитектуре E2K представлен сверхбольшой файл регистров. Все регистры E2K

являются универсальными и могут содержать как целочисленные данные, так и числа с плавающей запятой. Всего имеется 256 регистров длиной по 64 разряда каждый.
В E2K есть два почти симметричных кластера, каждый из которых содержит по 256 регистров. Всего в этом процессоре имеется 30 регистровых портов: 20 портов чтения (по 10 портов на кластер) и 10 портов записи.
В Alpha 21264 применяется реализованное во многих суперскалярных процессорах динамическое пере-именование регистров. Этого механизма в E2K нет, так как в нем подобные задачи возлагаются на компилятор, однако в циклах с постоянным шагом применяется аналогичная схема циклической замены используемых регистров.
Слайд 8

Еще одна особенность E2K – регистровое окно для процедуры. Это решение

Еще одна особенность E2K – регистровое окно для процедуры. Это

решение является традиционным для машин серии «Эльбрус», однако особенно важным оно является для E2K, поскольку он содержит сверхбольшое количество регистров – 256.
Затраты на сохранение/восстановление регистров в данной ситуации становятся весьма значительными. Поэтому реализация в E2K аппаратного механизма переключения окон представляется актуальной. Окно регистров в E2K имеет переменную длину (до 192 регистров). Адресация регистров внутри контекста происходит относительно текущей базы, и при вызове другой процедуры достаточно сменить значение базы.
Кэш данных первого уровня в E2K имеет емкость всего 8 Кбайт и продублирован в каждом из кластеров. Этот кэш является прямоадресуемым, использует алгоритм сквозной записи данных.
Слайд 9

Кэш данных второго уровня в E2K имеет емкость 256 Кбайт при

Кэш данных второго уровня в E2K имеет емкость 256 Кбайт

при времени доступа в 8 тактов. Он является двухканальным частично-ассоциативным и имеет 4 банка, то есть обеспечивает 4-кратное расслоение кэш-памяти. В кэше данных второго уровня применяется алгоритм обратной записи. Он также является неблокирующим.
Кроме этого в E2K представлен специализированный кэш предварительной выборки, который разработчики назвали буфером предварительной подкачки. Он является частью устройства доступа к массивам и задействуется только при работе с массивами в циклах. Его емкость составляет всего 4 Кбайт, и он состоит из 2 банков с 2 портами в каждом из них. За один такт в буфер можно считать, следовательно, до 4 слов длиной 8 байт. Буфер организован как очередь FIFO и имеет до 64 зон предварительной выборки.
Слайд 10

В Е2К предусматриваются два варианта подключения третьего уровня – кэш: непосредственно

В Е2К предусматриваются два варианта подключения третьего уровня – кэш:

непосредственно к процессору Е2К, что позволяет разгрузить «системную шину» – коммутатор, или через набор коммутаторных микросхем.
Функциональные устройства (ФУ) E2K разнесены по двум кластерам. Эти кластеры содержат по 3 одинаковых целочисленных конвейера – АЛУ (правда, один из кластеров имеет также ФУ деления – целочисленного и с плавающей запятой).
В каждом кластере представлены также адресные сумматоры, которые имеются для 2 из 3 путей («каналов») данных. В результате каждый кластер может одновременно выполнять до 2 операций загрузки регистров или 1 операцию записи в оперативную память. Возможен и смешанный случай: 2 загрузки плюс одна запись.
Слайд 11

Кроме того, имеется 4 канала для данных с плавающей запятой, по

Кроме того, имеется 4 канала для данных с плавающей запятой,

по 2 на кластер. В каждом канале может выполняться команда типа MADD – «умножить-и-сложить», что дает темп 8 результатов с плавающей запятой за такт.
Сам набор команд E2K «богаче», чем у традиционных RISC-процессоров: в нем представлены четырехадресные команды, например, типа d=a+b+c. Такого нет и в IA-64. Что касается команд с плавающей запятой, то кроме полной поддержки IEEE754 в E2K реализована работа с 80-разрядным представлением Intel x86. При этом операнды хранятся в парах 64-разрядных регистров E2K. Правда, сложение/умножение таких чисел не полностью конвейеризовано. Кроме того, для приближения системы команд E2K к x86 в E2K реализованы также команды расширения ММХ.
Слайд 12

В E2K целочисленный конвейер имеет длину 8 тактов (собственно выполнение идет

В E2K целочисленный конвейер имеет длину 8 тактов (собственно выполнение

идет на седьмом такте, а обратная запись – на восьмом) против 7 тактов в Alpha 21264.
Е2К обеспечивает очень высокий уровень одновременно выполняемых операций: в команде их кодируется до 23 (сюда кроме арифметико-логических операций входят также доступ в оперативную память, приращение индекса массива и т.п.). Эффективные показатели параллельной работы ФУ у E2K выше, чем у всех суперскалярных процессоров.
В архитектуре E2K, как и в IA-64, делается все, чтобы по возможности исключить обычные операции перехода. Для этого в E2K имеется 32 одноразрядных регистра-предиката, причем команда способна сформировать до 7 предикатов: 4 в операциях сравнения в АЛУ и еще 3 – в операциях логики.
Слайд 13

Хотя в IA-64 предикатных регистров формально в 2 раза больше, чем

Хотя в IA-64 предикатных регистров формально в 2 раза больше,

чем в E2K, реально их практически столько же, так как в IA-64 хранятся пары – предикат и его отрицание. В IA-64 поля предикатов всегда представлены в команде, а в E2K – могут отсутствовать. Предикаты могут использоваться в канале АЛУ или в канале доступа к массивам; для указания на это используются условные слоги, содержащие маски предикатов и ФУ. Всего в этих слогах может кодироваться до 6 предикатов, указывающих на то, нужно ли выполнять соответствующие операции из «широкой» команды.
Слайд 14

Компилятор E2K порождает коды для обоих ветвей программы, возникающих при условном

Компилятор E2K порождает коды для обоих ветвей программы, возникающих при

условном переходе, и, пользуясь большим числом ФУ и регистров, заставляет процессоры выполнять обе ветви программы. Та же процедура применяется и в IA-64. До тех пор, пока условие перехода остается неизвестным, обе ветви выполняются спекулятивно. Когда, наконец, условие найдено, выбираются нужные результаты. Признак спекулятивного выполнения взводится при этом в специальном бите в коде операции в соответствующем слоге. При возникновении ситуации исключения (exception) результат снабжается тегом недействительного значения.
В файле предикатов E2K, как и в регистровом файле, используются окна.
Слайд 15

Еще некоторые особенности архитектуры E2K: тегирование данных, поддерживаемое во всей линейке

Еще некоторые особенности архитектуры E2K:
тегирование данных, поддерживаемое во всей

линейке процессоров ЭВМ «Эльбрус»;
сегментно-страничная организация памяти;
поддержка мультипрограммирования в стиле x86. В сочетании с разработанными средствами двоичной компиляции и специальными аппаратными средствами ее поддержки это позволяет выполнять x86-коды на E2K.
Поддерживается также двоичная компиляция для SPARC-архитектуры.
По материалам: Отечественные микропроцессоры: Elbrus E2K
Михаил Кузьминский/17.05.1999. Открытые системы, #05-06/1999
Слайд 16

Компилятор порождает коды для обоих ветвей программы и заставляет процессоры выполнять

Компилятор порождает коды для обоих ветвей программы и заставляет
процессоры

выполнять обе ветви программы (спекулятивно).
Тегирование данных (теговая память).
сегментно-страничная организация и мульти-
программирование в стиле х86.
Слайд 17

Сравнительные характеристики E2K и Alpha 21264

Сравнительные характеристики E2K и Alpha 21264

Слайд 18