NVMe Flexible Data Placement:資料放置、回收單位與事件觀察

17 minute read

English

00.01.FDP 讓主機把資料何時會一起失效的知識,轉成 SSD 可以使用的放置選擇。本文從回收成本開始,連起配置、namespace 映射、Write、RUH 更新,以及能驗證使用結果的狀態、統計與事件。讀完應能解釋一個 PID 如何選到目前的 RU,也能判斷一次操作究竟改了參照、邏輯資料,還是整個群組設定。

namespace
namespace,主機透過 controller 存取的一份已格式化非揮發性容量。
FDP
Flexible Data Placement;主機參與資料放置以降低回收搬移成本的能力。
PID
Placement Identifier;放置識別值,簡寫 PID;16-bit 值,依配置含 PHNDL 與可能存在的 RGID。
RUH
Reclaim Unit Handle;回收單位控制代號,簡寫 RUH;在每個 RG 各參照一個目前的 RU。
RU
Reclaim Unit;回收單位,簡寫 RU;FDP 模型中接收一批資料的媒體單位。

這篇的主軸

01

資料為什麼要一起放

01-01先從有效資料搬移的成本理解目的,再分清 RG、RUH、RU,以及初始與持續隔離。它們決定分組的範圍與搬移後仍須維持的條件。

RG
Reclaim Group;回收群組,簡寫 RG;包含多個可輪替使用的回收單位。
02

設定如何接到一筆 Write

02-01配置定義資源與 PID 格式;namespace 清單把 PHNDL 對到 RUH;Data Placement Directive 再讓 Write 明確選擇 RG 與 PHNDL。

PHNDL
Placement Handle;namespace 的映射清單索引,用來查出 RUHID。
03

資料生命週期與主機控制

03-01Status 查當下剩餘量,Update 換空 RU,DSM 描述失效的 LBA。三者分工不同,配合使用才有機會改善回收成本。

DSM
Dataset Management;由 host 提供資料範圍的使用與配置提示。
04

如何知道實際發生什麼

04-01Usage 看配置來源,Statistics 看累計量,Events 看原因與位置;先辨識範圍、期間與有效位,才能正確解讀數據。

00.02.適合具備 OS、Computer Organization 與 SSD 基本概念的讀者。以 PCIe 與 NVM Command Set 為情境;所有數量與命令值的例子都是說明性設定,實際能力以裝置回覆為準。本文包含指定主範圍,必要引用只講理解 FDP 所需的欄位與條件。

PCIe
PCI Express,NVMe memory-based controller 使用的 transport 與裝置互連。
NVM
Non-Volatile Memory,斷電後仍能保存資料的記憶體。

把主軸連起來

00.03.可以沿著一批資料走完全文:先按預期失效時間分組,再設定可用資源與映射;寫入時透過 PID 選到目前 RU,寫滿或主動 Update 後使用下一個 RU。舊資料何時失效、何時由主機提供解除配置資訊,是另一條同樣重要的線。

00.04.以下教學先按理解順序串起這條資料路徑,再把各張規格表放回它所解答的問題。資料量、資源數、清單索引與命令的數量減 1 編碼會各自演算,不用背一串縮寫來猜其意義。

開著 Spec 的順向報告路徑

R-1先用本文主軸與例子講全貌,再依下列 PDF 檢視器頁碼向後翻。Base 只切一次到 NVM。共用頁以起始章節與停止標題為界;教學所用的必要背景已在中文 HTML 解釋,不必在現場為每個引用來回翻頁。

翻頁順序主範圍要說清楚的關係與停止位置
R1 · Base PDF 110–111§3.2.4看 70 的 RG/RUH/RU 關係,先建立名詞位置。 在 §3.2.5 前停下。
R2 · Base PDF 319–327§5.2.13.1.29–5.2.13.1.32從 FDP Configurations 標題起:配置和 PID → Usage → Statistics → Events。先標記事件的 NVM 擴充,最後切文件再接。 在 §5.2.13.1.33 前停下。
R3 · Base PDF 506–509§5.2.30.1.21–5.2.30.1.22先用 1Dh 把群組設定完成,再用 1Eh 選 RUH 的事件。 在 §5.2.30.1.23 前停下。
R4 · Base PDF 594–597§7.3–7.4比較 Receive/Status 和 Send/Update;用 2 個 PID 演算 NPID 與 buffer。 在 §7.5 前停下。
R5 · Base PDF 653§8.1.9.4只讀 Data Placement 標題下的內容,確認沒有直接的 Directive Send/Receive 操作。 在 §8.1.10 前停下。
R6 · Base PDF 673–678§8.1.12從頁底 Flexible Data Placement 標題起,以 730→731→732 收束全貌,再走啟用、reset 後恢復與 Write。 在 §8.1.13 前停下。
R7 · NVM PDF 26§3.2一次切到 NVM,補完整 21 的 PID/RUHID/EARUTR/RUAMW。 在 §3.3 前停下。
R8 · NVM PDF 79§4.1.4.6–4.1.4.7確認統計計入的命令,再用 116 解讀 Media Reallocated 的 ETSP。 在 §4.1.4.8 前停下。
EARUTR
Estimated Active Reclaim Unit Time Remaining;狀態回覆中的剩餘估計秒數。
buffer
緩衝區;主機準備給命令提供或接收資料的記憶體。
RUAMW
Reclaim Unit Available Media Writes;目前還可寫的 logical block 數。
RUHID
Reclaim Unit Handle Identifier;識別 Endurance Group 內的一個 RUH。
ETSP
Event Type Specific;由事件類型決定格式的 16-byte 內容。
NPID
Number of Placement Identifiers;Update 清單 PID 數減 1。

01 先看資料為何需要一起回收

一筆 Write 的兩個選擇LBA 決定邏輯位置;PID 透過 namespace 的映射選目前的 RU。圖中 RU A 是說明用名稱,不是可填進命令的地址。來源:Base 70、730。Write · NSID A · LBA 128 · PID 8001hLBA 128namespace 邏輯位置RGIF = 2 → RGID 2 / PHNDL 1A 的映射表:PH1 → RUH3RUH3 / RG2 → RU A目前寫入的回收單位
LBA 決定邏輯位置;PID 透過 namespace 的映射選目前的 RU。圖中 RU A 是說明用名稱,不是可填進命令的地址。來源:Base 70、730。
NSID
Namespace Identifier,controller 用來指向 namespace 的數值 handle;identifier 不等於 namespace 物件本身。
RGID
Reclaim Group Identifier;選擇 Reclaim Group 的編號。
RGIF
Reclaim Group Identifier Format;PID 高位分配給 RGID 的 bit 數。

01.01.FDP 讓主機依資料使用方式安排寫入,目標是減少媒體回收時搬移仍有效資料的成本。功能以 Endurance Group 為範圍;LBA 決定邏輯位置,Placement Identifier 則透過 namespace 的對照關係選擇目前接收資料的 Reclaim Unit。

Placement Identifier
Placement Identifier;放置識別值,簡寫 PID;16-bit 值,依配置含 PHNDL 與可能存在的 RGID。
Endurance Group
耐久度群組;FDP 配置生效的媒體管理範圍。
Reclaim Unit
Reclaim Unit;回收單位,簡寫 RU;FDP 模型中接收一批資料的媒體單位。
來源:Base 2.4 §8.1.12.1

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.1, 文件頁 647-650, PDF 頁 673-676

02 初次分開寫入,搬移後是否仍分開

同一 RG 內:只改隔離類型,觀察搬移目的
RUH 類型X、Y 的新資料控制器搬移 X、Y 舊資料後
Initially Isolated不同 RU允許進同一個目的 RU
Persistently Isolated不同 RUX、Y 必須保留不同目的 RU
兩種都允許在同一 RG 內搬移;差別在不同 RUH 的資料能否合併,不是能否搬移。來源:Base 295、731、732。
Persistently Isolated
持續隔離;內部搬移後目的 RU 仍只含同一 RUH 寫入的資料。
Initially Isolated
初始隔離;新寫入分開,內部搬移可合併不同同類型 RUH 的資料。

02.01.一個 RU 同時最多由一個 RUH 參照,因此不同 RUH 的新寫入起初分開。Initially Isolated 允許控制器搬移後在同一 Reclaim Group 合併同類型 RUH 的資料;Persistently Isolated 則要求搬移目的 RU 只包含同一 RUH 寫入的資料。

Reclaim Group
Reclaim Group;回收群組,簡寫 RG;包含多個可輪替使用的回收單位。
來源:Base 2.4 §8.1.12.1

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.1, 文件頁 649-650, PDF 頁 675-676

03 讀懂候選配置與 PID 的切割方式

8001h 如何變成 RG 2 與 PH 1說明性配置 RGIF=2。方塊寬度為排版調整,以標示的 bits 為準;解出 PH 後還要查 namespace 映射。來源:Base 294、297。PID = 8001h = 1000 0000 0000 0001bbits 15:1410b → RGID 2bits 13:000 0000 0000 0001b → PHNDL 1查 namespace A:PH1 → RUH3,再選 RG2
說明性配置 RGIF=2。方塊寬度為排版調整,以標示的 bits 為準;解出 PH 後還要查 namespace 映射。來源:Base 294、297。

03.01.LID 20h 回傳 Endurance Group 的配置清單。先讀整份大小與每筆 DSZE,再檢查 FDPCV、NRG、NRUH、RUHT、RUNS 等內容。RGIF 決定 16-bit PID 高位有多少 bits 是 RGID,剩餘低位才是 PHNDL;配置索引不是 byte offset。

offset
位移;距結構起點的距離,讀本篇時需確認單位是否為 bytes。
FDPCV
FDP Configuration Valid;該候選配置目前是否可用。
DSZE
Descriptor Size;本筆配置描述器的 byte 長度,含補齊。
NRUH
Number of Reclaim Unit Handles;RUH 數,直接計數。
RUHT
Reclaim Unit Handle Type;指定搬移時的隔離類型。
RUNS
Reclaim Unit Nominal Size;每個 RU 的名目 byte 大小。
LID
Log Page Identifier;指定要讀取哪一種 log page 的編號。
NRG
Number of Reclaim Groups;RG 數,直接計數。
來源:Base 2.4 §5.2.13.1.29

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.29, 文件頁 293-296, PDF 頁 319-322

04 啟用的是整個 Endurance Group

先建立配置,再讓 Write 使用它
  1. 查 FDPS → LID20h 選目前有效的配置。
  2. 準備好目標 Endurance Group:修改 FID1Dh 前必須沒有 namespace。
  3. Set FID1Dh、SV=1,填 ENDGID、FDPCIDX、FDPE。
  4. 重新查資料格式 → Create namespace,建立 PHNDL→RUHID。
  5. 設定所需事件 → 對 namespace 啟用 Data Placement Directive → 查狀態與 cache。
  6. Write 使用 PID;後續以 Status、Update、Statistics、Events 觀察並管理。
這是設定依存關係;namespace 的資料處理必須先完成,不能把群組改配置當成無條件切換。來源:Base §8.1.12.2。
FDPCIDX
FDP Configuration Index;選清單的第幾筆,從 0 開始。
ENDGID
Endurance Group Identifier;選定耐久度群組的編號。
FDPE
Flexible Data Placement Enable;FID 1Dh 中的群組啟用位。
FDPS
Flexible Data Placement Support;控制器是否支援 FDP 的能力位。
SV
Save;Set Features 是否要求保存設定。

04.01.先查 FDPS 與有效配置,讓目標 Endurance Group 沒有 namespace,再以 FID 1Dh、SV=1 設定 FDPE 與 FDPCIDX。設定值改變後需重新取得資料格式資訊,再建立 namespace;FDP 設定成功改變也會清除該群組的 FDP 事件與統計。

FID
Feature Identifier;指定要讀取或設定哪一項 Feature 的編號。
來源:Base 2.4 §8.1.12.2

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.2, 文件頁 651-652, PDF 頁 677-678

05 建立 namespace 的 Placement Handle 對照表

05.01.NPHNDLS 與 Placement Handle List 建立 namespace 私有的 PHNDL→RUHID 對照。主機可明確列出不同 RUH;NPHNDLS=0 則由控制器選一個 RUH 作為 PHNDL 0。共享 RUH 的 namespace 必須使用相同資料格式,且控制器選用與主機明確指定的 RUH 有分配限制。

NPHNDLS
Number of Placement Handles;建立 namespace 時明確提供的映射項目數。
來源:NVM Command Set 1.3 §4.1.6.3

來源:NVME-NVM-CS-1.3, Rev. 1.3, §4.1.6.3, 文件頁 110-113, PDF 頁 110-113

06 分清兩次啟用與三種 Write 情況

命令名字相似,目標卻不同
目的入口與選擇改變或取得什麼
群組啟用 FDPSet Features / FID1DhEndurance Group 的配置
namespace 使用 PIDDirective Send / Identify / Enable target02hData Placement 啟用狀態
查每個 PID 狀態I/O Management Receive / MO1映射、剩餘量、估計時間
改到空 RUI/O Management Send / MO1所列 PID 的目前 RU 參照
Data Placement 自身沒有 Directive Send/Receive 操作,管理 RU 要走 I/O Management。來源:Base §8.1.9.4、§7.3–7.4。
I/O
Input/Output,對 namespace 執行資料輸入與輸出的操作類別。

06.01.FDP 已啟用的群組內,namespace 還需要啟用 Data Placement Directive 才能明確指定 PID。Enable 使用外層 Identify DTYPE=00h,CDW12 目標 DTYPE=02h;Data Placement 本身沒有 Send/Receive 操作。沒有使用 Directive 的寫入則使用 PHNDL 0,讓控制器選 Reclaim Group。

DTYPE
Directive Type;依命令情境選操作類型或 I/O 附加資訊類型。
來源:Base 2.4 §8.1.9.4

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.9.4, 文件頁 627, PDF 頁 653

07 把一筆 Write 走完,包含非法 PID

07.01.明確放置的 Write 用 DTYPE=02h、DSPEC=PID;LBA 與區塊數仍決定邏輯資料。PID 的 RGID 或 PHNDL 無效時,控制器另選該 namespace 可存取的 RG/RUH 來處理放置,並在所選 RUH 已啟用該事件時記錄 Invalid Placement Identifier;不能把這個規則套到 Update。

DSPEC
Directive Specific;Data Placement 的 I/O 中承載 PID。
來源:Base 2.4 §8.1.12.3

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.3, 文件頁 652, PDF 頁 678

08 查目前可寫容量,別把回覆當成永久保證

同一個 PH,跨 4 個 RG 的狀態可能不同
PID / PH / RGRUHIDRUAMW (blocks)EARUTR (s)
0001h / 1 / 03830
4001h / 1 / 13415
8001h / 1 / 23620
C001h / 1 / 3300
RGIF=2 的說明性快照,並非容量保留。最後一列 RUAMW=0 是無剩餘可寫 blocks;EARUTR=0 則是未回報時間,兩個 0 意義不同。來源:NVM 21。

08.01.I/O Management Receive 的 MO=01h 逐一回傳 namespace 每個 PHNDL、每個 RG 的狀態。NVM 描述器含 PID、RUHID、EARUTR 秒數與 RUAMW logical blocks;回覆是處理當下的狀態,未必反映其他未完成命令,且 RUNS 只是名目大小。

MO
Management Operation;I/O Management 的操作選擇。
來源:NVM Command Set 1.3 §3.2.1.1

來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.2.1.1, 文件頁 26, PDF 頁 26

09 主機要求換一個空 RU,舊資料仍有自己的生命週期

相同 PID,切換的是目前 RU先協調並完成相關 I/O,再 Update 並等完成,才能讓下一批有明確的操作邊界;若重疊處理,Write 可落在切換前或後。舊 RU 的資料仍需按其生命週期管理。來源:Base §7.4.1.1。PID 8001h → RU A已寫入這一批資料PID 8001h → RU B空 RU 接下一批Update:改參照;PH1 → RUH3 的映射不變RU A 的有效 LBA 不會因為 Update 就消失
先協調並完成相關 I/O,再 Update 並等完成,才能讓下一批有明確的操作邊界;若重疊處理,Write 可落在切換前或後。舊 RU 的資料仍需按其生命週期管理。來源:Base §7.4.1.1。

09.01.I/O Management Send MO=01h 接收 PID 清單,將已寫入的 RU 參照換到空 RU;若原本已空,可換也可不換。非法 PID 或超出限制會拒絕命令,但失敗前可能已有部分更新。與 Update 重疊處理的 Write 可能落在更新前或更新後的 RU。

來源:Base 2.4 §7.4.1.1

來源:NVME-BASE-2.4, Rev. 2.4, §7.4.1.1, 文件頁 570-571, PDF 頁 596-597

10 Usage 查誰配置了 RUH,不查剩多少容量

10.01.LID 21h 按 RUHID 回報 RUHA:0 未被 namespace 使用,1 由主機明確指定,2 由控制器選用。這份清單以 Endurance Group 為範圍,最多一個 RUH 的屬性為 2;它不列每個 RG 的剩餘可寫量,後者需要 I/O Management Receive。

RUHA
Reclaim Unit Handle Attributes;Usage 中的配置來源分類。
來源:Base 2.4 §5.2.13.1.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.30, 文件頁 296-297, PDF 頁 322-323

11 用相同量測期間判斷寫入放大

11.01.LID 22h 的 HBMW 計主機寫入,MBMW 同時包含主機與控制器內部寫入,MBE 計媒體擦除量,皆為含對應 metadata 的相關 byte 計數。比較相同配置期間的增量,才可用 ΔMBMW/ΔHBMW 觀察寫入放大;不能把擦除量加到分子,或跨清零直接相減。

metadata
隨資料儲存的附加資訊;統計與格式判斷時不能只看 data bytes。
HBMW
Host Bytes with Metadata Written;含 metadata 的主機相關寫入 byte 計數。
MBMW
Media Bytes with Metadata Written;含 metadata 與相關內部寫入的媒體 byte 計數。
MBE
Media Bytes Erased;媒體擦除 byte 計數。
來源:Base 2.4 §5.2.13.1.31

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.31, 文件頁 297-298, PDF 頁 323-324

11.02.NVM 的 HBMW/MBMW 計入 User Data Out Commands、Write Zeroes 和 Write Uncorrectable;命令是否有等量主機 payload,不能代替這項統計分類。

User Data Out Commands
把 user data 寫向媒體的命令分類;此分類不等於必須有等量 PCIe payload。
來源:NVM Command Set 1.3 §4.1.4.6

來源:NVME-NVM-CS-1.3, Rev. 1.3, §4.1.4.6, 文件頁 79, PDF 頁 79

12 先替 RUH 選事件,再讀已發生的紀錄

12.01.FID 1Eh 透過 NSID+PHNDL 選 RUH,為列出的事件類型啟用或停用紀錄。Get 回支持的事件與目前啟用狀態,Set 送事件類型清單;共享 RUH 的 namespace 也共享該 RUH 的設定效果。LID 23h 才是已發生事件的紀錄。

來源:Base 2.4 §5.2.30.1.22

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.22, 文件頁 481-483, PDF 頁 507-509

13 把事件的原因、位置與資料量讀完整

先看有效位,再決定哪些數字可用
位元為 1 時可讀為 0 時怎麼處理
PIVPID;03h事件為主機原值PID 保留
NSIDVNSIDNSID 清0並忽略
LVRGID 與 RUHID兩欄清0並忽略
LBAV(80h NVM 擴充)其中一個被搬移 LBALBA 清0並忽略
欄位清 0 不代表真的選到了 0 號物件;要先確認有效位。來源:Base 303、NVM 116。
NSIDV
NSID Valid;事件的 namespace 識別值是否有效。
LBAV
LBA Valid;Media Reallocated 是否提供有效的示例 LBA。
PIV
Placement Identifier Valid;事件 PID 是否有有效報告。
LV
Location Valid;事件 RGID 與 RUHID 是否有效。

13.01.LID 23h 一次選 host 或 controller events,依發生先後回傳 64-byte 紀錄。先看 ETYP,再用 PIV/NSIDV/LV 判斷哪些識別欄位有效。Media Reallocated 的 NVM 擴充還要讀 LBAV、NLBAM 和一個示例 LBA;事件時間戳不保證數值遞增。

controller
controller,實作 NVMe 介面、取走 command 並回報 completion 的控制實體。
NLBAM
Number of LBAs Moved;搬移數量,0 與 FFFFh 有特殊意義。
ETYP
Event Type;紀錄內的事件種類編碼。
Host
主機;執行作業系統並送出 NVMe 命令的一端。
來源:Base 2.4 §5.2.13.1.32

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.32, 文件頁 298-301, PDF 頁 324-327

14 把資料失效、RU 切換與 reset 分開

結束一批資料時,3 種操作各改什麼
操作主要改變不能由此推論
RUH Update未來寫入使用的 RU 參照舊資料已失效或已擦除
DSM / AD=1向控制器提供不再需要的 LBA 範圍立即擦除,或改了 PH→RUH 映射
變更 FID1Dh群組 FDP 配置;清事件與統計可在現有 namespace 尚存時任意切換
用「誰、改了什麼、何時生效」讀操作,比把它們都叫回收更清楚。來源:Base §7.4、§8.1.12、NVM §3.3.3。
AD
Attribute–Deallocate;DSM 中標示可解除配置範圍的選項。

14.01.降低回收成本,需要主機追蹤一整個 RU 內資料的使用週期;資料不再需要時,可用 Dataset Management AD=1 指出其 LBA 範圍。RUH Update 只改未來寫入的參照。Reset 後重新查配置、事件、namespace 的 PID 狀態與 cache,不要將保留啟用狀態誤認為所有 RU 狀態不變。

來源:Base 2.4 §8.1.12

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12, 文件頁 647-652, PDF 頁 673-678

接著打開 Spec 看什麼

15.01.以下按概念列出閱讀位置。報告時先用上面的流程說明問題,再打開對應章節看欄位與完整條件。中文教學 HTML 另有本篇全部圖表的逐圖重點、案例與細節。

要說明的觀念Spec 閱讀位置
先看資料為何需要一起回收Base 2.4 §8.1.12.1
初次分開寫入,搬移後是否仍分開Base 2.4 §8.1.12.1
讀懂候選配置與 PID 的切割方式Base 2.4 §5.2.13.1.29
啟用的是整個 Endurance GroupBase 2.4 §8.1.12.2
建立 namespace 的 Placement Handle 對照表NVM 1.3 §4.1.6.3
分清兩次啟用與三種 Write 情況Base 2.4 §8.1.9.4
把一筆 Write 走完,包含非法 PIDBase 2.4 §8.1.12.3
查目前可寫容量,別把回覆當成永久保證NVM 1.3 §3.2.1.1
主機要求換一個空 RU,舊資料仍有自己的生命週期Base 2.4 §7.4.1.1
Usage 查誰配置了 RUH,不查剩多少容量Base 2.4 §5.2.13.1.30
用相同量測期間判斷寫入放大Base 2.4 §5.2.13.1.31 · NVM 1.3 §4.1.4.6
先替 RUH 選事件,再讀已發生的紀錄Base 2.4 §5.2.30.1.22
把事件的原因、位置與資料量讀完整Base 2.4 §5.2.13.1.32
把資料失效、RU 切換與 reset 分開Base 2.4 §8.1.12
開啟完整中文教學與逐圖解釋 →

學完後想一想

1. PHNDL 1 對 RUH 3、RGIF=2,PID 8001h 寫向哪裡?

16.01.高 2 bits 是 RGID 2,低 14 bits 是 PHNDL 1;查 namespace 的表得到 RUH 3,因此使用 RUH 3 在 RG 2 目前參照的 RU。它不是實體地址,也不是 LBA。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.29, 文件頁 293-296, PDF 頁 319-322

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.1, 文件頁 647-650, PDF 頁 673-676

2. 同一個非法 PID 放在 Write 和 RUH Update,結果一樣嗎?

16.02.不同。明確使用 Data Placement 的 Write 由控制器另選可存取的位置,並依事件啟用條件記錄;Update 拒絕非法 PID,而且失敗前可能部分更新。這兩種規則不能互套。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.3, 文件頁 652, PDF 頁 678

來源:NVME-BASE-2.4, Rev. 2.4, §7.4.1.1, 文件頁 570-571, PDF 頁 596-597

3. NUMFDPC=1、NPHNDLS=2、NPID=1,各是多少項?

16.03.依序為 2 筆配置、2 個明確 Placement Handles、2 個 Update PIDs。前後兩者採數量減 1,中間直接計數;名稱都像數量,編碼卻不同。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.29, 文件頁 293-296, PDF 頁 319-322

來源:NVME-NVM-CS-1.3, Rev. 1.3, §4.1.6.3, 文件頁 110-113, PDF 頁 110-113

來源:NVME-BASE-2.4, Rev. 2.4, §7.4.1.1, 文件頁 570-571, PDF 頁 596-597

4. 共享同一 Persistently Isolated RUH,能保證兩個 namespace 彼此隔離嗎?

16.04.不能。持續隔離是按 RUH 區分資料來源;兩個 namespace 共用同一個 RUH,正好落在同一個隔離對象之內,還會共享相關事件設定效果。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.1, 文件頁 649-650, PDF 頁 675-676

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.22, 文件頁 481-483, PDF 頁 507-509

5. Media Reallocated 回 NLBAM=8、LBA=100,能列出全部被搬的 LBA 嗎?

16.05.不能。先確認 LBAV 有效;100 只是其中一個位置。其餘 7 個可能不連續,也無法由這筆事件的單一 LBA 欄重建完整清單。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.32, 文件頁 298-301, PDF 頁 324-327

6. 改過 FDP 配置後,能用之前的 HBMW/MBMW 繼續算同一段增量嗎?

16.06.不能直接延續。成功改變 Feature 值會清零統計,應結束舊量測、重新建立起點;也要避免飽和或 ΔHBMW=0 的情況。

來源

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.31, 文件頁 297-298, PDF 頁 323-324

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.12.2, 文件頁 651-652, PDF 頁 677-678

採用的規格版本

NVM Express Base Specification, Revision 2.4

NVM Express NVM Command Set Specification, Revision 1.3

Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...