基于DMA控制器的SoC系統設計
引言
本文引用地址:http://dyxdggzs.com/article/148613.htmDMA(Direct Memory Access,直接存儲器存取)是一種快速傳送數據的機制。DMA控制器能夠有效替代微處理器的加載/存儲指令,顯著(zhù)提高系統的并行能力。DMA是在存儲器與輸入/輸出設備間直接傳送數據,是一種完全由硬件完成輸入/輸出操作的方式。數據傳遞可以從外設到內存,從內存到外設。但DMA控制器的引入也引進(jìn)了影響系統響應速度的因素。本文講述以包含單個(gè)AHB master接口的DMA控制器為基礎的SoC系統架構藍本,分析存在的不足之處,并引入一種以新型DMA控制器為基礎的SoC系統架構的設計,解決提出的問(wèn)題。
1 對異步事件響應速度
系統實(shí)時(shí)性是指能在限定時(shí)間內完成任務(wù),并對外部異步事件作出及時(shí)響應。限定時(shí)間根據應用的要求不同而變化。實(shí)時(shí)系統的實(shí)時(shí)性與使用的軟硬件平臺有關(guān)。嵌入式系統的中斷服務(wù)響應時(shí)間是指從某一個(gè)中斷源發(fā)出中斷服務(wù)請求,到處理器響應這個(gè)中斷源的中斷服務(wù)請求,并開(kāi)始執行這個(gè)中斷源的中斷服務(wù)程序所用的這一段時(shí)間。嵌入式操作系統中的進(jìn)程調度是靠中斷實(shí)現的,處理器對系統中或系統外發(fā)生的異步事件的響應速度是決定系統響應速度的關(guān)鍵因素。中斷響應時(shí)間是一個(gè)非常重要的指標。特別是在實(shí)時(shí)計算機系統中,中斷響應時(shí)間是整個(gè)計算機系統的一個(gè)關(guān)鍵性指標。影響中斷服務(wù)響應的因素有很多,如中斷源本身相對于其他中斷源的優(yōu)先級設置。在內核不適合或不可能使用中斷技術(shù)期間,不能進(jìn)行中斷響應。因此這段時(shí)間也相當于一段中斷響應延時(shí),DMA操作就是其中一個(gè)因素。因為DMA傳輸也相當于一種中斷,只不過(guò)它向處理器申請的是總線(xiàn)控制權,而不是處理器本身。在DMA傳輸期間,由于處理器要把總線(xiàn)控制權讓給DMA而失去總線(xiàn)控制權,盡管處理器可以做些不使用總線(xiàn)的工作,但肯定不會(huì )馬上響應來(lái)自總線(xiàn)的外部中斷請求,因此會(huì )造成較大的中斷延時(shí)。
2 包含DMA的SoC系統架構
2.1 DMA結構介紹
一般而言,DMA控制器的功能與結構是由系統結構決定的。但是作為IP而言,DMA控制器又要有其一般性。DMA是指外部設備直接對計算機存儲器進(jìn)行讀寫(xiě)操作的I/O方式。這種方式下數據的讀寫(xiě)無(wú)需處理器執行指令,也不經(jīng)過(guò)處理器內部寄存器,而是利用系統的數據總線(xiàn),由外設直接對存儲器寫(xiě)入或讀出,從而達到極高的傳輸效率。DMA技術(shù)的重要性在于,利用它進(jìn)行數據存取時(shí)不需要處理器進(jìn)行干預,可提高系統執行應用程序的效率。利用DMA傳送數據的另一個(gè)好處是數據直接在源地址和目的地址之間傳送,不需要中間媒介。在大部分基于AMBA總線(xiàn)的SoC:系統中,當需要進(jìn)行DMA操作時(shí),DMA控制器先向處理器發(fā)出占用總線(xiàn)的請求,當總線(xiàn)請求成功后,處理器將總線(xiàn)使用權交給DMA控制器,可以進(jìn)行數據傳輸,當此次DMA傳輸完成后DMA控制器釋放總線(xiàn)控制權。
AMBA是ARM公司提出的用于微處理器片上通信的先進(jìn)的總線(xiàn)結構。一種典型的AMBA總線(xiàn)由AHB和APB總線(xiàn)分段構成??偩€(xiàn)上的設備可以分為能夠主動(dòng)讀寫(xiě)的主設備(master)與只能接收來(lái)自master請求的從設備(slave)。針對DMA控制器的研究引出了新的SoC架構,如使用分布式Fly-by DMA結構,為數據吞吐量大的模塊預設專(zhuān)用通道等。從功耗的角度看,當系統中存在較多master模塊時(shí),總線(xiàn)仲裁器的負擔加重,而仲裁器正是AMBA總線(xiàn)功耗的主要來(lái)源。
2.2 包含AHB主從接口DMA控制器的SoC系統架構
為了緩解在同一系統中需要同時(shí)實(shí)現大批量的數據傳輸,提出如圖1所示的基于AMBA總線(xiàn)的SoC系統架構。從圖中可以看出,系統處理器的數據接口與指令接口都是作為AHB的master掛接在A(yíng)HB總線(xiàn)上。主存通過(guò)slave接口掛接在A(yíng)HB總線(xiàn)上,而DMA控制器同時(shí)包含master與slave接口,掛接在A(yíng)HB總線(xiàn)上。slave接口用來(lái)對DMA控制器內部寄存器進(jìn)行配置,master用來(lái)向AHB申請AHB總線(xiàn)控制權,并進(jìn)行DMA傳輸。
在圖1中Memory是通過(guò)AHB的slave接口掛在A(yíng)HB總線(xiàn)上。DMA控制器包含的2個(gè)接口,slave接口完成DMA內部寄存器的配置后,master接口可申請AHB總線(xiàn)使用權,當獲得許可后,開(kāi)始占用AHB總線(xiàn),實(shí)現DMA數據傳輸。如此使處理器從外設間的大批量數據傳輸解放出來(lái),直接由DMA來(lái)完成,提高了數據傳輸放率。但也因此而產(chǎn)生了一個(gè)問(wèn)題:當DMA占用AHB總線(xiàn)時(shí)處理器不能通過(guò)AHB接口去實(shí)現取指及讀寫(xiě)數據。雖然在現在大部分處理器內部或外部配備了容量較大的高速緩存(Cache),當DMA控制器占用內存時(shí),處理器仍可利用Cache中的程序和數據繼續運行;但Cache是利用程序的局部性原理,當處理器執行的操作有良好的局部性時(shí),在DMA占用AHB總線(xiàn)期間可以利用Cache里的指令和數據繼續運行,但若此時(shí)有設備產(chǎn)生中斷,此時(shí)處理器的PC指針就會(huì )產(chǎn)生跳轉,從而會(huì )產(chǎn)生Cache不能命中的情況。而AHB總線(xiàn)又被DMA控制器占據,處理器不能對外取指,而且Cache的容量因成本問(wèn)題不可能太大,從而影響處理器的效率。

2.3 包含2個(gè)AHB從接口DMA控制器的新型SoC系統架構
為了解決因圖1所示架構大批量數據傳輸而引入DMA產(chǎn)生的問(wèn)題,提出了包含2個(gè)AHB接口的DMA控制器的SoC系統架構。在A(yíng)HB總線(xiàn)上的sla-ve接口都是不能發(fā)起傳輸的,它的一切操作都是被動(dòng)的。因此圖2中的DMA控制器的主要功能是提供需要進(jìn)行DMA傳輸的外設接口與處理器讀寫(xiě)主存的通道以及它們間優(yōu)先級設定。在此雙AHB從接口的DMA控制器中處理器優(yōu)先級永遠最高,其他外設通道都可以相互設置優(yōu)先級,而且除處理器外,為了防止同一個(gè)外設長(cháng)期占用DMA總線(xiàn)的使用權,可對外設DMA通道設置回退(暫時(shí)釋放DMA總線(xiàn))。如當通道2需要與Memory進(jìn)行數據傳輸時(shí),先向DMA控制申請總線(xiàn)使相應通道2的REQ信號有效,若DMA控制器允許通道2進(jìn)行數據傳輸,則向通道2響應ACK應答信號。當通道2傳輸完,DMA控制回退長(cháng)度的寄存器設定的值進(jìn)入回退階段,若數據傳輸完成,則使REQ信號無(wú)效,否則繼續使REQ信號有效,并在回退期后當DMA總線(xiàn)空閑時(shí)參于DMA總線(xiàn)競爭。在總線(xiàn)空閑時(shí)只有不處于回退期間的最高優(yōu)先級的通道才能獲得DMA總線(xiàn)使用權,對Memory進(jìn)行讀寫(xiě)。

經(jīng)過(guò)Design Compiler邏輯綜合,DMA控制器在SMIC0.18μm的工藝下,能夠達到AHB時(shí)鐘域90MHz。能滿(mǎn)足所設計SoC系統時(shí)鐘的要求。
2.4 2種架構性能對比
在圖1所示架構中,每次DMA傳輸都要發(fā)起1次讀與1次寫(xiě)操作。若在DMA傳輸期間有需要緊急處理的異常響應,AHB總線(xiàn)此時(shí)又被DMA控制器占用,則處理器只能等DMA控制器釋放AHB總線(xiàn)后才能占用AHB總線(xiàn)進(jìn)行操作,影響處理器效率與系統對異步事件的響應速度。
圖2中是通過(guò)DMA控制器的一個(gè)通道與Memory相接。DMA控制器包含2個(gè)AHB的slave接口,一個(gè)是用來(lái)對DMA控制器的內部寄存器進(jìn)行配置,而另一個(gè)是被處理器用來(lái)對Memory進(jìn)行讀寫(xiě)。首先處理器可以利用Cache中的指令與數據來(lái)運行,若出現沒(méi)命中的問(wèn)題,也可以對AHB總線(xiàn)上其他存儲區域進(jìn)行訪(fǎng)問(wèn),因為此時(shí)AHB總線(xiàn)沒(méi)有因DMA傳輸而被占據。并且除處理器通道外,對于其他所有通道的DMA傳輸都可以設置回退,
從而使處理器在外設DMA傳輸期間盡快獲得DMA總線(xiàn),對掛接在DMA控制器上的Memory能盡快進(jìn)行讀寫(xiě),從而提高處理器的效率。當異常中斷發(fā)生時(shí),處理器也能盡快對響應中斷,提高系統對異步事件的響應速度,從而提高系統的實(shí)時(shí)性。這樣的架構在一定程度上解決了上述架構所產(chǎn)生的影響處理器效率的問(wèn)題。
3 總結
通過(guò)對2種不同架構的分析得出,包含雙從AHB接口DMA技術(shù)的SoC系統架構,不僅解決了外設與Memory間的大批量數據傳輸問(wèn)題,同時(shí)又解決了因DMA技術(shù)的引入而帶來(lái)的處理器對異步事件響應速度過(guò)慢及處理器效率變低的問(wèn)題,提高了對異常中斷的響應速度,使系統更加適用于硬實(shí)時(shí)系統。
評論