NVMe SATA 차이, 큐 구조가 SSD 속도를 가르는 방식
저수지에 물이 아무리 가득해도, 집까지 이어진 수도관이 가늘면 한꺼번에 틀 수 있는 물의 양은 정해져 있습니다. 수도꼭지를 여러 집이 동시에 틀면 관 입구에서 순서를 기다려야 하죠.
SSD를 고를 때 자주 나오는 NVMe SATA 차이도 이런 관점으로 보면 쉽습니다. 둘 다 같은 낸드 플래시를 담고 있을 수 있지만, 컴퓨터와 이어지는 관과 줄 서는 방식이 다릅니다.
수도관과 다른 점이 있습니다. 물은 흐르기만 하면 되지만, 저장 장치의 인터페이스에는 명령을 어떻게 쌓고, 완료를 어떻게 알리고, 몇 건을 동시에 처리하는지에 대한 약속까지 포함됩니다. 이 약속의 차이가 뒤에서 볼 성능 차이의 절반을 설명합니다.
NVMe SATA 차이는 낸드가 아니라 연결 방식에서 나옵니다
SATA(Serial ATA)는 원래 하드디스크를 연결하려고 만든 직렬 인터페이스이고, SSD가 등장했을 때 기존 하드디스크 자리에 그대로 끼울 수 있어서 빠르게 퍼졌습니다. 반면 NVMe(NVM Express)는 처음부터 플래시처럼 빠른 비휘발성 메모리를 PCIe(PCI Express) 버스에 붙이기 위해 설계된 명령 규격입니다.
그래서 두 SSD 안쪽의 낸드와 컨트롤러는 닮아 있어도, 바깥으로 나가는 길이 다릅니다. SATA는 메인보드의 SATA 컨트롤러를 거쳐 AHCI라는 하드디스크 시절의 명령 방식으로 소통하고, NVMe는 PCIe 레인을 통해 NVMe 전용 명령 방식으로 소통합니다.
이 차이는 두 갈래로 나타납니다. 하나는 선로 자체가 한 번에 실어 나를 수 있는 양, 곧 대역폭이고, 다른 하나는 요청을 얼마나 많이 동시에 처리할 수 있느냐는 병렬성입니다.
SATA와 AHCI, 하나의 줄에 서는 구조
SATA 3.0은 선로 속도가 6 Gbit/s이지만, 8b/10b 인코딩으로 10비트 중 8비트만 데이터가 되어 유효 속도는 4.8 Gbit/s, 곧 이론상 600 MB/s입니다. 프로토콜 오버헤드를 빼면 실제로는 대략 500 MB/s대 중반이 한계라고 보는 경우가 많습니다.
그래서 낸드와 컨트롤러가 더 빨라져도 SATA SSD는 이 천장에 먼저 닿습니다. 관이 가늘면 저수지가 아무리 커도 소용없다는 것과 같은 이야기입니다.
두 번째 제약은 줄입니다. AHCI는 명령 큐가 하나뿐이고 한 번에 대기시킬 수 있는 명령은 32개입니다. 하드디스크는 헤드가 움직이는 데 몇 밀리초가 걸려서 이 정도 큐로도 충분했지만, 낸드는 수십 마이크로초 단위로 응답하기 때문에 줄이 짧고 하나라는 점이 병목이 됩니다.
여러 CPU 코어가 동시에 저장 장치에 요청을 보내는 상황도 문제입니다. 큐가 하나이면 코어들이 같은 큐를 두고 순서를 다투게 되고, 이 경합이 소프트웨어 지연으로 나타납니다.
NVMe가 PCIe 위에서 여러 큐를 쓰는 방식
NVMe는 큐 구조부터 다시 설계했습니다. 규격상 최대 65,535개의 입출력 큐를 둘 수 있고 큐 하나에는 최대 65,536개의 명령을 담을 수 있습니다. 실제 SSD는 이보다 훨씬 적은 수를 지원하는 제품이 대부분이지만, 구조적으로는 CPU 코어마다 전용 큐를 줄 만큼 여유가 있습니다.
NVMe 명령 하나가 처리되는 흐름
- 호스트가 명령을 메모리에 있는 제출 큐(SQ, Submission Queue)에 적습니다.
- 호스트가 SSD의 도어벨(Doorbell) 레지스터에 새 명령이 들어왔다고 알립니다.
- SSD 컨트롤러가 제출 큐에서 명령을 가져가 낸드 접근을 수행합니다.
- 결과를 완료 큐(CQ, Completion Queue)에 적습니다.
- 인터럽트로 호스트에 완료를 알리고, 호스트는 완료 큐를 읽어 마무리합니다.
핵심은 코어마다 자기 제출 큐와 완료 큐 쌍을 가질 수 있어서 다른 코어와 같은 줄을 두고 다투는 일이 줄어든다는 점입니다. 호스트가 SSD를 깨우는 동작이 도어벨에 값을 쓰는 것 정도로 가벼워서 하드디스크 시대의 절차가 남긴 부담도 줄어듭니다.
물리적인 길도 다릅니다. NVMe SSD는 보통 PCIe 레인 네 개를 쓰고, PCIe는 세대가 올라갈 때마다 레인당 속도가 대략 두 배씩 늘어온 경향이 있어 SATA의 6 Gbit/s 선 하나보다 훨씬 넓은 길을 열어 줍니다. 대신 높은 속도로 오래 쓰면 발열이 커서 방열판이 필요하고, 열이 심하면 속도를 낮추는 제한이 걸리기도 합니다.
큐 깊이와 대역폭을 숫자로 가늠해 보는 가상 계산
동시에 처리하는 요청 수가 많을수록 낸드의 응답을 기다리는 시간이 겹쳐서 처리량이 올라갑니다. 대략 초당 처리 건수는 동시 요청 수를 평균 응답 시간으로 나눈 값입니다.
가상 계산 예시, 4 KB 임의 읽기실제 제품 값이 아니라 설명을 위한 가정입니다. 요청 하나의 평균 응답 시간을 80 µs, SATA SSD의 유효 대역폭을 550 MB/s로 둡니다.
동시 요청이 1개이면 1 ÷ 80 µs = 12,500건/초이고, 4 KB를 곱하면 약 51 MB/s입니다. 동시 요청이 32개이면 32 ÷ 80 µs = 400,000건/초까지 이론상 늘어납니다.
그런데 SATA는 대역폭 550 MB/s ÷ 4 KB ≈ 134,000건/초가 먼저 한계가 됩니다. NVMe는 대역폭 한계가 몇 배 높고 큐도 훨씬 많아서, 낸드와 컨트롤러가 허락하는 만큼 더 오래 병렬성을 늘릴 수 있습니다.
이 계산에서 눈여겨볼 곳은 동시 요청이 1개일 때입니다. 약 51 MB/s는 SATA의 한계인 550 MB/s의 십분의 일도 안 되니, 인터페이스가 넓어도 일감이 적으면 그 넓이를 쓸 일이 없다는 뜻입니다.
그래서 NVMe로 바꾸면 모든 작업이 몇 배 빨라진다는 기대는 맞지 않습니다. 프로그램을 열거나 작은 파일을 읽는 일상 작업은 동시 요청이 적은 경우가 많아서 체감 차이가 작고, 큰 파일 복사나 여러 작업이 동시에 몰리는 서버에서 차이가 뚜렷하게 벌어집니다. NVMe SATA 차이가 가장 크게 드러나는 곳도 바로 그런 환경입니다.
M.2와 NVMe를 같은 말로 쓰면 생기는 혼동
M.2는 작은 카드 모양의 SSD를 꽂는 소켓과 보드의 폼팩터(Form Factor), 곧 물리적인 규격입니다. NVMe나 SATA 같은 프로토콜과는 다른 층위의 이야기입니다.
M.2 SSD는 모두 NVMe라는 말은 흔한 오해입니다. M.2 모양이면서 SATA 프로토콜로 동작하는 SSD도 있고, 같은 소켓처럼 보여도 메인보드가 두 방식 중 하나만 지원하는 경우가 있으니 구매 전에 메인보드 사양서를 확인해야 합니다.
반대로 NVMe SSD가 M.2 모양만 있는 것도 아닙니다. 서버에서는 U.2처럼 2.5인치 크기에 PCIe 신호를 연결하는 규격도 쓰이는데, 이때도 위에서 흐르는 프로토콜이 NVMe라는 점은 같습니다.
NVMe와 SATA SSD 비교 표
| 구분 | SATA SSD | NVMe SSD |
|---|---|---|
| 물리 연결 | SATA 선 하나, 6 Gbit/s급 (유효 약 600 MB/s 이론) | PCIe 레인 여러 개, 세대가 오르며 레인당 속도 확대 |
| 명령 규격 | AHCI, 큐 1개에 명령 32개 | NVMe, 규격상 큐 최대 65,535개에 큐당 명령 최대 65,536개 |
| CPU 쪽 부담 | 코어들이 같은 큐를 두고 경합 | 코어마다 전용 큐 쌍 배치 가능 |
| 잘 드러나는 곳 | 일상 작업, 호환성이 중요한 기존 시스템 | 대용량 순차 전송, 동시 요청이 많은 서버 |
| 부담 요소 | 대역폭이 선로에서 일찍 막힘 | 발열 관리와 전력 소비 |
| 놓치기 쉬운 점 | M.2 모양이면 NVMe라는 생각과 NVMe면 모든 작업이 몇 배 빠르다는 생각에 주의합니다. | |
핵심 정리
NVMe SATA 차이는 낸드 종류의 차이가 아니라 컴퓨터와 이어지는 길과 줄 서는 방식의 차이입니다. SATA는 하드디스크 시절의 선 하나와 단일 큐 위에서 대역폭이 일찍 막히고, NVMe는 PCIe의 넓은 길과 코어마다 쓸 수 있는 다중 큐로 낸드의 병렬성을 끌어냅니다.
다만 동시 요청이 적은 일상 작업에서는 이 길의 넓이가 다 쓰이지 않아 체감 차이가 작습니다. 수도관을 굵게 바꿔도 물을 한 방울씩만 쓰면 달라지지 않는 것과 같아서, 사용 패턴을 먼저 보고 인터페이스를 고르는 것이 합리적입니다.
면접 대비 질문
면접 대비 질문NVMe SSD가 SATA SSD보다 데이터센터 환경에서 유리한 이유를 인터페이스와 큐 구조 관점에서 설명해 보세요.
[답변 포인트] SATA는 선로 속도와 8b/10b 인코딩 때문에 대역폭이 대략 600 MB/s 이하로 막히고, AHCI는 큐 1개에 명령 32개라는 하드디스크 시대의 구조라는 점으로 시작합니다. NVMe는 PCIe 위에서 레인 수만큼 대역폭을 넓힐 수 있고, 제출 큐와 완료 큐 쌍을 코어마다 둬서 경합 없이 많은 요청을 동시에 처리한다고 연결합니다. 처리량이 동시 요청 수를 응답 시간으로 나눈 값으로 가늠된다는 점, 동시 요청이 적은 작업에서는 체감 차이가 작다는 점, 발열 관리가 부담이라는 점까지 덧붙이면 좋습니다.









