[caching] 후기 입 및 연속 기입 캐싱?

내 이해는 두 방법의 주요 차이점은 “쓰기”방법에서는 데이터가 캐시를 통해 주 메모리에 즉시 기록되는 반면 “후기 입”에서는 데이터가 “지연 시간”에 기록된다는 것입니다.

우리는 여전히 “후기”에 메모리를 기다려야하므로 “기입”의 이점은 무엇입니까?



답변

주 메모리에 대한 연속 기입의 이점은 컴퓨터 시스템의 설계를 단순화한다는 것입니다. 연속 기입을 사용하면 주 메모리에 항상 최신 행 복사본이 있습니다. 따라서 읽기가 완료되면 주 메모리는 항상 요청 된 데이터로 응답 할 수 있습니다.

후기 입이 사용되는 경우 최신 데이터가 프로세서 캐시에 있고 때로는 주 메모리에 있습니다. 데이터가 프로세서 캐시에있는 경우 주 메모리에 오래된 데이터 복사본이있을 수 있으므로 해당 프로세서는 주 메모리가 읽기 요청에 응답하는 것을 중지해야합니다. 이것은 연속 기입보다 더 복잡합니다.

또한 Write-through는 수정 상태 가 필요하지 않기 때문에 캐시 일관성 프로토콜을 단순화 할 수 있습니다 . 수정 이 무효화 또는 라인을 축출하기 전에 캐시는 캐시 라인을 다시 작성해야한다는 국가 기록합니다. write-through에서 캐시 라인은 메모리에 이미 라인의 최신 사본이 있으므로 다시 쓰지 않고 항상 무효화 될 수 있습니다.

한 가지 더-메모리 매핑 된 I / O 레지스터에 쓰는 후기 입 아키텍처 소프트웨어에서는 쓰기가 캐시에서 즉시 전송되도록 추가 단계를 거쳐야합니다. 그렇지 않으면 다른 프로세서에서 라인을 읽거나 라인이 제거 될 때까지 코어 외부에서 쓰기가 표시되지 않습니다.


답변

예를 들어 이것을 살펴 보겠습니다. 직접 매핑 된 캐시가 있고 쓰기 정책이 사용된다고 가정합니다. 따라서 캐시 라인에 유효한 비트, 더티 비트, 태그 및 데이터 필드가 있습니다. 연산이 있다고 가정합니다 : write A (여기서 A는 캐시의 첫 번째 줄에 매핑 됨).

프로세서의 데이터 (A)가 캐시의 첫 번째 줄에 기록됩니다. 유효한 비트 및 태그 비트가 설정됩니다. 더티 비트는 1로 설정됩니다.

더티 비트는 단순히 캐시에 마지막으로 가져온 이후 기록 된 캐시 라인임을 나타냅니다!

이제 다른 작업이 수행되었다고 가정합니다. 읽기 E (E도 첫 번째 캐시 라인에 매핑 됨)

직접 매핑 된 캐시가 있으므로 첫 번째 줄은 메모리에서 가져올 E 블록으로 간단히 대체 할 수 있습니다. 그러나 라인에 마지막으로 기록 된 블록 (블록 A)이 아직 메모리 (더티 비트로 표시됨)에 기록되지 않았으므로 캐시 컨트롤러는 먼저 메모리에 다시 쓰기 를 실행하여 블록 A를 메모리로 전송 한 다음 메모리에 읽기 작업을 실행하여 라인을 블록 E로 대체합니다. 더티 비트는 이제 0으로 설정됩니다.

따라서 쓰기 정책은 블록이 메모리 및 관련 캐시 라인에서 동일하다는 것을 보장하지 않습니다. 그러나 라인이 교체 될 때마다 처음에 쓰기가 수행됩니다.

쓰기 정책은 그 반대입니다. 이에 따르면 메모리에는 항상 최신 데이터가 있습니다. 즉, 캐시 블록이 기록되면 그에 따라 메모리도 기록됩니다. (더티 비트 사용 안함)


답변

이 기사가 여기에 링크하는 데 도움이 될 수 있습니다 .

연속 기입 : 쓰기는 캐시와 백업 저장소 모두에 동 기적으로 수행됩니다.

Write-back (또는 Write-behind) : 쓰기는 캐시에만 수행됩니다. 수정 된 캐시 블록은 교체되기 직전에 저장소에 다시 기록됩니다.

Write-through : 데이터가 업데이트되면 캐시와 백엔드 스토리지 모두에 기록됩니다. 이 모드는 작동하기 쉽지만 캐시와 스토리지 모두에 데이터를 써야하기 때문에 데이터 쓰기 속도가 느립니다.

후기 입 : 데이터가 업데이트되면 캐시에만 기록됩니다. 수정 된 데이터는 캐시에서 데이터가 제거 된 경우에만 백엔드 스토리지에 기록됩니다. 이 모드는 데이터 쓰기 속도가 빠르지 만 업데이트 된 데이터가 스토리지에 기록되기 전에 정전이 발생하면 데이터가 손실됩니다.


답변

Write-back 및 write-through는 쓰기 적중이 발생할 때, 즉 캐시에 요청 된 정보가있을 때 정책을 설명 합니다. 이 예에서는 단일 프로세서가 캐시를 사용하여 주 메모리에 쓰고 있다고 가정합니다.

Write-through : 정보가 캐시와 메모리에 기록되고 둘 다 완료되면 쓰기가 완료됩니다. 이것은 구현이 더 간단하다는 장점이 있으며 주 메모리는 항상 캐시 (단일 프로세서의 경우-다른 장치가 주 메모리를 수정하는 경우이 정책이 충분하지 않음)와 일관되며 읽기 실패 주 메모리에 쓰지 않습니다. 명백한 단점은 모든 쓰기 적중이 두 번의 쓰기를 수행해야한다는 것입니다. 그 중 하나는 더 느린 주 메모리에 액세스합니다.

후기 입 : 정보가 캐시의 블록에 기록됩니다. 수정 된 캐시 블록은 교체 될 때만 메모리에 기록됩니다 (실제로는 지연 쓰기 ). 각 캐시 블록의 특수 비트 인 더티 비트 는 캐시 블록이 캐시에있는 동안 수정되었는지 여부를 표시합니다. 더티 비트가 설정되지 않은 경우 캐시 블록은 “깨끗한”상태가되고 쓰기 미스로 인해 블록을 메모리에 쓸 필요가 없습니다.

장점은 쓰기가 캐시 속도로 발생할 수 있으며 동일한 블록 내에서 쓰기를 수행하는 경우 주 메모리에 한 번만 쓰기 만하면된다는 것입니다 (이전 블록이 교체 될 때). 단점은이 프로토콜을 구현하기가 더 어렵고, 주 메모리가 캐시와 일치하지 않을 수 있으며 (동기화되지 않을 수 있으며) 교체로 이어지는 읽기로 인해 더티 블록이 주 메모리에 기록 될 수 있다는 것입니다.

쓰기 누락 에 대한 정책은 첫 번째 링크에 자세히 설명되어 있습니다.

이러한 프로토콜은 최신 프로세서에서 일반적으로 사용되는 것처럼 다중 프로세서 및 다중 캐시가있는 경우를 처리하지 않습니다. 이를 위해서는보다 복잡한 캐시 일관성 메커니즘이 필요합니다. 연속 기입 캐시는 캐시에 대한 쓰기가 메모리에 즉시 반영되므로 프로토콜이 더 간단합니다.

좋은 자원 :


답변

Write-Back은 더 복잡하고 복잡한 MOESI (Cache Coherence Protocol)가 필요하지만 시스템을 빠르고 효율적으로 만들기 때문에 그만한 가치가 있습니다.

Write-Through의 유일한 이점은 구현이 매우 간단하고 복잡한 캐시 일관성 프로토콜이 필요하지 않다는 것입니다.


답변