Jump to content

Загрязнение кэша

Загрязнение кэша описывает ситуации, когда выполняющаяся компьютерная программа без необходимости загружает данные в кэш ЦП . [1] тем самым вызывая вытеснение других полезных данных из кэша на более низкие уровни иерархии памяти , что снижает производительность. Например, в многоядерном процессоре одно ядро ​​может заменять блоки, извлеченные другими ядрами, в общий кэш, или предварительно выбранные блоки могут заменять блоки, извлеченные по требованию, из кэша.

Рассмотрим следующую иллюстрацию:

 T[0] = T[0] + 1;
 for i in 0..sizeof(CACHE)
   C[i] = C[i] + 1;
 T[0] = T[0] + C[sizeof(CACHE)-1];

(Здесь предполагается, что кэш состоит только из одного уровня, он разблокирован, политика замены псевдо-LRU , все данные кэшируются, заданная ассоциативность кэша равна N (где N > 1), и не более один регистр процессора доступен для хранения программных значений).

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

В этом случае говорят, что кэш «загрязнен». Изменение шаблона доступа к данным путем размещения первого обновления T[0] между циклом и вторым обновлением может устранить неэффективность:

 for i in 0..sizeof(CACHE)
   C[i] = C[i] + 1;
 T[0] = T[0] + 1;
 T[0] = T[0] + C[sizeof(CACHE)-1];

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

Примеры специализированных аппаратных инструкций включают «lvxl», предоставляемый PowerPC AltiVec . Эта инструкция загружает в регистр значение шириной 128 бит и помечает соответствующий блок кэша как «наименее недавно использовавшийся», т.е. как основного кандидата на вытеснение при необходимости исключить блок из его набора кэша. Чтобы правильно использовать эту инструкцию в контексте приведенного выше примера, элементы данных, на которые ссылается цикл, должны быть загружены с помощью этой инструкции. При такой реализации загрязнения кеша не произойдет, поскольку выполнение такого цикла не приведет к преждевременному вытеснению T[0] из кеша. Этого можно было бы избежать, поскольку по мере выполнения цикла адреса элементов в C будут отображаться в одном и том же способе кэширования, оставляя фактически более старые (но не помеченные как «наименее недавно использованные») данные нетронутыми в другом способе(ах). ). Из кэша будут удалены только самые старые данные (не относящиеся к приведенному примеру), членом которого не является T[0], поскольку его обновление происходит непосредственно перед началом цикла.

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

Растущая важность

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

Важность контроля за загрязнением кэша возрастает, поскольку штрафы, вызванные так называемой « стеной памяти », продолжают расти. Производители чипов продолжают изобретать новые приемы, позволяющие преодолеть постоянно растущую относительную задержку между памятью и процессором. Они делают это за счет увеличения размеров кэша и предоставления разработчикам программного обеспечения полезных способов контроля над тем, как данные поступают и остаются в ЦП. Контроль загрязнения кэша — одно из многочисленных устройств, доступных программисту (в основном встроенному). Однако используются и другие методы, большинство из которых являются запатентованными и в значительной степени зависят от аппаратного обеспечения и приложения.

  1. ^ Карами, Амин; Герреро-Сапата, Манель (7 апреля 2015 г.). «Метод замены кэша на основе ANFIS для смягчения атак на загрязнение кэша в сети именованных данных» . Компьютерные сети . 80 : 51–65. дои : 10.1016/j.comnet.2015.01.020 . hdl : 2117/76980 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d3da8872296f0dc2e5312a3ed6c9c1cc__1675039140
URL1:https://arc.ask3.ru/arc/aa/d3/cc/d3da8872296f0dc2e5312a3ed6c9c1cc.html
Заголовок, (Title) документа по адресу, URL1:
Cache pollution - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)