Инструкция по управлению кешем - Cache control instruction
эта статья нужны дополнительные цитаты для проверка.Сентябрь 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В вычисление, а инструкция управления кешем это подсказка, встроенная в инструкция поток процессор предназначен для повышения производительности аппаратные кеши, с помощью предвидение из шаблон доступа к памяти предоставленный программист или компилятор.[1] Они могут уменьшить загрязнение кеша, снизить требования к пропускной способности, обойти задержки, обеспечивая лучший контроль над рабочий набор. Большинство инструкций управления кешем не влияют на семантику программы, хотя некоторые могут.
Примеры
Несколько таких инструкций с вариантами поддерживаются несколькими процессорами. Набор инструкций архитектуры, такие как РУКА, MIPS, PowerPC, и x86.
Предварительная выборка
Также называется касание блока кэша данных, в результате запрашивается загрузка строки кэша, связанной с заданным адресом. Это выполняется Предвыборка
инструкция в x86 Набор инструкций. Некоторые варианты обходят более высокие уровни иерархия кеша, что полезно в контексте «потоковой передачи» для данных, которые проходят один раз, а не хранятся в рабочем наборе. В предварительная выборка должен произойти достаточно далеко вперед по времени, чтобы смягчить задержка доступа к памяти, например, в цикле линейного обхода памяти. В Коллекция компиляторов GNU внутренняя функция __builtin_prefetch
может использоваться для вызова этого в языках программирования C или C ++.
Предварительная выборка инструкций
Вариант упреждающей выборки для кеша инструкций.
Блок кэша данных выделяет ноль
Эта подсказка используется для подготовки строк кэша перед полной перезаписью содержимого. В этом примере ЦП ничего не загружает из основная память. Семантический эффект эквивалентен выровненному мемсет блока размером с строку кэша до нуля, но операция фактически бесплатна.
Блокировка кеша данных недействительна
Эта подсказка используется для отбрасывания строк кэша без сохранения их содержимого в основной памяти. Требуется осторожность, поскольку возможны неверные результаты. В отличие от других подсказок кеша, семантика программы значительно изменена. Используется вместе с выделить ноль
для управления временными данными. Это экономит ненужную пропускную способность основной памяти и загрязнение кеша.
Сброс блока кэша данных
Эта подсказка требует немедленного удаления строки кэша, освобождая место для будущих выделений. Он используется, когда известно, что данные больше не являются частью рабочий набор.
Другие подсказки
Некоторые процессоры поддерживают вариант загрузить – сохранить инструкции это также подразумевает подсказки кеша. Примером является загрузить последний
в PowerPC набор инструкций, который предполагает, что данные будут использоваться только один раз, то есть соответствующая строка кэша может быть помещена в начало очереди на выселение, при этом сохраняя ее в использовании, если она все еще необходима.
Альтернативы
Автоматическая предварительная выборка
В последнее время инструкции управления кешем стали менее популярными, поскольку все более совершенные конструкции процессоров приложений от Intel и РУКА выделить больше транзисторов для ускорения кода, написанного на традиционных языках, например, для выполнения автоматической предварительной выборки, с оборудованием для обнаружения линейных шаблонов доступа на лету. Однако методы могут оставаться применимыми для процессоров, ориентированных на пропускную способность, которые имеют другой компромисс между пропускной способностью и задержкой, и могут предпочесть выделить больше места для исполнительных модулей.
Память блокнота
Некоторые процессоры поддерживают блокнотная память в которые могут быть помещены временные конструкции, и прямой доступ к памяти (DMA) для передачи данных в и из основная память при необходимости. Такой подход используется Сотовый процессор, и немного встроенные системы. Это позволяет лучше контролировать трафик и локальность памяти (поскольку рабочий набор управляется явными передачами) и устраняет необходимость в дорогостоящих согласованность кеша в многоядерный машина.
Недостаток в том, что для этого требуются существенно разные методы программирования. Очень сложно адаптировать программы, написанные на традиционных языках, таких как C и C ++, которые предоставляют программисту единообразное представление о большом адресном пространстве (что является иллюзией, моделируемой кешами). Традиционный микропроцессор может более легко запускать унаследованный код, который затем может быть ускорен с помощью инструкций управления кешем, в то время как машина на основе блокнота требует специального кодирования с нуля до четной функции. Команды управления кэшем относятся к определенному размеру строки кэша, который на практике может варьироваться между поколениями процессоров одного и того же архитектурного семейства. Кеши также могут помочь объединить операции чтения и записи из менее предсказуемых шаблонов доступа (например, во время наложение текстуры ), в то время как DMA с блокнотом требует доработки алгоритмов для более предсказуемого «линейного» обхода.
Такие блокноты обычно сложнее использовать с традиционными моделями программирования, хотя поток данных модели (например, TensorFlow ) может быть более подходящим.
Векторный выбор
Векторные процессоры (например современные графический процессор (GPU) и Ксеон Пхи ) использовать массивные параллелизм для достижения высокой пропускной способности, работая с задержкой памяти (уменьшая потребность в предварительной выборке). Многие операции чтения выполняются параллельно для последующих вызовов вычислить ядро; вычисления могут быть приостановлены в ожидании будущих данных, в то время как исполнительные блоки посвящены работе с данными из прошлых запросов, которые уже были получены. Программистам легче использовать в сочетании с соответствующими моделями программирования (вычислить ядра ), но сложнее применить к программированию общего назначения.
Недостатком является то, что многие копии временных состояний могут храниться в локальная память из обрабатывающий элемент, ожидая данных в полете.