stringtranslate.com

Буфер записи

Буфер записи — это тип буфера данных , который может использоваться для хранения данных, записываемых из кэша в основную память или в следующий кэш в иерархии памяти, для повышения производительности и сокращения задержек . Он используется в определенных архитектурах кэша ЦП , таких как x86 и AMD64 от Intel. [1] В многоядерных системах буферы записи разрушают последовательную согласованность . Некоторые программные дисциплины, такие как C11's data-race-freedom, [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 Turing Award . стр. 1987. doi :10.1145/1283920.1283945. ISBN 978-1-4503-1049-9.