NVM 익스프레스
1. 개요
NVM 익스프레스(NVMe)는 비휘발성 메모리(NVM)에 접근하기 위한 인터페이스 표준으로, 2007년 인텔 개발자 포럼에서 처음 제안되었다. 2011년 NVMe 1.0 사양이 공개되었으며, 2014년 NVM Express, Inc. 법인이 설립되었다. NVMe는 AHCI보다 향상된 성능을 제공하며, 다양한 폼 팩터(AIC, U.2, M.2 등)를 지원한다. 주요 운영체제에서 기본적으로 지원되며, NVMe-oF(NVMe over Fabrics) 기술을 통해 네트워크를 통한 원격 NVMe 장치 연결도 가능하다.
이미지 준비중입니다.
| 정식 명칭 | 비휘발성 메모리 호스트 컨트롤러 인터페이스 사양 |
|---|---|
| 약칭 | NVMe |
| 개발 시작 | 2011년 |
| 발표 상태 | 게시됨 |
| 웹사이트 | NVM 익스프레스 공식 웹사이트 |
| 최신 버전 | 2.1 |
| 최신 버전 날짜 | 2024년 8월 5일 |
| 개발 조직 | NVM 익스프레스, Inc. (2014년 이후) NVM 익스프레스 워크 그룹 (2014년 이전) |
| 특징 | 고대역폭 및 낮은 대기 시간 스토리지 액세스를 제공하도록 설계됨 |
|---|
| 종류 | 인터페이스 |
|---|---|
| 사용 | 저장 장치 연결 |
| 기반 | PCI 익스프레스 |
| 형태 | PCI 익스프레스 확장 카드 M.2 커넥터 |
-
솔리드 스테이트 컴퓨터 저장 장치 -
USB 플래시 드라이브
USB 플래시 드라이브는 USB 인터페이스를 통해 컴퓨터와 연결되는 휴대용 저장 장치로, 플래시 메모리 발명 후 상용화되어 플로피 디스크나 CD를 대체하며 데이터 저장, 운영 체제 부팅 등 다양한 용도로 사용되지만 위조 제품, 보안 위협, 제한적인 쓰기 횟수 등의 문제점도 있다. -
솔리드 스테이트 컴퓨터 저장 장치 -
솔리드 스테이트 드라이브
솔리드 스테이트 드라이브(SSD)는 반도체를 이용해 정보를 저장하는 장치로, 빠른 속도, 낮은 전력 소비, 적은 소음, 뛰어난 내구성을 특징으로 하며, 낸드 플래시 메모리를 기반으로 다양한 인터페이스를 통해 컴퓨터에 연결된다. -
컴퓨터 하드웨어 표준 -
S/PDIF
S/PDIF는 디지털 오디오 전송을 위한 인터페이스 표준으로, 동축 케이블이나 광섬유를 통해 CD, DVD 플레이어, 컴퓨터 등에서 오디오 신호를 출력하며, 소비자용 기기에서 SCMS를 지원하고 돌비 디지털, DTS와 같은 압축된 오디오 신호를 전송하여 서라운드 사운드를 구현하는 데 사용된다. -
컴퓨터 하드웨어 표준 -
RS-232
RS-232는 데이터 단말 장치와 데이터 회선 종단 장치 간 직렬 통신을 위한 표준 인터페이스로, 터미널-모뎀 연결을 위해 개발되었으나 현재는 일부 산업 장비 및 시스템 콘솔 포트 등에 사용되며 전기적 신호 특성, 인터페이스 기계적 특성, 회로 기능 등을 정의하고 25핀 또는 9핀 D-서브미니어처 커넥터를 사용한다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
2. 역사
NVMe는 SSD 기술 발전에 따라 SATA, SAS, 파이버 채널 등 기존 인터페이스의 한계를 극복하기 위해 등장했다. SATA는 주로 기계식 하드 디스크 드라이브 (HDD)를 위해 설계되어, SSD의 성능 향상을 저해하는 요소가 되었다.
NVMe는 CPU, 플랫폼, 애플리케이션의 병렬성과 플래시 메모리의 낮은 지연 시간 및 내부 병렬성을 최대한 활용하도록 설계되었다. 이를 통해 이전 인터페이스에 비해 입출력(I/O) 오버헤드를 줄이고, 높은 병렬 처리와 낮은 지연 시간을 제공한다.
--
--
2.1. 초기 역사 (2007년 ~ 2011년)
인텔 개발자 포럼 2007에서 비휘발성 메모리 접근에 대한 새로운 표준의 상세 내용이 처음 공개되었는데, 이때 NVMHCI가 메모리 (플래시) 칩 쪽의 ONFI(Open NAND Flash Interface Working Group)를 포함하는 제안 형태의 아키텍처 디자인에서 호스트 쪽 프로토콜로 제시되었다. 그 해, 인텔이 주도한 NVMHCI 워킹 그룹이 창설되었다. NVMHCI 1.0 사양은 2008년 4월에 완료되어 인텔 웹 사이트에 공개되었다.
NVMe에 대한 기술적인 작업은 2009년 후반에 시작되었다. NVMe 사양은 NVM 익스프레스 워크그룹에 의해 개발되었는데, 이 그룹은 90개가 넘는 회사로 구성되었고, 인텔의 앰버 허프먼(Amber Huffman)이 그룹 의장을 맡았다. 버전 1.0 사양은 2011년 3월 1일에 공개되었고, 버전 1.1 사양은 2012년 10월 11일에 공개되었다.
2.2. 발전 및 상용화 (2012년 ~ 현재)
NVMe 기술은 2009년 후반부터 개발되기 시작했다. 90개 이상의 회사로 구성된 NVM 익스프레스 워크그룹이 개발을 주도했으며, 인텔의 Amber Huffman이 그룹 의장을 맡았다. NVMe 버전 1.0 규격은 2011년 3월 1일에, 버전 1.1 규격은 2012년 10월 11일에 공개되었다. 버전 1.1에는 멀티패스 입출력(이름공간 공유 포함) 및 임의 길이 scatter-gather 입출력 기능이 추가되었다.
2012년 8월, Integrated Device Technology(IDT)에서 최초의 상용 NVMe 칩셋을 출시했다. 2013년 7월에는 삼성전자가 최초의 NVMe 엔터프라이즈 드라이브인 XS1715를 발표했는데, 이는 3 GB/초의 읽기 속도를 지원하여 이전 제품보다 6배 더 빨랐다.
2014년 3월, NVM 익스프레스 워크그룹은 법인화되어 "NVM Express, Inc."가 되었다. 2014년 11월 기준으로 65개 이상의 회사로 구성되어 있으며, NVMe 규격의 소유, 유지보수, 업계 표준 인지도 향상을 촉진하고 있다. 이사회는 Promoter Group에서 선출된 13개 회사 (시스코, 델, EMC, HGST, 인텔, 마이크론, 마이크로소프트, NetApp, Oracle, PMC, 삼성, 샌디스크, 시게이트)로 구성된다.
NVMe 규격은 다음과 같이 발전해 왔다.
3. AHCI와의 비교
고급 호스트 컨트롤러 인터페이스(AHCI)는 소프트웨어 호환성이 넓지만, PCI 익스프레스 버스를 통해 연결된 솔리드 스테이트 드라이브(SSD)와 함께 사용할 때 최적의 성능을 내지 못하는 단점이 있다. AHCI는 CPU/메모리 하위 시스템을 회전하는 자기 저장 장치 기반의 훨씬 느린 스토리지 하위 시스템과 연결하는 것이 목적이었던 시기에 개발되었다. 그 결과, AHCI는 회전 매체보다 RAM에 더 가까운 SSD와 함께 사용할 때 비효율성이 발생한다.
NVMe는 PCI 익스프레스 SSD의 낮은 지연 시간과 병렬 컴퓨팅을 활용하고, CPU, 플랫폼, 응용 프로그램의 병렬화를 보완한다. AHCI 대비 NVMe의 기본적인 이점은 호스트 하드웨어와 소프트웨어의 병렬화를 이용할 수 있다는 것이며, 이는 명령 큐 깊이, 인터럽트 처리 효율성, 캐시 불가능한 프로세서 레지스터 접근 수 등에서 차이가 나며, 다양한 성능 개선으로 이어진다.
다음은 NVM 익스프레스를 사용하는 SSD인 PCI Express 3.0 ×4 확장 카드 형태의 인텔 SSD 750 시리즈 사진이다.
--
--
3.1. 상세 비교
고급 호스트 컨트롤러 인터페이스(AHCI)는 폭넓은 소프트웨어 호환성을 가지지만, PCI 익스프레스 버스를 통해 연결된 SSD와 함께 사용할 때 최적의 성능을 내지 못하는 단점이 있다. AHCI는 CPU/메모리 하위 시스템을 회전하는 자기 디스크 기반의 훨씬 느린 스토리지 하위 시스템과 연결하는 것이 목적이었던 시기에 개발되었기 때문이다. 그 결과, AHCI는 SSD와 함께 사용할 때 특정한 비효율성이 발생한다.
NVMe는 PCI 익스프레스 SSD의 낮은 레이턴시와 병렬 컴퓨팅을 활용하고, 동시대 CPU, 플랫폼, 응용 프로그램의 병렬화를 보완하기 위해 처음부터 다시 설계되었다.
AHCI 대비 NVMe의 기본적인 이점은 호스트 하드웨어와 소프트웨어의 병렬화를 이용할 수 있다는 점이며, 이는 명령 큐 깊이, 인터럽트 처리 효율성, 캐시 불가능한 프로세서 레지스터 접근 횟수 등의 차이에서 분명하게 드러나며, 다양한 성능 개선으로 이어진다.
아래 표는 NVMe와 AHCI 논리 장치 인터페이스 간 차이를 요약한 것이다.
| AHCI | NVMe | |
|---|---|---|
| 최대 큐 깊이 | 큐 하나 당 32개의 명령>65535개의 큐 | |
| 캐시 불가능한 레지스터 접근 수 (각각 2000 사이클) | 큐가 있는 명령마다 9개>명령 당 2개 | |
| MSI-X 와 인터럽트 스티어링 | 스티어링 없음>2048개의 MSI-X 인터럽트 | |
| 병렬화 및 다중 스레드 | 동기화 락이 필요>락 없음 | |
| 4 KB 명령의 효율성 | 2개의 직렬화된 호스트 DRAM 페치 필요>하나의 64바이트 페치의 |
4. 폼 팩터
NVMe 솔리드 스테이트 드라이브(SSD)는 AIC, U.2, U.3, M.2, EDSFF 등 다양한 폼 팩터로 제공된다.
시리얼 ATA(SATA)는 주로 HDD용으로 설계되었으며, 최대 전송 속도인 6 Gbps를 넘을 수 없어 SSD의 성능을 제한했다.
NVMe는 현대적인 CPU, 플랫폼, 애플리케이션의 병렬성과 플래시 메모리의 낮은 지연 시간 및 내부 병렬성을 최대한 활용하도록 설계되었다. 그 결과, 이전 인터페이스에 비해 I/O 오버헤드를 줄여 다양한 성능을 개선하고, 높은 병렬도의 명령 대기열과 낮은 지연 시간을 가능하게 했다.
NVMe 규격 제정 이전부터 하이엔드 SSD 제품 중에는 PCI Express를 사용한 비표준 인터페이스로 연결하는 것도 있었지만, 각 SSD 제조사의 드라이버가 필요했다. 이 규격으로 각 제조사가 특정 인터페이스를 위해 드라이버를 설계할 필요가 없어졌다.
대표적인 NVMe 장치에는 NGSFF (Next Generation Small Form Factor) NF1이 있다.
4.1. AIC (Add-in Card)
초기 NVMe 솔리드 스테이트 드라이브(SSD)는 대부분 PCIe 2.0 또는 3.0 인터페이스를 사용하는 HHHL(하프 하이트, 하프 랭스) 또는 FHHL(풀 하이트, 하프 랭스) AIC(애드인 카드) 형태였다. HHHL NVMe SSD 카드는 서버의 PCIe 슬롯에 쉽게 장착할 수 있다.
--
--
대표적인 NVMe 장치에는 PCI Express 표준 크기 확장 카드가 있다.
4.2. U.2 (SFF-8639)
U.2는 이전에는 SFF-8639로 알려져 있었으며, SATA Express와 동일한 물리적 포트를 사용하지만 최대 4개의 PCI Express 레인을 허용한다. 사용 가능한 서버는 최대 48개의 U.2 NVMe SSD를 결합할 수 있다.
대표적인 NVMe 장치에는 U.2 커넥터(SFF-8639)를 사용하여 4개의 PCI Express 레인을 지원하는 2.5인치 카드형 장치가 있다.
4.3. U.3 (SFF-TA-1001)
U.3(SFF-TA-1001)는 U.2 사양을 기반으로 하며 동일한 SFF-8639 커넥터를 사용한다. U.2와 달리 단일 "트라이 모드"(PCIe/SATA/SAS) 백플레인 소켓은 세 가지 유형의 연결을 모두 처리할 수 있다. 컨트롤러는 사용된 연결 유형을 자동으로 감지하는데, 이는 사용자가 SATA/SAS 및 NVMe에 대해 별도의 컨트롤러를 사용해야 하는 U.2와는 다른 점이다. U.3 장치는 U.2 호스트와 역호환되며, U.2 장치는 U.3 호스트와 함께 사용할 수 있다.
4.4. M.2
M.2는 이전에는 차세대 폼 팩터 (NGFF)로 알려졌으며, M.2 NVMe 솔리드 스테이트 드라이브 컴퓨터 버스를 사용한다. M.2 커넥터를 통해 제공되는 인터페이스는 PCI Express 3.0 이상 (최대 4개의 레인)이다.
--
--
4.5. EDSFF (Enterprise and Data Center SSD Form Factor)
EDSFF (Enterprise and Data Center SSD Form Factor)는 SFF-TA-1002 규격으로, 엔터프라이즈 및 데이터센터용 SSD 폼 팩터이다. EDSFF에는 다음과 같은 종류가 있다.
* E1.S: SFF-TA-1006
* ES: SFF-TA-1008, SFF-TA-1023
* E3.L
* E3.S
5. 운영 체제 지원
NVMe는 윈도우, macOS, 리눅스, FreeBSD, 크롬 OS 등 주요 운영 체제에서 기본적으로 지원된다.
* 윈도우의 경우, 윈도우 8.1과 윈도우 서버 2012 R2부터 NVMe를 기본 지원한다. 윈도우 7과 윈도우 서버 2008 R2는 업데이트를 통해 지원이 추가되었다. 2016년 윈도우 10 기념일 업데이트(버전 1607)에서 NVMe HMB에 대한 지원이 추가되었다.
* macOS는 OS X 요세미티 10.10.3 업데이트에서 NVMe 지원을 도입하였다.
* 리눅스의 경우, 리눅스 커널 3.3 버전부터 NVMe를 지원한다.
* FreeBSD는 10.2 버전부터 GENERIC 커널 구성에 NVMe 드라이버(nvd(4)와 nvme(4))가 기본 포함되었다.
* 크롬 OS는 2015년 2월 24일부터 NVMe 장치 부팅 지원을 추가했다.
* iOS는 아이폰 6S 및 6S 플러스 출시와 함께 스마트폰에서 PCIe를 통한 NVMe의 첫 모바일 기능을 도입하였다.
| 운영체제 | 지원 버전 및 내용 |
|---|---|
| 크롬 OS | 2015년 2월 24일, NVM 익스프레스 장치의 부팅 지원 추가. |
| FreeBSD | FreeBSD의 head 및 stable/9 브랜치용 NVM 익스프레스 드라이버 지원. nvd(4)와 nvme(4) 드라이버가 FreeBSD 버전 10.2 이후로 GENERIC 커널 구성에 기본 포함. |
| 하이쿠 | NVMe 지원 예정 (미완료). |
| illumos | 2014년 10월 15일 NVMe 지원. |
| iOS | 아이폰 6S, 6S 플러스 출시와 함께 애플은 스마트폰에 PCIe를 통한 NVMe의 첫 모바일 기능 도입. |
| 리눅스 | 리눅스용 NVM 익스프레스 드라이버 출시. 2012년 3월 19일 리눅스 커널 버전 3.3 출시와 함께 리눅스 커널 주류에 통합. |
| OpenBSD | OpenBSD의 NVMe 지원에 필요한 개발 작업이 2014년 4월 시작. NVMe 지원은 OpenBSD 6.0 릴리스에서 활성화. |
| OS X | OS X 요세미티의 10.10.3 업데이트에서 애플은 NVM 익스프레스 지원 도입. 레티나 맥북은 논리 장치 인터페이스로서 PCIe를 통한 NVMe 사용. |
| 솔라리스 | 오라클 솔라리스 11.2에서 NVMe 지원. |
| VMware | VMware용 NVMe 드라이버 제공, vSphere 6.0 이상 빌드에 포함되어 있고 다양한 NVMe 장치 지원. |
| 윈도우 | 윈도우 8.1과 윈도우 서버 2012 R2에 NVMe 네이티브 지원 추가. 윈도우 7과 윈도우 서버 2008 R2의 네이티브 드라이버는 업데이트에 추가. |
6. NVMe-oF (NVMe over Fabrics)
NVM 익스프레스 오버 패브릭(NVMe-oF)은 PCIe 버스에 직접 연결되거나 PCIe 스위치를 통해 연결되는 일반적인 NVMe와는 달리, 네트워크를 통해 원격 NVMe 장치를 연결하는 전송 프로토콜 개념이다. 2017년 8월, 국제 정보 기술 표준 위원회(ICITS)에서 파이버 채널(FC)을 통한 NVMe 사용에 대한 표준을 제출했으며, 이 조합을 FC-NVMe 또는 NVMe/FC라고 부른다.
2021년 5월 현재, 지원되는 NVMe 전송 프로토콜은 다음과 같다.
* FC, FC-NVMe
* TCP, NVMe/TCP
* 이더넷, RoCE v1/v2(RDMA over 컨버전스 이더넷)
* 인피니밴드, NVMe over InfiniBand 또는 NVMe/IB
NVMe over Fabrics에 대한 표준은 2016년 NVM 익스프레스(NVM Express, Inc.)에서 발표했다.
다음 소프트웨어는 NVMe-oF 프로토콜을 구현한다.
* 리눅스 NVMe-oF 이니시에이터 및 타겟. RoCE 전송은 초기에 지원되었으며, 리눅스 커널 5.x 버전부터 TCP에 대한 네이티브 지원이 추가되었다.
* 스토리지 성능 개발 키트(SPDK) NVMe-oF 이니시에이터 및 타겟 드라이버. RoCE 및 TCP 전송을 모두 지원한다.
* 스타윈드 NVMe-oF 이니시에이터 및 리눅스 및 마이크로소프트 윈도우용 타겟으로, RoCE 및 TCP, 그리고 파이버 채널 전송을 지원한다.
* [https://www.lightbitslabs.com/nvme-over-tcp/ Lightbits Labs] NVMe over TCP 타겟은 다양한 리눅스 배포판 및 퍼블릭 클라우드를 지원한다.
* Bloombase StoreSafe 인텔리전트 스토리지 방화벽은 투명한 스토리지 보안 보호를 위해 NVMe over RoCE, TCP 및 파이버 채널을 지원한다.
7.1. QEMU
QEMU는 2013년 8월 15일에 출시된 버전 1.6부터 NVMe 장치를 에뮬레이션할 수 있도록 지원한다. QEMU 게스트에 제공되는 NVM 익스프레스 장치는 실제 장치 또는 에뮬레이션된 장치일 수 있다.
7.2. UEFI
UEFI용 오픈 소스 NVMe 장치 드라이버는 소스포지에서 이용할 수 있다. NvmExpressDxe라고 하는 UEFI용 오픈 소스 NVM 익스프레스 드라이버는 UEFI의 오픈 소스 참조 구현인 EDKII의 일부로 제공된다.
8. 관리 도구
NVMe 장치를 관리하기 위한 다양한 도구가 제공된다.nvme-cli
8.1. nvmecontrol (FreeBSD)
`nvmecontrol` 도구는 FreeBSD에서 명령줄을 통해 NVMe 디스크를 제어하는 데 사용된다. FreeBSD 9.2에 추가되었다.
8.2. nvme-cli (Linux)
리눅스용 NVMe 장치를 관리하는 명령줄 도구이다.