DRAM I/O

1. DRAM I/O란?

앞서 DRAM의 Cell 구조를 공부하면서 Cell, Bit Line, Sense Amplifier의 관계를 살펴보았다. Cell에 저장된 전하는 Bit Line을 통해 Sense Amplifier에서 감지된다. 하지만 이때 사용하는 Bit Line과, SSD Board에서 DRAM과 Controller를 연결하는 Data Bus는 서로 다른 개념이다.

Bit Line은 DRAM Chip 내부에서 Cell의 상태를 읽고 쓰기 위한 내부 배선이다. 반면 DRAM I/O는 DRAM Package와 Memory Controller 사이에서 명령, 주소, 데이터를 주고받기 위한 외부 Interface이다.

전체적인 데이터 경로를 단순화하면 다음과 같다.

\[
\begin{gathered}
\text{DRAM Cell} \\
\downarrow \\
\text{Bit Line} \\
\downarrow \\
\text{Sense Amplifier} \\
\downarrow \\
\text{DRAM 내부 I/O 회로} \\
\downarrow \\
\text{DRAM Package} \\
\downarrow \\
\text{PCB Trace} \\
\downarrow \\
\text{Memory Controller / DRAM PHY}
\end{gathered}
\]

여기서 DRAM PHY는 Memory Controller 측에 위치하여 Controller의 명령과 데이터를 실제 DQ, DQS, CK 등의 전기 신호로 변환하고, DRAM과의 통신에 필요한 Timing과 신호 조건을 조정하는 Physical Layer이다. 일반적인 시스템 구조를 단순화해 표현한다면 다음과 같다. 

SSD Controller
┌─────────────────────────────┐
│ Memory Controller           │
│        ↓                    │
│ DRAM PHY                    │
│        ↓                    │
│ I/O Pad                     │
└────────┬────────────────────┘
         │
      PCB Trace
         │
┌────────▼────────────────────┐
│ DRAM Package                │
│  DRAM I/O Receiver/Driver   │
│          ↓                  │
│      내부 회로               │
│          ↓                  │
│   Sense Amplifier / Cell    │
└─────────────────────────────┘

따라서 이번 글에서는 Cell 내부에서 전하를 어떻게 읽는지가 아니라, DRAM과 Controller가 외부 Interface를 통해 어떻게 통신하는지를 살펴본다.

DRAM I/O를 공부하다 보면 앞서 살펴본 NAND I/O와 비슷한 용어가 등장한다. 고속 NAND와 DDR DRAM 모두 DQ와 DQS를 사용하며, 데이터를 보내는 측이 Data와 함께 Timing 기준 신호를 전달하는 Source Synchronous 방식도 사용한다.

다만 NAND와 DRAM이 DQ와 DQS를 공통으로 사용한다고 해서 두 Interface가 동일한 것은 아니다. Command와 Address를 전달하는 방법이나 Clock 및 Control 신호의 구성, 여러 DRAM Device를 연결하여 Data Bus를 구성하는 방법 등이 서로 다르다. 따라서 여기서는 이러한 기능들이 DRAM에서는 어떻게 구현되는지를 중심으로 살펴본다.

2. DRAM Interface의 주요 신호

DRAM과 Memory Controller 사이의 주요 신호는 크게 다음과 같이 나눌 수 있다.

Data              → DQ
Data Strobe       → DQS
Command / Address → CA 계열
Clock             → CK
Control           → CS, RESET 등

DDR4, DDR5, LPDDR 등의 세대에 따라 실제 Pin 이름과 구성은 달라지지만 각 신호가 담당하는 기본 역할은 비슷하다.

2.1 DQ

DQ는 실제 Read/Write 데이터를 전달하는 신호이다.

Read에서는 DRAM이 데이터를 출력한다.

DRAM → DQ → Memory Controller

Write에서는 반대로 Memory Controller가 데이터를 출력한다.

Memory Controller → DQ → DRAM

따라서 DQ는 양방향 Data 신호이다.

여기서 DQ와 DRAM 내부의 Bit Line을 구분해야 한다.

  • Bit Line : Cell과 Sense Amplifier 사이의 내부 신호 경로
  • DQ : DRAM Package와 Controller 사이의 외부 Data 신호

2.2 DQS

DQS는 Data Strobe이다. Strobe는 특정 동작의 Timing을 알려주는 기준 신호를 의미한다. 따라서 DQS는 DQ를 언제 받아들여야 하는지를 판단하기 위한 Timing 기준이라고 이해할 수 있다.

  • DQ : 실제 Data
  • DQS : DQ Data의 Timing 기준

Write에서는 Controller가 DQ와 DQS를 DRAM으로 보내고, Read에서는 DRAM이 DQ와 DQS를 Controller로 보낸다. DQS를 DQ와 함께 보내는 이유는 고속 Interface에서 Data와 별도로 전달되는 Clock만으로 실제 DQ의 도착 Timing을 정확하게 맞추기 어렵기 때문이다.

이 기본 원리는 NAND I/O에서 살펴본 Source Synchronous 방식과 동일하다.

3. Device Width와 x4, x8, x16

DRAM 제품 사양을 보면 x4, x8, x16이라는 표현이 자주 등장한다. 이를 이해하려면 먼저 Device Width라는 개념을 알아야 한다.

Device Width는 하나의 DRAM Device가 외부와 동시에 주고받을 수 있는 Data의 폭을 의미한다. 즉 하나의 DRAM Device에 몇 개의 DQ가 존재하는지를 나타낸다고 볼 수 있다.

예를 들어 DQ가 8개라면 한 번에 8 bit의 Data를 병렬로 전달할 수 있으므로 Device Width는 8 bit이고, 이를 x8 DRAM이라고 표현한다. x16 DRAM은 DQ가 16개, Device width가 16bit이다. 

여기서 x4, x8, x16은 PCIe에서 Lane 개수를 나타내는 x4, x8, x16과는 다른 의미이다. PCIe에서는 x8이 8개의 Lane을 의미하지만, DRAM에서는 x8이 하나의 DRAM Device가 8개의 DQ를 통해 8 bit 폭의 Data를 전달한다는 의미이다.

예를 들어 x8 DRAM은 다음처럼 생각할 수 있다.

DQ0 ──────
DQ1 ──────
DQ2 ──────
DQ3 ──────
DQ4 ──────
DQ5 ──────
DQ6 ──────
DQ7 ──────

총 8개의 DQ
→ 8-bit Data Width
→ x8 DRAM

DQS는 이러한 DQ 그룹의 Timing 기준이 된다.

DDR4 x16 Device의 경우 16개의 DQ가 8-bit씩 두 그룹으로 나뉘며, 각 그룹에 별도의 DQS가 사용된다. 예를 들어 하위 8-bit에는 DQSL, 상위 8-bit에는 DQSU가 대응한다.

4. Device Width와 전체 Data Bus Width는 다르다

하나의 DRAM Device가 x8이라고 해서 전체 DRAM Interface의 Data Bus Width도 8 bit인 것은 아니다.

Device Width는 하나의 DRAM Device가 한 번에 전달할 수 있는 Data의 폭을 의미한다. 반면 Data Bus Width는 Controller와 DRAM 사이에서 전체적으로 한 번에 전달할 수 있는 Data의 폭을 의미한다.

여러 개의 DRAM Device를 병렬로 연결하면 각 Device의 DQ를 합쳐 더 넓은 Data Bus Width를 구성할 수 있다.

예를 들어 x8 Device를 이용하여 64-bit Data Bus Width를 구성한다고 하자.

Device 하나의 Data Width = 8 bit

8 bit × 8 Device
= 64 bit 
따라서 x8 DRAM Device 8개를 병렬로 연결하면 전체 Data Bus Width는 64 bit가 된다.

 

x8 DRAM ─┐
x8 DRAM  │
x8 DRAM  │
x8 DRAM  ├─→ 64-bit Data Bus
x8 DRAM  │
x8 DRAM  │
x8 DRAM  │
x8 DRAM ─┘

다만 이것은 DIMM 구조를 이해하기 좋은 대표적인 예이다.

SSD Board에서는 DIMM 대신 DRAM Package가 PCB에 직접 실장(장착)되는 경우가 많으며, 실제 Bus Width와 Device 구성은 SSD Controller와 DRAM 제품에 따라 달라질 수 있다.

5. Command와 Address는 Data와 별도로 전달된다

대표적인 DRAM 동작에는 다음과 같은 것들이 있다.

ACTIVATE
READ
WRITE
PRECHARGE
REFRESH

여기서 READ를 수행한다고 하면 데이터 뿐만 아니라 어느 Bank, Row, Column을 대상으로 하는지도 지정해야 한다. 그래서 DQ는 실제 데이터를 전달하지만, Controller가 DRAM에 DQ만 보내서는 원하는 Memory Cell에 접근할 수 없을 것이다.

따라서 Controller는 DRAM에 어떤 동작을 수행하고 어느 위치에 접근할지를 알려줘야 한다.

이에 DRAM에서는 크게 두 종류의 정보가 이동한다.

  • Command / Address : 어디에서 어떤 동작을 수행할 것인가
  • DQ : 실제 어떤 Data를 주고받을 것인가

DDR4와 DDR5는 Command/Address Interface의 구체적인 구성에도 차이가 있다. DDR4에서는 여러 Command 및 Address 신호가 사용되며, DDR5에서는 CA Bus 중심의 구조가 사용된다.

6. Clock과 DQS는 무엇이 다른가?

DRAM에는 CK라는 Clock도 사용된다. 그렇다면 DQS라는 Timing 신호를 별도로 사용하는 이유는 무엇일까?

 

고속 신호가 PCB와 Package를 지나면 전파 지연이 발생한다. 또한 CK와 DQ는 서로 다른 배선을 지나므로 실제 Receiver에 도착하는 Timing을 완전히 동일하게 만들 수 없다. 따라서 DQ를 보내는 측이 DQS도 함께 보내면 Receiver는 멀리 떨어진 Clock만 보는 대신 DQ와 함께 전달된 Timing 기준을 이용할 수 있다.

이것이 Source Synchronous Interface를 사용하는 중요한 이유이다.

  • CK : Command / Address 등의 동작 Timing 기준
  • DQS : DQ Data 전송의 Timing 기준

7. DRAM은 데이터를 Burst로 전달한다

DRAM에서는 하나의 READ 또는 WRITE Command를 보낸 뒤 Data 하나만 전달하는 것이 아니라 여러 Data를 연속해서 전달할 수 있다. 이를 Burst 전송이라고 한다.

READ Command
     ↓
D0 → D1 → D2 → D3 → ...

각각의 데이터 전송 시점을 Data Beat라고 생각할 수 있다.

DDR은 Double Data Rate의 약자로, Data 전송에서 DQS의 Rising Edge와 Falling Edge를 모두 이용한다. 따라서 DQS의 각 Edge마다 하나의 Data Beat가 전달될 수 있다.

DQS     ↑    ↓    ↑    ↓    ↑    ↓

DQ      D0   D1   D2   D3   D4   D5

즉 한 번의 DQS Cycle에서는 Rising Edge와 Falling Edge를 이용하여 두 번의 Data Beat가 전달될 수 있다.

 

Burst Length란?

Burst Length는 하나의 READ 또는 WRITE Command에 의해 연속해서 전달되는 Data Beat의 개수를 의미한다. 예를 들어 BL8은 하나의 READ 또는 WRITE Command 이후 8번의 Data Beat가 연속해서 전달된다는 뜻이다. 마찬가지로 BL16은 16번의 Data Beat가 전달된다는 의미이다.

여기서 Burst Length와 Device Width는 구분해야 한다. Device Width는 한 번의 Data Beat에서 몇 bit를 병렬로 전달하는지를 나타내고, Burst Length는 이러한 Data Beat가 한 번의 Command 이후 몇 번 연속해서 전달되는지를 나타낸다.

예를 들어 x8 DRAM Device가 BL8으로 동작한다면 한 번의 Data Beat에서 8 bit를 전달하고, 이를 8번 연속해서 전송한다. 따라서 하나의 Burst에서는 8 bit × 8 = 64 bit의 Data가 전달된다.

DDR4에서는 기본적으로 BL8이 사용되고, DDR5에서는 기본 Burst Length가 BL16으로 증가하였다.

따라서 BL16의 16은 Data Bus Width가 16 bit라는 뜻이 아니라, 하나의 Burst에서 16개의 Data Beat가 연속해서 전달된다는 의미이다.

8. Device, Rank, Channel

DRAM Interface 관련 문서를 보면 Device, Rank, Channel이라는 표현도 자주 등장한다.

Device는 하나의 DRAM Component를 의미한다. 앞서 살펴본 x4, x8, x16은 각각 하나의 Device가 가지는 Device Width를 나타낸다.

Rank는 여러 DRAM Device가 하나의 그룹으로 함께 선택되어 동작하는 단위이다. 일반적인 DDR4 DIMM에서는 하나의 Rank를 구성하는 여러 Device가 각각 Data Bus의 일부를 담당하여 전체 Data Bus Width를 구성한다.

예를 들어 x8 Device로 64-bit Data Bus Width를 구성한다면 다음과 같다.

\[
\begin{aligned}
&\text{x8 Device} \times 8\text{개} \\
&= 8\,\text{bit} \times 8 \\
&= 64\,\text{bit Data Bus Width} \\
&\Rightarrow \text{하나의 Rank 구성 가능}
\end{aligned}
\]

따라서 Rank는 단순히 DRAM Device의 개수를 나타내는 용어가 아니라, Controller의 선택에 따라 함께 동작하는 DRAM Device의 그룹을 의미한다.

Channel은 Memory Controller가 독립적으로 제어할 수 있는 Memory Interface 경로를 의미한다.

Memory Controller
       │
       ├── Channel 0 ── DRAM
       │
       └── Channel 1 ── DRAM

각 Channel은 독립적인 Memory Interface를 가지므로 Controller는 여러 Channel을 이용하여 Memory Access를 병렬로 처리할 수 있다.

다만 Rank와 Channel의 구체적인 구성은 DDR 세대와 시스템 구조에 따라 달라질 수 있다. 특히 SSD에서는 DIMM 대신 DRAM Package가 PCB에 직접 장착되는 경우가 많으므로, 여기서는 각 용어의 기본적인 의미를 이해하는 정도로 넘어가자.

9. DRAM I/O Timing

DQ와 DQS는 높은 속도로 동작하기 때문에 Receiver가 아무 순간에나 DQ를 읽을 수 있는 것은 아니다.

Receiver가 Data를 Sampling하기 전에는 DQ가 일정 시간 안정되어 있어야 하며, Sampling 직후에도 일정 시간 값이 유지되어야 한다.

이를 각각 Setup Time과 Hold Time이라고 한다.

                Sampling
                   ↓

DQ  ──────── Valid Data ────────
         Setup       Hold

또한 DQ0, DQ1, DQS와 같은 신호가 Receiver에 완전히 같은 순간에 도착하지 않을 수도 있다. 신호간 도착 시간 차이를 Skew라고 한다.

Clock이나 Strobe의 Edge가 이상적인 위치에서 시간에 따라 조금씩 흔들리는 현상은 Jitter라고 한다.

Setup/Hold, Skew, Jitter의 기본 개념은 NAND I/O에서 살펴본 것과 동일하다.

DRAM에서는 Data Rate가 높아질수록 허용되는 Timing Margin이 작아지므로 이러한 차이를 조정하기 위한 Training이 중요해진다.

10. ODT는 왜 필요한가?

고속 신호는 PCB Trace를 따라 전압과 전류의 변화가 파동처럼 이동하며, 이때 전압과 전류의 비율은 Trace의 특성 임피던스에 의해 정해진다. 신호가 다른 임피던스를 가진 지점에 도달하면 기존 전압·전류 비율을 그대로 유지할 수 없기 때문에, 경계 조건을 맞추는 과정에서 일부 신호가 반대 방향으로 되돌아간다. 이를 Reflection이라고 한다.

Controller ──────────────→ DRAM
                           │
                     일부 신호 반사
                           ↓

Reflection이 커지면 Receiver에서 관찰되는 파형이 왜곡되고, 0과 1을 안정적으로 판단할 수 있는 Margin이 줄어들 수 있다.

이를 줄이는 방법 중 하나가 Termination이다.

DDR DRAM에서는 DRAM Chip 내부에 Termination 저항을 제공하는 ODT가 사용된다. ODT(On-Die Termination)는 DRAM Die 내부에 구현된 종단 회로로, 필요할 때 I/O에 적절한 종단 저항을 형성하여 Reflection을 줄이는 기능이다.

DDR4에서는 주로 DQ/DQS와 같은 Data Interface에 ODT가 사용되고, DDR5에서는 CA Bus까지 Termination 적용 범위가 확대되었다.

따라서 ODT는 단순히 DRAM 안에 저항 하나가 있다는 개념보다는, 고속 신호의 Reflection을 줄여 안정적인 통신을 돕는 기능이라고 이해하는 것이 좋다.

11. Training은 왜 필요한가?

PCB와 Package를 설계하더라도 실제 신호 Timing은 모든 시스템에서 완전히 같지 않다.

다음과 같은 요인이 영향을 미친다.

  • PCB Trace 길이
  • Package 특성
  • Process 편차
  • Voltage 변화
  • Temperature 변화
  • Driver / Receiver 특성

따라서 Memory Controller는 DRAM이 제공하는 Training 기능을 이용하여 실제 Hardware에서 신호가 언제 도착하고 어느 전압에서 안정적으로 구분되는지를 확인한다.

그 결과를 바탕으로 PHY 내부의 Delay나 Vref와 같은 설정을 조정하여, Receiver가 데이터를 안정적으로 Sampling할 수 있는 Timing과 Voltage Margin을 확보한다.

실제 DQ / DQS의 도착 Timing과 전압 특성 확인
                ↓
      PHY의 Delay / Vref 조정
                ↓
데이터를 안정적으로 Sampling할 수 있는 구간 확보

11.1 Write Training

Write 동작에서는 Controller가 DQ와 DQS를 DRAM으로 전송한다.

실제 PCB에서는 CK, DQS, DQ가 서로 다른 경로를 지나기 때문에 각 신호의 도착 Timing에 차이가 생길 수 있다. 따라서 Controller는 Write Training을 통해 DQS와 DQ의 Timing 등을 조정하여 DRAM이 데이터를 안정적으로 받아들일 수 있는 구간을 찾는다.

Write Training 과정에서 사용되는 대표적인 방법 중 하나가 Write Leveling이다.

DIMM의 Fly-by 구조에서는 CK가 여러 DRAM Device를 따라 전달되기 때문에 Device마다 CK가 도착하는 시간이 조금씩 다를 수 있다. Write Leveling은 이러한 차이를 고려하여 각 DRAM Device에서 CK와 Write DQS의 상대적인 Timing을 맞추는 과정이다.

11.2 Read Training

Read에서는 DRAM이 DQ와 DQS를 Controller로 보낸다.

Controller는 들어오는 DQ를 어느 Timing에서 받아야 가장 안정적인지 찾아야 한다. 이를 위해 알려진 Pattern을 반복적으로 읽으면서 정상적으로 Data를 받을 수 있는 Timing 영역을 확인하고 Sampling 위치를 조정할 수 있다.

11.3 Command/Address Training

고속 DDR에서는 Data만 정확하게 전달되면 되는 것이 아니다. Command와 Address도 적절한 Timing에 DRAM에 도착해야 한다.

DDR5에서는 CA Training과 CS Training을 통해 Command/Address 및 Chip Select 신호의 Timing Margin을 조정할 수 있다.

결국 DRAM Training은 특정 신호 하나만 맞추는 과정이 아니다. 실제 Board와 DRAM의 특성을 확인하고 DQ, DQS, Command/Address 등의 Timing과 필요한 기준 전압을 조정하여 안정적인 동작 Margin을 확보하는 과정이라고 이해할 수 있다.

12. DRAM I/O와 Signal Integrity

지금까지 살펴본 내용을 정리하면 DRAM I/O는 단순히 데이터를 전달하는 배선의 집합이 아니다.

Data Rate가 증가하면 하나의 Data를 전달할 수 있는 시간은 짧아진다.

따라서 동일한 크기의 Skew, Jitter, Reflection이 발생하더라도 전체 Data Window에서 차지하는 비율은 증가한다.

\[
\begin{gathered}
\text{Data Rate 증가} \\
\downarrow \\
\text{Timing / Voltage Margin 감소} \\
\downarrow \\
\text{Skew, Jitter, Reflection의 영향 증가} \\
\downarrow \\
\text{Termination과 Training의 중요성 증가} \\
\downarrow \\
\text{Signal Integrity 중요성 증가}
\end{gathered}
\]

참고자료

Micron DDR5 SDRAM
https://www.micron.com/products/memory/dram-components/ddr5-sdram

Micron DDR5: More Than a Generational Update
https://www.micron.com/content/dam/micron/global/public/products/white-paper/ddr5-more-than-a-generational-update-wp.pdf

Micron DDR5 Client Module Features
https://www.micron.com/content/dam/micron/global/public/products/white-paper/ddr5-key-module-features-wp-client.pdf

Samsung DDR4 SDRAM Data Sheet
https://download.semiconductor.samsung.com/resources/data-sheet/DS_K4A8G165WB_BC_I_Rev1_6-1.pdf

Intel DDR5 Memory Interface
https://www.intel.com/content/www/us/en/docs/programmable/772538/23-4-6-0-0/dimm-options-11752.html

ONFI 6.0 Specification
https://onfi.org/files/ONFI_6_0_Final.pdf

Samsung K4A8G165WB Datasheet

K4A8G165WB pdf, K4A8G165WB 다운로드, K4A8G165WB 상세설명, K4A8G165WB 데이터시트, K4A8G165WB view ::: ALLDATASHEET :::

'Semiconductor' 카테고리의 다른 글

NAND I/O  (0) 2026.10.07
NVMe  (0) 2026.10.01
PCIe  (0) 2026.09.29
Custom HBM이란? Core Die와 Base Die부터 이해하기  (0) 2026.09.27
SSD Form Factor  (0) 2026.09.24