5.2.25. NVDIMM 固件接口表 (NFIT)
5.2.25.1. 概述
此可选表提供的信息允许OSPM枚举平台中存在的 NVDIMM 并关联由 NVDIMM 创建的系统物理地址范围。 NVDIMM 由ACPI命名空间中单个NVDIMM根设备下的零个或多个NVDIMM设备表示。
OSPM 仅在系统初始化期间评估NFIT。运行时对NVDIMM状态的任何更改或有关热添加 NVDIMM 的信息均使用NVDIMM根设备的 _FIT 方法(请参阅第 6.5.9 节)进行通信。
NFIT 由以下结构组成:
系统物理地址 (SPA) 范围结构(请参阅第 5.2.25.2 节) – 描述 NVDIMM 占用的 SPA 范围以及 SPA 范围的类型。
NVDIMM 区域映射结构(参见第 5.2.25.3 节)——描述 NVDIMM 区域到 SPA 范围和 NVDIMM 区域属性的映射。
交错结构(参见第 5.2.25.4 节)——描述NVDIMM区域使用的各种交错选项。
SMBIOS 管理信息结构(请参阅第 5.2.25.5 节) – 描述热添加 NVDIMM 的 SMBIOS 表条目。
5.NVDIMM控制区域结构(参见第 5.2.25.6 节)——描述NVDIMM功能接口及其块控制窗口(如果适用)。
NVDIMM块数据窗口区域结构(参见第 5.2.25.7 节)——描述具有块控制窗口的NVDIMM功能接口的块数据窗口。
刷新提示地址结构(参见第 5.2.25.8 节)——描述特殊的系统物理地址,这些地址在写入时有助于实现NVDIMM区域写入的持久性。
平台能力结构(参见第 5.2.25.9 节)——描述平台能力,以告知OSPM平台范围的NVDIMM能力。
下图说明了上述结构以及它们如何相互关联。

图 5.9 NVDIMM 固件接口表 (NFIT) 概述
下表定义了NFIT。
| 表 5.107 NVDIMM 固件接口表 (NFIT) 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 标题 | |||
| - 签名 | 4 | 0 | “NFIT”是该表的签名 |
| - 长度 | 4 | 4 | 整个表的长度(以字节为单位)。 |
| - 修订 | 1 | 8 | 1 |
| - 校验和 | 1 | 9 | 整个表的总和必须为零 |
| - OEMID | 6 | 10 | 10 OEM ID |
| - OEM 表 ID | 8 | 16 | 16表ID是制造商型号ID |
| - OEM 修订 | 4 | 24 | OEM 所提供表格的修订版 OEM 表 ID |
| - 创建者ID | 4 | 28 | 28创建该表的实用程序的供应商ID |
| - 创建者修订 | 4 | 32 | 32修改创建表的实用程序 |
| 保留 | 4 | 36 | 36 NFIT 结构[n] |
| — | 40 | 此实现的NFIT结构列表。 | 每个NFIT结构必须以 2 字节类型字段开头,后跟 2 字节长度字段。这允许OSPM忽略无法识别的类型。表 5.108 列出了支持的NFIT结构类型。 |
| 表 5.108 NFIT 结构类型 值 | 描述 | ||
| --- | --- | ||
| 0 | 系统物理地址 (SPA) 范围结构 | ||
| 1 | NVDIMM 区域映射结构 | ||
| 2 | 交错结构 | ||
| 3 | SMBIOS 管理信息结构 | ||
| 4 | NVDIMM 控制区域结构 | ||
| 5 | NVDIMM 块数据窗口区域结构 | ||
| 6 | 刷新提示地址结构 | ||
| 7 | 平台能力结构 | ||
| 8-0xFFFF | 8-0xFFFF | 保留 |
5.2.25.2. 系统物理地址 (SPA) 范围结构
该结构体描述了NVDIMM占用的系统物理地址范围及其对应的Region Type。
被描述为虚拟CD或虚拟磁盘的系统物理地址范围应在E820中被描述为“AddressRangeReserved”,在UEFIGetMemoryMap 中被描述为EFI保留内存类型。
平台允许实现此结构只是为了描述描述虚拟CD和虚拟磁盘的系统物理地址范围。对于虚拟CD区域和虚拟磁盘区域(易失性和持久性),以下字段 - 邻近域、SPA范围结构索引、标志和地址范围内存映射属性不相关,应设置为 0。
NVDIMM控制区域的默认映射应为UC内存属性,E820中包含 AddressRangeReserved 类型,UEFIGetMemoryMap 中包含 EfiMemoryMappedIO 类型。 NVDIMM块数据窗口区域的默认映射应为WB内存属性,其中E820中的 AddressRangeReserved 类型和UEFIGetMemoryMap 中的 EfiMemoryMappedIO 类型。
| 表 5.109 SPA 范围结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 0 - SPA 范围结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| SPA 范围结构索引 | 2 | 4 | 由NVDIMM区域映射结构使用来唯一引用该结构。值 0 是保留的,不能用作索引。 |
| 旗帜 | 2 | 6 | 位[0]设置为1表示控制区域严格用于热添加/在线操作期间的管理。位[1]设置为1表示邻近域字段中的数据有效。位 [2] 设置为 1 表示 SPALocationCookie 字段中的数据有效。位 [15:3]:保留 |
| 保留 | 4 | 8 | 保留 |
| 邻近域 | 4 | 12 | 12表示内存所属邻近域的整数。该编号必须与SRAT表中的相应条目匹配。 |
| 地址范围类型GUID | 16 | 16 16 | 16 GUID 定义地址范围类型的类型。 GUID可以是本节中定义的任何值,也可以是供应商定义的GUID。 |
| 系统物理地址范围基址 | 8 | 32 | 32系统物理地址范围的起始地址 |
| 系统物理地址范围长度 | 8 | 40 | Range 区域的长度(以字节为单位) |
| 地址范围内存映射属性 | 8 | 48 | 48 此地址范围的内存映射属性: EFI_MEMORY_UC = 0x00000001 EFI_MEMORY_WC = 0x00000002 EFI_MEMORY_WT = 0x00000004 EFI_MEMORY_WB = 0x00000008 EFI_MEMORY_UCE = 0x00000010EFI_MEMORY_WP = 0x00001000EFI_MEMORY_RP = 0x00002000EFI_MEMORY_XP = 0x00004000EFI_MEMORY_NV = 0x00008000EFI_MEMORY_MORE_RELIABLE = 0x00010000EFI_MEMORY_RO = 0x00020000EFI_MEMORY_SP = 0x00040000 |
| 水疗中心位置Cookie | 8 | 56 | 56由平台固件设置的不透明 cookie 值,供OSPM使用,以检测可能影响数据可读性的更改。 |
以下 GUID 用于描述NVDIMM区域类型。可以生成附加 GUID 来描述附加地址范围类型。
持久内存 (PM) 区域:
{ 0x66F0D379、0xB4F3、0x4074、0xAC、0x43、0x0D、0x33、0x18、0xB7、0x8C、0xDB }
NVDIMM 控制区域:
{ 0x92F701F6, 0x13B4, 0x405D, 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }
NVDIMM 块数据窗口区域:
{0x91AF0530、0x5D86、0x470E、0xA6、0xB0、0x0A、0x2D、0xB9、0x40、0x82、0x49}
RAM 支持虚拟磁盘区域的磁盘 - 易失性(包含原始磁盘格式的易失性内存区域):
{ 0x77AB535A,0x45FC,0x624B,0x55,0x60,0xF7,0xB2,0x81,0xD1,0xF9,0x6E }
RAM 支持虚拟 CD 区域 - 易失性(包含 ISO 映像的易失性内存区域)的磁盘:
{ 0x3D5ABD30,0x4175,0x87CE,0x6D,0x64,0xD2,0xAD,0xE5,0x23,0xC4,0xBB }
RAM 支持虚拟磁盘区域的磁盘 - 持久(包含原始磁盘格式的持久内存区域):
{ 0x5CEA02C9,0x4D07,0x69D3,0x26,0x9F,0x44,0x96,0xFB,0xE0,0x96,0xF9 }
RAM 支持虚拟 CD 区域 - 持久的磁盘(包含 ISO 映像的持久内存区域):
{ 0x08018188,0x42CD,0xBB48,0x10,0x0F,0x53,0x87,0xD5,0x3D,0xED,0x3D }
注意事项
ACPI、NFIT中使用的地址范围类型GUID值必须与描述相同RAM磁盘类型的RAM磁盘设备路径的“磁盘类型”GUID中的相应值相匹配。详情请参阅UEFI规格。
5.2.25.3. NVDIMM 区域映射结构
NVDIMM区域映射结构描述NVDIMM区域及其到SPA范围的映射(如果有)。
| 表 5.110 NVDIMM 区域映射结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 1 - NVDIMM 区域映射结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| NFIT 设备句柄 | 4 | 4 | 包含NVDIMM区域的NVDIMM器件的_ADR(参见第9.20.3节) |
| NVDIMM 物理ID | 2 | 8 | SMBIOS内存设备(类型 17)结构的句柄(即实例号),描述包含NVDIMM区域的NVDIMM结构。请参阅 Distributed Management Task Force, Inc. (DMTF) 的 DSP0134 系统管理 BIOS (SMBIOS) 参考规范,版本 3.0.0 (2015-02-12),网址为 http://www.dmtf.org/standards/smbios |
| NVDIMM 地区 ID | 2 | 10 | 10 NVDIMM区域的唯一标识符。该标识符在NVDIMM中的所有NVDIMM区域中应是唯一的。设备内可能存在对应于不同地址类型的多个区域。此外,对于给定的地址类型,由于交错不连续性,可能存在多个区域。 |
| SPA 范围结构索引 | 2 | 12 | 12 与NVDIMM区域关联的SPA范围(如果有): 0x0000:NVDIMM区域不映射到SPA范围。以下字段无效,应忽略: - NVDIMM 区域大小; - 区域偏移; - NVDIMM 物理地址区域基址; - 交错结构索引;和 - 交错方式。除上述字段以外的字段(例如,NFIT 设备句柄、NVDIMM 物理 ID、NVDIMM 区域 ID 和 NVDIMM 状态标志)均有效: - 0x0001 至 0xFFFF:SPA 的索引NVDIMM区域的范围结构(参见第 5.2.25.2 节)。 |
| NVDIMM 控制区域结构索引 | 2 | 14 | 14 NVDIMM区域的NVDIMM控制区域结构索引(参见第 5.2.25.6 节)。 |
| NVDIMM 区域大小 | 8 | 16 | 16 NVDIMM区域的大小(以字节为单位)。如果SPA范围结构索引和交错方式均非零,则该字段应与系统物理地址范围长度除以交错方式相匹配。 NOTE:当 Interleave Ways 大于 1 时,该区域的 NVDIMM 所占用的 SPA Range 中的大小不会与 NVDIMM Region Size 相同。 |
| 区域偏移 | 8 | 24 | 以字节为单位:交错集中NVDIMM区域的起始偏移量。该偏移量相对于SPA范围结构中的系统物理地址范围基址。 NOTE:NVDIMM中的NVDIMM区域的起始SPA由系统物理地址范围基址+区域偏移提供 |
| NVDIMM 物理地址区域基址 | 8 | 32 | 32以字节为单位。 NVDIMM区域的NVDIMM内的基本物理地址。 |
| 交错结构索引 | 2 | 40 | NVDIMM区域的交错结构(如果有),如表 5.111 中所定义。 |
| 交错方式 | 2 | 42 | 42交错集中的 NVDIMM 数量,包括包含NVDIMM区域的NVDIMM区域,如表 5.111 中所定义。 |
NVDIMM 州旗 | 2 | 44 | 44 位[0]设置为1表示先前对包含NVDIMM区域的NVDIMM的SAVE操作失败。位[0]设置为0表示前一个SAVE成功,或者不存在前一个SAVE。位 [1] 设置为 1 表示包含 NVDIMM 区域的 NVDIMM 的最后一个 RESTORE 操作失败。位[1]设置为0表示最后一个RESTORE成功或没有最后一个RESTORE。位 [2] 设置为 1 表示平台将数据刷新到前一个SAVE之前包含NVDIMM区域的NVDIMM失败。因此,即使Bit[0]和Bit[1]没有指示失败,恢复的数据内容也可能不一致。位[2]设置为0表示平台刷新成功,或者没有平台刷新。位 [3] 设置为 1 表示包含NVDIMM区域的NVDIMM无法接受持久写入。对于能源支持的 NVDIMM 设备,如果未配备或之前的 ERASE 操作未完成,则设置位 [3]。位 [3] 设置为 0 表示包含NVDIMM区域的NVDIMM已布防。位 [4] 设置为 1 表示包含NVDIMM区域的NVDIMM在OSPM切换之前观察到SMART和运行状况事件。位 [5] 设置为 1 表示平台固件已启用,可以使用NVDIMM设备通知值中指定的通知代码来通知OSPM、SMART以及与包含NVDIMM区域的NVDIMM相关的运行状况事件。位 [6] 设置为 1 表示平台固件未将包含NVDIMM区域的NVDIMM映射到SPA范围。这可能是由于各种问题造成的,例如设备初始化错误、设备错误、映射设备的硬件资源不足或设备已禁用。实现注意事项:如果发生设备错误,位 [4] 可能会与位 [6] 一起设置。位[7]至位[15]被保留。实施注意事项:平台固件可能会报告多个设置位。 保留 | 2 | 46 | 46保留
| 表 5.111 交织结构索引和交织方式定义 交织结构索引 | 交错方式 | 解释 |
|---|---|---|
| 0 | 0 | 不报告NVDIMM区域的交错(如果有) |
| 0 | 1 | NVDIMM区域不与其他 NVDIMM 交错(即,它是单向交错的) |
| 0 | >1 | NVDIMM区域是交错集的一部分,交错集的数量在交错方式字段中指示,包括包含NVDIMM区域的NVDIMM区域,但未描述交错结构。 |
| 0 | > 1 | NVDIMM区域是交错集的一部分,其中: a) “交错方式”字段中指示的 NVDIMM 数量,包括包含NVDIMM区域的NVDIMM区域; b) 由交错结构索引字段指示的交错结构(参见第 5.2.25.4 节)。 |
| 所有其他组合 | 无效案例 |
注意事项
交错结构索引=0,交错方式!=1 允许交错的PM范围,但未描述实际交错,而仅提供构成PM区域的物理内存设备(如SMBIOS类型 17 所描述)。通常,只有块区域需要交错结构,因为软件必须消除交错的影响。
5.2.25.4. 交错结构
DIMM/NVDIMM 中的内存可以跨内存通道、内存控制器和处理器插槽交错。该结构描述了给定地址范围的内存交错。由于交错是一种重复模式,因此该结构仅描述模式开始重复之前内存交错中涉及的行。
| 表 5.112 交错结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 2 - 交错结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| 交错结构索引 | 2 | 4 | 索引号唯一标识交错描述 - 这允许跨多个 NVDIMM 重复使用交错描述。索引必须非零。 |
| 保留 | 2 | 6 | |
| 描述的线路数量(米) | 4 | 8 | 只需要描述交错模式重复之前所需的行数 |
| 行大小(以字节为单位) | 4 | 12 | 12例如64、128、256、4096 |
| 第 1 行偏移 | 4 | 16 | 16行 1 偏移是指该行相对于NVDIMM区域的相应SPA范围基准的偏移量,以“行大小”的倍数表示。第 1 行SPA = SPA 范围基础 + 区域偏移 +(第 1 行偏移 * 行大小)。线SPA自然与线尺寸对齐。 |
| …… | 4 | ||
| 线米偏移 | 4 | 16+((m-1)*4) | 线 m 偏移量是指线相对于NVDIMM区域的相应SPA范围基准的偏移量,以“线大小”的倍数表示。行 mSPA = SPA 范围基础 + 区域偏移 + (行 m 偏移*行大小) 其中 m 是模式重复之前的最后一个行号。 |
5.2.25.5. SMBIOS 管理信息结构
此结构使平台能够将启动时SMBIOS表提供的条目之外的附加SMBIOS条目传送到OS(例如,与热添加的 NVDIMM 相对应的类型 17 条目)。
| 表 5.113 SMBIOS 管理信息结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 3 - SMBIOS 管理信息结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| 保留 | 4 | 4 | |
| 数据 | _ | 8 | SMBIOS 表条目 |
5.2.25.6. NVDIMM 控制区域结构
系统应为NVDIMM中的每个功能接口包含一个NVDIMM控制区域结构。
| 表 5.114 NVDIMM 控制区域结构标记 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 4 - NVDIMM 控制区域结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。该结构的长度为 32 字节或 80 字节。仅当“块控制窗口数”字段的值为 0 时,该结构体的长度才可以为 32 字节。 |
| NVDIMM 控制区域结构索引 | 2 | 4 | 索引号唯一标识NVDIMM控制区域结构。 |
| 供应商ID | 2 | 6 | 指示NVDIMM 供应商的标识符。该字段应设置为NVDIMMSPD模块制造商ID代码字段 (a) 的值,其中字节 0 设置为DDR4SPD字节 320,字节 1 设置为DDR4SPD字节 321。 |
| 设备ID | 2 | 8 | 由模块供应商分配的NVDIMM标识符。该字段应设置为NVDIMM、SPD模块产品标识符字段 (b) 的值,其中字节 0 设置为SPD字节 192,字节 1 设置为SPD字节 193。 |
| 修订版ID | 2 | 10 | 10由模块供应商分配的NVDIMM修订版。该字段的字节 1 被保留。该字段的字节 0 应设置为NVDIMMSPD模块修订代码字段 (a) 的值(即SPD字节 349)。 |
| 子系统供应商ID | 2 | 12 | 12 NVDIMM非易失性内存子系统控制器的供应商 (c)。该字段应设置为NVDIMM、SPD非易失性存储器子系统控制器供应商ID字段 (b) 的值,其中字节 0 设置为SPD字节 194,字节 1 设置为SPD字节 195。 |
| 子系统设备ID | 2 | 14 | 14 NVDIMM非易失性内存子系统控制器的标识符,由非易失性内存子系统控制器供应商分配。该字段应设置为NVDIMM、SPD非易失性存储器子系统控制器器件ID字段 (b) 的值,其中字节 0 设置为SPD字节 196,字节 1 设置为SPD字节 197。 |
| 子系统修订版ID | 2 | 16 | 16由非易失性内存子系统控制器供应商分配的NVDIMM非易失性内存子系统控制器的修订版。该字段的字节 1 被保留。该字段的字节 0 应设置为NVDIMMSPD非易失性存储器子系统控制器修订代码字段 b 的值(即SPD字节 198)。 |
| 有效字段 | 1 | 18 | 18 在“ACPI¤ 6.0”中初始NFIT定义之后定义的字段的有效位,初始定义的长度为 32 和 80 字节。位[7-1]:保留。位[0]:制造地点字段和制造日期字段。位 [0] 设置为 1 表示制造地点字段和制造日期字段有效。位 [0] 设置为零表示制造地点字段和制造日期字段无效,应被忽略。符合本规范的系统应将位[0]设置为1。符合 ACPI 6.0 的系统将位 [0] 设置为零,这意味着它们没有制造地点和制造日期字段。 |
| 制造地点 | 1 | 19 | 19 NVDIMM的制造地点,由模块供应商分配。该字段应设置为NVDIMMSPD模块制造位置字段 a 的值(SPD字节 322)。该字段的有效性在有效字段位[0]中指示。 |
| 生产日期 | 2 | 20 | NVDIMM的制造日期,由模块供应商指定。该字段应设置为NVDIMM、SPD模块制造日期字段 (a) 的值,其中字节 0 设置为SPD字节 323,字节 1 设置为SPD字节 324。该字段的有效性在有效字段位 [0] 中指示。 |
保留 | 2 | 22 | 22保留 序列号 | 4 | 24 | NVDIMM的序列号,由模块供应商分配。该字段应设置为NVDIMM、SPD模块序列号字段的值,其中字节 0 设置为SPD字节 325,字节 1 设置为SPD字节 326,字节 2 设置为SPD字节 327,字节 3 设置为SPD字节328. 区域格式接口代码| 2 | 28 | 28 编程接口的标识符。该字段应设置为由NVDIMM控制区域结构表示的功能接口的NVDIMM、SPD功能接口描述符 b 的值,其中:字节 0 位 7:5 设置为 000b; b.字节 0 位 4:0 设置为功能接口字段(功能接口描述符位 4:0); c.字节 1 位 7:5 设置为 000b;和d。字节 1 位 4:0 设置为功能类字段(功能接口描述符位 9:5)。 EXAMPLE - 0x8021 的函数接口描述符表示:实现了函数接口描述符; b.没有扩展功能参数块; c.功能类是字节可寻址的能量支持(0x01);和d。函数接口是字节可寻址能量支持函数接口 1 (0x01)d,并映射到区域格式接口代码 0x0101。 块控制窗口数量| 2 | 30|块控制窗口的数量必须与相应的块数据窗口的数量相匹配。仅当块控制窗口的数量非零时,此字段后面的字段才有效。 块控制窗口的大小| 8 | 32 | 32以字节为单位 块控制窗口中的命令寄存器偏移量 | 8 | 40|以字节为单位。逻辑偏移。请参阅注释。后续块控制窗口的开始是通过添加块控制窗口的大小来计算的。 块控制窗口中命令寄存器的大小| 8 | 48 | 48以字节为单位 块控制窗口中的状态寄存器偏移量| 8 | 56 | 56以字节为单位的逻辑偏移量。参见注1。后续块控制窗口的开始是通过添加块控制窗口的大小来计算的。 块控制窗口中状态寄存器的大小| 8 | 64 | 64以字节为单位 NVDIMM 控制区域标志 | 2 | 72 | 72位 [0] 设置为 1 表示块数据 Windows 实现已缓冲。数据窗口的内容仅在状态寄存器指示时才有效。 保留 | 6 | 74 | 74保留
上表注释:
请参阅“JEDEC¤ 标准编号 21-C_固态存储器的 JEDEC 配置_”,附件 L:“DDR4¤ SDRAM 模块的串行存在检测 (SPD)”、“DDR4¤ SPD 文档版本 2”。
请参阅“JEDEC¤ 标准编号 21-C_固态存储器的 JEDEC 配置_”,附件 L:“DDR4¤ SDRAM 模块的串行存在检测 (SPD)”、“DDR4¤ SPD 文档版本 3”(即将发布)。
在NVDIMM中,该模块包含一个非易失性存储器子系统控制器。
请参阅JEDEC 标准编号 2233-22 B yte 可寻址能量支持接口, 版本 1.0(即将推出)。
注意事项
上述结构中的“逻辑偏移”是指从NVDIMM控制区域开始的偏移。逻辑偏移量是相对于设备的,而不是相对于系统物理地址空间的。软件应在应用块控制起始偏移之前构建设备地址空间(考虑交错)。
5.2.25.7. NVDIMM 块数据窗口区域结构
仅当块数据窗口的数量非零时才应提供该结构。
| 表 5.115 NVDIMM 块数据窗口区域结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 5 - NVDIMM 块数据窗口区域结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| NVDIMM 控制区域结构索引 | 2 | 4 | 提供对应NVDIMM控制区域的关联。应非零。 |
| 块数据窗口数量 | 2 | 6 | 块数据窗口的数量应与相应的块控制窗口的数量相匹配。 |
| 块数据窗口起始偏移 | 8 | 8 | 以字节为单位的逻辑偏移量(参见下面的注释)。后续块数据窗口的开始是通过添加块数据窗口的大小来计算的。 |
| 块数据窗口的大小 | 8 | 16 | 16以字节为单位 |
| 块可访问内存容量 | 8 | 24 | 以字节为单位 |
| 块可访问存储器中第一个块的起始地址 | 8 | 32 | 32以字节为单位。将该字段的值与“块数据窗口大小”相加即可得到下一个块的地址。 |
注意事项
上表中的逻辑偏移是指从NVDIMM数据窗口区域开始的偏移。逻辑偏移量是相对于设备的,而不是相对于系统物理地址空间的。软件应在应用块数据窗口起始偏移之前构建设备地址空间(考虑交错)。
5.2.25.8. 刷新提示地址结构
软件在写入NVDIMM区域后需要保证持久性(即保证写入已达到目标NVDIMM)。 Flush Hint 功能是特定于平台的,如果支持,平台会通过提供 Flush Hint 地址结构向OSPM公开此持久性机制。
对于给定的NVDIMM(由刷新提示地址结构中的NFIT设备句柄指示),软件可以写入这些刷新提示地址中的任何一个,以使任何先前对NVDIMM区域的写入从中间平台缓冲区刷新到目标NVDIMM(以实现持久性)。请注意,平台缓冲区不包括处理器缓存!处理器通常包含ISA,用于将数据从处理器缓存中清除。
| 表 5.116 刷新提示地址结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 6 - 刷新提示地址结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| NFIT 设备句柄 | 4 | 4 | 表示该结构中的刷新提示地址支持的NVDIMM。 |
| 该结构中刷新提示地址的数量 (m) | 2 | 8 | 该结构中刷新提示地址的数量。 |
| 保留 | 6 | 10 | 10保留 |
| 同花提示地址 1 | 8 | 16 | 16需要写入以引起持久性刷新的 64 位系统物理地址。允许软件写入数据的高速缓存行。数据的内容与刷新提示机制的功能无关。 |
| …… | 8 | 24 | |
| 同花提示地址 m | 8 | 16+ ((米-1)*8) | 需要写入以引起持久性刷新的 64 位系统物理地址。允许软件写入数据的高速缓存行。数据的内容与刷新提示机制的功能无关。 |
5.2.25.9. 平台能力结构
该结构向OSPM告知NVDIMM平台功能。
| 表 5.117 平台功能结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 7 - 平台能力结构 |
| 长度 | 2 | 2 | 整个结构的长度(以字节为单位)。 |
| 最高有效能力 | 1 | 4 | 平台实现的最高有效能力的位索引。不应考虑后续位来确定平台支持的功能。 |
| 保留 | 3 | 5 | 保留 (0) |
| 能力 | 4 | 8 | 位[0] - CPU 高速缓存刷新至NVDIMM 断电时的耐用性。如果设置为 1,表示平台确保在系统断电时将整个CPU存储数据路径刷新到持久内存。位[1] - 内存控制器刷新至NVDIMM 断电时的耐用性。如果设置为 1,表示平台提供机制,在平台断电时自动将未完成的写入数据从内存控制器刷新到持久内存。注:如果位 0 设置为 1,则该位也应设置为 1。位 [2] - 字节可寻址持久内存硬件镜像功能。如果设置为 1,表示平台支持将多个字节可寻址持久内存区域镜像在一起。如果支持并启用此功能,则健康的硬件镜像交错集将在NFIT表的系统物理地址范围结构中设置EFI_MEMORY_MORE_RELIABLE地址范围内存映射属性。位[31:3] - 保留 |
| 保留 | 4 | 12 | 12保留 (1) |
5.2.25.10. NVDIMM 表示格式
如果软件或NVDIMM制造商在标签上显示、打印或以其他方式提供NVDIMM的标识符(例如,唯一标识NVDIMM),则应使用以下十六进制格式:
如果制造地点和制造日期字段有效:
C language format string: "%02x%02x-%02x-%02x%02x-%02x%02x%02x%02x"
格式值:
供应商ID字节0(包括奇偶校验位)
供应商ID字节1
制造地点字节
4.制造日期字节0(即年份)
制造日期字节 1(即星期)
序列号字节 0
序列号字节 1
序列号字节 2
序列号字节 3
如果制造地点和制造日期字段无效:
C language format string: "%02x%02x-%02x%02x%02x%02x"
格式值:
供应商ID字节0(包括奇偶校验位)
供应商ID 字节 1
序列号字节 0
序列号字节 1
序列号字节 2
序列号字节 3
此格式与SPD字节 320 到 328 从低到高的顺序匹配(即,在左侧显示最低或第一个字节)。