캐시 메모리(Cache Memory)

출처 : Computer Organization and Architecture 10th Edition
- 컴퓨터 시스템에서 사용되는 중요한 개념
- 프로세서와 주 기억장치(메인 메모리) 사이에 위치하여 데이터 및 명령어를 빠르게 액세스할 수 있도록 하는 고속 접근 기억장치
- 프로세서가 데이터를 메인 메모리에서 가져오는 시간을 절약하고, 전체 시스템의 성능을 향상시킬 수 있다.
- 작고 빠른 메모리로 구성되어 있으며, 주로 SRAM(Static Random Access Memory)을 사용한다.
- CPU와 메인 메모리 사이에 위치하며, CPU가 데이터나 명령어를 필요로 할 때 빠르게 액세스할 수 있도록 한다.
- 메인 메모리의 일부를 자주 사용되는 데이터나 명령어를 저장하는 용도로 사용된다.
❔ 유래
- 1960년대에 컴퓨터의 성능 향상을 위해 처음으로 도입됐다.
- 이전에는 CPU가 메인 메모리에 직접 접근하여 데이터를 가져오는 방식이 일반적이었으나, 이는 성능상의 한계로 이어지게 됐다.
- 캐시 메모리를 도입하여 CPU와 메인 메모리 사이의 속도 차이를 극복하고자 했다.
❔ 예시
- CPU가 특정 데이터를 요청했을 때 캐시에 해당 데이터가 이미 존재하는 경우, 즉 캐시 적중이 발생한 경우에는 CPU는 캐시에서 데이터를 빠르게 가져올 수 있다.
- 메인 메모리보다 캐시 메모리가 훨씬 빠르기 때문에 성능 향상을 가져온다.
- 반면에 캐시 미스가 발생하는 경우에는 해당 데이터를 메인 메모리에서 가져와야 하므로 속도가 느려지게 된다.
- 이러한 캐시 적중과 캐시 미스의 발생 여부에 따라 전체 시스템의 성능이 크게 달라질 수 있다.
❔ 작동 원리
1. Locality(지역성)
- 프로그램이 실행되는 동안 일반적으로 데이터나 명령어에는 지역성이 있다.
- 특정 데이터나 명령어가 빈번하게 사용되는 경향이 있다는 의미
2. 캐시 블록(블록)
- 메인 메모리의 데이터를 일정한 크기의 블록 단위로 저장한다.
- CPU가 메모리에서 데이터를 요청할 때, 해당 데이터와 함께 주변의 데이터도 함께 캐시에 미리 저장된다.
3. 캐시 적중(Cache Hit)과 캐시 미스(Cache Miss)
캐시 적중 (Cache Hit)
- CPU가 요청한 데이터나 명령어가 캐시 메모리에 이미 존재하는 상황을 의미한다.
- CPU가 데이터를 요청했을 때 해당 데이터가 캐시에 존재하여 메인 메모리에서 데이터를 가져오지 않고 캐시에서 바로 읽어올 수 있는 경우
- 주로 데이터나 명령어의 지역성(locality)에 의해 발생한다.
- 프로그램이 실행되는 동안 특정 데이터나 명령어에는 높은 지역성이 있어서 빈번하게 사용되는 경우가 있다.
- 해당 데이터나 명령어가 캐시에 존재할 확률이 높아지고, 캐시 적중이 발생하게 된다.
캐시 미스 (Cache Miss)
- CPU가 요청한 데이터나 명령어가 캐시 메모리에 존재하지 않는 상황을 의미한다.
- CPU가 데이터를 요청했을 때 해당 데이터가 캐시에 없어서 메인 메모리에서 데이터를 가져와야 하는 경우를 말한다.
- 주로 데이터나 명령어의 지역성(locality)이 아닌 새로운 데이터를 요청했을 때 발생한다.
- 캐시에 저장된 데이터가 요청한 데이터와 일치하지 않는 경우 또는 요청한 데이터가 캐시에 없는 경우에 발생한다.
영향력
- 캐시 적중이 발생하면 CPU는 데이터를 빠르게 가져와서 프로그램의 실행 속도를 향상시킬 수 있다.
- 캐시 미스가 발생하면 CPU는 데이터를 메인 메모리에서 가져와야 하므로 속도가 느려지게 된다. 이는 프로그램의 실행 속도에 영향을 줄 수 있다.
❕핵심 정리
캐시 지정 방법
- 캐시 메모리는 주로 지정된 캐시와 연관된 캐시 두 가지 방식으로 구성한다.
- 지정된 캐시에서는 메인 메모리의 특정 위치에 항상 특정 캐시 라인이 매핑된다.
- 연관된 캐시에서는 메인 메모리의 어떤 위치든 캐시 라인에 매핑될 수 있다.
캐시 교체 정책
- 캐시 메모리는 고정된 용량을 가지고 있기 때문에 새로운 데이터를 저장하려고 할 때 이미 캐시에 저장된 데이터 중 일부를 교체해야 한다.
- 이때 사용되는 교체 정책에는 최소 최근 사용(LRU), 최소 사용 횟수(LFU), 선입선출(FIFO) 등이 있다.
캐시 일관성
- 캐시 메모리는 메인 메모리와 동기화되어야 한다.
- 캐시 메모리에 저장된 데이터가 메인 메모리와 일치하지 않을 경우 데이터 불일치가 발생하고, 이는 예기치 않은 결과를 초래할 수 있다.
- 캐시 일관성을 유지하기 위해 캐시 일관성 프로토콜이 사용되며, 주로 캐시 코어 간의 데이터 공유를 관리한다.
캐시 메모리의 사이즈와 성능
- 캐시 메모리의 크기와 속도는 전체 시스템의 성능에 직접적인 영향을 미친다.
- 캐시 메모리의 사이즈가 클수록 더 많은 데이터를 저장할 수 있고, 캐시 메모리의 속도가 빠를수록 더 빠른 액세스 속도를 제공한다.
캐시 메모리는 현대 컴퓨터 아키텍처에서 매우 중요한 역할
캐시 메모리의 구조와 작동 원리를 이해하는 것은 컴퓨터 시스템의 성능 최적화에 필수적!
'CS' 카테고리의 다른 글
소프트웨어 개발 방법론(폭포수 모델, Agile 방법론) (0) | 2024.04.16 |
---|---|
시간 복잡도 (0) | 2024.04.15 |
OSI(Open Systems Interconnection) (0) | 2024.04.10 |
가비지 컬렉션(Garbage Collection) (0) | 2024.04.09 |
Call by Value vs. Call by Reference (0) | 2024.04.08 |