Ping!

Ping! 여름방학 2주차 - 주기억장치, 메모리 주소, 캐시 메모리

Jii- 2023. 8. 1. 20:15

주기억장치

  • RAM(Random Access Memory)
    • DRAM
    • SRAM
    • SDRAM
    • DDR SDRAM

 

  • ROM(Read Only Memory)

RAM에서는 실행할 대상을 저장하고, 보조기억장치(SDD, 하드디스크 등)는 보관할 대상을 저장한다. RAM은 전원이 꺼지면 데이터가 날라간다는 특징이 있다. 즉, RAM과 ROM은 각각 휘발성 저장 장치, 비휘발성 저장 장치에 해당한다. RAM은 실행할 대상을 저장하기 때문에 많은 프로그램을 동시에 실행하는 데 유리하다. 

 

DRAM

Dynamic RAM으로, 저장된 데이터가 동적으로 사라지기 때문에 데이터 소멸을 막기 위해 주기적으로 재활성화해야 한다. 소비전력이 낮고 집적도가 높아 대용량으로 설계하기 용이하기 때문에 일반적으로 메모리로 사용된다. 

 

SRAM

Static RAM으로, DRAM과 달리 전원이 연결되어 있다면 저장된 데이터가 사라지지 않는다. (정적이라 저장된 데이터가 저장된다고 하더라도 휘발성 메모리이기 때문에 데이터가 사라진다.) DRAM 보다 일반적으로 속도가 빠르나 상대적으로 소비전력이 높고 집적도가 낮아 캐시 메모리로 사용된다. 

 

SDRAM

Synchronous DRAM으로, 클럭 신호와 동기화되어 작동하는 DRAM의 발전된 형태이다. 

 

DDR SDRAM 

Double Data Rate SDRAM으로, 대역폭을 넓혀 속도를 빠르게 만든 SDRAM의 발전된 형태이다. 최근 가장 대중적으로 사용하는 RAM이다. 대역폭은 데이터를 주고받는 길의 너비로 데이터를 한 번에 얼마나 이동시킬 수 있는지와 연관된다. 

 

cf. DDR SDRAM은 SDRAM (SDR SDRAM)에 비해 두 배 넓은 대역폭을 지닌다. DDR SDRAM 보다 2배 넓은 대역폭을 지닌 DDR2 SDRAM도 있다. (SDRAM의 대역폭 * 4 = DDR SDRAM의 대역폭 * 2 = DDR2 SDRAM의 대역폭) DDR SDRAM 대역폭의 8배 (2 ^ 3)를 지닌 DDR3 RAM, 16배 (2 ^ 4)를 지닌 DDR4 RAM도 있다. 

 

 

메모리의 주소 공간

메모리에 저장되는 값은 시시각각 변하기 때문에 CPU가 몇 번지에 어떤 값들이 저장되어 있는지 기억하지 못 한다. 

 

베이스 레지스터

프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장한다. 

 

논리 주소

논리 주소는 CPU와 실행 중인 프로그램 입장에서 바라본 주소로 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소이다. 실제로 저장되어 있는 프로그램으로부터 어느 정도 떨어져 있는지에 대한 값이 논리 주소이다. 

물리 주소

물리 주소는 메모리 입장에서 바라본 주소로 실제로 저장된 하드웨어 상의 주소이다. 

 

물리 주소와 논리 주소의 변환

논리 주소에는 동일한 주소 번지가 있을 수 있지만 실제로 하드웨어에 저장되는 물리 주소에는 동일한 주소 번지가 있을 수 없다. 즉, 논리 주소와 물리 주소 사이의 변환이 이루어져야 한다. 이는 메모리 관리 장치인 MMU(Memory Management Unit)라는 하드웨어에 의해 실행된다. CPU에서 전달된 논리 주소를 MMU가 물리 주소로 변환한다. MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다. 

 

메모리 보호

논리주소가 0~ 999번지인 프로그램를 실행 중이라고 가정해보자. 이때 CPU가 1100번지 데이터를 삭제하라는 명령은 안전하지 않은 명령에 해당한다. 해당 프로그램의 범위가 아닌 다른 주소를 건드리고 있기 때문이다. 

이러한 경우를 방지하고자 한계 레지스터는 논리 주소의 최대 크기를 저장함으로써 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막는다. (베이스 레지스터 값 <= 프로그램의 물리 주소 범위 <= 베이스 레지스터 값 + 한계 레지스터 값)

 

 

캐시 메모리

  • CPU가 메모리에 접근하는 시간은 CPU 연산속도보다 압도적으로 느리다. 
  • CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다. 
  • 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다. 

CPU가 메모리에 접근하는 시간과 CPU 연산 속도의 차이를 극복하고자 캐시 메모리를 사용한다. CPU와 메모리 사이에 위치하며 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다. 메모리 접근 속도를 줄이고자 CPU가 사용할 일부 데이터를 캐시 메모리에 미리 가져와서 쓰는 방식으로 이용된다. 

 

계층적 캐시 메모리

  • L1 캐시 : 레지스터보다는 용량이 크지만 L2 캐시보다는 작다. 하지만, CPU와 가장 가까운 곳에 위치하여 메모리 접근 속도가 가장 빠르다. 
  • L2 캐시 : L2 캐시보다는 용량이 크지만 L3보다는 용량이 작다. CPU로부터 거리가 L1보다는 멀지만 L3보다는 가까워 메모리 접근 속도 역시 L1보다는 느리고 L3보다는 크다. 
  • L3 캐시 : L1, L2, L3 중 가장 용량이 크다. 하지만 CPU로부터 가장 먼 곳에 위치하여 메모리 접근 속도가 가장 느리다. 

 

* 일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3는 코어 외부에 위치한다. 

 

멀티코어 프로세서의 캐시 메모리

L1, L2 캐시는 코어 내부에 L3는 각각의 코어가 공유하는 식으로 작동한다. 

 

분리형 캐시

명령어만 가지고 있는 L1 캐시와 데이터만 가지고 있는 L1 캐시로 나누어서 작동한다. 

 

참조 지역성의 원리 

  • 캐시 히트 : CPU가 캐시 메모리에 저장된 값을 활용할 경우 (성능 ↑)
  • 캐시 미스 : CPU가 메모리에 접근해야 하는 경우 (성능 ↓)
  • 캐시 적중률 : 캐시 히트 횟수 / (캐시 히트 횟수  + 캐시 미스 횟수)

 

캐시 메모리는 메모리보다 영량이 작기에 당연히 모든 메모리를 저장할 수 없다. CPU가 자주 사용할 법한 내용을 예측하여 저장해야 한다. 참조 지역성의 원리란 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리이다. 

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