쓰기 버퍼

Write buffer

쓰기 버퍼는 캐시에서 메인 메모리 또는 메모리 계층 내의 다음 캐시에 쓰기 중인 데이터를 유지하기 위해 사용할 수 있는 데이터 버퍼의 일종입니다.인텔의 x86이나 AMD64와 [1]같은 특정 CPU 캐시 아키텍처에서 사용됩니다.멀티코어 시스템에서는 쓰기 버퍼에 의해 시퀀스의 일관성이 없어집니다.C11의 데이터 레이스 프리덤과 [2]같은 일부 소프트웨어 분야에서는 메모리를 순차적으로 일관되게 표시하기에 충분합니다.

라이트 스루 캐시의 변형은 버퍼링된 라이트 [citation needed]스루라고 불립니다.

이 방법으로 쓰기 버퍼를 사용하면 쓰기 실행 중에 캐시가 읽기 요청을 처리할 수 있습니다.특히 메인 메모리의 지연 시간이 길어질 때까지 기다리지 않고 후속 읽기를 진행할 수 있다는 점에서 매우 느린 메인 메모리에 유용합니다.기입 버퍼가 가득 찬 경우(즉, 모든 버퍼 엔트리가 점유되어 있는 경우), 후속 기입은 슬롯이 해방될 때까지 대기해야 합니다.이후 읽기는 쓰기 버퍼에서 처리할 수 있습니다.이 스톨을 한층 더 완화하기 위해서, 기입 버퍼 머지라고 불리는 최적화를 실장할 수 있습니다.쓰기 버퍼 병합은 연속된 수신처 주소를 가진 쓰기를 하나의 버퍼 엔트리에 결합합니다.그렇지 않으면 개별 엔트리를 점유하여 파이프라인 정지 가능성이 높아집니다.

공격 대상 버퍼는 제거된 더티 행을 라이트백캐시[note 1] 저장하여 메인메모리에 다시 쓸 수 있도록 하는 쓰기 버퍼의 일종입니다.단순한 쓰기 버퍼와 같이 더티 라인이 다시 쓰기를 기다리지 않음으로써 파이프라인 스톨을 줄일 수 있을 뿐만 아니라, 피해자 버퍼는 후속 캐시 액세스가 인접성을 나타낼 때 임시 백업 스토리지로서도 기능하며, 여전히 피해자 버퍼 내에 있는 최근 제거된 라인을 요구할 수 있습니다.

스토어 버퍼는 1964년부터 1968년 [3]사이의 프로젝트 ACS에서 IBM에 의해 발명되었지만 1990년대에 상업용 제품에 처음 구현되었습니다.

메모들

  1. ^ Write-Through 캐시는 캐시를 쓸 때 제거된 캐시 행을 메인 메모리에 쓸 필요가 없습니다.


  1. ^ 오웬스, 스콧, 서밋 사르카, 피터 시웰입니다"더 나은 x86 메모리 모델: x86-TSO." 고차 논리학의 정리 증명.스프링거 베를린 하이델베르크, 2009. 391-407.
  2. ^ 오버하우저, 조나스"x86-TSO의 보다 심플한 환원 정리." 검증된 소프트웨어:이론, 도구 및 실험입니다.Springer International Publishing, 2015. 142-164
  3. ^ Cocke, John (2007). "The search for performance in scientific processors". ACM Turing Award Lectures. p. 1987. doi:10.1145/1283920.1283945. ISBN 978-1-4503-1049-9.