| 1: |
OCP転送とは何ですか。 |
| A: |
OCP 1.0には、2種類の転送があります。Postedライト転送と、リード転送です。
OCPイニシエータがライトリクエストをOCPターゲットに発行するとき、そのリクエストに関連するデータをターゲットが保存するアドレスも指定します。スレーブが、そのリクエスト、アドレス、およびデータを受信すると、Posted転送が行われます。同様に、イニシエータがリードリクエストをOCPターゲットに発行するとき、そのリクエストに関連するデータの取得先アドレスも指定します。イニシエータがデータを受信すると、リード転送が成立します。最後に、OCPはブロードキャスト転送を定義しています。これは、ライト転送と似ていますが、インターフェースに接続された複数のターゲットへ転送するためのものです。 |
|
| 2: |
OCPトランザクションとは何ですか。 |
| A: |
同じ種類の複数の転送リクエストは、1つのトランザクションにまとめることができます。これは、バーストとも呼ばれます。これは1つの長い転送(たとえばPCIで行われるような転送)ではなく、1つに結合された個別の短い(シングルOCPワードの)転送の連続であることに留意してください。 |
|
| 3: |
OCP のバースト モデルとは何ですか。 |
| A: |
OCP 1.0 では、2 つのバースト アドレス シーケンス モデルが定義されています。1 つはメモリ バースト用 (増分)
で、もう 1 つは FIFO バースト用 (ストリーム) です。また、さらに 2 つのバースト
モデルをアプリケーションで定義することができます。4 つのモデルそれぞれで、バースト コードによって個々の転送が 1 つのバースト
トランザクションに関連付けられます。OCP 2.0 ではバースト モデルが大幅に拡張され、バースト アドレス シーケンス
モデルのほか、定長 (precise) バースト、single-request multiple-data (SRMD) バースト
モデルが追加されています。さらに、Wrapping、Exclusive-Or (XOR)、Unknown の各アドレス
シーケンスがバースト アドレス シーケンス モデルのセットに追加されています。OCP 2.0 には、3 つの一般的なバースト
モデルが用意されています。OCP 1.0で使用されていた不定長 (imprecise) バースト モデル、定長 (precise)
バースト モデル、Single Request Multiple Data (SRMD) バースト モデルです。 |
|
| 4: |
インクリメントバーストとストリームバーストの違いは何ですか。 |
| A: |
インクリメントバーストでは、バーストを構成する各転送ごとにターゲットアドレスがインクリメントされます。インクリメント値はOCPワードのサイズになります。ストリームバーストでは、アドレスの値は変わりません。どちらの種類のバーストでも、OCPイニシエータは、各バースト転送に伴って正しいアドレスを供給し、最後の転送をLASTとしてマークすることが必要となります。 |
|
| 5: |
これらのバーストコードは何を表していますか。 |
| A: |
不定長 (imprecise) バーストの場合、バースト コードは、バースト
トランザクションが続行される期間に関するイニシエータからターゲットへのヒントにすぎません。バーストに関連する最後の転送には、LAST
というバースト タグ値が付けられます。これは、完了を確実に解釈できる唯一のバースト値です。定長 (precise)
バーストの場合、要求情報は転送ごとに指定されますが、バースト長はトランザクション全体で固定されています。 |
|
| 6: |
「バーストリード」のタイミング図は、転送の数またはバイト数を指定しているのですか。 |
| A: |
MBurstLengthは、バイト数ではなく、バーストに含まれるOCPワード数を指定しています。OCPインターフェースは1~16バイトの任意の値が可能なので、このバーストコードはこれから転送するバーストに含まれるOCPワード数を指します。 |
|
| 7: |
なぜバーストコードは残りのワード数と一致しないのですか。 |
| A: |
不定長 (imprecise)
バーストの場合、バースト長コードはヒントにすぎません。ヒントを使用する上で、ターゲットが特定の義務を負うことはありません。定長
(precise) バーストの場合、バースト長コードは定数であり、バースト トランザクションの正確な長さを示します。 |
|
| 8: |
別のイニシエータにデータの準備が完了していることを通知する前に、イニシエータはどのようにライトバーストがターゲットにコミットされたことを確認するのですか。
|
| A: |
データを書き込んだイニシエータは、このデータを再び読み取って正確かどうかを調べることにより、データが正しく書き込まれていることを確認する必要があります。 |
|
| 9: |
どのバーストサイズを使用すべきですか。 |
| A: |
どれでも使いやすいサイズを使用してください。ただし、バーストは、バーストが完了するまでバーストと関連のない他のすべての転送(すなわち同じスレッド上の転送)を妨害することがあります。また、バーストをOCPワードの2の累乗の長さに制限することで特定の性能上の利点が得られる場合もあります。 |
|
| 10: |
コアのバーストサイズがOCPのバーストコードのどれにも一致しません。どうすればいいですか。 |
| A: |
バーストはヒントであり、保証ではありません。したがって、最後の転送以外のすべての転送にCONTというバーストタグを使用することもできます。この最後の転送にはLASTのタグを付ける必要があります。また、使用しているバースト長を超えない、有効な最大のバーストサイズを使用することができ、またこれを何度も使用することもできます。たとえば6ワードのバーストを実行する場合、残りのバースト長が4未満になるまで、4のバーストコードを何度も使用することができます。 |
|
| 11: |
8OCPワードよりも長いバーストを転送できますか。 |
| A: |
はい、できます。上記を参照してください。また、少なくとも8つの転送が残っている間は、転送を続行してEIGHTのバーストタグ値を提示することができます。 |
|
| 12: |
バースト転送を早期に終了することはできますか。 |
| A: |
イニシエータは、通常は中間に行われる転送にLASTというタグを付けることで、いつでも要求バーストを「早期に」終了することができます。ただし、一部のターゲットにおいて、追加の転送を要求する状態にあると思われる場合には、バーストが「早期に」終了した後に論理的にクリーンアップすることが必要となります。 |
|
| 13: |
OCPイニシエータは、バースト転送を開始した後にこれを中止することができますか。 |
| A: |
転送にLASTというタグを付けると、いつでもバーストを終了できます。これは、バーストを取り消すことを意味する中止とは異なります。OCPの仕様によれば、開始後にバーストを中止することは不正な行為になります。 |
|
| 14: |
イニシエータのコアでバーストをイネーブルにすべき理由は何ですか。 |
| A: |
OCPコアで利用可能なバーストタイプの情報の主な用途は、メモリーからデータをプリフェッチすること(リード用)、あるいはメモリーバンクやページを開いておくこと(ライト用)です。その他の用途はリソースをロックすることによって行われます。いったんバーストをOCPスレッド(ポート)で開始すると、そのOCPスレッドはそのバースト専用になり、バーストが完了するまで他のスレッドからの全てのコマンドに対してロックされます。 |
|
| 15: |
Single-Request Multiple-Data (SRMD) バーストとは何ですか |
| A: |
Single-Request Multiple-Data (SRMD) バーストは定長 (precise)
バーストと同じですが、要求情報がバースト トランザクション全体で一度しか指定されません。この SRMD バースト カテゴリは、「データ
パケット」バースト トランザクションと考えることができます。 |
|
| 16: |
2 次元ブロック バースト シーケンスはどのように処理すればよいですか。 |
| A: |
OCP バージョン 2.2 では、2 次元ブロック バースト アドレス シーケンスが新しく追加されています。この新しいバースト
アドレス シーケンスを使用すると、ブロックのサブシーケンスを指定することができます。これらのサブシーケンスはそれぞれ、通常の増分バースト
アドレス シーケンス モデルに従います。 |
|