0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

新思科技NVMe VIP:高層次視圖

星星科技指導(dǎo)員 ? 來源:synopsys ? 作者:Eric Peterson ? 2023-05-26 17:41 ? 次閱讀

概述

NVM Express 或非易失性內(nèi)存主機(jī)控制器接口(其先前名稱為 NVMHCI,現(xiàn)在縮寫為 NVMe)是一種基于主機(jī)的軟件接口,旨在通過 PCIe 結(jié)構(gòu)與固態(tài)存儲設(shè)備進(jìn)行通信。目前的 Synopsys NVMe 驗(yàn)證 IP (VIP) 是一個(gè)綜合測試工具,由兩個(gè)主要子系統(tǒng)組成——第一個(gè)是 SVC(系統(tǒng)驗(yàn)證組件),第二個(gè)是 SVT(系統(tǒng)驗(yàn)證技術(shù))。SVC 層與實(shí)際的 NVMe(和 PCIe 等)協(xié)議層相關(guān)聯(lián)。SVT 為 UVM 和其他方法(如 VMM 和 OVM)提供了驗(yàn)證方法接口。

盡管VIP支持多個(gè)版本的VIP,但我們最初將與版本無關(guān),更多地談?wù)搮f(xié)議的一般情況,以便提供協(xié)議及其在VIP中的支持的10,000'視圖。未來的討論將更深入地探討 NVMe 的特定細(xì)節(jié)和驗(yàn)證 IP 的功能。

wKgaomRwhauAE4ooAAPP-hTLMr0345.png

您可以在此處了解有關(guān) Synopsys 針對 NVMe 的 VC 驗(yàn)證 IP 的更多信息。

NVMe簡介

與根和端點(diǎn)基本相等的PCIe不同,NVMe的非對稱關(guān)系更接近其他存儲協(xié)議(例如SATA,光纖通道)。

NVMe 命令(例如識別、讀取、寫入)在主機(jī)上啟動并轉(zhuǎn)換為 NVMe 請求,然后將其附加到主機(jī)內(nèi)存中的特定提交隊(duì)列。將命令插入隊(duì)列后,主機(jī)將寫入控制器上的每個(gè)隊(duì)列門鈴寄存器(控制器位于 PCIe 端點(diǎn)上)。此門鈴寫入喚醒控制器,然后控制器探測隊(duì)列中是否有新請求。它讀取隊(duì)列條目,執(zhí)行命令(可能從主機(jī)內(nèi)存讀取數(shù)據(jù)緩沖區(qū)),最后將完成追加到完成隊(duì)列中,然后通過中斷通知主機(jī)。主機(jī)喚醒,從隊(duì)列中彈出該完成操作,并將結(jié)果返回給用戶。

pYYBAGRweByAL3SYAAFyICnv4RE077.png

使用兩種主要類型的隊(duì)列:

管理隊(duì)列 – 這些隊(duì)列用于配置和管理控制器的各個(gè)方面。每個(gè)控制器只有一對管理隊(duì)列。

I/O 隊(duì)列 – 這些隊(duì)列用于移動 NVMe 協(xié)議特定的命令(例如讀取、寫入)。每個(gè)控制器最多可以有 64K 個(gè) I/O 隊(duì)列。

隊(duì)列的每個(gè)隊(duì)列都有尾(生產(chǎn)者)和頭(使用者)指針。尾部指針指向要向其添加條目的下一個(gè)可用條目。在生產(chǎn)者將條目添加到隊(duì)列后,他會遞增尾指針(考慮到一旦它到達(dá)隊(duì)列的末尾,它將回繞到零 - 它們都是循環(huán)隊(duì)列。如果頭指針和尾指針相等,則隊(duì)列被視為空。

使用者使用她的頭指針來確定從隊(duì)列中開始讀取的位置;在檢查尾指針并確定隊(duì)列為非空后;她將在閱讀每個(gè)條目后遞增頭部指針。

提交隊(duì)列的尾指針由主機(jī)管理;將一個(gè)或多個(gè)條目推入隊(duì)列后,尾指針(遞增)通過提交隊(duì)列門鈴寄存器寫入控制器??刂破骶S護(hù)頭部指針,并在收到尾部指針更新的通知后開始讀取隊(duì)列。它可以繼續(xù)讀取隊(duì)列,直到為空。當(dāng)它使用條目時(shí),頭部指針會更新,并通過完成隊(duì)列條目發(fā)送回主機(jī)(見下文)。

同樣,完成隊(duì)列的尾部由控制器管理,但與主機(jī)不同,控制器僅維護(hù)尾部指針的私有副本。存在新完成隊(duì)列條目的唯一指示是可以輪詢的完成隊(duì)列條目中的位。一旦主機(jī)確定某個(gè)條目可用,它將讀取該條目并更新頭指針??刂破魍ㄟ^主機(jī)寫入完成隊(duì)列門鈴寄存器來通知頭指針更新。

請注意,NVMe 控制器完成的所有工作都由控制器本身拉入或推出該控制器。主持人只是將工作放入主機(jī)內(nèi)存并按門鈴(“您有一個(gè)提交條目要處理”)。稍后,它從完成隊(duì)列中收集結(jié)果,再次按門鈴(“我已完成這些完成條目”)。因此,控制器可以自由地與主機(jī)并行工作;例如,不需要對完成進(jìn)行排序 - 控制器可以對它的工作進(jìn)行排序,無論如何它感覺就像。

那么,我們在主機(jī)和控制器之間來回移動的這些隊(duì)列條目是什么?

第一個(gè)是提交隊(duì)列條目,這是一種 64 字節(jié)的數(shù)據(jù)結(jié)構(gòu),主機(jī)使用它將命令請求傳輸?shù)娇刂破鳎?/p>

字節(jié) 描述
63:40 命令字 15-10 (CDW15-10):6 個(gè)命令特定信息的字。
39:32 PRP 條目 2 (PRP2): 指向 PRP 條目或緩沖區(qū)或(與 PRP1 一起)SGL 段的指針。
31:24 PRP 條目 1 (PRP1): 指向 PRP 條目、緩沖區(qū)或(與 PRP2 結(jié)合使用)SGL 段的指針。
23:16 元數(shù)據(jù)指針 (MPTR): 此字段包含 SGL 段或包含元數(shù)據(jù)的連續(xù)緩沖區(qū)的地址。
15:08 保留
07:04 命名空間標(biāo)識符 (NSID): 此字段指定此命令適用的命名空間 ID。
03:00 命令字 0 (CDW0): 此字段對所有命令都是通用的,包含命令操作碼 (OPC)、命令標(biāo)識符 (CID) 和各種控制位。

每個(gè)命令一個(gè)提交隊(duì)列條目排隊(duì)到相應(yīng)的管理員或 I/O 隊(duì)列。操作碼指定要執(zhí)行的特定命令,命令標(biāo)識符是命令的唯一標(biāo)識符(與提交隊(duì)列 ID 結(jié)合使用時(shí))。

除了使用隊(duì)列條目來回移動信息外,主機(jī)還可以在主機(jī)內(nèi)存中分配數(shù)據(jù)緩沖區(qū)。這些緩沖區(qū)可以是連續(xù)的(由其基址和長度定義),也可以是分布在內(nèi)存周圍的一組數(shù)據(jù)緩沖區(qū)。后者使用稱為PRP列表和分散-聚集列表(SGL)的數(shù)據(jù)結(jié)構(gòu)來定義其位置。當(dāng)主機(jī)需要將這些緩沖區(qū)移入/移出控制器時(shí)(例如,用于讀取或?qū)懭朊睿鼘⒃谥鳈C(jī)內(nèi)存中分配適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),并在將隊(duì)列條目寫入該控制器之前,將這些緩沖區(qū)的這些數(shù)據(jù)結(jié)構(gòu)的信息寫入上述 PRP1 和 PRP2 字段。

元數(shù)據(jù)(例如端到端數(shù)據(jù)保護(hù))也可以通過兩種方式與 NVMe 命令一起傳遞。它可以與數(shù)據(jù)一起在帶內(nèi)發(fā)送(即它與每個(gè)扇區(qū)的數(shù)據(jù)相鄰),也可以帶外發(fā)送(即它作為單獨(dú)的數(shù)據(jù)流發(fā)送)。在SCSI術(shù)語中,它們分別稱為數(shù)據(jù)完整性字段(DIF)和數(shù)據(jù)完整性擴(kuò)展(DIX)。后者使用上述元數(shù)據(jù)指針。我們將在以后的劇集中詳細(xì)討論這一點(diǎn)。

當(dāng)我們實(shí)際向控制器上的非易失性存儲寫入/讀取時(shí),我們會寫入命名空間。 在其他存儲技術(shù)中,還有其他類似的容器 - 例如SCSI中的LUN。命名空間對于控制器是唯一的,也可以在多個(gè)控制器之間共享。無論如何,請求中的命名空間 ID 字段確定要訪問的命名空間。某些命令不使用命名空間字段(然后設(shè)置為 0),其他命令可能需要處理所有命名空間(然后將命名空間 ID 設(shè)置為 0xffff_ffff)。

在完成端,有一個(gè)類似的數(shù)據(jù)結(jié)構(gòu),即完成隊(duì)列條目:

字節(jié) 描述
15:12 命令特定信息:返回信息的一個(gè)字。(并不總是使用。
11:8 保留
7:6 提交隊(duì)列 ID: 發(fā)送關(guān)聯(lián)命令的提交隊(duì)列。(16 位)


需要注意的幾點(diǎn):

提交隊(duì)列 ID 需要顯式顯示在完成隊(duì)列條目中,因?yàn)槎鄠€(gè)提交隊(duì)列可以共享一個(gè)完成隊(duì)列。

如上所述,提交隊(duì)列頭指針由控制器維護(hù)。當(dāng)控制器更新該頭指針時(shí),它需要將這些更新發(fā)送回主機(jī),允許主機(jī)重用這些隊(duì)列條目,直到并包括新頭)。

狀態(tài)字段實(shí)際上由幾個(gè)子字段組成,并且有大量的錯(cuò)誤狀態(tài)代碼。

相位標(biāo)記提供了一個(gè)可以輪詢的位(如果主機(jī)驅(qū)動程序軟件愿意,而不是純粹的中斷驅(qū)動)。如果在檢查隊(duì)列的尾條目時(shí)階段標(biāo)記發(fā)生更改,則可以推斷有新條目要檢查。

為了介紹可用的命令,我們將在此處列出其中的一些命令:

創(chuàng)建管理隊(duì)列 – 實(shí)際上本身不是一個(gè)命令,這是對 NVMe 控制器的寄存器寫入,用于定義管理員提交和完成隊(duì)列。NVMe 寄存器集具有少量用于基本配置、控制和狀態(tài)的寄存器。

創(chuàng)建 I/O 隊(duì)列 – 用于創(chuàng)建提交和完成隊(duì)列的命令。

識別 – 幾個(gè)命令允許請求有關(guān)控制器和附加到控制器的命名空間的各種信息。

設(shè)置/獲取功能 – 設(shè)置 NVMe 特定“功能”(例如可配置設(shè)施)的方法。

讀/寫 – 這就是我們真正在這里的原因:從/向附加到控制器的命名空間讀取和寫入數(shù)據(jù)。

由于一個(gè)活躍的團(tuán)隊(duì)正在推動開發(fā),NVMe 一直在添加更多的命令和功能。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    113

    文章

    16580

    瀏覽量

    180462
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8777

    瀏覽量

    152418
  • nvme
    +關(guān)注

    關(guān)注

    0

    文章

    224

    瀏覽量

    22850
收藏 人收藏

    評論

    相關(guān)推薦

    Vivado 高層次綜合

    感謝你對Vivado HLS也就是XILINX’s 高層次綜合解決方案有興趣,這個(gè)解決方案綜合c,c++和系統(tǒng)c代碼成Verilog和VHDL RTL結(jié)構(gòu)。
    發(fā)表于 04-25 08:59 ?2928次閱讀

    UltraFast 高層次生產(chǎn)力設(shè)計(jì)方法指南

    目錄第1章:高層次生產(chǎn)力設(shè)計(jì)方法指南第2章:系統(tǒng)設(shè)計(jì)第3章:shell開發(fā)第4章:基于C語言的IP開發(fā)第5章:系統(tǒng)集成
    發(fā)表于 12-13 09:50

    高層次綜合工作的基本流程

      下圖揭示了高層次綜合工作的基本流程,以及它于傳統(tǒng)的RTL綜合流程的對比。接下來將對行為描述,行為綜合,分析與優(yōu)化三個(gè)主要子流程詳細(xì)描述。    1、行為描述  當(dāng)我們把HLS技術(shù)的起點(diǎn)立為一種
    發(fā)表于 01-06 17:52

    高層次綜合技術(shù)的原理

    高層次綜合技術(shù)原理淺析
    發(fā)表于 02-01 06:04

    利用Mentor高層次綜合技術(shù)快速實(shí)現(xiàn)復(fù)雜DSP算法

    利用Mentor高層次綜合技術(shù)快速實(shí)現(xiàn)復(fù)雜DSP算法摘要:為了滿足產(chǎn)品上市時(shí)間和功能豐富性的要求,越來越多的先進(jìn)設(shè)計(jì)公司開始提高設(shè)計(jì)的抽象層次進(jìn)行復(fù)雜的D
    發(fā)表于 04-29 14:01 ?34次下載

    SOC設(shè)計(jì)中高層次功耗估算和優(yōu)化技術(shù)

    高層次對系統(tǒng)進(jìn)行功耗佑算和功耗優(yōu)化是soc設(shè)計(jì)的關(guān)健技術(shù)本文首先給出soc設(shè)計(jì)的特點(diǎn)和流程,然后綜述目前高層次功耗估算和功耗優(yōu)化的常用方法和技術(shù),重點(diǎn)論述寄存器傳輸級和
    發(fā)表于 12-27 16:42 ?46次下載
    SOC設(shè)計(jì)中<b class='flag-5'>高層次</b>功耗估算和優(yōu)化技術(shù)

    使用Vivado高層次綜合 (HLS)進(jìn)行FPGA設(shè)計(jì)的簡介

    Introduction to FPGA Design with Vivado High-Level Synthesis,使用 Vivado 高層次綜合 (HLS) 進(jìn)行 FPGA 設(shè)計(jì)的簡介
    發(fā)表于 01-06 11:32 ?65次下載

    蔣凡被中止認(rèn)定杭州高層次人才

    12月23日,據(jù)杭州市人力資源和社會保障局消息,阿里巴巴蔣凡被認(rèn)定為蔣凡被認(rèn)定為高層次人才,消息曝光后引發(fā)網(wǎng)友熱議。
    的頭像 發(fā)表于 12-30 11:12 ?2196次閱讀

    揭示高層次綜合技術(shù)工作的基本概念

    說起高層次綜合技術(shù)(High-level synthesis)的概念,現(xiàn)在有很多初學(xué)者簡單地把它理解為可以自動把c/c++之類地高級語言直接轉(zhuǎn)換成底層硬件描述語言(RTL)的技術(shù)。其實(shí)更準(zhǔn)確的表述
    的頭像 發(fā)表于 01-14 09:27 ?2217次閱讀

    高層次綜合技術(shù)(High-level synthesis)的概念

    說起高層次綜合技術(shù)(High-level synthesis)的概念,現(xiàn)在有很多初學(xué)者簡單地把它理解為可以自動把c/c++之類地高級語言直接轉(zhuǎn)換成底層硬件描述語言(RTL)的技術(shù)。其實(shí)更準(zhǔn)確的表述是:由更高抽象度的行為描述生產(chǎn)電路的技術(shù)。
    的頭像 發(fā)表于 02-08 17:26 ?8468次閱讀
    <b class='flag-5'>高層次</b>綜合技術(shù)(High-level synthesis)的概念

    高層次綜合技術(shù)原理淺析

    說起高層次綜合技術(shù)(High-level synthesis)的概念,現(xiàn)在有很多初學(xué)者簡單地把它理解為可以自動把c/c++之類地高級語言直接轉(zhuǎn)換成底層硬件描述語言(RTL)的技術(shù)。其實(shí)更準(zhǔn)確的表述是:由更高抽象度的行為描述生產(chǎn)電路的技術(shù)。
    發(fā)表于 01-28 09:11 ?3次下載
    <b class='flag-5'>高層次</b>綜合技術(shù)原理淺析

    【開源硬件】從PyTorch到RTL - 基于MLIR的高層次綜合技術(shù)

    01 演講題目 ? 開源硬件系列02期: 從PyTorch到RTL - 基于MLIR的高層次綜合技術(shù) 02 演講時(shí)間 ? 2022年11月27日 上午?10:00 03 內(nèi)容簡介 ? 為了解
    的頭像 發(fā)表于 11-24 08:15 ?2062次閱讀

    英特爾? NUC 8 支持更高層次的設(shè)計(jì)

    英特爾? NUC 8 支持更高層次的設(shè)計(jì)
    的頭像 發(fā)表于 12-29 10:02 ?1197次閱讀
    英特爾? NUC 8 支持更<b class='flag-5'>高層次</b>的設(shè)計(jì)

    UltraFast高層次生產(chǎn)力設(shè)計(jì)方法指南

    電子發(fā)燒友網(wǎng)站提供《UltraFast高層次生產(chǎn)力設(shè)計(jì)方法指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 10:41 ?0次下載
    UltraFast<b class='flag-5'>高層次</b>生產(chǎn)力設(shè)計(jì)方法指南

    使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡介

    電子發(fā)燒友網(wǎng)站提供《使用Vivado高層次綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡介.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 09:33 ?0次下載
    使用Vivado<b class='flag-5'>高層次</b>綜合(HLS)進(jìn)行FPGA設(shè)計(jì)的簡介