AXI(Advanced eXtensible Interface)協定規範
參考:ARM (IHI 0022H.c) AMBA AXI and ACE Protocol Specification
文章目錄
- AXI(Advanced eXtensible Interface)協定規範
-
- Part A: AMBA AXI 協定規範
-
- A1: 介紹
-
- A1.1 AXI架構
- A2: 信号描述
-
- A2.1 全局信号
- A2.2 寫位址通道信号
- A2.3 寫資料通道信号
- A2.4 寫響應通道信号
- A2.5 讀位址通道信号
- A2.6 讀資料通道信号
- A3: 單接口要求
-
- A3.1 時鐘和複位
- A3.2 基本讀寫事務(握手)
- A3.3 通道之間的關系(握手依賴性)
- A3.4 事務結構
-
- A3.4.1 位址結構(突發長度,尺寸,類型定義及位址計算)
- A3.4.2 傳輸的僞代碼描述
- A3.4.3 正常事務
- A3.4.4 資料讀寫結構(寫選通,窄傳輸,大小端,非對齊)
- A3.4.5 讀寫響應結構
- A4: 事務屬性
-
- A4.1 事務類型和屬性
- A4.2 AXI3記憶體屬性信号
- A4.3 AXI4更改記憶體屬性信号
-
- A4.3.1 AxCACHE[1],可修改
- A4.3.2 Read-Allocate和Write-Allocate的更新含義
- A4.4 記憶體類型
-
- A4.4.1 記憶體類型要求
- A4.5 不比對的記憶體屬性
-
- A4.5.1 更改記憶體屬性
- A4.6 事務緩沖
- A4.7 通路權限
- A4.8 遺留問題
- A4.9 使用示例
-
- A4.9.1 裝置記憶體類型的使用
- A5: 事務辨別符
-
- A5.1 AXI事務辨別符
- A5.2 ID 信号
-
- A5.2.1 讀資料排序
- A5.2.2 寫資料排序
- A5.2.3 事務辨別符的互連使用
- A6: AXI排序模型
-
- A6.1 AXI排序模式概述
- A6.2 存儲位置和外圍區域
- A6.3 事務和排序
- A6.4 觀察和完成定義
- A6.5 管理器排序保證
-
- A6.5.1 收到完成響應前的保證
- A6.5.2 完成響應的保證
- A6.5.3 響應排序保證
- A6.6 排序要求
-
- A6.6.1 從屬排序要求
- A6.6.2 互連排序要求
- A6.7 終點前的響應
-
- A6.7.1 早期讀響應
- A6.7.2 早期寫響應
- A6.8 有序寫觀察
- A7: 原子通路
-
- A7.1 單副本原子性大小
-
- A7.1.1 多副本寫原子性
- A7.2 獨占通路
-
- A7.2.1 獨占通路流程
- A7.2.2 從管理器的角度看獨占通路
- A7.2.3 從下屬的角度看獨占通路
- A7.2.4 獨占通路限制
- A7.2.5 對獨占通路的響應
- A7.3 鎖定通路
- A7.4 原子接入信令
-
- A7.4.1 遺留問題
- A8: AMBA 4 附加信号
-
- A8.1 服務品質(QoS)信号
-
- A8.1.1 QoS接口信号
- A8.1.2 管理器考慮事項
- A8.1.3 系統考慮
- A8.2 多區域信号
-
- A8.2.1 附加接口信号
- A8.3 使用者定義的信号
-
- A8.3.1 使用者定義的信号配置
- A8.3.2 信号
- A8.3.3 使用注意事項
- A9: 預設信号和互操作性
-
- A9.1 互操作性原則
- A9.2 主要接口類别
-
- A9.2.1 讀/寫接口
- A9.2.2 隻讀接口
- A9.2.3 隻寫接口
- A9.2.4 記憶體從屬和外設從屬
- A9.3 預設信号值
-
- A9.3.1 管理器位址
- A9.3.2 從屬位址
- A9.3.3 記憶體從屬
- A9.3.4 寫事務
- A9.3.5 讀事務
- A9.3.6 響應信号
- A9.3.7 非安全和安全通路
Part A: AMBA AXI 協定規範
A1: 介紹
A1.1 AXI架構
AXI協定基于突發,定義了五個獨立的事務通道:
- 讀位址,信号名稱以AR開頭。
- 讀資料,信号名稱以R開頭。
- 寫位址,信号名稱以AW開頭。
- 寫資料,信号名稱以W開頭。
- 寫響應,信号名稱以B開頭。
圖A1-1顯示了寫事務如何使用寫位址、寫資料和寫響應通道。
圖A1-2顯示了讀事務如何使用讀位址和讀資料通道。
1. 通道定義
五個獨立通道中的每一個都由一組資訊信号以及提供雙向握手機制的
VALID
和
READY
信号組成。
資訊源使用
VALID
信号來顯示通道上何時有有效的位址、資料或控制資訊。目的地使用
READY
信号顯示何時可以接受資訊。讀資料通道和寫資料通道都包括一個
LAST
信号,以訓示事務中最終資料項的傳輸。
讀寫位址通道:讀寫事務都有自己的位址通道。适當的位址通道承載了事務所需的所有位址和控制資訊。
讀資料通道:讀取資料通道從管理者的下屬處帶來讀取的資料和讀取的響應資訊,包括:
- 資料總線,可以是8、16、32、64、128、256、512或1024位寬。
- 訓示讀取事務完成狀态的讀取響應信号。
寫資料通道:寫資料通道将寫資料從管理器傳送到從屬裝置,包括:
- 資料總線,可以是8、16、32、64、128、256、512或1024位寬。
- 針對每八個資料位即一個位元組的通道選通信号,訓示有效的資料位元組。
寫資料通道資訊始終被視為緩沖的,是以管理器可以執行寫事務,而無需從屬确認以前的寫事務。
寫響應通道:下屬使用寫響應通道來響應寫事務。所有寫事務都需要寫響應通道上的完成信令。
2. 接口和互連
一個典型的系統由幾個管理器和從屬裝置組成,它們通過某種形式的互連連接配接在一起,如圖A1-3所示。
大多數系統使用三種互連拓撲之一:
- 共享位址和資料總線
- 共享位址總線和多條資料總線
- 多層,具有多條位址和資料總線
在大多數系統中,位址通道帶寬要求明顯低于資料通道帶寬要求。這種系統可以通過使用具有多條資料總線的共享位址總線來實作并行資料傳輸,進而在系統性能和互連複雜性之間實作良好的平衡。
3. 寄存器切片
每個AXI信道僅在一個方向上傳輸資訊,并且該架構不需要信道之間的任何固定關系。這些特性意味着寄存器片幾乎可以插入任何通道的任何點,代價是額外的延遲周期。
A2: 信号描述
A2.1 全局信号
表A2-1顯示了全球AXI信号。AXI3和AXI4協定使用這些信号。
所有信号都在全局時鐘的上升沿進行采樣。
A2.2 寫位址通道信号
表A2-2顯示了AXI寫位址通道信号。除非另有說明,AXI3和AXI4使用這些信号。
A2.3 寫資料通道信号
表A2-3顯示了AXI寫資料通道信号。除非另有說明,AXI3和AXI4使用這些信号。
A2.4 寫響應通道信号
表A2-4顯示了AXI寫響應通道信号。除非另有說明,AXI3和AXI4使用這些信号。
A2.5 讀位址通道信号
表A2-5顯示了AXI讀位址通道信号。除非另有說明,AXI3和AXI4使用這些信号。
A2.6 讀資料通道信号
表A2-6顯示了AXI讀取資料通道信号。除非另有說明,AXI3和AXI4使用這些信号。
A3: 單接口要求
A3.1 時鐘和複位
本節描述實作AXI全局時鐘和複位信号
ACLK
和
ARESETn
的要求。
1. 時鐘
每個AXI接口都有一個時鐘信号
ACLK
。所有輸入信号都在
ACLK
的上升沿采樣。所有輸出信号變化隻能發生在
ACLK
的上升沿之後。在管理器和從屬接口上,輸入和輸出信号之間必須沒有組合路徑。
2. 複位
AXI協定使用單個低電平有效複位信号
ARESETn
。複位信号可以異步置位,但去置位隻能與
ACLK
的上升沿同步。
複位期間,以下接口要求啟用:
- 管理者接口必須驅動
,ARVALID
和AWVALID
LOW。WVALID
- 從屬接口必須驅動
和RVALID
LOW。BVALID
- 所有其他信号可以驅動到任何值
複位後,允許管理者開始驅動
ARVALID
、
AWVALID
或
WVALID
高電平的最早時間點是在
ARESETn
設定為高電平後的
ACLK
上升沿。圖A3-1顯示了複位後最早的一點,即
ARVALID
、
AWVALID
或
WVALID
可以被驅動為高電平。
A3.2 基本讀寫事務(握手)
1. 握手過程
所有五個事務通道都使用相同的
VALID
/
READY
握手過程來傳輸位址、資料和控制資訊。這種雙向流量控制機制意味着管理者和從屬都可以控制資訊在管理者和從屬之間移動的速度。信号源産生
VALID
信号,訓示位址、資料或控制資訊何時可用。目的地産生
READY
信号,表示它可以接受資訊。隻有當
VALID
和
READY
都為高電平時,傳輸才會發生。在管理器和從屬的接口上,輸入和輸出信号之間必須沒有組合路徑。圖A3-2至圖A3-4顯示了握手過程的示例。
如圖A3-2所示,源在T1之後提供資訊,并斷言
VALID
信号。目的地在T2之後斷言
READY
信号。源必須保持其資訊穩定,直到在T3傳輸發生,此時該斷言被識别。
不允許源在斷言
VALID
之前等待,直到
READY
被斷言。當
VALID
被置位時,它必須保持置位,直到某一時鐘上升沿,此時
VALID
和
READY
都被置位,握手發生。
在圖A3-3中,目的地在T1之後,位址、資料或控制資訊
VALID
之前斷言
READY
。這個斷言表明它可以接受這個資訊。消息來源提供了該資訊,并在T2之後斷言
VALID
,然後傳輸發生在T3,此時該斷言被識别。在這種情況下,轉移發生在單個循環中。
在斷言相應的
READY
之前,目的地被允許等待
VALID
被斷言。如果置位了
READY
,則允許在
VALID
置位之前取消置位
READY
。
在圖A3-4中,源和目的地碰巧都表示它們可以在T1之後傳輸位址、資料或控制資訊。在這種情況下,傳輸發生在可以識别
VALID
和
READY
的斷言的時鐘上升沿。這些說法意味着轉移發生在T2。
2. 通道信号要求
寫位址通道:
AWREADY
的預設狀态可以是HIGH或LOW。本規範建議預設狀态為HIGH。 當
AWREADY
為HIGH時,下屬必須能夠接受提供給它的任何有效位址。本規範不建議預設
AWREADY
狀态為LOW,因為它強制傳輸至少需要兩個周期,一個周期斷言
AWVALID
,另一個周期斷言
AWREADY
。
寫資料通道:
WREADY
的預設狀态可以是HIGH,但前提是從屬端始終可以在一個周期内接受寫資料。管理器在驅動突發中的最終寫傳輸時,必須斷言
WLAST
信号。本規範建議将非活動位元組通道的
WDATA
驅動為零。
寫響應通道:
BREADY
的預設狀态可以是HIGH,但前提是管理器始終可以在單個周期内接受寫響應。
讀位址通道:
ARREADY
的預設狀态可以是HIGH或LOW。本規範建議預設狀态為HIGH。 當
ARREADY
為HIGH,下屬必須能夠接受任何提供給它的有效位址。本規範不推薦預設的
ARREADY
值為低,因為它強制傳輸至少需要兩個周期,一個周期斷言
ARVALID
,另一個周期斷言
ARREADY
。
讀資料通道:
RREADY
的預設狀态可以是HIGH,但前提是管理器在啟動讀取事務時能夠立即接受讀取資料。當從屬端驅動突發中的最終讀傳輸時,它必須聲明
RLAST
信号。本規範建議将非活動位元組通道的
RDATA
驅動為零。
A3.3 通道之間的關系(握手依賴性)
1. 信道握手信号之間的依賴性
- 發送資訊的AXI接口的
信号不得依賴于接收該資訊的AXI接口的VALID
信号。READY
- 正在接收資訊的AXI接口可以等到檢測到
信号後,再斷言其相應的VALID
信号。READY
在依賴性圖中,單箭頭指向可以在箭頭開始處的信号之前或之後斷言的信号。雙向箭頭指向隻有在箭頭開始處的信号有效後才能有效的信号。
讀事務依賴性:
- 管理器不得在斷言
之前等待下屬斷言ARVALID
。ARREADY
- 下屬可以在斷言
之前等待ARREADY
被斷言。ARVALID
- 下屬可以在
被斷言之前斷言ARVALID
。ARREADY
- 下屬必須等待
和ARVALID
均被置位,然後才能置位ARREADY
以訓示有效資料可用。RVALID
- 下屬不得在斷言
之前等待管理器斷言RVALID
。RREADY
- 管理器可以在斷言
之前等待RREADY
被斷言。RVALID
- 管理器可以在
被斷言之前斷言RREADY
。RVALID
寫事務依賴性:
- 在斷言
或AWVALID
之前,管理者不得等待下屬斷言WVALID
或AWREADY
。WREADY
- 下屬可以等待
或AWVALID
,或者兩者均斷言,然後斷言WVALID
。AWREADY
- 下屬可以在
或AWVALID
被斷言之前斷言WVALID
。AWREADY
- 下屬可以等待
或AWVALID
,或者兩者均斷言,然後斷言WVALID
。WREADY
- 下屬可以在
或AWVALID
被斷言之前斷言WVALID
。WREADY
- 下屬必須等待
和WVALID
均被斷言,然後才能斷言WREADY
。BVALID
- 下屬還必須等待
被斷言,然後才能斷言WLAST
。需要等待,因為寫響應BVALID
必須在寫事務的最後一次資料傳輸後發出信号。BRESP
- 下屬不得在斷言
之前等待管理者斷言BVALID
。BREADY
- 管理者可以等待
,然後再斷言BVALID
。BREADY
- 管理者可以在
被斷言之前斷言BVALID
。BREADY
A3.4 事務結構
A3.4.1 位址結構(突發長度,尺寸,類型定義及位址計算)
AXI協定是基于突發的。管理器通過将控制資訊和事務中第一個位元組的位址發送給下屬來開始每個突發。随着突發的進行,下屬必須計算突發中後續傳輸的位址。突發不能跨越4KB位址邊界。
突發長度
突發長度由下式指定:
-
用于讀傳輸ARLEN[7:0]
-
用于寫傳輸AWLEN[7:0]
對于所有突發類型,AXI3支援1-16個傳輸的突發長度。
AXI4将對INCR突發類型的突發長度支援擴充到1-256次傳輸。AXI4中對所有其他突發類型的支援保持在1-16次傳輸。對于包裝突發,突發長度必須是2、4、8或16。
AXI3的突發長度定義為:Burst_Length = AxLEN[3:0] + 1
為了适應AXI4中INCR突發類型的擴充突發長度,AXI4的突發長度定義為:Burst_Length = AxLEN[7:0] + 1
在AXI4中,INCR突發類型和長度大于16的事務可以轉換為多個更小的突發,即使事務屬性訓示該事務不可修改。
突發尺寸
突發中每次資料傳輸(或節拍)要傳輸的最大位元組數由下式指定:
-
用于讀傳輸ARSIZE[2:0]
-
用于寫傳輸 如果AXI總線比突發大小寬,AXI接口必須根據傳輸位址确定每次傳輸使用資料總線的哪些位元組通道。任何傳輸的大小不得超過事務中任一代理的資料總線寬度。AWSIZE[2:0]
突發類型
AXI協定定義了三種突發類型:
- FIXED:突發中每次傳輸的位址都是相同的。 對于突發中的所有節拍,有效的位元組通道是恒定的。然而,在這些位元組通道中,對于突發中的每個節拍,
斷言的實際位元組可能不同。這種突發類型用于對同一位置的重複通路,例如加載或清空先進先出。WSTRB
- INCR:遞增。在遞增突發中,突發中每次傳輸的位址是前一次傳輸位址的增量。 增量值取決于傳輸的大小。例如,對于對齊的起始位址,大小為4位元組的突發中每次傳輸的位址是前一個位址加4。這種突發類型用于通路正常的順序存儲器。
- WRAP:一個換行突發類似于一個遞增突發,不同的是,如果達到位址上限,位址會繞到一個較低的位址。 這種突發類型用于高速緩存行通路。
突發類型由下式指定:
-
用于讀傳輸ARBURST[1:0]
-
用于寫傳輸AWBURST[1:0]
突發位址
本節提供了确定突發内傳輸的位址和位元組通道的方法。這些方程使用以下變量:
Start_Address——由管理器釋出的開始位址。
Number_Bytes——每次資料傳輸的最大位元組數。
Data_Bus_Bytes——資料總線中的位元組通道數。
Aligned_Address——開始位址的對齊版本。
Burst_Length——突發内資料傳輸的總數。
Address_N——突發中傳輸N的位址。對于突發中的第一次傳輸,N是1。
Wrap_Boundary——換行突發中的最低位址。
Lower_Byte_Lane——傳輸的最低位址位元組的位元組通道。
Upper_Byte_Lane——傳輸的最高位址位元組的位元組通道。
INT(x)——x的向下舍入整數值。
這些等式确定突發内的傳輸位址:
Start_Address = AxADDR
Number_Bytes = 2 ^ AxSIZE
Burst_Length = AxLEN + 1
Aligned_Address = (INT(Start_Address / Number_Bytes)) × Number_Bytes
該等式确定突發中第一次傳輸的位址:
Address_1 = Start_Address
對于INCR突發,以及對于位址未被換行的換行突發,該等式确定突發中第一次傳輸之後的任何傳輸的位址:
Address_N = Aligned_Address + (N – 1) × Number_Bytes
對于換行突發,換行邊界變量定義換行邊界:
Wrap_Boundary = (INT(Start_Address / (Number_Bytes × Burst_Length)))×
(Number_Bytes × Burst_Length)
對于換行突發,如果 Address_N = Wrap_Boundary + (Number_Bytes × Burst_Length),則:
使用以下公式計算目前傳輸:
Address_N = Wrap_Boundary
使用以下公式計算任何後續傳輸:
Address_N = Start_Address + ((N – 1) × Number_Bytes) –
(Number_Bytes × Burst_Length)
這些等式決定了突發中第一次傳輸使用的位元組通道:
Lower_Byte_Lane = Start_Address – (INT(Start_Address / Data_Bus_Bytes)) ×
Data_Bus_Bytes
Upper_Byte_Lane = Aligned_Address + (Number_Bytes – 1) –
(INT(Start_Address / Data_Bus_Bytes)) × Data_Bus_Bytes
這些等式決定了突發中第一次傳輸後所有傳輸要使用的位元組通道:
Lower_Byte_Lane = Address_N – (INT(Address_N / Data_Bus_Bytes)) ×
Data_Bus_Bytes
Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1
資料在以下位置傳輸:
DATA((8 × Upper_Byte_Lane) + 7: (8 × Lower_Byte_Lane))
事務容器描述了如果位址對齊并且聲明了選通脈沖,該事務中可以通路的所有位元組:
Container_Size = Number_Bytes x Burst_Length
對于INCR突發:
Container_Lower = Aligned_Address
Container_Upper = Aligned_Address + Container_Size
對于WRAP突發:
Container_Lower = Wrap_Boundary
Container_Upper = Wrap_Boundary + Container_Size
A3.4.2 傳輸的僞代碼描述
// DataTransfer()
// ==============
DataTransfer(Start_Address, Number_Bytes, Burst_Length, Data_Bus_Bytes,
Mode, IsWrite)
// Data_Bus_Bytes is the number of 8-bit byte lanes in the bus
// Mode is the AXI transfer mode
// IsWrite is TRUE for a write, and FALSE for a read
assert Mode IN {FIXED, WRAP, INCR};
// Variable for current address
addr = Start_Address;
Aligned_Address = (INT(addr/Number_Bytes) * Number_Bytes);
// Check whether addr is aligned to nbytes
aligned = (Aligned_Address == addr);
// Maximum total data transaction size
dtsize = Number_Bytes * Burst_Length;
if mode == WRAP then
Lower_Wrap_Boundary = (INT(addr/dtsize) * dtsize);
// addr must be aligned for a wrapping burst
Upper_Wrap_Boundary = Lower_Wrap_Boundary + dtsize;
for n = 1 to Burst_Length
Lower_Byte_Lane = addr-(INT(addr/Data_Bus_Bytes))*Data_Bus_Bytes;
if aligned then
Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes - 1
else
Upper_Byte_Lane = Aligned_Address + Number_Bytes - 1
- (INT(addr/Data_Bus_Bytes)) * Data_Bus_Bytes;
// Peform data transfer
if IsWrite then
dwrite(addr, low_byte, high_byte)
else
dread(addr, low_byte, high_byte);
// Increment address if necessary
if mode != FIXED then
if aligned then
addr = addr + Number_Bytes;
if mode == WRAP then
// WRAP mode is always aligned
if addr >= Upper_Wrap_Boundary then
addr = Lower_Wrap_Boundary;
else
addr = Aligned_Address + Number_Bytes;
// All transfers after the first are aligned
aligned = TRUE;
return;
A3.4.3 正常事務
一個事務有許多突發、大小和長度選項。然而,一些接口和事務類型可能隻使用這些選項的一個子集。如果從屬元件附加到僅使用事務選項子集的管理器,則可以使用簡化的解碼邏輯進行設計。
定義了正常屬性,以辨別符合以下标準的事務:
- AxLEN是1、2、4、8或16。
- 如果AxLEN大于1,AxSIZE與資料總線寬度相同。
- AxBURST是INCR或WRAP,而不是FIXED。
- AxADDR與INCR事務的事務容器對齊。
- 對于WRAP事務,AxADDR與AxSIZE對齊。
Regular_Transactions_Only屬性用于定義管理器是否僅釋出正常類型事務,以及下屬是否僅支援正常事務,如果沒有聲明正常事務,則認為它是FALSE:
TRUE Only Regular transactions are supported.
FALSE All legal combinations of AxBURST, AxSIZE, and AxLEN are supported.
A3.4.4 資料讀寫結構(寫選通,窄傳輸,大小端,非對齊)
1. 寫選通
WSTRB[n:0]
信号為高電平時,指定包含有效資訊的資料總線位元組通道。對于寫資料總線的每8位有一個寫選通,是以
WSTRB[n]
對應于
WDATA[(8n)+7: (8n)]
。
管理器必須確定隻對包含有效資料的位元組通道的寫選通為高。
當
WVALID
為低電平時,寫選通脈沖可以取任何值,盡管本規範建議将它們驅動為低電平或保持在以前的值。
2. 窄傳輸
當管理器生成的傳輸比其資料總線窄時,位址和控制資訊決定傳輸使用的位元組通道:
- 在遞增或換行突發中,在突發的每個節拍上使用不同的位元組通道。
- 在固定突發中,每個節拍使用相同的位元組通道。
圖A3-8和圖A3-9給出了位元組通道使用的兩個例子。陰影單元格表示未傳輸的位元組。
3. 位元組不變性
為了在單個記憶體空間中通路混合端資料結構,AXI協定使用位元組不變的端序方案。 位元組不變的端序意味着,對于資料結構中的任何多位元組元素:
- 元素使用相同的連續位元組記憶體,而不考慮資料的字元順序。
- 端序決定了記憶體中這些位元組的順序,這意味着它決定了記憶體中的第一個位元組是元素的最高有效位元組(MSB)還是最低有效位元組(LSB)。
- 任何向一個位址的位元組傳輸都會将同一條資料總線上的8位資料傳遞到同一位址位置,而不考慮它所屬的任何較大資料元素的字元順序。
隻有一個傳輸寬度的元件必須将其位元組通道連接配接到資料總線的相應位元組通道。支援多種傳輸寬度的元件可能需要更複雜的接口來轉換自然不是位元組不變的接口。
大多數小端元件可以直接連接配接到位元組不變的接口。隻支援大端傳輸的元件需要一個用于位元組不變操作的轉換函數。
圖A3-10和圖A3-11顯示了存儲在寄存器和存儲器中的32位數字0x0A0B0C0D。
圖A3-10顯示了大端位元組不變的資料結構的一個例子。在這種結構中:
- 資料的最高有效位元組(MSB)0x0A存儲在寄存器的MSB位置。
- 資料的MSB存儲在位址最低的存儲位置。
- 其他資料位元組按重要性降序排列。
圖A3-11顯示了小端位元組不變的資料結構的一個例子。在這種結構中:
- 資料的最低有效位元組(LSB)為0x0D,存儲在寄存器的LSB位置。
- 資料的LSB存儲在位址最低的存儲位置。
- 其他資料位元組按重要性增序排列。
圖A3-10和圖A3-11中的例子表明,位元組不變性確定了大端和小端結構可以共存于單個記憶體空間中而不會損壞。 圖A3-12顯示了一個需要位元組不變通路的資料結構的例子。在這個例子中,頭字段使用小端順序,有效載荷使用大端順序。
例如,在這種結構中,資料項是一個兩位元組的小端元素,這意味着它的最低位址是它的最低有效位。位元組不變性的使用確定了對有效載荷的大端通路不會破壞小端元素。
4. 非對齊的傳輸
AXI支援非對齊的傳輸。對于任何由大于1位元組的資料傳輸組成的突發,通路的第一個位元組可能與自然位址邊界不對齊。例如,從位元組位址0x1002開始的32位資料包與自然的32位位址邊界不對齊。
管理器可以:
- 使用低位位址線發出未對齊起始位址的信号。
- 提供一個對齊的位址,并使用位元組通道選通向未對齊的起始位址發送信号。
圖A3-13顯示了在32位總線上遞增突發的示例,包括對齊和未對齊的32位傳輸。圖中的每一行代表一次傳輸,陰影單元格表示未傳輸的位元組。
圖A3-14顯示了在64位總線上遞增突發的示例,包括對齊和未對齊的32位傳輸。圖中的每一行代表一次傳輸,陰影單元格表示未傳輸的位元組。
圖A3-15顯示了一個在64位總線上進行32位對齊傳輸的換行突發的示例。圖中的每一行代表一次傳輸,陰影單元格表示未傳輸的位元組
A3.4.5 讀寫響應結構
AXI協定為讀和寫事務提供響應信令:
- 對于讀事務,來自下屬的響應資訊在讀資料通道上發出信号。
- 對于寫事務,響應資訊在寫響應通道上發出信号。
響應通過以下方式發出信号:
-
,用于讀傳輸。RRESP[1:0]
-
,用于寫傳輸。BRESP[1:0]
響應如下:
OKAY——正常通路成功。表示正常通路已成功。也可以表示獨占通路失敗。
EXOKAY——獨家通路成功。表示獨占通路的讀或寫部分已經成功。
SLVERR——從屬錯誤。當通路成功到達下屬,但下屬希望向發起管理器傳回錯誤情況時使用。
DECERR——解碼錯誤。通常由互連元件生成,用于訓示事務位址沒有下屬。
表A3-5顯示了
RRESP
和
BRESP
信号的編碼。
對于寫事務,會針對整個突發發出單個響應信号,而不是針對突發中的每個資料傳輸。
在讀事務中,從屬端可以用信号通知突發中不同傳輸的不同響應。例如,在16次讀取傳輸的突發中,從屬端可能會為其中15次傳輸傳回一個ok響應,為其中一次傳輸傳回一個SLVERR響應。
該協定規定,即使報告了錯誤,也必須執行所需數量的資料傳輸。例如,如果從下屬請求讀取八次傳輸,但下屬有錯誤情況,則下屬必須執行八次資料傳輸,每次都有錯誤響應。如果從屬裝置給出單個錯誤響應,突發的剩餘部分不會被取消。
1. OKAY,正常通路成功
正常響應表示以下任一情況:
- 正常通路的成功。
- 獨占通路失敗。
- 對不支援獨占通路的下屬的獨占通路。
OKAY是大多數事務的響應。
2. EXOKAY,獨占通路成功
EXOKAY的響應表明獨占通路成功。該響應隻能作為對獨占讀或寫的響應給出。
3. SLVERR,從屬錯誤
SLVERR響應表明事務不成功。
為了簡化系統監控和調試,本規範建議錯誤響應僅用于錯誤情況,而不用于發出正常預期事件的信号。從屬錯誤條件的示例有:
- FIFO或buffer溢出或欠載運作條件
- 嘗試不支援的傳輸大小
- 試圖對隻讀位置進行寫通路
- 下屬中的逾時條件
- 試圖通路禁用或斷電的功能
4. DECERR,解碼錯誤
DECERR響應表示互連無法成功解碼從屬通路。
如果互連不能成功解碼從屬通路,它必須傳回DECERR響應。本規範建議互連将通路路由到預設的從屬,并且預設的從屬傳回DECERR響應。
AXI協定要求完成事務的所有資料傳輸,即使出現錯誤情況。給出DECERR響應的任何元件都必須滿足這一要求。
A4: 事務屬性
A4.1 事務類型和屬性
下屬分為以下兩類:
記憶體從屬
記憶體從屬需要正确處理所有事務類型。
外設從屬
外圍裝置下屬有一個實作定義的通路方法。通常,通路方法在元件資料表中定義,該資料表描述了下屬正确處理的事務類型。
任何對外圍從屬裝置的通路,如果不是實作定義的通路方法的一部分,都必須按照協定完成。然而,當進行了這樣的通路時,不要求外圍從屬裝置繼續正确操作。它隻需要繼續以符合協定的方式完成進一步的事務。
AXI協定定義了一組支援記憶體和外圍從屬裝置的事務屬性。
ARCACHE
和
AWCACHE
信号指定事務屬性。他們控制:
- 事務如何在系統中進行。
- 任何系統級緩存如何處理事務。
A4.2 AXI3記憶體屬性信号
在AXI3中,
AxCACHE[3:0]
信号指定事務的Bufferable, Cacheable和Allocate屬性。表A4-1顯示了AxCACHE編碼。
AxCACHE[0],Bufferable( B )位
當該位被置位時,互連或任何元件可以将事務延遲任意數量的周期到達其最終目的地。
AxCACHE[1],Cacheable( C )位
當該位被取消置位時,禁止配置設定事務。當該位被置位時:
- 允許配置設定事務。RA和WA給出了額外的提示資訊。
- 最終目的地的事務特征不必與原始事務的特征相比對。對于寫操作,這意味着幾個不同的寫操作可以合并在一起。對于讀取,這意味着可以預取一個位置的内容,或者單次讀取的值可以用于多個讀取事務。
AxCACHE[2],Read-Allocate( RA )位
當該位被置位時,建議對事務進行讀配置設定,但不是強制性的。如果C位被取消置位,則RA位不得置位。
AxCACHE[3],Write-Allocate( WA )位
當該位被置位時,建議對事務進行寫配置設定,但不是強制性的。如果C位被取消置位,則不得置位。
A4.3 AXI4更改記憶體屬性信号
AXI4對AXI3記憶體屬性信号進行了以下更改:
-
位被重命名為可修改位。AxCACHE[1]
- 為不可修改的事務定義了順序要求。
- 更新了讀配置設定和寫配置設定的含義。
A4.3.1 AxCACHE[1],可修改
在AXI4中,
AxCACHE[1]
位是可修改位。高電平時,可修改表示可以修改事務的特征。當可修改為低時,事務不可修改。
不可修改的事務
不可修改的事務通過将
AxCACHE[1]
設定為低來訓示。不可修改的事務不能拆分為多個事務或與其他事務合并。在不可修改的事務中,表A4-2中顯示的參數不得更改。
AxCACHE
屬性隻能修改為将事務從Bufferable轉換為Non-bufferable。不允許對
AxCACHE
進行其他更改。可以修改事務ID和QoS。
突發長度大于16的不可修改事務可以拆分為多個事務。每個最終事務必須滿足本小節中給出的要求,除了:
- 突發長度減少。
- 适當調整生成的突發的位址。
不可修改的事務是獨占通路,如
AxLOCK
斷言所示,如果通路的位元組總數保持不變,則允許修改事務大小
AxSIZE
和事務長度
AxLEN
。
可修改的事務
可修改的事務通過斷言
AxCACHE[1]
來訓示。可以通過以下方式修改可修改的事務:
- 一個事務可以分解成多個事務。
- 多個事務可以合并成一個事務。
- 讀事務可以擷取比所需更多的資料。
- 寫事務可以通路比要求更大的位址範圍,使用
信号確定隻更新适當的位置。WSTRB
-
在每個生成的事務中,可以修改以下信号:
——傳輸位址
——突發大小AxADDR
——突發長度AxSIZE
——突發類型AxLEN
AxBURST
-
以下内容不得更改:
——鎖類型,
——保護類型,AxLOCK
AxPROT
可以修改記憶體屬性
AxCACHE
,但任何修改都必須確定其他元件對事務的可見性不會降低,方法是阻止事務傳播到所需點,或者更改在緩存中查找事務的需求。對于同一位址範圍的所有事務,對記憶體屬性的任何修改都必須一緻。可以修改事務ID和QoS。
不允許對以下事務進行修改:
- 導緻對不同于原始事務的4k位元組位址空間的通路。
- 導緻對單副本原子性大小區域的單次通路作為多次通路執行。
A4.3.2 Read-Allocate和Write-Allocate的更新含義
在AXI4中,Read-Allocate和Write-Allocate位的含義被更新,使得一個位訓示為事務發生的配置設定,另一個位訓示由于另一個事務可能已經進行了配置設定。
對于讀事務,寫配置設定位被重新定義,以訓示:
- 由于寫事務,該位置可能先前已在緩存中配置設定(如AXI3定義)。
- 由于另一個管理器的操作(額外的AXI4定義),該位置可能已在緩存中配置設定。
對于寫事務,讀配置設定位被重新定義,以訓示:
- 由于讀事務,該位置可能先前已在緩存中配置設定(如AXI3定義)。
- 由于另一個管理器的操作(額外的AXI4定義),該位置可能已在緩存中配置設定。
這些變化意味着:
- 如果
的值不是AxCACHE[3:2]
,則必須在緩存中查找事務。0b00
- 如果
的值為AxCACHE[3:2]
,則不需要在緩存中查找事務。0b00
A4.4 記憶體類型
AXI4協定為
AxCACHE
編碼所辨別的記憶體類型引入了新的名稱。表A4-5顯示了AXI4
AxCACHE
編碼和相關的記憶體類型。一些記憶體類型在AXI3中有不同的編碼,這些編碼顯示在括号中。
同一存儲器類型在讀通道和寫通道上可以有不同的編碼。這些編碼提供了與AXI3
AxCACHE
定義的向後相容性。在AXI4中,對特定記憶體類型使用多個
AxCACHE
值是合法的。表A4-5顯示了首選的AXI4值,括号中是合法的AXI3值。
A4.4.1 記憶體類型要求
本節指定了每種記憶體類型所需的行為。
裝置 Non-bufferable
裝置不可緩沖記憶體所需的行為是:
- 必須從最終目的地獲得寫響應。
- 必須從最終目的地擷取讀資料。
- 事務不可修改。
- 不得預取讀。不得合并寫。
裝置 Bufferable
裝置可緩沖存儲器類型所需的行為是:
- 寫響應可以從中間點獲得。
- 必須按照事務緩沖中的定義,及時使寫入事務在最終目的地可見。
- 必須從最終目的地擷取讀資料。
- 事務不可修改。
- 不得預讀取。不得合并寫入。
對于讀取事務,裝置不可緩沖和裝置可緩沖記憶體類型所需的行為沒有差別。
正常 Non-cacheable Non-bufferable
正常不可緩存不可緩沖記憶體類型所需的行為是:
- 必須從最終目的地獲得寫響應。
- 必須從最終目的地擷取讀資料。
- 事務是可修改的。
- 可以合并寫入。
正常 Non-cacheable Bufferable
正常不可緩存可緩沖記憶體類型所需的行為是:
- 寫響應可以從中間點獲得。
- 必須按照事務緩沖中的定義,及時使寫入事務在最終目的地可見。沒有機制來确定寫事務何時在其最終目的地可見。
-
讀取資料必須從以下任一來源獲得:
——最終目的地。
——正在向最終目的地前進的寫入事務。
如果讀取資料是從寫入事務獲得的:
——必須從最新版本的寫入中獲得。
——不得緩存資料以供以後讀取。
- 交易是可修改的。
- 可以合并寫入。
對于正常的不可緩存的可緩沖讀取,可以從仍在向最終目标前進的寫事務中擷取資料。這些資料與同時傳播到最終目的地的讀寫事務是無法區分的。以這種方式傳回的讀資料并不表示寫事務在最終目的地可見。
Write-Through No-Allocate
直寫不配置設定記憶體類型所需的行為是:
- 寫響應可以從中間點獲得。
- 必須按照交易緩沖中的定義,及時使寫入事務在最終目的地可見。沒有機制來确定寫事務何時在最終目的地可見。
- 讀取資料可以從中間緩存副本中獲得。
- 交易是可修改的。
- 讀取可以被預取。
- 可以合并寫入。
- 讀寫事務需要緩存查找。
- No-Allocate屬性是一個配置設定提示,也就是說,它向記憶體系統建議,出于性能原因,不配置設定這些事務。但是,不禁止配置設定讀寫事務。
Write-Through Read-Allocate
直寫讀配置設定記憶體類型所需的行為與直寫不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 建議配置設定讀取事務。
- 不建議配置設定寫事務。
Write-Through Write-Allocate
直寫寫配置設定記憶體類型所需的行為與直寫不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 不建議配置設定讀取事務。
- 建議配置設定寫事務。
Write-Through Read 和 Write-Allocate
直寫讀取和寫配置設定記憶體類型所需的行為與直寫不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 建議配置設定讀取事務。
- 建議配置設定寫事務。
Write-Back No-Allocate
回寫不配置設定記憶體類型所需的行為是:
- 寫響應可以從中間點獲得。
- 不要求寫事務在最終目的地可見。
- 讀取資料可以從中間緩存副本中獲得。
- 交易是可修改的。
- 讀取可以被預取。
- 可以合并寫入。
- 讀寫事務需要緩存查找。
- No-Allocate屬性是一個配置設定提示,也就是說,它向記憶體系統建議,出于性能原因,不配置設定這些事務。但是,不禁止配置設定讀寫事務。
Write-Back Read-Allocate
回寫讀取配置設定記憶體類型所需的行為與回寫不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 建議配置設定讀取事務。
- 不建議配置設定寫事務。
Write-Back Write-Allocate
寫回寫配置設定記憶體類型所需的行為與寫回不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 不建議配置設定讀取事務。
- 建議配置設定寫事務。
Write-Back Read 和 Write-Allocate
回寫讀和寫配置設定記憶體類型所需的行為與回寫不配置設定記憶體相同。但是在這種情況下,出于性能原因,配置設定提示是:
- 建議配置設定讀取事務。
- 建議配置設定寫事務。
A4.5 不比對的記憶體屬性
通路同一記憶體區域的多個代理可以使用不比對的記憶體屬性。 但是,為了功能的正确性,必須遵守以下規則:
-
通路同一記憶體區域的所有管理人員必須對該記憶體區域在任何層級的可緩存性有一緻的看法。适用的規則是:
Address region not Cacheable 所有管理器必須在
AxCACHE[3:2]
都被取消聲明的情況下使用事務。
Address region Cacheable 所有管理器必須使用斷言了
的事務。AxCACHE[3:2]
- 不同的管理器可以使用不同的配置設定提示。
- 如果尋址區域是正常的不可緩存區域,任何管理器都可以使用裝置記憶體事務來通路它。
- 如果尋址區域具有可緩沖屬性,任何管理器都可以使用不允許可緩沖行為的事務來通路它。
A4.5.1 更改記憶體屬性
特定記憶體區域的屬性可以從一種類型更改為另一種不相容的類型。 例如,屬性可以從直寫可緩存更改為正常不可緩存。這種改變需要一個合适的過程來執行。通常,會執行以下過程:
- 所有管理器都停止通路該區域。
- 單個管理器執行任何必需的緩存維護操作。
- 所有管理器使用新屬性重新開始通路記憶體區域。
A4.6 事務緩沖
對以下記憶體類型的寫通路不需要最終目的地的事務響應,但要求寫事務在最終目的地及時可見:
- 裝置 Bufferable
- 正常 Non-cacheable Bufferable
- Write-Through
對于寫事務,所有三種記憶體類型都需要相同的行為。對于讀取事務,所需的行為如下:
- 對于裝置Bufferable存儲器,讀取資料必須從最終目的地獲得。
- 對于正常的Non-cacheable Bufferable存儲器,讀取資料必須從最終目的地或正在向最終目的地進行的寫入事務中擷取。
- 對于Write-Through存儲器,可以從中間緩存副本中擷取讀取資料。
除了確定寫事務及時向最終目的地發展之外,中間緩沖區還必須表現如下:
- 可以響應事務的中間緩沖區必須確定,随着時間的推移,任何對正常不可緩存緩沖區的讀取事務都會向其目的地傳播。這種傳播意味着,在轉發讀事務時,嘗試的轉發不能無限期地繼續,用于轉發的任何資料也不能無限期地持續。該協定沒有定義任何機制來确定用于轉發讀取事務的資料可以保留多長時間。然而,在這種機制中,讀取資料的動作不能重置資料逾時周期。(如果沒有這個要求,繼續輪詢同一個位置可以防止緩沖區中的讀取逾時,進而防止讀取向其目的地前進。)
- 可以儲存和合并寫事務的中間緩沖區必須確定事務不會無限期地保留在其緩沖區中。例如,合并寫事務不能重置決定寫何時被排向其最終目的地的機制。(如果沒有此要求,對同一位置的連續寫入可以防止緩沖區中儲存的寫入逾時,進而防止寫入向其目标前進。)
A4.7 通路權限
AXI提供通路許可信号,可用于防範非法事務:
-
定義了讀取通路的通路權限。ARPROT[2:0]
-
定義了寫通路的通路權限。AWPROT[2:0]
表A4-6顯示了
AxPROT[2:0]
編碼。
保護屬性包括:
無特權的或有特權的:AXI管理器可能支援多種級别的操作權限,并将這種權限概念擴充到記憶體通路。
AxPROT[0]
将通路辨別為非特權或特權。
安全還是不安全:AXI管理器可能支援安全和非安全操作狀态,并将這種安全概念擴充到記憶體通路。
AxPROT[1]
将通路辨別為安全或非安全。
AxPROT[1]
可以被認為定義了兩個位址空間,一個安全位址空間和一個非安全位址空間。該信号可以被視為一個附加的位址位。必須正确處理安全和非安全位址空間之間的任何混淆。
指令或資料:該位表示事務是指令通路還是資料通路。AXI協定将這一迹象定義為一種暗示。它不是在所有情況下都準确,例如,當事務包含指令和資料項的混合時。本規範建議管理器将
AxPROT[2]
設定為低電平,以訓示資料通路,除非已知該通路是指令通路。
A4.8 遺留問題
AXI4對處理
AxCACHE
的一些記憶體屬性提出了額外的要求。在AXI4中,對同一下屬使用相同辨別的所有裝置事務必須互相排序。
A4.9 使用示例
本節給出了記憶體類型使用的示例。
A4.9.1 裝置記憶體類型的使用
該規範支援結合使用裝置Non-bufferable和裝置Bufferable記憶體類型,以強制寫入事務到達其最終目的地,并確定發出事務的管理器知道該事務何時對所有其他管理器可見。
标記為裝置Bufferable的寫事務需要及時到達其最終目的地。但是,事務的寫響應可以由中間緩沖區發出信号。是以,送出請求的管理器無法知道該寫入何時對所有其他管理器可見。
如果管理器發出裝置Bufferable寫事務或寫事務流,然後是裝置Non-bufferable寫事務,并且所有事務都使用相同的AXI辨別,則AXI排序要求會強制所有裝置Bufferable寫事務在對裝置Non-bufferable事務給出響應之前到達最終目的地。是以,對裝置Non-bufferable事務的響應表明所有事務對所有管理者都是可見的。
A5: 事務辨別符
A5.1 AXI事務辨別符
AXI協定包括AXI ID事務辨別符。管理器可以使用這些資訊來确定必須按順序傳回的單獨事務。
具有給定AXI辨別值的所有事務都必須保持有序,但是對具有不同辨別值的事務的排序沒有限制。單個實體端口可以通過充當多個邏輯端口來支援無序事務,每個邏輯端口都按順序處理事務。
通過使用AXI辨別,管理器可以釋出事務,而無需等待較早的事務完成。這可以提高系統性能,因為它支援事務的并行處理。
(不要求下屬或管理器使用AXI交易辨別。管理器和下屬可以一次處理一個事務。事務按照發出的順序進行處理。要求下屬響應從管理器處收到的AXI ID,反映相應
BID
或
RID
。)
A5.2 ID 信号
每個事務通道都有自己的事務辨別。表A5-1顯示了這些指定信号。
A5.2.1 讀資料排序
下屬必須確定任何傳回資料的
RID
值與它所響應的位址的
ARID
值相比對。
互連必須確定從一系列事務中讀取的資料具有相同的
ARID
值,目标是不同的下屬,管理器按照其釋出位址的順序接收這些資料。
讀取資料重新排序深度是從屬裝置中可以重新排序的未決位址的數量。按順序處理所有事務的下屬的讀取資料重新排序深度為1。讀取資料重新排序深度是一個靜态值,必須由從屬的設計者指定。管理器無法使用任何機制來确定下屬的讀取資料重新排序深度。
A5.2.2 寫資料排序
管理器必須以釋出事務位址的相同順序釋出寫資料。
組合來自不同管理器的寫事務的互連必須確定按位址順序轉發寫資料。AXI3允許不同辨別的寫資料交錯,但AXI4及更高版本不推薦使用。
A5.2.3 事務辨別符的互連使用
當管理器連接配接到互連時,互連會向該管理器端口唯一的
ARID
、
AWID
和
WID
辨別符追加額外的位。這有兩個效果:
- 管理人員不必知道其他管理人員使用什麼辨別值,因為互連通過将管理人員編号附加到原始辨別符上,使每個管理人員使用的辨別值都是唯一的。
- 下屬界面的ID辨別符比管理器界面的ID辨別符更寬。
對于讀資料,互連使用
RID
辨別符的附加位來确定讀資料去往哪個管理器端口。在将
RID
值傳遞到正确的管理器端口之前,互連會删除
RID
辨別符的這些位。
對于寫響應,互連使用
BID
辨別符的附加位來确定寫響應去往哪個管理器端口。互連在将
BID
值傳遞到正确的管理器端口之前移除
BID
辨別符的這些位。
A6: AXI排序模型
A6.1 AXI排序模式概述
AXI排序模型基于事務辨別符的使用,事務辨別符在
ARID
或
AWID
上發出信号。
具有相同辨別和目的地的同一通道上的事務請求保證保持有序。
具有相同辨別的事務響應按照送出請求的相同順序傳回。
排序模型不提供以下兩者之間的任何排序保證:
- 來自不同管理器的事務
- 讀寫事務
- 具有不同辨別的事務
- 到不同外設區域的事務
- 到不同記憶體位置的事務
如果管理器要求在沒有排序保證的事務之間排序,則管理器必須在發出第二個事務之前等待收到對第一個事務的響應。
A6.2 存儲位置和外圍區域
AMBA的位址映射由記憶體位置和外設區域組成。
記憶體位置具有以下所有屬性:
- 從記憶體位置讀取位元組會傳回寫入該位元組位置的最後一個值。
- 對記憶體位置位元組的寫入會将該位置的值更新為新值,該新值是通過後續讀取該位置獲得的。
- 讀取或寫入記憶體位置不會對任何其他記憶體位置産生副作用。
- 每個位置都有記憶體觀察保證。
- 記憶體位置的大小等于該元件的單副本原子性大小。
外圍區域具有以下所有屬性:
- 從外圍區域中的位址讀取不一定傳回寫入該位址的最後一個值。
- 對外圍區域位元組位址的寫入不一定會将該位址的值更新為後續讀取獲得的新值。
- 通路外圍區域内的位址可能會對該區域内的其他位址産生副作用。
- 每個地區都有外設觀察保證。
- 外圍區域的大小由實作定義,但必須包含在單個從屬元件中。
A6.3 事務和排序
事務是對一個或多個位址位置的讀取或寫入。這些位置由
AxADDR
和任何相關限定符(如
AxPROT
中的非安全位)決定。
- 排序保證僅在對同一存儲器位置或外圍區域的通路之間給出。
- 外圍區域的事務必須完全包含在該區域内。
- 跨越多個記憶體位置的事務有多個排序保證。
事務可以是“裝置”或“正常”類型:
Device:一種讀或寫操作,其中請求的
AxCACHE[1]
被取消聲明。裝置事務可用于通路外圍區域或記憶體位置。
Normal:一種讀或寫操作,其中請求斷言了
AxCACHE[1]
。正常事務用于通路記憶體位置,預計不會用于通路外圍區域。對外圍區域的正常通路必須以符合協定的方式完成,但結果是實作已定義。
寫事務可以是不可緩沖的,也可以是可緩沖的。有可能對可緩沖的寫入發送早期響應。
- 不可緩沖的寫操作取消聲明了
。AWCACHE[0]
- 緩沖寫入斷言了
。AWCACHE[0]
A6.4 觀察和完成定義
對于對外圍區域的通路,當裝置讀或寫通路DRW1先于DRW2到達從屬元件時,裝置讀或寫通路DRW1被裝置讀或寫通路DRW2觀察到。
對于對記憶體位置的通路,以下所有條件都适用:
- 如果W2在W1之後生效,寫W1由寫W2觀察。
- 當W2在W3之後時,如果R1從寫W3傳回資料,則寫W2觀察到讀R1。
- 當W3在W1之後時,如果R2從W1或寫W3傳回資料,讀R2會觀察到寫W1。
讀R1或寫W1可以是裝置或正常類型。寫和讀完成的定義是:
寫完成響應:給出相關的
BRESP
握手的周期,此時
BVALID
和
BREADY
被斷言。
讀完成響應:給出最後一次相關
RDATA
握手的周期,此時斷言
RVALID
、
RLAST
和
RREADY
。
A6.5 管理器排序保證
排序模型保證有三種類型:
- 在收到完成響應之前,可觀察性保證。
- 完成響應的可觀測性保證。
- 響應排序保證。
A6.5.1 收到完成響應前的保證
以下所有保證适用于來自同一管理器、使用相同辨別的事務:
- 裝置寫入DW1保證在裝置寫入DW2之前到達目的地,其中DW2在DW1之後發出并到達相同的外圍區域。
- 裝置讀取DR1保證在裝置讀取DR2之前到達目的地,其中DR2在DR1之後發出并到達同一外圍區域。
- 寫W1保證被寫W2觀察到,其中W2在W1之後釋出到相同的存儲器位置。
- 由讀R2觀察到的寫W1保證由讀R3觀察到,其中R3在R2之後釋出到相同的存儲器位置。
這些保證意味着在對同一存儲器位置的裝置通路和正常通路之間存在順序保證。
A6.5.2 完成響應的保證
完成響應保證了以下所有内容:
- 對讀請求的完成響應保證了它對于來自任何管理器的後續讀或寫請求是可觀察的。
- 對寫請求的完成響應保證了它對于來自任何管理器的後續讀或寫請求是可觀察的。這種可觀測性是多副本原子系統的要求。
包含符合Arm架構的處理器的系統必須是多副本原子系統。也就是說,Multi_Copy_Atomicity屬性必須為真。
對可緩沖寫請求的響應可以從中間點發送。它不能保證寫操作已經在端點完成,但是它對于未來的事務是可觀察到的。
A6.5.3 響應排序保證
事務響應具有以下所有排序保證:
- 已讀R1保證在對已讀R2的響應之前收到響應,其中R2是由R1之後具有相同辨別的同一經理發出的。
- 保證寫W1在對寫W2的響應之前收到響應,其中W2是由同一管理器在W1之後以相同的辨別發出的。
A6.6 排序要求
為了滿足管理器的排序保證,對從屬和互連元件有一定的要求。
A6.6.1 從屬排序要求
對于外圍裝置位置,事務到外圍裝置位置的執行順序是實施定義的。該執行順序通常與到達順序相比對,但這不是必需的。
對于記憶體位置:
- 寫W1必須在具有相同辨別的寫W2之前被排序到相同的存儲器位置,其中W2在W1被接收之後被接收。
- 寫W1必須在寫W2到同一存儲器位置之前排序,其中W2是在給出W1的完成響應之後接收的。
- 在對同一存儲器位置進行讀R2之前,必須對寫W1進行排序,在給出W1的完成響應之後,在該位置接收R2。
- 在将W2寫入相同的存儲器位置之前,必須對讀R1進行排序,其中W2是在給出R1的完成響應之後接收的。
響應排序要求:
- 讀R1的響應必須在讀R2的響應之前傳回,在讀的響應中,R2在R1之後以相同的ID被接收。
- 寫W1的響應必須在寫W2的響應之前傳回,其中W2在具有相同辨別的W1之後接收。
A6.6.2 互連排序要求
互連元件具有以下屬性:
- 一個請求在一個端口上接收,并在另一個端口上發出或響應。
- 在一個端口接收響應,并在另一個端口發出或使用。
當互連送出請求或響應時,它必須遵守以下要求:
- 讀取R1請求必須在讀取R2請求之前發出,其中R2是在R1之後接收的,具有相同的ID并且到達相同或重疊的位置。
- 寫W1請求必須在寫W2請求之前發出,其中W2在W1之後接收,具有相同的辨別,指向相同或重疊的位置。
- 裝置讀取DR1請求必須在裝置讀取DR2請求之前發出,其中DR2是在DR1之後接收的,具有相同的辨別,并且到達相同的外圍區域。
- 裝置寫入DW1請求必須在裝置寫入DW2請求之前發出,其中DW2是在DW1之後接收的,具有相同的辨別并發送到相同的外圍區域。
- “已讀R1”響應必須在“已讀R2”響應之前發出,其中R2在R1之後接收,具有相同的ID。
- 寫W1響應必須在寫W2響應之前發出,其中W2在W1之後接收,具有相同的辨別。
當互連充當從屬元件時,它還必須遵守從屬要求。對與交易相關的AXI辨別值的任何操作都必須確定保持原始辨別值的排序要求。
A6.7 終點前的響應
為了提高系統性能,中間元件可以對一些事務發出響應。這一行動被稱為早期反應。釋出早期響應的中間元件必須確定滿足可見性和排序保證。
A6.7.1 早期讀響應
對于正常的讀事務,如果一個中間元件對同一或重疊位址的所有早期寫操作都是最新的,那麼它可以用來自本地存儲器的讀資料來響應。在這種情況下,請求不需要傳播到中間元件之外。
中間元件必須遵守辨別排序規則,這意味着隻有在具有相同辨別的所有早期讀取都已經有響應的情況下,才能發送讀取響應。
A6.7.2 早期寫響應
對于可緩沖的寫事務,中間元件可以為沒有下遊觀察器的事務發送早期寫響應。如果中間元件發送早期寫響應,則中間元件可以存儲資料的本地副本,但必須在丢棄該資料之前将事務傳播到下遊。
中間元件必須遵守辨別排序規則,這意味着隻有在具有相同辨別的所有早期寫入都已經有響應的情況下,才能發送寫入響應。
發送早期寫響應後,元件必須負責該事務的排序和可觀察性,直到寫被傳播到下遊并收到寫響應。在發送早期寫響應和從下遊接收響應之間的期間,元件必須確定:
- 如果給定了正常事務的早期寫響應,則對相同或重疊記憶體位置的所有後續事務都将在具有早期響應的寫操作之後排序。
- 如果給定了裝置事務的早期寫響應,那麼對同一外圍區域的所有後續事務将在具有早期響應的寫操作之後排序。
當對裝置緩沖事務給出早期寫響應時,中間元件應該傳播寫事務,而不依賴于其他事務。在傳播之前的裝置寫入之前,中間元件不能等待另一個讀取或寫入到達。
A6.8 有序寫觀察
為了提高與支援不同排序模型的接口協定的相容性,從屬接口可以為寫事務提供更強的排序保證。更強的排序保證稱為有序寫觀察。有序寫觀察屬性用于定義接口是否顯示有序寫觀察,對于單個接口,它可以是真或假。
True:接口被定義為具有“有序寫入觀察”屬性。
False:沒有“有序寫入觀察”屬性的接口。如果未聲明Ordered_Write_Observation,則認為它為False。
呈現有序寫入觀察的接口為不依賴于目的地或位址的寫入事務提供保證:
- 寫W1保證被寫W2觀察到,其中W2在W1之後從相同的管理器發出,具有相同的辨別。
使用Producer-Consumer排序模型的管理器連接配接到顯示有序寫觀察的從屬接口,在發出相關寫入之前,不需要等待來自早期寫入的完成響應。
A7: 原子通路
A7.1 單副本原子性大小
AXI4協定引入了單副本原子性大小的概念。這個術語定義了事務自動更新的最小位元組數。AXI4協定要求大于單副本原子性大小的事務必須以至少為單副本原子性大小的塊來更新記憶體。
(原子性沒有定義資料更新的确切時刻。必須確定的是,沒有一個管理者能夠觀察到原子資料的部分更新形式。例如,在許多系統中,資料結構(如連結清單)由32位原子元素組成。這些元素之一的原子更新需要同時更新整個32位值。任何管理器都不能一次隻觀察到16位的更新,然後再觀察到其他16位的更新。)
更複雜的系統需要支援更大的原子元素,特别是64位原子元素,以便管理人員可以使用基于這些更大原子元素的資料結構進行通信。
系統中支援的單副本原子性大小很重要,因為給定通信中涉及的所有元件都必須支援所需的原子元素大小。如果兩個經理通過一個互連和一個下屬進行通信,那麼所有涉及的元件都必須確定按原子方式處理所需大小的事務。
AXI4協定不需要特定的單副本原子性大小,系統可以設計為支援不同的單副本原子性大小。
不同的元件組可以具有不同的單副本原子性大小,以便在組内進行通信。在AXI4中,術語單副本原子組描述了一組可以在特定原子性下通信的元件。例如,圖A7-1顯示了一個系統,其中:
- 處理器、DSP、DRAM控制器、DMA控制器、外圍裝置、SRAM存儲器和相關的互連都在32位單拷貝原子組中。
- 處理器、DSP、DRAM控制器和相關的互連也屬于64位單拷貝原子組。 事務的原子性保證永遠不會大于其起始位址的對齊。例如,64位單拷貝原子組中未與8位元組邊界對齊的突發沒有任何64位單拷貝原子保證。與事務相關聯的位元組選通不影響單拷貝原子性大小。
A7.1.1 多副本寫原子性
為了指定系統提供多副本原子性,定義了多副本原子性屬性。
True:支援Multi_Copy_Atomicity。
False:不支援Multi_Copy_Atomicity。如果未聲明Multi_Copy_Atomicity,則認為它為False。
在下列情況下,系統被定義為多副本原子系統:
- 所有代理都以相同的順序觀察對相同位置的寫入。
- 對代理可觀察到的位置的寫入可被所有代理觀察到。
多副本原子性可以通過以下方式來確定:
-
對于給定的位址,使用單個序列化點,以便對同一位置的所有通路都是有序的。
這必須確定在位置的新值對任何代理可見之前,位置的所有一緻緩存副本都是無效的。
- 避免使用任何代理上遊的轉發緩沖區。這可防止緩沖寫入的位置在所有代理可見之前對某些代理可見。
- 要求Multi_Copy_Atomicity屬性在本規範的版本G和更高版本中為真。
A7.2 獨占通路
獨占通路機制可以提供信号量類型的操作,而不需要總線在操作期間保持專用于特定的管理器。這意味着信号量類型的操作既不影響總線通路延遲,也不影響最大可達到的帶寬。
AxLOCK
信号選擇獨占通路,
RRESP
和
BRESP
信号分别訓示獨占通路讀或寫的成功或失敗。
從屬需要額外的邏輯來支援獨占通路。AXI協定提供了一種機制來訓示管理者何時嘗試對不支援它的下屬進行獨占通路。本節的其餘部分描述了AXI獨占通路機制。
A7.2.1 獨占通路流程
獨占通路的基本機制是:
- 管理器執行對位址的獨占讀取。
- 稍後,管理器嘗試通過對同一位址執行獨占寫入來完成獨占操作,并使用與獨占讀取所用的
相比對的ARID
。AWID
- 這種獨占寫通路被信号通知為:如果自獨占讀取通路後沒有其他管理器寫入該位置,則成功。在這種情況下,獨占寫入會更新記憶體。失敗,如果另一個管理器在獨占讀取通路後寫入了該位置。在這種情況下,存儲位置不會更新。管理器可能無法完成獨占操作的寫入部分。獨占通路監控硬體隻監控每個事務辨別的一個位址。如果一個管理器沒有完成獨占操作的寫部分,該管理器随後使用相同的事務辨別進行的獨占讀取将改變被監視獨占通路的位址。
A7.2.2 從管理器的角度看獨占通路
管理器通過執行獨占讀取來啟動獨占操作。如果事務成功,從屬端傳回EXOKAY響應,表明從屬端記錄了要監控的位址,以便進行獨占通路。
如果管理器試圖從不支援獨占通路的從屬端進行獨占讀取,從屬端将傳回OKAY響應,而不是EXOKAY響應。
獨占讀取後的某個時間,管理器會嘗試對同一位置進行獨占寫入。如果自獨占讀取後,尋址位置的内容尚未更新,則獨占寫入操作成功。下屬傳回EXOKAY響應,并更新記憶體位置。
如果尋址位置的内容在獨占讀取後已經更新,獨占寫入嘗試将失敗,從屬裝置将傳回OKAY響應,而不是EXOKAY響應。獨占寫入嘗試不會更新記憶體位置。
管理器可能無法完成獨占操作的寫入部分。如果發生這種情況,從屬端将繼續監控位址的獨占通路,直到另一個獨占讀取開始新的獨占通路序列。
在讀部分完成之前,管理器不得啟動獨占通路序列的寫部分。
A7.2.3 從下屬的角度看獨占通路
不支援獨占通路的下屬可以忽略
AxLOCK
信号。它必須為正常和獨占通路提供一個OKAY響應。
支援獨占通路的下屬必須有螢幕硬體。本規範建議這樣的下屬為每個可以通路它的具有獨占能力的管理器辨別設定一個監控單元。Arm架構參考手冊、Armv7-A和Armv7-R版定義了一個獨占通路螢幕,單端口下屬可以在下屬外部擁有這樣一個獨占通路螢幕。多端口下屬可能需要内部監控。
獨占通路螢幕記錄任何獨占讀取操作的位址和
ARID
值。然後,它監視該位置,直到對該位置進行寫入,或者直到另一個具有相同
ARID
值的獨占讀取将螢幕重置為不同的位址。
當從屬裝置接收到具有給定
AWID
值的獨占寫入時,監控器檢查該位址是否正被監控以使用該
AWID
進行獨占通路。如果是,則這表明自獨占讀取通路以來該位置沒有發生寫入,并且獨占寫入繼續進行,完成獨占通路。下屬向管理器傳回EXOKAY響應,并更新尋址的記憶體位置。
如果在獨占寫入時,沒有用相同的
AWID
值監控位址,這表明存在以下情況之一:
- 自獨占讀取通路後,該位置已更新。
- 螢幕已重置到另一個位置。
- 管理器沒有發出與獨占寫入具有相同屬性的獨占讀取。
在這兩種情況下,獨占寫操作都不能更新尋址位置,從屬寫操作必須傳回OKAY響應,而不是EXOKAY響應。
A7.2.4 獨占通路限制
以下限制适用于獨占通路:
- 獨占通路的位址必須與事務中的位元組總數一緻,即突發大小和突發長度的乘積。
- 獨占通路突發中要傳輸的位元組數必須是2的幂,即1、2、4、8、16、32、64或128位元組。
- 獨占突發中可以傳輸的最大位元組數是128。
- 獨占通路的突發長度不得超過16次傳輸。
- AxCACHE信号的值必須保證事務到達監控獨占通路的從屬端。如果有一個緩沖區或高速緩存在到達螢幕之前可能對獨占通路做出響應,那麼獨占通路必須是不可緩沖的或不可緩存的。
- 該域必須是不可共享的或系統可共享的。
- 事務類型必須是ReadNoSnoop或WriteNoSnoop。
不遵守這些限制會導緻不可預測的行為。要将獨占讀取和獨占寫入視為同一獨占通路序列的一部分,兩次傳輸的以下信号必須相同:
- AxID
- AxADDR
- AxREGION
- AxLEN
- AxSIZE
- AxBURST
- AxLOCK
- AxCACHE
- AxPROT
- AxDOMAIN
- AxSNOOP
- AxMMSECSID
- AxMMUSSID
- AxMMUSSIDV
- AxMMUSSID
- AxMMATST
獨占操作期間要監控的最小位元組數由事務的突發長度和突發大小定義。從屬裝置可以監控更大數量的位元組,最多128個位元組,這是獨占通路的最大大小。然而,這可能導緻成功的獨占通路被訓示為失敗,因為相鄰位元組被更新。
A7.2.5 對獨占通路的響應
響應信号
RRESP
和
BRESP
包括用于成功正常通路的OKAY響應和用于成功獨占通路的EXOKAY響應。這意味着不支援獨占通路的下屬可以提供一個OKAY響應來訓示獨占通路的失敗。
- 對不支援獨占通路的從屬的獨占寫入總是更新存儲位置。
- 僅當獨占寫入成功時,對支援獨占通路的下屬的獨占寫入才會更新存儲位置。
獨占寫入使用
BRESP
一個響應,可以是OKAY、EXOKAY、SLVERR或DECERR。獨占讀取有一個或多個響應節拍。這些可以是EXOKAY、SLVERR和DECERR的混合物,也可以是OKAY、SLVERR和DECERR的混合物。不允許在同一事務中混合EXOKAY和OKAY響應。
A7.3 鎖定通路
AXI4不支援鎖定的事務。但是,AXI3實作必須支援鎖定事務。
當管理器使用某個事務的
AxLOCK
信号來表明它是鎖定的事務時,則互連必須確定隻有該管理器才能通路目标從屬區域,直到來自同一管理器的未鎖定事務完成。互連中的仲裁器必須實施這一限制。
在管理器啟動讀或寫事務的鎖定序列之前,它必須確定沒有其他事務等待完成。
任何帶有訓示鎖定事務的
AxLOCK
的事務都會強制互連鎖定下一個事務。是以,鎖定序列必須始終以最終事務結束,而最終事務沒有訓示鎖定事務的
AxLOCK
。這個最終事務包含在鎖定序列中,并有效地解除鎖定。
完成鎖定序列時,在發出最終解鎖事務之前,經理必須確定所有先前鎖定的事務都已完成。然後,它必須確定在開始任何進一步的交易之前,最終解鎖交易已經完成。經理必須確定鎖定序列中的所有事務都具有相同的
AxID
值。
本規範建議以下限制,但這些限制不是強制性的:
- 将任何鎖定的事務序列保留在單個4 KB位址區域内。
- 将任何鎖定的交易順序限制為兩個交易。
A7.4 原子接入信令
在AXI3中,
AxLOCK
信号指定正常、獨占和鎖定通路。表A7-1顯示了
AxLOCK
信号的AXI3編碼。
AXI4取消了對鎖定事務的支援,僅使用1位鎖定信号。表A7-2顯示了
AxLOCK
信号的AXI4信号編碼。
A7.4.1 遺留問題
在AXI4環境中,任何AXI3鎖定的事務都将按如下方式轉換:
-
= 0b10轉換為正常寫入事務,AWLOCK[1:0]
= 0b0AWLOCK
-
= 0b10轉換為正常讀取事務,ARLOCK[1:0]
= 0b0ARLOCK
本規範建議執行這種轉換的任何元件(通常是互連)都包括一個可選機制,以檢測和标記這種轉換已經發生。如果執行此轉換,任何無法正常運作的元件都不能在AXI4環境中使用。
A8: AMBA 4 附加信号
A8.1 服務品質(QoS)信号
A8.1.1 QoS接口信号
AXI4信号集被擴充為支援兩個4位服務品質辨別符:
AWQOS
一個4位服務品質辨別符,在每個寫事務的寫位址通道上發送。
ARQOS
一個4位服務品質辨別符,在每個讀事務的讀位址通道上發送。
本規範建議将AxQOS用作相關寫入或讀取事務的優先級訓示器。較高的值表示較高優先級的事務。預設值0b0000表示接口不參與任何服務品質方案。
A8.1.2 管理器考慮事項
管理器可以産生自己的QoS,如果它可以産生多個流量流,它可以為不同的流選擇不同的服務品質值。
對服務品質的支援需要系統級對所使用的服務品質方案的了解,以及所有參與元件之間的協作。是以,本規範建議管理器元件包含一些可程式設計性,這些可程式設計性可用于控制用于任何給定場景的準确服務品質值。
如果管理器元件不支援可程式設計的服務品質方案,它可以使用代表其生成的事務的相對優先級的服務品質值。如果合适的話,這些值可以被映射到可選的系統級服務品質值。
無法生成自己的QoS的管理器必須使用預設值。
(本規範預期許多互連元件實作将支援可程式設計寄存器,這些寄存器可用于為連接配接的管理器配置設定服務品質值。這些值取代了由管理者提供的服務品質值,無論是程式設計的還是預設的。)
A8.1.3 系統考慮
AXI4中定義的服務品質信令可以與任何相容的系統級服務品質方法一起使用。
服務品質的預設系統級實作是,任何可以選擇處理多個事務的元件都會選擇服務品質值較高的事務先處理。隻有當沒有其他AXI限制要求按特定順序處理事務時,才會進行此選擇。(這意味着AXI排序規則優先于出于服務品質目的排序。)
A8.2 多區域信号
A8.2.1 附加接口信号
可選地,AXI4接口信号集可以擴充為支援兩個4位區域辨別符:
AWREGION
區域辨別符,在每個寫事務的寫位址通道上發送。
ARREGION
區域辨別符,在每個讀事務的讀位址通道上發送。
4位區域辨別符可用于唯一識别多達16個不同的區域。區域辨別符可以提供高階位址位的解碼。在任何4K位元組位址空間中,區域辨別符必須保持不變。
區域辨別符的使用意味着從屬裝置上的單個實體接口可以提供多個邏輯接口,每個接口在系統位址映射中具有不同的位置。區域辨別符的使用意味着從屬裝置不必支援不同邏輯接口之間的位址解碼。
該協定期望在對具有多個邏輯接口的單個從屬裝置執行位址解碼功能時,互連産生
AxREGION
信号。如果下屬在系統位址映射中隻有一個實體接口,則互連必須使用預設的
AxREGION
值。
區域辨別符有多種使用模式,包括但不限于以下幾種:
- 外設可以将其主資料路徑和控制寄存器放在位址映射的不同位置,并且可以通過單個接口通路,而不需要從屬裝置執行位址解碼。
- 下屬可以在不同的記憶體區域表現出不同的行為。例如,下屬可能在一個區域提供讀寫通路,但在另一個區域提供隻讀通路。
下屬必須確定保持正确的協定信号和事務的正确順序。下屬必須確定以正确的順序向具有相同AXI辨別的不同地區提供兩個事務的響應。
下屬還必須確定
AxREGION
的任何值都有正确的協定信号。如果下屬實施的區域少于16個,則下屬必須確定在嘗試通路不受支援的區域時使用正确的協定信号。如何實作這一點由實作定義。例如,下屬可以通過以下方式確定這一點:
- 為通路不受支援區域的任何事務提供錯誤響應。
- 在所有不受支援的區域中混疊受支援的區域,以確定對所有通路給出符合協定的響應。
AxREGION
信号僅提供現有位址空間的位址解碼,可由下屬使用,以消除對位址解碼功能的需求。這些信号不會産生新的獨立位址空間。
AxREGION
必須隻出現在位址解碼功能下遊的接口上。
A8.3 使用者定義的信号
AMBA 4引入了使用者定義信号。對于AMBA 5,這些信号的使用和配置在各種協定中進一步明确和統一。
AXI接口可以包括一組使用者定義的信号,稱為使用者信号。當存在現有AMBA規範未涵蓋的要求時,信号可用于增加事務資訊。
資訊可以添加到:
- 事務請求
- 事務響應
- 事務中的每一次讀寫資料
通常,本規範建議不要使用使用者信号。AXI協定沒有定義這些信号的功能,如果兩個元件以不相容的方式使用相同的使用者信号,這可能會導緻互操作性問題。
A8.3.1 使用者定義的信号配置
使用者信号的存在和寬度由表A8-1中的屬性規定:
如果屬性的值為零,則接口上不存在相關的信号。最大值僅供參考,以便為可配置接口設定合理的最大值。
以下接口類型可以包括使用者信号:
- ACE5
- ACE5-Lite
- ACE5-LiteDVM
- ACE5-LiteACP
- AXI5
- AXI5-Lite
A8.3.2 信号
為每個通道定義的使用者信号名稱如表A8-2所示:
A8.3.3 使用注意事項
在實作使用者信号的情況下,并不要求所有通道都支援使用者信号。是否包含使用者信号的設計決策是針對請求、資料和響應通道獨立做出的。
為了幫助資料寬度和協定轉換,本規範建議:
- USER_DATA_WIDTH是資料總線寬度的整數倍,以位元組為機關。
- 使用者響應位對于讀或寫響應的每一拍都是相同的值。
-
的低位用于傳輸每筆事務的響應資訊。RUSER
-
的高位用于傳輸每拍讀取資料資訊。RUSER
A9: 預設信号和互操作性
AXI協定不要求元件使用AXI接口上可用的全套信号。為了幫助連接配接不使用每個信号的元件,本章定義了接口的主要類别以及适用于每個類别的限制。
A9.1 互操作性原則
以下互操作性原則适用于AXI3和AXI4元件。
作為一般原則,元件必須支援所有輸入組合,但不必生成所有輸出組合。例如,下屬必須支援所有可能的不同突發長度,而管理器隻需生成其使用的突發類型。此政策確定所有元件與所有其他元件一起工作。
AXI接口可以省略信号的條件是:
可選輸出
如果元件可能需要與預設值不比對的值,則該元件必須有輸出信号。
可選輸入
如果管理器或下屬不需要觀察輸入信号來進行正确的功能操作,則可以省略輸入信号。
(适當時,互連元件也可以省略信号。例如,當一個信号隻被驅動到其預設值時,不需要通過互連傳輸該信号。信号可以在目的地産生。同樣,如果信号沒有在任何目的地使用,則不需要通過互連傳輸。)
A9.2 主要接口類别
A9.2.1 讀/寫接口
讀寫接口包括以下AXI通道:
A9.2.2 隻讀接口
隻讀接口僅支援讀事務,包括以下AXI通道:
(隻讀接口不支援獨占通路。)
A9.2.3 隻寫接口
隻寫接口僅支援寫事務,包括以下AXI通道:
(隻寫接口不支援獨占通路。)
A9.2.4 記憶體從屬和外設從屬
AXI下屬分為記憶體下屬或外圍下屬。
記憶體從屬必須正确處理所有事務類型。
外圍裝置下屬應該有一個定義好的通路方法,确定可用于通路裝置的事務類型,以及如何通路裝置是否有任何限制。通常,定義的通路方法在元件的資料手冊中描述。任何不是定義的通路方法的通路都可能導緻外圍裝置從屬裝置失敗,但應該以符合協定的故障安全方式完成,以防止系統死鎖。不需要外圍從屬裝置繼續正确操作。
因為外圍裝置從屬裝置隻需要為其定義的通路方法正确工作,是以外圍裝置從屬裝置可以具有顯著減少的接口信号集。
(所有外圍裝置都應該支援一個事務子集,該子集允許使用可以在C代碼中指定的通路來控制外圍裝置。例如,可能支援單個8位、單個16位或單個32位對齊的事務。不需要最小子集,因為支援的事務子集可能因外設而異。例如,一個外設可能隻支援16位通路,而另一個外設可能隻支援32位通路。)
A9.3 預設信号值
該規範建議,一般來說,為了最大限度地重用IP,AXI元件接口包括所有信号。所有信号的存在降低了設計流程的系統內建階段出錯的風險,并且還可以幫助支援一些不有效支援預設信号預設值的設計流程。
A9.3.1 管理器位址
AxADDR
對管理器提供的位址位數沒有最低要求。如果管理器連接配接的系統的位址總線寬度與管理器提供的不同:
- 如果系統位址比管理器提供的更寬,則必須為附加的高位位址位使用全零的預設值。
- 如果系統位址比管理器提供的位址窄,則管理器的高位位址位必須保持不連接配接。
(通常,管理器提供32位尋址,或者管理器最多支援64位尋址。)
A9.3.2 從屬位址
AxADDR
對下屬使用的位址位數沒有最低要求。
下屬不需要具有低階位址位來支援系統資料總線寬度内的解碼,并且可以假設這種低階位址位具有全零的預設值。如果從屬裝置的位址位多于互連提供的位址位,則高階位址位使用全零的預設值。
通常,記憶體從屬裝置至少有足夠的位址位來完全解碼4KB位址範圍。
A9.3.3 記憶體從屬
AxLOCK
記憶體從屬不需要使用
AxLOCK
輸入。然而,支援獨占通路的記憶體從屬需要這些信号。
AxCACHE
不需要從屬記憶體來使用
AxCACHE
輸入。在下列情況下,存儲器從屬裝置不需要這些信号:
- 它沒有緩存行為。
- 它以同樣的方式緩存所有事務。
A9.3.4 寫事務
WSTRB
如果管理器總是執行全資料總線寬度的寫事務,則不需要使用寫選通信号。寫選通脈沖的預設值是所有信号有效。
WLAST
不要求下屬使用
WLAST
信号。由于定義了寫突發的長度,從屬端可以根據突發長度
AWLEN[7:0]
信号計算最後一次寫資料傳輸。
A9.3.5 讀事務
RLAST
管理器不需要使用
RLAST
信号。由于讀取脈沖串的長度已定義,管理器可以根據脈沖串長度
ARLEN[7:0]
信号計算最後一次讀取資料傳輸。
A9.3.6 響應信号
RRESP, BRESP
管理器不需要
RRESP
和
BRESP
輸入,如果它們都:
- 不執行獨占通路
- 不要求通知事務錯誤
下屬不需要
RRESP
和
BRESP
輸出,如果它都:
- 不支援獨占通路
- 不生成錯誤響應
A9.3.7 非安全和安全通路
AxPROT
AxPROT
不需要區分非安全通路和安全通路,也不需要任何額外保護支援的從屬裝置,不需要
AxPROT
輸入信号。
(注意
AxPROT
信号。
AxPROT[1]
信号訓示事務的安全或非安全性質,這些位的不正确配置設定會導緻不正确的系統行為。)