OCP(Open Core Protocol)技術解説 ―― CPUに依存しないオンチップ・バス・プロトコルがマルチコアを効率良く動作させる
●基本信号を最小限に抑えたOCP 1.0
OCP規格の仕様としては,OCP-IPがOCP 1.0とOCP 2.0をリリースしています注1.このOCP 1.0の仕様は2001年に,OCP 2.0の仕様は2003年9月に公開されています.まず,OCP 1.0の概要を説明します.
OCP規格の基本的な考えかたは,「マスタとスレーブの1対1接続.3ステート信号を持たず,すべて単方向の信号で構成されている」ということです.また,すべての信号は,転送クロックに同期してやりとりされます.したがって,役割が明確で物理設計にも配慮した仕様である,と言えます.OCP 1.0は,最小限必要なベーシック信号と数多くのオプション信号から構成されています.
注1;OCP 2.0の仕様(正式版)とデータシートはすでに公開されているが,OCP 2.0用のツール「CoreCreator」はまだ完成していない.2004年1月までに完成する予定.
1)ベーシック信号
ベーシック信号を図3に示します.頭の文字が"M"で始まる信号はマスタが出力してスレーブに送る信号であり,"S"で始まる信号はスレーブが出力してマスタに送る信号です.すべての転送は,マスタがスレーブにコマンドを発行することから始まります.転送は,いくつかのシンプルなフェーズから成り立っています.
〔図3〕OCP 1.0のベーシック信号
OCP 1.0では,マスタとスレーブが1対1で接続する.ベーシック信号には,マスタが出力するMCmd,MAddr,Mdata,スレーブが出力するSCmdAccept,SResp,SDataがある.
読み出し転送(図4(a))は,リクエスト・フェーズとレスポンス・フェーズの二つのフェーズから成ります.リクエスト・フェーズはマスタの読み出しコマンド(MCmd==010b)で始まり,スレーブのコマンド受領(SCmdAccept)で終了します.リクエスト・フェーズに続くレスポンス・フェーズは,スレーブのレスポンス(SResp)とデータ(SData)から始まり,デフォルトでは1サイクルで終了します.
デフォルトの書き込み転送(図4(b))ではレスポンスを受け取らないので,リクエスト・フェーズしかありません.マスタが書き込みコマンド(MCmd==001b)を出力することから始まり,スレーブがSCmdAcceptを返すことで終了します.デフォルトの書き込み転送では,MCmdと同時に書き込むデータ(MData)を出力します.データ・ハンドシェイク・オプションを用いることにより,MCmdとは別のタイミングでMDataを出力することもできます(図4(c)).この場合には,リクエスト・フェーズとは別に,データ・ハンドシェイク・フェーズが存在することになります.
〔図4〕基本的な読み出し転送と書き込み転送
すべての転送はリクエスト・フェーズから始まる.リクエスト・フェーズは,マスタがMCmdを発行することから始まる.