struktur NVME_IDENTIFY_NAMESPACE_DATA (nvme.h)

Berisi nilai yang menunjukkan kapabilitas dan pengaturan yang khusus untuk namespace tertentu.

Kemampuan dan pengaturan yang umum untuk semua namespace terkandung dalam struktur data NVME_IDENTIFY_NAMESPACE_DATA untuk namespace layanan dengan Pengidentifikasi Namespace layanan 0xFFFFFFFF.

File header nvme.h menentukan NVME_NAMESPACE_ALL konstanta dengan nilai 0xFFFFFFFF.

Jika pengontrol mendukung Namespace Management dan bidang Pengidentifikasi Namespace (NSID) dari struktur NVME_COMMAND diatur ke NVME_NAMESPACE_ALL, pengontrol mengembalikan struktur data NVME_IDENTIFY_NAMESPACE_DATA yang menentukan kemampuan yang umum di semua namespace.

Sintaks

typedef struct {
  ULONGLONG                    NSZE;
  ULONGLONG                    NCAP;
  ULONGLONG                    NUSE;
  struct {
    UCHAR ThinProvisioning : 1;
    UCHAR NameSpaceAtomicWriteUnit : 1;
    UCHAR DeallocatedOrUnwrittenError : 1;
    UCHAR SkipReuseUI : 1;
    UCHAR NameSpaceIoOptimization : 1;
    UCHAR Reserved : 3;
  } NSFEAT;
  UCHAR                        NLBAF;
  struct {
    UCHAR LbaFormatIndex : 4;
    UCHAR MetadataInExtendedDataLBA : 1;
    UCHAR Reserved : 3;
  } FLBAS;
  struct {
    UCHAR MetadataInExtendedDataLBA : 1;
    UCHAR MetadataInSeparateBuffer : 1;
    UCHAR Reserved : 6;
  } MC;
  struct {
    UCHAR ProtectionInfoType1 : 1;
    UCHAR ProtectionInfoType2 : 1;
    UCHAR ProtectionInfoType3 : 1;
    UCHAR InfoAtBeginningOfMetadata : 1;
    UCHAR InfoAtEndOfMetadata : 1;
    UCHAR Reserved : 3;
  } DPC;
  struct {
    UCHAR ProtectionInfoTypeEnabled : 3;
    UCHAR InfoAtBeginningOfMetadata : 1;
    UCHAR Reserved : 4;
  } DPS;
  struct {
    UCHAR SharedNameSpace : 1;
    UCHAR Reserved : 7;
  } NMIC;
  NVM_RESERVATION_CAPABILITIES RESCAP;
  struct {
    UCHAR PercentageRemained : 7;
    UCHAR Supported : 1;
  } FPI;
  struct {
    UCHAR ReadBehavior : 3;
    UCHAR WriteZeroes : 1;
    UCHAR GuardFieldWithCRC : 1;
    UCHAR Reserved : 3;
  } DLFEAT;
  USHORT                       NAWUN;
  USHORT                       NAWUPF;
  USHORT                       NACWU;
  USHORT                       NABSN;
  USHORT                       NABO;
  USHORT                       NABSPF;
  USHORT                       NOIOB;
  UCHAR                        NVMCAP[16];
  USHORT                       NPWG;
  USHORT                       NPWA;
  USHORT                       NPDG;
  USHORT                       NPDA;
  USHORT                       NOWS;
  USHORT                       MSSRL;
  ULONG                        MCL;
  UCHAR                        MSRC;
  UCHAR                        Reserved2[11];
  ULONG                        ANAGRPID;
  UCHAR                        Reserved3[3];
  struct {
    UCHAR WriteProtected : 1;
    UCHAR Reserved : 7;
  } NSATTR;
  USHORT                       NVMSETID;
  USHORT                       ENDGID;
  UCHAR                        NGUID[16];
  UCHAR                        EUI64[8];
  NVME_LBA_FORMAT              LBAF[16];
  UCHAR                        Reserved4[192];
  UCHAR                        VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;

Anggota

NSZE

Menunjukkan ukuran total namespace dalam blok logis.

Namespace ukuran n terdiri dari Logical Block Address (LBA) 0 melalui (n - 1). Jumlah blok logis didasarkan pada ukuran LBA yang diformat. Bidang ini tidak terdefinisi sebelum namespace layanan diformat.

NCAP

Menunjukkan jumlah maksimum blok logis yang dapat dialokasikan di namespace layanan kapan saja.

Jumlah blok logis didasarkan pada ukuran LBA yang diformat. Bidang ini tidak terdefinisi sebelum namespace layanan diformat.

Bidang NCAP digunakan dalam kasus penyediaan tipis dan melaporkan nilai yang lebih kecil dari atau sama dengan Ukuran Namespace (NSZE).

Spare LBA tidak dilaporkan sebagai bagian dari bidang ini. Nilai 0h untuk Namespace Capacity (NCAP) menunjukkan bahwa ID namespace adalah ID namespace tidak aktif. Blok logis dialokasikan ketika ditulis dengan perintah Tulis atau Tulis Tidak Dapat Dikoreksi. Blok logis dapat dibatalkan alokasinya menggunakan perintah Manajemen Himpunan Data .

NUSE

Menunjukkan jumlah blok logis saat ini yang dialokasikan di namespace.

Nilai bidang ini lebih kecil dari atau sama dengan nilai bidang NCAP Kapasitas Namespace.

Jumlah blok logis didasarkan pada ukuran LBA yang diformat. Saat menggunakan set perintah NVM: Blok logis dialokasikan saat ditulis dengan perintah Tulis atau Tulis Tidak Dapat Dikoreksi. Blok logis dapat dibatalkan alokasinya menggunakan perintah Manajemen Himpunan Data .

Pengontrol dapat melaporkan nilai NUSE yang sama dengan nilai NCAP setiap saat jika produk tidak ditargetkan untuk lingkungan provisi tipis.

NSFEAT

Struktur Fitur Namespace (NSFEAT) yang berisi bidang yang menentukan fitur namespace.

NSFEAT.ThinProvisioning

Bit 0 dari struktur NSFEAT menunjukkan apakah namespace mendukung provisi tipis.

Ketika nilai ini diatur ke 1, namespace mendukung provisi tipis. Secara khusus, Namespace Capacity (NCAP) yang dilaporkan mungkin kurang dari Ukuran Namespace (NSZE). Ketika fitur ini didukung dan perintah Manajemen Himpunan Data didukung, maka membatalkan alokasi LBA akan tercermin di bidang Pemanfaatan Namespace (NUSE).

Ketika nilai ini dibersihkan ke 0, itu menunjukkan bahwa provisi tipis tidak didukung dan bidang NSZE dan NCAP melaporkan nilai yang sama.

NSFEAT.NameSpaceAtomicWriteUnit

Bit 1 dari struktur NSFEAT menunjukkan apakah Parameter Batas Atom Namespace didefinisikan untuk namespace layanan ini.

Ketika nilai ini diatur ke 1, bidang NAWUN, NAWUPF, dan NACWU didefinisikan untuk namespace layanan ini dan harus digunakan oleh host untuk namespace layanan ini alih-alih bidang AWUN, AWUPF, dan ACWU dalam struktur data Identifi Controller .

Ketika nilai ini dibersihkan ke 0, pengontrol tidak mendukung bidang NAWUN, NAWUPF, dan NACWU untuk namespace layanan ini. Dalam hal ini, host harus menggunakan bidang AWUN, AWUPF, dan ACWU yang ditentukan dalam struktur data Identifi Controller .

NSFEAT.DeallocatedOrUnwrittenError

Bit 2 dari struktur NSFEAT menunjukkan apakah pengontrol mendukung kesalahan Blok Logis Deallocated atau Unwritten untuk namespace ini.

Ketika nilai ini diatur ke 1, pengontrol mendukung kesalahan Blok Logis Batal Dialokasikan atau Tidak Ditulis (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) untuk namespace ini. Ketika nilai ini dibersihkan ke 0, pengontrol tidak mendukung kesalahan NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK untuk namespace ini.

NSFEAT.SkipReuseUI

Bit 3 dari struktur NSFEAT adalah pengaturan untuk fitur Lewati Penggunaan Kembali UI.

NSFEAT.NameSpaceIoOptimization

NSFEAT.Reserved

Bit 4:7 dari struktur NSFEAT dicadangkan.

NLBAF

Menentukan jumlah kombinasi ukuran data LBA dan ukuran metadata yang didukung oleh namespace layanan.

Format LBA dialokasikan secara berurutan (dimulai dengan 0) dan dikemas secara berurutan. Ini adalah nilai berbasis 0. Jumlah maksimum format LBA yang mungkin ditunjukkan sebagai didukung adalah 16.

Format LBA yang didukung ditunjukkan di bidang LBAF (byte 128 – 191 dari struktur data ini). Metadata dapat ditransfer sebagai bagian dari LBA (membuat LBA yang diperluas yang merupakan ukuran LBA yang lebih besar yang terekspos ke aplikasi) atau dapat ditransfer sebagai buffer data yang berdampingan terpisah. Metadata tidak dapat dibagi antara LBA dan buffer metadata terpisah.

Disarankan agar perangkat lunak dan pengontrol beralih ke ukuran LBA yang 4KB atau lebih besar untuk efisiensi ECC di pengontrol. Jika menyediakan metadata, disarankan agar setidaknya 8 byte disediakan per blok logis untuk mengaktifkan penggunaan dengan perlindungan data end-to-end.

FLBAS

Struktur Formatted LBA Size (FLBAS) yang berisi bidang yang menunjukkan ukuran data LBA dan kombinasi ukuran metadata yang telah diformat dengan namespace layanan.

FLBAS.LbaFormatIndex

Bit 0:3 dari struktur FLBAS menentukan salah satu dari 16 Format LBA yang didukung yang ditunjukkan dalam struktur data ini.

FLBAS.MetadataInExtendedDataLBA

Bit 4 dari struktur FLBAS menunjukkan apakah metadata ditransfer di akhir data LBA, membuat LBA data yang diperluas.

Ketika nilai ini diatur ke 1, metadata ditransfer di akhir data LBA, membuat LBA data yang diperluas. Ketika nilai ini dibersihkan ke 0, itu menunjukkan bahwa semua metadata untuk perintah ditransfer sebagai buffer data yang berdampingan terpisah.

Bit 4 tidak berlaku ketika tidak ada metadata.

FLBAS.Reserved

Bit 5:7 dari struktur FLBAS dicadangkan.

MC

Struktur Kemampuan Metadata (MC) yang berisi bidang yang menunjukkan kemampuan untuk metadata.

MC.MetadataInExtendedDataLBA

Bit 0 dari struktur MC menunjukkan apakah namespace mendukung metadata yang ditransfer sebagai bagian dari LBA data yang diperluas.

Ketika nilai ini diatur ke 1, namespace mendukung metadata yang ditransfer sebagai bagian dari LBA data yang diperluas. Ketika nilai ini dibersihkan ke 0, itu menunjukkan bahwa namespace tidak mendukung metadata yang ditransfer sebagai bagian dari LBA data yang diperluas.

MC.MetadataInSeparateBuffer

Bit 1 dari struktur MC menunjukkan apakah namespace mendukung metadata yang ditransfer sebagai bagian dari buffer terpisah.

Ketika nilai ini diatur ke 1, namespace mendukung metadata yang ditransfer sebagai bagian dari buffer terpisah yang ditentukan dalam bidang Penunjuk Metadata (MPTR) dari struktur Perintah . Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung metadata yang ditransfer sebagai bagian dari buffer terpisah.

MC.Reserved

Bit 7:2 dari struktur MC dicadangkan.

DPC

Struktur Kemampuan Perlindungan Data (DPC) end-to-end yang berisi bidang yang menunjukkan kemampuan untuk fitur perlindungan data end-to-end.

Beberapa bit dapat diatur dalam bidang ini.

DPC.ProtectionInfoType1

Bit 0 dari struktur DPC menunjukkan apakah namespace mendukung Perlindungan Informasi Tipe 1.

Ketika nilai ini diatur ke 1, namespace mendukung Perlindungan Informasi Tipe 1. Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung Perlindungan Informasi Tipe 1.

DPC.ProtectionInfoType2

Bit 1 dari struktur DPC menunjukkan apakah namespace mendukung Perlindungan Informasi Tipe 2.

Ketika nilai ini diatur ke 1, namespace mendukung Informasi Perlindungan Tipe 2. Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung Perlindungan Informasi Tipe 2.

DPC.ProtectionInfoType3

Bit 2 dari struktur DPC menunjukkan apakah namespace mendukung Perlindungan Informasi Tipe 3.

Ketika nilai ini diatur ke 1, namespace mendukung Perlindungan Informasi Tipe 3. Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung Perlindungan Informasi Tipe 3.

DPC.InfoAtBeginningOfMetadata

Bit 3 dari struktur DPC menunjukkan apakah namespace mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata pertama.

Ketika nilai ini diatur ke 1, namespace mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata pertama. Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata pertama.

DPC.InfoAtEndOfMetadata

Bit 4 dari struktur DPC menunjukkan apakah namespace mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata terakhir.

Ketika nilai ini diatur ke 1, namespace mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata terakhir. Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung informasi perlindungan yang ditransfer sebagai delapan byte metadata terakhir.

DPC.Reserved

Bit 7:5 dari struktur DPC dicadangkan.

DPS

Struktur Pengaturan Jenis Perlindungan Data (DPS) end-to-end yang berisi bidang yang menunjukkan pengaturan Jenis untuk fitur perlindungan data end-to-end.

NVME_PROTECTION_INFORMATION_TYPES

DPS.ProtectionInfoTypeEnabled

Bit 2:0 dari struktur DPS adalah nilai NVME_PROTECTION_INFORMATION_TYPES yang menunjukkan apakah Informasi Perlindungan diaktifkan dan jenis Informasi Perlindungan diaktifkan.

DPS.InfoAtBeginningOfMetadata

Bit 3 dari struktur DPS menunjukkan apakah informasi perlindungan, jika diaktifkan, ditransfer sebagai delapan byte metadata pertama.

Ketika nilai ini diatur ke 1, informasi perlindungan, jika diaktifkan, ditransfer sebagai delapan byte metadata pertama. Ketika nilai ini dibersihkan ke 0, informasi perlindungan, jika diaktifkan, ditransfer sebagai delapan byte metadata terakhir.

DPS.Reserved

Bit 7:4 dari struktur DPS dicadangkan.

NMIC

Struktur Namespace Multi-path I/O dan Namespace Sharing Capabilities (NMIC) yang berisi bidang yang menentukan kemampuan berbagi I/O multi-jalur dan namespace layanan namespace layanan.

NMIC.SharedNameSpace

Bit 0 dari struktur NMIC menunjukkan apakah namespace layanan mungkin merupakan namespace bersama.

Ketika nilai ini diatur ke 1, namespace mungkin dapat diakses oleh dua pengontrol atau lebih di subsistem NVM. Ketika nilai ini dibersihkan ke 0, namespace adalah namespace privat dan hanya dapat diakses oleh pengontrol yang mengembalikan struktur data namespace ini.

NMIC.Reserved

Bit 7:1 dari struktur NMIC dicadangkan.

RESCAP

Struktur Kemampuan Reservasi (RESCAP) yang berisi bidang yang menentukan kemampuan reservasi namespace.

Nilai 00h dalam bidang ini menunjukkan bahwa reservasi tidak didukung oleh namespace layanan ini.

FPI

Struktur Indikator Kemajuan Format (FPI) yang berisi bidang yang menunjukkan persentase namespace layanan yang tetap diformat saat operasi format sedang berlangsung.

FPI.PercentageRemained

Bit 0:6 dari struktur FPI menunjukkan persentase namespace layanan yang tetap diformat. Misalnya, nilai 25 menunjukkan bahwa 75% namespace telah diformat dan 25% tetap diformat.

Nilai 0 menunjukkan bahwa namespace diformat dengan format yang ditentukan oleh bidang FLBAS dan DPS dalam struktur data ini.

FPI.Supported

Bit 7 dari struktur FPI menunjukkan apakah namespace mendukung Indikator Kemajuan Format yang ditentukan oleh FPI. Bidang PercentageRemained .

Ketika nilai ini diatur ke 1, namespace mendukung Indikator Kemajuan Format yang ditentukan oleh FPI. Bidang PercentageRemained . Ketika nilai ini dibersihkan ke 0, namespace tidak mendukung Indikator Kemajuan Format dan FPI. Bidang PercentageRemained akan dibersihkan ke 0h.

DLFEAT

DLFEAT.ReadBehavior

DLFEAT.WriteZeroes

DLFEAT.GuardFieldWithCRC

DLFEAT.Reserved

NAWUN

Menunjukkan ukuran spesifik namespace dari operasi tulis yang dijamin ditulis secara atomik ke NVM selama operasi normal.

Nilai menunjukkan bahwa ukuran untuk namespace ini berukuran 0h sama seperti yang dilaporkan di bidang AWUN dari struktur data Identifi Controller . Semua nilai lain menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang AWUN .

NAWUPF

Menunjukkan ukuran spesifik namespace dari operasi tulis yang dijamin ditulis secara atomik ke NVM selama kondisi daya gagal atau kesalahan.

Nilai 0h menunjukkan bahwa ukuran untuk namespace ini berukuran sama seperti yang dilaporkan di bidang AWUPF dari struktur data Identifi Controller . Semua nilai lain menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang AWUPF .

NACWU

Menunjukkan ukuran spesifik namespace operasi tulis yang dijamin ditulis secara atomik ke NVM untuk perintah Bandingkan dan Tulis menyatu.

Nilai menunjukkan bahwa ukuran untuk namespace ini berukuran 0h sama seperti yang dilaporkan di bidang ACWU dari struktur data Identifi Controller . Semua nilai lain menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang ACWU .

NABSN

Menunjukkan ukuran batas atom untuk namespace layanan ini untuk nilai NAWUN .

Bidang ini ditentukan dalam blok logis. Menulis ke namespace layanan ini bahwa batas atom silang tidak dijamin akan atomik NVM sehubungan dengan perintah baca atau tulis lainnya.

Nilai 0h menunjukkan bahwa tidak ada batas atom untuk operasi tulis normal. Semua nilai lain menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang AWUN .

NABO

Menunjukkan Alamat Blok Logis (LBA) pada namespace layanan ini tempat batas atom pertama dimulai.

Jika bidang NABSN dan NABSPF dibersihkan ke 0h, maka bidang NABO dibersihkan ke 0h. Nilai NABO harus kurang dari atau sama dengan NABSN dan NABSPF.

NABSPF

Menunjukkan ukuran batas atom untuk namespace layanan ini khusus untuk nilai Power Fail Unit Penulisan Atom Namespace.

Bidang ini ditentukan dalam blok logis. Menulis ke namespace layanan ini bahwa batas atom silang tidak dijamin atom sehubungan dengan perintah baca atau tulis lainnya dan tidak ada jaminan data yang dikembalikan pada bacaan berikutnya dari blok logis terkait.

Nilai 0h menunjukkan bahwa tidak ada batas atom untuk kondisi daya gagal atau kesalahan. Semua nilai lain menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang AWUPF .

NOIOB

Menunjukkan Namespace Optimal IO Boundary (NOIOB).

NVMCAP[16]

Menunjukkan ukuran total NVM yang dialokasikan untuk namespace layanan ini.

Nilai bidang ini dalam byte. Bidang ini didukung jika perintah Manajemen Namespace dan Lampiran Namespace didukung.

Catatan: Bidang ini mungkin tidak sesuai dengan ukuran blok logis yang dikalikan dengan bidang Ukuran Namespace (NSZE). Karena provisi tipis atau pengaturan lain (seperti, ketahanan), bidang ini mungkin lebih besar atau lebih kecil dari yang dilaporkan NSZE .

NPWG

NPWA

NPDG

NPDA

NOWS

MSSRL

MCL

MSRC

Reserved2[11]

Bidang khusus.

ANAGRPID

Reserved3[3]

Byte 192:383A dipesan.

NSATTR

NSATTR.WriteProtected

NSATTR.Reserved

NVMSETID

Menunjukkan Pengidentifikasi Set NVM Terkait (NVMSETID).

ENDGID

Menunjukkan Pengidentifikasi Grup Ketahanan Terkait (ENDGID).

NGUID[16]

Berisi nilai 128-bit yang unik secara global dan ditetapkan ke namespace saat namespace dibuat.

Bidang Namespace Globally Unique Identifier (NGUID) tetap diperbaiki selama masa pakai namespace layanan dan dipertahankan di seluruh namespace layanan dan operasi pengontrol (seperti reset pengontrol dan format namespace).

Bidang ini menggunakan format pendesain 16 byte berbasis EUI-64.

  • Byte 114:112 berisi nilai company_id 24-bit yang ditetapkan oleh Otoritas Pendaftaran IEEE.
  • Byte 119:115 berisi pengidentifikasi ekstensi yang ditetapkan oleh organisasi yang sesuai.
  • Byte 111:104 berisi pengidentifikasi ekstensi khusus vendor yang ditetapkan oleh organisasi yang sesuai.

Lihat panduan IEEE EUI-64 untuk informasi selengkapnya. Pengontrol harus menentukan pengidentifikasi namespace unik global di bidang ini atau bidang EUI64 saat namespace dibuat.

EUI64[8]

Berisi IEEE Extended Unique Identifier (EUI-64) 64-bit yang unik secara global dan ditetapkan ke namespace saat namespace dibuat.

Bidang EUI64 tetap selama masa pakai namespace dan dipertahankan di seluruh namespace layanan dan operasi pengontrol (seperti reset pengontrol dan format namespace).

EUI-64 adalah perangkaian nilai company_id 24-bit atau 36-bit yang ditetapkan oleh Otoritas Pendaftaran IEEE dan pengidentifikasi ekstensi yang ditetapkan oleh organisasi yang sesuai. Lihat panduan IEEE EUI-64 untuk informasi selengkapnya.

Pengontrol harus menentukan pengidentifikasi namespace unik global di bidang ini atau bidang NGUID saat namespace dibuat. Jika pengontrol tidak dapat mengalokasikan pengidentifikasi 64-bit yang unik secara global, bidang ini akan dibersihkan ke 0h.

LBAF[16]

Berisi array 16 struktur NVME_LBA_FORMAT . Setiap struktur dalam array menentukan Format LBA dan menunjukkan bahwa struktur tersebut didukung oleh pengontrol.

Posisi berbasis nol struktur dalam array sesuai dengan nama Format LBA, sehingga Format LBA 0 (LBAF0) berada di posisi 0, LBA Format 1 (LBAF1) berada di posisi 1, dan seterusnya, hingga LBA Format 15 (LBAF15) di posisi 15.

Reserved4[192]

VS[3712]

Rentang byte (384:4095) ini dialokasikan untuk penggunaan Vendor Specific (VS).

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Header nvme.h