[CSAPP]메모리 모듈과 DRAM 구조, 쉽게 이해하기

2025. 6. 16. 11:52·개발이야기/CSAPP
728x90

임의 접근 메모리 (Random Access Memory) - RAM

RAM는 정적 RAM(static RAM, SRAM) 과 동적 RAM(dynamic RAM, DRAM) 으로 나뉜다.

특징

정적램은 동적램보다 더 빠르고 비싸고 CPU칩 내부 또는 외부 캐시 메모리로 사용된다.

동적램은 주기억장치와 그래픽 시스템의 프레임버퍼로 사용된다.

 

정적 RAM (Static RAM)

각 비트는 이안정 상태(bistable)를 가지는 메모리 셀에 저장된다. 각 셀은 6개의 트랜지스터로 이루어진 회로로 구현되며, 이 회로는 두 가지 서로 다른 전압 상태 중 하나에 안정적으로 무기한 유지될 수 있는 특성을 가진다. 이 두 상태를 제외한 다른 모든 전압 상태는 불안정하여, 회로가 그런 상태에서 시작되면 곧바로 두 안정 상태 중 하나로 자연스럽게 전환된다.

진자는 완전히 왼쪽이나 오른쪽으로 기울어진 상태에서 안정을 이룹니다. 그러나 다른 위치에 있다면, 진자는 결국 한쪽으로 넘어지게 된다.

이론적으로 진자가 정확히 수직 상태에 있을 경우 균형을 이루며 무한히 머무를 수도 있지만, 이 상태는 매우 민감한 준안정 상태(metastable)로 간주됩니다. 아주 작은 외부 충격이나 흔들림이 있어도 진자는 균형을 잃고 한쪽으로 쓰러지며, 한 번 그렇게 되면 다시는 수직 상태로 돌아오지 않는다.

 

📌 역진자: SRAM 셀과 같이 두 개의 안정된 구성 또는 상태를 가진다.

동적 RAM (Dynamic RAM)

DRAM은 축전기 하나와 접근 트랜지스터 하나로 구성된 셀 구조를 가지며, 이로 인해 고밀도 집적이 가능하다. 그러나 SRAM과 달리, DRAM 셀은 외부 간섭에 매우 민감하다. 한 번 축전기의 전압이 교란되면 자체적으로 복원되지 않으며, 데이터는 손실된다.

예를 들어, 빛에 노출될 경우 축전기 전압이 변화할 수 있으며, 이러한 특성으로 인해 디지털 카메라 및 캠코더 센서는 DRAM 셀 어레이(array)를 기반으로 동작한다.

또한, 누설 전류(leakage current)로 인해 DRAM 셀은 약 10~100밀리초(ms) 내에 전하를 상실한다.

시스템 클럭 주기가 나노초(ns) 단위로 동작하는 환경에서는 이 보존 시간이 비교적 충분하다. 이 때문에 DRAM은 주기적인 리프레시(refresh) 동작이 필요하다.

일부 시스템에서는 오류 정정 코드(ECC)를 적용하여 단일 비트 오류 발생 시 자동 검출 및 복구가 가능하도록 설계된다.

일반적인 DRAM 구조

DRAM 칩의 셀은 w개의 셀로 구성된 슈퍼셀(supercell)로 묶이며, d × w DRAM은 총 d × w 비트의 정보를 저장한다. 슈퍼셀은 r개의 행과 c개의 열로 구성된 배열로, r × c = d 관계를 만족한다.

정보는 핀(pin)이라 불리는 외부 접점을 통해 입·출력되며:

  • 8개의 데이터 핀: 1바이트(8비트) 전송
  • 2개의 주소 핀: 행/열 주소를 전송
  • 행 주소 요청 → RAS (Row Access Strobe)
  • 열 주소 요청 → CAS (Column Access Strobe)

 

 

DRAM을 2차원 배열로 구성하는 이유는 주소 핀 수를 줄이기 위함.
하지만 RAS/CAS로 나누어 전송해야 하므로 접근 시간은 증가.

메모리 모듈

DRAM은 메모리 모듈(DIMM) 형태로 마더보드에 장착된다.
Core i7 시스템은 240핀 DIMM을 사용하며 64비트 단위로 송수신한다.

모듈 내 각 DRAM은 동시에 동작하여 하나의 64비트 단어를 구성함.

 

향상된 DRAM (Enhanced DRAMs)

  • FPM DRAM: 같은 행에 대해 연속 접근 시 row buffer에서 빠르게 읽기
  • EDO DRAM: CAS 간격을 좁혀 더 빠른 연속 접근 가능
  • SDRAM: 클럭과 동기화된 동기식 접근 → 빠른 성능
  • DDR SDRAM: 상승/하강 에지 모두 사용 → 2배 속도
종류 프리패치 비트 수 설명
DDR 2비트 기본 DDR
DDR2 4비트 대역폭 확장
DDR3 8비트 고속화된 전송

비디오 RAM (VRAM)

  • 읽기와 쓰기를 동시에 수행 가능
  • 내부 버퍼의 전체 내용을 시퀀스 단위로 쉬프팅 출력

비휘발성 메모리 (Nonvolatile Memory)

  • 전원 OFF 후에도 데이터 유지
  • 대부분 ROM(Read-Only Memory)으로 분류됨

종류

  • PROM: 한 번만 기록 (퓨즈 태움)
  • EPROM: 자외선으로 초기화, 다시 기록 가능
  • EEPROM: 전기적으로 삭제·기록, 회로에 장착된 상태에서도 가능
  • Flash Memory: 빠르고 내구성 높은 EEPROM, 저장 매체의 주류
  • Firmware: ROM에 저장된 소프트웨어 (BIOS 등)

메인 메모리 접근

CPU ↔ DRAM은 버스(bus)로 연결되어 있고,
버스를 통해 읽기/쓰기 트랜잭션을 수행한다.

  • 읽기 트랜잭션: DRAM → CPU
  • 쓰기 트랜잭션: CPU → DRAM

버스 구성:

  • 주소선, 데이터선, 제어선으로 구성됨
  • 주소인지 데이터인지, 읽기인지 쓰기인지 구분 필요

시스템 구성 예

  • CPU → 시스템 버스 → I/O 브리지 → 메모리 버스 → DRAM

예시

CPU가 메모리에서 데이터를 읽는 경우 (load)

movq A, %rax

이는 주소 A에 저장된 데이터를 %rax 레지스터에 로드 하는 연산이다. CPU 내부의 버스 인터페이스 회로가 **읽기 트랜잭션(read transaction)**을 시작한다.

728x90

'개발이야기 > CSAPP' 카테고리의 다른 글

[CSAPP] 3챕터 총정리  (0) 2025.05.30
[CSAPP]포인터와 메모리 버그 – 보안과 디버깅 관점에서의 어셈블리  (0) 2025.05.30
[CSAPP]배열과 구조체는 메모리에서 어떻게 표현될까?  (0) 2025.05.30
[CSAPP] 함수 호출의 구조 – 스택 프레임과 재귀  (0) 2025.05.30
[CSAPP]산술 연산과 조건 분기의 어셈블리 구현  (0) 2025.05.30
'개발이야기/CSAPP' 카테고리의 다른 글
  • [CSAPP] 3챕터 총정리
  • [CSAPP]포인터와 메모리 버그 – 보안과 디버깅 관점에서의 어셈블리
  • [CSAPP]배열과 구조체는 메모리에서 어떻게 표현될까?
  • [CSAPP] 함수 호출의 구조 – 스택 프레임과 재귀
Study & Stack
Study & Stack
하루하루 공부하며 개발 지식을 쌓아가는 공간입니다. 자료구조, 알고리즘, C언어, 시스템 프로그래밍까지 공부한 내용을 ‘Stack’처럼 쌓고 공유합니다.
  • Study & Stack
    Study & Stack
    Study & Stack
  • 전체
    오늘
    어제
    • 목차
      • 크래프톤정글이야기
        • 정글의기록
        • TIL - WIL
      • 개발이야기
        • C언어
        • 파이썬
        • 코딩테스트
        • CSAPP
      • 협업툴
        • git
      • 나의 이야기
        • 내돈내산
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Study & Stack
[CSAPP]메모리 모듈과 DRAM 구조, 쉽게 이해하기
상단으로

티스토리툴바