Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 30.05.2014 | Доступ: свободный | Студентов: 302 / 34 | Длительность: 11:26:00
Лекция 2:

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

< Лекция 1 || Лекция 2: 12 || Лекция 3 >

Иерархия памяти

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

Кэши L1 и L2

Кэши первого уровня (кэш инструкций L1 I-Cache и кэш данных L1 D-Cache) имеют размер по 32 Кб, размер строки 64 байта, степень ассоциативности 8. Кэш L1 имеет среднюю латентность доступа 3 такта, поскольку использование регистров общего назначения в качестве базовых или индексных требует 3 или более тактов для формирования адреса ("чистая" латентность кэша L1 составляет 1 такт). Средняя load-to-use латентность составляет 1 такт – целочисленное значение, загруженное на текущем такте из кэша, может быть использовано на следующем такте целочисленной инструкцией; однако для векторных инструкций load-to-use латентность может быть больше.

Кэш второго уровня L2 имеет размер 512 Кб, размер строки 64 байта, степень ассоциативности 8, 32 Гб кэшируемых адресов (размер адреса 35 бит), "чистую" латентность доступа 11 тактов и среднюю 14-15 тактов. Кэш L2 имеет аппаратное потоковое устройство предвыборки, способное выполнять избирательную предвыборку инструкций для исполнения и данных для операций чтения и записи. При выявлении потокового обращения к памяти устройство может инициировать до 4 составных запросов предвыборки. Поддерживается работа с 16 потоками, что позволяет инициировать параллельную предвыборку до 4 Кб данных.В ядре Intel Xeon Phi кэш-промах в L1 или L2 не приводит к блокировке работы всего ядра. При возникновении кэш-промаха в ходе выполнении операции чтения поток, инструкция которого вызвала промах, будет приостановлен до поступления данных. Все остальные потоки ядра при этом будут продолжать свое исполнение. Каждый из кэшей L1 и L2 могут инициировать до 38 одновременных запросов к внешним данным (на чтение или запись). С учетом возможностей блока клиентской логики PCI Express, включающего контроллер прямого доступа к памяти и способного обслуживать одновременно до 128 запросов, общее возможное число запросов данных в сопроцессоре вычисляется как 38 * (число ядер) + 128. Это позволяет активно использовать программную предвыборку данных для уменьшения потерь из-за кэш-промахов.

Кэш L2 является частью блока интерфейса кольцевой шины (CRI/L2), который также включает каталог тегов (TD). Распределенный между ядрами каталог тегов обеспечивает доставку запросов данных к клиентам кольцевой шины – другим ядрам или встроенным контроллерам памяти. Для контроля когерентности кэшей используется комбинация протоколов: MESI (Modified, Exclusive, Shared, Invalid) на каждом ядре и GOLS3 (Globally Owned Locally Shared) для распределенного каталога тегов. Распределенный каталог сопроцессора (TD) разделен на 64 части, каждая из которых отвечает за контроль глобального состояния когерентности части строк кэша.

Дополнительно необходимо отметить следующие особенности реализации кэшей L1 и L2:

  • обращения к кэшу L1 можно выполнять в последовательные такты, между обращениями к кэшу L2 должен выдерживаться интервал в 1 такт (то есть к кэшу L2 можно обращаться в лучшем случае через такт);
  • на каждом конкретном такте для L1 и L2 допускается выполнение либо чтения из кэша, либо записи в кэш, но не чтения и записи одновременно.

В сопроцессоре Intel Xeon Phi реализованы только две схемы взаимодействия между кэшем и основной памятью – отсутствие кэширования (uncacheable, UC) и отложенная запись (write-back, WB).

Поддержка виртуального адресного пространства

Описание работы оперативной памяти включает множество различных схем и параметров ее использования. Однако возможность использования той или иной аппаратной возможности зависит не только от наличия ее реализации, но и от свойств используемой операционной системы. На сопроцессоре Intel Xeon Phi исполняется специальная ОС, основанная на ядре Linux (kernel.org), в которую внесены минимальные дополнения для обеспечения совместимости. Далее мы будем в основном описывать только те возможности и параметры, которые поддерживаются операционной системой сопроцессора на момент написания раздела.

Сопроцессор Intel Xeon Phi поддерживает 32-битные физические адреса при работе в 32-битном режиме, 36-битные адреса при использовании технологии PAE (Physical Address Extension) в 32-битном режиме, 40-битные физические адреса при работе в 64-битном режиме. Операционная система сопроцессора поддерживает работу только в 64-битном режиме.

Процессам предоставляется линейное виртуальное адресное пространство (ВАП) и возможность использовать 64-битные адреса. Для поддержки ВАП используется стандартная схема архитектуры x86_64 – страничная адресация с 4 уровнями таблиц страниц.

Схема трансляции виртуальных адресов в физические

увеличить изображение
Схема трансляции виртуальных адресов в физические

Поддерживаемые размеры страниц – 4 Кб и 2 Мб. Реализована поддержка запрета исполнения страницы (Execute Disable, NX; может использоваться для запрета исполнения инструкций, хранящихся вне региона кода, например, в стеке), но отсутствует признак глобальности страницы (Global Page bit; используется для страниц, отображенных в ВАП разных процессов на одни и те же физические страницы, например, части адресного пространства ядра).

Кэш дескрипторов страниц (translation look-aside buffer, TLB) имеет двухуровневую архитектуру. Каждое ядро содержит:

  • L1 TLB для данных, содержащий 64 записи для страниц размером 4 Кб и 8 записей для страниц размером 2 Мб;
  • L1 TLB для инструкций, содержащий 32 записи для страниц размером 4 Кб;
  • универсальный L2 TLB, содержащий 64 записи для хранения дескрипторов страниц размером 2 Мб или записей таблицы страниц второго уровня (Page Middle Directory) для страниц размером 4 Кб.

Таблица 2.1. Характеристики кэшей TLB сопроцессора Intel Xeon Phi
Кэш Размер страницы Число записей Степень ассоциативности Соответствующий размер памяти
L1 TLB данных 4 Кб 64 4 256 Кб
2 Мб 8 4 16 Мб
L1 TLB инструкций 4 Кб 32 4 128 Кб
L2 TLB 4 Кб, 2 Мб 64 4 128 Мб

Все TLB реализованы как 4-канальные множественно-ассоциативных кэши. Несколько выполняемых потоков могут использовать одни и те же записи TLB при условии совпадения у них значений регистров CR3, CR0.PG, CR4.PAE, CR4.PSE, EFER.LMA (фактически это означает, что данные потоки принадлежат одному процессу).

Доступ к оперативной памяти

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

Компонент сопроцессора, реализующий клиентскую логику PCI Express (SBOX), также обеспечивает работу механизма прямого доступа к памяти (DMA). 8 независимых каналов DMA, работающих на той же частоте, что и ядра сопроцессора, могут выполнять следующие типы передачи данных:

  • из GDDR5-памяти сопроцессора в оперативную память хоста;
  • из оперативной памяти хоста в GDDR5-память сопроцессора;
  • из GDDR5-памяти в GDDR5-память в пределах сопроцессора.

Выполнение операции передачи данных может быть запрошено как со стороны центрального процессора хоста, так и со стороны сопроцессора, при этом буфер передачи должен быть выделен на той стороне, которая инициирует передачу. При выполнении одной транзакции PCI Express может быть передано от 64 байт (1 строка кэша) до 256 байт данных.

Набор инструкций сопроцессора Intel® Xeon Phi

Сопроцессор Intel Xeon Phi совместим с архитектурой Intel64 за исключением расширений MMX, AVX и SSE, и дополнительно поддерживает собственный набор инструкций для работы с векторными данными. Основные свойства нового набора команд.

  • Новый набор команд ориентирован в первую очередь на повышение производительности HPC-приложений (High Performance Computing). Поддерживаются операции с 32-битными целочисленными и вещественными числами, множество операций преобразования типов данных, часто используемых в высокопроизводительных приложениях, также поддерживаются арифметические операции с 64-битными вещественными числами и логические операции с 64-битными целыми.
  • Наличие 32 512-битных векторных регистров помогает компенсировать латентность обращения к данным. Каждый вектор может обрабатываться как набор из 16 32-битных или 8 64-битных целочисленных или вещественных значений.
  • Используются тернарные инструкции, в которых явно указываются два источника входных данных и получатель результата. У операции "умножение и сложение" (multiply-add, FMA) получатель также является третьим источником.
  • Реализованы специальные регистры масок, использование которых позволяет осуществлять условное выполнение операций над элементами векторов, а также осуществлять векторизацию циклов, содержащих операции ветвления.
  • Специальные инструкции (scatter/gather) позволяют упаковывать в векторы для обработки данные, произвольно расположенные в памяти, что позволяет выполнять векторизацию алгоритмов, использующих сложные структуры данных.
< Лекция 1 || Лекция 2: 12 || Лекция 3 >
Svetlana Svetlana
Svetlana Svetlana

Здравствуйие! Я хочу пройти курс Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi), в презентации самостоятельной работы №1 указаны логин и пароль для доступ на кластер и выполнения самостоятельных работ, но войти по такой паре логин-пароль не получается. Как предполагается выполнение самосоятельных работ в этом курсе?