2018년 11월 23일
NVMe (Non-Volatile Memory express)
I. SSD 활용 극대화를 위한, NVMe의 개념
PCI Express 기반의 레지스터 인터페이스에 최적화된 고성능 호스트 컨트롤러 인터페이스
II. NVMe 구조/기술요소 및 동작 방식
가. NVMe 구조/기술요소
구분 | 기술요소 | 기능 설명 |
---|---|---|
대역폭 | – PCIe 기반 전송 | – PCIe 대역폭 그대로 사용 – PCIe 3.0 슬롯, 최대 4GB/s |
병렬 처리 | – 멀티 Queue | – 64K 큐기반 병렬 처리 – 큐 하나당 64K 명령처리 |
데이터 처리 | – 레지스터 – 명령어 세트 | – 다이렉트 접근, I/O 수행 – 10개 Admin, 4개 I/O |
인터럽트 | – MSI-X | – BUS 기반 메시지 인터럽트 – 인터럽트 개수 확장(2048) |
가상화 | – SRIOV | – 스토리지 디바이스를 전용 처럼 사용(접근시 주소변환) |
보안 | – 표준 보안 프로토콜 | – E2E 데이터 보호 TCG 표준 – 표준 보안 프로토콜 지원 |
나. NVMe 동작 방식
절차 | 세부 절차 | 세부 내용 |
---|---|---|
명령 입력 | – Queue Command | – 코어 선택 및 해당 코어의 I/O Submission Queue 명령어를 입력 |
– Command 알림 | – NVMe 컨트롤러에 신규 명령어 – 새로운 명령어의 존재 확인 | |
명령 처리 | – Fetch Command | – Queue의 명령어를 Fetch – NVMe 컨트롤러 Fetch 수행 |
– Process Command | – NVMe 컨트롤러는 명령어 처리 – 시스템 메모리 상 입출력 수행 | |
명령 완료 | – Queue 완료 | – 명령어 처리 종료 시 결과 입력 – NVMe의 I/O Completion 결과 |
– Interrupt 발생 | – 신호 발생 가능 시 MSI-X 발생 – 완료 Queue를 통해 ISR결과 확인 |
III. NVMe와 AHCI의 비교
항목 | NVMe | AHCI |
---|---|---|
큐 크기 | 64k개(64k명령/큐) | 1개(32명령/큐) |
명령어 당 레지스터 접근 | 2회 | 9회 |
병렬성과 다중 스레드 | No Locking | Locking |
명령 효율성 | 한번에 64byte fetch | 호스트 DRAM으로 2번 Fetch |
드라이버 지원 | 전용 드라이버 설치 필요 | 기본 설치 |