Буфер записи
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2019 г. ) |
Буфер записи — это тип буфера данных , который можно использовать для хранения данных, записываемых из кэша в основную память или в следующий кэш в иерархии памяти, чтобы повысить производительность и уменьшить задержку . Он используется в некоторых архитектурах кэша ЦП , таких как Intel x86 и AMD64. [1] В многоядерных системах буферы записи разрушают последовательную согласованность . Некоторые программные дисциплины, такие как в C11 , свобода от гонок данных [2] достаточны для восстановления последовательного и последовательного представления о памяти.
Вариант кэширования со сквозной записью называется буферизованной сквозной записью . [ нужна ссылка ]
Использование буфера записи таким образом освобождает кэш для обслуживания запросов на чтение во время записи. Это особенно полезно для очень медленной основной памяти, поскольку последующие операции чтения могут выполняться без длительной задержки в основной памяти. Когда буфер записи заполнен (т.е. все записи в буфере заняты), последующие записи все равно должны ждать, пока не освободятся слоты. Последующие операции чтения могут выполняться из буфера записи. Чтобы еще больше смягчить это торможение, можно реализовать одну оптимизацию, называемую слиянием буфера записи. Объединение буфера записи объединяет записи , имеющие последовательные адреса назначения, в одну запись буфера. В противном случае они заняли бы отдельные вводы, что увеличивает вероятность остановки трубопровода.
Буфер жертвы — это тип буфера записи, который хранит грязные вытесненные строки в обратной записи. кэшах [примечание 1] чтобы они были записаны обратно в основную память. Помимо уменьшения простоев конвейера за счет отсутствия ожидания обратной записи грязных строк, как это делает простой буфер записи, буфер жертвы может также служить временным хранилищем резервных копий, когда последующие обращения к кэшу демонстрируют локальность , запрашивая те недавно удаленные строки, которые все еще находятся в жертве. буфер.
Буфер хранилища был изобретен IBM во время проекта ACS между 1964 и 1968 годами. [3] но впервые он был реализован в коммерческих продуктах в 1990-х годах.
Примечания [ править ]
- ^ Кэши со сквозной записью не требуют записи вытесненных строк кэша, поскольку они записываются в основную память при записи в кэш.
Ссылки [ править ]
- ^ Оуэнс, Скотт, Сусмит Саркар и Питер Сьюэлл. «Лучшая модель памяти x86: x86-TSO». Доказательство теорем в логике высшего порядка. Springer Berlin Heidelberg, 2009. 391–407.
- ^ Оберхаузер, Йонас. «Упрощенная теорема редукции для x86-TSO». Проверенное программное обеспечение: теории, инструменты и эксперименты. Springer International Publishing, 2015. 142–164.
- ^ Кок, Джон (2007). «Поиск производительности научных процессоров» . Лекции на премию ACM Тьюринга . п. 1987. дои : 10.1145/1283920.1283945 . ISBN 978-1-4503-1049-9 .