NVMe高速傳輸之擺脫XDMA設計6之系統架構設計

結合目前應用需求,以及前面基礎分析,確定IP應具有如下特色:
(1) 通用性
前端數據采集系統基于 FPGA 開發。 一方面, 設備類型多, 使用的 FPGA型號各不相同, 需要實現的設計能夠在多種類型 FPGA 上的工作; 另一方面, 為了降部署低成本, 需要實現脫離 CPU 的存儲控制。 綜合考慮以上兩方面因素,設計應采用純邏輯電路的方式實現。
(2) 高性能
前端采集的數據存在連續數據、 零散數據等多種數據量形式。 面臨大量零散數據存儲請求時, 需要增加 NVMe I/O 隊列的數量和深度來保證數據傳輸性能; 而面臨大量連續數據存儲請求時, 單隊列足以發揮性能。 在這種情況下, 需要盡可能降低功耗,減少運行中的 I/O 隊列數量。 因此, 需要實現動態的隊列管理功能, 在滿足高性能的同時適應不同的應用環境。 具體要求為使用 PCIe3.0 以上接口的高性能固態硬盤的順序讀寫數據吞吐量不低于2GB/s, 隨機寫IOPS不低于500000, 隨機寫延遲不高于1ms。
(3) 易集成、 易操作
實現的 NVMe 主機控制邏輯和 NVMe 固態硬盤作為存儲子系統, 應能夠方便的集成到應用環境中, 并提供簡易的操作方式實現數據的傳輸與存儲。 因此, 設計需要采用標準化接口, 實現盡可能低的資源占用率, 并具備 DMA 數據傳輸功能。
基于以上需求, 本IP擬基于 FPGA 的 NVMe over PCIe(NoP) 邏輯進行設計,它具有以下特點:
(1) 支持 NVMe 1.3d 協議、 支持 PCIe 3.0 協議。
(2) 基于 Xilinx PCIe Integration Block 硬核開發。 一方面, 該 PCIE 集成塊具有多種版本, 并且適用平臺多, 因此 NoP 邏輯加速引擎能夠部署在支持 PCIE 集成塊的FPGA 開發板上。 另一方面, 直接對接 PCIE 集成塊的結構設計具有更高的數據傳輸性能。
(3) 純邏輯電路開發。 設計基于純邏輯電路, 不需要 CPU 的介入, 獨立運行,可以節省 CPU 資源, 兼容 SoC 與純邏輯環境。
(4) 使用 AXI 總線接口。 設計使用標準化的 AXI 總線接口提供系統控制和數據傳輸功能, 在保證了傳輸性能的同時, 更容易集成到應用環境中。
(5) 多隊列并行管理與動態配置。 支持的最大 I/O 提交隊列數量為 16, 支持的最大單 I/O 提交隊列深度為 1024, 最大 I/O 提交隊列總深度為 1024, 支持運行過程中動態的創建或刪除隊列。
(6) DMA 功能。 通過配置 DMA 寄存器直接請求數據傳輸, 數據傳輸通過 AXI4總線接口對接用戶邏輯, 使用突發傳輸提高數據傳輸性能。
在這里插入圖片描述
圖1 Nvme邏 輯加速IP系統架構圖

新系統中,Nvme邏輯加速IP通過 PCIe 3.0x4 接口連接 NVMe
固態硬盤, 并提供 AXI4-Lite 接口用于系統控制, 以及 AXI4 接口用于數據傳輸。 在該IP內部, 根據功能劃分為系統控制模塊、 初始化模塊、 NVMe 控制模塊、 PCIe 加速模塊、 PCIE 集成塊。 以下為各功能模塊的定義:
系統控制模塊是實現NVMe over PCIe關鍵組件。 NoP 邏輯加速引擎內部集成了各種功能, 包括初始化、 NVMe 隊列管理以及 DMA 等多種功能, 統由系統控制模塊進行管理。 為了有效管理這些功能, 系統控制模塊設計了對應的功能控制單元, 并提供了 AXI4-Lite 從機接口, 使得 NoP 邏輯加速引擎能夠輕松地與用戶環境集成。 通過 AXI4-Lite 接口, 用戶可以方便地訪問各個功能控制單元, 實現對系統功能的控制。 這種設計使得用戶能夠直接與 NoP 邏輯加速引擎進行交互, 靈活地配置和管理系統的各項功能, 從而更好地滿足特定的應用需求。
初始化模塊負責控制系統的初始化流程, 其中包括 PCIe 初始化和 NVMe 初始化兩個主要步驟。 在系統上電復位后, 首先由 PCIE 集成塊執行物理層的鏈路訓練和速度協商, 建立有效的 PCIe 通信鏈路。 隨后, 由初始化模塊進行 PCIe 設備的枚舉與配置, 并執行 NVMe 的初始化流程。 初始化過程是確保系統能夠在正確狀態下運行的前提條件, 也為后續操作提供了必要的支持。
NVMe 控制模塊是實現 NVMe 的命令提交和完成機制的核心模塊。 首先, 該模塊負責將來自系統控制模塊的功能請求轉換為 NVMe 命令請求, 并執行 NVMe 指令提交與完成機制。 其次, 該模塊實現 NVMe 隊列管理功能, 除了基本的隊列存儲、門鈴控制、 請求仲裁、 條目解析等, 還包括了動態創建和刪除隊列功能。 最后, 該模塊還負責實現 PRP 尋址機制, 根據指令管理和計算 PRP 偏移, 實現數據的尋址并降低 PRP 讀取延遲。
PCIe 加速模塊負責處理 PCIe TLP, 將 PCIe 事務與 NVMe 緊密結合。 一方面,該模塊將來自初始化模塊或 NVMe 控制模塊的事務請求轉換為 PCIe TLP 請求, 然后發送到 PCIE 集成塊, 同時接收 PCIE 集成塊的 TLP 響應包, 將其轉換為內部事務響應發送到對應內部模塊。 另一方面, 該模塊負責處理來自 NVMe 存儲設備的 TLP 請求, 根據請求內容將請求轉發到 NVMe 控制模塊或轉換為 AXI4 總線事務, 同時將來自 NVMe 控制模塊和 AXI4 總的響應組裝為 CplD, 經由 PCIE 集成塊發送給 NVMe存儲設備。
PCIE 集成塊實現 PCIe 的數據鏈路層和物理層。 PCIE 集成塊是 Xilinx 提供的用于 PCIe 的高帶寬、 可擴展和靈活的通用 I/O 核, 在 NoP 邏輯加速引擎中使用 PCIE集成塊的 RC 模式實現 Root Complex 的數據鏈路層與物理層。 PCIE 集成塊提供了四組 AXI stream 接口用于傳遞 PCIe TLP, 通過這些接口實現 TLP 與 PCIe 鏈路信號的相互轉換, 此外還包含一組配置接口用于訪問 PCIE 集成塊的配置空間。

想進一步了解相關視頻,請搜索B站用戶:專注與守望
鏈接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac homebrew 安裝教程

下載github安裝包 https://github.com/Homebrew/brew/releases/tag/4.5.8 下載安裝后 打開 安全里面允許安裝,就可以直接使用了

stm32hal模塊驅動(1)hpdl1414驅動

之前一直想用hpdl1414畫一塊手表,前面pcb測試板畫完沒空調試,最近剛好空出來時間,遂發下驅動。 這里簡單贅述hpdl1414的驅動原理:D0-D6負責數據輸入(ascii表后7位),A0,A1負責更改hpdl1414模塊顯…

從代碼學習深度強化學習 - TRPO PyTorch版

文章目錄 前言核心工具函數廣義優勢估計 (Generalized Advantage Estimation, GAE)案例一:TRPO 解決離散動作問題 (CartPole-v1)1. 環境初始化2. 網絡結構定義3. TRPO 智能體實現4. 訓練與可視化5. 訓練主程序與結果案例二:TRPO 解決連續動作問題 (Pendulum-v1)1. 環境與工具…

MySQL 升級到8.4版本的詳細指南

本指南詳細介紹了將 MySQL 升級到 8.4 版本的完整流程、注意事項和操作方法。 一、升級前準備 (3.1 Before You Begin) 在開始升級之前,必須仔細審閱本節信息并執行所有推薦的操作: 理解升級過程:了解升級期間可能發生的情況。請參閱第 3.4…

leetcode427.建立四叉樹

區間x0到x1和區間y0到y1都是左閉右開的 解題基本思路是先判斷當前矩陣是不是全0或全1,如果是就直接返回新建的一個節點值(矩陣的統一值,葉子節點),如果不是那就新建一個節點值,非葉并且左上右上左下右下四個方向上遞歸創建節點 /…

醫學+AI教育實踐!南醫大探索數據挖掘人才培養,清華指導發布AI教育白皮書

教育數字化浪潮正以前所未有的力度重塑高等教育格局。今年4月,為貫徹落實《教育強國建設規劃綱要(2024—2035 年)》,教育部等九部門印發《關于加快推進教育數字化的意見》,表明將持續推動“人工智能教育”全方位發展&a…

PDF處理控件Spire.PDF系列教程:如何使用C# 拆分 PDF 文件(完整指南)

PDF文件因其高度的跨平臺兼容性和安全穩定的格式特點,廣泛應用于企業文檔管理和電子資料傳輸中。隨著PDF文檔頁數和內容復雜度的增加,拆分PDF成為優化文檔處理流程、提升辦公效率的重要需求。通過編程方式實現PDF拆分,不僅能自動化處理海量文…

文心4.5開源模型部署實踐

文心4.5開源模型部署實踐 使用fastdeploy本地部署 執行命令: python -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-21B-A3B-Paddle \--port 8180 \--metrics-port 8181 \--engine-worker-queue-port 8182 \--max-model-len 32768 \--m…

Python迭代器、生成器、閉包和裝飾器(三器一包)

return、continue、break區別: return只能用在函數里面,表示從函數中返回,函數體內的后續任何代碼都不執行continue只是跳出當前循環,進入下一循環break只是跳出全部循環,如果循環后面還有代碼,會進行執行…

【Java】Maven

一.Maven簡介 Maven的產生主要是為了解決Java項目中的兩個問題: 1.依賴管理: 傳統 Java 項目在引入第三方庫時,需要手動下載 JAR 包并維護復雜的依賴關系。Maven 提供了統一的依賴管理機制,通過簡單的配置即可自動從倉庫下載并引…

人臉活體識別3:C/C++實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測)

人臉活體識別3:C/C實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測) 目錄 人臉活體識別3:C/C實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測) 1. 前言 2.人臉活體識別方法 (1)基于人臉動作的檢測?? (2)?…

【ABAP】 從無到有 新建一個Webdynpro程序

、新建WDA 可從SE80在web dynpro 組件下 創建 并按例以下操作 2、插入窗口 3、相關功能 3-1、展示消息 DATA:lo_api_controller TYPE REF TO if_wd_controller,lo_message_handler TYPE REF TO if_wd_message_manager.lo_api_controller ? wd_this->wd_get_api( ).lo_mess…

ALV常用設置(更新中一)

之前設置了checkbox,但是觸發不了單擊事件,且alv自帶的復選,鼠標移動單擊別處就會自動取消。 **增加多選框到fieldcat,**這一點很重要,然后設置 IF gs_fcat-fieldname sel.gs_fcat-checkbox X. gs_fcat-edit X. …

NumPy 或 PyTorch/TensorFlow 中的張量理解

(2, 2, 3) 形狀的 3D 數組(或張量)的結構。 個人理解: 2個2維數組(張量),2維數組(張量)里面有2個1維向量(張量),1維向量(張量&#x…

Linux環境下使用 C++ 與 OpenCV 實現 ONNX 分類模型推理

實驗環境:Ubuntu 20.0 推理模型:ONNX分類模型 1. 安裝依賴項 首先是需要安裝依賴庫,如g,cmake等,如果已經安裝的話可以忽略 sudo apt install -y g sudo apt install -y cmake sudo apt install -y make sudo apt i…

AJAX 安裝使用教程

一、AJAX 簡介 AJAX(Asynchronous JavaScript and XML)是一種在無需重新加載整個網頁的情況下,能夠與服務器交換數據并更新部分網頁內容的技術。它不是一種新語言,而是使用現有的標準組合:JavaScript XMLHttpRequest…

【牛客算法】牛客網編程題解:小紅拼圖

一、題目介紹 1.1. 題目鏈接 :小紅拼圖 https://www.nowcoder.com/questionTerminal/08b54686f0d14bd784d9d148c68a268a 1.2 題目介紹 小紅正在玩一個拼圖游戲,她有一些完全相同的拼圖組件: 小紅準備用這些組件來拼成一些圖案。這些組件可…

買賣股票的最佳時機--js 算法

一、買賣股票的最佳時機 給定一個數組 prices ,它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。你只能選擇 某一天 買入這只股票,并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所能獲取的最大利潤。返回你可以從這筆交易中獲取的最大利潤。…

C#基礎(WndProc)

WndProc 是操作系統與你的程序“對話”的通道??。當用戶點擊鼠標、按下鍵盤,或系統事件(如窗口移動)發生時,Windows 會將這些事件打包成“消息”,發送給你的窗口,而 WndProc 就是接收和處理這些消息的函數…

記錄一個 Linux中腳本無法執行的問題

問題描述: 在本地的window系統傳的云服務器上一個.sh結尾的安裝Java環境的腳本 上傳到云服務器后,使用命令賦予執行權限 chmod x 文件名然后看一下這個腳本變綠了就可以了 然后開始嘗試執行 ./腳本名 然后就報錯了 然后開始排查問題 1.檢查并修復 She…