본문 바로가기

CS/운영체제

메모리: RAM, 캐시 메모리, 그리고 CPU 접근 방식 이해하기

RAM
실행할 프로그램의 명령어와 데이터가 저장되는 공간으로 전원이 꺼지면 저장된 내용도 사라짐

 

RAM을 조리대, CPU를 요리로 생각해서 이해해봅시다

조리대가 넓으면 넓을수록 조리 도구와 재료를 근처에 두고 더 빠르게 요리를 할 수 있습니다

만약 조리대에 올려 놓지 않았다면 조리 도구, 재료를 가지러 이동하는 시간이 걸립니다

단, 조리대가 일정 이상 넓어지면 어차피 더 놓을 조리 도구, 재료도 없어지므로 무한정 속도가 빨라지지는 않습니다

 

캐시 메모리

 

우선 저장장치의 특징에 대해 알아봅시다

  • CPU와 저장장치가 가까울수록 빠르다
  • CPU와 가까운 저장장치(빠른)는 가격이 비싸다(저장 용량이 작다)

CPU와 저장장치의 위치는 다음과 같습니다

  • 코어 내부 : CPU - 레지스터
  • 코어 외부 : 메모리 - 보조기억장치

CPU의 연산 속도에 비해 메모리에서 필요한 정보를 가져오는 속도가 느리다면 CPU의 효율을 다 낼 수 없습니다

각각의 속도는 평균적으로 다음과 같습니다

  • CPU 연산 속도 : 단일 쿨럭 주기 3GHz인 CPU는 한 주기가 약 0.33나노초 
  • 레지스터 : CPU 쿨럭 주기와 비슷
  • 메모리 : 약 100나노초
  • SSD : 100,000나노초
  • 하드디스크 : 10,000,000나노초

따라서 레지스터보다는 용량이 크면서도 메모리보다 빠른 캐시 메모리가 필요하게 됐습니다

 

  • CPU 내부 : L1 캐시 메모리, L2 캐시 메모리
  • CPU 외부 : L3 캐시 메모리

각각의 속도는 평균적으로 다음과 같습니다

 

  • L1 캐시 메모리 : 약 1나노초
  • L2 캐시 메모리 : 약 10나노초
  • L3 캐시 메모리 : 약 30나노초

레지스터는 요리에 바로 사용되는 보울, 캐시 메모리는 조그만 조리통으로 생각해서 이해해봅시다

 

캐시 메모리는 그래도 메모리보다 용량이 작기 때문에 CPU가 사용할 정보를 예측해서 가져올 필요가 있습니다

  • 시간 지역성 : 최근에 접근했던 메모리에 다시 접근하려는 경향
  • 공간 지역성 : 접근한 메모리 근처를 접근하려는 경향

이렇게 캐시 메모리에 저장한 정보가 사용될 경우 캐시 히트라하고 메모리에서 필요한 데이터를 가져온다면 캐시 미스라 합니다

 

메모리의 종류

 

  시간이 지나면 속도 가격 집적도 소비 전력 사용 용도
DRAM 데이터 소멸 느림 저렴 높음 적음 RAM
SRAM 데이터 유지 빠름 비쌈 낮음 높음 캐시 메모리

 

  • SDRAM : 클럭에 맞춰 동작하는 DRAM
  • SDR SDRAM : 한 클럭당 하나씩 데이터를 주고 받는 SDRAM
  • DDR SDRAM : 대역폭(주고받는 데이터 길)이 두 배 넓은 SDRAM, DDR뒤의 숫자가 1 늘어날수록 2배씩 증가

 

CPU의 메모리 접근

 

메모리에는 매번 같은 공간에 같은 프로그램이 적재되지 않고 여러 프로그램이 동시에 적재되기에 두 가지의 주소를 사용합니다

 

  • 물리 주소 : 메모리의 실제 주소
  • 논리 주소 : CPU가 사용하는 프로그램에게 부여된 주소

MMU(Memory Management Unit)를 통해서 논리 주소를 물리 주소로 변환하는데 한계 레지스터 보다 논리 주소가 작은지를 확인하여 다른 프로그램의 주소 공간을 침범하지 않게 하고 베이스 레지스터 + 논리 주소로 물리 주소의 위치를 찾습니다

 

예시) 논리 주소 : 100, 한계 레지스터 : 150, 베이스 레지스터 : 2000

프로그램은 2000 ~ 2150의 주소에 적재되어 있고 논리 주소가 한계 레지스터보다 작으므로 2000 + 100의 주소에 접근합니다