Архитектура EPIC - Explicitly Parallel Instruction Computing и процессор Intel Itanium.

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

Архитектура EPIC (базовые принципы) были разработаны в университете Иллинойса, проект имел название Impact. В начале 1990-х годов были заложены теоретические основы самой архитектуры, затем были начаты работы в рамках создания инструментальных средств для процессора EPIC. Проект по созданию инструментальных средств известен под названием Trimaran. Архитектура EPIC имеет следующие основные особенности: (мы не будем обсуждать конкретные параметры конвейеров процессора, так как EPIC является в большей степени концептуальной моделью, чем типовым образцом для тиражирования процессоров)

Наиболее интересной в архитектуре EPIC является поддержка спекулятивное выполнение команд и загрузка данных.

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

При спекулятивных операциях по данным оптимизируется часто встречающийся участок во многих программах. Рассмотрим фрагмент программы:

int *p,*t;
int a,b;
...
*p = b;
a = *t;
В случае, если компилятор не имеет достаточно информации для проведения анализа потока данных, он не может определить, перекрываются ли области памяти, адресуемые указателями p и t. В этом случае каждый раз значение надо перезагружать, но, мало того, инструкции загрузки нельзя переупорядочить. Для получения возможности переупорядочивания этих инструкций используется спекуляция по данным. Инструкция загрузки переносится наверх, при этом, если произведена запись, затрагивающая загружаемое содержимое, то производится вызов кода восстановления, перезагружающего значение.

Архитектура EPIC является великолепным примером внедрения теоретических разработок в производство, о чём красноречиво свидетельствует сегодняшняя ситуация на рынке аппаратного обеспечения.

Архитектура процессора Itanium

Общие сведения

Первые образцы 64-разрядного процессора Intel представляют собой картридж размером примерно 10х6 см, который включает в себя кэш-память третьего уровня емкостью 2 либо 4 Мбайт и радиатор. Картридж монтируется в разъем типа Slot и имеет 418 выводов. Процессор имеет трехуровневую иерархию сверхоперативной памяти. Если кэш-память первого и второго уровней интегрирована на кристалле процессора, то микросхемы кэш-памяти третьего уровня расположены на самой плате картриджа. На реализацию процессора с соблюдением проектных норм 0,18 мкм потребовалось около 320 млн. транзисторов, из которых только 25 млн. пришлось на реализацию самого ядра, а остальные - на кэш-память. Самый большой модуль процессора - это блок вычислений с плавающей запятой, он занимает около 10% площади кристалла. Производительность Itanium составляет до 6,4 млрд. операций с плавающей запятой в секунду. Благодаря архитектуре EPIC и 15 исполнительным устройствам процессор может выполнять до 20 операций одновременно. При этом он может непосредственно адресовать до 16 Тбайт памяти при пропускной способности до 2,1 Гбайт/с. В процессоре реализована поддержка всех расширений Intel (технологий MMX, SIMD и симметричной мультипроцессорной обработки), за исключением SSE2.

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

Архитектура Itanium включает такие уникальные средства повышения надежности, как система расширенного самоконтроля EMCA (Enhanced Machine Check Architecture), обеспечивающая обнаружение, коррекцию и протоколирование ошибок, а также поддержку обработки кода ECC (Error Correcting Code) и контроля четности.

Для двух- и четырехпроцессорных систем Intel выпустила специальный набор микросхем Intel 460GX, которые могут включаться каскадно, увеличивая число одновременно используемых процессоров. Поскольку конфигурация таких систем изначально предусматривает объемы оперативной памяти в несколько гигабайт, то в системах Itanium применяются сравнительно недорогие микросхемы памяти типа SDRAM. При этом для увеличения производительности, по словам представителей Intel, используются такие методы, как буферирование, чередование и деление памяти на несколько банков. Набор микросхем реально поддерживает работу с 64 Гбайт памяти при максимальной пропускной способности 4,2 Гбайт/с, хотя 64-разрядная адресация памяти теоретически позволяет обращаться к гораздо большему количеству адресов.

Полное изменение архитектуры микропроцессора не обозначает, что программы для более старой архитектуры IA-32 не будут выполняться процессором Itanium. Архитектура МП такова, что он может выполнять как программы для архитектуры х86, так и 64-разрядные программы.Архитектурная модель процессора показана на рис. 1.

Процессор содержит 128 целочисленных регистров и регистров с плавающей запятой, 64 однобитных предикатных регистра, 8 регистров перехода. 96 регистров видны в качестве "регистрового окна" и могут быть использованы при программной конвейеризации. Регистры перехода служат для предсказания адреса перехода и хранят адрес, используемый в косвенном переходе.

Каждая инструкция МП Itanium содержит 3 команды. Микропроцессор может выполнить более одной инструкции за 1 такт.

Поддерживаются 32-х, 64-х и 80-ми битные плавающие числа согласно стандарту IEEE 754. 96 регистров из 128 также видны в виде "регистрового окна". МП поддерживает инструкции, которые одновременно выполняют 2 операции над операндами с плавающей точкой, что используется при обработке графики. Регистры с плавающей запятой имеют ширину 82 бита.

Поддерживаются команды типа "ОКМД-в-регистре", которые оперируют одновременно над 8-ю байтами, или 4-мя 16-битными целыми, или 2-мя 32-битными целыми, операции аналогичны операциям MMX или SSE, введенным в семейство IA-32.

Регистровая модель процессора показана на рис.2.

Рис.2. Регистровая модель процессора Itanium.

Первые регистры содержат широко употребительные константы - целый 0, плавающие 0.0, плавающие 1.0.

Команды МП Itanium

Команды МП подразделяются на 6 типов, каждый типов может выполняться на 1 или больше функциональных устройств. Список устройств представлен на рис. 3.

Рис.3. Инструкции МП Itanium.

3 команды (каждая 41 бит длиной) вместе составляют 128 бит. К инструкциям прикрепляется 5-битный ярлык, который опеределяет тип выполнения инструкции. Каждый ярлык определяет расписание команд по функциональным устрйоствам, кроме того вводятся архитектурные "остановы", которые определяют, что следующие(справа в инструкции) команды выполняются в следующем такте из-за зависимостей по данным. На рисунке 4 показаны доступные расписания, отметим, что не все возможные расписания доступны. Двойная линия обозначает останов. Если останова нет, то параллельно может выполняться следующая инструкция.

Рис.4. Образцы инструкций МП Itanium.

Расширенные инструкции (где присутствует целое число как непосредственный операнд или адрес перехода) занимают дополнительную инструкцию.

Регистровый стек

128 регистров (целых и плавающих) разделены на 2 множества: 32 регистра (0-31), которые статичны и видны всем функциям, и 96 регистров, которые организованы в виде "регистрового окна". При входе в процедуру компилятором статически может быть рассчитано, сколько локальной регистровой памяти ему потребуется (естественно, не более 96 регистров). Локальные переменные процедуры при вызове другой процедуры могут быть сохранены путём поворота стека, таким образом, что первым локальным регистром для вызванной процедуры станет 32-й регистр (см. рис. 5). Регистры, которые ранее были локальными вызывающей процедуры, сохраняются в кеш-память или же "уходят в тень" в случае, если вызывающая процедура использует количество регистров, значительно меньшее, чем 96.

Регистровые окна МП Itanium.

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

Микропроцессор поддерживает сложную иерархию памяти, детально с которой можно ознакомится в описании процессора.

Для упрощения адресации массивов введена автоинкрементная адресация.

Поддержка спекулятивной загрузки значений

Описанная ранее поддержка спекулятивных команд в архитектуре EPIC реализуется МП Itanium с помощью дополнительного 1-битового поля, называемого NaT. Таким образом, все регистры МП имеют на самом деле длину 65 бит. Спекуляция состоит из двух частей: 1) команда, начинающая спекулятивную загрузку; 2) команда, делающая проверку на наличие исключений. Команда, начинающая загрузку, очищает бит NaT. В случае, если происходит интерференция обращений к памяти, генерируется исключения, проявляющееся в установке этого бита в 1. Команда, проверяющая исключения, проверяет установлен ли бит NaT, и если он установлен, происходит вызов восстанавливающего кода, а бит очищается.

Указания по оптимизации кода для Itanium

Получение высокого быстродействия на системах на базе МП Itanium возможно в случае выполнения руководства по оптимизации программ фирмы-производителя. Рекомендуется больше использовать следующие архитектурные особенности МП:

Предикатное исполнение команд, позволяющее избежать простоев конвейера при выполнении переходов и оптимизировать выполнение сложных конструкций, опеделяющих условие в операторе ветвления.

Спекулятивная загрузка данных из памяти.

Использовать поддержку программной конвейеризации циклов, выполняя if-конверсию и используя множественные предикатные регистры. Рекомендуется выполнение раскрутки циклов.

Некоторые сведения о использовании линейки процессоров Itanium. История создания

История создания

Июнь 1994 г. Официальное объявление о создании стратегического альянса двух компаний с целью разработки архитектуры процессора будущего. Intel и Hewlett-Packard подписывают соглашение о совместной разработке новой 64-разрядной архитектуры, ориентированной на применение в серверах и рабочих станциях. 

Ноябрь 1997 г. Intel и HP представляют результат работы совместного коллектива разработчиков - революционно новую микропроцессорную архитектуру EPIC (Explicitly Parallel Instruction Computing, явно-параллельного вычисления инструкций) - основу будущего семейства процессоров, анонсируются планы по разработке семейства процессоров IA-64, первым из которых будет Merced (именно этот процессор получил сегодня новое имя - Itanium). 

Май 1999 г. Вместе со своими многочисленными корпоративными заказчиками и несколькими OEM-партнерами Intel объявляет о создании инвестиционного фонда Intel 64 Fund с капиталом в 250 млн. долл., целью которого является стимулирование разработки программных приложений для корпоративных серверов и рабочих станций класса high-end. 

Июнь 1999 г. Компании Intel и Hewlett-Packard представляют архитектуру и набор команд процессора семейства IA-64. 

Август 1999 г. Впервые демонстрируется работа операционных систем Linux и 64-разрядной Windows, на компьютере с процессором IA-64. Intel объявляет о начале поставок опытных образцов IA-64. 

Октябрь 1999 г. Intel представляет ItaniumT в качестве коммерческого наименования своего первого 64-разрядного процессора, дотоле носившего рабочее название Merced. Термины "Семейство процессоров Itanium" (Itanium processor Family) и "Архитектура Itanium" (Itanium Architecture) символизируют будущее процессорных технологий. 

Май 2000 г. Intel публикует в Интернете справочное руководство по микроархитектуре процессора Itanium (ItaniumT Processor Microarchitecture Reference Guide) для разработчиков программного обеспечения, в котором подробно описывается особенности его работы. 

Июль 2000 г. Intel и Microsoft объявляют о завершении работ над предварительной версией 64-разрядной операционной системы WindowsR для процессоров Itanium. 

Февраль 2001г. Intel демонстрирует процессор McKinley на Форуме Intel для разработчиков в Сан-Хосе, шт. Калифорния. 

29 мая 2001 г. Intel объявляет о том, что в течение года около 25 производителей начнут поставлять рабочие станции и серверы на основе процессора Itanium. 

Тактовая частота первых серийно выпускаемых систем на базе процессора Itanium составила 733 и 800 МГц для процессоров с кэш-памятью третьего уровня объемом 2 МБ и 4 МБ, что было достаточно малой частотой по сравнению с архитектурой IA-32.

Рынку серверов класса "high-end" необходимы сбалансированные, обеспечивающие высокую степень готовности системы, отличающиеся гораздо большей по сравнению с настольными ПК скоростью отклика. Системы на базе процессора Intel Itanium; расширяют возможности архитектуры Intel, позволяя при создании серверных систем для самых требовательных сред отказаться от применяемых сейчас дорогих специализированных архитектур.

Такие серверные приложения, как объемные базы данных и системы исследования рынка, сразу же выиграют от применения предоставляемых процессорами Intel Itanium возможностей 64-разрядной адресации и технологии EPIC, которые трансформируются в рост быстродействия, готовности и скорости обработки транзакций.

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

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

Процессоры семейства Itanium не заменят процессоров семества IA-32. Планы развития архитектуры IA-32 простираются далеко в будущее, она по-прежнему будет нужна в своем сегменте рынка. Две архитектуры будут дополнять друг друга, позволяя строить на базе архитектуры Intel решения для всех типов компьютерных сред. Процессор Intel Itanium на аппаратном уровне совместим с 32-разрядным кодом.

Ответ AMD

Второй по величине производитель микропроцессоров с архитектурой x86 - корпорация AMD (http://www.amd.com) в отличие от конкурентов она избрала экстенсивный путь: добавила 32 разряда к уже имеющимся 32. Теперь регистры расширились до 64 разрядов, появились команды манипуляции с 64-разрядными данными, и шина адреса увеличилась до 64 разрядов - появилась архитектура x86-64. Первоначально подобный процессор был назван "кувалдой" (Sledgehammer). Команды нового кристалла отличаются от команд процессоров x86 только наличием префикса, указывающего на их разрядность.

Кроме шестнадцати регистров общего назначения, имеются восемь 64-разрядных регистров для операций вещественной арифметики. Первые восемь регистров обозначаются названиями, отражающими их x86-происхождение: RAX, RBX, RCX, RDX, RSP, RBP, RSI, RDI. Так, восемь младших разрядов RAX фактически эквивалентны регистру A (аккумулятору) процессора i8080 и регистру AL i8086. Разряды 8-15 эквивалентны регистру AH i8086. Объединение этих двух полей представляет регистр AX i8086. Битовое поле 0-31 - полный эквивалент регистра EAX в 32-разрядных 80x86. Дополняют архитектуру нового процессора шестнадцать 128-разрядных регистров для хранения операндов SIMD-инструкций.

Обеспечена полная аппаратная поддержка выполнения инструкций x86-32 на уровне ядра. В отличие от процессора Itanium, здесь должна обеспечиваться полноценная реализация 8-, 16- и 32-разрядных приложений без потери производительности. Таким образом, на одном процессоре смогут одновременно и независимо работать 16- и 32-разрядные приложения. Это должно сделать переход пользователей на новую платформу безболезненным. Процессоры смогут работать в двух режимах - Long и Legacy Mode. В первом кристалл будет работать как x86-64, а во втором - как x86-процессор, совместимый с 16- и 32-разрядными приложениями и поддерживающий расширение SSE.

Планируется выпустить две модели 64-разрядного микропроцессора: собственно Sledgehammer и младшую модель - Clawhammer. Их отличия состоят главным образом в размере кэш-памяти второго уровня. Clawhammer позиционируется как процессор для рабочих станций и будет поддерживать двухпроцессорные системы. Причем размер кристалла не должен превысить 100 кв. мм, что сделает его в достаточной мере дешевым. Sledgehammer, как планируется, будет поддерживать до восьми процессоров.

Процессоры будут содержать интегрированный контроллер памяти, совместимый с технологией HyperTransport. Это позволит напрямую работать с системной памятью, минуя системную шину и набор микросхем. Для возможности обращения к одному и тому же сегменту памяти в мультипроцессорных системах будет использоваться архитектура NUMA (Non-Uniform Memory Access). Каждому процессору будет отведен отдельный сегмент памяти, но при необходимости будет доступен и сегмент памяти другого процессора. AMD разрабатывает два набора микросхем с поддержкой HyperTransport. Первый чипсет Golem предназначен для серверов и оснащен мостом HyperTransport-PCI-X, а второй, Lokar для рабочих станций, имеет встроенную поддержку интерфейса AGP 8X и мост HyperTransport-AGP. Новые процессоры будут изготавливаться с учетом проектных норм 0,13 мкм и технологии SOI (Silicon On Insulator - "кремний на изоляторе").