OCP(Open Core Protocol)技術解説 ―― CPUに依存しないオンチップ・バス・プロトコルがマルチコアを効率良く動作させる
また,各スレッドごとにデータが受領可能かどうかを示すスレッド・ビジー信号(SThreadBusy,MThreadBusy)があります.この信号を用いることにより,ビジーなスレッドがビジーでないスレッドの転送を止めてしまうことを防げます.さらに,スレッドとは別に,転送元の情報(種類)を転送先に伝えるコネクション信号(MConnID)も用意されています.
サイドバンド信号としては,ユーザが自由に定義できるフラグ信号(MFlag,SFlag)や,ソフトウェアからの読み出し/書き込みを想定したコントロール信号(Control)とステータス信号(Status)などがあります.
OCP 1.0ではこのように,データフロー信号だけでなくサイドバンド信号,テスト信号なども定義されており,IPコアのインターフェースとして十分な機能を備えています.また,必須の信号を最小限に抑え,多くの信号をオプションとして定義しているので,IPコアのインターフェースの特徴に合わせてオプション信号を選択でき,IPコアに合わせてインターフェース仕様を柔軟に決定できます.
●機能を拡張し柔軟性を増したOCP 2.0
OCP 2.0は,OCP 1.0を強化したバージョンです.ここでは,OCP 2.0で新たに盛り込まれた仕様について説明します.大きなところでは以下のようなオプション信号が追加され,またベーシック信号でも未使用のものは除去できるようになりました.
1)バースト機能の拡張
バースト転送注3については,OCP 1.0でもバースト長を付加するオプション信号(MBurst)がありました.しかし,これはバースト・サイズを参考値として示すだけのものでした.
OCP 2.0では,バースト転送(読み出し)に関して,現在アクセスしたい番地(クリティカル・ワード)からアクセスを開始するクリティカル・ワード・ファースト・バースト注4,バースト・ワード数を正確に宣言するイグザクト・レングス・バースト,一つのコマンドで複数のワードをバースト転送する単一リクエスト複数ワード・バースト,2次元的なアクセスができる2次元アドレス・バースト注5の機能が追加されました.
注3;複数の転送を一つのかたまりとして扱い,効率良く転送することをバースト転送という.
注4;クリティカル・ワード・ファースト・バーストは,プロセッサのキャッシュ・メモリを埋める(キャッシュ・フィル)ときなどに有効な転送方式である.
注5;2次元アドレス・バーストは,単一リクエスト複数ワード・バーストの応用である.単一リクエスト複数ワード・バーストではMBurstSeqをINCR(インクリメンタル)としていたが,これをXORとするとアドレスが飛び飛びで増えていき,2次元的なアクセスができるようになる.
2)レスポンスを要求する書き込み転送(Non-posted Write)
書き込み転送については,OCP 1.0ではレスポンスを必要としない書き込み転送(Posted Write)だけでした.OCP 2.0では,レスポンスを要求する書き込み転送(Non-posted Write)が追加されました(図6).
〔図6〕レスポンスを要求する書き込み転送
図4に示すOCP 1.0の書き込み転送では,レスポンス・フェーズは存在しなかった.OCP 2.0では,レスポンス・フェーズ付きの書き込み転送が追加された.
3)エンディアン情報
基本的にOCP規格ではエンディアンを意識する必要はありません.しかし,OCP 2.0では,必要に応じてOCPインターフェースに対してビッグ・エンディアンかリトル・エンディアンかの情報を付加できるようになりました.