amba總線的發展
axi協議是兩個接口之間的點對點的協議,主要是有5個通道。
主機在寫地址(AW)通道上發送地址,并在寫數據(W)通道上將數據傳輸到從機。
從機將接收到的數據寫入指定地址空間。從機完成寫操作,它將在寫響應(B)通道上向主機發送信號。
主機在讀地址(AR)通道上發送它想要讀取的地址。
從機通過讀取數據(R)通道將數據從請求的地址發送到主機。
從機還可以在讀數據(R)通道上返回錯誤消息。例如,如果地址無效,或數據損壞,或訪問沒有正確的安全權限,則會發生錯誤。
每個通道都是單向的,因此需要一個單獨的寫響應通道將響應傳遞回主機。然而,不需要讀響應通道,因為讀響應作為讀數據通道的一部分被傳遞。
使用單獨的地址和數據通道進行讀寫傳輸有助于最大限度地提高接口帶寬。在讀取和寫入通道的群組之間不存在時序關系。這意味著讀取序列可以與寫入序列同時發生。這五個通道中的每一個都包含若干信號,并且每個通道中的所有這些信號具有如下前綴:
axi協議的主要特點
1.獨立的讀寫通道
2.多個數據項
3.地址和數據之間沒有嚴格的時序關系
4.支持非對齊數據傳輸
5.無序事務完成
6.基于起始店址的突發事務。
傳輸是一次信息交換,包括一次VALID和READY握手。下圖顯示了一個傳輸:
一個事務是一個完整的突發傳輸,包含一個地址傳輸、一個或多個數據傳輸,以及一個響應傳輸(對于寫序列)。下圖顯示了一個事務:
讀寫握手必須遵守以下規則:
在斷言VALID之前,源不能等待READY被斷言。發送放不能等待READY信號發送方必須無條件先(或同時)表明數據有效性(VALID),而接收方可以自由決定何時準備好(READY)。這種設計確保了協議的確定性和無死鎖,同時支持高性能的并行數據傳輸。理解這一點對正確實現AXI接口至關重要。
目的地可以在斷言READY之前等待VALID被斷言。axi協議賦予接收方對READY信號的完全控制權:
這些規則意味著READY可以在VALID之前或之后斷言,甚至可以同時斷言。
主機將地址置于AWADDR上,并在時鐘周期2中置位AWVALID。2.從機在時鐘周期3中置位AWREADY,以指示其接收地址值的能力。3.握手在時鐘周期4的上升沿完成。
數據傳輸具有以下事件序列:1.從機在時鐘周期n內等待WREADY設為高電平的數據。2.主機將數據放在WDATA總線上,并在時鐘周期n+2中置位WVALID。3.握手在時鐘周期n+3的上升沿完成。
寫入響應具有以下事件序列:1.主程序斷言BREADY。2.從設備驅動BRESP以指示寫事務的成功或失敗,并斷言BVALID。握手在時鐘周期n+3的上升沿完成。、
多個數據項
在這種情況下,AW通道表示三次傳輸的序列,在W通道上,我們看到三次數據傳輸。主機將WLAST驅動為高電平,以指示最終的WDATA。這意味著從設備可以對數據傳輸進行計數,也可以只監視WLAST。一旦接收到所有WDATA傳輸,從機在B通道上給出單個BRESP值。單個BRESP覆蓋整個突發。如果從設備確定任何傳輸包含錯誤,則它必須等到整個突發完成后才能通知主設備發生錯誤。
讀取單個項
握手具有以下事件序列:1.在時鐘周期2中,主機在ARADDR上向從機傳送讀取地址,并置位ARVALID。2.在時鐘周期3中,從機置位ARREADY,以指示它已準備好接收地址值。握手在時鐘周期4的上升沿完成。接下來,在Read(R)通道上,從機將數據傳輸到主機。下圖顯示了數據傳輸過程:
數據傳輸握手具有以下事件序列:1.在時鐘周期n中,主機通過置位RREADY來指示其正在等待接收數據。2.從機在時鐘周期n+2內檢索數據并將其置于RDATA上。在這種情況下,因為這是單個數據事務,所以從機還將RLAST信號設置為高。與此同時,從機使用RRESP向主機指示讀取事務的成功或失敗,并置位RVALID。3.由于主機已置位RREADY,因此握手在時鐘周期n+3的上升沿完成。
讀取多個數據項
在本例中,我們在AR通道上傳輸單個地址,以傳輸多個數據項,以及相關的突發寬度和長度信息。這里,AR通道表示三次傳輸的序列,因此在R通道上,我們看到從機到主機的三次數據傳輸。在R通道上,從機將數據傳輸到主機。在本例中,主機正在等待數據,如RREADY設置為高電平所示。從機驅動有效的RDATA并為每次傳輸置位RVALID。讀事務和寫事務之間的一個區別是,對于讀事務,對于事務中的每個傳輸都有RRESP響應。這是因為,在寫事務中,從機必須在B通道上將響應作為單獨的傳輸發送。在讀事務中,從機使用相同的通道將數據發送回主機,并指示讀操作的狀態。如果在傳輸過程中個存在錯誤,必須將完成該完整的指示長度,不存在提前結束突發的情況。
寫通道信號
每個通道中的所有信號都具有相同的前綴:
AW表示寫地址通道
W表示寫數據通道
B表示寫響應通道
對于寫通道,AXI3協議和AXI4協議之間存在一些差異:
對于寫地址通道,AXI4協議中AWLEN信號更寬。因此,AXI4能夠產生比AXI3突發更長的。
AXI4將AWLOCK信號減少到單個位,以僅適應獨占傳輸,因為不支持鎖定傳輸。
AXI4將AWQOS信號添加到AW通道。該信號支持AXI4協議中的服務質量(QoS)概念。
AXI4將AWREGION信號添加到AW通道。該信號支持從區域,從區域允許來自單個物理從接口的多個邏輯接口。
AXI4從W通道中移除WID信號。這是因為不再允許寫入數據重新排序。
AXI4將WUSER用戶定義的信號添加到每個通道。
讀通道信號
每個通道中的所有信號都有相同的前綴:
AR表示讀地址通道
R表示讀數據通道對于讀通道
AXI3協議和AXI4協議之間存在一些差異:
對于AXI4協議,讀地址長度信號ARLEN更寬。因此,AXI4能夠生成比AXI3更長的讀取突發。
AXI4將ARRECT信號減少到單個位,以僅適應獨占傳輸,因為不支持鎖定傳輸。
與寫通道信號一樣,服務質量和從區域的概念適用于讀事務。它們在AR通道中使用ARQOS和ARREGION信號。
AXI4將用戶定義的信號添加到兩個讀取通道。
數據大小、長度以及突發類型
AxLEN描述的是單次突發的數據長度(數據有效的時鐘周期)。
對于axi3而言,AxLEN只有4位[3:0],因此只能突發1-16的數據長度。
對于axi4而言,AxLEN有8位[7:0],因此能突發1-256的數據長度。
AxSIZE[2:0],描述的是單個周期傳輸的數據最大字節寬度:1/2/4/8/16/32/64/128
AxBURST[1:0],描述的是突發類型,主要有三種類型:fixed 、incrementing、wrapping
0x00 FIXED:重復讀某個相同的地址數據。例如fifo。
0x01 INCR? :不斷增加的爆發。從機會從上一次傳輸的地址開始遞增突發中每次傳輸的地址。增? ? ? ? ? ? ? ? ? ? ? ? ?量值取決于傳輸的大小(由AxSIZE屬性定義)。用于塊傳輸。
0x10 WRAP:與INCR突發類似,如果達到較高的地址限度,那么回到低地址。(類似循環)
?保護級別支持
????????axi提供了AWPROT/ARPROT信號,它可以防止系統下游的非法的事務。例如,如果事務不具有沒正確的保護級別,則存儲控制器可以用過這些信號拒絕讀寫訪問。
AxpROT定義了三個級別保護:
AxPROT位分配指定以下屬性:
AxPROT[0]表示該事務是特權還是非特權。
1:特權 0:非特權
AxPROT[1]表示該事務是安全還是非安全。
1:非安全事務?0:安全事務
AxPROT[2]表示該事務是指令訪問還是數據訪問。
1:指令訪問?0:數據訪問
緩存支持
????????為了支持使用不同caching策略的系統,AxCACHE(AWCACHE OR? ARCACHE)信號如何在系統中運行。
下圖顯示AxCACHE位分配:
AxCACHE位分配指定以下屬性:
AxCACHE [0](B)是可緩沖位。
????????當此位設置為1時,互連或任何組件可以將事務延遲到達其最終目的地任意數量的周期。可緩沖位指示響應是否可以來自中間點,或者響應是否必須來自目的地從機。
AxCACHE [1]是AXI3中的可緩存位,或AXI4中的可修改位。
????????此位表示最終目的地的事務屬性不必與原始事務的屬性匹配。對于寫入,設置可修改位意味著可以合并多個不同的寫入,或者可以將單個寫入分為多個事務。對于讀取,設置可修改位意味著可以預取位置的內容,或者可以將單個讀取的值用于多個讀取事務。
AxCACHE [2]是RA位。
????????RA位指示在讀取時,建議但不強制分配事務。如果斷言AxCACHE [2]或AxCACHE [3],則必須在緩存中查找事務,因為它可能已被另一個主設備分配在該緩存中。
AxCACHE [3]是WA位。
????????WA位指示在寫入時,建議但不強制分配事務。如果斷言AxCACHE [2]或AxCACHE [3],則必須在緩存中查找事務,因為它可能已被另一個主設備分配在該緩存中。
如果可緩存位AxCACHE [1]未被斷言,則AxCACHE [2]和AxCACHE [3]不能被斷言。
響應信號
axi提供了讀寫的響應信號。
對于讀事務,這個響應信號來自從機讀數據通道的RRESP。
對于寫事務,這個應答信號是使用寫應答信道中的BRESP。
RRESP與BRESP都是由2 bit組成,這些信號的編碼可以傳遞四個響應,如下表所示:
00 -OKAY:正常訪問成功或獨占訪問失敗。OKAY是用于大多數事務的響應。OKAY表示正常訪問成功。此響應還可以指示獨占訪問失敗。獨占訪問是指多個主機可以同時訪問一個從機,但這些主機不能訪問相同的內存范圍。
01-EXOKAY:獨家訪問成功。EXOKAY表示獨占訪問的讀或寫部分已經成功。
10-SLVERR:從機錯誤。當訪問成功到達從機,但從機希望向發起主機返回錯誤條件時,使用SLVERR。這表示交易不成功。例如,當嘗試的傳輸大小不受支持,或嘗試對只讀位置進行寫訪問時。
11-DECERR:解碼錯誤。DECERR通常由互連組件生成,以指示在事務地址處不存在從機。
寫數據選通
????????寫數據選通信號由主設備用來告知從設備需要數據總線的哪些字節。寫數據選通對于用于稀疏數據陣列的高效移動的高速緩存訪問是有用的。除了使用寫數據選通之外,還可以使用未對齊的起始地址來優化數據傳輸。
????????寫通道在數據總線上每字節有一個選通位。這些位構成WSTRB信號。主機必須確保僅對包含有效數據的字節通道將寫選通設置為1。1:該字節數據有效 0;該字節數據無效。
????????例如,考慮64位寫入數據總線。WSTRB信號有8位,每個字節一位。下圖顯示示例WSTRB值如何指定哪些字節通道有效:
假設有效數據僅在數據總線的前六個有效字節中,從字節7到字節2。這意味著主機必須用十六進制值0xFC控制WSTRB信號。
類似地,其余示例如下指定有效數據總線字節通道:
僅在數據總線的字節2、3、4和5中的有效數據要求WSTRB信號值為0x3C。
僅在數據總線的字節0和7中的有效數據要求WSTRB信號值為0x81。
僅在數據總線的字節3、5、6和7中的有效數據要求WSTRB信號值為0xE8。
????????字節通道選通提供稀疏數據陣列的有效移動。使用此方法,可以通過將剩余的傳輸字節通道選通設置為0來提前終止寫事務,但仍必須完成剩余的傳輸。WSTRB信號也可以在事務中的傳輸之間改變。讀取通道沒有等效信號。這是因為主設備指示所需的傳輸,并且可以屏蔽從設備接收到的任何不需要的字節。
帶鎖信號的原子訪問
AxLOCK信號用于指示何時執行原子訪問。
AXI協議提供了兩種支持原子性的機制:
????????鎖定訪問:鎖定的傳輸會鎖定通道,該通道將保持鎖定狀態,直到生成未鎖定的傳輸。鎖定訪問類似于AHB協議支持的機制。當主設備使用AxLOCK信號來顯示事務是鎖定事務時,互連必須確保只有主設備可以訪問目標從區域,直到來自同一主設備的解鎖事務完成。互連內的仲裁器必須強制執行此限制。由于鎖定訪問要求互連防止在鎖定序列進行時發生任何其他事務,因此它們可能對互連性能產生重要影響。鎖定的事務應僅用于舊設備。僅AXI3支持鎖定訪問。AXI4不支持鎖定的訪問。
? ? ? ? 獨占訪問:獨占訪問比鎖定事務更有效,它們允許多個主服務器同時訪問一個從服務器。獨占訪問機制使信號量類型操作的實現成為可能,而不需要總線在操作期間保持鎖定到特定的主機。
鎖定訪問是AXI3協議中用于實現原子操作的機制,通過強制互連(Interconnect)阻塞其他主設備(Master)的訪問,確保當前主設備對從設備(Slave)的獨占控制(axi4不支持鎖定訪問)。由于鎖定訪問的效率不如獨占訪問,而且大多數組件不需要鎖定事務,因此它們已從AXI4協議中刪除。
axi3中,AxLOCK由?2bit組成
0b00- Normal
0b01- Exclusive
0b10- Locked
0b11- Reserved
axi4中,AxLOCK有 1bit組成
0b0- Normal
0b1- Exclusive
服務質量
????????axi4中引入了額外支持服務質量的信號。服務質量允許您對事務進行優先級排序,通過確保更重要的事務以更高的優先級處理來提高系統性能。
服務質量信號有兩種:
????????AWQOS在每次寫事務的Write Address通道上發送。
????????ARQOS在每次讀事務的讀地址通道上發送。
????????兩個信號都是4位寬,其中0x0表示最低優先級,0xF表示最高優先級。服務質量的默認系統級實現是,任何可以選擇多個事務的組件都首先處理具有較高QoS值的事務。
下圖展示了一個帶有直接內存控制器(Direct Memory Controller, DMC)的示例系統,具體來說是DMC-400。這個控制器管理到DRAM的事務:
????????在實際中,一些部分,如CPU,需要比其他組件(如GPU或VPU)更重要的內存訪問。當適當的QoS值被分配給事務時,互連可以在較低優先級事務之前仲裁較高優先級事務,并且DMC重新排序事務以確保給出正確的優先級。
區域信號
????????區域信號是AXI4中的一個新的可選功能。當當您使用區域標識符時,這意味著從屬設備上的單個物理接口可以提供多個邏輯接口。每個邏輯接口在系統地址映射中可以有不同的位置。當使用區域標識符時,從機不必支持不同邏輯接口之間的地址解碼。區域信令使用兩個4位區域標識符AWREGION和ARREGION。這些區域標識符可以唯一標識多達16個不同的區域。
用戶接口
????????用戶信號AXI4接口信號集可以選擇包含一組用戶自定義信號,稱為User信號。用戶信號可以在每個通道上使用,在主從組件之間傳遞額外的自定義控制信息。這些信號是可選的,不必在所有通道上都支持。如果使用它們,則User信號的寬度由實現定義,并且可以在每個通道上不同。
????????由于AXI協議沒有定義這些用戶信號的功能,因此如果兩個組件以不兼容的方式使用相同的用戶信號,則可能會出現互操作性問題。
axi通道依賴性
AXI通道依賴AXI協議定義了不同通道之間的依賴關系。
三個主要的依賴關系如下:
????????WLAST傳輸必須在BVALID被斷言之前完成。主機必須發送所有寫入數據,然后主機才能看到寫入響應。這種依賴性在AXI3中不存在,但在AXI4中引入:在AXI3中,在發送寫響應之前不必看到地址。在AXI4中,所有數據和地址必須在主機可以看到寫響應之前傳輸。
????????在ARADDR被傳輸之前,RVALID不能被斷言。從機在沒有首先看到地址的情況下無法傳輸任何讀取數據。這是因為如果從設備不知道數據將被讀取的地址,則從設備無法將數據發送回主設備。
????????WVALID可以在AWVALID之前斷言。主機可以使用寫數據通道將數據發送到從機,然后再傳送從機應寫入這些數據的地址。
原子訪問
????????原子訪問是對存儲器區域的一系列訪問的術語。原子訪問由主機在它們想要執行對特定存儲器區域的訪問序列時使用,同時確保該區域中的原始數據不會被來自其他主機的寫入損壞。這個序列通常是讀、修改和寫序列。
原子訪問有兩種類型:
????????鎖:當主設備正在執行具有鎖定訪問的事務序列時,拒絕任何其他主設備對同一從設備的訪問。
????????獨占:當主設備成功地執行具有獨占訪問的事務序列時,其他主設備可以訪問從設備,但不能訪問正被訪問的存儲器區域。
鎖定訪問
?????????鎖定的事務應僅用于舊設備。AXI4不支持鎖定事務,但AXI3實現必須支持鎖定事務。在主服務器可以啟動一個鎖定的事務序列之前,它必須確保沒有其他事務等待完成。設置了AxLOCK信號的事務指示鎖定的事務。事務的鎖定序列迫使互連拒絕任何其他主設備對從設備的訪問。鎖定序列必須始終以未設置AxLOCK信號的最終事務完成。這個最后的事務仍然包括在鎖定序列中,但是有效地移除鎖定以允許其他主設備訪問從設備。由于鎖定訪問要求互連防止在鎖定序列進行時發生任何其他事務,因此它們對互連性能有重要影響。
下圖顯示了AXI鎖定訪問操作,并以兩個主機M0和M1為例:
????????在主服務器可以啟動鎖定的事務序列之前,主服務器必須確保它沒有其他等待完成的事務。當M0使用事務的鎖定信號來指示它是鎖定事務時,則互連使用仲裁器來確保只有M0可以訪問目標從設備。互連阻止來自M1的任何訪問,直到來自M0的解鎖事務完成。
下圖顯示了鎖定訪問如何與事務序列一起工作:
本示例中的步驟如下:
????????1.主機M0啟動一個讀取、修改和寫入序列。第一個事務READ具有斷言的RESET信號,指示它開始鎖定事務。
????????2.互連鎖定任何其他事務。從這一點開始,主設備M1不能訪問從設備。
????????3.序列中的最后一個事務WRITE不具有斷言的LOCK信號。此事務指示鎖定序列的結束。互連移除鎖定,并且其他主設備現在可以訪問從設備。
獨占訪問
????????使用AXI 4,獨占訪問比鎖定訪問更有效地執行原子操作。這是因為獨占訪問更有效地使用互連帶寬。在獨占訪問序列中,其他主設備可以同時訪問從設備,但只有一個主設備將被授予訪問同一內存范圍的權限。用于獨占訪問的機制可以提供信號量類型的操作,而不需要總線在操作期間保持專用于特定的主機。這意味著總線訪問延遲和最大可實現帶寬不受影響。獨占訪問可以由多個數據傳輸組成,但所有事務必須具有相同的地址通道屬性。從設備需要硬件獨占訪問監視器來記錄獨占序列的事務信息,以便它知道正在訪問的存儲器范圍和執行訪問的主設備的身份。如果在獨占序列完成之前沒有其他主機訪問被監視的范圍,則訪問是原子的。從設備對來自其他主設備的訪問開放,導致系統帶寬利用的總體公平性增加。
獨占訪問硬件監視器操作
????????獨占訪問的基本機制由設計者必須實現的獨占訪問監視器控制。下圖顯示了主機M0從地址執行排他讀取的示例:
來自獨占訪問監視器硬件的響應是以下之一:·
EXOKAY:讀取該值,并且將事務的ID存儲在獨占訪問監視器硬件中。
OKAY:該值被讀取,但不支持獨占訪問,主服務器應將此響應視為獨占操作的錯誤。
在獨占訪問序列中,其他主機可以同時訪問從機,但只有一個主機會被授予對同一內存范圍的訪問權限。
在稍后的某個時間,如果在獨占讀取期間接收到 EXOKAY,則M0嘗試通過對相同地址執行獨占寫入來完成獨占序列。獨占寫入使用與獨占讀取相同的事務ID。
來自獨占訪問監視器硬件的響應是以下之一:
EXOKAY:自獨占讀取訪問以來,沒有其他主機寫入該位置,因此寫入成功。在這種情況下,獨占寫入更新內存。
OKAY:另一個主設備(例如M1)在獨占讀訪問后已寫入該位置,因此寫入失敗。在這種情況下,不更新存儲器位置。
有些從機需要額外的邏輯來支持獨占訪問。獨占訪問監視硬件只監視每個事務ID的一個地址。應該實現它,以便它可以監視可以看到的每個可能的獨占ID。
獨占交易對:通過
????????在稍后的某個時間,如果在排他讀取期間接收到EXOKAY,則M0嘗試通過對相同地址執行排他寫入來完成排他序列。獨占寫入使用與獨占讀取相同的事務ID。
用于獨占訪問的機制可以提供信號量類型的操作,而不要求總線在操作期間保持專用于特定的主服務器。這意味著總線訪問延遲和最大可實現帶寬不受影響。排他性訪問可以由多個數據傳輸組成,但所有的事務必須具有相同的地址通道屬性。從機需要一個硬件獨占訪問監視器來記錄獨占序列的事務信息,以便它知道正在被訪問的內存范圍和執行訪問的主機的身份。
如果在獨占序列完成之前沒有其他主站訪問被監視的范圍,則該訪問是原子性的。
從服務器對來自其他主服務器的訪問是開放的,這使得系統在帶寬利用方面的公平性總體上得到了提高。
傳輸行為和事務順序
本節將分析一些讀寫事務的示例序列,以幫助您理解不同AXI通道之間的關系。本節還解釋了一些管理事務的規則,以及傳輸id如何支持亂序事務。
我們還會看到:
未對齊傳輸,以及它們如何幫助優化帶寬利用率
大端和小端編碼的區別,舉幾個簡單的例子
與AXI接口相關的主要參數。這些參數在實現互連時很有用