CPU와 주기억장치 간의 액세스 시간 차이를 완화
데이터 읽기 시, 해당 데이터가 적재
되어있는지 (캐시
에 있는지) 검사
⭕캐시 적중
(적재
되어 있다면) : 캐시
로부터 즉시 인출
❌캐시 미스
(캐시에 없다면) : 주기억장치
로부터 인출
🎯 캐시 적중률
캐시 적중 횟수 / 전체 액세스 횟수
❌ 미스율
1 - 캐시 적중률
⏲️ 평균 기억장치 액세스 시간
캐시 적중률 * 캐시 액세스 시간 + 미스율 * 주기억장치 액세스 시간
CPU가 주기억장치의 특정한 위치의 데이터/명령어를 집중적으로 액세스하는 현상
시간적 지역성
최근 액세스했던 데이터가 또 다시 액세스될 가능성이 높음
공간적 지역성
서로 인접하여 저장된 데이터들이 연속적으로 액세스될 확률이 높음
순차적 지역성 (공간적 지역성에 포함됨)
분기가 발생하지 않으면, 명령어들은 저장된 순서대로 인출됨
- 캐시 적중률의 극대화
- 캐시 액세스 시간의 최소화
- 캐시 실패에 따른 지연시간의 최소화
- 주기억장치와 캐시간의 데이터 일관성유지 및 그에 따른 오버헤드의 최소화
필요한 (CPU가 요구한) 데이터만 인출
앞으로 필요할 데이터를 예측하여 미리 인출
지역성
에 의해 캐시 적중률
을 높일 수 있다
📌블록
: 함께 인출되는 정보들의 그룹
주기억장치
를 캐시 라인 수
만큼의 블록
으로 나눈다.
선인출
시, 블록
전체를 하나의 캐시 라인
에 적재
태그
: 현재 캐시 라인
에 어느 블록
이 적재되어 있는지 가리키는 비트들
주기억장치의 블록이 지정된 어느 한 라인에만 적재
각 블록이 적재될 수 있는 라인이 정해져 있음
라인 필드
를 통해 캐시 라인을 선택
태그 필드
(블록) 일치한다면 적중
단어 필드
: 각 블록 내 단어들 구분
🌟 장점 : 구현이 간단하고 저렴
💀 단점 : 적재가 한정됨
주기억장치의 블록이 모든 라인에 적재 허용
캐시 라인의 태그
자체가 주기억장치의 블록
를 가리킴
🌟 장점 : 라인의 선택이 자유로워 지역성이 높다면 적중률이 높아진다
💀 단점 : 구현이 복잡하고 비용이 높다
직접 사상 방식
과 완전-연관 사상 방식
의 장점만을 취한 방식
세트
: 여러 개의 라인
으로 구성
캐시
을 여러 개의 세트
로 분할
세트 당 n개의 (일반적으로 2-way) 라인을 적재
캐시 내의 라인 수
= 세트 내의 라인 수
* 세트 수
직접 사상 : 캐시 내의 라인수
=세트 수
, 세트 내의 라인 수
=1
완전-연관 사상 : 캐시 내의 라인수
=세트 내의 라인 수
, 세트 수
=1
Least Recently Used
최소 최근 사용
First In First Out
선입선출
Least Frequently Used
최소 사용 빈도
캐시에 적재된 데이터가 수정되었을 때,
그 내용을 주기억장치에 갱신하는 시기와 방법을 결정하는 것.
캐시는 주기억장치의 복사본
주기억장치의 내용이 갱신된다면, 캐시의 내용 또한 갱신
이는 오랜 시간을 소모함
주기억장치를 항상 갱신하지 않음
캐시만 갱신하며, 해당 캐시 라인 교체 시, 주기억장치를 갱신
라인에 수정
상태를 표시하여 수정되었을 때만 갱신
CPU 칩 내부에 포함된 캐시
CPU 코어 하나 당 하나의 캐시메모리(L1)
를 내장
계층적으로 설치한 구조 (L1, L2, L3)
일반적으로 L1과 L2는 서로 다른 사상/교체/쓰기 를 사용
온-칩 캐시에 명령어 캐시 (L1-I)
와 데이터 캐시 (L2-D)
를 분리하여 저장하는 구조
김종현 저, 『컴퓨터구조론』, 생능출판, 2019.