캐시 메모리
캐시 메모리는 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리입니다.
캐시 메모리는 고속 기억 장치라고 불리며, 시간을 절약하기 위해 데이터를 임시로 저장할 수 있습니다.
CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킬 수 있습니다.
캐시 메모리의 작동 원리
- 시간 지역성 : 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높음
- 공간 지역성 : A[0], A[1]과 같은 연속 접근처럼 참조된 데이터 근처에 있는 데이터는 잠시 후 또 참조될 가능성이 높음
캐시 메모리에 데이터를 저장할 때는, 이러한 참조(공간) 지역성을 최대한 활용하기 위해 해당 데이터뿐만 아니라 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비합니다.
캐시가 효율적으로 동작하려면 캐시의 적중률(Hit-rate)를 극대화시켜야 합니다.
CPU가 요청한 데이터가 캐시에 있으면 'Cache Hit'이고 없다면 'Cache Miss'입니다.
캐시 미스의 경우에는 총 3가지가 있습니다.
- Compulsory Miss (Cold Miss) : 해당 메모리 주소를 처음 불러서 나는 미스
- Conflict Miss : 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스 (Direct Mapped Cache에서 많이 발생)
- Capacity Miss : 캐시 메모리의 공간이 부족해서 나는 미스
캐시 메모리의 매핑 프로세스
1. Direct Mapping
직접 매핑 방식은 주기억장치의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일 방식입니다.
메인 메모리에서 캐시 메모리에 데이터를 저장할 때 참조의 지역성으로 인해 한번에 인접한 곳까지 모두 저장하는데 이때의 단위를 블록(Block)이라고 합니다.
그리고 메인 메모리의 몇번째 블록인지 알려주는 태그(Tag)도 함께 저장합니다.
메모리 주소 중에 가장 뒷부분(빨간색 영역)은 블럭의 크기를 의미합니다.
아래의 그림을 보면 {00, 01, 10, 11}으로 현재 블럭의 크기는 4임을 알 수 있습니다.
그리고 이 영역을 통해 블럭의 몇 번째에 원하는 데이터가 있는지 알 수 있습니다.
캐시 메모리의 같은 라인에 위치하는 데이터는 파란색 영역을 통해 구별할 수 있습니다.
메모리의 첫번째 주소 00000과 다섯번째 주소 00100는 캐시 내에서 같은 위치에 자리하고 있는데 앞의 세자리 000과 001로 구별이 가능합니다.
직접 매핑을 사용하면 캐시에 저장된 데이터들은 메인 메모리에서와 동일한 배열을 가지도록 매핑됩니다.
이를 통해 매우 단순하고 탐색이 쉽다는 장점이 있지만 적중률(Hit-rate)가 낮다는 단점도 있습니다.
반복문을 사용할 때, 같은 라인의 00000을 불렀다가 그 후에 00100을 부른다면 캐시에 빈번하게 변경이 발생하기 때문입니다.
또한, 00000과 00100 주소의 데이터를 동시에 읽어야 하는 상황이 생기면 Conflict Miss가 발생합니다.
2. Fully-Associative Mapping
완전 연관 매핑 방식은 직접 매핑 방식의 단점을 보완하기 위해 등장하였는데 비어있는 캐시 메모리에 주소를 저장하는 방식입니다.
캐시에 저장된 데이터들은 메인 메모리의 순서와는 아무런 관련이 없기 때문에 데이터를 저장할 때는 매우 간단하지만 찾을 때는 캐시를 전부 뒤져서 태그가 같은 데이터가 있는지 확인해야 합니다.
따라서, 병렬 검사를 위해 복잡한 회로를 가지고 있다는 단점이 있지만 적중률이 높다는 장점이 있습니다.
3. Set-Associative Mapping
세트 연관 매핑 방식은 직접 매핑 방식의 단순한 회로와 완전 연관 매핑 방식의 적중률 두 개의 장점만을 취하기 위해서 만들어진 방식입니다. 이는 특정 행을 지정하고 그 행 안의 어떤 열이든 비어있을 때 저장하는 방식입니다.
각각의 라인들은 하나의 세트에 속해 있는데 세트 번호를 통해 영역을 탐색하기 때문에 완전 연관 매핑 방식의 병렬 탐색 시간을 줄일 수 있게 됩니다.
그리고 모든 라인에 무작위로 위치해있기 때문에 직접 매칭 방식의 단점도 보완되었습니다.
세트 안의 라인 수에 따라 n-way 연관 매핑이라고도 하는데 아래 그림은 2-way 연관 매핑입니다.
'CS 지식 > 컴퓨터구조' 카테고리의 다른 글
[CS] ARM과 MIPS (0) | 2023.08.12 |
---|---|
[CS] 패리티 비트와 해밍 코드 (0) | 2023.08.12 |
[CS] 고정 소수점과 부동 소수점 (0) | 2023.08.11 |
[CS] 컴퓨터의 구성 (0) | 2023.08.09 |