Step-by-Step

[Memory] DRAM 본문

임베디드/Memory

[Memory] DRAM

희주(KHJ) 2025. 9. 19. 17:52

DRAM

Dynamic Random Access Memory

Dynamic DRAM은 데이터를 Capacity (전하를 저장하는 가장 작은 축적기) 에 저장한다.
이 Capacity는 시간이 지나면 전하가 자연스럽게 방전되기 때문에, 저장된 정보가 금방 사라진다.
주기적으로 데이터를 다시 충전해주는 Refresh 동작이 필요한데, 

즉, Dynamic은 저장 상태가 계속 유지되지 않고, 끊임없이 갱신해야 한다는 의미이다.
Random Access 메모리에 저장된 데이터는 순차적으로 접근하는 것이 아니라, 원하는 주소로 바로 접근할 수 있다.
Memory DRAM은 데이터를 저장하는 장치로, 휘발성 메모리에 속하여 전원이 꺼지면 데이터가 사라진다.
주로 CPU와 보조 저장장치(SSD / HDD) 사이에서 중간 역할을 하며, 프로그램 실행 중 필요한 데이터를 일시적으로 저장한다.

 

 

DRAM의 Refresh

  • DRAM의 Refresh 작업은 메모리 컨트롤러(MC)에서 자동으로 담당한다.
  • DRAM의 Cell Capacitor가 일정 시간이 지나면 전하가 날아가기 때문에, 컨트롤러가 주기적으로 셀을 읽고 다시 써서 전하를 보충한다.
  • 보통 수 밀리초(ms) 단위로 모든 셀을 한 번씩 refresh 한다. (보통 64ms ~ 128ms)

 

※ Refresh 작업은 왜 ms 단위로 해야할까?

1. Capacitor 의 크기

DRAM의 셀 하나는 트랜지스터 1개 + 캐패시터 1개로 구성되는데, 이 캐패시터가 나노미터 크기로 매우 작다.

저장할 수 있는 전하량이 극히 적어, 새어 나가면 0과 1의 경계가 모호해진다.

 

2. 누설 전류

반도체 내부는 완벽한 절연체가 없어서, 시간이 지나면 전하가 조금씩 빠져나가게 된다.

미세 공정일수록 누설 전류가 커지기 때문에 더 자주 refresh가 필요하다.

 

3. 온도

온도가 높을수록 전자가 빨리 이동하므로, 고온에서는 refresh 주기를 더 짧게 잡아야 한다.

반도체 물질은 온도가 높아지면 전자들의 에너지가 커져서 쉽게 이동할 수 있고, 전자가 장벽을 넘어가는 확률이 높아져 전하가 더 빨리 새어나가게 된다.

 

DRAM의 구조 

DRAM의 최소 단위는 1bit Cell로, 트랜지스터와 커패시터로 구성되어 있다.

- 트랜지스터 (Transistor) : 스위치 역할로, 데이터 읽기 / 쓰기를 제어한다.

- 커패시터 (Capacitor) ; 전하를 저장해서 데이터를 유지한다. (전하가 있으면 1, 없으면 0)

[Bit Cell]
   ┌──────┐
   │ C    │ ← 커패시터 (데이터 저장)
   └──┬───┘
      │
      T ← 트랜지스터 (액세스 제어)
      │
   Word Line → 셀 선택

 

DRAM의 배열 구조

DRAM은 수많은 bit Cell을 행(Row) x 열(Column) 로 배열한 매트릭스 구조를 가진다.

- Word Line (행 선택선) : 특정 행을 선택한다.

- Bit Line (열 데이터선) : 선택된 셀의 데이터를 읽거나 쓴다.

- Row Decoder : 입력된 주소의 행 번호를 해석해서 Word Line을 활성화한다. (해당 Bit line 연결을 위한 활성화)

- Column Decoder : 선택된 행에서 읽고자 하는 열을 선택한다.

 

 

 

DRAM의 channel

CPU (또는 메모리 컨트롤러)와 DRAM 모듈 사이의 데이터 통로를 의미한다.

Channel이 많으면 한 번에 더 많은 데이터를 동시에 전송할 수 있어서, 메모리 대역폭(bandwidth)이 증가한다.

 

※ Memory 대역폭(Bandwidth)의 의미는?

CPU(혹은 다른 Master)와 메모리 간 일정 시간 동안 전송할 수 있는 데이터의 양

- 단위 : 보통 GB/s

- 계산 방법 : 대역폭 = 메모리 클럭 속도 x 데이터 전송 수 x 버스 폭 x 채널 수

 

 

Channel의 Interleaving

여러 메모리 채널을 번갈아 사용하여 데이터 접근 병목을 줄이는 기법이다.

- 단순히 한 채널만 사용하면 CPU가 메모리를 기다려야하는 시간이 생길 수 있다.

- Interleaving을 사용하면 여러 채널이 병렬로 동작하면서 CPU가 대기하는 시간을 줄일 수 있다.

- channel이 담당하는 DRAM의 물리적인 주소 값은 고정이나, 연속적인 주소값은 아니다. (연속적인 주소들이 다른 채널로 번갈아 분산될 수 있다.)

 

 

 

 

더보기
CPU가 DRAM에 16byte를 요청했어 (프로토콜 전송 폭 128bit) DRAM으로 가는 channel이 4개이고, 이게 interleaving 되어있어서. 16byte는 네개의 채널에서 번갈아 가져와야해. 그럼 각 데이터를 가져와서 조합해서 CPU한테 돌려줘?

ChatGPT의 말:

네, 질문하신 상황을 정리하면 이렇게 이해할 수 있습니다. 하나씩 단계별로 풀어볼게요.


상황 요약

  1. CPU가 16바이트를 요청.
  2. DRAM 프로토콜 전송 폭이 128비트(=16바이트).
  3. DRAM 채널이 4개 있고, interleaving 되어 있음.

즉, 16바이트를 한 번에 전송할 수 있는 폭은 128비트 → 정확히 16바이트인데, 채널 4개에 interleaving 되어 있기 때문에 데이터를 4개 채널에 분산해서 저장/전송함.


Interleaving 구조

  • 예를 들어, 16바이트 데이터를 4바이트 단위로 나눠서 채널에 배분했다고 가정합니다.
채널데이터
CH0 D0~D3
CH1 D4~D7
CH2 D8~D11
CH3 D12~D15
  • CPU가 16바이트를 요청하면 각 채널에서 4바이트씩 동시에 읽음 → 총 16바이트 완성.
  • 즉, interleaving 덕분에 병렬로 데이터 읽기 가능 → 메모리 대역폭 향상.

최종 전달 과정

  1. CPU 요청 → 메모리 컨트롤러가 16바이트 주소를 4채널로 분배.
  2. 각 채널에서 **각각 데이터 일부(예: 4바이트)**를 DRAM에서 읽음.
  3. 메모리 컨트롤러에서 4채널 데이터를 조합하여 16바이트 완성.
  4. 완성된 16바이트를 CPU로 전달.

✅ 정리하면:

네, 각 채널에서 데이터를 가져와 메모리 컨트롤러가 조합한 뒤 CPU에 전달합니다.
Interleaving은 한 번에 여러 채널에서 병렬로 데이터를 읽어 전체 전송 시간을 줄이는 기술입니다.

 

 

 

 

 

 

 

Comments