RAM의 특징과 종류


주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고,
'메모리'라는 용어는 그 중 RAM을 지칭하는 경우가 많음

 

 

  • CPU는 메모리(RAM)으로 부터 명령어와 데이터를 가져와 실행
  • RAM은 전원이 꺼지면 데이터가 날아가는 휘발성 저장 장치이기 때문에 실행할 대상을 저장
  • 보조기억장치에는 전원이 꺼져도 저장되어야 하는 보관할 대상을 저장

 

 

RAM이 크면 뭐가 좋을까?

  • RAM이 CPU와 상호작용 할 때, 크기가 작으면 필요한 프로그램이 있을 때마다 보조기억장치에서 복사해와서 사용해야 하기 때문에 성능이 저하됨
  • 반대로, RAM이 크면 바로바로 CPU와 상호작용 할 수 있으므로 성능이 좋아짐(동시에 여러 개의 프로그램을 실행하는데 유리)
  • 이는 큰 책상과 작은 책상으로 비유할 수 있음 


 

RAM의 종류

 

DRAM(Dynamic RAM)


  • Dynamic = 동적의
  • 저장된 데이터가 동적으로 사라지는 RAM
  • 데이터 소멸을 막기 위해 주기적으로 재활성화(리프레시) 필요
  • 즉, 전원이 연결되어 있어도 저장된 데이터가 점점 사라지므로 소멸을 막기 위해 주기적으로 재활성화 필요

  • 일반적으로 메모리로 사용되는 RAM (DRAM 혹은 더 발전된 형태의 DRAM을 주로 사용)
  • 상대적으로 소비전력이 낮고, 저렴하며, 집적도가 높아(오밀조밀하게 설계 가능) 대용량으로 설계하기 용이

 

 

SRAM


  • Static = 정적의
  • 저장된 데이터가 정적인 (사라지지 않는) RAM
  • 물론, 전원이 꺼지면 데이터는 사라짐(휘발성)
  • DRAM보다 일반적으로 입출력 속도가 더 빠름
  • 하지만 상대적으로 소비전력이 높고, 가격이 비싸며, 집적도가 낮아
    대용량으로 설계할 필요는 없으나 빨라야 하는 장치에 사용함
  • 일반적으로 캐시 메모리에서 사용되는 RAM 

 

 

DRAM vs SRAM


재충전 = 재활성화 = 리프레시

 

 

SDRAM (Synchronous DRAM)


  • 특별한 (발전된 형태의) DRAM
  • 클럭 신호와 동기화된  DRAM
    (클럭신호에 맞춰 한 번에 하나씩 데이터를 주고받을 수 있는 형태)

 

 

DDR SDRAM (Double Data Rate SDRAM)


  • 특별한 (발전된 형태의) SDRAM
  • 최근 가장 대중적으로 사용하는 RAM : 특히 DDR4 SDRAM
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 
    • 대역폭은 데이터를 주고 받는 길의 너비
    • SDRAM(single Data Rate SDRAM) vs  DDR SDRAM

DDR3는 8개, DDR4는 16개의 길이 있다

 

 

 


 

 

 

메모리의 주소 공간

  • 메모리 내의 주소 체계는 크게  2가지, "논리주소"와 "물리주소"가 있음

  • CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알 수 있을까? NO
  • CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못함 

  • 메모리에 저장된 값들은 시시각각 변하기 때문
    • 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
    • 실행이 끝난 프로그램은 메모리에서 삭제
    • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐
  • 그러므로 이러한 한계를 극복하기 위해 논리주소와 물리주소로 나뉨

 

논리 주소는 0번지가 여러개

 

물리 주소

  • 메모리 입장에서 바라본 주소
  • 말 그대로 정보가 실제로 저장된 하드웨어상의 주소
  • 주소 번지의 중복 X

 

논리 주소

  • CPU와 실행 중인 프로그램 입장에서 바라본 주소
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소
  • 같은 주소 번지가 중복될 수 있음

 


 

 

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


  • CPU와 메모리의 상호작용을 위해선 변환이 필수

 

 

MMU

  • MMU(메모리 관리 장치, Memory Management Unit) 
  • 논리주소 ↔ 물리주소 변환
  • CPU와 메모리가 주소 버스를 통해 주소를 주고 받을 땐 항상 MMU를 거침
  •  MMU는 논리 주소와 베이스 레지스터값을 더하여 논리 주소를 물리 주소로 변환
    • 베이스 레지스터
      - 프로그램의 기준 주소 값, 즉 물리 주소 상의 프로그램의 시작 주소가 담김
      - 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장하는 셈
    • 논리 주소
      - 실제로 저장되어있는 그 프로그램으로부터 얼마나 떨어져 있느냐에 대한 정보
      - 즉, 프로그램의 시작점으로부터 떨어진 거리

 

 

 

문제점

  • 다른 프로그램의 영역을 침범하는 명령어를 실행 할 수 있음

1000 + 1500 = 2500번지이므로, 인터넷 브라우저 데이터 부분이 손상

 

게임 데이터 부분 손상

 

 

 

메모리 보호


 

한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면,
    한계 레지스터는 논리 주소의 최대 크기를 저장
  • 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값
  • CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안 됨 

 

 

 

 

 

 

 

  • 이처럼 CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사
  • 실행 중인 프로그램의 독립적인 실행 공간을 확보 & 하나의 프로그램이 다른 프로그램을 침범하지 못하도록 보호 

 

 


 

 

캐시 메모리

 

필요성

 

  • CPU가 메모리에 접근하는 시간은 CPU 연산 속도보다 느리다

 

 

 

저장장치 계층구조

  • 레지스터 vs 메모리(RAM) vs USB 메모리

 

  • CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다
  • 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다
  • 이렇게 각각의 저장 장치들의 장단점이 명확하기 때문에 한가지만 쓰기보다는 장단점에 맞게 잘 배치해서 계층적으로 사용함 

 

 

 

캐시메모리


  • CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
  • CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
  • CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리니, 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 쓰자! 

캐시메모리를 사용할 경우가 성능상 더 좋음

 

 

캐시메모리를 반영한 저장 장치 계층 구조

  • 캐시메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치

 

 

계층적 캐시 메모리

  • 캐시 메모리는 CPU 내부에 있을 수 있고 외부에 있을 수도 있음
  • 현대 CPU 캐시 메모리 설계에서 가장 일반적인 설계 방식

  • L1 캐시는 L2보다 용량은 작지만 더 빠름
  • L2는 L3캐시 보다 용량은 작지만 더 빠름
  • L3 캐시는 메모리보다 용량은 작지만 빠르고, L1,L2보단 용량이 크지만 느림

 

 

 

 

 

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

  • 코어마다 따로 캐시를 가지고 있고, L3는 공유하는 형태로 사용하기도 함
  • 참고)
    코어마다 L1 캐시, L2 캐시를 따로 두기 때문에 각각의 코어에 있는 각각의 캐시 메모리들이 서로 다른 내용을 저장하게 될 수 있음. 즉, 데이터의 일관성이 깨질 수 있음. 그렇기 때문에 멀티코어 프로세서에서는 캐시 메모리가 모두 동일한 내용을 갖게끔 싱크를 맞춰주는 것이 아주 중요한 문제임

 

 

 

분리형 캐시

  • L1 캐시를 조금이라도 더 빠르게 만들기 위해
    데이터 캐시인 L1D, 명령어 캐시인 L1I(instruction)으로 나누기도 함 

 

 

계층적 캐시 메모리까지 반영한 저장 장치 계층 구조 

 

 

 

 

참조 지역성의 원리


  • CPU가 사용할 법한 데이터를 예측하는 방법을 "참조 지역성의 원리"라고 함

  • 캐시 메모리는 메모리보다 용량이 작기 때문에 메모리의 모든 내용을 저장할 수 없음
  • 그러므로 CPU가 자주 사용할 법한 내용을 예측하여 저장함

  • 캐시 히트 : 예측이 맞을 경우 (CPU가 캐시 메모리에 저장된 값을 활용할 경우)
  • 캐시 미스 : 예측이 틀린 경우 (CPU가 메모리에 접근해야 하는 경우)
  • 캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
  • 캐시 적중률이 높을수록 성능이 좋음(일반적으로 80% 이상은 됨)

캐시 히트(좌) / 캐시 미스(우)

 

 

  • 참조 지역성의 원리는 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 캐시 적중률을 높이기 위해 만들어진 원리

    • CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다
      num이라는 주소 공간에 계속 접근하는 모습
    •  
    • CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다(공간 지역성)
      - CPU가 실행하려는 프로그램은 보통 관련된 데이터들끼리 한 곳에 모여있는 경우가 많음
      - 위의 경우에도 워드 프로세서의 관련된 기능들끼리 모여서 저장되어 있음
      - 예를 들어 입력 기능을 사용할 때에는 입력 기능 근처를 자주 참조 

 

 

 

 

 

출처 : 혼자 공부하는 컴퓨터구조 + 운영체제 (저자 강민철)