見かけることの多くなってきたAMBA5(Advanced Microcontroller Bus Architecture)のAXI(Advanced eXtensible Interface)仕様について、長い仕様書を後から見に行かなくても良い程度のメモ書き。

対象の仕様書はこちらのAMBA5 「AMBA AXI プロトコル仕様」です。
機会があり次第更新しますが、まだ理解できていないことも多く間違いが多々あるので正確な仕様はAMBA仕様書で確認ください。


arm仕様書にならって意識的に「slave / master」のことを「Subordinate / Manager」と記述していきます。


基本的な信号


AXIの基本的な端子まとめ


AWSIZEとAWLENの対応

AxLEN[7:0]転送長 (0~255)
WRAP BURST2, 4, 8, 16
FIXED BURST最大16
INCR BURST1~256
  • Source : Manager
  • Length = AxLEN + 1
  • 転送クロックサイクル数(長さ)
  • 4KBアドレス境界を越えない(=0x1000サイズのアドレス境界を越えない)
  • トランザクションの早期終了不可
AxSIZE[2:0]転送サイズ (0~7)
3'b0001 byte
3'b0012 byte
3'b0104 byte
3'b0118 byte
3'b10016 byte
3'b10132 byte
3'b11064 byte
3'b111128 byte
  • Source : Manager
  • 1転送あたりのサイズ(Data byte幅)
AxBURST[1:0]転送タイプ (0~3)
2'b00 : FIXEDアドレス固定
2'b01 : INCRアドレスインクリメント
2'b10 : WRAPWrap around
(アドレスインクリメント、境界(Size * Length)に達すると最初のアドレスに戻る)
2'b11Reserved
  • Source : Manager
  • BURST転送タイプ
WSTRB (DATA_WIDTH/8)有効Write data byte
  • Source : Manager
  • 有効な書き込みbitを示す信号
BRESP (0,2,3)Writeレスポンス (0~7)
3'b000OKAY
3'b001EXOKAY
3'b010SLVERR
3'b011DECERR
3'b100DEFER
3'b101TRANSFAULT
3'b110Reserved
3'b111UNSUPPORTED(トランザクションタイプがターゲットでサポートされていない)
  • Source : Subordinate
  • Writeが成功したかの返答
RRESP (0,2,3)Readレスポンス (0~7)
3'b000OKAY
3'b001EXOKAY
3'b010SLVERR
3'b011DECERR
3'b100PREFETCHED
3'b101TRANSFAULT
3'b110OKAYDIRTY
3'b111Reserved
  • Source : Subordinate
  • Readが成功したかの返答
xLAST転送ラスト
  • Source : Subordinate
  • 転送の最後を示す信号

その他インターフェース信号


トランザクション信号


xID (0..32)トランザクションの識別子
  • Source : Manager (AWID, ARID)
  • Source : Subordinate (BID, RID)
  • Default:All zeros
  • トランザクションの順序付け識別子
  • アウトスタンディング数が2以上のとき必要
  • 書き込み要求が順序通りに発行される場合は必要ない
  • ManagerがOutStanding転送をサポートしない場合、Subordinate側はAxID入力をLow固定
  • SubordinateにIDが無い場合、ID信号を持つManagerに接続できない
  • → AWIDやARIDに対して、BIDやRIDを返せないため
AxREGION[3:0]リージョン識別子
  • Source : Manager (AWREGION, ARREGION)
  • Default : 4'h0
  • 0~15の領域を識別
  • 用途:メモリリージョン(領域)の識別
  • 単一のインターフェース内に複数のアドレス領域をサポート
  • 用途:仮想マシンごとに異なるメモリリージョン割り当て
  • 用途:アクセス権限の判断
  • システムのセキュリティとパフォーマンスに影響を及ぼす
  • Subordinateがどのメモリリージョンを対象とするか判断する
  • 制約:4KBのアドレス空間内で一定の識別子
  • サポートされない領域に対しての動作はSubordinate側で保証する(エラー応答など)
AxLOCK排他アクセスインジケータ
1'b0複数のMasterによって自由にアクセス可能
1'b1ロック状態(排他アクセス)単一のManagerのみアクセス
  • Source : Manager(AWLOCK, ARLOCK)
  • Default : 1'b0
  • 特定のManagerに接続を専用化せず、セマフォタイプの処理を実現可能になる
  • メモリなど共有リソースアクセスの際、競合を防ぐためのアクセス制御を行う
  • ロック状態の管理によってはデッドロック状態が発生する可能性あり
AWCACHE[3:0]メモリ属性
[0]Bufferable
 1'b0トランザクションがバッファリングされない
 1'b1トランザクションがバッファリングされる
[1]Modifiable
 1'b0トランザクションが変更可能ではない
 1'b1トランザクションが変更可能
[2]Other Allocate
 1'b0アロケートされない
 1'b1アロケートされる
[3]Allocate
 1'b0Writeトランザクションでキャッシュミスしてもアロケートされない
 1'b1Writeトランザクションでキャッシュミスするとアロケートされる

ARCACHE[3:0]メモリ属性
[0]Bufferable
 1'b0トランザクションがバッファリングされない
 1'b1トランザクションがバッファリングされる
[1]Modifiable
 1'b0トランザクションが変更可能ではない
 1'b1トランザクションが変更可能
[2]Allocate
 1'b0Readトランザクションでキャッシュミスしてもアロケートされない
 1'b1Readトランザクションでキャッシュミスするとアロケートされる
[3]Other Allocate
 1'b0アロケートされない
 1'b1アロケートされる

ARCACHE[3:0]AWCACHE[3:0]メモリタイプ
4'b00004'b0000Device Non-bufferable
4'b00014'b0001Device Bufferable
4'b00104'b0010Normal Non-cacheable Non-bufferable
4'b00114'b0011Normal Non-cacheable Bufferable
4'b10104'b0110Write-Through No-Allocate
4'b1110(0110)4'b0110Write-Through Read-Allocate
4'b10104'b1110(1010)Write-Through Write-Allocate
4'b11104'b1110Write-Through Read and Write-Allocate
4'b10114'b0111Write-Back No-Allocate
4'b1111(0111)4'b0111Write-Back Read-Allocate
4'b10114'b1111(1011)Write-Back Write-Allocate
4'b11114'b1111Write-Back Read and Write-Allocate
  • Source : Manager (AWCACHE, ARCACHE)
  • 用途:キャッシュ効率とパフォーマンス制御
  • Bufferable
    • デアサート:データが最終目的地へ到達を示す
    • アサート:データをバッファから送信できることを示す
    • バッファにデータを一時的に保持し、その後ターゲットメモリへ書き込む
    • バスの利用効率向上が見込める
  • Modifiable
    • デアサート:複数のトランザクションへ分割したり、他トランザクションとマージしたりしない
    • アサート:トランサクションの変更を許可
    • 基本的にアドレス(AxADDR,AxREGION),サイズ(AxSIZE),長さ(AxLEN),バーストタイプ(AxBURST),保護属性(AxPROT,AxNSE)は変更されないことを保証する
    • ※ただし特定条件下での例外あり
  • Other Allocate
    • アサートされたとき
    • キャッシュラインの検索が必要(以前割り当てられた可能性がある)
    • キャッシュへの割り当ては非推奨(再度アクセスされることが予測されない)
  • Allocate
    • アサートされたとき
    • キャッシュラインの検索が必要(以前割り当てられた可能性がある)
    • キャッシュへの割り当て推奨(将来的にデータが使用されることが予測される)
  • 「Other Allocate」と「Allocate」両方デアサートの場合、キャッシュを検索する必要はない
  • メインメモリからキャッシュラインへデータをコピー(アロケーション)
  • キャッシュラインからデータを空にする(エビクション)
AxPROT[2:0]予期せぬトランザクションからのメモリ保護
[0]特権レベル
 1'b0Unprivileged
 1'b1Privileged
[1]セキュリティ属性
 1'b0Secure
 1'b1Non-secure
[2]命令/データ
 1'b0Data access
 1'b1Instruction access
  • Source : Manager (AWPROT, ARPROT)
  • 保護属性(protection attribute)を使用しないSubordinateは信号入力を省略可能
  • RME(Realm Management Extension)
  • Unprivilleged / privileged
    • 特権アクセス/非特権アクセスのふるまいはSubordinateにゆだねられる
  • Security attribute
    • トランザクションがどのセキュリティ状態で実行されるか
  • Instruction / data
    • データと命令が混在するトランザクションの区別のために用いられる
AxNSEAxPROT[1]Security attribute
00Secure
01Non-secure
10Root
11Realm

AxNSE予期せぬトランザクションからのメモリ保護
  • Source : Manager
  • Non-secure extension bit for RME
  • メモリ保護のための拡張信号
  • Realm Management Extension (RME)がサポートされている場合にのみ存在
  • セキュリティ機能
    • Armv4のTrustZone
    • Armv7のVirtualization
    • Armv8のSecure EL2 Virtualization
    • Armv9のCCA(Confidential Compute Architecture)
    • CCAにRealm(レルム)が含まれる
  • 参考:https://news.mynavi.jp/techplus/article/20210623-1909198/
AxQOS[3:0]トランザクションの処理優先度付け
  • Source : Manager (AWQOS, ARQOS)
  • Quality of Service
  • Write/Readリクエストの優先度を示す
  • 一般的は値が大きいほうが優先度が高く優先的に処理を行う
  • ManagerがQoSをサポートしない場合、生成するトランザクションの相対的な優先度を示すQoS値を使用する
xUSER (0..128 or 0..DATA_WIDTH/2)拡張信号
  • Source : Manager (AWUSER, WUSER, ARUSER)
  • Source : Subordinate (BUSER, RUSER)
  • ユーザー定義の拡張信号(カスタマイズ可能)
  • トランザクションに追加情報を提供する
AxDOMAIN[1:0]転送サイズ (0~7)
2'b00Non-shareable domain(NSH)
2'b01Shareable domain(SH)
2'b10Shareable domain(SH[推奨])
2'b11System domain(SYS)
  • Source : Manager (AWDOMAIN, ARDOMAIN)
  • リクエストがシステムのシェアラビリティドメイン(共有領域)に属するか指定
  • キャッシュ動作を決定するのに使用される
  • ドメイン(System, Non-shareable or Shareable)
  • System Domain
    • システムドメインリクエストはキャッシュ不可
    • ローカルキャッシュに保存されない
    • 一貫性の確保は簡単だが、パフォーマンスは高くない
  • Non-shareable Domain
    • ハードウェアコヒーレンシメカニズムのトリガは不要
    • 非共有データをManeger間で共有する場合はキャッシュ・メンテナンス・オペレーション(CMO)トランザクションを発行して、データRead前にローカルキャッシュからデータをクリーニングし、無効する。
    • ソフトウェアの正しさに競合バグの発生が依存する
  • Shareable Domain
    • メモリアドレスの一貫性と効率的なキャッシュ管理
    • I/Oデバイスとプロセッサ間でデータの整合性を保つ(キャッシュの一貫性を保つ)
    • シェアラブル属性を持つリクエストはローカルキャッシュをスヌープ(確認)し、他のマネージャーがキャッシュにシェアラブルデータが含まれるか確認する
AWSNOOP (0,4,5)AWDOMAINOpcode説明
5'b00000NSH, SYSWriteNoSnoopNSHまたはSYSへ書き込み
SHWriteUniquePtlSHへ書き込み
NSH, SH, SYSAtomicAtomicトランザクション(AWATOP信号が非ゼロの場合)
5'b00001NSHWriteNoSnoopFullNSHへのキャッシュラインサイズ書き込み
SHWriteUniqueFullSHへのキャッシュラインサイズ書き込み
5'b00010-Reserved-
5'b00011SHWriteBackFullSHへのキャッシュラインサイズ書き込み。コヒーレントキャッシュに保持されていたラインで、Dirty状態
5'b00100-Reserved-
5'b00101SHWriteEvictFullSHへのキャッシュラインサイズ書き込み。コヒーレントキャッシュに保持されていたラインで、Clean状態
5'b00110NSH, SHCMOデータレスリクエスト、キャッシュメンテナンス作業が必要なことを示す。操作はAWCMO信号でエンコードされる。
5'b00111NSH, SH, SYSWriteZeroキャッシュラインサイズの書き込み。すべてのバイト値がゼロ
5'b01000SHWriteUniquePtlStashキャッシュへのアロケーションが示されるSHへの書き込み。キャッシュラインサイズまたはそれ以下
5'b01001SHWriteUniqueFullStashキャッシュラインサイズの書き込み。キャッシュへのアロケーションが示されるSH
5'b01010NSH, SHWritePtlCMOAWCMO信号に従って、キャッシュされた行のコピーを消去もしくは無効化。キャッシュラインサイズまたはそれ以下の書き込み。
5'b01011NSH, SHWriteFullCMOAWCMO信号に従ってキャッシュされた行のコピーを消去または無効化
5'b01100NSH, SHStashOnceSharedキャッシュラインをキャッシュに取り込むべきであることを示すデータなしリクエスト。そのラインの他のコピーを無効にする必要はない。キャッシュラインサイズ操作
5'b01101NSH, SHStashOnceUniqueキャッシュラインをキャッシュにフェッチする必要があることを示すデータなしのリクエスト。他のすべてのコピーを無効にすることを推奨。キャッシュラインサイズ操作
5'b01110NSH, SH, SYSStashTranslation変更をMMUへキャッシュすべきであることを示すデータなしリクエスト
5'b01111NSH, SHPrefetchManegerがアドレス指定されたキャッシュラインを後で読み取る可能性のあることを示すデータなし要求
5'b10000SYSWriteDeferrableSubordinateがDEFER or UNSUPPORTEDを返すことのできる64byteのAtomic書き込み
5'b10001NSH, SH, SYSUnstashTranslation変更が再び使用されることの低いことを示すデータなし要求
5'b10010NSH, SHInvalidateHintキャッシュラインが不要になり、無効にできることを示すデータなし要求。ライトバックは許可されるが必須ではない。キャッシュラインサイズ操作
5'b10011
to 5'b11111
-Reserved-
  • Source : Manager
ARSNOOP (0,4)ARDOMAINOpcode説明
4'b0000NSH, SYSReadNoSnoopNSHまたはSYSから読み込み
SHReadOnceManagerがキャッシュしないSHから読み込み
4'b0001SHReadSharedManagerがキャッシュする可能性のあるSHからキャッシュラインサイズ読み込み、Dirty状態の可能性
4'b0010SHReadCleanManagerがキャッシュする可能性のあるSHからキャッシュラインサイズ読み込み、Dirty状態でない
4'b0011-Reserved-
4'b0100SHReadOnceCleanInvalidManagerがキャッシュしないSHから読み込み、キャッシュコピーは消去して無効化推奨、キャッシュラインサイズ or それ以下
4'b0101SHReadOnceMakeInvalidManagerがキャッシュしないSHから読み込み、キャッシュコピーは書き戻しなしで無効化推奨、キャッシュラインサイズ or それ以下
4'b0110-Reseved-
4'b0111-Reseved-
4'b1000NSH,SHCleanSharedキャッシュラインの全てのコピーを消去、キャッシュラインサイズ or Regular
4'b1001NSH,SHCleanSharedキャッシュラインの全てのコピーを消去し無効化、キャッシュラインサイズ or Regular
4'b1010NSH, SHCleanSharedPersistキャッシュラインの全てのコピーを消去、削除されたデータはPoint of Persistence or Point of Deep PersistenceをPass
4'b1011-Reserved-
4'b1100-Reserved-
4'b1101NSH, SHMakeInvalidAキャッシュラインのコピーを消去し無効化、Dirty Dataをメモリに書き込む必要なし、キャッシュラインサイズ or Regular
4'b1110SHDVM CompleteDVM同期メッセージの完了を示す
4'b1111-Reserved-
  • Source : Manager
  • 異なるキャッシュ間でデータの一貫性を保つ
  • Point of Persistence(PoP)
    • システム階層内でデータが永続的であるとみなされるポイント
    • 電源が切れた場合でもデータは失われず保存される
    • 書き込みがキャッシュを超えてメインメモリに到達したらPoPに達する
  • Point of Deep Persistence(PoDP)
    • データ永続性に関するより強い保証を提供するポイント
    • バックアップバッテリーが失われた場合にもデータが保存される
    • フラッシュメモリや他の不揮発性ストレージに書き込まれた時点でPoDPに達する
AWSTASHNID[10:0]ノード識別子
AWSTASHNIDENAWSTASHNIDのEnable信号
  • Source : Manager
  • AWSTASHID信号が有効であることを示す
AWSTASHLPID[4:0]論理プロセッサの識別子
  • Source : Manager
  • スタッシュ操作のターゲット内論理プロセッサの識別子
  • non-stash transactionではLowにする
AWSTASHLPIDENAWSTASHLPIDのEnable信号
  • Source : Manager
  • AWSTASHLPIDEN信号が有効であることを示す
xTRACEシステム全体のトランザクション追跡
  • Source : Manager (AWTRACE,WTRACE,ARTRACE, CRTRACE)
  • Source : Subordinate (BTRACE,RTRACE, ACTRACE)
  • 各チャネルに関連付けられる
  • システムのデバック、トレース、パフォーマンス測定をサポート
  • トレース信号の動作は実装定義(IMPLEMENTATION DEFINED)
  • トレース信号がアサートされたリクエストに対するレスポンスは、トレース信号がアサートされることを推奨
xLOOP (0..8)ループバック信号
  • Source : Manager (AWLOOP, ARLOOP)
  • Source : Subordinate (BLOOP, RLOOP)
  • リクエストからレスポンスに反映される必要のあるユーザー定義信号
  • トランザクションに関する情報をインデックス付きテーブルに保存することを許可する
  • レスポンスはトランザクションIDを使用した検索の代わりに、高速なテーブルインデックスを使用して必要な情報を取得できる
AxMMUVALIDMMUによるアドレス変換有効化
  • Source : Manager
  • MMU(Memory Management Unit)
  • Deassert:アドレスは物理アドレス、変換の必要なし
  • Assert:アドレスが仮想アドレス、変換が必要(AxTAGOPは2'b00(無効))
AxMMUSECSID (0, 1, 2)LabelMeaning
2'b00Non-secureNon-secure address space
2'b01SecureSecure address space
2'b10RealmRealm address space
2'b11Reserved-
  • Source : Manager
  • リクエストの仮想アドレス空間を示す
AxMMUSID (0..32)Stream ID
  • Source : Manager
  • MMU(メモリ管理ユニット)内でリクエストを適切な変換コンテキストにマッピングするために用いられる
  • アドレス空間の管理
AWMMUSSIDVAWMMUSIDのValid信号
  • Source : Manager
  • AWMMUSIDが有効であること示す
AWMMUSSID (0..20)SubstreamID
  • Source : Manager
  • 同じStreamIDを持つリクエストに対し、異なるアプリケーションアドレスの変換を論理ブロックへ関連付ける
  • メモリ管理とリソース割り当てに用いる
AxMMUATSTフロー
deassert (Low)Stall flow
assert (High)ATST flow
  • Source : Manager (AWMMUATST, ARMMUATST)
  • ATS(Address Translation Services)
  • Version 1の仕様ではStall flowとATST flowをサポート
  • Stall flow
    • 変換フォールト時にトランザクションを待たせ、ソフトウェアがフォールトを処理するまで待つ(長い遅延やデッドロックの恐れ)
  • ATST flow
    • トランザクションがすでにATSによって変換されていることを示し、変換フォールト時にはSLVERRレスポンスを返す
AxMMUFLOW[1:0]SMMU flow type
2'b00stall
2'b01ATST
2'b10NoStall
2'b11PRI
  • Source : Manager (AWMMUFLOW, ARMMUFLOW)
  • SMMU(System Memory Management Unit)
  • 変換フォールトに遭遇した際にどのフローを使用するか指定する
  • Version 2の仕様でサポート
  • Stall flow
    • SMMUが変換フォールトに遭遇した場合、要求を一時停止し処理を中断せずに続行
  • ATST flow
    • 特定のアドレスタイプの処理をサポートする
  • NoStall flow
    • SMMUが変換フォールトに遭遇した場合、要求を停止せずに処理を続行
  • PRI flow
    • PRI(Page Request Interface)
    • 変換フォールトが発生したページの情報を提供し、ページリクエストを再執行する
AxPBHA[3:0]ページベースのハードウェア属性
  • Source : Manager (AWPBHA, ARPBHA)
  • Page-based Hardware Attributes (PBHA)
  • 変換テーブルエントリの情報をトランザクションに注釈(ディスクリプタ)として追加し、システム全体で伝搬させる
  • トランザクション要求のディスクリプタ、使用方法は実装定義
AxNSAID[3:0]Non-secure Access ID
  • Source : Manager (AWNSAID, ARNSAID)
  • Default : 4'h0
  • 非セキュアアクセス識別子(NSAID)
  • NSAIDをチェックしてメモリ位置へのアクセスを許可、拒否を行う
  • アクセス権限の管理は実装依存、通常メモリ保護ユニット(MPU)を使用して実装される
AxSUBSYSID (0..8)Subsystem ID
  • Source : Manager (AWSUBSYSID, ARSUBSYSID)
  • トランザクションがどのサブシステムからの要求であるか示す
  • システム内のメモリやデバイスを共有する部分でのトランザクションアドレスの識別や分離
  • 具体的な使用方法は実装依存
  • 共有メモリやデバイスの分離、セキュリティや安全性の向上、パフォーマンスモニタリングなどに利用される
AWATOP[5:0]Atomic transaction opcode説明
6'b000000Non-atomic operation通常のメモリ操作として扱う
6'b01exxxAtomicStoree bit(=エンディアン),下位ビット(操作)
6'b10exxxAtomicLoade bit(=エンディアン),下位ビット(操作)
6'b110000AtomicSwapメモリ位置とレジスタ値を交換
6'b110001AtomicCompareメモリ位置の値とレジスタ値を比較、一致すれば新しい値に更新
  • e bit(AWATOP[3])
    • deassert : little-endian
    • assert : big0endian
AWATOP[2:0]Operation説明
3'b000ADDAdd
3'b001CLRBit clear
3'b010EORExclusive OR
3'b011SETBit set
3'b100SMAXSigned maximum
3'b101SMINSigned minimum
3'b110UMAXUnsigned maximum
3'b111UMINUnsigned minimum
  • Source : Manager
  • Atomicトランザクションサポート信号
  • AWATOP[3]:
    • アサート時(1):ビッグエンディアン
    • デアサート(0):リトルエンディアン
AxMPAM(0,11,12,14,15)説明マッピング
PARTID幅 9, PMG幅 1RME_Support is False
 MPAM_NSセキュリティ指標AxMPAM[0]
 PARTIDパーティション識別子AxMPAM[9:1]
 PMGパフォーマンスモニタグループAxMPAM[10]
PARTID幅 9, PMG幅 1RME_Support is True
 MPAM_SP物理アドレス空間指標AxMPAM[1:0]
 PARTIDパーティション識別子AxMPAM[10:2]
 PMGパフォーマンスモニタグループAxMPAM[11]
PARTID幅 12, PMG幅 1RME_Support is False
 MPAM_NSセキュリティ指標AxMPAM[0]
 PARTIDパーティション識別子AxMPAM[12:1]
 PMGパフォーマンスモニタグループAxMPAM[13]
PARTID幅 12, PMG幅 1RME_Support is True
 MPAM_NS物理アドレス空間指標AxMPAM[1:0]
 PARTIDパーティション識別子AxMPAM[13:2]
 PMGパフォーマンスモニタグループAxMPAM[14]
  • Source : Manager (AWMPAM, ARMPAM)
  • Memory System Resource Partitioning and Monitoring (MPAM)
  • 物理および仮想マシンのためのメモリリソースのパーティショニング監視
  • 用途:メモリコンポーネントでリソース割り当て
  • メモリ使用量の監視(性能チューニング、コストの計算)
xIDUNQUnique ID indicator
  • Source : Manager (AWIDUNQ,ARIDUNQ)
  • Source : Subordinate (BIDUNQ,RIDUNQ)
  • システム内のトランザクションの一意性と順序付けを管理
  • 効率的なメモリ操作をサポート
  • アサート:転送のIDがユニークであることを示す
  • AxIDUNQ:Managerから同じAxIDを持つoutstandingトランザクションが存在してはいけない
  • AxIDUNQがデアサートされたとき、xIDUNQも応答完了部分でデアサートされる必要がある
  • AxIDUNQがアサートされたとき、xIDUNQも応答完了部分でアサートされる必要がある

AWCMO
(0,2,3)
Label説明
3'b000CleanInvalidClean and invalidate
3'b001CleanSharedClean only
3'b010CleanSharedPersistClean to the Point of Persistence
3'b011CleanSharedDeepPersistClean to the Point of Deep Persistence
3'b100CleanInvalidPOPAClean and invalidate to the Point of Physical Aliasing
3'b101
to
3'b111
Reserved-
  • Source : Manager
  • Cache maintenance operations (CMO)
  • 効率的なメモリ操作とキャッシュ管理
AWTAGOP[1:0]OperationMeaning
2'b00Invalid
  • タグ無効
  • WTAGUPDATE:非アサート
  • WTAG=All'h0
2'b01Transfer
  • タグがクリーン、タグチェック実行不要
  • 書き込み完了者はデータを割り当てている場合、タグをキャッシュ可能
  • WTAGUPDATE:非アサート
  • WTAG:トランザクションコンテナ内すべてのバイトに対してbit有効
2'b10Update
  • メモリ内のタグWTAGUPDATEに従って更新必要
  • WTAGUPDATE:どのbitもアサートされる可能性がある
  • アサートされているWTAGUPDATE bitに対しWTAGは有効
2'b11Match書き込みSTRBがアサートされているタグがメモリから取得した割り当てタグと一致するかチェックする必要がある。
一致していない場合でもデータをメモリに更新する
WTAGUPDATE:非アサート
WTAG:WSTRBによって有効化されているbyteレーンに対し有効
  • Source : Manager
  • MTE(Memory Tagging Extension)タグ操作を制御
  • メモリ安全性の違反を検出する
ARTAGOP[1:0]OperationMeaning
2'b00Invalidデータとタグは一緒に返されない。RTAGは無効(0)
2'b01Transfer各データの転送には有効なタグが含まれる。16byte granuleごとにタグが送信される(アドレスが16byteアラインメントでなくても良い)
2'b10Reserved-
2'b11Fetchデータは無効、タグのみが送信される。Managerはデータを使用してはならず、トランザクションはキャッシュラインサイズ。16byte granuleごとにタグが送信される(アドレスが16byteアラインメントでなくても良い)
  • Source : Manager
  • データと一緒に割り当てタグを返すことを要求する信号
  • ARTAGOPがInvalidでない場合、タグがデータとともに送信される
AxMECID (0..16)RMEメモリ暗号化コンテキスト識別子
  • Source : Manager
  • Memory Encryption Contexts(MEC)
  • Arm Realm Management Extension (RME)の拡張機能
  • メモリアクセスごとに割り当てられ、暗号化エンジンによって暗号化コンテキストのインデックスとして使用される
AxNSEAxPROT[1]物理アドレス空間MECID
1'b01'b0SecureMust be 0
1'b01'b1Non-secureMust be 0
1'b11'b0RootMust be 0
1'b11'b1RealmAny value

xTAG (ceil(DATA_WIDTH/128)*4)Memory Tag
  • Source : Manager (WTAG)
  • Source : Subordinate (RTAG)
  • タグ情報を転送
  • データに関連付けられるメモリタグ
  • 役割:キャッシュ/メモリ管理の効率化
  • 128bitデータごとに4bitのタグ
  • Has the same validity rules as the associated data
  • 無効なタグは0推奨
WTAGUPDATE (ceil(DATA_WIDTH/128))Memory Tag update
  • Source : Manager
  • AWTAGOP(2'b10:Update)のときメモリに書き込むべきタグを示す
  • タグの4bitごとに1bit
xPOISON (ceil(DATA_WIDTH/64))データの破損を示す
  • Source : Manager(WPOISON)
  • Source : Subordinate(RPOISON)
  • データ破損の可能性を他のコンポーネントへ通知する
  • データ64bitごとに1bitの粒度でサポート(8byteアラインメント)
  • AxSIZE<64bitの場合、各データ転送でPOISON bitが異なることがある
BCOMPトランザクションの完了応答
  • Source : Subordinate
  • Default : 1'b1
  • Persistenceのためのキャッシュメンテナンスが必要な場合 or
  • メモリタグ付けが必要な場合に存在する
  • Persistenceのためのキャッシュ操作(CMOs for Persistence)
    • データが揮発性メモリから永続的なメモリに移動されることを保証する操作
  • メモリのタグ付け(MTE)
    • メモリの安全性違反(バッファオーバーフロー、メモリリークなど)の検出メカニズム
    • 特定用途向けにメモリ領域が割り当てられるとAllocation Tag値が与えられる
    • メモリがアクセスされると、物理アドレスに対応するPhysical Tag値が与えられる
    • Allocation TagとPhysical Tagが一致しない場合警告を生成
BPERSISTPersist応答
  • Source : Subordinate
  • Default : 1'b0
  • Persistence Cache Maintenance Operation (PCMO)の応答
  • データがPeristence Point(PoP)または、Deep Peristence Point(PoDP)に到達を示す
  • ManagerでBPERSISTアサート数をカウントして、outstanding persistent operationsが無いことを判断 
  • システムメモリ整合性とデータ永続性を確保
BTAGMATCH[1:0]Operation説明
2'b00None比較結果が存在しない(not a match transaction)
2'b01Separate比較結果が別の応答信号に含まれる
2'b10Failタグ不一致
2'b11Passタグ一致
  • Source : Subordinate
  • Memory Tagging Extension (MTE)において、Writeに対するタグ比較結果を示す
  • BCOMPとセットで使用される
BTAGMATCH[1:0]BCOMP説明
2'b001'b0tag Matchのレスポンスとして不適切
2'b001'b1tag Matchのレスポンスとして不適切
2'b011'b0不適切
2'b011'b1完了応答、二部構成応答の一方
2'b101'b0タグ不一致、二部構成応答の一方
2'b101'b1タグ不一致 or MTE Match 非サポート
2'b111'b0タグ一致、二部構成応答の一方
2'b111'b1タグ一致

xBUSY[1:0]MeaningManager behavior
2'b00Not busy投機的リクエストの増加
2'b01Optimally busy変更なし
2'b10Quite busy投機的リクエストを減少させる
2'b11Very busy投機的リクエストを大幅に減少させる
  • Source : Subordinate (BBUSY, RBUSY)
  • Default : 2'b00
  • Subordinateが現在の活動レベルを表すのに使用
  • Managerが発行レートや投機的リクエストの数を制御するのに用いる
  • 投機的リクエスト(speculative requests):システムやプロセッサが将来のデータや命令の必要性を予測し、リクエストを発行する
ARCHUNKENデータ転送の効率向上
  • Source : Manager
  • Default : 1'b0
  • assert : Subordinateは128bit chunkで読み取りデータを送信可能
  • Assert条件
    • サイズが128bit以上
    • サイズがデータチャネル幅と等しいか、転送長が1
    • アドレスが16byteに整列
    • バーストがINCR または WRAP
    • OpcodeがReadNoSnoop, ReadOnce, ReadOnceCleanInvalid, または ReadOnceMakeInvalid
RCHUNKVRead Data Chunk VALID
  • Source : Subordinate
  • Default : 1'b0
  • RCHUNKNUMとRCHUNKSTRBが有効であることを示す
RCHUNKNUM (0,1,5,6,7,8)転送されるチャンク番号
  • Source : Subordinate
  • チャンクはトランザクションのデータ幅とベースアドレスに従って、0から番号が付けられる
  • 0 or 1 if DATA_WIDTH < 128
  • 8 if DATA_WIDTH == 128
  • 7 if DATA_WIDTH == 256
  • 6 if DATA_WIDTH == 512
  • 5 if DATA_WIDTH == 1024
RCHUNKSTRB転送に有効なデータチャンクを示す
  • Source : Subordinate
  • 各bitは128bitのデータに対応
  • 0 or 1 if DATA_WIDTH < 256
  • 2 if DATA_WIDTH == 256
  • 4 if DATA_WIDTH == 512
  • 8 if DATA_WIDTH == 1024

Snoop channel:
DVMメッセージ転送に使用される

ACADDR(1..64)DVMメッセージのペイロード
  • Source : Subordinate
  • ペイロード:ヘッダー情報を除いたデータ本体
  • メッセージフィールド
    • 仕様書 (Table A15.20: Field mappings for TLB Invalidate messages)参照
ACVMIDEXT[3:0]VMID extension for DVM messages
  • Source : Subordinate
  • DVMメッセージで16bit VMIDをサポートするための拡張機能
AWAKEUPRead Write Channelに関連付けられたwake up信号
  • Source : Manager
  • インターフェースに関連する情報があることを示すためのオプション信号
  • 電源、クロック制御を行うコンポーネント(例:クロックコントローラーなど)にルーティングされ、接続されたコンポーネントに対して電源とクロックを有効にするために使用
  • Managerからのリクエストが準備できていることを示す
  • ARVALID,AWVALID,WVALIDなどの1サイクル前にアサートされることを推奨
  • SubordinateのREADYがアサートされるまでアサートされたままである必要がある
ACWAKEUPDVMメッセージトランザクションの開始
  • Source : Subordinate
  • サブオーディネイトインターフェース(通常はインターコネクト上)からの出力信号
  • DVM(Distributed Virtual Memory)メッセージトランザクションの開始を示す
  • ACVALIDの少なくとも1サイクル前にアサート推奨
  • ACVALID/ACREADYハンドシェイクが完了するまでアサートされたままでなければならない
VAxQOSACCEPT[3:0]QOS値
  • Source : Subordinate (VAWQOSACCEPT, VARQOSACCEPT)
  • Default : 4'h0
  • Axチャンネルからのリクエストを受け入れるためのQoS値を示す
  • リクエストの効率的な利用を確保し、システムの性能を維持するためリクエストを優先付ける
SYSCOREQDVMメッセージの受信を管理
  • Source : Manager
  • DVM : Distributed Virtual Memory
  • システムのコヒーレンシ接続を制御
  • 受信リクエスト : HIGH
  • インターコネクトはDVMメッセージの受信が有効であることをSYSCOACKをHIGHに設定して示す
  • 停止リクエスト : LOW
  • インターコネクトはDVMメッセージの受信が無効であることをSYSCOACKをLOWにして示す
SYSCOACKDVMメッセージの有効/無効
  • Source : Subordinate
  • インターコネクトから送信される
  • DVMメッセージが有効 : HIGH
  • DVMメッセージ無効 : LOW
StateSYSCOREQSYSCOACKRules
Disabled1'b01'b0Manager : 
  • 変換を実行するため、DVM-managed translation tableデータを取得して使用してはいけない
  • DVM-managed translationsを実行する必要があるときは、SYSCOREQをアサートする
Subordinate : 
  • DVM message Requestを発行してはいけない
  • DVM Sync Requestを発行してはいけない
Connect1'b11'b0 Manager : 
  • 変換を実行するため、DVM-managed translation tableデータを取得して使用してはいけない
  • DVM message Requestを受信して応答できる必要がある
  • DVM-managed translationsを使用する前にSYSCOACKがアサートされるのを待機
Subordinate : 
  • ManagerへのDVM messageを有効としたときSYSCOACKをアサート
Enabled1'b11'b1 Manager : 
  • DVM-managed translation tableデータを取得して使用できる
  • DVM message Requestを受信して応答できる必要がある
  • DVM-managed translattion tableデータの仕様が終了し、低電力状態に入る場合SYSCOREQをデアサートする。前回フェッチしたデータを使用するトランザクションは全て完了している必要がある。
Subordinate : 
  • マネージャーにDVM messageを送信できる
Disconnect1'b01'b1 Manager : 
  • DVM-managed translation tableデータを取得して使用してはいけない
  • DVM message Requestを受信して応答できる必要がある
  • DVM-managed logicを無効化する前にSYSCOACKがdeassertされるのを待機する
Subordinate : 
  • SYSCOACKをデアサートする前にoutstandingのすべてのDVM messageが応答を受信するのを待機する必要がある
  • 新しいDVM messageを発行してはいけない
  • first partのDVM messageがすでに発行されている場合は、second partのDVM messageを発行する必要がある


Interface control signals

インターフェースの動作を制御するために使用するManager IFへの入力

BROADCASTATOMICAtomic transaction制御 Input
  • Source : Tie-off
  • Default : 1'b1
  • deassert : Managerはアトミックトランザクションを発行しない
BROADCASTSHAREABLEShareable transactions制御 Input
  • Source : Tie-off
  • Default : 1'b1
  • deassert : すべてのトランザクションは送信前にNon-shareableに変換される
BROADCASTCACHEMAINTcache maintenance operations制御 Input
  • Source : Tie-off
  • Default : 1'b1
  • インターフェースからのCMOの発行制御
  • deassert : CleanShared, CleanInvalid, MakeInvalid リクエストは発行されない
BROADCASTCMOPOPACleanInvalidPoPA CMO制御 Input
  • Source : Tie-off
  • リセット時にCleanInvalidPoPAの伝搬を制御
  • deassert : CleanInvalidPoPAはCleanInvalidに変換される
BROADCASTPERSISTCleanSharedPersist and CleanSharedDeepPersist制御 Input
  • Source : Tie-off
  • CleanSharedPersistおよびCleanSharedDeepPersist CMOの発行を制御
  • deassert : CleanSharedPersistおよびCleanSharedDeepPersistはCleanSharedに変換される
  • standalone CMOとwrite CMOに適用される

プロトコルごとの信号有無


Manager / Subordinate
〇:必須
△:オプション
×:なし

SignalAXI5ACE5-LiteACE5-
LiteDVM
ACE5-
LiteACP
AXI5-Lite
ACLK〇/〇〇/〇〇/〇〇/〇〇/〇
ARESETn〇/〇〇/〇〇/〇〇/〇〇/〇
AWVALID〇/〇〇/〇〇/〇〇/〇〇/〇
AWREADY〇/〇〇/〇〇/〇〇/〇〇/〇
AWID△/〇△/〇△/〇△/〇△/〇
AWADDR〇/〇〇/〇〇/〇〇/〇〇/〇
AWREGION△/△△/△△/△×/××/×
AWLEN△/〇△/〇△/〇△/〇×/×
AWSIZE△/〇△/〇△/〇×/×△/△
AWBURST△/〇△/〇△/〇×/××/×
AWLOCK△/△△/△△/△×/××/×
AWCACHE△/△△/△△/△△/△×/×
AWPROT〇/△〇/△〇/△〇/△〇/△
AWNSE△/△△/△△/△×/××/×
AWQOS△/△△/△△/△×/××/×
AWUSER△/△△/△△/△△/△△/△
AWDOMAIN△/△〇/〇〇/〇〇/〇×/×
AWSNOOP△/△△/〇△/〇△/〇×/×
AWSTASHNID△/△△/△△/△△/△×/×
AWSTASHNIDEN△/△△/△△/△△/△×/×
AWSTASHLPID△/△△/△△/△△/△×/×
AWSTASHLPIDEN△/△△/△△/△△/△×/×
AWTRACE△/△△/△△/△△/△△/△
AWLOOP△/△△/△△/△×/××/×
AWMMUVALID△/△△/△×/××/××/×
AWMMUSECSID△/△△/△×/××/××/×
AWMMUSID△/△△/△×/××/××/×
AWMMUSSIDV△/△△/△×/××/××/×
AWMMUSSID△/△△/△×/××/××/×
AWMMUATST△/△△/△×/××/××/×
AWMMUFLOW△/△△/△×/××/××/×
AWPBHA△/△△/△△/△×/××/×
AWMECID△/△△/△△/△×/××/×
AWNSAID△/△△/△△/△×/××/×
AWSUBSYSID△/△△/△△/△×/×△/△
AWATOP△/△△/△△/△×/××/×
AWMPAM△/△△/△△/△△/△×/×
AWIDUNQ△/△△/△△/△△/△△/△
AWCMO△/△△/△△/△×/××/×
AWTAGOP△/△△/△△/△×/××/×
WVALID〇/〇〇/〇〇/〇〇/〇〇/〇
WREADY〇/〇〇/〇〇/〇〇/〇〇/〇
WDATA〇/〇〇/〇〇/〇〇/〇〇/〇
WSTRB△/〇△/〇△/〇△/〇△/〇
WTAG△/△△/△△/△×/××/×
WTAGUPDATE△/△△/△△/△×/××/×
WLAST〇/△〇/△〇/△〇/△×/×
WUSER△/△△/△△/△△/△△/△
WPOISON△/△△/△△/△△/△△/△
WTRACE△/△△/△△/△△/△△/△
BVALID〇/〇〇/〇〇/〇〇/〇〇/〇
BREADY〇/〇〇/〇〇/〇〇/〇〇/〇
BID△/〇△/〇△/〇△/〇△/〇
BIDUNQ△/△△/△△/△△/△△/△
BRESP△/△△/△△/△△/△△/△
BCOMP△/△△/△△/△×/××/×
BPERSIST△/△△/△△/△×/××/×
BTAGMATCH△/△△/△×/××/××/×
BUSER△/△△/△△/△△/△△/△
BTRACE△/△△/△△/△△/△△/△
BLOOP△/△△/△△/△×/××/×
BBUSY△/△△/△△/△×/××/×
ARVALID〇/〇〇/〇〇/〇〇/〇〇/〇
ARREADY〇/〇〇/〇〇/〇〇/〇〇/〇
ARID△/〇△/〇△/〇△/〇△/〇
ARADDR〇/〇〇/〇〇/〇〇/〇〇/〇
ARREGION△/△△/△△/△×/××/×
ARLEN△/〇△/〇△/〇△/〇×/×
ARSIZE△/〇△/〇△/〇×/×△/△
ARBURST△/〇△/〇△/〇×/××/×
ARLOCK△/△△/△△/△×/××/×
ARCACHE△/△△/△△/△△/△×/×
ARPROT〇/△〇/△〇/△〇/△〇/△
ARNSE△/△△/△△/△×/××/×
ARQOS△/△△/△△/△×/××/×
ARUSER△/△△/△△/△△/△△/△
ARDOMAIN△/△〇/〇〇/〇〇/〇×/×
ARSNOOP△/△△/〇△/〇△/△×/×
ARTRACE△/△△/△△/△△/△△/△
ARLOOP△/△△/△△/△×/××/×
ARMMUVALID△/△△/△×/××/××/×
ARMMUSECSID△/△△/△×/××/××/×
ARMMUSSID△/△△/△×/××/××/×
ARMMUATST△/△△/△×/××/××/×
ARMMUFLOW△/△△/△×/××/××/×
ARPBHA△/△△/△△/△×/××/×
ARMECID△/△△/△△/△×/××/×
ARNSAID△/△△/△△/△×/××/×
ARSUBSYSID△/△△/△△/△×/×△/△
ARMPAM△/△△/△△/△△/△×/×
ARCHUNKED△/△△/△△/△△/△×/×
ARIDUNQ△/△△/△△/△△/△△/△
ARTAGOP△/△△/△△/△×/××/×
RVALID〇/〇〇/〇〇/〇〇/〇〇/〇
RREADY〇/〇〇/〇〇/〇〇/〇〇/〇
RID△/〇△/〇△/〇△/〇△/〇
RIDUNQ△/△△/△△/△△/△△/△
RDATA〇/〇〇/〇〇/〇〇/〇〇/〇
RTAG△/△△/△△/△×/××/×
RRESP△/△△/△△/△△/△△/△
RLAST△/〇△/〇△/〇△/〇×/×
RUSER△/△△/△△/△△/△△/△
RPOISON△/△△/△△/△△/△△/△
RTRACE△/△△/△△/△△/△△/△
RLOOP△/△△/△△/△×/××/×
RCHUNKV△/△△/△△/△△/△×/×
RCHUNKNUM△/△△/△△/△△/△×/×
RCHUNKSTRB△/△△/△△/△△/△×/×
RBUSY△/△△/△△/△×/××/×
ACVALID△/△×/×〇/〇×/××/×
ACREADY△/△×/×〇/〇×/××/×
ACADDR△/△×/×〇/〇×/××/×
ACVMIDEXT△/△×/×△/△×/××/×
ACTRACE△/△×/×△/△×/××/×
CRVALID△/△×/×〇/〇×/××/×
CRREADY△/△×/×〇/〇×/××/×
CRTRACE△/△×/×△/△×/××/×
AWAKEUP△/△△/△△/△△/△△/△
ACWAKEUP△/△×/×△/△×/××/×
VARQOSACCEPT△/△△/△△/△×/××/×
VAWQOSACCEPT△/△△/△△/△×/××/×
SYSCOREQ△/△×/×△/△×/××/×
SYSCOACK△/△×/×△/△×/××/×
BROADCASTATOMIC△/×△/×△/××/××/×
BROADCASTSHAREABLE△/×△/×△/×△/××/×
BROADCASTCACHEMAINT△/×△/×△/××/××/×
BROADCASTCMOPOPA△/×△/×△/××/××/×
BROADCASTPERSIST△/×△/×△/××/××/×


このエントリーをはてなブックマークに追加