Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Буфер записи — это тип буфера данных, который может использоваться для хранения данных, записываемых из кэша в основную память или в следующий уровень кэша в иерархии памяти, для повышения производительности и снижения задержки. Он используется в определенных архитектурах кэша процессоров, таких как Intel x86 и AMD64. В многоядерных системах буферы записи нарушают последовательную согласованность. Некоторые программные дисциплины, такие как обеспечение отсутствия гонок данных в C11, достаточны для восстановления последовательного представления памяти. Вариацией кэширования с записью является буферизированная запись. Использование буфера записи таким образом позволяет кэшу обслуживать запросы на чтение во время выполнения записи. Это особенно полезно для очень медленной основной памяти, поскольку последующие чтения могут выполняться без ожидания длительной задержки основной памяти. Когда буфер записи заполнен (то есть все ячейки буфера заняты), последующие записи должны ждать освобождения ячеек. Последующие чтения могут обслуживаться из буфера записи. Для дальнейшего снижения этой задержки может быть реализована оптимизация, называемая объединением буфера записи. Объединение буфера записи объединяет записи с последовательными адресами назначения в одну ячейку буфера. В противном случае они заняли бы отдельные ячейки, что увеличивает вероятность остановки конвейера. Буфер вытеснения — это тип буфера записи, который хранит "грязные" вытесненные строки в кэшах с обратной записью, чтобы они были записаны обратно в основную память. Помимо снижения остановки конвейера, не дожидаясь записи "грязных" строк, как это делает простой буфер записи, буфер вытеснения также может служить временным резервным хранилищем, когда последующие обращения к кэшу демонстрируют локальность, запрашивая те недавно вытесненные строки, которые все еще находятся в буфере вытеснения. Буфер хранения (store buffer) был изобретен IBM в рамках проекта ACS в период с 1964 по 1968 год, но впервые был реализован в коммерческих продуктах в 1990-х годах.
A write buffer is a type of data buffer that can be used to hold data being written from the cache to main memory or to the next cache in the memory hierarchy to improve performance and reduce latency. It is used in certain CPU cache architectures like Intel's x86 and AMD64. In multi core systems, write buffers destroy sequential consistency. Some software disciplines, like C11's data race freedom, are sufficient to regain a sequentially consistent view of memory. A variation of write through caching is called buffered write through. Use of a write buffer in this manner frees the cache to service read requests while the write is taking place. It is especially useful for very slow main memory in that subsequent reads are able to proceed without waiting for long main memory latency. When the write buffer is full (i. e. all buffer entries are occupied), subsequent writes still have to wait until slots are freed. Subsequent reads could be served from the write buffer. To further mitigate this stall, one optimization called write buffer merge may be implemented. Write buffer merge combines writes that have consecutive destination addresses into one buffer entry. Otherwise, they would occupy separate entries which increases the chance of pipeline stall. A victim buffer is a type of write buffer that stores dirty evicted lines in write back caches so that they get written back to main memory. Besides reducing pipeline stall by not waiting for dirty lines to write back as a simple write buffer does, a victim buffer may also serve as a temporary backup storage when subsequent cache accesses exhibit locality, requesting those recently evicted lines, which are still in the victim buffer. The store buffer was invented by IBM during Project ACS between 1964 and 1968, but it was first implemented in commercial products in the 1990s.