stringtranslate.com

Буфер записи

Буфер записи — это тип буфера данных , который можно использовать для хранения данных , записываемых из кэша в основную память или в следующий кэш в иерархии памяти , чтобы повысить производительность и уменьшить задержку . Он используется в некоторых архитектурах кэша ЦП , таких как Intel x86 и AMD64. [1] В многоядерных системах буферы записи нарушают последовательную согласованность . Некоторых программных дисциплин, таких как свобода от гонок данных в C11 [2] , достаточно, чтобы восстановить последовательно согласованное представление о памяти.

Вариант кэширования со сквозной записью называется буферизованной сквозной записью . [ нужна цитата ]

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

Буфер жертвы — это тип буфера записи, который хранит «грязные» вытесненные строки в кэшах обратной записи [примечание 1] , чтобы они могли быть записаны обратно в основную память. Помимо уменьшения задержки конвейера за счет отсутствия ожидания обратной записи грязных строк, как это делает простой буфер записи, буфер жертвы может также служить временным хранилищем резервных копий, когда последующие обращения к кэшу демонстрируют локальность , запрашивая те недавно удаленные строки, которые все еще находятся в жертве. буфер.

Буфер хранилища был изобретен IBM во время проекта ACS между 1964 и 1968 годами [3] , но впервые он был реализован в коммерческих продуктах в 1990-х годах.

Примечания

  1. ^ Кэши со сквозной записью не требуют записи вытесненных строк кэша, поскольку они записываются в основную память при записи кэша.

Рекомендации

  1. ^ Оуэнс, Скотт, Сусмит Саркар и Питер Сьюэлл. «Лучшая модель памяти x86: x86-TSO». Доказательство теорем в логике высшего порядка. Springer Berlin Heidelberg, 2009. 391–407.
  2. ^ Оберхаузер, Йонас. «Упрощенная теорема редукции для x86-TSO». Проверенное программное обеспечение: теории, инструменты и эксперименты. Springer International Publishing, 2015. 142–164.
  3. ^ Кок, Джон (2007). «В поисках производительности научных процессоров». Лекции на премию ACM Тьюринга . п. 1987. дои : 10.1145/1283920.1283945. ISBN 978-1-4503-1049-9.