본문 바로가기
Computer Architecture/Basic

캐시 메모리(Cache Memory)의 쓰기 동작

by FastBench 2023. 4. 12.

초안 :  2023.04.12

 

2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리

2023.04.11 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1

2023.04.12 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2

 

Intel Lynnfield Architecture

지금까지는 내용은 모두 메모리를 read 할 때 캐시가 어떻게 동작하는지에 관한 것이었다.

 

프로세서는 메인 메모리에 값을 저장하려고 할 때, 캐시메모리에도 저장하고 메인 메모리에도 기록한다. 

그런데 결과 값을 저장할 때마다 캐시와 메인 메모리 모두에 저장을 한다면, 메인 메모리의 늦은 access 시간 때문에 쓰기 속도가 느릴 수 밖에 없다.

이를 회피하기 위해 결과값을 캐시 메모리에만 기록하고 나중에 필요할 때 메인 메모리로 기록하는 방법이 적용된다.

 

int s = 0;
for (int i = 0; i<100; i++)
	s = s+i;

위 코드에서 s 와 i 는 메인메모리에 위치해야 하는 변수이다. 하지만 100번의 반복동안 매번 메인 메모리의 access 가 일어난다면 지연시간이 엄청날 것이다.

이렇게 결과 값을 기록할 때마다 캐시 메모리와 메인 메모리에 동시에 기록하는 방식을 write-through 라고 한다.

쓰는 속도는 느리지만, 언제나 캐시 메모리와 메인 메모리의 내용이 일치한다는 점에서 안정적이다. (cache consistency)

 

반면 반복문의 실행 동안 캐시 메모리의 i 와 s 값만 바꾸어 기록하고, 반복문이 끝난후에 최종적인 i와 s 값을 메인메모리에 기록하면 성능을 끌어올릴 수 있다.

이렇게 결과 값을 기록할 때 일단 캐시 메모리에만 기록하고 나중에 특정 시점에 메인 메모리에 기록하는 방식을 write-back 이라고 한다. 쓰기속도는 빠르지만 캐시 메모리의 내용과 메인 메모리의 내용이 잠시 불일치할 수 있다는 점에서 위험할 수 있다. (cache inconsistency)

 

 

대부분 write-back 방식의 캐시 메모리를 사용하나, 일부는 wirte-through 방식을 사용하기도 한다.

하지만 프로그램 실행 시 대부분의 작업은 메모리로부터의 read 동작이기 때문에 엄청 심각한 속도 저하는 없다고 볼 수 있다.

 

 

Reference

  • 컴퓨터 구조의 핵심, 퍼플, 양희재

댓글