AHB(先進高性能總線)
隨著深亞微米工藝技術(shù)日益成熟,集成電路芯片的規(guī)模越來越大。數(shù)字IC從基于時序驅(qū)動的設(shè)計方法,發(fā)展到基于IP核復(fù)用的設(shè)計方法,并在SOC設(shè)計中得到了廣泛應(yīng)用。在基于IP核復(fù)用的SoC(System on Chip的縮寫,稱為系統(tǒng)級芯片,也有稱片上系統(tǒng))設(shè)計中,片上總線設(shè)計是最關(guān)鍵的問題。為此,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn)。其中,由ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標(biāo)準(zhǔn)片上結(jié)構(gòu)。AMBA規(guī)范主要包括了AHB(Advanced High performance Bus)系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。
AHB
AHB=Advanced High Performance Bus,高級高性能總線。如同USB(Universal Serial Bus)一樣,也是一種總線接口。
AHB主要用于高性能模塊(如CPU、DMA和DSP等)之間的連接,作為SoC的片上系統(tǒng)總線,它包括以下一些特性:單個時鐘邊沿操作;非三態(tài)的實現(xiàn)方式;支持突發(fā)傳輸;支持分段傳輸;支持多個主控制器;可配置32位~128位總線寬度;支持字節(jié)、半字和字的傳輸。AHB 系統(tǒng)由主模塊、從模塊和基礎(chǔ)結(jié)構(gòu)(Infrastructure)3部分組成,整個AHB總線上的傳輸都由主模塊發(fā)出,由從模塊負責(zé)回應(yīng)?;A(chǔ)結(jié)構(gòu)則由仲裁器(arbiter)、主模塊到從模塊的多路器、從模塊到主模塊的多路器、譯碼器(decoder)、虛擬從模塊(dummy Slave)、虛擬主模塊(dummy Master)所組成。針對Soc設(shè)計中IP復(fù)用問題提出了一種新的解決辦法。傳統(tǒng)的方法是將特定功能模塊的非標(biāo)準(zhǔn)接口標(biāo)準(zhǔn)化為AHB主/從設(shè)備接口。本文提出了一種新的基于ARM的Soc通用平臺設(shè)計寄存器總線標(biāo)準(zhǔn)接口,這種設(shè)計使整個系統(tǒng)的結(jié)構(gòu)清晰,增強系統(tǒng)的通用性與系統(tǒng)中功能模塊的可移植性。
AMBA
AMBA 2.0規(guī)范包括四個部分:AHB、ASB、APB和Test Methodology。AHB的相互連接采用了傳統(tǒng)的帶有主模塊和從模塊的共享總線,接口與互連功能分離,這對芯片上模塊之間的互連具有重要意義。AMBA已不僅是一種總線,更是一種帶有接口模塊的互連體系。
APB
APB主要用于低帶寬的周邊外設(shè)之間的連接,例如UART、1284等,它的總線架構(gòu)不像AHB支持多個主模塊,在APB里面唯一的主模塊就是APB 橋。其特性包括:兩個時鐘周期傳輸;無需等待周期和回應(yīng)信號;控制邏輯簡單,只有四個控制信號。
1)系統(tǒng)初始化為IDLE狀態(tài),此時沒有傳輸操作,也沒有選中任何從模塊。2)當(dāng)有傳輸要進行時,PSELx=1,PENABLE=0,系統(tǒng)進入SETUP狀態(tài),并只會在SETUP 狀態(tài)停留一個周期。當(dāng)PCLK的下一個上升沿時到來時,系統(tǒng)進入ENABLE 狀態(tài)。
3)系統(tǒng)進入ENABLE狀態(tài)時,維持之前在SETUP 狀態(tài)的PADDR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會在ENABLE狀態(tài)維持一個周期,在經(jīng)過SETUP與ENABLE狀態(tài)之后就已完成。之后如果沒有傳輸要進行,就進入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進入SETUP狀態(tài)。
轉(zhuǎn)換
大多數(shù)掛在總線上的模塊(包括處理器)只是單一屬性的功能模塊:主模塊或者從模塊。主模塊是向從模塊發(fā)出讀寫操作的模塊,如CPU,DSP等;從模塊是接受命令并做出反應(yīng)的模塊,如片上的RAM,AHB/APB 橋等。另外,還有一些模塊同時具有兩種屬性,例如直接存儲器存取(DMA)在被編程時是從模塊,但在系統(tǒng)讀傳輸數(shù)據(jù)時必須是主模塊。如果總線上存在多個主模塊,就需要仲裁器來決定如何控制各種主模塊對總線的訪問。雖然仲裁規(guī)范是AMBA總線規(guī)范中的一部分,但具體使用的算法由RTL設(shè)計工程師決定,其中兩個最常用的算法是固定優(yōu)先級算法和循環(huán)制算法。AHB總線上最多可以有16個主模塊和任意多個從模塊,如果主模塊數(shù)目大于16,則需再加一層結(jié)構(gòu)(具體參閱ARM公司推出的Multi-layer AHB規(guī)范)。APB 橋既是APB總線上唯一的主模塊,也是AHB系統(tǒng)總線上的從模塊。其主要功能是鎖存來自AHB系統(tǒng)總線的地址、數(shù)據(jù)和控制信號,并提供二級譯碼以產(chǎn)生APB外圍設(shè)備的選擇信號,從而實現(xiàn)AHB協(xié)議到APB協(xié)議的轉(zhuǎn)換。
DMA
直接內(nèi)存訪問(DMA,Direct Memory Access)是一些計算機總線架構(gòu)提供的功能,它能使數(shù)據(jù)從附加設(shè)備(如磁盤驅(qū)動器)直接發(fā)送到計算機主板的內(nèi)存上。
通常會指定一個內(nèi)存部分用于直接內(nèi)存訪問。在ISA總線標(biāo)準(zhǔn)中,高達16兆字節(jié)的內(nèi)存可用于DMA。EISA和微通道架構(gòu)標(biāo)準(zhǔn)允許訪問全套內(nèi)存地址(假設(shè)他們可以用32位尋址)。外圍設(shè)備互連通過使用一個總線主控器來完成直接內(nèi)存訪問。直接內(nèi)存訪問的另一個選擇是程控輸入輸出(PIO)接口。在程控輸入輸出接口中,設(shè)備之間所有的數(shù)據(jù)傳輸都要通過處理器。ATA/IDE接口的新協(xié)議是Ultra DMA,它提供的突發(fā)數(shù)據(jù)傳輸速率可達33兆字節(jié)每秒。具有Ultra DMA/33的硬盤驅(qū)動器也支持PIO模式1、3、4和多字DMA模式2(每秒16.6兆字節(jié))。
外設(shè)與存儲器之間以及存儲器與存儲器之間的數(shù)據(jù)傳輸,通常采用程序中斷方式、程序查詢方式和DMA控制方式。程序中斷方式和程序查詢方式都需要CPU發(fā)出輸入/輸出(In/Out,I/O)的指令,然后等待I/O設(shè)備完成操作之后返回,期間CPU需要等待I/O設(shè)備完成操作。DMA在傳輸存儲器和I/O設(shè)備的數(shù)據(jù)時,無須CPU來控制數(shù)據(jù)的傳輸,直接通過DMA控制器(direct memory access controller,DMAC)完成外設(shè)與存儲器之間以及存儲器與存儲器之間的數(shù)據(jù)高速傳輸。 [3]DMA傳輸原理一個完整的DMA傳輸包括DMA請求、DMA響應(yīng)、DMA傳輸和DMA結(jié)束4個步驟。DMA傳輸原理如圖1所示,圖中I/O設(shè)備為源端設(shè)備,由I/O設(shè)備向目的端設(shè)備(存儲器)傳輸數(shù)據(jù),其DMA的基本傳輸過程如下:①CPU對總線控制器進行初始化,制定工作內(nèi)存空間,讀取DMAC中的寄存器信息,了解DMAC的傳輸狀態(tài)[1];②I/O設(shè)備向DMAC發(fā)送DMA請求(DMA request,DREQ),DMAC收到此信號后,向CPU發(fā)出總線保持信號(HOLD); ③CPU當(dāng)前總線周期執(zhí)行結(jié)束后發(fā)出總線響應(yīng)信號保持確認(rèn)(hold acknowledgment,HLDA); ④DMAC收到總線授權(quán)后,向I/O設(shè)備發(fā)送DMA響應(yīng)信號DMA確認(rèn)(DMA acknowledgment,DACK),表示允許I/O設(shè)備進行DMA傳送;⑤開始傳輸時,DMAC首先從源地址讀取數(shù)據(jù)并存入內(nèi)部緩存中,再寫入目的地址,完成總線數(shù)據(jù)從源地址到目的地址的傳輸[1];⑥D(zhuǎn)MA傳輸完成后,DMAC向CPU發(fā)出結(jié)束信號,釋放總線,使CPU重新獲得總線控制權(quán)。一次DMA傳輸只需要執(zhí)行一個DMA周期,相當(dāng)于一個總線讀/寫周期,因而能夠滿足外設(shè)數(shù)據(jù)高速傳輸?shù)男枰?br />
DMA是所有現(xiàn)代電腦的重要特色,它允許不同速度的硬件設(shè)備來溝通,而不需要依于中央處理器的大量中斷負載。否則,中央處理器需要從來源把每一片段的數(shù)據(jù)復(fù)制到寄存器,然后把它們再次寫回到新的地方。在這個時間中,中央處理器對于其他的工作來說就無法使用。DMA傳輸常使用在將一個內(nèi)存區(qū)從一個設(shè)備復(fù)制到另外一個。當(dāng)中央處理器初始化這個傳輸動作,傳輸動作本身是由DMA控制器來實行和完成。典型的例子就是移動一個外部內(nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存去。像是這樣的操作并沒有讓處理器工作拖延,使其可以被重新調(diào)度去處理其他的工作。DMA傳輸對于高性能嵌入式系統(tǒng)算法和網(wǎng)絡(luò)是很重要的。 舉個例子,個人電腦的ISADMA控制器擁有8個DMA通道,其中的7個通道是可以讓計算機的中央處理器所利用。每一個DMA通道有一個16位地址寄存器和一個16位計數(shù)寄存器。要初始化數(shù)據(jù)傳輸時,設(shè)備驅(qū)動程序一起設(shè)置DMA通道的地址和計數(shù)寄存器,以及數(shù)據(jù)傳輸?shù)姆较颍x取或?qū)懭?。然后指示DMA硬件開始這個傳輸動作。當(dāng)傳輸結(jié)束的時候,設(shè)備就會以中斷的方式通知中央處理器?!胺稚?收集”(Scatter-gather)DMA允許在一次單一的DMA處理中傳輸數(shù)據(jù)到多個內(nèi)存區(qū)域。相當(dāng)于把多個簡單的DMA要求串在一起。同樣,這樣做的目的是要減輕中央處理器的多次輸出輸入中斷和數(shù)據(jù)復(fù)制任務(wù)。 DRQ意為DMA要求;DACK意為DMA確認(rèn)。這些符號一般在有DMA功能的電腦系統(tǒng)硬件概要上可以看到。它們表示了介于中央處理器和DMA控制器之間的電子信號傳輸線路。
DMA會導(dǎo)致緩存一致性問題。想像中央處理器帶有緩存與外部內(nèi)存的情況,DMA的運作則是去訪問外部內(nèi)存,當(dāng)中央處理器訪問外部內(nèi)存某個地址的時候,暫時先將新的值寫入緩存中,但并未將外部內(nèi)存的數(shù)據(jù)更新,若在緩存中的數(shù)據(jù)尚未更新到外部內(nèi)存前發(fā)生了DMA,則DMA過程將會讀取到未更新的數(shù)據(jù)。相同的,如果外部設(shè)備寫入新的值到外部內(nèi)存內(nèi),則中央處理器若訪問緩存時則會訪問到尚未更新的數(shù)據(jù)。這些問題可以用兩種方法來解決:
1.緩存同調(diào)系統(tǒng)(Cache-coherent system):以硬件方法來完成,當(dāng)外部設(shè)備寫入內(nèi)存時以一個信號來通知緩存控制器某內(nèi)存地址的值已經(jīng)過期或是應(yīng)該更新數(shù)據(jù)。
2.非同調(diào)系統(tǒng)(Non-coherent system):以軟件方法來完成,操作系統(tǒng)必須確認(rèn)緩存讀取時,DMA程序已經(jīng)開始或是禁止DMA發(fā)生。第二種的方法會造成DMA的系統(tǒng)負擔(dān)。
除了與硬件交互相關(guān)外,DMA也可為昂貴的內(nèi)存耗費減負。比如大型的拷貝行為或scatter-gather操作,從中央處理器到專用的DMA引擎。Intel的高端服務(wù)器包含這種引擎,它被稱為I/O加速技術(shù)。
在電腦運算領(lǐng)域,遠程直接內(nèi)存訪問(英語:remote direct memory access,RDMA)是一種直接存儲器訪問技術(shù),它將數(shù)據(jù)直接從一臺計算機的內(nèi)存?zhèn)鬏數(shù)搅硪慌_計算機,無需雙方操作系統(tǒng)的介入。這允許高通量、低延遲的網(wǎng)絡(luò)通信,尤其適合在大規(guī)模并行計算機集群中使用。
RDMA支持零復(fù)制網(wǎng)絡(luò)傳輸,通過使網(wǎng)絡(luò)適配器直接在應(yīng)用程序內(nèi)存間傳輸數(shù)據(jù),不再需要在應(yīng)用程序內(nèi)存與操作系統(tǒng)緩沖區(qū)之間復(fù)制數(shù)據(jù)。這種傳輸不需要中央處理器、CPU緩存或上下文交換參與,并且傳輸可與其他系統(tǒng)操作并行。當(dāng)應(yīng)用程序執(zhí)行RDMA讀取或?qū)懭胝埱髸r,應(yīng)用程序數(shù)據(jù)直接傳輸?shù)骄W(wǎng)絡(luò),從而減少延遲并實現(xiàn)快速的消息傳輸。
但是,這種策略也表現(xiàn)出目標(biāo)節(jié)點不會收到請求完成的通知(單向通信)等相關(guān)的若干問題。
-
mcu
+關(guān)注
關(guān)注
147文章
18383瀏覽量
378890 -
dma
+關(guān)注
關(guān)注
3文章
576瀏覽量
104710 -
AHB
+關(guān)注
關(guān)注
0文章
26瀏覽量
10448 -
AHB總線
+關(guān)注
關(guān)注
0文章
18瀏覽量
9953
發(fā)布評論請先 登錄
STM32H743 UART DMA接收不到數(shù)據(jù)是為什么?
HarmonyOSAI編程智能代碼解讀
一文詳解AHB-Lite協(xié)議

STM32F405RGT6 ADC2+TIM4觸發(fā)+DMA(DMA2_Stream2_CH1)+DMA中斷會死機,怎么解決?
FPGA利用DMA IP核實現(xiàn)ADC數(shù)據(jù)采集
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之五:DMA 控制單元設(shè)計

【產(chǎn)品介紹】動態(tài)熱機械分析儀DMA 303 Eplexor

方案介紹 | 東科140W高性能極簡AHB方案詳解

STM32H743 UART DMA接收不到數(shù)據(jù),為什么?
AMBA AHB協(xié)議規(guī)范
ZYNQ基礎(chǔ)---AXI DMA使用

評論