AMBA 3.0に追加された高性能バス用のAXI仕様 ―― チャネル方式を導入し従来のAMBAバスから大きく変更
これらのバスは単に情報をバス上に載せるだけの信号であり,情報を外部デバイスに渡す手順自体は,ほかのバスや制御信号とのタイミングで定義されています.手順としては以下のようになります(図4).
〔図4〕AHBのタイミング図
アドレスと制御信号を送信し,それに対してデータを送信して,応答するという一連の流れと順序が決められている.遅いデバイスがデータの準備に手間どると,その間アドレス・バスは次に進めず,バスの効率が下がる.また,高速なデバイスが後続の転送を行う場合,その高速性が生かせない.
1)1サイクルの間,マスタ(CPU)がアドレス・バス(HADDR)にアドレスを載せ,制御信号(Control)にトランザクション注2の属性を載せる.
2)(データ読み出しの場合)次のサイクルでスレーブ(デバイス)が読み出しデータ・バス(HRDATA)にデータを載せ,応答を応答信号(HRESP)に載せる.
3)(データ書き込みの場合)マスタが書き込みデータを書き込みデータ・バス(HWDATA)に載せて,スレーブが応答を応答信号に載せる.
注2;命令の発行から命令処理終了までのひとまとまりの処理をトランザクションと呼んでいる.例えば読み出し処理の場合,読み出し命令を発行してからデータを読み出すまでを指す.
この方式では,各バスに信号が載る順番やタイミング,バス相互の関係によってデータの転送処理が進んでいきます.したがって,バス間の動作タイミングは厳密に定義されており,どれかのバスだけが独立して処理が進むことはありません.
AHB型のバスの問題点の一つは,遅いデバイスとのデータ転送が存在すると後続のデバイスとのデータ転送が待たされることです.例えば,アドレスをアドレス・バスに載せた次のサイクルでは,必ずそのアドレスに対するデータをデータ・バスで転送する必要があります.したがって,遅いデバイスがデータの準備に手間どると,その間アドレス・バスは次に進めず,バスの効率が下がります.また,高速なデバイスが後続の転送を行う場合,その高速性が生かせません.
これに対し,AXIでは次のような信号構成になっています(詳しくはコラム「AXIバスの構成と信号」を参照).
・アドレス・チャネル
・読み出しデータ・チャネル
・書き込みデータ・チャネル
・書き込み応答チャネル
従来「xxxバス」と称していたものが「xxxチャネル」になっています.AXIでは各チャネルごとに独立して情報を送出できます.例えば,AHBのような「アドレスを送出したら次のサイクルで対応するデータを必ず転送しなければならない」などの,チャネル間の手順の制約がありません.このため,ほかのチャネルのタイミングに関係なく情報をどんどん転送できます.このように,AXI仕様ではバス間が独立し,それだけで情報ストリームを送出できるので,「チャネル」という呼びかたをしています.