Ульяновский государственный университет
Опубликован: 18.05.2006 | Доступ: свободный | Студентов: 3758 / 1013 | Оценка: 4.05 / 4.02 | Длительность: 15:15:00
Специальности: Разработчик аппаратуры
Лекция 12:

Современные архитектуры вычислительных систем

< Лекция 11 || Лекция 12: 12 || Лекция 13 >

Архитектура Е2К

Подход, близкий к IA-64, уже был реализован в России - в произведенном в единственном экземпляре суперкомпьютере Эльбрус-3, выпущенном в 1991 году.

В E2K используются команды переменной длины. Общий формат команд E2K представлен в таблице 12.1.

Таблица 12.1. Общий формат команд E2K
Заголовок Слог 1 ... Слог N

Команда E2K состоит из слогов длиной 32 разряда каждый. Число этих слогов может меняться от 2 до 16, причем данную архитектуру можно еще расширить - до 32 слогов.

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

В архитектуре E2K представлен сверхбольшой файл регистров. Все регистры E2K являются универсальными и могут содержать как целочисленные данные, так и числа с плавающей запятой. Всего имеется 256 регистров длиной по 64 разряда каждый.

В E2K есть два почти симметричных кластера, каждый из которых содержит по 256 регистров. Всего в этом процессоре имеется 30 регистровых портов: 20 портов чтения (по 10 портов на кластер) и 10 портов записи.

В Alpha 21264 применяется реализованное во многих суперскалярных процессорах динамическое переименование регистров. Этого механизма в E2K нет, так как в нем подобные задачи возлагаются на компилятор. Однако в циклах с постоянным шагом используется аналогичная схема циклической замены используемых регистров.

Еще одна особенность E2K - регистровое окно для процедуры. Это решение стало традиционным для машин серии "Эльбрус", однако особенно важным оно является для E2K, поскольку он содержит сверхбольшое количество регистров - 256.

Затраты на сохранение/восстановление регистров в данной ситуации становятся весьма значительными. Поэтому реализация в E2K аппаратного механизма переключения окон представляется актуальной. Окно регистров в E2K имеет переменную длину (до 192 регистров). Адресация регистров внутри контекста происходит относительно текущей базы, и при вызове другой процедуры достаточно сменить значение базы.

Кэш данных первого уровня в E2K имеет емкость всего 8 Кбайт и продублирован в каждом из кластеров. Этот кэш является прямоадресуемым, использует алгоритм сквозной записи данных.

Кэш данных второго уровня в E2K имеет емкость 256 Кбайт при времени доступа в 8 тактов. Он является двухканальным частично-ассоциативным и имеет 4 банка, то есть обеспечивает 4-кратное расслоение кэш-памяти. В кэше данных второго уровня применяется алгоритм обратной записи. Он также является неблокирующим.

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

В Е2К предусматриваются два варианта подключения третьего уровня кэш: непосредственно к процессору Е2К, что позволяет разгрузить "системную шину" - коммутатор, или через набор коммутаторных микросхем.

Функциональные устройства (ФУ) E2K разнесены по двум кластерам. Эти кластеры содержат по 3 одинаковых целочисленных конвейера - АЛУ (правда, один из кластеров имеет также ФУ деления - целочисленного и с плавающей запятой).

В каждом кластере представлены также адресные сумматоры, которые имеются для 2 из 3 путей ("каналов") данных. В результате каждый кластер может одновременно выполнять до 2 операций загрузки регистров или 1 операцию записи в оперативную память. Возможен и смешанный случай: 2 загрузки плюс одна запись.

Кроме того, имеется 4 канала для данных с плавающей запятой, по 2 на кластер. В каждом канале может выполняться команда типа MADD - "умножить-и-сложить", что дает темп 8 результатов с плавающей запятой за такт.

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

В E2K целочисленный конвейер имеет длину 8 тактов (собственно выполнение идет на седьмом такте, а обратная запись - на восьмом) против 7 тактов в Alpha 21264.

Е2К обеспечивает очень высокий уровень одновременно выполняемых операций: в команде их кодируется до 23 (сюда, кроме арифметико-логических операций, входят также доступ в оперативную память, приращение индекса массива и т.п.). Эффективные показатели параллельной работы ФУ у E2K выше, чем у всех суперскалярных процессоров.

В архитектуре E2K, как и в IA-64, делается все, чтобы по возможности исключить обычные операции перехода. Для этого в E2K имеется 32 одноразрядных регистра-предиката, причем команда способна сформировать до 7 предикатов: 4 в операциях сравнения в АЛУ и еще 3 - в операциях логики.

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

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

В файле предикатов E2K, как и в регистровом файле, используются окна.

Еще некоторые особенности архитектуры E2K:

  • тегирование данных, поддерживаемое во всей линейке процессоров ЭВМ "Эльбрус";
  • сегментно-страничная организация памяти;
  • поддержка мультипрограммирования в стиле x86. В сочетании с разработанными средствами двоичной компиляции и специальными аппаратными средствами ее поддержки, это позволяет выполнять x86-коды на E2K.

Поддерживается также двоичная компиляция для SPARC-архитектуры.

Вопросы для самоконтроля

  1. Каковы основные особенности VLIW-архитектуры?
  2. Что нового появилось в архитектуре IA - 64 по сравнению с RISC процессорами?
  3. Каковы архитектурные особенности EPIC?
  4. Что представляют собой команды переменной длины? Где они используются?
  5. Перечислите особенности архитектуры E2K.
< Лекция 11 || Лекция 12: 12 || Лекция 13 >
Виктория Монахова
Виктория Монахова
Евгений Коваленко
Евгений Коваленко