OCP(Open Core Protocol)技術解説 ―― CPUに依存しないオンチップ・バス・プロトコルがマルチコアを効率良く動作させる

鈴木一可

tag: 半導体

技術解説 2007年5月10日

 このように,すべての転送はリクエスト・フェーズから始まります.また,マスタがMCmdを発行することからリクエスト・フェーズは始まります.つまりOCP規格では,マスタがコマンドを発行することで,あらゆる転送が開始されます.また,すべてのフェーズにはそれぞれ,フェーズを開始させる信号とフェーズを終了させる信号があり(一部はオプション信号だが),マスタ・スレーブのつごうに合わせて自由に各フェーズを開始・終了できるようになっています.これにより,マスタ・スレーブともにオーバ・ラン(バッファあふれ)注2を防ぐことができ,余計なバッファを持たずにすみます.

 各フェーズは独立して動作可能です.例えば,読み出し転送のレスポンス・フェーズは,リクエスト・フェーズの後のどのタイミングからでも開始できます.また,あるリクエストに対するレスポンスが返る前に,さらにリクエストを発行することもできます(このように,コマンドとレスポンスを独立したタイミングにできることを「スプリット・トランザクション」と呼ぶ).これにより,IPコアのパイプライン処理に対応することができます.

注2;データを受ける側の処理速度が送る側の速度より遅いため,処理できない命令が受け側のバッファにたまってしまい,最後にはバッファからあふれてしまうこと.

2)オプション信号

 オプションで用意されている信号を表1に示します.オプション信号の一つとして,スレッド信号(MThreadID,SThreadID,MDataThreadID)があります.一般的に,IPコア内では同時に複数の処理が行われ,それぞれの処理のコマンドやデータがそれぞれのタイミングで共通のインターフェースに現れてきます.スレッド信号を使うことにより,それぞれの処理を独立した処理単位(スレッド)として扱うことができます.

データフロー信号(基本機能拡張)
アドレス空間 MAddrSpace
バイト・イネーブル MByteEn
バースト MBurst
データ・ハンドシェイク MDataValid,SDataAccept
マスタ・レスポンス受領 MRespAccept
データ・フロー信号(応用機能拡張)
スレッド MThreadID,SThreadID,MDataThreadID
スレッド・ビジー MThreadBusy,SThreadBusy
コネクション MConnID
サイドバンド信号
リセット Reset
割り込み SInterrupt
エラー SError
フラグ MFlag,SFlag
コントロール,ステータス Control,Status
テスト信号
スキャン Scanctrl,Scanin,Scanout
JTAG TCK,TDI,TDO,TMS,TRST_N

〔表1〕OCP 1.0のオプション信号

 前述のようにOCP 1.0では,マスタがレスポンスを受け取る前に複数のリクエストを発行することが可能です.一方,スレーブは(OCP 1.0のデフォルトでは)リクエストの発行順にレスポンスを返さなければなりません.これに対して,オプションのスレッド信号を使う(マルチスレッドにする)ことにより,リクエストの発行順とは異なった順序でレスポンスを返すことができます(図5).つまり,レスポンスが遅いコアに対してリクエストを先に出していた場合にも,そのレスポンスがほかのレスポンスを妨げる状況を防ぐことができ,転送の効率化を図れます.

zu05_01.gif
〔図5〕OCP 1.0のタイミング図
AとBは別のスレッドを表す.スレッド信号を使うことにより,B1とスレッドが異なるA2のレスポンスを,先に発行されたB1よりも早く返すこともできる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日