HBM Basic(VCU128)

目錄

1. 簡介

1.1 硬件平臺

1.2 圖片

2. 硬件信息

2.1 Vivado Basic

2.1.1 GPIO

2.1.2 Clock Sources

2.1.3 Reset

2.1.4 Flash

2.1.5 燒寫報錯

2.2 PCIe simple

2.2.1 Block Design

2.2.2 XDMA

2.3 PCIe HBM

2.3.1 Block Design

2.3.2 HBM IP

3. HBM 知識

3.1 交叉開關

3.2?Throughput

3.3 Global Addressing

3.4 時鐘

3.5?Packaging and Pinouts

4. 總結


1. 簡介

1.1 硬件平臺

Virtex UltraScale+ VU37P HBM FPGA:XCVU37P-2FSVH2892E

AMD Virtex? UltraScale+? HBM VCU128 FPGA Evaluation KitThe VCU128 board incorporates the all new AMD Virtex? UltraScale+? VU37P HBM FPGA that integrates 8GB of HBM DRAM adjacent to FPGA die to enable massive memory bandwidth and much smaller PCB footprint. Virtex UltraScale+ HBM FPGAs alleviate bandwidth bottlenecks and power consumption associated with using parallel memories, like DDR4, in compute, database, and network acceleration applications.The VCU128 evaluation kit is optimized for quickly prototyping applications using Virtex UltraScale+ HBM FPGAs.https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/vcu128.html

XCVU37P HBM Feature:

  • 集成 8GB HBM,460GB/s 帶寬
  • HBM 子系統的最大理論帶寬為 460 GB/S,可實現帶寬為 420 GB/s(~90% 效率)

靈活的連接性,適用于廣泛的應用:

  • 四個 28.12Gb/s QSFP28 接口
  • PCIe?Gen3 x16 和 Gen4 x8
  • VITA 57.4 FMC+ 接口
  • 10/100/1000Mb/s 以太網

1.2 圖片

2. 硬件信息

2.1 Vivado Basic

2.1.1 GPIO

2.1.2 Clock Sources

2.1.3 Reset

SW4 - CPU_RESET - PIN: BM29,?LVCMOS12, Active High

2.1.4 Flash

2.1.5 燒寫報錯

?[Labtools 27-3347] Flash Programming Unsuccessful: Byte 65536 does not match (0B != 00)

設置的速率過高導致的:

set_property PARAM.FREQUENCY 15000000 [get_hw_targets */xilinx_tcf/*/*]

如果設置為 30000000 則會出錯。

2.2 PCIe simple

2.2.1 Block Design

XDC

set_property PACKAGE_PIN BG28    [get_ports user_lnk_up_0]
set_property IOSTANDARD LVCMOS18 [get_ports user_lnk_up_0]set_property PACKAGE_PIN BH24    [get_ports {led_0_tri_o[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {led_0_tri_o[0]}]set_property PACKAGE_PIN BG24    [get_ports led_1]
set_property IOSTANDARD LVCMOS18 [get_ports led_1]set_property BITSTREAM.GENERAL.COMPRESS TRUE  [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 51.0 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4  [current_design]
set_property CONFIG_MODE SPIx4                [current_design]

2.2.2 XDMA

1)Board

2)Basic

3)PCIe Bars

4)MISC

5)PCIe DMA

2.3 PCIe HBM

2.3.1 Block Design

XDC:

set_property PACKAGE_PIN BG28    [get_ports user_lnk_up_0]
set_property IOSTANDARD LVCMOS18 [get_ports user_lnk_up_0]set_property PACKAGE_PIN BG24    [get_ports led_1]
set_property IOSTANDARD LVCMOS18 [get_ports led_1]set_property PACKAGE_PIN BH24    [get_ports {led_0_tri_o[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {led_0_tri_o[0]}]set_property BITSTREAM.GENERAL.COMPRESS TRUE  [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 51.0 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4  [current_design]
set_property CONFIG_MODE SPIx4                [current_design]set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
connect_debug_port dbg_hub/clk [get_nets */clk_wiz_0_clk_out1]

2.3.2 HBM IP

1)HBM Configuration Selection Tab

  • Enable Switch / Global Addressing Stack

是否啟用全局尋址功能。選擇此選項允許全局尋址的靈活性,但會增加延遲。

  • Enable External APB Interface

啟用外部 APB 接口以寫入/讀取文檔中記錄的控制器狀態和性能寄存器。

2)Example Design Options Tab

生成示例設計時所使用的時鐘配置。

在示例設計的頂層文件中,每個 Stack 實例化一個 MMCM 來生成 AXI 時鐘。

  • AXI Clock Frequency(MHz) for Stackx 指定 MMCM 輸出時鐘頻率。
  • AXI Input?Clock Frequency(MHz) for Stackx 指定 MMCM 的輸入時鐘頻率。?

3)Address Map Options

  • Address Map Options

如果遇到性能瓶頸,可以通過 ILA 監控內存訪問模式,進一步優化地址映射。

DDR 內存的地址由 Bank、Row、Column 組成。Address Map Options 允許用戶調整這些地址位的排列順序,以優化內存訪問的并行性和減少 Bank 沖突。如果多個請求訪問同一Bank的不同Row,會導致額外的預充電和激活延遲(tRP + tRCD)。合理的地址映射可以分散訪問,減少此類沖突。

Row-Bank-Column (RBC):適用于大多數標準應用,提供均衡的性能。

Bank-Row-Column (BRC):適用于高帶寬需求,可以減少 Bank 沖突,但可能增加 Row 切換的開銷。

  • Bank Group Interleave

啟用此功能可使順序地址操作在偶數與奇數存儲體組之間交替執行,從而最大化內存效率。但需注意,隨機訪問模式可能無法從此設置中獲益。

4)Reorder, Refresh, and Power Savings Options

Reorder Options:通過智能調整命令順序(如重排、預充電、頁管理)最大化吞吐量。

  • 命令重排序:在64深度的窗口內重新排列命令(如讀寫順序),減少存儲體(Bank)沖突和行(Row)切換延遲。
  • 動態頁管理:控制存儲頁(Page)的關閉/保持開放,平衡延遲與吞吐量。
  • 預充電與激活優化:提前規劃預充電(Pre-Charge)和激活(Activate)命令,減少空閑周期。
  • 刷新插入策略:結合待處理操作智能插入刷新命令,降低性能影響。

Refresh Options:優化刷新策略(如單 Bank 刷新、溫度適應)以兼顧數據可靠性和性能。

  • 單存儲體刷新(Single Bank Refresh):逐個Bank刷新(而非全Bank同時刷新),減少訪問阻塞。
  • 溫度補償刷新:高溫時自動提高刷新頻率(高溫下 DRAM 數據易丟失)。
  • 讀寫優先:允許延遲刷新以優先處理讀寫請求,但需后續補償更多刷新。

5)Reliability Options

  • 1)Enable ECC Bypass(啟用ECC旁路)
    • 功能:禁用ECC計算和校正功能。
    • 行為:
      • wdata_parity輸入引腳改為直接寫入ECC存儲器的數據。
      • rdata_parity輸出改為從ECC存儲器讀取的原始數據。
    • 副作用:
      • 自動禁用寫數據掩碼(Write Data Mask)功能。
      • 非對齊事務會觸發讀-修改-寫操作。
  • 2)Enable ECC Correction(啟用ECC校正)
    • 功能:啟用單比特錯誤校正和雙比特錯誤檢測。
    • 行為:
      • 檢測到錯誤時會記錄在狀態寄存器中。
      • 是其他高級ECC功能(如擦洗)的基礎。
  • 3)Enable ECC Scrubbing(啟用ECC擦洗)
    • 前提:必須啟用ECC Correction。
    • 功能:持續后臺掃描內存,主動修復單比特錯誤。
    • 優勢:防止錯誤累積導致不可修復的雙比特錯誤。
  • 4)ECC Scrub Bits(擦洗地址位寬)
    • 定義:用于擦洗操作的內存地址位數。
    • 默認值(0):自動使用當前內存配置支持的最大位寬。
  • 5)ECC Scrub Period(擦洗周期)
    • 單位:256個內存時鐘周期。
    • 示例:值為2表示每512個周期(2×256)執行一次擦洗讀取。
  • 6)Initialize Memory Using ECC(ECC初始化內存)
    • 前提:必須啟用ECC Correction。
    • 功能:在初始化時用有效ECC值填充整個內存陣列。
    • 用途:確保未寫入區域也有合法ECC數據。
  • 7)Write Data Mask(寫數據掩碼)
    • 兼容性:與ECC Correction/Bypass互斥。
    • 功能:允許部分寫入(掩碼指定哪些字節被寫入)。

3. HBM 知識

3.1 交叉開關

分段交叉開關可能會成為瓶頸,影響應用程序的實際 HBM 性能。

如上圖所示:

最快的連接是從 AXI 通道到對齊的偽通道(PC)內存地址,M0→S0(0-256 MB),M1→S1(256-512 MB),等等。這將限制設計只能訪問 32 個獨立的 256 MB 段 PC。為了性能權衡,分段交叉開關允許任何 AXI 主設備訪問 8 GB HBM 范圍內的任何地址。這與 DDR 配置不同,如果 AXI 主設備端口連接到 DDR0,那么只能訪問 DDR0 內的地址。對于 HBM,如果地址不在對齊的偽通道(PC)內,那么它將通過上述的本地 4x4 連接性或通過 L/R 連接上的另一個 4x4 開關來穿越分段交叉開關到達正確的 PC。當你指示工具將一個主 AXI 接口連接到多個 PC 時,有一個內部機制使用特定內核主設備的內存規范。

性能會受到兩個因素的影響:

  • 開關中的每個連接具有相同的帶寬。
  • 從 4x4 開關到另一個 4x4 開關的穿越會增加延遲。

3.2?Throughput

1)從內存控制器的角度

  • 每個 HBM stack 包含八個 MC,每個 MC 包含兩個 PC(Pseudo Channels)。
  • PC 位寬為 64 bit,且數據信號以 IP 配置中 HBM 時鐘頻率的雙倍速率切換(DDR)。
  • 若配置的時鐘頻率為 900 MHz,則 HBM stack 的切換速率可通過以下公式計算:

( 64 bit / PC ) × ( 2 ch / MC ) × ( 8 MC ) × 900 MHz × 2 = 1,843,200 Mb/s = 230,400 MB/s

對于雙堆棧器件,該值翻倍至?460,800 MB/s。

2)從用戶邏輯角度

  • HBM 的每個 AXI 端口寬度為 256 位,每個 PC 對應一個 AXI 端口。
  • 當 HBM 運行于 900 MHz,用戶邏輯 AXI 時鐘為 450 MHz 以實現速率匹配。
  • 計算公式如下:

( 256 bit / AXI ) × ( 2 ch / MC ) × ( 8 MC ) × 450 MHz =?1,843,200 Mb/s = 230,400 MB/s

對于配置 32 個 AXI 端口的雙堆棧器件,該值翻倍至?460,800 MB/s。

3)效率損耗

上述為 HBM 理論 Throughput,但與所有傳統 DDR 器件類似,HBM stack 中的存儲陣列需通過刷新維持數據完整性:

  • HBM 的基礎刷新間隔(tREFI)為 3.9 us。
  • 4H 器件的刷新命令周期(tRFC)為 260 ns,8H 器件則為 350 ns。
  • 考慮刷新開銷后,4H 器件的峰值效率將損失約 7%,8H 器件約損失 9%。

與傳統 DDR 存儲器相同,tREFI 會隨溫度升高而縮短:

  • 當堆棧溫度上升時,刷新操作會占用更多 HBM 接口時間(效率降低)。
  • 0°C 至 85°C 時,tREFI 為 3.9 us。
  • 85°C 至 95°C 時,tREFI 將縮減至 1.95 us。

PS:4H Device (4 GB per Stack),8H Device (8 GB per Stack)

3.3 Global Addressing

訪問方式上,有 2 種方式,global 模式和非 global 模式,在非 global 模式下,每個用戶通過偽隨機通道只能訪問對應的 256MB 空間;global 模式下,每個偽隨機通道可以訪問整個 HBM 空間。

性能上,每個 AXI 用戶接口(偽隨機通道)的數據位寬為 256bit,最高工作頻率為 450M,所以每個用戶接口的最大性能為:256bit*450M = 14400MB/s。在 global 模式下,通過一個偽隨機通道,訪問其他的控制器對應的存儲空間,性能會降低,具體見 PG276 上的說明。

根據xilinx提供的文檔 pg276,HBM 單個 stack 的理論最大性能為:(256 bits per AXI port) x (2 ports per memory controller) x (8 channels) x 450 MHz = 230400MB/s,整體性能為 460800MB/s。

3.4 時鐘

必須提供給HBM核心的三種時鐘類型包括:

  • HBM_REF_CLK_x:驅動鎖相環(PLL),生成八個內存控制器的時鐘以及HBM堆棧的內存時鐘。每個 HBM 堆棧對應一個 PLL。此時鐘必須源自 MMCM/BUFG 或 BUFG,也可由其他時鐘的級聯時鐘源派生,但其原始時鐘必須來自與 HBM 同一 SLR 內的 GCIO 引腳。驅動 GCIO 的時鐘發生器抖動需小于3皮秒均方根值(3 pS RMS)。
  • APB_x_PCLK:用于 APB 寄存器端口訪問,可與其他時鐘異步。每個 HBM 堆棧有一個 APB 時鐘端口,可源自級聯時鐘源、MMCM 或 GCIO 引腳。
  • AXI_xx_ACLK:每個 AXI 端口的時鐘,可與其他時鐘異步,時鐘源可以是級聯時鐘源、MMCM 或 GCIO 引腳。

全局路由交換機無獨立時鐘輸入,而是共享某個 AXI_xx_ACLK 時鐘。軟件會自動選擇用戶所選內存控制器中位于中間的一個時鐘(通過查看 hbm_0.v 文件中的 CLK_SEL_xx 參數可確認,僅一個參數標記為 TRUE)。

為實現最佳性能,所選的 AXI 時鐘應為所有 AXI 端口時鐘中頻率最高的一個。

3.5?Packaging and Pinouts

《UG575,UltraScale and UltraScale+ FPGAs Packaging and Pinouts》

4. 總結

以上是使用 HBM 的基本操作,后續補充:

  • HBM 帶寬監控
  • DDR 性能優化

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

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

相關文章

Mybatis的應用及部分特性

初識MybatisMybatis的概念MyBatis 是一個Java 持久層框架,核心作用是簡化數據庫操作,把 SQL 和 Java 代碼解耦。ORM框架MyBatis是一個ORM 框架所謂ORM 框架,就是把數據庫里的表、字段、關系,映射成編程語言里的類、屬性、對象引用…

使用Jeecg低代碼平臺實現計劃管控系統建設方案--2平臺學習

1.前后端列表練習 前端頁面下的views下的system下的基本都是系統管理的東西。 在system下新建一個目錄edu。 index基本就是列表頁面。 modal就是新增編輯彈窗。 api就是接口。 data就是列配置。 一些組件的使用可以參考官方文檔,help.jeecg.com。 在創建一個…

調試|谷歌瀏覽器調試長連接|調試SSE和websocket

長連接需求不常有,控制臺調試的細節容易忘,在這截圖備忘。本文會記錄SSE、websocket連接、普通接口 在谷歌瀏覽器控制臺的對比 文章目錄SSE(Server-Sent Events)觀察對象:百度翻譯觀察請求頭和響應頭觀察EventStream觀…

VS2019 Qt5.14.2 OpenCV4.4.0 全流程安裝及開發環境搭建與配置(工業相機環境配置)

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言Visual Studio 2019 安裝步驟項目配置驗證Qt 5.14.2 安裝步驟項目配置驗證Visual Studio Qt 拓展(確定項目后)OpenCV 4.4.0 安裝步驟項目…

正確配置jdk環境但IntelliJ IDEA無法啟動

現象:今天突然發現開發工具雙擊沒有正常啟動,之前是用著的。問題排查:是否是因為jdk環境變量導致的,之前安裝過安卓的開發環境也修改過環境變量。步驟一:cmd輸入java -version 或javac,如圖沒有反應步驟二&…

ubuntu-server安裝

1.下載系統鏡像: 阿里云鏡像站下載服務器鏡像 https://mirrors.aliyun.com/ubuntu-releases/24.04/ubuntu-24.04.2-live-server-amd64.iso 1.創建新的虛擬機 按住鍵盤ctrl n 打開虛擬機創建界面 用光標選擇對應語言沒有中文哈 然后回車確認 設置計算機名、用戶名…

Docker Compose管理新范式:可視化控制臺結合cpolar提升容器編排效率?

文章目錄前言1. 安裝Docker2. 檢查本地docker環境3. 安裝cpolar內網穿透4. 使用固定二級子域名地址遠程訪問前言 在容器化應用部署領域,Docker Compose UI為開發者提供了一種更直觀的解決方案。這款工具以Web界面形式封裝了Docker Compose的核心功能,在…

BSW總結

1.FBL:【有道云筆記】BSW_FBL https://share.note.youdao.com/s/NaeZWTuR 2.NM: 【有道云筆記】BSW_NM https://share.note.youdao.com/s/MKxlIpUS

spring循環依賴解決

問題描述 spring循環依賴是對于ioc容器。類A、B、C,類A依賴了B,類A依賴了C,類B依賴了A,類C依賴了A。假如現在類A需要放到ioc,屬性賦值的時候會去找B這個bean,但是B不存在,于是去創建B這個bean&a…

最新安卓原生對接蘋果cms App后端+app(最新優化版)

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 一定要按照教程教的來搭建! App演示圖片 二、效果展示 1.部分代碼 代碼如下(示例): public static function apkinfo(){return self::…

嵌入式硬件中運放的基本控制原理

上次課的最后是給大家總結一些基礎電子知識的,我們接著往下講。我們知道了運放的虛短虛斷的概念理論上來說 可以進行計算了是吧。 這個圖實際上是一個正輸入信號的同相放大電路,我們看下如何計算,第一先看虛斷。運放的輸入腳內部對地是阻抗十分大是吧,那么這個正輸入腳上的…

聚集索引與非聚集索引的區別

聚集索引(Clustered Index)和非聚集索引(Non-Clustered Index)是索引設計的核心概念,二者的本質區別體現在 與數據物理存儲的關聯方式 上,這種區別直接決定了它們的性能特性和適用場景。我們平時說的 聚簇索…

《零基礎入門AI:傳統機器學習進階(從擬合概念到K-Means算法)》

一、欠擬合與過擬合欠擬合(Underfitting) 欠擬合是指模型在訓練數據上表現不佳,同時在新的未見過的數據上也表現不佳。這通常發生在模型過于簡單,無法捕捉數據中的復雜模式時。欠擬合模型的表現特征如下: 訓練誤差較高。測試誤差同樣較高。模…

Datawhale AI夏令營 第三期 task2 稍微改進

在打造基于大語言模型(LLM)文檔檢索的問答系統中,財經研報類文檔是最具挑戰的場景之一。它包含圖文混排、精細定位需求(頁碼、文件名)、問題措辭高度多樣化等一系列復雜性。 下面的內容是大模型輔助整理的:…

LeetCood算法題~水果成籃

水果成籃 你正在探訪一家農場,農場從左到右種植了一排果樹。這些樹用一個整數數組 fruits 表示,其中 fruits[i] 是第 i 棵樹上的水果 種類 。你想要盡可能多地收集水果。然而,農場的主人設定了一些嚴格的規矩,你必須按照要求采摘水…

【Lua】題目小練8

-- 題目 1&#xff1a;定義一個類 Person-- 屬性&#xff1a;name、age&#xff0c;其中 age 默認是 0&#xff0c;不能小于 0。-- 方法&#xff1a;introduce()&#xff0c;輸出 "My name is <name>, I am <age> years old."-- 要求使用封裝思想&#x…

SAP PP CK466

原因 作業價格沒有維護 解決方案 KP26

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘keras’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘keras’問題 摘要 在使用 PyCharm 進行深度學習項目開發時&#xff0c;常常需要通過 pip install keras 來安裝 Keras 庫。但有時即便命令執行成功&#xff0c…

人工智能領域、圖歐科技、IMYAI智能助手2024年全年歷史更新大事件匯總

2024年 2024年12月29日 【通知】 1、主站導出文檔功能優化升級&#xff0c;新增支持了純文本WORD導出功能&#xff0c;支持使用WPS軟件打開 注&#xff1a;原來的富文本WORD不支持使用WPS打開&#xff0c;只支持系統自帶的WORD軟件打開&#xff0c;比如Microsoft Office Word 2…

UWB實操:使用UCI CMD測距;UCI CMD是一串數字,創建測距session,配置測距session,開始測距session。

使用UCI CMD測距; UCI CMD是一串數字,創建測距session,配置測距session,開始測距session。根據 FiRa_UCI_Technical_Specification,我們可以分析并組織測距cmd 例如: Fira2.0 1v1 發起 DSTWR 創建測距session:210000052222222200 配置測距session: 2103001F222…