CPU 구조를 공부하다 보면 “캐시(Cache)”라는 개념이 정말 중요하게 나온다. 처음에는 그냥 속도를 조금 더 빠르게 만드는 보조 메모리 정도로만 생각했었다. 그런데 파이프라인, 분기 예측, Out-of-Order Execution 같은 구조들을 하나씩 이해하고 나니까 결국 CPU가 가장 싫어하는 건 “기다리는 시간”이라는 걸 알게 됐다. 그리고 그 기다림을 가장 크게 만드는 원인 중 하나가 바로 Cache Miss였다.
나도 예전에는 CPU 성능이 높으면 모든 작업이 그냥 빠르게 돌아가는 줄 알았다. 그런데 실제로는 CPU가 아무리 빨라도 필요한 데이터를 제때 가져오지 못하면 내부에서 계속 멈추고 기다리는 상황이 발생할 수 있다는 걸 알고 꽤 충격이었다. 특히 최신 CPU일수록 계산 속도는 엄청 빨라졌는데, RAM 속도는 그만큼 따라오지 못하면서 이 차이가 훨씬 더 중요해졌다고 한다.

CPU는 생각보다 RAM을 기다리는 시간이 많다
CPU는 굉장히 빠른 속도로 명령어를 처리한다. 그런데 문제는 CPU가 계산만 하는 장치가 아니라는 점이다. 실제로는 계속 데이터를 읽고 가져오면서 작업을 진행해야 한다. 예를 들어 어떤 숫자를 계산하려면 먼저 메모리에서 해당 데이터를 읽어와야 한다.
문제는 여기서 발생한다. CPU 속도와 RAM 속도 차이가 생각보다 엄청 크다는 점이다. 처음에는 RAM도 충분히 빠른 줄 알았는데, CPU 입장에서는 RAM조차 꽤 느린 저장장치에 가까웠다.
그래서 CPU는 매번 RAM까지 직접 가지 않기 위해 중간에 더 빠른 작은 메모리를 두는데, 이게 바로 CPU Cache다. 자주 사용하는 데이터를 미리 저장해두고 최대한 빠르게 가져오기 위한 공간인 것이다.
나도 예전에 게임이나 영상 편집 프로그램을 사용할 때 CPU 사용률은 그렇게 높지 않은데도 순간적으로 끊기는 느낌을 받은 적이 있었다. 처음에는 GPU 문제인 줄 알았는데, 나중에 보니까 메모리 접근 지연이나 캐시 효율도 성능에 꽤 영향을 준다는 걸 알게 됐다.
그 이후로는 컴퓨터 성능이라는 게 단순히 “CPU 숫자”만으로 설명되지 않는다는 걸 조금씩 느끼게 됐다.
Cache Hit와 Cache Miss 차이가 엄청 크다
CPU가 필요한 데이터를 캐시에서 바로 찾으면 Cache Hit라고 한다. 반대로 캐시에 없어서 RAM까지 직접 가야 하는 상황을 Cache Miss라고 부른다.
문제는 이 속도 차이가 생각보다 엄청 크다는 점이다. Cache Hit 상황에서는 CPU가 거의 즉시 데이터를 가져올 수 있다. 하지만 Cache Miss가 발생하면 RAM 접근을 기다려야 하고, 그동안 CPU 파이프라인 일부가 멈추거나 대기 상태가 될 수 있다.
나도 처음에는 “데이터 조금 늦게 가져오는 게 그렇게 큰 문제인가?” 싶었는데, CPU는 워낙 빠르게 움직이다 보니까 아주 짧은 대기조차 누적되면 성능 차이가 크게 벌어진다고 한다.
특히 반복문이나 대량 데이터 처리에서는 캐시 효율 차이가 엄청 중요하다. 예를 들어 데이터가 메모리 여기저기에 흩어져 있으면 Cache Miss가 계속 발생할 가능성이 높아진다. 반대로 데이터가 연속적으로 잘 정리되어 있으면 캐시 효율이 좋아진다.
예전에 프로그래밍 관련 최적화 글을 보다가 “알고리즘 자체보다 메모리 접근 방식 때문에 성능 차이가 더 커지는 경우도 있다”는 내용을 본 적이 있었는데, 그때 캐시 구조가 왜 그렇게 중요한지 조금 이해가 됐다.
그래서 최신 CPU는 캐시 구조에 엄청 집착한다
처음 CPU를 볼 때는 코어 수나 클럭 속도만 중요해 보였는데, 실제로는 캐시 구조도 굉장히 중요하다. 그래서 최신 CPU들은:
- L1 Cache
- L2 Cache
- L3 Cache
같이 여러 단계의 캐시를 사용한다.
L1은 가장 빠르지만 용량이 작고, L3는 상대적으로 느리지만 더 많은 데이터를 저장할 수 있다. CPU는 최대한 가까운 캐시에서 데이터를 찾으려고 계속 시도한다.
나도 예전에는 CPU 스펙표에서 캐시 용량은 그냥 숫자 하나 정도로만 봤는데, 지금은 왜 그 수치가 중요한지도 조금 이해하게 됐다. 결국 CPU는 계산 자체보다 데이터를 기다리는 시간이 훨씬 큰 문제가 될 수 있기 때문이다.
특히 현대 CPU 구조는 파이프라인, 분기 예측, Out-of-Order Execution 같은 기술들로 최대한 쉬지 않고 계산하려고 하는데, Cache Miss가 발생하면 그 흐름 자체가 끊길 수 있다.
이걸 공부하면서 느낀 건 CPU 성능은 단순히 “얼마나 빨리 계산하느냐”보다 “얼마나 기다리지 않고 계속 움직일 수 있느냐”가 훨씬 중요한 문제라는 점이었다.
한 줄로 정리하면 Cache Miss는 CPU가 필요한 데이터를 캐시에서 찾지 못해 느린 RAM 접근을 기다리는 상황이며, 이 대기 시간이 CPU 전체 성능을 크게 떨어뜨리는 원인이 된다.