컴퓨터구조론#9
LeeMir, 10 May 2021
제5장 기억장치(이어서)
교체 알고리즘
- 세트 - 연관 사상에서 주기억장치로부터 새로운 블록이 캐시로 적재될 때, 만약 세트 내 모든 라인들이 다른 블록들로 채워져있다면, 그들 중의 하나를 선택하여 새로운 블록으로 교체
- 캐시 적중률을 극대화할 수 있도록 교체할 블록을 선택함
- LRU(Least Recently Used)
- FIFO
- LFU(Least Frequently Used)
쓰기 정책
- 캐시의 블록이 변경되었을 때 그 내용을 주기억장치에 갱신하는 시기와 방법의 결정
- 종류
- Write-through
- 모든 쓰기 동작들이 캐시로 뿐만 아니라 주기억장치로도 동시에 수행되는 방식
- 모든 쓰기 동작이 주기억장치 쓰기를 포함하고, 주기억장치 입출력 속도는 캐시에 비해 현저히 느리므로 시간이 많이 걸림
- Write-back
- 캐시에서 데이터가 Swap-out 될 때 주기억장치에 쓰는 방식
- 주기억장치에 대한 쓰기 동작의 횟수가 최소화되어 쓰기 시간이 짧아짐
- 캐시의 내용과 주기억장치의 내용이 서로 다를 수 있음
- 주기억장치에 써야하는지 여부를 알기 위해 캐시 내용이 수정된 적이 있는지 각 캐시 라인에 상태 비트 존재
- Write-through
- 다중프로세서시스템에서는 Write-through방식이든 Write-back방식이든 데이터 불일치 문제가 일어남
다중 캐시
- 온-칩 캐시(On-Chip Cache) : 액세스 시간을 단축시키기 위하여 CPU 칩 내에 포함시킨 캐시
- 계층적 캐시
- 온-칩 캐시를 1차 캐시(L1)로 사용하고, 칩 외부에 더 큰 용량의 2차 캐시(L2)를 설치하는 방식
- L2는 L1의 슈퍼-세트 : L2 용량 > L1 용량이면서, L1의 모든 내용이 L2에도 존재
- 먼저 L1을 검사하고, 만약 원하는 정보가 L1에 없다면 2를 검사
- 만약 그래도 없으면 주기억장치를 액세스
- L1은 속도가 빠르지만 용량이 작기 때문에 L2보다 적중률은 더 낮음
분리 캐시
- 캐시를 명령어 캐시와 데이터 캐시로 분리
- 명령어 인출 유니트와 실행 유니트 간의 캐시 액세스 충돌 제거
- 파이프라이닝에서, 명령어를 인출하는 부분이 있고 명령어를 실행하는 부분이 있다면 충돌할 수 있음
- 대부분의 고속 프로세서들에서 사용