arch_e3m.ppt
- Количество слайдов: 37
Архитектура микропроцессора Эльбрус-3 М
Основные цели проекта • Высокая производительность – Вычислительная мощность (параллельные вычисления) – Средства поддержки параллельных вычислений – Тактовая частота • Исполнение двоичных кодов x 86 посредством динамической компиляции – Совместимость – Эффективность • Аппаратная поддержка защищенных вычислений (модульного программирования) – Диагностика – Защита
Вычислительная мощность
Блок-схема процессора
Набор операций Типы операций Кол. /такт Целочисленная арифметика (32/64) add, sub, shift, log, обработка битовых полей mul div cmp SIMD (MMX) (add/sub/shift/log)_(add/sub/shift/log) 6 4 1 4 4 1 Вещественная арифметика (32/64/80) fadd, fsub, fmul, fcmp, преобразование форматов fdiv SIMD (SSE 2) (fadd / fsub)_fmul, fmul_(fadd / fsub / frsub) (32/64) 4 1 4 4
Набор операций (2) Типы операций Обращение в память load (scaler / array) store (scaler / array) array prefetch Кол. /такт 4/2 2/2 4 Обработка предикатов 3 Вычисление предикатов для условного исполнения операций 6 (8) Передача управления 1 Операции, оптимизирующие вычисления в цикле ~10 Операции, оптимизирующие двоичную компиляцию ~5 Операции защищенного режима ~6
Одновременно исполняемые операции скал. выч. цикл Int (8) / FP (10) / St (2) / Ld (4) - 10 + + Обработка предикатов - 3 + + Передача управления - 1 + + Загрузка литерала 32/64 - 4/2 + Считывание элемента массива - 4 + Адресная арифметика - 4 + Обработка счетчика цикла - 1 + ----------------------------------------Всего: 18/16 23
Конвейер процессора Целочисленные операции и обращения в L 1 D$ байпасы межкластерные A I$ search F 0 F 1 instruction fetch S D align, scattering decode, RF addr. B R E 0 E 1 E 2 L 1 D$ access RF read integer ALU memory address WB RF write L 1 D$ result
Конвейер процессора (2) Вещественные операции байпасы A … B RF read R E 0 E 1 … En FADD E 1 … E 4 FMUL E 1 … E 4 -5 FDIV E 1 … E 11 -18 FSQRT E 1 … E 10 -43 operation result WB RF write
Подсистема памяти • • Кэш команд (I$) – Size: 64 KB – 4 -way set-associative – Virtually indexed and tagged – Nonblocking – Line size: 256 B – Block size: 64 B – Access time: 3 cycles – # of ports: 2/1 ITLB – Size 64 entries – Fully associative – Access time: 2 cycles – # of ports: 2 • • Кэш данных (D$L 1) – Size: 64 KB – 4 -way set-associative – Virtually indexed and tagged – Write through – Nonblocking – Line size: 32 B – Access time: 2 cycles – # of ports: 4 DTLB – Size: 512 entries – 4 -way set-associative – Access time: 1 cycle – # of ports: 4 – Hardware page table walk
Подсистема памяти (2) • Кэш данных (D$L 2) – Size: 256 KB – 4 -way set-associative – Physically indexed and tagged – Interleaving: 4 banks – Copy back – Nonblocking – Line size: 64 B – Block size: 32 B – D$L 1 miss penalty: 6 cycles • • Буфер элементов массивов (APB) – Size: 4 KB – Up to 64 FIFO queues of variable size – Interleaving: 2 banks – Access (each bank): • Write – 32 B • Read – 2 ports x 8 B – Access time: Интерфейс с памятью – Write: 16 B / 3 processor clock cycles (1. 6 GB/s) – Read: 32 B / 3 processor clock cycles (3. 2 GB/s) – Coherent SMP 3(4) cycles
Средства поддержки параллельных вычислений
Организация параллельных вычислений Проблема: Для организации параллельных вычислений требуется • Выявление параллелизма (определение зависимостей между операциями) – Аппаратное – Программное • Распределение операций по исполнительным устройствам – Аппаратное – Программное • Оптимизация порядка запуска операций – Аппаратная – Программная
Организация параллельных вычислений (2) Исходная программа Граф программы компилятор Исполняемый код Запуск операций компилятор аппаратура (super)scaler superscaler VLIW компилятор Эльбрус-3 М имеет архитектуру типа VLIW/EPIC со стратегией запуска операций inorder issue
Структура команды • • • Команда состоит из слогов различного типа, предназначенных для кодировки определенных групп операций; длина слогов – 4 или 2 байта Упакованная команда включает только нужные слоги; дополнительный слог – Header Syllable (HS) – описывает структуру команды Максимальная длина команды – 64 байта упакованная команда header scattering … распакованная команда Тип операции Тип слога Арифметика, обращение в память ALS (32) ALES (16) 6 6 Обработка предикатов PLS (32) 3 Условное исполнение CDS (32) 3 Передача управления, специальные операции CS (32) 2 Пересылка массивов из APB в RF AAS (16) 6 Загрузка литералов LTS (32) 4 Короткие операции SS (32) 1
Оперативные регистры Проблема: Для организации параллельных вычислений требуется большое количество оперативных регистров Решение: • Регистровый файл (RF) имеет объем 256 84 -разрядных регистров – 32 глобальных регистра + 224 регистра стека процедур – Процедура может заказать регистровое окно произвольного размера (до 224 -х) – Регистровые окна процедур организованы в виде стека, имеющего продолжение в памяти; переполнение / исчерпание RF вызывает автоматическую откачку / подкачку – Для поддержки вычислений в цикле к произвольной области в окне может быть применена относительная циклическая адресация • Предикатный файл (PF) имеет объем 32 2 -разрядных регистра – Процедура может использовать 32 предиката – Предикаты процедур сохраняются вместе с информацией для возврата, организованной в виде стека, верхушка которого расположена в файле связующей информации (CF), а продолжение - в памяти; переполнение / исчерпание CF вызывает автоматическую откачку / подкачку – Для поддержки вычислений в цикле к произвольной области в PF может быть применена относительная циклическая адресация
Предикатный режим Проблема: предикат Наличие условных переходов в разных ветвях программы препятствует эффективному распараллеливанию. – Операция имеет дополнительный операнд – предикат, который разрешает либо отменяет исполнение операции – Кодируется в Condition Syllables (CDS) – До 6 -ти разных предикатов может управлять 8 -ю операциями Условный переход loop status PF 32 Condition syllables Решение: • Применение техники if-conversion при компиляции • Условное исполнение операций 2 mux 6 dispatch 8 Ар-лог каналы
Спекулятивный режим Проблема: Параллелизм вычислений предполагает изменение порядка исполнения операций по сравнению с исходной программой. Требуется механизм восстановления последовательности обработки прерываний. Решение: • Техника отложенного прерывания • Специальный механизм накапливания замаскированных особых ситуаций вещественной арифметики
Спекулятивный режим (2) спекулятивные операции exception DT DT DT 1) Trap handler 2) Recovery code Большинство операций имеет спекулятивный режим исполнения Любой операнд в RF, PF и памяти может быть помечен (дополнительными битами) как диагностический тип (DT) Спекулятивная операция, встретившая особую ситуацию, вместо прерывания в качестве результата вырабатывает DT Спекулятивная операция, получившая DT в качестве операнда, также возвращает DT, тем самым транслируя прерывание по спекулятивной ветви По окончании спекулятивной ветви проверяется тип ее результата: 1. 2. Неспекулятивная операция, получившая операнд типа DT, выдает прерывание; через обработчик управление передается на компенсирующий код Условный переход на компенсирующий код
Спекулятивный режим (3) Проблема: В Эльбрус-3 М используется принцип inorder issue. При параллельном исполнении нескольких ветвей блокировки в одной из них останавливают и все остальные. Основные причины блокировок – это неготовность операнда и поиск по таблице страниц. Решение (для ветвей с низкой вероятностью реализации): • Операция-потребитель помечается таким образом, что, если для нее не готов операнд, она, не вызывая блокировки, в качестве результата выдает DT, а также устанавливает указанный предикат Predicate ld • Op. s (marked) DT Recovery (if used) Спекулятивная операция считывания из памяти не запускает поиск по таблице страниц Page Table walk ld. s TLB miss DT Recovery (if used)
DAM Проблема: Для сокрытия задержки обращения в память компилятор стремится перенести считывание вверх по коду. Но при этом существует опасность «перешагнуть» запись в тот же адрес (нарушить зависимость типа RAW) Решение: Disambiguation memory – Адреса «заброшенных» считываний сохраняются в DAM – Последующие записи сравнивают адреса, лежащие в DAM, со своим адресом и при совпадении – вычеркивают – На «законном» месте операции считывания ставится проверка DAM, и, если адрес не сохранился, считывание и возможные потребители перевыполняются 1) 2) Ld. l … ? … St … Ld … Op St … Ld. c … Op == ? repeat addr Op branch Ld. l … Op == … addr St ? … Ld. c. br repeat & branch …
Передача управления Проблема: Сокращение потерь на передачах управления. Решение: Расщепить передачу управления на подготовку (control transfer preparation CTP) и собственно переход (control transfer - CT) Действия при передаче управления: • Связанные с кодом – – – – • Вычисление целевого адреса Просмотр ITLB Поиск в таблице страниц Просмотр I$ Подкачка кода в I$ Считывание команды из I$ Выполнение перехода Связанные с условием – – Вычисление предиката Вычисление условия перехода CTP Op … Op CT Target … Выполняется заранее на фоне вычислений Branch STOP !!! Target …
Передача управления (2) CT condition CT B CTP B Main pipeline R B Preparation pipelines Target A … R B CT F 0 F 1 S … R B D … R B … R … D 98 98 Выполняется на фоне других команд 98 256 • S 256 main I$ target x 3 • CTP • Для подготовки переходов имеется 3 дополнительных конвейера (до стадии D включительно) Дополнительные конвейеры заполняются на фоне исполнения программы Переход выполняется без паузы
Программная конвейеризация циклов ld bi 3 ld ci * i-3 + i-7 st ai-8 ld ci+1 ld di+1 * i-2 + i-6 st ai-7 ld bi+3 ld ci+3 ld di+3 *i + i-4 st ai-5 ld bi+4 ld ci+4 ld di+4 * i+1 + i-3 st ai+-4 ld bi+7 ld ci+7 ld di+7 * i+4 +i st ai-1 ld bi+8 3 M 4 ld di ld ci+8 ld di+8 * i+5 + i+1 st ai ld bi+9 ld ci+9 ld di+9 * i+6 + i+2 st ai+1 ld di 3 * ld ci ld bi+1 for (i = 0; i < N; i++) a[i] = b[i] * c[i] + d[i]; + 1 st ai Время исполнения: T = N*M L
Программная конвейеризация циклов (2) iteration stage … prologue time L number of iterations (N) epilogue (M-1) Время исполнения: T = (N + M – 1)*L Проблемы: • • Обработка прерываний в наложенных итерациях Отмена побочных эффектов в прологе и эпилоге Отмена считываний из памяти в эпилоге Переименование оперативных регистров
Программная конвейеризация циклов (3) Проблемы и решения : • Обработка прерываний в наложенных итерациях – Техника отложенного прерывания в спекулятивной ветви • Отмена побочных эффектов в прологе – Использование механизма условного исполнения операций – Использование специального механизма • Группирование записей в память и переходов в последней стадии итерации • Введение счетчика пролога цикла • Отмена либо разрешение записей в память и переходов в зависимости от состояния счетчика пролога • Отмена считываний из памяти в эпилоге – Использование механизма условного исполнения операций – Использование специального механизма • Группирование считываний из памяти в первой стадии итерации • Введение счетчика итераций и счетчика эпилога цикла • Отмена либо разрешение считываний из памяти в зависимости от состояния счетчика эпилога • Переименование оперативных регистров – Введение механизма относительной циклической адресации RF и PF
Управление конвейеризованным циклом iteration stage stores disabled stage of stores … stage of loads disabled prologue counter loop counter epilogue counter time
Переименование регистров в цикле В регистровом окне можно выделить область, в которой реализуется относительная циклическая адресация регистров. Указатели rbs и rsz определяют границы области, а rcur – базу индексации. Эффективный адрес регистра вычисляется по формуле reg_number = WD. base + rbs + (rcur + index) % rsz index rsz rcur WD. base rbs Указатель rcur можно циклически продвигать по области, тем самым адресуя одним и тем же индексом разные физические регистры
Переименование регистров в цикле (2) ld bi 3 ld bi * i ci bi ld di * i-3 + i-7 st ai-8 ld ci+1 ld di+1 * i-2 + i-6 st ai-7 ld bi+3 3 ld ci ld bi+1 ld ci+3 ld di+3 *i + i-4 st ai-5 i+1 index ci = 3 index bi = 0 rcur движение rcur i+2 ci ci+1 ci+2 bi bi+1 bi+2 bi bi+1 3 0 i+3 index ci = 6 3 index bi = 3 0 ci ci+1 ci+2 bi ci+3 bi+1 bi+2 bi+3
Устройство обработки предикатов Проблема: Освобождение арифметических каналов от малоразрядных вычислений Решение: Вынести логическую обработку предикатов в отдельное устройство Predicate logic syllables (PLS) f 0 loop state mux PF 4 PF f 1 PF f 2 PF
Устройство синхронного обращения к массивам первоначальная загрузка Проблема: Освобождение арифметических каналов от адресной арифметики (при обращении к массивам) Решение: Вынести регулярную адресную арифметику в отдельное устройство File of descriptors (32) descriptor. size + descriptor. base exception команда File of indices (16) + literal File of increments (8) + address
Предварительная подкачка массивов Проблемы: • • Массивы расположены в оперативной памяти, имеющей большое время доступа Длительность обращения в память статически не известна Техника «забрасывания» считываний вверх по коду требует большого количества оперативных регистров Предварительная подкачка элементов массивов в кэш вытесняет потенциально полезное содержимое Решение: Введение специализированного устройства предварительной подкачки массивов (AAU), имеющего следующие свойства: • • • Перед началом цикла устройство программируется (адреса массивов, шаги, etc) Устройство работает асинхронно по отношению к основной программе Устройство обращается в память группрвыми запросами Устройство имеет «простой» специализированный буфер (APB) для временного хранения элементов массивов По требованию основной программы нужные элементы массивов переписываются из буфера в регистровый файл
Предварительная подкачка массивов (2) Программв с использованием AAU Запросы в память Загрузка AAU Asynchronous program Итерации основной программы … loop: ld b[i]; ld c[i] … 100+ Op … i =+2 Старт AAU … loop: mova b[i]; mova c[i] … 5 Op … Ответы из памяти … Исходная программв (программа, адреса массивов, шаги по массивам)
Предварительная подкачка массивов (3) File of descriptors (32) Считывание из основной программы size + exception bas e File of initial indices (16) current indices (32) + address Memory subsystem 4 x 8 B FIFOj j File of increments (8) + Buffer for asynchronous program (32) 2 x 8 B RF …… FIFOk k literal первоначальная загрузка APB 2 x 8 B x 2 Логическое деление буфера: FIFO на каждый массив (32) x 2
Резюме • • • Эльбрус-3 М имеет архитектуру VLIW со статическим планированием вычислений Аппаратура освобождена от функций выявления межоперационных зависимостей и распараллеливания вычислений – их выполняет компилятор В архитектуре предусмотрены специальные операции, режимы и механизмы, позволяющие сочетать эффективное статическое планирование с обработкой динамических ситуаций – Условное выполнение операций – Спекулятивное выполнение операций • Отложенное прерывание • Пропуск операций с неготовыми операндами • Пропуск операций обращения в память, потребовавших поиска в Таблице Страниц – Поддержка «забрасывания» считываний из памяти выше потенциально конфликтующих записей
Резюме (2) • В архитектуре большое внимание уделено эффективности типовых вычислительных конструкций, влияющих на производительность системы – Стековая организация регистровых окон процедур с автоматической пересылкой в память и из памяти – Техника подготовки передач управления – Техника программной предварительной подкачки данных в кэш-память – Специализированное устройство для булевских вычислений (освобождение ALU от малоразрядных вычислений) – Поддержка вычислений в цикле • Предварительная подкачка массивов в специализированный буфер • Специализированное устройство регулярной адресной арифметики (освобождение ALU от «сервисных» функций) • Поддержка программной конвейеризации циклов (освобождение механизма условного выполнения от «сервисных» функций) • Техника циклического переименования регистров
?
arch_e3m.ppt