




摘要:為充分發揮異構多核DSP芯片的實時計算能力,設計并實現了一種高性能多通道的通用DMA,該DMA最大支持64個通道的數據搬運,并支持一維、二維、轉置以及級聯描述符等多種傳輸模式。芯片實測傳輸性能最高可達11.7 GB/s,實現了高效率、高性能的數據供給。
關鍵詞:多通道;DMA;設計;測試
中圖分類號:TN47" 文獻標志碼:A" 文章編號:1671-0797(2023)07-0046-03
DOI:10.19514/j.cnki.cn32-1628/tm.2023.07.011
0" " 引言
DSP芯片因其強大的實時計算能力,在軍事、通信、工控等領域嵌入式系統中應用廣泛[1]。應用需求的不斷提高以及信息技術的不斷進步,推動了高性能DSP芯片向異構多核、高并行、高集成的方向發展,在DSP芯片具有高算力的同時,其對高效率、高性能的數據供給同樣提出了更高的要求。DMA(Direct Memory Access)技術能夠提供內存和內存、內存和外設之間的直接數據傳輸通道,不僅能夠提高數據傳輸速率,還能使得DSP核從復雜的數據傳輸任務中脫離出來,從而有效提升芯片性能,已成為行業的研究熱點[2-5]。
本文面向異構多核DSP芯片的需求,設計實現了一種高性能多通道通用DMA(Multi-channel General-
purpose DMA,MG-DMA),支持一維、二維、轉置以及級聯描述符等多種傳輸模式,最大64通道,大幅提升了數據傳輸速率,有效匹配了DSP芯片的計算能力。
1" " 設計與實現
1.1" " 總體設計
MG-DMA的結構框圖如圖1所示,包括配置和狀態寄存器模塊(CSR)、通道選擇模塊(CHS)、矩陣轉置參數模塊(MTP)、讀寫總線控制模塊(WRBC)、4個DMA執行模塊(DMAE0~DMAE3)以及DMA緩存模塊(DMAB)。
各模塊功能如下:
(1)配置和狀態寄存器模塊(CSR):CSR模塊有64個邏輯通道的配置寄存器組以及一個總的中端和狀態控制寄存器,其中,配置寄存器組主要包括通道傳輸數據量、數據源地址、數據目的地址、外部描述符地址等信息,64個邏輯通道可根據用戶需求映射到任意4個物理通道,映射關系由對應物理通道編號寄存器的值決定。當配置好寄存器組后,CSR模塊將對應產生通道請求信號送給通道選擇模塊,啟動一次DMA傳輸,當DMA傳輸完成或發生傳輸錯誤時,觸發相應中斷。
(2)通道選擇模塊(CHS):CHS模塊根據接收到的通道請求信號產生通道選擇信號,并計算本次傳輸的配置參數,將參數和傳輸啟動信號傳輸給對應的DMAE模塊,同時將通道選擇信號送給WRBC模塊,啟動一次傳輸。
(3)DMA執行模塊(DMAE):DMAE內部讀寫各自獨立,當一次傳輸啟動后,DMAE模塊先啟動一次burst讀,將讀出的數據緩存在DMAB中,一次burst最大支持128個256 bits的數據,讀完后再將緩存中的數據寫出到相應地址。當所有數據寫完或者發生錯誤時,產生相應的中斷信號。4個物理通道各對應一個DMAE模塊,4個通道可以同時進行數據傳輸,但同時只有一個模塊可以進行矩陣轉置操作,4個物理通道輪流進行矩陣轉置。
(4)DMA緩存模塊(DMAB):DMAB模塊存儲空間共32 kByte,每個通道使用4 kByte的RAM,其余16 kByte作為矩陣轉置使用。讀數據時,DMAE模塊將讀到的數據進行256 bits拼接對齊后存入DMAB模塊;寫數據時,由于RAM不是寄存器輸出,DMAB模塊會將RAM的輸出數據進行寄存器鎖存后送給DMAE模塊,DMAE模塊按照地址進行對齊移位后再寫出。
矩陣轉置時,為實現對存放在內存中的矩陣進行從源矩陣到目標矩陣的行列轉置功能,DMA每次轉置一個32×32的小矩陣,自動累加矩陣的源地址和目的地址,最終實現一個大矩陣的轉置。DMAB中使用了4個4 kByte的RAM,每兩個作為一組,組成兩個8 kByte的乒乓RAM,每組支持32行×32列×8 kByte的矩陣,實現了乒乓操作。
(5)矩陣轉置參數模塊(MTP):MTP模塊主要用于矩陣轉置時的參數計算,每個小矩陣的大小為32行×32列,不足的按實際大小讀寫。當小矩陣讀或寫完畢后,計算下一個小矩陣的地址和對應在RAM中的地址。
(6)讀寫總線控制模塊(WRBC):WRBC主要包括讀通道編號和寫通道編號兩個動態的寄存器,讀通道編號表示當前使用AXI讀操作的通道編號,寫通道編號表示當前使用AXI寫操作的通道編號,在當前物理通道傳輸完成后,會判斷下一個通道是否需要操作,如果需要,則將AXI總線使用權交給下一個通道。
1.2" " 工作流程
MG-DMA典型工作流程如下:
(1)通過APB接口配置通道寄存器;當有通道請求時,CSR模塊將請求送給CHS模塊。
(2)判斷是否是矩陣轉置請求,如果是,判斷矩陣工作編號是否等于通道編號,如果不是,通道允許傳輸;如果矩陣工作編號等于通道編號,通道允許矩陣傳輸,將傳輸啟動信號和傳輸參數送給DMAE模塊。如果不相等,等待其他通道矩陣傳輸完成。
(3)DMAE模塊收到傳輸啟動信號后,根據收到的傳輸參數開始讀取數據;DMAE模塊每次發送一個burst讀操作,讀取不超過16個256 bits的數據,可以連續發送多個讀命令。
(4)當DMAE模塊發送的讀命令達到上限時,通知WRBC模塊,WRBC模塊判斷下一個通道是否要讀取數據,如果是,更新到下一個通道編號的值,如果不是,按照4個通道順序輪詢。
(5)當DMAE模塊在緩存數據大于16個256 bits時,開始burst寫操作;如果當次讀的數據被寫完,通知WRBC模塊;WRBC模塊判斷下一個通道是否要寫數據,如果是,更新到下一個通道編號的值,如果不是,按照4個通道順序輪詢。
(6)當收到通道傳輸停止或總線響應錯誤時,DMAE模塊在發完本次burst讀命令后停止讀取新數據,在寫完所有的數據后,提起總線錯誤或傳輸錯誤中斷。
(7)如果不需要讀取描述符,當所有數據寫完時通道傳輸完成;如果需要讀取描述符,讀取下一個描述符后進行下一次DMA操作。
1.3" " 物理實現
本文所述MG-DMA模塊應用于3080型DSP芯片,該芯片包括4個處理核和4個專用加速核,支持PCIe、SRIO等高速接口以及2路DDR4大帶寬存儲,其片內DMA的性能對DSP芯片計算能力的發揮有著重要作用。物理實現后,MG-DMA模塊的總規模約41萬Inst,工作主頻達到800 MHz。芯片流片后的實物圖如圖2所示。
2" " 測試
3080型DSP芯片測試板如圖3所示。設置芯片DDR速率為2 400 MT/s,分別選擇傳輸數據長度為1 MB~1 GB,測量MG-DMA的性能如圖4所示,可以看到,DMA性能隨點數的變化不大,在同一DDR內部從一段地址搬運數據到另一段地址的性能平均在5.76 GB/s,從一個DDR搬運到另一個DDR的性能平均在11 GB/s。
改變DDR的速率從1 600 MT/s到3 200 MT/s,設定數據長度為1 MB,測量MG-DMA的性能如圖5所示,可以看到,隨著DDR速率增加,MG-DMA的性能呈線性增加,DDR速率為3 200 MT/s時,DDR內DMA傳輸性能為6.7 GB/s,DDR間的DMA傳輸性能高達11.7 GB/s。
3" " 結語
本文面向異構多核DSP芯片對數據傳輸性能的需求,設計并實現了一種高性能多通道的通用DMA,實現了64個邏輯通道、4個物理通道的數據搬運,能夠支持一維、二維、轉置以及級聯描述符等多種傳輸模式。芯片實測結果顯示,單個DDR內DMA傳輸性能為6.7 GB/s,DDR間的DMA傳輸性能高達11.7 GB/s,大幅提升了數據傳輸速率,有效匹配了DSP芯片的計算能力。
[參考文獻]
[1] 曾思.YHFT-Matrix處理器中EMIF與DDR2接口的設計與實現[D].長沙:國防科技大學,2012.
[2] 鄭挺,李勇.高性能DSP軟核中DMA控制器的設計與驗證[J].計算機工程與設計,2014,35(1):112-118.
[3] 邢輝.面向音頻應用的多通道DMA控制器設計[D].上海:上海交通大學,2010.
[4] 張慶國,王健培,馬小勤.基于ADSP-TS201S的二維DMA數據傳輸[J].現代電子技術,2012,35(2):17-20.
[5] 呂廣秋,李偉,陳韜,等.一種面向密碼SoC的高性能全雙工DMA設計[J].計算機工程,2020,46(5):167-173.
收稿日期:2022-12-08
作者簡介:李世平(1987—),男,安徽安慶人,高級工程師,研究方向:數字集成電路設計。
通信作者:張洪昱(1994—),男,江蘇南京人,工程師,研究方向:數字集成電路設計。