隨著 SoC 芯片性能的提高,各模塊間的數(shù)據(jù)交換成為提高微處理器系統(tǒng)運(yùn)行速度的瓶頸。DMA 控制器能夠有效替代微處理器的加載/存儲(chǔ)指令,顯著提高系統(tǒng)的并行能力。傳統(tǒng)的 DMA 的結(jié)構(gòu)專用性強(qiáng)而可擴(kuò)展性不足[1~3]。在高速并行系統(tǒng)中,單時(shí)鐘域的設(shè)計(jì)已不能有效控制功耗的增長(zhǎng)。面對(duì) SoC 不斷擴(kuò)大的規(guī)模,還必須設(shè)計(jì)一種動(dòng)態(tài)配置 DMA 通道的結(jié)構(gòu)以提高邏輯資源的利用率。本文介紹了在 0.18um 工藝下,面向完整的 AMBA 總線結(jié)構(gòu)的高性能 32 位 DMA 控制器的 ASIC 實(shí)現(xiàn),提出了使用雙時(shí)鐘域配合具有同步復(fù)位的門控時(shí)鐘(Gated Clock)實(shí)現(xiàn)功耗控制的方法。握手信號(hào)路由陣列的設(shè)計(jì)使得有限數(shù)量的通道可以匹配更多的總線外設(shè)。
VLSI是超大規(guī)模集成電路(Very Large Scale Integration)的簡(jiǎn)稱,指幾毫米見(jiàn)方的硅片上集成上萬(wàn)至百萬(wàn)晶體管、線寬在1微米以下的集成電路。由于晶體管與連線一次完成,故制作幾個(gè)至上百萬(wàn)晶體管的工時(shí)和費(fèi)用是等同的。大量生產(chǎn)時(shí),硬件費(fèi)用幾乎可不計(jì),而取決于設(shè)計(jì)費(fèi)用。
超大規(guī)模集成電路是70年代后期研制成功的,主要用于制造存儲(chǔ)器和微處理機(jī)。64k位隨機(jī)存取存儲(chǔ)器是第一代超大規(guī)模集成電路,大約包含15萬(wàn)個(gè)元件,線寬為3微米。目前超大規(guī)模集成電路的集成度已達(dá)到600萬(wàn)個(gè)晶體管,線寬達(dá)到0.3微米。用超大規(guī)模集成電路制造的電子設(shè)備,體積小、重量輕、功耗低、可靠性高。利用超大規(guī)模集成電路技術(shù)可以將一個(gè)電子分系統(tǒng)乃至整個(gè)電子系統(tǒng)“集成”在一塊芯片上,完成信息采集、處理、存儲(chǔ)等多種功能。例如,可以將整個(gè)386微處理機(jī)電路集成在一塊芯片上,集成度達(dá)250萬(wàn)個(gè)晶體管。超大規(guī)模集成電路研制成功,是微電子技術(shù)的一次飛躍,大大推動(dòng)了電子技術(shù)的進(jìn)步,從而帶動(dòng)了軍事技術(shù)和民用技術(shù)的發(fā)展。超大規(guī)模集成電路已成為衡量一個(gè)國(guó)家科學(xué)技術(shù)和工業(yè)發(fā)展水平的重要標(biāo)志。也是世界主要工業(yè)國(guó)家,特別是美國(guó)和日本競(jìng)爭(zhēng)最激烈的一個(gè)領(lǐng)域。超大規(guī)模集成電路將繼續(xù)得到發(fā)展。
DMA 結(jié)構(gòu)的比較
AMBA是 ARM 公司提出的用于微處理器片上通信的先進(jìn)的總線結(jié)構(gòu)。一種典型的 AMBA 總線由 AHB 和 APB 總線分段構(gòu)成??偩€上的設(shè)備可以分為能夠主動(dòng)讀寫的主設(shè)備(Master)與只能接收來(lái)自 Master 請(qǐng)求的從設(shè)備(Slave)。
近來(lái)針對(duì) DMA 控制器的研究引出了新的 SoC 架構(gòu),如使用分布式 Flyby DMA 結(jié)構(gòu)[1];為數(shù)據(jù)吞吐量大的模塊預(yù)設(shè)專用通道[2,3]等。這些結(jié)構(gòu)的共同點(diǎn)在于數(shù)據(jù)在搬移過(guò)程中不需要經(jīng)過(guò)緩存就可以達(dá)到指定地址。然而缺乏緩存結(jié)構(gòu)的 DMA 有一定的局限性。從應(yīng)用的角度來(lái)講,在音視頻編解碼程序中普遍存在同端口內(nèi)存數(shù)據(jù)塊搬移的操作,而非緩存結(jié)構(gòu)的 DMA 無(wú)法在同端口上實(shí)現(xiàn)單周期的先讀后寫操作。此外,在 APB 總線上只能存在一個(gè) Master 設(shè)備,所以既無(wú)法為每個(gè)外設(shè)配置獨(dú)立 Master 以獲取數(shù)據(jù),也不可能在低速總線上完成單周期傳輸。從功耗的角度看,當(dāng)系統(tǒng)中存在較多 Master 模塊時(shí),總線仲裁器的負(fù)擔(dān)就被加重,而仲裁器正是AMBA 總線功耗的主要來(lái)源。使用緩存結(jié)構(gòu)的系統(tǒng)級(jí) DMA 盡管存在數(shù)據(jù)傳輸?shù)难訒r(shí),但能適用于 AMBA 不同速度的分段總線,可擴(kuò)展性遠(yuǎn)高于非緩存結(jié)構(gòu) DMA。
如圖 1 所示,本文提出的 DMA 控制器在整個(gè)系統(tǒng)中可分為 3 個(gè)部分。DMA Master 端解析來(lái)自當(dāng)前通道的命令包并發(fā)出 AHB 總線請(qǐng)求,完成緩存區(qū)與 AHB 總線的數(shù)據(jù)交換。 DMA 的引擎(DMA Engine)包含各個(gè)通道的邏輯資源與雙口緩存結(jié)構(gòu)(Dual Port FIFO)及相應(yīng)的控制邏輯。DMA 控制器的 APB Master 發(fā)出 APB 的總線請(qǐng)求,這些信號(hào)與來(lái)自 AHB 的轉(zhuǎn)換信號(hào)一起在兩段總線的橋接(Bridge)部分進(jìn)行仲裁選擇,實(shí)現(xiàn) APB 總線與 DMA 緩存區(qū)的數(shù)據(jù)交換。
DMA 控制器的 VLSI 實(shí)現(xiàn)
DMA 的時(shí)鐘域
在不具備 DMA 的 AMBA 總線中,APB 唯一的 Master
在 AHB 總線的驅(qū)動(dòng)下進(jìn)行數(shù)據(jù)傳輸。兩段總線以串行的方式工作。從表 1 中可知,由于在 AMBA 結(jié)構(gòu)中微處理器不提供對(duì) APB 的 Burst 操作,完成對(duì) APB 的 4 個(gè) Word 的傳輸,至少需要 20 個(gè) AHB 的時(shí)鐘周期。而當(dāng)存在 DMA 控制器時(shí), APB 總線能緩存需要和 AHB 交換的數(shù)據(jù),并且可以獨(dú)立地驅(qū)動(dòng)數(shù)據(jù)傳輸。不僅使傳輸周期減少了 50%,而且實(shí)現(xiàn)了 APB與AHB 的并行運(yùn)行。
由于并行的實(shí)現(xiàn),APB 總線上某些時(shí)間段中數(shù)據(jù)傳輸更加頻繁。DMA 的 APB 信號(hào)進(jìn)入總線以前必須經(jīng)過(guò)仲裁,當(dāng)使用類似于高速總線上的 Burst 模式時(shí),APB 可以多個(gè)連續(xù)兩周期的傳輸來(lái)運(yùn)行,這增加了互連線的翻轉(zhuǎn)頻率。尤其在 DMA 多個(gè)通道相互交替占有 APB 時(shí),這種翻轉(zhuǎn)間隔便被縮小。因此,依據(jù)功耗 P = CV 2 f ,AHB 總線的二分頻時(shí)鐘被用來(lái)驅(qū)動(dòng) APB 總線。在這種配置下,相對(duì)于使用指令集進(jìn)行的傳輸依然持有速度上的優(yōu)勢(shì)。
DMA 的內(nèi)部結(jié)構(gòu)
DMA 控制器的核心部分圍繞通道狀態(tài)機(jī)和雙口緩存數(shù)據(jù)的 FIFO 結(jié)構(gòu)來(lái)設(shè)計(jì)。如圖 2 所示,功能模塊包括非整字地址對(duì)齊邏輯(Read/Write Aligner)、64×32bit 雙口 FIFO、FIFO 控制邏輯、DMA 引擎、DMA 握手信號(hào)路由器(HandshakeRouter)和功耗管理電路。其中 DMA 引擎又包括 DMA 通道狀態(tài)機(jī)邏輯和通道仲裁器(Chan Arb)。
雙時(shí)鐘域設(shè)計(jì)的難點(diǎn)在于時(shí)鐘域的劃分以及不同時(shí)鐘的相位要求。從圖 2 中可以看到,DMA 的數(shù)據(jù)通路部分由 2 個(gè)總線接口及 2 塊 64×32bit 的雙口 SRAM 組成,其中 DMA Master 接口與數(shù)據(jù)對(duì)齊邏輯由 CLK_AHB 來(lái)驅(qū)動(dòng),而 APB 端由 CLK_APB 來(lái)驅(qū)動(dòng)。DMA 的通道根據(jù)數(shù)據(jù)流方向共分為兩種:一種控制 AHB 上模塊的數(shù)據(jù)交換;另一種控制 AHB 與 APB 上模塊的數(shù)據(jù)交換。
為了減小面積,利用 APB 時(shí)鐘是 AHB 時(shí)鐘二分頻的特點(diǎn),將兩種不同類型的通道復(fù)用同一個(gè)存儲(chǔ)端口。這樣,兩種通道的狀態(tài)機(jī)邏輯中使用各自的時(shí)鐘產(chǎn)生 SRAM 讀寫地址與控制信號(hào)。為了支持多通道獨(dú)立讀寫操作以提高并行度,每個(gè) AHB 與 APB 交換數(shù)據(jù)的通道必須使用讀寫?yīng)毩⒌腟RAM。這樣,使用 2 塊雙口 SRAM 實(shí)現(xiàn)了不同時(shí)鐘域緩存共享。每個(gè)通道擁有 2 塊 8×32bit 的不同流向的緩存容量,以匹配 DMA 的 AHB Master 端最高支持 4 個(gè) Word 的 Burst操作。
DMA 通道的狀態(tài)機(jī)與仲裁
DMA 的通道是指能夠控制數(shù)據(jù)從起點(diǎn)傳輸?shù)浇K點(diǎn)的邏輯資源以及相應(yīng)的緩存空間。圖 3 展示了兩種類型通道在傳輸數(shù)據(jù)過(guò)程中的狀態(tài)機(jī)變化。其中虛線對(duì)應(yīng) AHB 到 AHB 的通道,實(shí)線對(duì)應(yīng) AHB 與 APB 間數(shù)據(jù)交換的通道。
AHB 與 APB 的數(shù)據(jù)交換以接收來(lái)自 AHB 的命令符作為傳輸?shù)拈_(kāi)始。AHB 和 APB 能夠根據(jù)當(dāng)前的緩存充溢情況獨(dú)立地發(fā)出總線請(qǐng)求。于是相應(yīng)的邏輯各自進(jìn)入 AHB_RD(WR)_REQ 和 APB_REQ 狀態(tài),并根據(jù)目的地址與當(dāng)前剩余的傳輸字節(jié)數(shù)來(lái)調(diào)整單次傳輸?shù)淖止?jié)。DMA 的 AHBMaster 和 APB Master 在狀態(tài)機(jī)的控制下,獨(dú)立地對(duì) Read FIFO 或 Write FIFO 的一個(gè)端口進(jìn)行操作。
類似地, AHB 數(shù)據(jù)通道在接收命令符以后,進(jìn)入AHB_RD_REQ 狀態(tài),在 FIFO 不足半滿的情況下,APB Mst從起始地址讀出數(shù)據(jù)放入緩存;在 FIFO 超過(guò)半滿的Signals情況下,AHB_WR_REQ 狀態(tài)從緩存中取出數(shù)據(jù)送至的地址。
由于在同一時(shí)刻只能有一個(gè)通道占有 AHB 或APB 總線,DMA 多通道的總線請(qǐng)求必須經(jīng)過(guò)仲裁器的仲裁。根據(jù)文獻(xiàn)[6]的分析,Round Robin 策略在相應(yīng)多設(shè)備的請(qǐng)求中能最有效地利用已知帶寬。為了讓AHB 的傳輸減少延時(shí),在不同類型通道間使用固定優(yōu)先級(jí)。在同類型通道間,使用 Round Robin 策略使各設(shè)備有相同幾率被服務(wù)。
DMA 握手信號(hào)路由陣列
當(dāng) AMBA 總線上的外設(shè)數(shù)量增加時(shí),數(shù)據(jù)源設(shè)備與目標(biāo)設(shè)備之間的對(duì)應(yīng)關(guān)系也隨著數(shù)量線性增加。必須設(shè)計(jì)一種可以動(dòng)態(tài)配置每個(gè)通道占有設(shè)備的方法,以減少通道的數(shù)量。
本文提出了一種基于握手信號(hào)路由陣列動(dòng)態(tài)配置通道的方法。 DMA 的握手信號(hào)控制著通道起始和終止?fàn)顟B(tài)。 DMA_REQ 信號(hào)是目標(biāo)設(shè)備對(duì) DMA 控制器的輸入,標(biāo)識(shí)可以開(kāi)始傳輸數(shù)據(jù)。當(dāng)傳輸完成后,目標(biāo)設(shè)備發(fā)出 DMA_ CMD_END 信號(hào)以通知 DMA 結(jié)束傳輸過(guò)程。由于目標(biāo)設(shè)備處理總線數(shù)據(jù)的速度可能低于總線的傳輸速度,因此通常在總線接收端使用小規(guī)模的緩存。而握手信號(hào)即用來(lái)控制緩存數(shù)據(jù)不會(huì)在進(jìn)入處理流程之前被來(lái)自總線的新數(shù)據(jù)覆蓋。
圖 4 展示了連接 8 個(gè)總線外設(shè)的 DMA 控制器的握手信號(hào)路由陣列的單元。2 個(gè)二級(jí)選擇器陣列分別用作 2 個(gè)握手信號(hào)的路由。H1~H8 是來(lái)自目標(biāo)設(shè)備的握手信號(hào)。每個(gè)通道使用 2 個(gè) 4 選 1 和 1 個(gè) 2 選 1 的選擇器級(jí)聯(lián)成一個(gè)單元來(lái)從 8 個(gè)握手信號(hào)中選出當(dāng)前占有通道設(shè)備的信號(hào)。在命令字獲取階段得到的目標(biāo)設(shè)備地址映射為一個(gè) 8bit 的信號(hào)(如00000001,00000010),輸入 8/3 編碼器來(lái)產(chǎn)生陣列的選擇信號(hào)。當(dāng)系統(tǒng)具有 16 個(gè)總線外設(shè)時(shí),陣列單元為 4 個(gè) MUX4、 2 個(gè) MUX2 和最后一個(gè) MUX2 的三級(jí)級(jí)聯(lián),以此類推。
2.4 功耗管理和同步復(fù)位的實(shí)現(xiàn)
在 0.18μm 的工藝下,由于時(shí)鐘樹(shù)的反轉(zhuǎn)引起的電容充放電對(duì)功耗的貢獻(xiàn)達(dá)到了整體功耗的 30%~40%。一種有效的遏制此類功耗的方法是采用門控時(shí)鐘。使用低電平有效的鎖存器和與門串連的方法得到門控時(shí)鐘,可以避免時(shí)鐘毛刺的產(chǎn)生。
由于時(shí)鐘無(wú)效以后 DMA 模塊進(jìn)入狀態(tài)鎖存,在下一次時(shí)鐘有效時(shí),系統(tǒng)將以上一次時(shí)鐘關(guān)閉時(shí)鎖存的狀態(tài)進(jìn)入運(yùn)行。為了避免一個(gè)不確定的狀態(tài)在關(guān)閉時(shí)鐘時(shí)被鎖存,同步復(fù)位的電路將在時(shí)鐘關(guān)閉之前先復(fù)位所有觸發(fā)器電路。如圖 5 所示,一個(gè)兩級(jí)移位寄存器電路的輸出用來(lái)產(chǎn)生門控時(shí)鐘的使能信號(hào) CLK_DISABLE。當(dāng) Soft_Rst 信號(hào)為低時(shí),門控時(shí)鐘的使能信號(hào)為 0,DFF3 輸入為 0,時(shí)鐘正常輸入。當(dāng)需要關(guān)閉時(shí)鐘時(shí),Soft_Rst 先通過(guò) APB 總線被寫高,在第 1 個(gè) APB 時(shí)鐘周期后,模塊同步復(fù)位成功且 Soft_Rst 已經(jīng)移位至 DFF1 的輸出,隨后組合邏輯把使能信號(hào)拉高,DFF3 的輸入信號(hào)為 1。在第 2 個(gè) APB 時(shí)鐘上升沿,DFF3 輸出為高,在隨后到來(lái)的相應(yīng)時(shí)鐘域的低電平時(shí)段,LAT 通路,于是時(shí)鐘被關(guān)閉。
仿真結(jié)果與性能
經(jīng)過(guò) Design Compiler 邏輯綜合,DMA 控制器在 SMIC 0.18um 的工藝下,能夠達(dá)到 AHB 時(shí)鐘域 180MHz,APB 時(shí)鐘域 90MHz 的工作頻率。
ALP3310 是基于 AMBA 總線開(kāi)發(fā)并采用了該 DMA 控制器的 32 位 RISC 處理器,含有 UART、I2C 等 16 個(gè)總線外設(shè)。DMA 控制器具有 2 個(gè) AHB 數(shù)據(jù)通道,6 個(gè) AHB 與 APB的數(shù)據(jù)通道。
不同的內(nèi)部結(jié)構(gòu)和系統(tǒng)仲裁的實(shí)現(xiàn)都會(huì)影響 DMA 的總線占有率。仿真表明,忽略 AHB 總線競(jìng)爭(zhēng)以及 DMA 內(nèi)部通道競(jìng)爭(zhēng)的影響,DMA 的 AHB 端口平均每 10 個(gè) AHB 周期可以完成 4 個(gè) Word 的傳輸,達(dá)到約 280MB/s 的傳輸速度。
在 AHB 和 APB 上對(duì)比 DMA 與軟件傳輸數(shù)據(jù)的速度。在 AHB 上,分別用微處理器和 DMA 將 SRAM 中的 128 個(gè)字節(jié)的數(shù)據(jù)搬移到 SRAM 的另一段地址中。如表 2 所示,DMA 的 AHB 傳輸對(duì)比軟件傳輸具有 80.0%的速度優(yōu)勢(shì)。
對(duì)于 APB 的傳輸,通過(guò)微處理器直接寫 APB 外設(shè)花費(fèi)了 7 100 個(gè) AHB 周期。而寫入 SRAM 僅花費(fèi)了 5 400 個(gè) AHB周期,并且微處理器隨即被釋放,剩余的工作由 DMA 完成,從而減少了 26.7%的傳輸時(shí)間。
本文提出了面向 AMBA 總線的 32 位高性能 DMA 控制器的設(shè)計(jì)方法,引入了雙時(shí)鐘域、同步復(fù)位門控時(shí)鐘和握手信號(hào)路由陣列的設(shè)計(jì),并根據(jù)仿真結(jié)果進(jìn)行了性能分析。實(shí)驗(yàn)結(jié)果表明,采用了該 DMA 控制器的 32 位 RISC 處理器 ALP3310 的總線傳輸速度得到大幅提高。
評(píng)論