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

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

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

利用axi_master接口指令端的幾個靜態(tài)參數(shù)的優(yōu)化技巧

OpenFPGA ? 來源:OpenFPGA ? 作者:Wen Chen ? 2022-07-01 09:39 ? 次閱讀
Vitis HLS 在從Vivaido HLS的升級換代中,以axi_master接口為起點的設計正在變得更易上手,其中很重要的一點就是更多的MAXI端口設計參數(shù)可以讓用戶通過指令傳達到。這些參數(shù)可以分為兩類: 靜態(tài)參數(shù)指標:這些參數(shù)會影響內(nèi)存性能,可以在 C 綜合期間的編譯時從編譯的結果中很清楚地知道,突發(fā)讀寫地長度、數(shù)據(jù)端口寬度加寬、對齊等。
動態(tài)參數(shù)指標:這些參數(shù)本質上是動態(tài)的,取決于系統(tǒng)。例如,與 DDR/HBM 的通信效率在C綜合編譯時是未知的。 本文給大家提供利用axi_master接口指令端的幾個靜態(tài)參數(shù)的優(yōu)化技巧,從擴展總線接口數(shù)量,擴展總線位寬,循環(huán)展開等角度入手。最核心的優(yōu)化思想就是以資源面積換取高帶寬的以便并行計算。
熟記這本文幾個關鍵的設計點,讓你的HLS內(nèi)核接口效率不再成為設計的瓶頸! 7946633e-f8d5-11ec-ba43-dac502259ad0.png ? 以上代碼在進行了c綜合后,我們所有的指針變量都會依據(jù)指令的設置映射到axi-master上,但是因為根據(jù)指令中所有的端口都綁定到了一條總線gmem上。所以在綜合的警告里面會提示:? ?

WARNING: [HLS 200-885] The II Violation in module 'example_Pipeline_VITIS_LOOP_55_1' (loop 'VITIS_LOOP_55_1'):Unable to schedule bus request operation ('gmem_load_1_req', example.cpp:56) on port 'gmem' (example.cpp:56) due to limited memory ports(II = 1). Please consider using a memory core with more ports or partitioning the array.

因為在axi-master總線上最高只能支持一個讀入和一個寫出同時進行,如果綁定到一條總線則無法同時從總線讀入兩個數(shù)據(jù),所以最終的循環(huán)的II=2。解決這個問題的方法就是用面積換速度,我們實例化兩條axi總線gmem和gmem0,最終達到II=1。 79773856-f8d5-11ec-ba43-dac502259ad0.png ? 當總線數(shù)量滿足了我們并行讀入的要求后,讀取數(shù)據(jù)的位寬就成為了我們優(yōu)化的方向:? 因為讀取的數(shù)據(jù)格式是int類型,所以這里的數(shù)據(jù)位寬就是32bit。 ?79883822-f8d5-11ec-ba43-dac502259ad0.png ? 為了能夠轉移數(shù)據(jù)傳輸瓶頸,在Vitis kernel target flow中,數(shù)據(jù)位寬在512bit的時候能夠達到最高的數(shù)據(jù)吞吐效率。在Vitis HLS 中的新增了 max_widen_bitwidth 選項來自動將較短的數(shù)據(jù)位寬拼接到設定的較長的數(shù)據(jù)位寬選項。在這里我們可以將位寬設置到512bit的位寬,但是同時要向編譯器說明,原數(shù)據(jù)位寬和指定的擴展位寬成整數(shù)倍關系。這個操作很簡單,在數(shù)據(jù)讀取的循環(huán)邊界上,用(size/16)*16示意編譯器即可。 ?799551d8-f8d5-11ec-ba43-dac502259ad0.png ? 擴展位寬后的結果可以在綜合報告的接口部分看到數(shù)據(jù)位寬已經(jīng)從32位擴展到512位。? ?79ae9b16-f8d5-11ec-ba43-dac502259ad0.png ? 優(yōu)化到這一步我們的設計可以進行大位寬的同步讀寫,但是發(fā)現(xiàn)循環(huán)的trip count還是執(zhí)行了1024次, 也就是說雖然位寬拓展到512后,還是一個循環(huán)周期計算一次32bit的累加。實際上512bit的數(shù)據(jù)位寬可以允許16個累加計算并行執(zhí)行。? ?79cb865e-f8d5-11ec-ba43-dac502259ad0.png ? 為了完成并行度的優(yōu)化,我們需要在循環(huán)中添加系數(shù)為16的unroll 指令,這樣就可以生成16個并行執(zhí)行累加計算的硬件模塊以及線程。? ?79eb29be-f8d5-11ec-ba43-dac502259ad0.png ? 在循環(huán)中并行執(zhí)行的累加操作,我們可以從schedule viewer中觀察到并行度,可以從bind_op窗口中觀察到operation實現(xiàn)所使用的硬件資源,可以從循環(huán)的trip_count 降低到了1024/16=64個周期,以及大大縮小的模塊的整個latency中得以證明。? ?7a0aef6a-f8d5-11ec-ba43-dac502259ad0.png ?7a2d8d0e-f8d5-11ec-ba43-dac502259ad0.png ? 最后我們比較了一下并行執(zhí)行16個累加計算前后的綜合結果,可以發(fā)現(xiàn)由于有數(shù)據(jù)的按位讀寫拆分拼接等操作,整個模塊的延遲雖然沒有縮短為16分之一,但是縮短為5分之一也是性能的極大提升了。? ?7a5b5f68-f8d5-11ec-ba43-dac502259ad0.png ? 最后的最后,RTL級別的co-sim仿真才讓我們更加確信了數(shù)據(jù)的從兩個并行讀寫,循環(huán)執(zhí)行的周期減小至了64個時鐘周期。? ?7a756c82-f8d5-11ec-ba43-dac502259ad0.png ? 以上內(nèi)容是設計者在AXI總線接口中使用傳統(tǒng)的數(shù)據(jù)類型時,提升數(shù)據(jù)傳輸效率和帶寬的一攬子有效方法: ?第一,擴展總線接口數(shù)量,以便并行讀寫。第二,擴展總線位寬,增加讀寫帶寬。第三,循環(huán)展開,例化更多計算資源以便并行計算。 本文的優(yōu)化方式還是基于內(nèi)核設計本身的,下一篇文章,我們將使用Alveo板卡做一些突發(fā)傳輸?shù)膶嶒?,深度定制傳輸需求,以真?a target="_blank">仿真波形和測得的傳輸速度,從系統(tǒng)級別強化我們對于突發(fā)讀寫效率的認知。 審核編輯 :李倩

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

    關注

    33

    文章

    8689

    瀏覽量

    151677
  • 靜態(tài)
    +關注

    關注

    1

    文章

    29

    瀏覽量

    14569
  • 代碼
    +關注

    關注

    30

    文章

    4821

    瀏覽量

    68893

原文標題:開發(fā)者分享 | HLS, 巧用AXI_master總線接口指令的定制并提升數(shù)據(jù)帶寬-面積換速度

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ZYNQ基礎---AXI DMA使用

    Xilinx官方也提供有一些DMA的IP,通過調用API函數(shù)能夠更加靈活地使用DMA。 1. AXI DMA的基本接口 axi dma IP的基本結構如下,主要分為三個部分,分別是控制axi
    的頭像 發(fā)表于 01-06 11:13 ?414次閱讀
    ZYNQ基礎---<b class='flag-5'>AXI</b> DMA使用

    hdmi是什么電平?hdmi信號里有幾對差分還有幾個的,差分的信號是不是cml電平?

    出來的cml信號在還原成hdmi信號,接到顯示器上?,F(xiàn)在有幾個問題: 1,hdmi是什么電平?第一次接觸,hdmi信號里有幾對差分還有幾個的,差分的信號是不是cml電平? 2,如果差分的是cml電平
    發(fā)表于 12-24 06:34

    spi master接口的fpga實現(xiàn)

    串行外圍接口 大致了解: spi是個同步協(xié)議,數(shù)據(jù)在master和slaver間交換通過時鐘sck,由于它是同步協(xié)議,時鐘速率就可以各種變換。 sck:主機提供,從機不能操控,從器件由主機產(chǎn)生的時鐘控制。數(shù)據(jù)只有在sck來了的上升沿或者下降沿才傳輸。 高級一點的spi芯
    的頭像 發(fā)表于 11-16 10:35 ?531次閱讀
    spi <b class='flag-5'>master</b><b class='flag-5'>接口</b>的fpga實現(xiàn)

    AMBA AXI4接口協(xié)議概述

    AMBA AXI4(高級可擴展接口 4)是 ARM 推出的第四代 AMBA 接口規(guī)范。AMD Vivado Design Suite 2014 和 ISE Design Suite 14 憑借半導體產(chǎn)業(yè)首個符合
    的頭像 發(fā)表于 10-28 10:46 ?287次閱讀
    AMBA <b class='flag-5'>AXI</b>4<b class='flag-5'>接口</b>協(xié)議概述

    Xilinx NVMe AXI4主機控制器,AXI4接口高性能版本介紹

    NVMe AXI4 Host Controller IP可以連接高速存儲PCIe SSD,無需CPU,自動加速處理所有的NVMe協(xié)議命令,具備獨立的數(shù)據(jù)寫入和讀取AXI4接口,不但適用高性能、順序
    的頭像 發(fā)表于 07-18 09:17 ?620次閱讀
    Xilinx NVMe <b class='flag-5'>AXI</b>4主機控制器,<b class='flag-5'>AXI</b>4<b class='flag-5'>接口</b>高性能版本介紹

    有關PL利用AXI總線控制PSDDR進行讀寫(從機wready信號一直不拉高)

    怎么判斷他到底采用了這三種握手里面的哪種握手,這實在令人費解。還是PS的DDR的機制的問題。 5.31 update: 問題找到部分: 情形一:接口的設置上,如果是設置為AXI4,如圖所示, 那么
    發(fā)表于 05-31 12:04

    SoC設計中總線協(xié)議AXI4與AXI3的主要區(qū)別詳解

    AXI4和AXI3是高級擴展接口(Advanced eXtensible Interface)的兩個不同版本,它們都是用于SoC(System on Chip)設計中的總線協(xié)議,用于處理器和其它外設之間的高速數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 05-10 11:29 ?7229次閱讀
    SoC設計中總線協(xié)議<b class='flag-5'>AXI</b>4與<b class='flag-5'>AXI</b>3的主要區(qū)別詳解

    FPGA設計中,對SPI進行參數(shù)化結構設計

    今天給大俠帶來FPGA設計中,對SPI進行參數(shù)化結構設計,話不多說,上貨。 為了避免每次SPI驅動重寫,直接參數(shù)化,盡量一勞永逸。SPI master有啥用呢,你發(fā)現(xiàn)各種外圍芯片的配置一般
    發(fā)表于 05-07 16:09

    FPGA通過AXI總線讀寫DDR3實現(xiàn)方式

    AXI總線由一些核心組成,包括AXI主處理器接口AXI4)、AXI處理器到協(xié)處理器接口
    發(fā)表于 04-18 11:41 ?1321次閱讀

    FPGA設計中,對SPI進行參數(shù)化結構設計

    今天給大俠帶來FPGA設計中,對SPI進行參數(shù)化結構設計,話不多說,上貨。 為了避免每次SPI驅動重寫,直接參數(shù)化,盡量一勞永逸。SPI master有啥用呢,你發(fā)現(xiàn)各種外圍芯片的配置一般
    發(fā)表于 04-11 18:29

    PCIe-AXI-Cont用戶手冊

    Transaction layer的所有功能特性,不僅內(nèi)置DMA控制器,而且具備AXI4用戶接口,提供一個高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時適用于ASIC和FPGA。
    發(fā)表于 02-22 09:15 ?3次下載

    PCIe控制器(FPGA或ASIC),PCIe-AXI-Controller

    Transaction Layer的所有功能特性,不僅內(nèi)置DMA控制器,而且具備AXI4用戶接口,提供一個高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時適用于ASIC和FPGA。
    的頭像 發(fā)表于 02-21 15:15 ?978次閱讀
    PCIe控制器(FPGA或ASIC),PCIe-<b class='flag-5'>AXI</b>-Controller

    電容6大特性參數(shù),你知道幾個

    硬件設計好不好,電容參數(shù)知多少? 原文整理自書籍《硬件設計指南》 電容是我們電子電路設計中最常用的元件之一,除了基本的電容容值之外,電容還有其他6大參數(shù),你知道幾個呢?本文章介紹MLCC陶瓷電容6
    的頭像 發(fā)表于 02-21 15:10 ?1205次閱讀
    電容6大特性<b class='flag-5'>參數(shù)</b>,你知道<b class='flag-5'>幾個</b>?

    AMBA總線之AXI設計的關鍵問題講解

    首先我們看一下針對AXI接口的IP設計,在介紹之前我們先回顧一下AXI所具有的一些feature。
    的頭像 發(fā)表于 02-20 17:12 ?1949次閱讀
    AMBA總線之<b class='flag-5'>AXI</b>設計的關鍵問題講解

    G10指令可以對參數(shù)進行賦值,位型參數(shù)可以嗎?

    G10指令可以對參數(shù)進行賦值,位型參數(shù)可以嗎? G10指令是用于在加工程序中進行參數(shù)賦值的指令。
    的頭像 發(fā)表于 02-18 10:49 ?935次閱讀