메모리와 캐시 메모리

2024. 5. 17. 14:00CS/컴퓨터구조

RAM의 특징과 종류

주기억장치의 종류에는 RAM과 ROM이 있다. 그 중 1차 메모리로 대부분 지칭하는 RAM에 대해 정리하자.

RAM의 특징은 휘발성 저장 장치라는 점이다. 즉, 전원이 꺼지면 RAM에 저장된 명령어와 데이터가 날아간다.

반면에 HDD, SSD, CD-ROM, USB 메모리 같은 보조기억장치는 비휘발성 저장 장치이다.

이 특징을 이용해서 보조기억장치에는 보관할 대상을 저장하고 주기억장치 RAM에는 실행할 대상을 저장한다.

 

RAM의 용량이 크다면 보조기억장치에서 많은 데이터를 가져와 미리 RAM에 저장할 수 있으므로 많은 프로그램을 동시에 실행하는 데 유리하다. 하지만 필요 이상으로 커진 경우에는 속도가 그에 비례하여 증가하지는 않는다.

 

DRAM (Dynamic RAM)

DRAM은 시간이 지나면 저장된 데이터가 점차 사라지는 RAM이다. 따라서 데이터 소멸을 막기 위해 일정 주기로 데이터를 다시 저장해야하는 번거로움이 있지만 소비 전력이 낮고, 저렴하며, 집적도가 높아 대용량으로 설계하기 용이해 일반적으로 메모리로 많이 사용한다.

SRAM (Static RAM)

시간이 지나면 점차 저장된 내용이 소실되는 DRAM과 달리 SRAM은 시간이 지나도 저장된 데이터가 사라지지 않는다. 

그렇다고 비휘발성 메모리는 아니다. 전원 공급이 차단되면 SRAM도 데이터가 손실된다.

또한 집적도가 낮고, 소비 전력이 크며, 가격도 비싸기 때문에 SRAM은 대용량으로 만들 필요가 없지만 속도가 빨라야하는 캐시 메모리에서 사용된다.

  DRAM SRAM
재충전 필요함 필요 없음
속도 느림 빠름
가격 저렴함 비쌈
집적도 높음 낮음
소비 전력 적음 높음
사용 용도 주기억장치(RAM) 캐시 메모리

SDRAM (Synchronous Dynamic RAM)

SDRAM은 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM을 의미한다. 클럭과 동기화 된 DRAM이다.

DDR SDRAM (Double Data Rate SDRAM)

최근 가장 흔하게 사용되는 RAM이다. DDR SDRAM은 데이터를 주고받는 길의 너비인 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.

기존 SDRAM을 SDR SDRAM(Single Data Rate SDRAM)이라고도 부르는데 한 클럭당 하나씩 데이터를 주고 받기 때문이다.

하지만 DDR SDRAM은 대역폭을 넓혀서 한 클럭당 두 번씩 CPU와 데이터를 주고 받을 수 있다.

DDR2 SDRAM은 DDR SDRAM보다 대역폭이 두 배 넓은 SDRAM이다. 

 

DDR(N) SDRAM ➡ DDR SDRAM보다 대역폭이 N배 넓은 SDRAM ➡ SDR SDRAM보다 대역폭이 2XN배 넓은 SDRAM


저장 장치 계층 구조

컴퓨터가 사용하는 저장 장치들은 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낼 수 있다. 이를 저장 장치 계층 구조라고 한다. 위로 갈수록 속도가 빠르고, 용량이 작고, 가격이 비싸다.

memory hierarchy

캐시 메모리

CPU가 메모리에 접근하는 속도는 CPU의 연산 속도보다 느리다. 따라서 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 캐시 메모리가 탄생했다. 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용하는 것이다.

위의 계층 구조를 살펴보면 캐시 메모리는 레지스터보다 속도는 느리지만 용량이 큰 메모리라는 것을 알 수 있다. 그리고 주기억장치보다는 속도가 빠르지만 용량이 작다.

 

캐시 메모리는 CPU와 가까운 순서대로 계층을 구성한다. 가장 가까운 캐시를 L1 캐시, 그 다음 가까운 캐시를 L2 캐시, 그 다음 가까운 캐시를 L3 캐시라고 한다. 보통 L1과 L2는 코어 내부에 위치하고 L3는 코어 외부에 위치한다. L1에 데이터가 있는지 먼저 확인하고 없으면 L2, L3 순으로 데이터를 검색한다.

 

멀티 코어 프로세서에서는 아래 그림과 같이 캐시 메모리가 구현된다. 또한 코어와 가장 가까운 L1 캐시를 명령어만 저장하는 캐시와 데이터만 저장하는 캐시로 분리하는 분리형 캐시도 있다.

  • 용량 : L1 < L2 < L3
  • 속도 : L3 < L2 < L1
  • 가격 : L3 < L2 < L1

참조 지역성 원리

보조기억장치는 전원이 꺼져도 기억할 대상을 저장하고, RAM은 실행 중인 대상을 저장한다. 

캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다. 이때 자주 사용될 것으로 예측한 데이터가 실제로 들어맞는 경우를 캐시 히트라고 한다. 반대로 사용할 것이라 예측하고 캐시 메모리에 저장했는데 예측에 실패해 필요한 데이터를 메모리에 직접 가져와야하는 경우를 캐시 미스라고 한다. 당연히 캐시 미스가 자주 발생하면 캐시 메모리를 사용하는 의미가 없다.

캐시 히트 횟수와 캐시 미스 횟수를 통해 캐시 적중률을 구할 수 있다. 적중률은 다음과 같다.

 

캐시 적중률 : 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

 

그렇다면 CPU가 사용할 법한 데이터를 어떻게 예측할 수 있을까?

캐시 메모리는 참조 지역성의 원리에 따라 메모리로부터 가져올 데이터를 결정한다. 참조 지역성의 원리란 CPU가 메모리에 접근할 때 주된 경향을 바탕으로 만들어진 원리이다.

  • CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. (시간 지역성)
  • CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. (공간 지역성)
let num = 2;

for(let i = 0; i <= 9; i++) {
  console.log(`${num} * ${i} = ${num * i}`);
}

 

num과 i라는 변수는 한번만 사용되지 않고 프로그램이 실행되는 동안 여러 번 사용된다.

즉, CPU는 최근에 접근했던, 변수가 저장된 메모리 공간을 여러 번 다시 접근할 수 있다. 이 경향을 시간 지역성이라고 한다.

 

CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 함께 모여있다. 그리고 그 프로그램 내에서도 기능별로 관련된 데이터들이 모여서 저장된다. CPU가 워드 프로세서 프로그램을 실행할 때 워드 프로세서 프로그램이 모여있는 공간을 집중적으로 접근할 것이고, 사용자가 입력 기능을 사용할 때는 입력 기능이 모여있는 공간을 집중적으로 접근할 것이다. 이러한 경향을 공간 지역성이라고 한다.

 

캐시 메모리는 시간 지역성, 공간 지역성에 입각해 CPU가 사용할 법한 데이터를 예측해서 저장한다.

 

'CS > 컴퓨터구조' 카테고리의 다른 글

보조기억장치  (0) 2024.05.17
물리 주소와 논리 주소  (0) 2024.05.17
CPU 성능 향상 기법  (0) 2024.05.16
명령어 사이클과 인터럽트  (0) 2024.04.24
CPU의 작동원리2️⃣ - 레지스터  (0) 2024.04.18