SSD Internal Parallelism Channel Die Plane
SSD 내부 병렬성 상세 분석
Channel · Package · Die(LUN) · Plane · Superpage/Stripe · Queue Depth
SSD의 성능은 단일 NAND 셀의 속도보다 얼마나 많은 내부 자원을 동시에 점유하느냐에 더 크게 좌우됩니다. 본 문서는 채널, 패키지, 다이, 플레인으로 이어지는 SSD 내부 병렬성 계층과, 이를 실제 처리량으로 바꾸는 스케줄링 조건을 분석합니다.
같은 NAND 세대와 같은 컨트롤러 계열을 쓰더라도 용량별 성능이 달라지는 이유도 이 병렬성 계층에서 설명됩니다. 더 큰 모델은 더 많은 die와 package를 탑재해 병렬로 점유할 수 있는 경로가 늘어나고, enterprise SSD는 여기에 over-provisioning과 높은 Queue Depth를 더해 내부 자원을 더 안정적으로 채웁니다.
1. SSD 병렬성의 계층 구조
플래시 병렬성은 Channel -> Package -> Die(LUN) -> Plane 순으로 쌓입니다. 컨트롤러는 여러 호스트 요청을 이 계층에 분산해 동시에 발행하고, 각 경로가 독립적으로 busy 상태가 되도록 만들어 대역폭을 끌어냅니다.
따라서 같은 용량의 SSD라도 채널 수, 패키지 배치, 다이 수가 다르면 체감 성능이 크게 달라집니다. 고용량 모델이 같은 제품군 내에서도 더 빠른 이유가 여기에 있습니다.
계층별 비교
| 계층 | 병렬 단위 | 잘 맞는 작업 | 주된 제약 |
|---|---|---|---|
| Channel | 독립 NAND 패키지 경로 | 대용량 순차 읽기/쓰기 | 낮은 Queue Depth에서 채우기 어려움 |
| Package | 한 채널에 붙은 패키지 묶음 | stripe 쓰기 | 공유 채널 버스 경쟁 |
| Die / LUN | 같은 패키지 내부의 독립 다이 | die interleaving | 버스와 타이밍 제약 |
| Plane | 다이 내부의 plane | multi-plane read/program | 같은 위치의 페이지 정렬 조건 |
그림 1. SSD 내부 병렬성 계층 — Channel -> Package -> Die/LUN -> Plane
2. Channel 수준 병렬성
채널은 컨트롤러가 서로 다른 NAND 패키지에 명령을 분산하는 가장 큰 병렬성 축입니다. 큰 순차 쓰기는 여러 채널에 stripe되어 각 채널이 동시에 program을 수행하도록 만들 수 있고, 대역폭은 채널 수에 비례해 잘 증가합니다.
하지만 4KB 랜덤 I/O처럼 요청이 작거나 Queue Depth가 낮으면 채널 여러 개를 동시에 채우기 어렵습니다. 이 경우 SSD 내부 자원은 충분해도 실제 처리량은 채널 일부만 활용된 상태에서 멈춥니다.
그림 2. 멀티 채널 컨트롤러와 패키지 스트라이프 쓰기
3. Die/LUN Interleaving과 Plane 병렬성
같은 채널 안에서도 여러 Die(LUN)는 비교적 독립적으로 동작할 수 있습니다. 한 다이가 program busy 상태인 동안 다른 다이에 read를 보내는 interleaving이 가능하므로 채널 자원을 더 촘촘하게 사용하게 됩니다.
또한 하나의 Die 안에서도 여러 Plane에 대해 multi-plane operation을 수행하면 내부 병렬성이 증가합니다. 다만 같은 timing window, shared bus, ECC 엔진 같은 제약 때문에 이론치만큼 완전히 독립적인 것은 아닙니다.
plane-level parallelism은 target pages가 같은 위치에 있어야 하는 제약 때문에 항상 쉽게 쓰이지 않습니다. 실제 연구에서는 clean page를 일부 희생해 정렬을 맞추는 selective multi-plane policy가 제안되었고, 대표 서버 워크로드에서 평균 성능을 최대 28.82%까지 올리면서도 block erasure 수를 크게 늘리지 않았습니다. 컨트롤러는 이런 조건을 맞추기 위해 interleaving, copy-back, multi-plane 같은 명령을 워크로드와 매핑 상태에 따라 골라 씁니다.
그림 3. Die interleaving, multi-plane operation, cache program의 관계
4. Superpage/Stripe와 요청 크기 정렬
SSD는 종종 여러 채널/다이에 걸친 stripe 단위를 내부 write granularity처럼 활용합니다. 호스트가 큰 순차 쓰기를 보내면 각 경로에 한 페이지씩 나눠 써서 superpage처럼 병렬 기록할 수 있습니다.
반대로 작은 랜덤 쓰기가 많이 섞이면 한 stripe를 다 채우지 못한 채 부분 갱신이 반복되어 병렬성이 떨어지고, 나중에 GC 부담도 커집니다. 파일시스템이나 DB가 어느 정도 write coalescing을 해주면 SSD 입장에서는 훨씬 유리합니다.
요청 크기와 활용도
| 호스트 패턴 | 내부 활용도 | 결과 |
|---|---|---|
| 큰 순차 쓰기 | 높음 | stripe/superpage를 쉽게 채움 |
| 4KB 랜덤 I/O | 낮음 | 채널/다이를 충분히 못 채움 |
| 낮은 Queue Depth | 낮음 | outstanding command가 부족함 |
| write coalescing 후 대형 쓰기 | 높음 | GC와 WAF 부담이 줄어듦 |
그림 4. Superpage/Stripe 정렬 여부에 따른 병렬성 활용 차이
5. 동작 원리: 호스트 I/O가 병렬 자원으로 분산되는 과정
SSD 컨트롤러는 호스트에서 들어온 LBA 기반 요청을 그대로 NAND에 보내지 않습니다. 먼저 NVMe 큐에서 명령을 받아 요청 크기와 Queue Depth를 확인하고, FTL이 현재 매핑 상태와 free block 상태를 조회한 뒤, 여러 channel과 die에 분산할 수 있는 형태로 재배치합니다. 순차 쓰기라면 여러 channel에 한 페이지씩 stripe하고, 읽기라면 가능한 die에 interleaving하여 대기 시간을 숨깁니다.
이 과정에서 병렬성은 항상 제약과 함께 움직입니다. multi-plane 명령은 같은 위치 정렬 조건이 필요하고, die interleaving은 shared bus와 timing window를 피해 발행돼야 하며, foreground GC나 LDPC soft decode가 겹치면 같은 자원을 두고 경쟁이 발생합니다. 따라서 실제 SSD 성능은 병렬 하드웨어 개수만이 아니라, 스케줄러가 어떤 시점에 어떤 명령 조합을 선택하느냐에 의해 결정됩니다.
6. 병렬성을 깎아먹는 병목
GC는 valid page migration으로 내부 대역폭을 잠식하고, LDPC soft decode 같은 ECC 경로는 읽기 지연을 늘립니다. 또 동시에 너무 많은 program을 허용하면 전력과 열 한계에 걸리므로 컨트롤러는 발행 수를 제한해야 합니다.
즉 SSD 성능은 '낸드가 빠른가'보다 '충돌 없이 충분한 수의 명령을 병렬 자원에 배치할 수 있는가'가 더 중요합니다. 이 때문에 Queue Depth, 워크로드의 순차성, GC 압박이 모두 같은 제품의 성능 편차를 만들어냅니다.
GC는 valid page migration으로 채널 점유 시간을 늘리고, ECC 경로는 read path의 지연을 키우며, power/thermal limit은 동시에 발행할 수 있는 program/read 수를 제한합니다. Queue Depth가 낮으면 이런 병목을 상쇄할 outstanding command 자체가 모자라서 내부 병렬성이 더 빨리 무너집니다.
그림 5. 병렬성을 감소시키는 대표 병목 — GC / ECC / 전력 / Queue Depth
7. 장단점
장점
- 병렬 경로를 충분히 채우면 같은 NAND 세대에서도 처리량과 tail latency를 동시에 개선할 수 있습니다.
- 큰 순차 I/O, 높은 Queue Depth, 적절한 write coalescing은 GC와 WAF를 함께 줄여 성능과 수명 모두에 유리합니다.
- 채널, die, plane을 단계적으로 활용하므로 제품 설계 시 용량 증가가 성능 확장으로 자연스럽게 이어질 수 있습니다.
단점 및 주의점
- 작은 랜덤 I/O나 낮은 Queue Depth에서는 내부 자원이 남아도 실제 성능 향상이 제한됩니다.
- multi-plane, interleaving, cache program은 정렬 조건과 timing 제약이 까다로워 이론 병렬성을 항상 실효 성능으로 바꾸지는 못합니다.
- foreground GC, LDPC soft decode, 전력/열 제한이 겹치면 병렬성이 오히려 tail latency와 WAF 악화로 되돌아올 수 있습니다.
8. 시스템 관점 정리
소비자 SSD는 비용과 전력 제약 때문에 채널 수와 DRAM이 제한적이고, enterprise SSD는 더 많은 채널과 높은 OP로 병렬성을 안정적으로 유지합니다. 따라서 벤치마크를 볼 때는 단순한 NAND 세대보다 채널 구성과 용량별 다이 수를 함께 봐야 합니다.
결론적으로 SSD 내부 병렬성은 '많은 NAND를 달아놓았다'는 의미가 아니라, 호스트 I/O 패턴을 멀티 채널·멀티 다이·멀티 플레인으로 얼마나 잘 정렬시키느냐의 문제입니다.
그림 6. FTL이 LBA를 PPA로 재배치하고 GC, Wear Leveling, OP를 통해 병렬성 기반을 유지하는 방식
그림 7. Host Queue에서 Channel, Package, Die/LUN, Plane으로 내려가는 내부 병렬성 계층
그림 8. 큰 순차 쓰기와 작은 랜덤 I/O가 채널 활용도에 미치는 차이
그림 9. 같은 channel 안에서 die interleaving과 multi-plane operation이 겹쳐지는 방식
그림 10. superpage/stripe 정렬이 맞을 때와 어긋날 때의 내부 write granularity 차이
그림 11. 버스 공유, ECC, 전력 제한, 낮은 Queue Depth까지 포함한 병렬성 저하 요인 요약
9. 관련 기술
-
NAND NVMe SSD Analysis: SSD 인터페이스와 NAND/컨트롤러의 기본 구성
-
NAND Flash Internals: NAND의 셀/페이지/블록 동작과 물리 제약
-
FTL WearLeveling GarbageCollection: 매핑, GC, Wear Leveling, TRIM
-
ZNS OpenChannelSSD Analysis: 호스트와 장치가 병렬성을 더 직접적으로 나누는 방식
-
NVMe Architecture: Queue Depth, SQ/CQ, 병렬 I/O 발행 구조
-
ECC Error Correction: BCH/LDPC와 읽기 복원 경로
참고 문헌
-
Feng Chen, Binbing Hou, Rubao Lee, Internal Parallelism of Flash Memory-Based Solid-State Drives, ACM Transactions on Storage, DOI: 10.1145/2818376
-
I. Shin, Improving internal parallelism of solid state drives with selective multi-plane operation, Electronics Letters, 54(2), 64-66, DOI: 10.1049/el.2017.3912
-
Solid-state drive (Wikipedia): https://en.wikipedia.org/wiki/Solid-state_drive
-
Flash memory (Wikipedia): https://en.wikipedia.org/wiki/Flash_memory
10. 핵심 정리
SSD 내부 병렬성은 채널, 패키지, 다이, 플레인이 각각 얼마나 잘 채워지는지에 달려 있습니다. 큰 순차 I/O와 높은 Queue Depth는 이 계층을 잘 활용하지만, 4KB 랜덤 I/O나 낮은 QD는 자원을 남기기 쉽습니다.
멀티플레인과 다이 인터리빙은 병렬성을 크게 끌어올릴 수 있지만, 같은 위치 정렬, 공유 버스, ECC, GC, 전력 한계가 함께 따라옵니다. 결국 좋은 SSD 성능은 NAND 세대 자체보다 호스트 I/O 패턴을 내부 자원에 맞게 정렬하는 능력에서 나옵니다.