隨著兩周前Gigabyte AORUS Gen5 10000 SSD在美國Amazon和newegg的發售,以及其它廠家PCIe Gen5 M.2 SSD的發售,針對Gen5 M.2 SSD的測試對于筆記本電腦廠商也早于之前的預期開始了測試。
針對Gen5 M.2 SSD的測試常用的工具,一般有下面幾大類:
PCIe Gen5協議分析儀
這類產品以SeriaTek PCIe Gen5 analyzer為代表。針對M.2 SSD的一個關鍵指標是保證M.2在進出低功耗L1.2的時候可以穩定地抓取并且解碼數據
PCIe Gen5 SSD鏈路故障注入工具
這類產品以Quarch公司的Gen5 M.2 card control module為代表,串接在M.2 SSD和M.2插槽之間,導入物理層和鏈路層的各種問題,可以仿真出M.2 SSD在插入市場上各種質量參差不齊的主板的時候是否仍然可以穩定、可靠地工作。
PCIe Gen5 SSD性能和功能測試設備
這類產品以SanBlaze公司的RM5/DT5為代表,已經在過去一年多的時間里獲得了全球各大Gen5 M.2 SSD廠商的選擇,尤其是在Gen5 低功耗L1.2測試上通過獨有的硬件設計解決了低功耗測試測試的難題。我們本篇文章也是重點介紹該功能的實現。
PCIe Gen5 SSD電壓拉偏測試
這類產品以Quarch公司的Gen5 M.2 PPM (programmable power module)為代表,測試Gen5 M.2在接入不同的主板的時候,或者主板電壓不穩的時候是否可以正常工作。
PCIe Gen5 SSD功耗和邊帶sideband信號追蹤回溯工具
這類產品以Quarch公司的Gen5 M.2 PAM (programmable analysis module)為代表,測試Gen5 M.2 SSD在接入不同的主板,尤其是在L1.2低功耗下面的各種問題的分析非常方便,它可以非常高的分辨率長時間抓取所有的電壓、電流和功耗以及sideband例如CLKREQ#, PERST#等,方便工程師進行問題的回溯分析。
PCIe Gen5 SSD測試環境搭建常用盤柜和治具
這類產品以SerialCables公司的Gen5 8槽位測試盤柜,以及各類Gen5 M.2轉接卡和延長線為主,例如Gen5 M.2/AIC, M.2/U.2等,重在保證Gen5信號的品質。
PCIe Gen5 SSD高低溫測試溫箱
這類產品根據使用場景分為研發用和生產用兩類。研發用的話,可以采用SerialCable RM5,可以提供0~75度的溫度測試范圍;對于生產用,一般根據用戶的需求進行定制,一般采用通用溫箱架構,需要保證Gen5信號的穩定性和設備的經濟型。
針對上述的各類產品的介紹,感興趣的朋友可以到下面的百度網盤下載PCIe Gen5測試工具白皮書8.0(https://pan.baidu.com/s/1FSc8LBTKM3aGr3FZ6nvhrQ?pwd=xcb3)。本文的重點是介紹如何測試PCIe Gen5 M.2 SSD的L1.2低功耗,測試連接圖請參考下面的SanBlaze + SerialTek L1.2連接示意圖360度VR照片(https://www.720yun.com/t/77vk6mdw7dl )。
L1.2低功耗測試介紹
SANBlaze SBExpress 和Certified by SANBlaze測試方法通過提供創建復雜測試套件、驗證規范合規性、數據完整性、電源和reset測試以及 MI 合規性的簡單方法,大大簡化了 PCIe NVMe 設備的驗證。
通過SANBlaze 認證測試套件的 10.5 版本,SANBlaze 推出了一套測試,旨在驗證 NVMe 設備在超低功耗子狀態 L1.1 和 L1.2 下的運行。
L1.x 子狀態測試對旨在用于平板電腦和筆記本電腦等電池供電設備的NVMe SSD的生產商提出了獨特但至關重要的挑戰。這些設備將極大地受益于新的電源子狀態(power sub-state),這些子狀態以少量 PCIe 延遲換取盡可能低的功耗。
與 L1.x 子狀態的根本區別是使用帶外信號來 “喚醒設備”。使用帶外信號允許設備通過完全關閉其收發器并僅監控CLKREQ# 帶外信號的電平來實現接近零功耗的狀態。
主要 PCIe 電源狀態(Power States)
可以在以下 PCI?SIG 文檔https://pcisig.com/making?most?pcie?low?power?features中找到 PCIe 電源狀態的全面概述,特別是L1.1 和 L1.2 子狀態由 PCI?SIG 營銷工作組聯席主席 Scott Knowlton 撰寫,此處引用。
主要的 PCIe 電源狀態是:
L0 – 正常運行的鏈路
L1 – 沒有數據傳輸的鏈路狀態,因此 PCIe 收發器邏輯的關鍵部分可以關閉
L2 – 與 L3 相同的鏈路狀態,但其中電源尚未(尚未)被移除
L3 – 設備關機時
L0s 一種鏈路狀態,包括數據可以在一個方向上傳輸,可能在另一個方向上不傳輸數據,因此鏈路上的兩個設備可以各自獨立地空閑其發送端(transmitter)
定義 L1.1 和 L1.2 子狀態
隨著 PCIe 速度和通道密度的增加,僅僅保持 PCIe 通道處于活動狀態就會消耗大功率,根據L1.2 power substate定義,進入低功耗時候將關閉收發器PCIe transceiver PHY鏈路,然后在需要的時候再重新打開。
為了解決這個難題,PCIe NVMe 定義了帶外信號“CLKREQ#”,其最簡單的定義是從主機到端點設備的“喚醒”信號,用于重新打開 PHY 并重新開始 PCIe 鏈路通信。關閉 PHY 可以節省大量電量并允許PCIe endpoint節點在空閑模式下幾乎不消耗功率,這對于電池供電的設備如筆記本電腦來說是一個顯著的改進。
Scott Knowlton 的論文描述了 L1.x 子狀態的好處如下,為了完整性,這里引用上述提及的規范中的文本。
“L1 子狀態背后的基本思想是使用 PCIe 收發器內部的高速邏輯以外的東西來喚醒設備。目標是在活動狀態下實現接近零的功耗。
這是通過向現有 PCIe 引腳 (CLKREQ#) 添加額外功能以提供非常簡單的信號協議來實現的。這允許 PCIe 收發器關閉其高速電路并依靠該信號再次喚醒它們。事實上,這定義了兩個新的power substate子狀態:L1.1 和 L1.2, 分別提供了它們自己的功率與退出延遲權衡選擇。
L1.1 和 L1.2 都允許 PCIe 收發器關閉其 PLL 及其接收器和發射器,而 L1.2 甚至允許關閉common mode keeper circuits。
結果是非常顯著的。高效的電路設計和現代硅工藝意味著典型的 PCI Express 4.0 x4 PHY(4 個收發器加上用于四個通道的相關數字邏輯)在 L0 中以全 16GT/s 數據速率運行時消耗的功率在 400?500mW 范圍內。
使用 L1.1,相同 PHY 的功耗降低了大約 20 倍,僅消耗 20?30mW。接受稍長的 L1.2 退出延遲可使功耗再降低 10倍至僅 2?3mW。
下圖顯示了與使用 L1 子狀態相比,現有 L1 狀態可用的低功耗解決方案。預計多通道鏈路的節能規模呈線性增長, 并且實施 L1 子狀態功能會在 L1 退出延遲增加時降低功耗。實施 L1 子狀態是降低使用 PCIe 的移動設計功耗的關鍵。”
圖 1:L1.x 狀態圖和子狀態定義
控制 CLKREQ#
如上一節所述,NVMe U.2、U.3、EDSFF 和 M.2 連接器上可用的引腳 CLKREQ# 已被修改,以向處于電源狀態 L1.1 和L1 的M.2 SSD固態盤提供“喚醒”信號.2 如圖1所示。
為了驗證 L1、L1.1 和 L1.2 低功耗子狀態的正確操作,用戶必須能夠監視和控制 CLKREQ# 信號。這可以使用 SANBlaze PCIe Gen5 NVMe 測試系統來實現(V10.5 軟件版本)。
圖 2:上游端口啟動退出的 L1.1 波形
圖 3:下游端口啟動退出的 L1.1 波形
CLKREQ# 信號
CLKREQ# 在被測設備處于 L0(全功率)狀態時被Assert拉低,并且可以由 PCIe 鏈路上的上游或下游設備Assert,以將設備從 L1.1 或 L1.2 恢復到 L0.Active。
CLKREQ# L1.1 L1.2 測試模式
SANBlaze 支持在 SBExpress?RM5(Rack Mounted PCIe Gen5機架式測試系統) 和SBExpress?DT5 (Desk Top PCIe Gen5桌面式測試系統)NVMe SSD測試系統上進L1.1 和 L1.2 測試。目前內置腳本可與SANBlaze 硬件一起使用,其操作如下所述。
根據被測設備在 SBExpress?RM5 系統中的物理位置,測試將以兩種模式之一運行。腳本將自動確定系統配置,并根據系統配置和版本運行兩種測試模式之一。
兩種操作模式各有優勢,建議在兩種模式中的每一種模式下測試待測的Gen4/5 M.2 SSD,如下所述。
L1.1和L1.2 子狀態測試腳本
以下腳本在 SANBlaze V10.5 軟件包中可用,可從 SANBlaze 獲得。
所有腳本都是第一個腳本 PM_L1_Substate_Verify.sh 的變體,它使被測設備從 L0.Active 到 L1.Idle,再到 L1.1 和 L1.2。在每個級別,腳本通過檢查 PCIe 總線鏈路狀態和 CLKREQ# 信號的當前狀態來測試被測設備的預期電源狀態轉換。
變化如下:
CLKREQ#模式定義
目前定義了兩種測試模式將腳本運行在SANBlaze SBExpress?RM5 硬件系統上,所有 SBExpress?RM5 系統的所有插槽都能夠運行模式 1。
模式 1 ? SANBlaze“riser”控制 CLKREQ#
模式 2 ? CLKREQ# 信號由上游 PCIe 設備控制
模式 2 測試需要自定義固件,該固件image可現場升級并可由SANBlaze 根據需求提供。
進模式 1 CLKREQ# 測試
在第一種操作模式下,SANBlaze 腳本通過手動控制 CLKREQ# 來控制進入和退出 L1.x 子狀態。這種操作模式將驗證子狀態,并將以下述方式在 SBExpress?RM5 測試系統的所有 16 個插槽中操作。
選擇“測試管器”測試
低功耗子狀態測試腳本需要手動選擇,它們也將包含在Certified by SANBlaze 測試報告中。
首先,從SanBlaze WebGUI左側菜單中選擇 SBExpress 管理器頁面:
然后選擇頁面底部附近的“ShowTestManager”按鈕:
然后選擇右邊的“PM_L1_Substate_Verify.sh”腳本:
此時,可以選擇將測試分配給所有設備,設置“通過時間”或“通過次數”。通過時間將用作每個子狀態轉換之間的停留時間,并且 腳本將在最終測試“通過”之前運行的通過次數。
為簡單起見,我們將傳遞計數保留為 1,并讓腳本設置停留時間。
選擇“添加測試”按鈕。測試將添加到所選設備。
你的系統現在將準備在所選設備上運行低功耗子狀態測試,并且頁面的上部應將測試顯示為“空閑”,如下所示:
選擇“開始”將運行測試,將被測設備置于 L0.Active 狀態,然后進入上述每個 L1.x 子狀態。
監控 NVMe 邊帶信號
為了演示模式 1 測試,我們正在使用 SerialTek Kodiak Gen5 PCIe/NMVe 協議分析儀監控鏈路統計數據和邊帶信號 PERST0#、CLKREQ#、PRSNT# 和 DUALPORTEN#。
正如trace所見,當被測設備De-assert CLKREQ# 并關閉 PCIe “Phys”時,你將看到系統移至“Training”。這是模式 1 測試的預期行為。
當系統Assert CLKREQ# 時,被測設備將重新訓練并在 PCIe 上變為活動狀態。
該腳本將監控 CLKREQ# 和 PCIe 鏈路的狀態,并測試每個轉換的預期行為。
測試結束時,設備將獲得“通過、失敗或警告”狀態。例如,如果設備不支持它聲稱支持的低功耗狀態,則可以使用警告。
圖 4:SerialTek Kodiak PCIe Gen5協議分析儀結果
設置功能 NVMe 支持
在測試過程中,“GetFeatures”和“SetFeatures”命令的執行方式如下。
首先發出“GetFeatures”命令,并從設備讀取支持的電源狀態數 (NPSS - Number of Power States Supported) 值。
使用 SetFeatures 將生成的 NPSS 值發送到設備,以啟用盡可能低的功耗狀態。一旦以這種方式選擇了最低功耗狀態,設備就有望成功進入和退出每個低功耗狀態。
模式 1 測試結果
在模式 1 CLKREQ# 測試中,M.2 SSD固態盤應正確響應 GetFeatures 請求,并接受 SetFeatures 命令以選擇最低功耗狀態。預計該M.2 SSD固態盤將按以下方式運行;否則,M.2 SSD固態盤將無法通過測試。
1. M.2 SSD固態盤以全功率模式 L0.Active 啟動
2. M.2 SSD固態盤響應 GetFeatures 命令
3. M.2 SSD固態盤接受 SetFeatures 命令以選擇最低功率狀態
4. 腳本使用 ASPMControl 指示M.2 SSD固態盤進入 L1.0 狀態
5. 腳本使用L1PMControl 啟用 L1.1 狀態
6. 腳本檢查M.2 SSD固態盤是否置低 CLKREQ#
7. 腳本檢查 PCIe 鏈路是否移動到“輪詢”
8. 腳本Assert CLKREQ# 并驗證M.2 SSD固態盤返回到 L0.Active 狀態 9. 對 L1.2 狀態重復步驟 4 ? 8
10. M.2 SSD固態盤返回到 L0.Active 并且默認值恢復到 SetFeatures
進行模式 2 CLKREQ# 測試
在第二種操作模式下,SANBlaze riser 允許被測設備的 PCIe 上游控制 CLKREQ#。按照上述模式 1 測試的步驟進行測試。
該腳本將確定模式 2 測試是否在指定的插槽上可用,然后并將自動執行模式 2 測試。
模式 2 測試要求
要運行模式 2 測試(主機控制 CLKREQ#),SBExpress?RM5 系統必須配置如下:
如果模式 2 不可用,該腳本將審核系統并運行模式 1。
Mode2 CLKREQ# 測試的執行
在模式 2 CLKREQ# 測試中,M.2 SSD固態盤應正確響應 GetFeatures 請求,并接受 SetFeatures 命令以選擇最低功率狀態。預計該M.2 SSD固態盤將按以下方式運行;否則,M.2 SSD固態盤將無法通過測試。
1. M.2 SSD固態盤以全功率模式 L0.Active 啟動
2. M.2 SSD固態盤響應GetFeatures 命令
3. M.2 SSD固態盤接受 SetFeatures 命令以選擇最低功率狀態
4. 腳本使用 ASPMControl 指示M.2 SSD固態盤進入 L1.0 狀態
5. 腳本啟用 L1。1 state using L1PMControl
6. 腳本檢查M.2 SSD固態盤和主機是否都De-assert CLKREQ#
7. 腳本檢查 PCIe 鏈路是否移動到“L1.Idle”
8. 腳本向M.2 SSD固態盤發出 IO 并驗證主機Assert CLKREQ#
9. 腳本期望 IO 成功
10. 為 L1.2 狀態重復步驟 4 ? 8
11. M.2 SSD固態盤返回到 L0.Active,默認值為恢復到 SetFeatures
SerialTek Kodiak PCIe Gen5協議分析儀抓取的trace將顯示處于 L1.Idle 的M.2 SSD固態盤,并驗證主機是否正在Assert CLKREQ# 以響應 IO 請求,如下所示。
圖 5:Kodiak PCIe 分析儀跟蹤驗證主機正在Assert CLKREQ#
解釋和發布測試結果
子狀態測試的成功完成將顯示在 SBExpress 頁面上,如下所示:
選擇測試的鏈接名稱,在本例中為 PM_L1_Substate_Verify.sh,將顯示測試執行的詳細日志。
完成后,系統將生成一份測試報告,可在此處的 SBExpress 頁面上找到:
選擇名稱,然后“View”將顯示測試報告,然后可以導出或打印該報告,其中包含結果摘要或完整的測試日志。
在 CLKREQ# 測試的幕后
使用 SerialTek PCIe Gen5協議分析儀監控測試過程可以讓你看到sideband邊帶和PCIe數據路徑信號上實際發生的情況,但運行子狀態測試不需要分析儀。
從 CLI 啟動子狀態
除了提供的腳本之外,還可以從 SANBlaze 系統命令行界面 (CLI) 初始化和觀察子狀態轉換。
使用 sb_sdb 檢查鏈路狀態
sb_sdb 是一種通過串行總線與 PCIe 交換機通信的工具。它可用于查詢交換機的鏈路狀態。例如,位于 ?d 0(測試設備左側的第一個插槽)的設備的當前鏈路狀態為 L0.Active:
在本例中,我們將使用 sb_sdb 來監控鏈接狀態,通過電源子狀態對M.2 SSD固態盤進行分分步測試。
使用 SetFeatures 啟用最低功耗狀態
首先使用 Getfeature 和 Setfeature 功能啟用設備可以支持的最低功耗狀態。目標編號為 100 + 插槽編號,因此插槽 0 中的M.2 SSD固態盤為 100。
使用插槽 0 的M.2 SSD固態盤作為示例 = Target 100 = /iport0/target100
接下來,找到支持的電源狀態數并啟用最低電源狀態。下面的命令將返回支持的電源狀態數:
就電源特性而言,最高功率狀態首先出現,因此使用上面命令中的數字將啟用最低功率狀態。使用 NPSS 編號使用上面的 4 為 ?d 數據發送“SetFeatures”命令,如下所示:
現在已經使用 SetFeatures 告訴M.2 SSD固態盤希望它進入的最低功率狀態。它仍將處于 L0.Active 中,如下所示:
關閉系統看門狗(system watchdog)
SBExpress 系統有一個“看門狗”,除非禁用,否則每秒輪詢一次。此看門狗將使M.2 SSD固態盤保持活動狀態,因此為了測試目的,將其關閉。
關閉M.2 SSD固態盤的 SMBus
SBExpress 系統會從 M.2 M.2 SSD固態盤的“轉接卡”適配器上的 SMBus 讀取數據。SMBus 活動將使M.2 SSD固態盤保持活動狀態,因此也將其關閉。
使用 ASPM 啟用低功耗狀態
發送此 ASPM 命令以啟用 L1.0
你將在 L1.Idle 中看到M.2 SSD固態盤(此時為 L1.0)
這樣你可以看到SSD不在 L1.x 中,因為 clkreq_l 仍然顯示asserted:
啟用 L1.1 或 L1.2
現在使用此命令啟用 L1 子狀態(8 = L1.1,4 = L1.2)
在這一點上,M.2 SSD固態盤將移動到 L1.2 子狀態,并將De-assert CLKREQ#,如下面的 SerialTek Kodiak PCIe Gen5 Analyzer 邊帶跟蹤所示:
圖 6:M.2 SSD固態盤置低 CLKREQ#,如 Kodiak 分析儀跟蹤所示
你還可以使用以下命令驗證 CLKREQ# 現在是否已禁用:
如上所示,CLKREQ# 現在無效 (0x01)。
啟動M.2 SSD固態盤的 IO,或Assert CLKREQ# 將使M.2 SSD固態盤重新聯機,例如通過重新啟動看門狗:
圖 7:啟動M.2 SSD固態盤 IO 或Assert CLKREQ# 使M.2 SSD固態盤重新聯機
被測設備的行為會有所不同,具體取決于主機或 SBExpress 系統是否控制 CLKREQ#;相對于上游端口,M.2 SSD固態盤將保持在 L1,或者將根據插槽號 (0 ? 7) 或 (8 ? 15)轉到Polling狀態。
你可以通過清除上述設置手動將M.2 SSD固態盤恢復到全功率狀態:
圖 8:清除設置以手動將M.2 SSD固態盤恢復到全功率狀態
CLI 命令的附加功能
在測試電源狀態時,這些 CLI 程序特別有用:
下面是一些對電源狀態測試有用的示例:
sb_i2c2 命令示例
Assert PERST到插槽 0 上的設備
De-assert PERST
關閉插槽 0 上的設備
啟用電源
讀寫 CLKREQ_L
請記住,可能有多個M.2 SSD盤驅動 CLKREQ_L,并且因為該信號是串接到一起的,或任何Assert它的M.2 SSD固態盤都會保持它Assert,而不管其他設備。SANBlaze 腳本首先使用以下命令在所選 Riser 和 Adapter 上De-assert CLKREQ:
當進入 L1 子狀態時,被測設備將置低 CLKREQ#
在模式 2 ? 主機M.2 SSD固態盤 CLKREQ# 中,當主機向M.2 SSD固態盤發出 I/O 時,主機將自動Assert CLKREQ。
在模式 1 中 ? SANBlaze 轉接卡或適配器驅動 CLKREQ# 以將M.2 SSD固態盤恢復到 L0.Active 狀態。
結論
SANBlaze 提供了一種測試低功耗狀態 L1.1 和 L1.2 的簡單方法,并提供了自動化腳本來驗證支持 L1 子狀態的 NVMe M.2 SSD固態盤上的電源狀態。
SanBlaze提供的兩種方法來驗證被測設備是否達到所需狀態。
q模式 1:SANBlaze riser 通過 SANBlaze 腳本或客戶腳本控制CLKREQ# 轉換。
q模式 2:基于主機的 CLKREQ# 控制將根據對設備的數據訪問自動Assert/De-assert CLKREQ#。
自動化測試可以添加到現有的測試套件中,并包含在被測設備的最終報告中。
可以使用帶有 Gen5 M.2 interposer的 SerialTek PCIe Gen5協議分析儀進行測試,以實時監控 CLKREQ# 信號和鏈路狀態,或者可以從系統 CLI 讀取這些狀態。
審核編輯:湯梓紅
-
SSD
+關注
關注
20文章
2851瀏覽量
117231 -
低功耗
+關注
關注
10文章
2362瀏覽量
103597 -
PCIe
+關注
關注
15文章
1217瀏覽量
82445 -
Amazon
+關注
關注
1文章
120瀏覽量
17170 -
nvme
+關注
關注
0文章
218瀏覽量
22583
原文標題:針對PCIe Gen5 M.2 NVMe SSD的L1.2低功耗測試
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論