메모리 계층구조

- 피라미드 위로 올라갈 수록 비용이 높아지지만 속도는 향상되고 접근 시간이 짧아짐
캐시 메모리
- 운영체제에게 보이지 않고 하드웨어적으로 처리됨
- 메모리 접근 속도를 향상시킴
- 참조지역성의 원리를 이용함
캐싱(중요)
- 빠른 저장 장치에 정보를 복사해 놓는 기법
- 고속의 메모리에 최근에 접근한 데이터를 저장
- 캐싱은 메모리 계층 구조에 또 다른 레벨을 도입하는데, 하나 이상의 레벨에 동시에 저장된 데이터 사이에 내용이 일치해야함
참조 지역성(중요)
- 참조 지역성이란 프로그램 실행 중 CPU가 특정 메모리 주소를 집중적으로 접근(시간적 혹은 공간적으로)하는 경향을 의미
- 순차문이나 반복문을 생각해보면, 순차문 10개의 코드를 가져온다고 가정하면 순차문이기 때문에 10번동안은 캐시를 갱신할 필요가 없다. 반복문도 마찬가지로 계속 반복하기 때문에 반복하는 동안에는 캐시를 갱신할 필요가 없다고 할 수 있다.
캐시 원칙
- 주 메모리(Main Memory)의 한 영역의 복사본을 가지고 있음.
- CPU(처리기)는 먼저 캐시를 참조하고, 캐시에 없으면 필요한 정보가 저장된 메인 메모리의 블록이 캐시로 읽혀짐
- 참조 지역성 때문에 향후 참조될 데이터는 캐시에 존재할 가능성이 높음
ex) 반복문, 데이터에서의 테이블 혹은 배열
- 캐시는 보통 여러 단계의 캐시로 이루어져 있음
- 쓰기 정책
어느 시점에 메모리에 쓸 것인가를 결정
블록이 갱신될 때 쓰거나 블록이 교체될 때 쓸 수 있음

캐시 적중률
- 적중률은 메모리 접근 중 데이터가 빠른 메모리(예, 캐시메모리)에 존재할 비율로 정의된다.
- 이를 통해 평균 메모리 접근 시간을 알 수 있는데 T1이 캐시 메모리 접근시간, T2가 메인 메모리 접근 시간이라고 가정하고 적중률이 95%(0.95)라면 수식은 T1에 적중할 확률 + T1에 적중하지 않고 T2에 적중할 확률 즉, (T1 X 0.95)+(T2 X 0.05)가 된다.
캐시 읽기 연산의 과정
- CPU로부터 실제 주소를 받음
- 캐시에 실제 주소를 포함한 블록이 있는지 확인
- 블록이 존재하면 바로 실제주소를 읽어 CPU에 전달하지만, 없으면 메인 메모리의 실제주소 블록에 접근
- 메인 메모리의 실제 주소 블록을 할당할 캐시 공간 확보
- 캐시에 실제 주소 블록을 저장하면서, CPU에 실제 주소 전달