Архитектура Larrabee [36-38] оптимизирована для повышения общей производительности высокопроизводительных систем за счет следующих возможностей:
В сочетании с новым уровнем спекулятивных вычислений это значительно уменьшает количество условных переходов и, соответственно, ошибочных предсказаний направления переходов. В свою очередь, применение EPIC однозначно диктует появление в архитектуре большого числа функциональных устройств и сверхбольших файлов регистров.
В своем составе процессор Larrabee содержит контроллеры памяти, блок настраиваемой логики, блок фиксированных функций, системный интерфейс и набор вычислительных ядер, каждое из которых является IA-процессором.
Ядра соединены между собой двусторонней кольцевой шиной, в которую также включены и остальные функциональные блоки контроллера ( рис. 6.1). Ядрам обеспечен быстрый доступ к памяти, к блоку фиксированных функций и когерентность кэшей.
В Larrabee имеется кэш первого и второго уровней. Кэш первого уровня входит в состав ядра. На один аппаратный поток приходится 8 Кб кэша команд и 8 Кб кэша данных; таким образом, размер кэша одного ядра составляет 64 Кб.
Кэш второго уровня (L2) распределен между ядрами — это ускоряет обмен данными между ядрами, облегчает репликацию и общее использование данных.
Кэш второго уровня расположен отдельно от ядер, разделами — по одному на ядро. Каждое ядро имеет быстрый доступ к своему разделу кэша второго уровня. Размер локального раздела кэша второго уровня — 256 Кб. Все кэши второго уровня соединены внутренней кольцевой шиной, которая используется для обеспечения когерентности данных при записи. Как и в современных процессорах Intel, в Larrabee поддерживаются спецкоманды для работы с кэшем. Они включают команды предвыборки (prefetching), т. е. явной загрузки данных из ОЗУ в кэш 1-го или 2-го уровня, а также команды смены приоритета кэш-линии. Последнее может применяться при последовательной обработке массивов. Снижение приоритета вновь загруженных данных позволяет избежать замусоривания кэша и повысить производительность. Использование традиционной схемы кэширования, в отличие от явно адресуемой памяти, как в CELL, было вызвано двумя причинами: во-первых, можно применять кэш в алгоритмах с более сложными схемами доступа к памяти, например, при трассировке лучей; во-вторых, кэш позволит не терять производительность на уже существующих программах.
Каждое ядро, как было упомянуто, является процессором архитекту- ры IA, имеет когерентный кэш, систему виртуальной адресации и поддер- живает вытесняющую многозадачность.
При разработке вычислительного ядра за основу был взят процессор P54C с архитектурой x86. Из него исключили функциональность исполнения программы с внеочередным выполнением команд, что позволило значительно сократить площадь, занимаемую на кристалле одним ядром. Это позволяет разместить на кристалле большее число ядер и повысить общую производительность системы.
Larrabee поддерживает возможности, характерные для современных процессоров на базе архитектуры x86, в частности, 64-разрядные расширения и команды для эффективной работы с кэшем. Поддерживаются также некоторые специальные команды, например, команда побитового сканирования содержимого регистра с определением первого бита со значением 1.
Ядро [38] имеет 32 512-битных векторных регистра, поддерживает полный набор векторных операций при работе с целыми данными и с данными в формате с плавающей точкой одинарной и двойной точности:
Система команд содержит трехоперандные команды. Команда за- грузки Load может выбирать аргумент напрямую из памяти. Беззатратное преобразование типов:
Ядро имеет систему предсказания ветвлений.
Вычислительные ядра имеют полную поддержку вычислений стандарта IEEE (fast SSE). При вычислениях не проводится денормализация ( DAZ+FTZ always on). Всегда идет округление до ближайшего числа. В целях уменьшения занимаемой ядром площади (уменьшение размеров ядра) нет поддержки обработки исключительных ситуаций.
Поддерживаются инструкции Inf, NaN, signed 0. Инструкция Madd не производит промежуточных округлений.
Система команд векторного вычислительного блока (рис. 6.3) включает команды с целыми типами данных, а также с вещественными типами данных с одинарной и двойной точностью. Одно векторное ФУ способно исполнять до двух команд за такт.
Команда векторной загрузки данных из памяти трактирует свой операнд как векторный регистр, каждый компонент которого задает 32-разрядный адрес в памяти, и загружает данные по этим адресам. В случае когерентности адресов это позволяет значительно сократить накладные расходы на доступ к памяти. Подобная команда очень полезна для программ, использующих сложные и неравномерные структуры данных. На тестах, проведенных Intel, применение этой команды позволяло достигать троекратного увеличения производительности при работе с нерегулярными структурами данных.
С учетом системы команд ВФУ, одно ядро может использоваться для одновременной обработки нескольких (до 16) логических шейдерных потоков одновременно, при этом управляющие структуры могут моделироваться при помощи регистра маски. Альтернативный вариант — рассматривать Larrabee как векторный процессор и применять его соответствующим образом.
Ядра Larrabee поддерживают аппаратную многопоточность, по аналогии с технологией Hyper Threading в современных ГПУ, и позволяет частично решить проблему дисбаланса производительности памяти и процессора. Если один из потоков простаивает, выполняя операцию с памятью или кэшем, исполняются команды другого потока, сокращая время простоя центрального процессора. Одно ядро Larrabee поддерживает одновременно до 4 аппаратных потоков, каждый из которых имеет свой набор регистров. На каждый поток выделяется по 8 Кб кэша инструкций и 8 Кб кэша данных.
Скалярное вычислительное устройство Larrabee имеет два конвейера. Как и во многих других процессорах компании Intel, в которых используется такое решение, первый конвейер может выполнять любые команды, а второй — только часть команд. Задача выбора правильного порядка команд возлагается на компилятор, поскольку Larrabee не поддерживает внеочередное выполнение команд. Выбор подмножества команд для второго конвейера был обусловлен, с одной стороны, минимизацией площади второго конвейера на чипе, с другой — минимизацией нагрузки на компилятор по правильному упорядочиванию команд.
Основным отличием ядра Larrabee от других процессоров Intel является использование векторных команд с обработкой большого числа данных. Один операнд векторной команды имеет размер 512 бит, или 16 вещественных чисел с одинарной точностью. Такой же размер имеют векторные регистры. Более традиционные процессоры Intel поддерживают векторные команды с обработкой 4 значений с одинарной точностью (128 бит). Более широкий размер операнда векторной команды позволяет повысить производительность исполнения шейдеров при снижении общей площади ядра на кристалле. Векторное ФУ дает наибольший вклад в вычислительную мощность Larrabee, его применение является ключом для достижения высокой производительности на реальных задачах.
Модель программирования Larrabee поддерживает модель программирования для х86-й архитектуры. Общим для программирования Larrabee является использование компилятора С/С++, который статически компилирует программы для набора инструкций Larrabee x86. Многие С/С++-приложения могут быть скомпилированы для данного процессора и могут работать корректно без модификации. Такое положение дел благоприятно для портирования приложений, связанных с интенсивными вычислениями. Два основных ограничения лежат в области вызовов системных приложений и архитектуры драйверов устройств, которые нуждаются в перекомпиляции или модернизации.
Основные аспекты программирования для Larrabee — программные потоки (многопоточное программирование), векторизация и использование SIMD, коммуникации между хост-системой и Larrabee. Все векторные блоки процессора являются полностью программируемыми.
Многопоточное программирование основано на расширении известной модели POSIX Thread API, позволяя привязывать нити программы к конкретным аппаратным нитям или ядрам. Для снижения накладных расходов при переключении потоков в многопоточных приложениях предусмотрена оптимизация потоков. Реализация многопоточного программирования для Larrabee возможна при использовании Intel Thread Building Blocks, поддерживается модель OpenMP. Все эти возможности поддерживаются компилятором Larrabee Native’s C/C++.
Компилятор Larrabee Native’s C/C++ включает в себя версию технологии Intel’s autovectorization. Векторные устройства могут быть запрограммированы векторными инструкциями С++ или прямыми ассемблерными вставками.
В решениях, основанных на центральном процессоре и карте расширения с Larrabee, Larrabee может управляться драйвером операционной системы для платформы. В подобных платформах двоичный код Larrabee тесно связан и перемешан с кодом хост-процессора.
Процессор Larrabee представляет собой совокупность вычислительных ядер х86-совместимой архитектуры, которая оптимизирована для решения многопоточных задач, связанных с обработкой графических эффектов, физических эффектов, векторных вычислений.
Заявленная совместимость с архитектурой x86 открывает неплохие возможности по переносимости приложений и расширению их функциональности.
1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")
2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.
3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.
4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.