Jump to content

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

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

Блок кэша данных недействителен

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

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

  1. ^ «Руководство по Power PC см. в разделе 1.10.3 Инструкции по управлению кэшем» (PDF) . Архивировано из оригинала (PDF) 13 октября 2016 г. Проверено 11 июня 2016 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8b89ecbbad6c6e0b2d6e8595822b14a6__1699354620
URL1:https://arc.ask3.ru/arc/aa/8b/a6/8b89ecbbad6c6e0b2d6e8595822b14a6.html
Заголовок, (Title) документа по адресу, URL1:
Cache control instruction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)