stringtranslate.com

Инструкция по управлению кэшем

В вычислительной технике инструкция управления кэшем представляет собой подсказку, встроенную в поток инструкций процессора , предназначенную для повышения производительности аппаратных кэшей , используя предвидение шаблона доступа к памяти, предоставленного программистом или компилятором . [1] Они могут уменьшить загрязнение кэша , снизить требования к пропускной способности, обойти задержки, предоставляя лучший контроль над рабочим набором . Большинство инструкций управления кэшем не влияют на семантику программы, хотя некоторые могут.

Примеры

Несколько таких инструкций, с вариантами, поддерживаются несколькими архитектурами наборов инструкций процессора , такими как ARM , MIPS , PowerPC и x86 .

Предварительная выборка

Также называется data cache block touch , эффект заключается в запросе загрузки строки кэша, связанной с заданным адресом. Это выполняется инструкцией PREFETCHв наборе инструкций x86 . Некоторые варианты обходят более высокие уровни иерархии кэша , что полезно в контексте «потока» для данных, которые просматриваются один раз, а не хранятся в рабочем наборе. Предварительная выборка должна происходить достаточно далеко вперед во времени, чтобы уменьшить задержку доступа к памяти, например, в цикле, проходящем память линейно. Встроенная функция GNU Compiler Collection может использоваться для вызова этого в языках программирования C или C++ . __builtin_prefetch

Предварительная выборка инструкций

Вариант предварительной выборки для кэша инструкций.

Блок кэша данных выделяет ноль

Эта подсказка используется для подготовки строк кэша перед полной перезаписью содержимого. В этом примере ЦП не нужно ничего загружать из основной памяти . Семантический эффект эквивалентен выровненному memset блока размером со строку кэша по нулю, но операция фактически бесплатна.

Блок кэша данных аннулирован

Эта подсказка используется для удаления строк кэша без фиксации их содержимого в основной памяти. Требуется осторожность, так как возможны неверные результаты. В отличие от других подсказок кэша, семантика программы существенно изменена. Это используется в сочетании с allocate zeroдля управления временными данными. Это экономит ненужную пропускную способность основной памяти и загрязнение кэша.

Очистка кэш-блока данных

Эта подсказка запрашивает немедленное вытеснение строки кэша, освобождая место для будущих распределений. Она используется, когда известно, что данные больше не являются частью рабочего набора .

Другие подсказки

Некоторые процессоры поддерживают вариант инструкций загрузки-хранения , которые также подразумевают подсказки кэша. Примером может load lastслужить набор инструкций PowerPC , который предполагает, что данные будут использоваться только один раз, т. е. рассматриваемая строка кэша может быть перемещена в начало очереди вытеснения, при этом сохраняя ее в использовании, если она все еще напрямую нужна.

Альтернативы

Автоматическая предварительная выборка

В последнее время инструкции по управлению кэшем стали менее популярными, поскольку все более продвинутые разработки прикладных процессоров от Intel и ARM выделяют больше транзисторов для ускорения кода, написанного на традиционных языках, например, выполняя автоматическую предварительную выборку, с аппаратным обеспечением для обнаружения линейных шаблонов доступа на лету. Однако эти методы могут оставаться применимыми для процессоров, ориентированных на пропускную способность, которые имеют другой компромисс между пропускной способностью и задержкой и могут предпочесть выделять больше места для исполнительных блоков.

Блокнотная память

Некоторые процессоры поддерживают память scratchpad, в которую можно помещать временные данные, и прямой доступ к памяти (DMA) для передачи данных в основную память и из нее при необходимости. Этот подход используется процессором Cell и некоторыми встроенными системами . Они обеспечивают больший контроль над трафиком памяти и локальностью (поскольку рабочий набор управляется явными передачами) и устраняют необходимость в дорогостоящей когерентности кэша в многоядерной машине.

Недостатком является то, что для использования требуются существенно отличающиеся методы программирования. Очень сложно адаптировать программы, написанные на традиционных языках, таких как C и C++, которые предоставляют программисту единообразное представление большого адресного пространства (что является иллюзией, имитируемой кэшами). Традиционный микропроцессор может легче запускать устаревший код, который затем может быть ускорен инструкциями по управлению кэшем, в то время как машина на основе блокнота требует специального кодирования с нуля до даже функции. Инструкции по управлению кэшем специфичны для определенного размера строки кэша, который на практике может различаться между поколениями процессоров в одном архитектурном семействе. Кэши также могут помочь объединить чтения и записи из менее предсказуемых шаблонов доступа (например, во время отображения текстур ), в то время как блокнотный DMA требует переработки алгоритмов для более предсказуемых «линейных» обходов.

Таким образом, блокноты обычно сложнее использовать с традиционными моделями программирования, хотя модели потоков данных (например, TensorFlow ) могут быть более подходящими.

Векторная выборка

Векторные процессоры (например, современные графические процессоры (GPU) и Xeon Phi ) используют массивный параллелизм для достижения высокой пропускной способности, обходя при этом задержку памяти (уменьшая необходимость предварительной выборки). Многие операции чтения выполняются параллельно для последующих вызовов вычислительного ядра ; вычисления могут быть приостановлены в ожидании будущих данных, в то время как исполнительные блоки посвящены работе с данными из прошлых запросов, которые уже появились. Это проще использовать программистам в сочетании с соответствующими моделями программирования ( вычислительными ядрами ), но сложнее применять к программированию общего назначения.

Недостатком является то, что в локальной памяти процессорного элемента может храниться множество копий временных состояний , ожидающих передачи данных.

Ссылки

  1. ^ "Руководство по Power PC, см. 1.10.3 Инструкции по управлению кэшем" (PDF) . Архивировано из оригинала (PDF) 2016-10-13 . Получено 2016-06-11 .