초안 : 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
지금까지는 내용은 모두 메모리를 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
- 컴퓨터 구조의 핵심, 퍼플, 양희재
'Computer Architecture > Basic' 카테고리의 다른 글
입출력작업 - programmed i/o, interrupt driven i/o, DMA (0) | 2023.04.19 |
---|---|
캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2 (0) | 2023.04.12 |
캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1 (0) | 2023.04.11 |
캐시 메모리(Cache Memory)의 원리 (0) | 2023.04.10 |
Logical Address 와 Physical Address (0) | 2023.04.09 |
댓글