-
Cache Flush, Cache Clean, Cache Invalidate컴퓨터지식/메모리 2024. 11. 9. 12:07
배경
일반적으로 CPU는 저장장치에서 데이터를 읽기 전에 캐시에 먼저 접근해서 찾아본 후 캐시에 없으면 저장장치에서 읽어 들이거나, 캐시에 있으면 캐시의 데이터를 읽어들이는 메커니즘이다.
하지만, 단순히 데이터를 읽어들이는 방식에서는 문제가 없지만, 데이터를 읽어들이고 수정할경우 write operation이 되면, CPU는 캐시의 값만 변경하게 된다. 이때, 저장공간과 캐시상의 데이터 일관성이 없어지기 때문에, 캐시의 일관성을 보장하기 위해 사용하는 메커니즘이다.
사실 폰 노이먼 구조에서는 중장처리장치가 모든 제어권을 관장하는 구조 이기 때문에 CPU만 캐시에 접근을 하면 데이터
구조적으로 캐시 불일치의 문제가 없지만, 중간중간 CPU의 제어권을 가져오는 DMA Controller가 있기 때문에, 캐시의 내용을 초기화, 업데이트 등의 작업을 해주지 않으면 데이터 불일치가 발생하게 된다.
이를 위해 캐시의 내용을 무효화, 저장, 초기화, 갱신 등의 작업이 필요한 Cache flush, clean, invalidate 등이 필요하다.
1. Cache flush, invalidate, clean 범위와 정의
구분 내용 Cache flush 캐시 내용을 주 메모리에 쓰지 않고 캐시 무효화 Cache clean 캐시 내용을 주 기억장치에 기록후 D, V bit clear Invalidate 캐시 flush 후 주 메모리의 내용을 캐시에 갱신 - Cache clean 에서의 Dirty bit, Valid bit 정책
D(Dirty) bit 0: Cache line과 Memory의 내용이 일치
1: Data 변경으로 인한 Cache-Memory 불일치V(Valid) bit 0: Data가 Memory에서 Cache로 Load 되지 않았음
1: Data가 Memory에서 Cache로 Load 됨더보기I 캐시(Instruction Cache)와 D 캐시(Data Cache)의 정의
- I 캐시:
I 캐시는 **명령어(Instruction)**를 저장하는 캐시. CPU가 실행할 프로그램의 명령어를 빠르게 접근할 수 있도록 저장해, 프로그램 실행의 속도를 높이며, 주로 명령어 페치 단계에서 사용 - D 캐시:
D 캐시는 **데이터(Data)**를 저장하는 캐시. 프로그램 실행 중 CPU가 처리하는 데이터 값을 빠르게 접근하도록 지원하며, 명령어 실행 단계에서 사용
I 캐시와 D 캐시의 주요 차이점
I 캐시 D 캐시
저장 내용 CPU가 실행할 명령어 CPU가 처리할 데이터 사용 시점 명령어 페치 단계에서 사용 명령어 실행 단계에서 사용 목적 프로그램 실행 속도를 높이기 위해 명령어 접근 최적화 데이터 읽기/쓰기 속도를 최적화 캐시 미스 시 명령어를 메모리에서 다시 읽어야 하므로 실행 지연 발생 필요한 데이터를 메모리에서 다시 가져와야 함, 성능 저하 I 캐시와 D 캐시의 동작 방식
- I 캐시 동작:
- CPU가 프로그램의 명령어를 페치할 때, I 캐시에서 먼저 확인.
- 캐시에 명령어가 존재하면(Cache Hit) 즉시 전달.
- 없을 경우(Cache Miss) 메모리에서 명령어를 로드 후 I 캐시에 저장.
- D 캐시 동작:
- CPU가 데이터에 접근할 때 D 캐시에서 먼저 확인.
- 데이터가 있으면 바로 사용(Cache Hit).
- 없을 경우(Cache Miss) 메모리에서 데이터를 가져와 캐시에 저장 후 사용.
2. 캐시 일관성을 위한 flush와 clean의 동작 예시
3. cache clean과 cache flush 상세 비교
구분 캐시 clean 캐시 flush 주 메모리 캐시 데이터로 교체 주 메모리 데이터 변경 없음 플래그 제어 D / V bit 둘다 clear V bit 만 clear 사용 용도 write-back에서 캐시 데이터 일관성 유지 DMA 이용시 캐시와 주 메모리간 데이터 일치 '컴퓨터지식 > 메모리' 카테고리의 다른 글
메모리 병목 현상 최소화 방안 (0) 2024.12.07 메모리 계층구조 및 캐시 메모리와 가상 메모리 비교 (0) 2024.10.27 메모리 계층에서 캐시 메모리의 개념 (0) 2024.10.19 메모리 계층 구조 (memory hierarchy) (0) 2024.06.30