Презентацию к лекции Вы можете скачать здесь.
В данном разделе курса описывается аппаратная архитектура и программная модель сопроцессора Intel Xeon Phi. Рассматриваются основные архитектурные блоки и особенности сопроцессора: ядро, блок векторной обработки данных, встроенная высокопроизводительная двунаправленная кольцевая шина, полностью когерентные кэши L2 и принципы взаимодействия компонент. Основное внимание уделяется элементам, наиболее существенно влияющим на производительность вычислений и понимание способов оптимизации программ для архитектуры Intel Xeon Phi
Сопроцессор Intel Xeon Phi включает до 61 процессорных ядер, соединенных высокопроизводительной встроенной кольцевой шиной. 8 контроллеров памяти обслуживают 16 каналов GDDR5, обеспечивая суммарную производительность 5,5 GT/s (миллиардов пересылок в секунду, при ширине шины 64 байта это дает пропускную способность 352 GB/s). Отдельный компонент реализует клиентскую логику PCI Express (см. рис 2.1).
(рис 2.1) Основные компоненты сопроцессора Intel Xeon Phi
Каждое ядро является полнофункциональным и поддерживает выборку и декодирование инструкций из 4 потоков команд. Для повышения эффективности работы с памятью в сопроцессоре реализован распределенный каталог тегов кэша, позволяющий использовать более эффективный протокол для поддержания когерентности кэшей всех ядер. Контроллеры памяти обеспечивают теоретическую пропускную способность 352 гигабайта в секунду. Приведем основные характеристики компонент сопроцессора.
Ядро сопроцессора Intel Xeon Phi содержит следующие компоненты (см. рис 2.2).
(рис 2.2) Основные компоненты ядра сопроцессора Intel Xeon Phi
Каталог тегов (Tag Directory, TD) является частью распределенного каталога, обеспечивающего отслеживание всех адресов памяти, по которым происходило изменение данных всеми ядрами сопроцессора, и когерентность кэшей L2 всех ядер. Каждый тег содержит адрес, состояние и идентификатор владельца (кэша L2 какого-либо ядра) строки данных кэша. Пространство адресов оперативной памяти поровну разделено между каталогами тегов различных ядер, и ядро, на котором отсутствуют нужные данные, посылает запрос к соответствующему каталогу тегов через кольцевую шину.
Сопроцессор Intel Xeon Phi содержит 61 ядро, но он исполняет собственную операционную систему, и одно ядро выделено для исполнения кода ОС, обслуживания прерываний и т.п. Поэтому в расчетах производительности предполагается, что для вычислений используется 60 ядер из имеющихся 61.
Теоретическая производительность сопроцессора Intel Xeon Phi с 60 ядрами и частотой 1,1 ГГц может быть вычислена следующим образом [2.1]:
2 flops за такт удается получить благодаря использованию инструкции "умножение и сложение" (multiply-add, FMA).
Ядра Intel Xeon Phi обеспечивают выполнение 32- и 64-битного кода, совместимого с архитектурой Intel64 без поддержки расширений MMX, AVX и SSE (всех версий). Блок векторных вычислений, содержащийся в каждом ядре, дополнительно реализует набор операций над 512-битными векторами.
Конвейер ядра Intel Xeon Phi содержит 7 этапов, блок векторных вычислений также имеет конвейерную структуру и состоит из 6 этапов (см. рис 2.3). Все этапы основного конвейера кроме последнего (WB), поддерживают спекулятивное выполнение. Каждое ядро может выполнять инструкции 4 потоков, что позволяет уменьшить потери из-за латентности доступа к памяти, выполнения векторных инструкций и т.д.
(рис 2.3) Конвейер ядра Intel Xeon Phi
Выборка команд разбита на 2 этапа – PPF (pre thread picker) и PF (thread picker). На этапе PPF выполняется чтение инструкций потока исполнения в буфер предвыборки. На этапе PF производится выбор потока, инструкции которого будут выполняться, и передача пары инструкций для декодирования. Для каждого из четырех исполняющихся на ядре потоков имеется буфер предварительной выборки, который может содержать 2 инструкции для выполнения на U- и V-конвейерах ядра. Выбор инструкции для исполнения производится из заполненных буферов предвыборки согласно простому циклическому алгоритму (round robin).
Реализация выборки команд накладывает ограничение на выполнение потоков – на двух последовательных тактах не могут выбираться инструкции одного и того же потока. Таким образом, для полной загрузки ядра необходимо выполнять на нем по крайней мере два потока одновременно, а при работе только одного потока выборка инструкций будет выполняться через такт, что приведет к потере половины производительности. Для полной загрузки ядра достаточно выполнения на нем 2 потоков, однако, с учетом того, что заполнение буфера предварительной выборки требует 4-5 тактов при попадании в кэш инструкций и значительно больше при промахе, для обеспечения полной загрузки может потребоваться 3-4 потока.
После выбора пары инструкций для исполнения они отправляются на декодирование, состоящее из двух этапов – декодирование префиксов (Decode prefixes, D0) и декодирование инструкции (Instruction decode, D1), – которые выполняют декодирование двух инструкций за такт. На этапе D0 выполняется декодирование префиксов со штрафом от 0 до 2 тактов (для префиксов, унаследованных от старых архитектур). На этапе D1 выполняется декодирование инструкций с учетом результата декодирования префиксов. Далее следует этап управляемого выполнения микрокоманд (Microcode control, D2), на котором производятся операции чтения данных из регистров общего назначения, вычисления адреса и поиска и чтения данных из кэша.
Декодированные инструкции отправляются на этап исполнения (Execution, E), реализованный в виде двух конвейеров – U и V. Первая инструкция всегда отправляется на U-конвейер, для второй инструкции проверяется возможность одновременного выполнения с первой согласно набору правил парного выполнения команд, и в случае положительного решения она отправляется на V-конвейер. Скалярные целочисленные операции выполняются арифметико-логическими устройствами (ALU), для скалярных и векторных операций с вещественными числами используется дополнительный 6-стадийный конвейер. Векторные инструкции выполняются в основном на U-конвейере.
Большинство инструкций с целыми числами и масками имеют латентность 1, большинство векторных инструкций – 4 или более при использовании операций чтения/записи с заполнением или перестановкой.
Каждое ядро сопроцессора Intel Xeon Phi имеет собственные кэши L1 и L2, все ядра совместно используют оперативную память сопроцессора. Кэши L1 и L2 являются инклюзивными, то есть все данные, хранящиеся в кэше L1, хранятся также в кэше L2. В обоих кэшах при замещении используется псевдо-LRU алгоритм .
Кэши первого уровня (кэш инструкций 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:
В сопроцессоре 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 данных | 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, работающих на той же частоте, что и ядра сопроцессора, могут выполнять следующие типы передачи данных:
Выполнение операции передачи данных может быть запрошено как со стороны центрального процессора хоста, так и со стороны сопроцессора, при этом буфер передачи должен быть выделен на той стороне, которая инициирует передачу. При выполнении одной транзакции PCI Express может быть передано от 64 байт (1 строка кэша) до 256 байт данных.
Сопроцессор Intel Xeon Phi совместим с архитектурой Intel64 за исключением расширений MMX, AVX и SSE, и дополнительно поддерживает собственный набор инструкций для работы с векторными данными. Основные свойства нового набора команд.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.