一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

星星科技指導員 ? 來源:synopsys ? 作者:Eric Peterson ? 2023-05-26 17:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

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

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

wKgaomRwhauAE4ooAAPP-hTLMr0345.png

您可以在此處了解有關 Synopsys 針對 NVMe 的 VC 驗證 IP 的更多信息。

NVMe簡介

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

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

pYYBAGRweByAL3SYAAFyICnv4RE077.png

使用兩種主要類型的隊列:

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

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

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

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

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

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

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

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

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

字節(jié) 描述
63:40 命令字 15-10 (CDW15-10):6 個命令特定信息的字。
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 命名空間標識符 (NSID): 此字段指定此命令適用的命名空間 ID。
03:00 命令字 0 (CDW0): 此字段對所有命令都是通用的,包含命令操作碼 (OPC)、命令標識符 (CID) 和各種控制位。

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

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

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

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

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

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


需要注意的幾點:

提交隊列 ID 需要顯式顯示在完成隊列條目中,因為多個提交隊列可以共享一個完成隊列。

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

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

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

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

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

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

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

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

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

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

審核編輯:郭婷

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

    關注

    114

    文章

    17116

    瀏覽量

    184443
  • 接口
    +關注

    關注

    33

    文章

    9005

    瀏覽量

    153785
  • nvme
    +關注

    關注

    0

    文章

    252

    瀏覽量

    23252
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Vivado 高層次綜合

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

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

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

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

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

    高層次綜合技術的原理

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

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

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

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

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

    使用Vivado高層次綜合 (HLS)進行FPGA設計的簡介

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

    蔣凡被中止認定杭州高層次人才

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

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

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

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

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

    高層次綜合技術原理淺析

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

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

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

    英特爾? NUC 8 支持更高層次的設計

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

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

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

    使用Vivado高層次綜合(HLS)進行FPGA設計的簡介

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