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

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

方案介紹 | 東科140W高性能極簡(jiǎn)AHB方案詳解

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

EE-116:SHARC簡(jiǎn)詞DMA

一種實(shí)現(xiàn)寬電壓增益的改進(jìn)型LLC-AHB變換器
不對(duì)稱半橋(AHB)反激變換器的分析與設(shè)計(jì)
雅特力AT32F402/F405 DMA使用指南

評(píng)論