1. 캐시 메모리(Cache Memory)
CPU와 메모리 속도 차이로 인한 병목 현상을 줄이기 위해 사용한다.
- 병목 현상이란?
- 데이터의 집중적인 사용으로 인해, 전체 시스템에 영향을 미치는 부분의 사용 빈도가 능러나 성능이 저하 되면서 전체 시스템이 마비되는 현상을 말한다.
CPU가 메모리에 접근하는 횟수를 줄여 성능 향상
-> 자주 사용하는 데이터를 CPU와 가까운 cache memory에 저장 함으로써, 필요할 때마다 꺼내 쓸 수 있다.
보통 CPU에 chche memory가 2~3개 사용 된다. (L1, L2, L3 캐시 메모리)
L1, L2, L3 cache momory
- L1, L2, L3 순서대로 속도가 빠르다.
- L1, L2, L3 순서대로 참조에 먼저 사용 된다.
- L1: CPU 내부에 존재
- L2: CPU와 RAM 사이에 존재
- L3: 보통 메인보드에 존재
속도와 크기에 따라 분류한 것으로, 일반적으로 L1 캐시부터 먼저 사용된다. (CPU에서 가장 빠르게 접근하고, 여기서 데이터를 찾기 못하면 L2로 간다.)
듀얼 코어 프로세서의 캐시 메모리: 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장된다.
만약 L1 캐시가 128kb면, 64/64로 나누어 64kb에 명령어를 처리하기 직전의 명령어를 임시에 저장하고, 나머지 64kb에는 실행 후 명령어를 임시 저장한다.(명령어 세트로 구성, I-Cache - D-Cache)
<캐시 메모리 크기가 작은 이유는, SRAM가격이 매우 비싸기 때문>
디스크 캐시: 주 기억장치(RAM)와 보조기억장치(하드디스크)사이에 존재하는 캐시
2. 캐시 메모리 작동 원리
1) 시간 지역성(Temporal Locality)
for나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높다.
2) 공간 지역성(Spatial Locality)
A[0], A[1]과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시 후 또 사용될 가능성이 높다.
3) 순차적 지역성(Sequential Locality)
분기가 발생하지 않는 한, 메모리에 저장된 순서대로 인출/실행 된다.
캐시에 데이터를 저장할 때는, 이러한 참조 지역성(공간)을 최대한 활용하기 위해 해당 데이터뿐만 아니라. 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비한다.
CPU가 요청한 데이터가 캐시에 있으면 'Cache Hit', 없어서 DRAM에서 가져오면 'Cache Miss'
캐시 미스 3가지 경우
1) Cold miss
해당 메모리 주소를 처음 불러서 나는 미스
2) Conflict miss
캐시 메모리에 A 와 B데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스(direct mapped cache에서 많이 발생한다.)
항상 핸드폰과 열쇠를 오른쪽 주머니에 넣고 다니는데, 잠깐 친구가 준 물건을 받느라 손에 들고 있던 핸드폰을 가방에 넣었음. 그 이후 핸드폰을 찾으려 오른쪽 주머니에서 찾는데 없는 상황
3) Capacity miss
캐시 메모리의 공간이 부족해서 나는 미스
3. Cache Memory의 주소 저장 방식
1) Direct Mapping (직접 매핑)
- 메모리 주소, 캐시 순서를 일치 시킨다.
ex) 메모리가 1~ 100까지 있고, 캐시가 1~ 10까지 있다면 1~ 10까지의 메모리는 캐시 1에 위치, 11~ 20 까지의 메모리는 캐시 2의 위치한다. - 구현 간단
- 효율적 X
-> 캐시를 자주 교체 되는 상황 발생 - 적중률 낮음
2) Fully Associative Cache (연관 매핑)
- 비어있는 캐시 메모리가 있으면 마음대로 주소 저장(순서는 일치하지 않는다)
- 저장하는 방식은 간단
- 데이터 찾을때는 복잡 -> 시간이 오래 걸림
- 규칙이 없어서 특정 캐시 Set안에 있는 모든 블럭을 찾아 원하는 데이터가 있는지 검사
- 적중률 높음(필요한 캐시들 위주로 저장하기 때문)
3) Set Associative Cache (세트 연관 매핑)
- Direct + Fully 방식
-> 직접 매핑의 단순한 방법, 연관 매핑의 높은 적중률의 장점을 가짐 - 순서를 일치시키고 저장하되, 그룹(set)을 둬서 그 그룸 내에 저장
ex) 메모리가 1~ 100 까지 있고, 캐시가 1~ 10까지 있다면 캐시 1~ 5에는 메모리 1~ 50의 데이터를 무작위로 저장 - 세트 번호를 통해 영역을 탐색하므로, 연관 매핑의 병렬 탐색을 줄일 수 있음
- set안의 라인의 수에 따라 n-Way 연관 매핑이라고 함(그림은 2-way 연관 매핑)
참고:
'CS' 카테고리의 다른 글
패리티 비트 & 해밍 코드 (0) | 2023.03.12 |
---|---|
애자일(Agile) 방법론 (0) | 2023.03.09 |
CPU 작동 원리 (0) | 2023.03.02 |
컴퓨터의 구성 (0) | 2023.03.02 |
CI/CD 란? (0) | 2023.02.26 |