'

Лекция №2 Архитектура Intel Xeon Phi

Понравилась презентация – покажи это...





Слайд 0

Лекция №2 Архитектура Intel Xeon Phi Программирование для Intel Xeon Phi Линёв А.В. Кафедра программной инженерии При поддержке компании Intel


Слайд 1

Содержание Введение Архитектура Intel Xeon Phi Конвейер ядра Intel Xeon Phi Иерархия памяти Итоги Архитектура Intel Xeon Phi


Слайд 2

Введение


Слайд 3

Архитектура Intel Xeon Phi Геннадий Федоров. Intel® Xeon Phi. Курс “молодого” бойца.


Слайд 4

Сопроцессор Intel Xeon Phi В конце 2012 года Intel представила первый процессор с архитектурой Intel MIC (Intel® Many Integrated Core Architecture) Основой архитектуры MIC является использование большого количества вычислительных ядер архитектуры x86 в одном процессоре Для разработки параллельных программ могут быть использованы стандартные технологии: pthreads, OpenMP, Intel TBB, Intel Cilk Plus, MPI Intel® Xeon Phi™ 5110P подключается к разъему PCIe x16 на материнской плате, в двухпроцессорной системе можно установить до 8 карт Intel® Xeon Phi™ 5110P Архитектура Intel Xeon Phi


Слайд 5

Сопроцессор Intel Xeon Phi Архитектура Intel Xeon Phi Intel® Xeon Phi™ Coprocessor: Datasheet [http://www.intel.com/content/www/us/en/processors/xeon/xeon-phi-coprocessor-datasheet.html]


Слайд 6

Что должен знать разработчик HPC-приложений… Программа, с которой обычно начинается изучение новой технологии параллельного программирования double A[N], B[N], C; int i; C = 0.0; for(i = 0; i < N; i ++){ C += A[i] * B[i]; } Знание системных основ параллельных вычислений позволяет понимать, как должна/будет работать такая программа на аппаратном уровне Архитектура Intel Xeon Phi


Слайд 7

Что должен знать разработчик HPC-приложений Предварительные требования Основы программирования Алгоритмы и анализ сложности Языки программирования Системные основы параллельных вычислений Архитектура вычислительных систем (+ Ассемблер) Компьютерные сети Операционные системы Компиляторы Использование параллельных вычислений Параллельное программирование / Алгоритмы / Языки / Технологии / Инструменты / … Архитектура Intel Xeon Phi


Слайд 8

Архитектура вычислительных систем… Введение Архитектура процессора, компоненты CPU Конвейеризация вычислений (статическое и динамическое планирование) Векторные вычисления Иерархия памяти Классификация архитектур вычислительных систем Симметричное мультипроцессирование Массивно-параллельные системы, кластерные системы Параллелизм в процессорах специального назначения Примеры вычислительных систем Архитектура Intel Xeon Phi


Слайд 9

Архитектура Intel Xeon Phi


Слайд 10

Архитектура Intel Xeon Phi Архитектура Intel Xeon Phi TD – Каталог тегов (Tag Directory), GDDR MC – Контроллер памяти Ядро L2 TD Ядро L2 TD ... GDDR MC GDDR MC Ядро L2 TD ... Ядро L2 TD GDDR MC GDDR MC Ядро L2 TD ... Ядро L2 TD GDDR MC GDDR MC Ядро L2 TD Ядро L2 TD ... GDDR MC GDDR MC Клиентская логика PCI Express (SBOX)


Слайд 11

Архитектура Intel Xeon Phi До 61 процессорных ядер Высокопроизводительная кольцевая шина 8 контроллеров памяти обслуживают 16 каналов GDDR5 Отдельный компонент реализует клиентскую логику PCI Express Архитектура Intel Xeon Phi


Слайд 12

Исполнительное ядро Intel Xeon Phi… Выполняет выборку и декодирование инструкций 4 аппаратных потоков Поддерживает выполнение 32- и 64-битного кода, совместимого с архитектурой Intel64 Ядро содержит 2 конвейера (U-конвейер и V-конвейер) и может выполнять 2 инструкции за такт V-конвейер способен выполнять не все типы инструкций, возможность параллельного выполнения команд на U- и V-конвейерах задается набором правил Архитектура Intel Xeon Phi Блок декодирования инструкций Блок обработки скаляров Скалярные регистры Блок обработки векторов Векторные регистры 32 Кб кеш инструкций L1 32 Кб кеш данных L1 Интерфейс КШ (512 Кб L2, TD) Кольцевая шина


Слайд 13

Исполнительное ядро Intel Xeon Phi Внеочередное выполнение инструкций не поддерживается Не реализованы команды Intel Streaming SIMD Extensions (SSE), MMX и Advanced Vector Extensions (AVX) Включает по 32 Кб 8-канальных множественно-ассоциативных кешей инструкций и данных (L1 I-Cache и L1 D-Cache) Архитектура Intel Xeon Phi


Слайд 14

Исполнительное ядро Intel Xeon Phi 512-битный блок векторных вычислений (vector processor unit, VPU) 32 512-битных регистра (zmm0-zmm31) Включает расширенный блок математических вычислений (extended math unit, EMU) Выполняет за 1 такт 16 операций над числами с плавающей точкой одинарной точности или 32-битными целыми числами или 8 операций над числами плавающей точкой двойной точности Для операции «умножение и сложение» (multiply-add, FMA) - 32 операции над числами плавающей точкой одинарной точности за такт Поддерживает операции заполнения и перестановки содержимого векторного регистра 8 регистров масок для условного выполнения Поддерживает вычисление для вещественных чисел одинарной точности 2x, log2x, 1/x, 1/sqrt(x) Один из аргументов может считываться из оперативной памяти с выполнением при необходимости преобразования типа Архитектура Intel Xeon Phi


Слайд 15

Исполнительное ядро Intel Xeon Phi Интерфейс кольцевой шины (Core-Ring Interface, CRI/L2) Обеспечивает подключение ядра к высокопроизводительному встроенному интерконнекту сопроцессора Включает 512 Кб 8-канального (8-way) множественно-ассоциативного кеша L2 Каталог тегов (Tag Directory, TD) является частью распределенного каталога Архитектура Intel Xeon Phi


Слайд 16

Компоненты Intel Xeon Phi Контроллер памяти (GDDR MC) включает: интерфейс кольцевой шины, планировщик запросов, интерфейс к устройствам GDDR Каждый контроллер памяти включает два независимых канала доступа к памяти Все контроллеры памяти сопроцессора действуют независимо друг от друга Архитектура Intel Xeon Phi


Слайд 17

Компоненты Intel Xeon Phi SBOX реализует клиентскую логику PCI Express, включая механизм прямого доступа к памяти (Direct Memory Access, DMA) и ограниченные возможности по управлению питанием Двунаправленная кольцевая шина обеспечивает передачу данных между компонентами сопроцессора Архитектура Intel Xeon Phi


Слайд 18

Теоретическая производительность Intel Xeon Phi содержит 61 ядро, но он исполняет собственную операционную систему, и одно ядро выделено для исполнения кода ОС Для вещественных чисел одинарной точности 16 (длина вектора) * 2 flops(FMA) * 1.1 (GHZ) * 60 (число ядер) = 2112 GFLOPS Для вещественных чисел двойной точности 8 (длина вектора) * 2 flops (FMA) * 1.1 (GHZ) * 60 (число ядер) = 1056 GFLOPS Архитектура Intel Xeon Phi


Слайд 19

Конвейер ядра Intel Xeon Phi


Слайд 20

Конвейер ядра Intel Xeon Phi… Содержит 7 этапов Блок векторных вычислений также имеет конвейерную структуру и состоит из 6 этапов Все этапы основного конвейера кроме последнего (WB), поддерживают спекулятивное выполнение Каждое ядро может выполнять инструкции 4 потоков Архитектура Intel Xeon Phi Pre Thread Picker Function (PPF) Thread Picker Function (PPF) Decode Prefixes (D0) Instruction Decode (D1) Microcode Control (D2) Execution (E) Write Back (WB)


Слайд 21

Конвейер ядра Intel Xeon Phi… Архитектура Intel Xeon Phi Декодирование T0 IP T1 IP T2 IP T3 IP L1 TLB L1 I-Cache Микрокод U-конвейер (Pipe 0) V-конвейер (Pipe 1) Векторные регистры Регистры x87 Скалярные регистры Векторнаяобработка 512 б SIMD Операции x87 ALU 0 ALU 1 L1 TLB, L1 D-Cache L2 TLB Кеш L2 512 Кб Интерфейс кольцевой шины


Слайд 22

Конвейер ядра Intel Xeon Phi… Реализация выборки команд (стадии PPF и PF) накладывает ограничение на выполнение потоков – на двух последовательных тактах не могут выбираться инструкции одного и того же потока для полной загрузки ядра необходимо выполнять на нем по крайней мере два потока одновременно, а при работе только одного потока выборка инструкций будет выполняться через такт с учетом того, что заполнение буфера предварительной выборки требует 4-5 тактов при попадании в кеш инструкций и значительно больше при промахе, для обеспечения полной загрузки может потребоваться 3-4 потока Архитектура Intel Xeon Phi


Слайд 23

Конвейер ядра Intel Xeon Phi Этап исполнения (E), реализован в виде двух конвейеров – U и V Первая инструкция всегда отправляется на U-конвейер, для второй инструкции проверяется возможность одновременного выполнения с первой согласно набору правил парного выполнения команд Скалярные целочисленные операции выполняются арифметико-логическими устройствами (ALU), для скалярных и векторных операций с вещественными числами используется дополнительный 6-стадийный конвейер Векторные инструкции выполняются в основном на U-конвейере Большинство инструкций с целыми числами и масками имеют латентность 1, большинство векторных инструкций – 4 или более при использовании операций чтения/записи с заполнением или перестановкой Архитектура Intel Xeon Phi


Слайд 24

Векторные операции


Слайд 25

Векторные операции… Длина вектора – 512 бит Вектор может обрабатываться как 8 вещественных чисел двойной точности 16 вещественных чисел одинарной точности 8 64-битных целых чисел 16 32-битных целых чисел Планируется поддержка 32 16-битных целых чисел 64 8-битных целых чисел Архитектура Intel Xeon Phi


Слайд 26

Векторные операции… Позволяют за одну инструкцию выполнить арифметическую операцию над несколькими парами операндов Имеются унарные, бинарные и тернарные операции Использования векторизации Специальные директивы или intrinsic Автоматическая векторизация компилятором Архитектура Intel Xeon Phi A[i] + B[i] C[i] A[i+7] B[i+7] C[i+7] A[i+6] B[i+6] C[i+6] A[i+5] B[i+5] C[i+5] A[i+4] B[i+4] C[i+4] A[i+3] B[i+3] C[i+3] A[i+2] B[i+2] C[i+2] A[i+1] B[i+1] C[i+1] A[i] B[i] C[i] + double A[N], B[N], C = 0.0; for(int i = 0; i < N; i ++){ C += A[i] * B[i]; }


Слайд 27

Векторные вычисления Аппаратно векторизованные функции для одинарной точности: 2x, log2x, 1/x, 1/sqrt(x) Компилятор Intel поддерживает набор intrinsic, представляющих собой векторные версии скалярных математических операций (Short Vector Math Library Intrinsics, библиотека SVML) Входной параметр – вектор, выходной параметр – вектор, над каждым элементом которого была выполнена скалярная операция Поддерживаются операции для одинарной и двойной точности Используется для векторизации циклов с математическими функциями Архитектура Intel Xeon Phi Операции, поддерживаемые SVML


Слайд 28

Автовекторизация Компилятор Intel поддерживает возможность автоматической векторизации циклов Для обеспечения возможности автоматический векторизации требуется выполнение ряда условий Можно помочь компилятору выполнить векторизацию, используя специальные директивы pragma Является рекомендуемым вариантом использования векторизации (обеспечивает переносимость кода между различными архитектурами) Автоматическая векторизация подробно рассмотрена в Лекции 4 «Векторные расширения Intel Xeon Phi» Архитектура Intel Xeon Phi


Слайд 29

Иерархия памяти Intel Xeon Phi


Слайд 30

Иерархия памяти Intel Xeon Phi… Все ядра совместно используют оперативную память сопроцессора Каждое ядро сопроцессора Intel Xeon Phi имеет собственные кеши L1 и L2 Кеши L1 и L2 являются инклюзивными все данные, хранящиеся в кэше L1, хранятся также в кэше L2 Кеши L1 и L2 используют псевдо-LRU алгоритм Архитектура Intel Xeon Phi


Слайд 31

Иерархия памяти Intel Xeon Phi… Кеши первого уровня - кеш инструкций L1 I-Cache и кеш данных L1 D-Cache размер - по 32 Кб размер строки - 64 байта степень ассоциативности – 8 «чистая» латентность - 1 такт средняя латентность доступа - 3 такта load-to-use латентность - 1 такт (целочисленное значение, загруженное на текущем такте из кеша, может быть использовано на следующем такте целочисленной инструкцией, для векторных инструкций может быть больше) обслуживает до ~38 одновременных запросов на ядро Архитектура Intel Xeon Phi


Слайд 32

Иерархия памяти Intel Xeon Phi… Кеш второго уровня L2 размер - 512 Кб размер строки - 64 байта степень ассоциативности – 8 32 Гб кешируемых адресов (размер адреса 35 бит) «чистая» латентность доступа - 11 тактов средняя латентность доступа - 14-15 тактов имеет аппаратное потоковое устройство предвыборки, способное выполнять избирательную предвыборку инструкций для исполнения и данных для операций чтения и записи может инициировать до 4 составных запросов предвыборки, позволяет инициировать параллельную предвыборку до 4 Кб данных обслуживает до ~38 одновременных запросов на ядро Архитектура Intel Xeon Phi


Слайд 33

Иерархия памяти Intel Xeon Phi… Для контроля когерентности кешей используется комбинация протоколов: MESI (Modified, Exclusive, Shared, Invalid) на каждом ядре и GOLS3 (Globally Owned Locally Shared) для распределенного каталога тегов Распределенный между ядрами каталог тегов сопроцессора (TD) разделен на 64 части, каждая из которых отвечает за контроль глобального состояния когерентности части строк кеша Особенности реализации кешей L1 и L2: обращения к кешу L1 можно выполнять в последовательные такты, между обращениями к кешу L2 должен выдерживаться интервал в 1 такт (то есть к кешу L2 можно обращаться в лучшем случае через такт) на каждом конкретном такте для L1 и L2 допускается выполнение либо чтения из кеша, либо записи в кеш, но не чтения и записи одновременно реализованы только две схемы взаимодействия между кешем и основной памятью – отсутствие кеширования (uncacheable, UC) и отложенная запись (write-back, WB) streaming stores Архитектура Intel Xeon Phi


Слайд 34

Иерархия памяти Intel Xeon Phi Оперативная память 8 встроенных контроллеров памяти, каждый обслуживает по два 32-битных канала GDDR5 суммарная производительность - 5,5 GT/s (миллиардов пересылок в секунду) суммарная пропускная способность - 352 GB/s латентность доступа - более 300 тактов Компонент сопроцессора, реализующий клиентскую логику PCI Express, также обеспечивает работу механизма прямого доступа к памяти (DMA). 8 независимых каналов DMA, работающих на той же частоте, что и ядра сопроцессора, могут выполнять следующие типы передачи данных: из GDDR5-памяти сопроцессора в оперативную память хоста из оперативной памяти хоста в GDDR5-память сопроцессора из GDDR5-памяти в GDDR5-память в пределах сопроцессора Выполнение операции передачи данных может быть запрошено как со стороны центрального процессора хоста, так и со стороны сопроцессора Архитектура Intel Xeon Phi


Слайд 35

Предвыборка данных (Prefetching) Использование intrinsics _mm_prefetch((char *) &a[i], hint); См. xmmintrin.h для возможных значений hint (for L1, L2, non-temporal, …) pragma / directive #pragma prefetch a [:hint[:distance]] По умолчанию работает аппаратная предвыборка Архитектура Intel Xeon Phi


Слайд 36

Страничная модель адресации… Архитектура Intel Xeon Phi MAX 0 ВАП RAM HDD Physical frame number N … Physical frame number 1 Physical frame number 0 Таблица страниц CR3 Поддержка виртуального адресного пространства процесса на основе страничного преобразования


Слайд 37

Страничная модель адресации… Поддержка виртуальных адресных пространств процессов 32-битные физические адреса при работе в 32-битном режиме 36-битные адреса при использовании технологии PAE (Physical Address Extension) в 32-битном режиме 40-битные физические адреса при работе в 64-битном режиме Операционная система сопроцессора поддерживает работу только в 64-битном режиме Процессам предоставляется линейное виртуальное адресное пространство (ВАП) и возможность использовать 64-битные адреса Для поддержки ВАП используется стандартная схема архитектуры x86_64 – страничная адресация с 4 уровнями таблиц страниц Архитектура Intel Xeon Phi


Слайд 38

Страничная модель адресации… Архитектура Intel Xeon Phi Page Global Directory Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница Страница ВАП Виртуальный адрес, 64 бита 47...39 63...48 38...30 20...12 29...21 11...0 Регистр CR3 Page Upper Directories + ... Page Middle Directories + ... Page Tables + ... Страница Страница Страница Страница Страница Страница Страница RAM +


Слайд 39

Страничная модель адресации Поддерживаемые размеры страниц – 4 Кб и 2 Мб Кеш дескрипторов страниц (translation look-aside buffer, TLB) имеет двухуровневую архитектуру; каждое ядро имеет следующие кеши Архитектура Intel Xeon Phi


Слайд 40

Итоги


Слайд 41

Требования к приложению, портируемому на MIC Параметры архитектуры Intel Xeon Phi позволяют выделить базовые характеристики приложения, определяющие возможность его эффективной адаптации Эффективно распараллеленное на центральном процессоре Перед портированием приложения на специализированную архитектуру необходимо убедиться в возможности построения эффективной параллельной реализации Массивный параллелизм Векторизация кода Высокая вычислительная сложность и переиспользование данных Использование “фиксированных” интерфейсов из MKL MPI-приложения Архитектура Intel Xeon Phi


Слайд 42

Противопоказания Недостаточная степень параллелизма Множественные синхронизации Структуры данных подразумевают активное использование gather/scatter Использование 64-разрядных индексов или конверсия int64 <-> fp Интенсивная коммуникация между host-частью и Xeon Phi Ограничение памяти 8Gb при непосредственном исполнении на Xeon Phi (native mode) Архитектура Intel Xeon Phi


Слайд 43

Замечания для повышения производительности Размер задачи Большие задачи имеют больший параллелизм Но не слишком большие (доступно только 8GB RAM) Выравнивание данных 64 байта для эффективного использования векторизации Количество потоков OpenMP и их привязка Избегайте миграции потоков для сохранения локальности данных Используйте большие страницы Уменьшает количество промахов TLB и накладные расходы на поддержку ВАП Архитектура Intel Xeon Phi


Слайд 44

Литература Reinders J. An Overview of Programming for Intel Xeon processors and Intel Xeon Phi coprocessors. [http://software.intel.com/en-us/blogs/2012/11/14/an-overview-of-programming-for-intel-xeon-processors-and-intel-xeon-phi] Loc Q Nguyen et al. Intel Xeon Phi Coprocessor Developer's Quick Start Guide. [http://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-developers-quick-start-guide] Intel Xeon Phi Coprocessor System Software Developers Guide http://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-system-software-developers-guide] Rahman R. Intel Xeon Phi Core Microarchitecture [http://software.intel.com/en-us/articles/intel-xeon-phi-core-micro-architecture] Архитектура Intel Xeon Phi


Слайд 45

Авторский коллектив Линёв Алексей Владимирович, заведующий лабораторией кафедры программной инженерии факультета ВМК ННГУ. alin@unn.ru Н. Новгород, 2013 г. Компиляция и запуск приложений на Intel Xeon Phi


×

HTML:





Ссылка: