인텔이나 AMD 등 모든 CPU 제조사의 CPU 스펙을 보면 캐시메모리 (Cache Memory) 용량이 항상 표시되어있다. CPU 캐시메모리가 무엇이고 왜 필요한지를 알아보고 관련된 용어를 알아보도록 하자.
목차
CPU 캐시메모리 = 컴퓨터의 저장공간
캐시메모리는 한마디로 말해 CPU에 들어있는 저장공간이다. 다른 어떤 역할을 하는 것이 아닌 그저 데이터를 저장하는 저장공간이 전부인 것이다. 그런데 CPU에 캐시메모리라는 저장공간이 왜 필요한가? 이것을 알기 위해 컴퓨터의 저장공간 개념에 대해 알아보자.
컴퓨터의 저장공간
- 하드디스크
- 메모리(RAM)
컴퓨터에서 우리가 보통 알고 있는 저장공간은 하드디스크와 메모리(RAM) 2가지이다. 우리는 보통 프로그램이나 파일 등을 하드디스크에 저장하여 보관한다. 당연한 얘기이지만 컴퓨터 전원을 끄더라도 하드디스크에 저장된 파일은 유지된다. 이게 불가능하였다면, 지금 컴퓨터의 모습은 생겨날 수 없었을 것이다. 하드디스크는 우리가 직접적으로 사용하고 가장 잘 알고 있는 저장공간이다.
보통 컴퓨터에서 메모리라고 부르는 것이 바로 RAM이다. 컴퓨터를 선택할때 가장 중요시하는 스펙중의 하나가 바로 이 메모리(RAM)이다. 이것도 역시나 단순히 저장공간에 불과하다. 메모리(Memory) 라는 단어 그대로 기억하는 역할을 하는 것이다. RAM이 하드디스크와 다른 것은 하드디스크보다 속도가 훨씬 빠르다는 것이다. 그래서 CPU는 RAM을 이용하여 작업을 한다.
CPU와 메모리(RAM)의 관계
컴퓨터에서 프로그램을 실행한다는 것은 CPU가 프로그램에서 정해진 명령어를 순서대로 실행을 하는 것과 같다. 프로그램은 결국 프로그래머가 만든 논리적이고 엄청나게 복잡하고 많은 수의 명령어를 모아놓은 것이다. CPU는 이 명령을 하나씩 실행해야 하는데 하드디스크에서 프로그램의 명령어를 읽어오기에는 하드디스크가 너무나도 느리다. CPU 속도는 하늘을 날라가는 비행기 정도라면, 하드디스크는 땅에서 자전거를 타고 이동하는 정도와 마찬가지이다. 하지만 메모리(RAM)은 CPU만큼 아니더라도 하드디스크보다 훨씬 빠른 속도를 가지고 있다. 하드디스크가 자전거라면 메모리는 자동차를 타고 달리는 정도라고 보면 되겠다. 그래서 컴퓨터에서는 프로그램을 메모리에 저장하고 CPU는 메모리에서 명령어를 읽어온다.
이처럼 CPU는 컴퓨터로 어떤 작업을 하기 위해 작업에 필요한 프로그램이나 파일을 모두 작업대에 올려놓는데 이 작업대 공간이 바로 메모리(RAM)이라고 보면 된다.
CPU와 메모리(RAM)의 속도 차이
위에서도 얘기했듯이 CPU와 메모리(RAM)에도 속도 차이가 크게 난다. 그래서 CPU가 아무리 빠르더라도 메모리의 느린속도로 인한 병목이 발생할 수 있다. CPU는 메모리에서 데이터를 가져와서 처리하는 역할을 하기 때문에 메모리의 속도가 느리면 CPU가 아무리 빨라도 메모리에서 병목이 걸려서 제 속도를 낼 수가 없는 것이다. 하지만 하드디스크보다는 훨씬 빠르기 때문에 CPU는 메모리를 메인 기억공간으로 사용하는 것이다.
하드디스크 – 메모리 – CPU 속도 체감
컴퓨터에서 하드디스크에 저장된 워드 문서를 연다고 생각해보자. 문서 파일을 클릭하여 열면 처음에 프로그램을 실행하고 해당 문서를 여는데 우리가 조금 기다려야 될 정도의 딜레이가 걸리는 것을 볼 수 있다. 이때가 바로 워드 프로그램과 워드 파일을 하드디스크에서 메모리로 가져오는 시간이 걸리는 것이다. 이렇게 메모리에 가져와서 워드 프로그램 실행이 완료되면 그 다음부터는 빠르게 프로그램을 사용할 수 있다. 이때는 메모리에 있는 프로그램과 워드파일을 가지고 CPU가 작업을 실행하기 때문에 우리가 느낄 수 있는 딜레이가 거의 없다.
가끔 프로그램을 너무 많이 실행시켜놔서 메모리가 부족한 경우 컴퓨터가 버벅대는 것을 볼 수 있는데, 이것이 바로 메모리 공간이 부족하기 때문에 일어나는 현상이다. 이렇게 하드디스크 – 메모리 – CPU 의 속도 차이는 우리가 컴퓨터를 사용하면서 경험하게 되는 것이다.
CPU 캐시메모리 목적 = 속도
CPU와 메모리(RAM)의 속도차이를 해결하기 위한 것이 바로 캐시메모리이다. CPU가 비행기, 메모리가 자동차정도의 속도라면 캐시메모리는 날으는 자동차라고 보면 되겠다. 캐시메모리는 메모리보다는 훨씬 빠른 속도를 가진다.
그래서 CPU와 메모리 사이에 위치해서 둘간의 속도차이로 인한 병목을 해결해주는 역할을 한다. 그 원리는 아주 간단하다. 자주 사용하는 데이터를 캐시메모리에 저장하여 두고 CPU는 RAM에서 데이터를 읽어오는 것이 아니라 캐시메모리에서 데이터를 읽어오는 것이다. 그러면 메모리에서 읽어오는 것보다도 훨씬 빠르게 데이터를 가져올 수가 있어서 컴퓨터의 전체적인 성능이 향상될 수 있는 것이다.
CPU 캐시 메모리의 성능
CPU 캐시메모리는 메모리(RAM)보다도 훨씬 작은 크기의 한정된 공간이기 때문에 모든 데이터를 저장할 수는 없다. 최대한 공간을 효율적으로 사용하여 자주 사용하는 데이터만 저장하는 것이 가장 좋다.
캐시 적중(Cache Hit)
CPU에서 필요한 데이터를 가져오는데 캐시메모리에 있어서 가져오는 것을 캐시 적중(Cache Hit) 라고 한다. 이 적중율이 높을수록 메모리까지 접근할 필요가 없으므로 처리 속도는 더 빨라지는 것이다. 만약 캐시 적중률이 0%에 가깝다면 오히려 캐시메모리가 없는 것이 더 효율적이게 되기 때문에 캐시 적중률을 높이는 것이 가장 중요하다고 볼 수 있다.
데이터 지역성(Data Locality)
캐시메모리에 무엇을 저장해야 캐시 적중률을 높일 수 있을지에 대한 해답이 바로 데이터 지역성의 원리이다. 컴퓨터에서 데이터는 시간, 공간, 순차적 지역성을 가지고 있다. 방금 사용한 데이터, 근처에 있는 데이터, 메모리에 저장된 명령어의 순서가 다음에 사용할 확률이 높다는 것이 바로 데이터의 지역성의 원리이다. 기본적으로 이 원리를 이용하여 CPU 캐시메모리에 명령어와 데이터를 저장한다. 이렇게 함으로써 캐시 적중률을 최대한 높일 수 있도록 하는 것이다.
캐시메모리 = SRAM
캐시메모리의 속도가 그렇게 빠르다면 메모리(RAM) 자체를 캐시메모리와 같은 걸로 만들면 되지 않느냐라는 생각을 하게 될 것이다. 물론 그렇게만 된다면 최상의 조건이 될 것이다. 하지만 캐시메모리는 일단 비싸고 크기도 메모리보다 크다.
일반메모리는 DRAM을 사용하지만 캐시메모리는 SRAM을 사용한다. DRAM와 SRAM은 원리가 조금 다르다. SRAM이 더 많은 트랜지스터가 필요하므로 크기도 커지고 가격도 비싼 것이다. 그래서 메인 메모리(RAM)은 가격이 싸고 대용량이 가능한 DRAM으로 만들고, 빠른 속도를 요구하는 캐시메모리는 SRAM을 이용하는 대신 용량이 작은 것이다.
CPU 캐시메모리 스펙 보기
CPU 캐시메모리는 CPU 안에 들어있다. 그래서 보통 CPU 제조사들이 공개한 CPU 스펙을 살펴보면 캐시메모리의 크기를 알 수 있다. 인텔과 AMD의 CPU 스펙을 살펴보고 캐시메모리의 크기를 직접 확인해보자.
인텔 CPU 캐시메모리 스펙
AMD CPU 캐시메모리 스펙
우리가 보통 알고있는 메인 메모리(RAM) 크기가 8GB, 16GB, 32GB 인 것에 비하면 매우 작다는 것을 알 수 있다.
정리해보면 CPU 캐시메모리는 CPU와 메모리 사이의 속도차이를 해결해주기위한 저장공간이며, 메모리보다 많게는 몇십배에서 몇백배 빠른 대신 가격이 배우 비싸고 크기도 큰 SRAM 을 사용한 저장공간이다. 데이터의 지역성을 활용하여 자주 사용하는 데이터를 캐시메모리에 저장하여 컴퓨터의 성능을 향상시키는 기술이다.