[Week1 - CSAPP] 1.5 - 캐시가 중요하다.

2025. 9. 8. 18:04CSAPP

이 단원은 1.4에서 간략하게 다룬 SRAM에 대해 자세히 다룬다.

 

SRAM은 CPU 내부에 존재하는 작은 메모리로, 캐시라는 형태로 자주 실행되는 인스트럭션들을 저장해둔다.

 

이 SRAM을 통해서 CPU에게 전달하는 과정은 DRAM의 100배에 가까운 속도를 낸다.

 

SRAM의 용량은 어떻게 볼까?

이건 필자의 CPU다

 

이런식으로 작업관리자를 통해 L1, L2, L3캐시의 총량이 SRAM의 용량이다.

 

위 사진의 경우 1 + 16 + 64 = 81MB가 이 컴퓨터의 SRAM 용량이 된다.

 

여기까진 여담이었고 이제 SRAM과 캐시에 대해 자세히 알아보자.

 

SRAM은 왜 존재하고, DRAM이랑 뭐가 다를까?

 

왜 SRAM은 이렇게 적은 MB 단위의 용량을 가졌을까?

 

오늘은 이에 대해 알아보자.

 

1. 캐시와 캐시 메모리는 뭘까?

1946년 폰 노이만은 메인 메모리(DRAM) 속도가 CPU의 클럭 속도를 따라잡지 못하면서

 

시스템 성능이 떨어지는 문제를 지적했다.

 

DRAM은 용량이 크다는 장점이 있지만, 속도가 항상 느리다는 단점이 있다.

 

CPU가 빠른 속도로 데이터를 처리하고 싶어도 메인 메모리가 이를 따라잡지 못하면 병목 현상이 생기는 것이다.

 

이 문제를 해결하기 위해 등장한 것이 바로 캐시캐시 메모리다.

  • 캐시: CPU가 단기간에 필요로 할 가능성이 높은, 자주 쓰는 데이터를 의미한다.
  • 캐시 메모리: 캐시 데이터를 임시로 저장하는 하드웨어다. 여기서는 큰 용량보다 속도가 매우 빠른 메모리가 요구된다.

이때 이런 조건을 충족하는 것이 바로 SRAM이다. CPU 내부의 작은 SRAM은 캐시 메모리로 사용되어, CPU와 느린 DRAM 사이에서 성능 병목을 줄이는 중요한 역할을 한다.


2. SRAM은 뭘까?

SRAM은 Static Random Access Memory의 약자로, 이름에서 알 수 있듯 정적인 메모리다.

 

DRAM과 달리 기록된 내용을 유지하기 위해 주기적인 재충전이 필요하지 않고, 전원이 공급되는 한 데이터를 그대로 유지한다.

 

이 때문에 DRAM보다 접근 속도가 훨씬 빠르며, 수백 GB/s 수준의 엄청난 속도를 낼 수 있다.

 

빠른 속도의 비결은 크게 세 가지다

  1. 리프레시 필요 없음 → 데이터 유지 과정에서 지연이 발생하지 않음.
  2. 트랜지스터만으로 구성 → 1비트당 6개의 트랜지스터만 사용, 단순한 회로로 빠른 읽기/쓰기 가능.
  3. 접근 방식이 단순 → DRAM처럼 커패시터 전하를 증폭할 필요 없이, 바로 트랜지스터 상태를 읽고 쓸 수 있음.

하지만 SRAM은 제작 비용이 매우 높아서 대용량으로 만들기 어렵다.

 

그래서 용량은 MB 단위로 제한되며,

 

이렇게 만든 빠른 메모리를 CPU가 자주 사용하는 데이터를 임시로 저장하는 캐시 메모리로 활용한다.

 

결국 CPU 내부의 작은 SRAM 캐시는,

 

속도는 빠르지만 용량이 작은 SRAM속도는 느리지만 용량이 큰 DRAM 사이에서 CPU 성능을 최적화하는 핵심 장치다.


3. 3가지 캐시

ns 단위의 매우 빠른 속도를 가진 캐시 메모리조차도, CPU가 가진 약 0.3 ns 수준의 속도를 완전히 따라잡을 수는 없다.

 

이처럼 CPU 속도가 너무 빠르기 때문에, 캐시는 작은 용량을 세 단계로 나누어 구성된다. 이를 L1, L2, L3 캐시라고 한다.

  • L1 캐시: 수백 KB ~ 1 MB 정도, 가장 빠른 속도
  • L2 캐시: 1 MB ~ 20 MB 정도, L1보다 느리지만 더 큰 용량
  • L3 캐시: 수 MB ~ 수십 MB 정도, 여러 코어가 공유하며 용량은 가장 크지만 속도는 가장 느림

즉, 숫자가 낮을수록(L1) 용량은 작지만 속도가 빠르고, 숫자가 높아질수록(L3) 용량은 커지지만 속도는 느려진다.

 

캐시는 중요한 인스트럭션과 데이터를 가장 빠른 캐시(L1)부터 순차적으로 배치하여,

 

CPU가 필요한 데이터를 최대한 빠르게 접근할 수 있도록 설계되어 있다.

 

여기서 L1캐시와 L2 캐시는 보통 코어 내부에 있고, SRAM을 사용하지만, 

 

L3캐시는 코어 근처에 있고, 대부분 SRAM을 사용하지만 일부 설계에서는 고속 메모리인eDRAM을 사용하는 경우도 있다.(요즘에는 거의 다 SRAM으로 대체중이다.)

 

이러한 캐시 메모리를 이해하는 응용 프로그래머는 캐시를 활용하여 자신의 프로그램 성능을 10배 이상 개선할 수 있다.

 

우리가 사용하는 컴퓨터의 성능은 이런 많은 과정들을 거쳐 발전해왔다.

 

우리의 컴퓨터의 성능은 그들의 노고와 창의력의 집합이다.

 

그들에게 감사하도록 하자.