Архитектура VLIW / EPIC Подстригайло Алена, 12221 Классификация архитектур Скалярные С параллелизмом на уровне команд (ILP) Суперскалярные x86 x86-64 CISC RISC VLIW / EPIC Alpha Power, PowerPC SPARC MIPS Itanium2 Эльбрус 2000 Параллелизм на уровне команд (Instruction Level Parallelism) ILP-процессоры • Имеют несколько исполнительных устройств • Могут исполнять несколько команд одновременно Суперскалярные процессоры • Процессор сам распределяет ресурсы VLIW / EPIC-процессоры Very Long Instruction Word / Explicitly Parallel Instruction Computing • Компилятор распределяет ресурсы процессора Архитектура VLIW / EPIC • На входе - последовательность больших команд, состоящих из нескольких простых операций, которые могут исполняться параллельно. • Преимущества перед суперскалярами: – Меньше места на процессоре тратится на управление, больше остается на ресурсы: регистры, исполнительные устройства, кэш-память. – Более тщательное планирование дает лучшее заполнение исполнительных устройств (больше команд за такт). • Недостатки: – Долгое время планирования потока команд. – Невозможность учесть динамику исполнения программы. Superscalar VS VLIW/EPIC Задачи управления: • Параллельное исполнение команд Нужно найти независимые команды – SS: Независимые команды ищет процессор – EPIC: Независимые команды ищет компилятор • Спекулятивное исполнение команд Нужно заранее угадать, выполнится ли переход – SS: Процессор автоматически предсказывает переход – EPIC: Компилятор подсказывает процессору, как поступить Superscalar VS VLIW/EPIC Задачи управления: • Спекулятивная загрузка данных Нужно проверить корректность преждевременной загрузки данных – SS: Процессор автоматически проверяет корректность – EPIC: Компилятор использует специальную команду проверки • Размещение данных на регистрах Нужно оптимально использовать регистры процессора – SS: Процессор автоматически отображает программные регистры на аппаратные и управляет стеком регистров – EPIC: Компилятор размещает данные на аппаратных регистрах и управляет стеком регистров с помощью специальных команд Superscalar VS VLIW/EPIC • Superscalar: – Простой компилятор, процессор планирует поток команд – Меньше команд за такт: 3, 4, 5 (в среднем < 50%) – Сложный исполнительный конвейер • VLIW/EPIC: – Сложный компилятор планирует поток команд – Больше команд за такт: 6, 8,..,23 (в среднем > 50%) – Простой исполнительный конвейер Преимущества и недостатки VLIW • Упрощает архитектуру процессора, перекладывая задачу распределения вычислительных устройств на компилятор • Снижается энергопотребление за счет отсутствия больших сложных узлов • Код для VLIW обладает невысокой плотностью: большое количество пустых инструкций для простаивающих устройств • Сложные внутренние зависимости кода усложняют программирование на уровне машинных кодов, приходится полагаться на оптимизацию компилятора • Наборы инструкций VLIW не являются обратно совместимыми между различными поколениями процессоров. • Задержки загрузки данных из иерархии памяти (кэшей, DRAM) не являются полностью предсказуемыми. Из-за этого статическое планирование инструкций загрузки и использования данных становятся крайне сложными. Реализации VLIW – Cydrome (1984-1988) • Cydra-5: 256 bit VLIW (7 ops.), reg. rotation., sw. pipeline – МВК Эльбрус 3 (1986-1994) – NXP Semiconductors • TriMedia (1987, 1997, …): VLIW / DSP, 5-8 ops., 256x128 bit regs, 45 FUs – Texas Instruments • C6000: VLIW / DSP – Transmeta • Crusoe: VLIW, слой двоичной совместимости с архитектурой x86 – Tilera – AMD/ATI Radeon • C R600 до поколения Southern Islands (Radeon HD 7700 и далее) EPIC – эволюция VLIW • 1997 г. Intel Itanium (HP-Intel) • Каждая группа (bundle) инструкций может иметь стоповый бит, обозначающий, что следующая группа зависит от результатов работы данной. Информация о зависимостях вычисляется компилятором, и поэтому аппаратуре не придется проводить дополнительную проверку независимости операндов. • Инструкции программной подкачки данных. Предподкачка увеличивает вероятность того, что к моменту исполнения команды загрузки, данные уже будут в кеше. Также, в этой инструкции могут быть дополнительные указания для выбора различных уровней кеша для данных. EPIC – эволюция VLIW • Инструкция спекулятивной загрузки используется для загрузки данных до того, как станет известно, будут ли они использованы или изменены перед использованием • Инструкции проверки загрузки проверяют, зависела ли инструкция загрузки от последующей записи. В случае наличия подобной зависимости, спекулятивная загрузка должна быть повторена. Архитектура Itanium (IA-64) • Явный ILP (параллелизм на уровне команд) – Компилятор объединяет команды процессора в связки, которые могут быть выполнены параллельно, – Процессор обеспечивает большое число ресурсов для реализации ILP. • Способы увеличения ILP – Явная спекуляция по данным и управлению (уменьшает задержки по памяти), – Предикатное исполнение команд (устраняет ветвления), – Аппаратная поддержка программной конвейеризации циклов, – Предсказание ветвлений. • Специальные способы увеличения производительности программ – Специальная поддержка модульности программ (регистровый стек, вращающиеся регистры), – Высокопроизводительная вещественная арифметика, – Специальные векторные инструкции. Особенности процессоров архитектуры Itanium • Простой широкий конвейер – Много команд за такт (до 6) • Большие вычислительные ресурсы – Много исполнительных устройств (11) – Большой объем (до 12 MB) кэш-памяти – Большое число регистров (264) Вращение регистров • Верхние 75% регистров вращающиеся: • целочисленные: r32 – r127 • вещественные: f32 – f127 • предикатные: p16 – p63 • При выполнении специальной команды перехода (в цикле) вращающиеся регистры сдвигаются вправо на один: •Используется при программной конвейеризации циклов. Стек регистров • При вызове подпрограмм и возврате происходит сдвиг регистрового окна – целочисленные регистры работают как стек. • Для автоматического сохранения/восстановления регистров в памяти при «переполнении/переизбытке» стека работает аппаратура RSE (Register Stack Engine). Она приостанавливает выполнение команд, ждущих соответствующие регистры. Средства повышения производительности в IA-64 • Предикатное исполнение команд – Позволяет зависимости по управлению (т.е. условные переходы) преобразовать в зависимости по данным. • Аппаратные счетчики циклов – По специальной команде перехода счетчики автоматически уменьшаются и делается проверка на выход из цикла – Можно не задействовать регистры общего назначения. • Спекуляция по данным и управлению – Команды загрузки могут выполняться до того, как обнаружится, что это действительно нужно • Регистровый стек, RSE • Аппаратная поддержка программной конвейеризации циклов – Выполняется с помощью: • Предикатных регистров • Аппаратных счетчиков цикла • Вращающихся регистров • Специальных команд перехода Семейство процессоров Itanium • 2001 – Itanium (Merced): 800 MHz, 4 MB L3 cache, 180 nm • 2002 – Itanium2 (McKinley): 1 GHz, 3 MB L3 cache, 180 nm • 2003 – Itanium2 (Madison): 1.5 GHz, 6 MB L3 cache, 130 nm • 2006 – Itanium2 (Montecito): 1.66 GHz, 2×12 MB L3 cache, 2 cores, HyperThreading, 90 nm • 2010 – Itanium 9300 (Tukwila): 1.73 GHz, 24 MB L3 cache, 4 cores, HyperThreading, 65 nm • 2012 – Itanium 9500 (Poulson): 2.53 GHz, 32 MB L3 cache, 8 cores, HyperThreading, 32 nm • 2014 – Itanium Kittson Спасибо за внимание