본문 바로가기

Computer Science/Computer Architecture

[Computer Architecture] Cache Memory 개요

+ 한국항공대학교 길현영 교수님의 컴퓨터구조론 과목 내용을 정리한 글입니다.

Cache 개요

캐시(Cache)의 의미

CPU와 메모리 사이의 속도 차이를 줄이기 위한 고속 메모리이다.
 
높은 비용으로 인해 작은 용량으로 구성되며, 컴퓨터 성능에 영향을 미친다.
 
프로그래머는 캐시 메모리를 조작할 수 있는 명령어가 없다. (투명성)

적중(Hit)과 실패(Miss)

적중: 원하는 항목(데이터)이 캐시 메모리에 있음
실패: 원하는 항목(데이터)이 캐시 메모리에 없음
 
적중률: 메모리 참조에 대한 캐시 성능
= 캐시 메모리의 적중 횟수 ÷ 전체 메모리의 참조 횟수
 
실패율 = 1 - 적중률

적중과 실패에 따른 동작

 

DRAM - Main Memory, SRAM - Cache Memory (참고)


캐시의 Tag Memory

캐시는 데이터 메모리태그 메모리 총 2개의 메모리를 갖고 있다.
 
Tag ( = Meta Data): 실제 해당 데이터는 아니지만, 데이터에 관한 간략한 정보를 갖고 있는 데이터
(누가, 언제, 크기, 형식 등)
 
캐시는 메모리보다 작으므로, 각 캐시 엔트리에는 메모리 내 여러 주소값 블록들이 적재되어있다.
(캐시의 데이터 메모리는 메인 메모리의 복사본을 갖고 있다.)
 
CPU가 캐시에 데이터를 요청했을 때, 캐시가 유효한 데이터를 갖고 있는지 Tag를 통해 탐색한다. (블록 탐색)
- 메모리의 주소를 확인할 수 있다.
 
+ 주로 캐시 메모리의 용량은 데이터 메모리 용량만을 의미한다.
 
각 엔트리는 캐시의 데이터 메모리의 블록과 대응한다. 
- 블록: 워드의 집합. 데이터 메모리 내 기본 단위이자 캐시와 메모리 사이의 데이터 전송 기본 단위
 

블록 탐색을 위해 필요한 요소

1. 태그: CPU가 요청한 블록을 탐색하는 데 사용하는 주소 정보의 일부이다.
- 캐시 블록 주소에서 인덱스로 사용되지 않는 주소의 윗 부분 (Mapping)
+ 지역성을 위해 아랫부분을 태그로 사용한다.
 
2. 유효 비트: 캐시 블록이 유효한 데이터인지 아닌지를 표시하는 비트이다.
- 컴퓨터가 부팅될 때 모든 유효 비트를 무효(0)로 초기화한다. (지우는 것이 더 오래걸리므로 덮어쓴다.)
 
3. 갱신 비트: 메모리에서 캐시로 블록을 가져온 후 CPU가 블록을 수정했는지 표시하는 비트이다.
+ 수정된 캐시 메모리의 데이터를 하위 메모리에 전딜하기 위해서 사용한다.
 
4. 비교기: CPU 주소와 태그를 비교한다.


캐시의 기본 동작

 


캐시에 필요한 전략(Policy)과 설계 논점

1. 캐시 메모리의 용량블록 크기
 
2. 블록 사상 방식 (Mapping): 캐시 블록과 메모리 블록을 대응시키는 방식
- 메인 메모리에서 가져온 블록을 캐시 메모리 어디에 둘까?
ex) 직접 사상, 완전 연관 사상, 집합 연관 사상
 
3. 블록 교체 방식 (Replacement)
- 캐시 Miss로 인해 메인 모리에서 새로운 블록을 갖고 왔는데, 캐시 내 빈 곳이 없을 때, 어떤 것을 교체할까?
ex) 무작위(Random), 선입 선출(FIFO), 최소 최근 사용(LRU)
 
4. 블록 갱신 방식 (Writing): 캐시 데이터가 수정되었을 때, 대응하는 메모리의 데이터에 대한 갱신 시점을 결정하는 방식
ex) 즉시 쓰기, 나중 쓰기
 
+ 캐시 메모리는 속도가 우선이므로 대부분 하드웨어로 구현한다.