Intel 750 시리즈의 NVMe 명령어들

이번에는 Intel 750 시리즈의 NVM Express Admin Command 명령어들에 대해서 알아보자.

  1. Passthrough

지난번 글에서 한 달이 지난 2015년 12월에도 공식적으로 윈도에 구현된 NVMe Passthrough 커맨드는 없다.
따라서 Intel 750 시리즈의 경우는 Admin Command Passthrough를 nvmewin에서 지원하는 방식과 비슷한 방식으로 구현한다.
nvmewin에서 사용하는 방식에 대해서는 이 문서를 참고하면 좋다.

위의 글에 따르면 \\.\scsi 주소가 필요하다. 그러므로 우리가 원래 가지고 있었던 PhysicalDrive로 된 주소를 SCSI 주소로 바꿔야 한다.
다행히도 이는 IOCTL_SCSI_GET_ADDRESS로 간단하게 해치울 수 있다.

아마 여기까지 따라했다면 당신은 1117 오류에 좌절하고 있을 것이다.
마의 1117을 벗어나기 위해서는 버퍼가 충분히 큰지 확인해야 한다. 4K정도 잡으면 적절하다.

2. Identify

위의 과정을 마쳤다면 Identify는 NVM express 그대로이므로 어렵지 않다. Intel 방식의 장점 중 하나는 NVM express의 명령어 구조체를 그대로 쓸 수 있다는 점이다.
NVM express 1.0 문서Intel P3700 시리즈 스펙 문서를 참고하면서 진행하자. 왜 Intel P3700 문서인가 하면 Intel 750 문서에는 없는 부분이 일부 존재하기 때문이다.

3. Get Log Page

Identify와 마찬가지로 NVM express 1.0 문서Intel P3700 시리즈 스펙 문서를 참고하면서 진행하면 된다.
주의할 점은 Log Identifier를 지정할 때 MaxNUMD 부분을 꼼꼼하게 챙겨야 한다는 점이다. Samsung 950 Pro와 달리 MaxNUMD를 챙기지 않으면 정보를 정상적으로 가져오지 못한다.

4. Vendor Specific Log Page

Intel NVM express 제품의 특징 중 하나는 Intel만의 로그 페이지가 존재한다는 점이다.

온도(C5h)
8바이트짜리 필드가 8개 존재한다. NVM express Log Page처럼 ID가 존재하지 않는다.

추가 SMART 정보(CAh)
ATA와 같은 방식으로 해석하면 된다. 일반화 필드가 쓰이는 곳도 있고 아닌 곳도 있다.

5. 풀버전 소스

Delphi
C++

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다