쓰기 버퍼

쓰기 버퍼(write buffer, 라이트 버퍼)는 CPU 캐시에서 주기억장치 또는 메모리 계층 구조의 다음 캐시로 기록되는 자료를 보유하는 데 사용될 수 있는 데이터 버퍼의 한 유형으로, 성능을 향상시키고 레이턴시를 줄인다. 인텔의 x86 및 AMD64와 같은 특정 CPU 캐시 아키텍처에서 사용된다.Owens, Scott, Susmit Sarkar, and Peter Sewell. "A better x86 memory model: x86-TSO." Theorem Proving in Higher Order Logics. Springer Berlin Heidelberg, 2009. 391-407. 다중 코어 시스템에서 쓰기 버퍼는 순차 일관성을 파괴한다. C11의 데이터 경쟁 없음과 같은 일부 소프트웨어 규율은 메모리의 순차적 일관된 보기를 다시 얻기에 충분하다.Oberhauser, Jonas. "A Simpler Reduction Theorem for x86-TSO." Verified Software: Theories, Tools, and Experiments. Springer International Publishing, 2015. 142-164

쓰루 라이트 캐싱의 변형은 버퍼드 쓰루 라이트라고 불린다.

이러한 방식으로 쓰기 버퍼를 사용하면 쓰기가 진행되는 동안 캐시가 읽기 요청을 처리할 수 있다. 이는 매우 느린 주기억장치에 특히 유용하며, 후속 읽기가 긴 주기억장치 레이턴시를 기다리지 않고 진행될 수 있게 한다. 쓰기 버퍼가 가득 차면(즉, 모든 버퍼 항목이 점유되면) 후속 쓰기는 슬롯이 비워질 때까지 기다려야 한다. 후속 읽기는 쓰기 버퍼에서 처리될 수 있다. 이러한 지연을 더욱 완화하기 위해 쓰기 버퍼 병합이라는 최적화가 구현될 수 있다. 쓰기 버퍼 병합은 연속된 대상 주소를 가진 쓰기를 하나의 버퍼 항목으로 결합한다. 그렇지 않으면 별도의 항목을 차지하여 파이프라인 지연의 가능성을 높인다.

피해 버퍼는 라이트백 캐시에서 더티하게 제거된 라인을 저장하는 쓰기 버퍼의 한 유형으로쓰루 라이트 캐시는 캐시가 쓰여질 때 주기억장치에 쓰여지므로 제거된 캐시 라인을 쓸 필요가 없다. 주기억장치에 다시 기록되도록 한다. 단순 쓰기 버퍼처럼 더티 라인이 다시 쓰여질 때까지 기다리지 않아 파이프라인 지연을 줄이는 것 외에도, 피해 버퍼는 후속 캐시 접근이 국부성을 보일 때 임시 백업 저장소 역할을 할 수 있으며, 이는 최근에 제거되었지만 여전히 피해 버퍼에 있는 라인을 요청한다.

저장 버퍼는 1964년에서 1968년 사이에 IBM이 프로젝트 ACS 도중 발명했지만, 상업 제품에는 1990년대에 처음 구현되었다.

참고

 각주 

분류:컴퓨터 메모리