광고


캐시 쓰기 정책 시스템



프로세서에서 메모리에 대한 읽기 요청 시에는 캐시로부터 그 데이터가 있는지를 확인하고, 데이터가 캐시에 존재하고 있다면 그 내용을 돌려주면 되었다. 하지만 프로세서에서 메모리에 대한 쓰기 작업을 요청알 경우에는, 우선 캐시에 저장되어 있는 내용을 변경해야 할 것이며 변경된 내용을 언젠가는 메인 메모리에 저장해 주어야 할 것이다. 이 때 언제 메인 메모리의 내용을 변경할 것인지를 결정하기 위하여 아래와 같은 두 가지 정책이 주로 사용 되어진다.

Write-Through 정책
프로세서에서 메모리에 쓰기 요청을 할 때마다 캐시의 내용과 메인 메모리의 내용을 같이 바꾸는 방식으로 이 방식은 구조가 단순하다는 장점을 가지고 있지만 데이터에 대한 스기 요청을 할 때마다 항상 메인 메모리에 접근해야 하므로 캐시에 의한 접근 시간의 개선이 없어지게 되며, 따라서 쓰기 시의 접근 시간은 주 메모리의 접근 시간과 같게 된다는 단점을 가지게 된다.

Write-Back 정책
이 방식은 CPU에서 메모리에 대한 쓰기 작업 요청 시 캐시에서만 쓰기 작업과 그 변경 사실을 확인할 수 있는 표시를 하여 놓은 후 캐시로부터 해당 블록의 내용이 제거될 때 그 블록을 메인 메모리에 복사함으로써 메인 메모리와 캐시의 내용을 동일하게 유지하는 방식이다.

이 방식은 동일한 블록 내에 여러 번 쓰기를 실행하는 경우 캐시에서만 여러 번 쓰기를 하고 메인 메모리에는 한 번만 쓰게 되므로 이 경우에 매우 효율적으로 동작하게 될 것이다.

최근 Pentium4 이후로 Wirte-Through 방식은 거의 사용되지 않는다.

참고로 데이터의 위치와 읽기 속도를 대략적으로 비교하면 다음과 같다. (단위 : cycle)

레지스터 : 1
L1 캐시 : 1~4
L2 캐시 : 10~20
물리 메모리 : 50~300 (특정 경우 2000)

출처 : Windows 구조와 원리 (OS를 관통하는 프로그래밍의 원리) - 정덕영 저 에서 부분 발췌

덧글

  • 컴과2학년 2016/12/19 18:15 # 삭제 답글

    글 읽어보고 질문드립니다!

    write-through 방식을 사용하여 데이터를 쓸 때,
    소요되는 시간을 메인 메모리 접근 시간만을 고려하는 이유를 알고 싶습니다.
    메인 메모리 접근 시간과 캐시 메모리 접근 시간을 모두 고려해야 되지 않나요?

    그리고 write-back 방식을 사용하여 데이터를 쓸 때
    소요되는 시간은 어떻게 계산하는지 알고 싶습니다!
댓글 입력 영역