図面 (/)

技術 ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ

出願人 日本テキサス・インスツルメンツ合同会社テキサスインスツルメンツインコーポレイテッド
発明者 デヴィッドエムトンプソンティモシーディーアンダーソンジョセフアールエムズビシアックアブヒジートエイチャチャドカイチルカマシューディーピールソン
出願日 2015年11月2日 (5年1ヶ月経過) 出願番号 2017-523883
公開日 2018年1月25日 (2年11ヶ月経過) 公開番号 2018-502362
状態 特許登録済
技術分野 バス制御 情報転送方式
主要キーワード リターンバック シーケンスステップ シェアラ 論理的組み合わせ 依存性グラフ 初期読み出し システムマスター ペア構成
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年1月25日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題・解決手段

説明する例のバス通信プロトコルでは、マスターデバイスバスクレジットストアする(2402)。マスターデバイス(2410)は、充分な数及びタイプのバスクレジットを持つ場合のみ、バストランザクション(2414、2415、2415)を送信し得る。送信の際、マスターデバイスはストアされたバスクレジットの数を低減する。バスクレジットは、バストランザクションを受け取るスレーブデバイス上のリソースに対応する。スレーブデバイス(2420)は、適切なクレジットを伴う場合、バストランザクション(2224、2425、2426)を受け取らねばならない。スレーブデバイスは、トランザクションサービスし、クレジットリターンを送信する。マスターデバイスは、対応する数及びタイプのクレジットを、ストアされた量に加算する。スレーブデバイスは別のバストランザクションをアクセプトする準備ができ、マスターデバイスはバストランザクションを再び開始可能とされる。多くのタイプの相互作用において、バスエージェントはプロセスの状態に応じてマスタースレーブの両方として機能し得る。

概要

背景

従来のバスプロトコルは、マスタースレーブとの間でトランザクションを送信するために通信ハンドシェイクに依存する。典型的なハンドシェイクは下記の形式を取る。マスターがバス上にトランザクションを置き、マスターがコマンド要求信号をアサートする。トランザクションは、トランザクションが受け取られたことを示すコマンド肯定応答信号をスレーブがアサートするまで、バス上に留まり、他のトランザクションが送信されることを防ぐ。処理が完了した後、スレーブは、オプションとして、応答別個のバス上に置き得、応答要求をアサートし得る。応答は、応答が受け取られたことを示す肯定応答信号をマスターがアサートするまで、バス上に留まり、他の応答が送信されることを防ぐ。

この従来のバス通信ハンドシェイクは、次の要因によって性能損失があった。肯定応答信号を待って要求信号がアサートされるとき、コマンド又は応答等のトランザクションが複数のサイクルの間バス上に存在し得る。この待機は、他のトランザクションがバスを用いることを阻む。これにより、その時間期間の間に送信されるトランザクションの数が減少し、通信性能が低下する。このハンドシェイクは、トランザクションを送信するために、トランザクション送信側からの要求信号、及びトランザクション受信側からの肯定応答信号の2方向通信を必要とする。これらの2方向信号は、典型的に異なるサイクルにあり、単一トランザクション処理待ち時間を付加する。

典型的な通信プロトコルは、読み出し、書き込み、及びコヒーレンストランザクションを別個の物理チャネル上で送信する。コマンド及び応答もまた典型的に別個のチャネル上で送信される。アドレス及びデータ幅が増加すると、その結果、物理設計中に配路されなければならない物理ワイヤの数が非常に膨大になる。その結果ワイヤが密集し、これは、面積の増加、電力消費の増大、及び設計スケジュールの長期化につながる。面積の増加が付加的なパイプラインステージの挿入に繋がる場合、この配線密集は性能低下も引き起こす恐れがある。

概要

説明する例のバス通信プロトコルでは、マスターデバイスバスクレジットストアする(2402)。マスターデバイス(2410)は、充分な数及びタイプのバスクレジットを持つ場合のみ、バストランザクション(2414、2415、2415)を送信し得る。送信の際、マスターデバイスはストアされたバスクレジットの数を低減する。バスクレジットは、バストランザクションを受け取るスレーブデバイス上のリソースに対応する。スレーブデバイス(2420)は、適切なクレジットを伴う場合、バストランザクション(2224、2425、2426)を受け取らねばならない。スレーブデバイスは、トランザクションをサービスし、クレジットリターンを送信する。マスターデバイスは、対応する数及びタイプのクレジットを、ストアされた量に加算する。スレーブデバイスは別のバストランザクションをアクセプトする準備ができ、マスターデバイスはバストランザクションを再び開始可能とされる。多くのタイプの相互作用において、バスエージェントはプロセスの状態に応じてマスターとスレーブの両方として機能し得る。

目的

この命令パイプラインは、サイクル毎に、命令を7個の実行ユニット乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515、分岐ユニット516、及びプレディケーションユニット517)に提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

第1のデバイスと第2のデバイスとの間のバス通信の方法であって、前記第1のデバイスにおいて複数のバスクレジットストアすること、前記第1のデバイスが、バストランザクションを前記第2のデバイスにバス上で送信すること、前記第1のデバイスがバストランザクションを前記第2のデバイスに前記バス上で送信すると、前記第1のデバイスが、前記ストアされたバスクレジットの数を、前記バストランザクションに対応する量だけ減少させること、及び対応するバスクレジット信号を前記第2のデバイスに前記バス上で送信することであって、前記ストアされたバスクレジットの数が前記バストランザクションに対応する前記量より少ない場合、前記第1のデバイスがバストランザクションを送信しない可能性があること、及び前記第1のデバイスが、前記バスを介して前記第2のデバイスからクレジットリターンを受け取ると、前記ストアされたバスクレジットの数を前記クレジットリターンに対応する量だけ増加させること、を含む、方法。

請求項2

請求項1に記載の方法であって、前記バストランザクションがコマンドであり、前記バストランザクションを前記バス上で送信することが、前記コマンドに対応する信号を前記バス上で送信することを含む、方法。

請求項3

請求項1に記載の方法であって、前記バストランザクションが読み出しであり、前記バストランザクションを前記バス上で送信することが、読み出しアドレスの範囲を示す少なくとも1つの信号を前記バス上で送信することを含む、方法。

請求項4

請求項3に記載の方法であって、読み出しアドレスの範囲を示す少なくとも1つの信号を送信することが、初期読み出しアドレスを示す第1の信号を送信すること、及び読み出し長を示す第2の信号を送信すること、を含む、方法。

請求項5

請求項1に記載の方法であって、前記バストランザクションが書き込みであり、前記バストランザクションを前記バス上で送信することが、書き込みアドレスの範囲を示す少なくとも1つの信号を送信すること、及び書き込みデータに対応する信号を前記バス上で送信すること、を含む、方法。

請求項6

請求項5に記載の方法であって、書き込みアドレスの範囲を示す少なくとも1つの信号を送信することが、初期書き込みアドレスを示す第1の信号を送信すること、及び書き込み長を示す第2の信号を送信すること、を含む、方法。

請求項7

請求項1に記載の方法であって、前記第1のデバイスが第1のトランザクション識別を前記バスを介して前記第2のデバイスに送信するステップを更に含む、方法。

請求項8

請求項7に記載の方法であって、前記第2のデバイスが、トランザクション応答を前記バスを介して前記第1のデバイスに送信することを更に含み、前記トランザクション応答が、前記第1のトランザクション識別に対応する第2のトランザクション識別を含む、方法。

請求項9

請求項8に記載の方法であって、前記バストランザクションが読み出しであり、前記トランザクション応答が前記読み出しに対応するデータを含む、方法。

請求項10

第1のデバイスと第2のデバイスとの間のバス通信の方法であって、バスを介して前記第2のデバイスからバストランザクション及びバスクレジット信号を受け取ること、前記バスクレジット信号が前記バストランザクションに対応する場合、前記第1のデバイスにおいて前記バストランザクションをアクセプトすること、前記第1のデバイスにおいて前記バストランザクションをサービスすること、及び前記第1のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第1のデバイスが前記バスを介して前記第2のデバイスにクレジットリターンを送信すること、を含む、方法。

請求項11

請求項10に記載の方法であって、前記バストランザクションがコマンドであり、前記第1のデバイスにおいて前記バストランザクションをサービスすることが、前記コマンドを実行することを含む、方法。

請求項12

請求項10に記載の方法であって、前記バストランザクションが読み出しであり、前記バストランザクションが読み出しアドレスの範囲を示す少なくとも1つの信号を含み、前記第1のデバイスにおいて前記バストランザクションをサービスすることが、読み出しアドレスの前記範囲において前記第1のデバイスからデータをリコールすることと、前記第1のデバイスから前記リコールされたデータを、前記バスを介して前記第2のデバイスに送信することと、を含む、方法。

請求項13

請求項12に記載の方法であって、読み出しアドレスの範囲を示す前記少なくとも1つの信号が、初期読み出しアドレスを示す第1の信号、及び読み出し長を示す第2の信号を含む、方法。

請求項14

請求項10に記載の方法であって、前記バストランザクションが書き込みであり、前記バストランザクションが、書き込みアドレスの範囲を示す少なくとも1つの信号、及び書き込みデータに対応する信号を含み、前記第1のデバイスにおいて前記バストランザクションをサービスすることが、前記書き込みデータを書き込みアドレスの前記範囲に対応するアドレスにおいてストアすることを含む、方法。

請求項15

請求項14に記載の方法であって、書き込みアドレスの範囲を示す前記少なくとも1つの信号が、初期書き込みアドレスを示す第1の信号、及び書き込み長を示す第2の信号を含む、方法。

請求項16

請求項10に記載の方法であって、前記バストランザクションが第1のトランザクション識別を含む、方法。

請求項17

請求項16に記載の方法であって、前記第1のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第1のデバイスが、トランザクション応答を前記バスを介して前記第2のデバイスに送信することを更に含み、前記トランザクション応答が、前記第1のトランザクション識別に対応する第2のトランザクション識別を含む、方法。

請求項18

第1のデバイスと第2のデバイスとの間のバス通信の方法であって、前記第1のデバイスにおいて複数のバスクレジットをストアすること、前記第1のデバイスが、バストランザクションを前記第2のデバイスにバス上で送信すること、前記第1のデバイスがバストランザクションを前記第2のデバイスに前記バス上で送信すると、前記第1のデバイスが、バスクレジットの前記ストアされた数を、前記バストランザクションに対応する量だけ減少させること、及び対応するバスクレジット信号を、前記第2のデバイスに前記バスで送信することであって、ストアされたバスクレジットの前記数が前記バストランザクションに対応する前記量より少ない場合、前記第1のデバイスがバストランザクションを送信しない可能性があること、前記第2のデバイスにおいて、前記バストランザクション及び前記バスクレジット信号を、前記バスを介して前記第1のデバイスから受け取ること、前記バスクレジット信号が前記バストランザクションに対応する場合、前記第2のデバイスにおいて前記バストランザクションをアクセプトすること、前記第2のデバイスにおいて前記バストランザクションをサービスすること、前記第1のデバイスにおいて前記バストランザクションをサービスすることを完了すると、前記第2のデバイスが、前記バスを介して前記第1のデバイスにクレジットリターンを送信すること、及び前記第1のデバイスが前記バスを介して前記第2のデバイスからクレジットリターンを受け取ると、バスクレジットの前記ストアされた数を前記クレジットリターンに対応する量だけ増加させること、を含む、方法。

請求項19

請求項18に記載の方法であって、前記バストランザクションがコマンドであり、前記バストランザクションを前記バス上で送信することが、前記コマンドに対応する信号を前記バス上で送信することを含み、前記第2のデバイスにおいて前記バストランザクションをサービスすることが、前記コマンドを実行することを含む、方法。

請求項20

請求項18に記載の方法であって、前記バストランザクションが読み出しであり、前記バストランザクションを前記バス上で送信することが、読み出しアドレスの範囲を示す少なくとも1つの信号を前記バス上で送信することを含み、前記第2のデバイスにおいて前記バストランザクションをサービスすることが、前記読み出しアドレスの範囲において前記第2のデバイスからデータをリコールすることと、前記第2のデバイスから前記リコールされたデータを、前記バスを介して前記第1のデバイスに送信することと、を含む、方法。

請求項21

請求項20に記載の方法であって、読み出しアドレスの範囲を示す少なくとも1つの信号を送信することが、初期読み出しアドレスを示す第1の信号を送信すること、及び読み出し長を示す第2の信号を送信することを含む、方法。

請求項22

請求項18に記載の方法であって、前記バストランザクションが書き込みであり、前記バストランザクションを前記バス上で送信することが、書き込みアドレスの範囲を示す少なくとも1つの信号を送信すること、及び書き込みデータに対応する信号を前記バス上で送信することを含み、前記第2のデバイスにおいて前記バストランザクションをサービスすることが、書き込みアドレスの前記範囲に対応するアドレスにおいて前記書き込みデータをストアすることを含む、方法。

請求項23

請求項22に記載の方法であって、書き込みアドレスの範囲を示す少なくとも1つの信号を送信することが、初期書き込みアドレスを示す第1の信号を送信すること、及び書き込み長を示す第2の信号を送信することを含む、方法。

請求項24

請求項18に記載の方法であって、前記第1のデバイスが、記バスを介して第1のトランザクション識別を前前記第2のデバイスに送信すること、及び前記第1のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第2のデバイスが、前記バスを介して前記第1のデバイスにトランザクション応答を送信すること、を更に含み、前記トランザクション応答が、前記第1のトランザクション識別に対応する第2のトランザクション識別を含む、方法。

請求項25

バス上で情報を交換するように動作可能なバスエージェントであって、中に複数のバスクレジットをストアするクレジットカウンタ、前記バスに及び前記クレジットカウンタに接続される属性チャネルであって、バストランザクションを前記バス上で送信すること、前記クレジットカウンタにストアされたバスクレジットの数を、前記バストランザクションに対応する量だけ減少させること、及び対応するバスクレジット信号を前記バス上で送信すること、によってバストランザクションを開始するように動作可能である、前記属性チャネル、を含み、ストアされたバスクレジットの前記数が、前記バストランザクションに対応する前記量より少ない場合、前記属性チャネルが前記バストランザクションを送信しない可能性があり得、前記属性チャネルが更に、前記バスからのクレジットリターンを受け取るように、及び前記クレジットカウンタにストアされたバスクレジットの前記数を前記クレジットリターンに対応する量だけ増加させるように、動作可能である、バスエージェント。

請求項26

請求項25に記載のバスエージェントであって、前記バストランザクションが読み出しであり、前記属性チャネルが、読み出しアドレスの範囲を示す少なくとも1つの信号を送信することによって、前記読み出しを前記バス上で送信するように動作可能である、バスエージェント。

請求項27

請求項26に記載のバスエージェントであって、前記属性チャネルが、初期読み出しアドレスを示す第1の信号を送信すること、及び読み出し長を示す第2の信号を送信すること、によって読み出しアドレスの範囲を示す前記少なくとも1つの信号を送信するように動作可能である、バスエージェント。

請求項28

請求項25に記載のバスエージェントであって、前記バストランザクションが書き込みであり、前記属性チャネルが、書き込みアドレスの範囲を示す少なくとも1つの信号を送信することによって、前記書き込みを前記バス上で送信するように動作可能であり、書き込みデータに対応する信号を送信するように、書き込みの際に動作可能なデータチャネルを更に含む、バスエージェント。

請求項29

請求項28に記載のバスエージェントであって、前記属性チャネルが、初期書き込みアドレスを示す第1の信号を送信すること、及び書き込み長を示す第2の信号を送信すること、によって、書き込みアドレスの範囲を示す前記少なくとも1つの信号を送信するように動作可能である、バスエージェント。

請求項30

請求項25に記載のバスエージェントであって、前記属性チャネルが更に、トランザクション識別を送信することによって、前記バストランザクションを前記バス上で送信するように動作可能である、バスエージェント。

請求項31

バス上で情報を交換するように動作可能なバスエージェントであって、前記バスに接続される属性チャネルであって、前記属性チャネルが、前記バスからバストランザクション及びバスクレジット信号を受け取るように、及び前記バスクレジット信号が前記バストランザクションに対応する場合、前記バストランザクションをアクセプトするように、動作可能である、前記属性チャネル、及び前記属性チャネルによってアクセプトされるバストランザクションをサービスするように動作可能である前記属性チャネルに接続されるバックエンドプロセス、を含み、前記属性チャネルが更に、前記バックエンドプロセスによって前記バストランザクションをサービスすることが完了すると、クレジットリターンを前記バス上で送信するように動作可能である、バスエージェント。

請求項32

請求項31に記載のバスエージェントであって、前記バスプロセスに結合される読み出し/書き込みメモリを更に含み、前記バストランザクションが読み出しであり、前記属性チャネルが、読み出しアドレスの範囲を示す少なくとも1つの信号を受け取ることを含み、前記読み出しを前記バス上で受け取るように動作可能であり、前記バックエンドプロセスが、前記読み出し/書き込みメモリから、前記読み出しアドレスの範囲に対応するアドレスから、データをリコールすることによって、前記読み出しをサービスするように動作可能であり、更に、前記バス及び前記読み出し/書き込みメモリに接続されるデータチャネルを含み、前記データチャネルが、前記読み出し/書き込みメモリからリコールされたデータを前記バス上で送信するように動作可能である、バスエージェント。

請求項33

請求項32に記載のバスエージェントであって、前記属性チャネルが、初期読み出しアドレスを示す第1の信号を受け取ること、及び読み出し長を示す第2の信号を受け取ること、によって、読み出しアドレスの範囲を示す前記少なくとも1つの信号を受け取るように動作可能である、バスエージェント。

請求項34

請求項31に記載のバスエージェントであって、前記バスプロセスに接続される読み出し/書き込みメモリを更に含み、前記バストランザクションが書き込みであり、前記属性チャネルが、書き込みアドレスの範囲を示す少なくとも1つの信号を受け取ることを含み、前記書き込みを前記バス上で受け取るように動作可能であり、更に、前記バスに接続されるデータチャネルを含み、前記データチャネルが、前記バスから書き込みデータを受け取るように動作可能であり、前記バックエンドプロセスが更に、前記読み出し/書き込みメモリに結合され、更に、書き込みアドレスの前記範囲に対応するアドレスにおいて前記バスから前記読み出し/書き込みメモリに書き込みデータストアすることによって、前記書き込みをサービスするように動作可能である、バスエージェント。

請求項35

請求項34に記載のバスエージェントであって、前記属性チャネルが、初期書き込みアドレスを示す第1の信号を受け取ること、及び書き込み長を示す第2の信号を受け取ること、によって、書き込みアドレスの前記範囲を示す前記少なくとも1つの信号を受け取るように動作可能である、バスエージェント。

請求項36

請求項31に記載のバスエージェントであって、前記バストランザクションが第1のトランザクション識別を含む、バスエージェント。

請求項37

請求項36に記載のバスエージェントであって、前記バス及び前記読み出し/書き込みメモリに接続されるデータチャネルを更に含み、前記データチャネルが、前記第1のデバイスにおける前記バストランザクションのサービスが完了すると、トランザクション応答を前記バス上で送信するように動作可能であり、前記トランザクション応答が、前記第1のトランザクション識別に対応する第2のトランザクション識別を含む、バスエージェント。

請求項38

バス上で情報を交換するように動作可能なバスシステムであって、第1のバスエージェント、及び第2のバスエージェント、を含み、前記第1のバスエージェントが、中に複数のバスクレジットをストアするクレジットカウンタと、前記バスに及び前記クレジットカウンタに接続される第1の属性チャネルとを含み、前記第1の属性チャネルが、前記バス上でバストランザクションを送信すること、前記クレジットカウンタにストアされたバスクレジットの前記数を前記バストランザクションに対応する量だけ減少させること、及び対応するバスクレジット信号を前記バス上で送信すること、によってバストランザクションを開始するように動作可能であり、ストアされたバスクレジットの前記数が前記バストランザクションに対応する前記量より少ない場合、前記第1の属性チャネルが前記バストランザクションを送信しない可能性があり得、前記第1の属性チャネルが、更に、前記バスからクレジットリターンを受け取るように、及び前記クレジットカウンタにストアされたバスクレジットの前記数を前記クレジットリターンに対応する量だけ増加させるように動作可能であり、前記第2のバスエージェントが、前記バスに接続される第2の属性チャネルであって、前記バスからバストランザクション及びバスクレジット信号を受け取るように、及び前記バスクレジット信号が前記バストランザクションに対応する場合、前記バストランザクションをアクセプトするように動作可能である、前記第2の属性チャネルと、前記第2の属性チャネルに接続され、前記第2の属性チャネルによってアクセプトされたバストランザクションをサービスするように動作可能であるバックエンドプロセスと、を含み、前記第2の属性チャネルが、更に、前記バックエンドプロセスによる前記バストランザクションのサービスが完了すると、前記バス上でクレジットリターンを送信するように動作可能である、バスシステム。

請求項39

請求項38に記載のバスシステムであって、前記バストランザクションが読み出しであり、前記第1の属性チャネルが、読み出しアドレスの範囲を示す少なくとも1つの信号を送信することによって、前記読み出しを前記バス上で送信するように動作可能であり、前記第2のエージェントが、更に、前記バスプロセスに結合される読み出し/書き込みメモリを含み、前記第2の属性チャネルが、読み出しアドレスの範囲を示す少なくとも1つの信号を含み、前記読み出しを前記バス上で受け取るように動作可能であり、前記バックエンドプロセスが、前記読み出し/書き込みメモリから、読み出しアドレスの前記範囲に対応するアドレスから、データをリコールすることによって、前記読み出しをサービスするように動作可能であり、更に、前記バス及び前記読み出し/書き込みメモリに接続されるデータチャネルを含み、前記データチャネルが、前記読み出し/書き込みメモリからリコールされたデータを前記バス上で送信するように動作可能である、バスシステム。

請求項40

請求項38に記載のバスシステムであって、前記第1の属性チャネルが、初期読み出しアドレスを示す第1の信号を送信すること、及び読み出し長を示す第2の信号を送信すること、によって、読み出しアドレスの範囲を示す前記少なくとも1つの信号を送信するように動作可能であり、前記第2の属性チャネルが、前記初期読み出しアドレスを示す前記第1の信号を受け取ること、及び前記読み出し長を示す前記第2の信号を受け取ること、によって、読み出しアドレスの範囲を示す前記少なくとも1つの信号を受け取るように動作可能である、バスシステム。

請求項41

請求項38に記載のバスエージェントであって、前記バストランザクションが書き込みであり、前記第1の属性チャネルが、書き込みアドレスの範囲を示す少なくとも1つの信号を送信することによって、前記書き込みを前記バス上で送信するように動作可能であり、前記第1のバスエージェントが更に、書き込みの際、書き込みデータに対応する信号を送信するように動作可能である第1のデータチャネルを含み、前記第2のエージェントが更に、前記バスプロセスに結合される読み出し/書き込みメモリと、前記バスに接続されるデータチャネルと、を含み、前記データチャネルが前記バスから書き込みデータを受け取るように動作可能であり、前記第2の属性チャネルが、書き込みアドレスの範囲を示す少なくとも1つの信号を受け取ることを含み、前記書き込みを前記バス上で受け取るように動作可能であり、及び前記バックエンドプロセスが更に、前記読み出し/書き込みメモリに結合され、更に、前記バスからの書き込みデータを、書き込みアドレスの前記範囲に対応するアドレスにおいて、前記読み出し/書き込みメモリにストアすることによって、前記書き込みをサービスするように動作可能である、バスエージェント。

請求項42

請求項41に記載のバスエージェントであって、前記第1の属性チャネルが、初期書き込みアドレスを示す第1の信号を送信すること、及び書き込み長を示す第2の信号を送信すること、によって、書き込みアドレスの範囲を示す前記少なくとも1つの信号を送信するように動作可能であり、前記第2の属性チャネルが更に、前記初期書き込みアドレスを示す前記第1の信号を受け取ること、及び前記書き込み長を示す前記第2の信号を受け取ること、によって、書き込みアドレスの前記範囲を示す前記少なくとも1つの信号を受け取るように動作可能である、バスエージェント。

請求項43

請求項38に記載のバスシステムであって、前記第1の属性チャネルが更に、第1のトランザクション識別を送信することによって、前記バス上で前記バストランザクションを送信するように動作可能であり、前記第2のエージェントが更に、前記バス及び前記読み出し/書き込みメモリに接続されるデータチャネルを含み、前記データチャネルが、前記バストランザクションをサービスすることが完了すると、トランザクション応答を前記バス上で送信するように動作可能であり、前記トランザクション応答が、前記第1のトランザクション識別に対応する第2のトランザクション識別を含む、バスシステム。

技術分野

0001

本願は、デジタルデータ処理に関し、特に複数のCPUコア間のデータバスに関する。

背景技術

0002

従来のバスプロトコルは、マスタースレーブとの間でトランザクションを送信するために通信ハンドシェイクに依存する。典型的なハンドシェイクは下記の形式を取る。マスターがバス上にトランザクションを置き、マスターがコマンド要求信号をアサートする。トランザクションは、トランザクションが受け取られたことを示すコマンド肯定応答信号をスレーブがアサートするまで、バス上に留まり、他のトランザクションが送信されることを防ぐ。処理が完了した後、スレーブは、オプションとして、応答別個のバス上に置き得、応答要求をアサートし得る。応答は、応答が受け取られたことを示す肯定応答信号をマスターがアサートするまで、バス上に留まり、他の応答が送信されることを防ぐ。

0003

この従来のバス通信ハンドシェイクは、次の要因によって性能損失があった。肯定応答信号を待って要求信号がアサートされるとき、コマンド又は応答等のトランザクションが複数のサイクルの間バス上に存在し得る。この待機は、他のトランザクションがバスを用いることを阻む。これにより、その時間期間の間に送信されるトランザクションの数が減少し、通信性能が低下する。このハンドシェイクは、トランザクションを送信するために、トランザクション送信側からの要求信号、及びトランザクション受信側からの肯定応答信号の2方向通信を必要とする。これらの2方向信号は、典型的に異なるサイクルにあり、単一トランザクション処理待ち時間を付加する。

0004

典型的な通信プロトコルは、読み出し、書き込み、及びコヒーレンストランザクションを別個の物理チャネル上で送信する。コマンド及び応答もまた典型的に別個のチャネル上で送信される。アドレス及びデータ幅が増加すると、その結果、物理設計中に配路されなければならない物理ワイヤの数が非常に膨大になる。その結果ワイヤが密集し、これは、面積の増加、電力消費の増大、及び設計スケジュールの長期化につながる。面積の増加が付加的なパイプラインステージの挿入に繋がる場合、この配線密集は性能低下も引き起こす恐れがある。

0005

説明される例のバス通信プロトコルにおいて、マスターデバイスが通信を開始し得る。各マスターデバイスは複数のバスクレジットストアする。マスターデバイスは、バストランザクションに対応する数及びタイプのバスクレジットをストアしている場合にのみ、そのバストランザクションを送信し得る。マスターデバイスが充分なバスクレジットを持つ場合、マスターデバイスは、バストランザクション及びクレジット信号を送信し得る。送信の際、マスターデバイスは、ストアされたバスクレジットの数を、バストランザクションに対応する量、減少させる。

0006

バスクレジットは、バストランザクションを受け取るスレーブデバイス上のリソースに対応する。マスターデバイスが適切なクレジットを持つ場合、スレーブデバイスは、バストランザクションを受け取る容量を有する。このように、スレーブデバイスは、適切なクレジットが付随している場合、バストランザクションを受け取らなければならない。

0007

バストランザクションをアクセプトした後、スレーブデバイスはトランザクションをサービスする。そのようなサービスには、コマンドを実行すること、読み出しに応答してデータをリコールすること、又は書き込みに応答してデータをストアすることが含まれ得る。バストランザクションをサービスし、スレーブデバイスが別のトランザクションをアクセプトし得る状態を再開した後、スレーブデバイスは、クレジットリターンをバス上に送信する。マスターデバイスがクレジットリターンを受け取ると、マスターデバイスは、対応する数及びタイプのクレジットをストアされている量に加算する。クレジットリターンの送信に続いて、スレーブデバイスは、別のバストランザクションをアクセプトする準備が整う。クレジットリターンを受け取ると、マスターデバイスは、バストランザクションを開始することが再度可能になる。

0008

多くのタイプの相互作用において、バスエージェントは、プロセスの状態に応じてマスターとスレーブの両方として機能し得る。通常の読み出し動作では、第1のバスエージェントが、マスターデバイスとして機能する間に、読み出しを送信し、読み出しアドレスを指示する。第2のバスエージェントが、スレーブデバイスとして機能する間に、読み出しを受け取り、アクセプトする。第2のバスエージェントは、スレーブデバイスとして機能する間に、メモリアクセスすること、及び特定されたデータをリコールすることによって、読み出しをサービスする。好ましい実施形態において、第2のバスエージェントは、独立したバストランザクションによって、リコールされたデータを第1のエージェントに送信する。この例において、第2のバスエージェントは、第1のバスエージェントへのデータ送信サポートするための数とタイプのバスクレジットをストアしなければならない。第2のエージェントが適正なクレジットをストアする場合、第1のバスエージェントは、バストランザクションを受け取り、サービスする容量を有する。この例において、第2のバスエージェントは、充分なバスクレジットを持ち、読み出されたデータのデータ転送を開始する。第1のバスエージェントは、バストランザクション及び読み出されたデータをアクセプトする。第1のバスエージェントは、読み出されたデータをストアすることによって、バストランザクションをサービスする。バストランザクションをサービスし、更なるバストランザクションを受け取るためにリソースをクリアにすると、第1のバスエージェントは、対応するクレジットリターンを第2のバスエージェントに送信する。第2のバスエージェントは、その後、ストアされたクレジットを増加させ、第1のバスエージェントが再びバストランザクションを受け取ることが可能であることを確認する。

0009

好ましい実施形態において、複数のそのようなバス交換オーバーラップし得る。そのようなオーバーラップするバストランザクションを分離させておくために、第1のバスエージェントは、好ましくは、第1のトランザクション識別をトランザクションと共に送信する。第2のバスエージェントは、バストランザクション応答において第1のトランザクション識別に対応する第2のトランザクション識別を送信する。これによって、第1のバスエージェントは応答を区別することが可能になる。

図面の簡単な説明

0010

一実施形態に従ったシングルコアスカラープロセッサを図示する。

0011

別の実施形態に従ったデュアルコアスカラープロセッサを図示する。

0012

更なる実施形態に従ったシングルコアベクトルプロセッサを図示する。

0013

更なる実施形態に従ったデュアルコアベクトルプロセッサを図示する。

0014

CPUの一実施形態の構成を図示する。

0017

乗算及び相関機能ユニットによって共有されるローカルベクトルレジスタファイルを図示する。

0018

ロード/ストアユニットローカルレジスタファイルを図示する。

0019

プレディケートレジスタファイルを図示する。

0020

好ましい実施形態に従った、中央処理装置パイプラインフェーズを図示する。

0021

シングルフェッチパケットの16個の命令を図示する。

0022

例示の実施形態によって用いられる命令の命令コーディングの例を図示する。

0023

例示の実施形態に従った、SIMD演算のためのキャリー制御を図示する。

0024

本発明を適用し得るコンピュートクラスタ1500を図示する。

0025

シングルマルチコアバスアーキテクチャインタフェースのための各チャネルに対する信号方向を図示する。

0026

例示のペアにされたインタフェーストポロジーにおける各チャネルを図示する。

0027

別の例示のペアにされたインタフェーストポロジーにおける各チャネルを図示する。

0028

dedc信号のエンコーディングのためのロジックを図示する。

0029

トランザクション属性チャネルのためのシンプルなクレジットハンドシェイクを図示する。

0030

同じチャネル上のインターリーブされたクレジットハンドシェイクを示す。

0031

クレジット非書き込みシーケンスにおけるステップを図示する。

0032

クレジットされた(credited)書き込みコマンドシーケンスの一般的な形式を図示する。

0033

例示の実施形態において用いられるようなエージェントのブロック図を示す。

実施例

0034

図1は、一実施形態に従ったシングルコアスカラープロセッサを図示する。シングルコアプロセッサ100はスカラー中央処理装置(CPU)110を含み、スカラーCPU110は、別個のレベル1命令キャッシュ(L1I)111及びレベル1データキャッシュ(L1D)112に結合される。中央処理装置コア110は、既知のように構成され得、典型的に、レジスタファイル、整数算術論理ユニット整数積算器、及びプログラムフロー制御ユニットを含み得る。シングルコアプロセッサ100は、命令とデータの両方を持つレベル2組み合わせ命令/データキャッシュ(L2)113を含む。好ましい実施形態において、スカラー中央処理装置(CPU)110、レベル1命令キャッシュ(L1I)111、レベル1データキャッシュ(L1D)112、及びレベル2組み合わせ命令/データキャッシュ(L2)113は、単一の集積回路上に形成される。

0035

好ましい実施形態において、この単一の集積回路はまた、電力制御回路121等の補助回路エミュレーショントレース回路122、DST(design for test)PBIST(programmable built-in self-test)回路123、及びクロッキング回路124を含む。メモリコントローラ131が、CPU110の外部として、単一集積回路100上に集積され得る。

0036

CPU110は、定義されたデータに対してデータ処理演算を実施するように、プログラム制御下で動作する。CPU110を制御するプログラムは、デコーディング及び実行の前にフェッチされなければならない複数の命令で構成される。シングルコアプロセッサ100は複数のキャッシュメモリを含む。図1は、第1のレベルキャッシュのペアを図示する。レベル1命令キャッシュ(L1I)111は、CPU110によって用いられる命令をストアする。CPU110は、最初に、レベル1命令キャッシュ121から任意の命令にアクセスすることを試みる。レベル1データキャッシュ(L1D)112は、CPU110によって用いられるデータをストアする。CPU110は、最初に、レベル1データキャッシュ112から任意の必要とされるデータにアクセスすることを試みる。2つのレベル1キャッシュ(L1I 111、及びL1D 112)は、レベル2統合キャッシュ(L2)113によってバックアップされている。レベル1命令キャッシュ111又はレベル1データキャッシュ112に対するキャッシュミスがった場合、要求された命令又はデータが、レベル2統合キャッシュ113から探される。要求された命令又はデータがレベル2統合キャッシュ113にストアされている場合は、その命令又はデータは、中央処理装置コア110に供給するために、要求しているレベル1キャッシュに供給される。当業者には周知のように、要求された命令又はデータは、使用を迅速にするために、要求しているキャッシュとCPU110の両方に同時に供給され得る。

0037

レベル2統合キャッシュ113は、更に、メモリコントローラ131を介して、より高いレベルのメモリシステムに結合される。メモリコントローラ131は、外部メモリ図1に図示されない)にアクセスすることによって、レベル2統合キャッシュ113におけるキャッシュミスを取り扱う。メモリコントローラ131は、キャッシャビリティ判定、エラー検出及び訂正、アドレス翻訳等など、全てのメモリ中心の機能を取り扱う。シングルコアプロセッサ100は、マルチプロセッサシステムの一部であり得る。その場合、メモリコントローラ131は、プロセッサ間のデータ転送を取り扱い、プロセッサ間のキャッシュコヒーレンスを維持する。

0038

図2は、別の実施形態に従ったデュアルコアプロセッサを図示する。デュアルコアプロセッサ200は、別個のレベル1命令キャッシュ(L1I)211及びレベル1データキャッシュ(L1D)212に結合される第1のCPU210、及び別個のレベル1命令キャッシュ(L1I)221及びレベル1データキャッシュ(L1D)212に結合される第2のCPU220を含む。中央処理装置210及び220は、好ましくは、図1に図示されるCPU110と同様に構成される。デュアルコアプロセッサ200は、4個のレベル1キャッシュ(L1I 211、L1D 212、L1I 221、及びL1D 222)全てをサポートする、単一の共有されたレベル2組み合わせ命令/データキャッシュ(L2)231を含む。好ましい実施形態において、CPU210、レベル1命令キャッシュ(L1I)211、レベル1データキャッシュ(L1D)212、CPU220、レベル1命令キャッシュ(L1I)221、レベル1データキャッシュ(L1D)222、及びレベル2組み合わせ命令/データキャッシュ(L2)231が、単一の集積回路上に形成される。この単一の集積回路は、好ましくは、電力制御回路245等の補助回路、エミュレーション/トレース回路116、DST(design for test)PBIST(programmable built-in self-test)回路117、及びクロッキング回路118を含む。この単一の集積回路はまたメモリコントローラ251を含み得る。

0039

図3及び図4は、それぞれ図1及び図2に示されるものと類似のシングルコアプロセッサ及びデュアルコアプロセッサを図示する。図3及び図4は、ベクトル中央処理装置が示されている点で、図1及び図2とは異なる。下記に更に詳細を説明するように、シングルコアベクトルプロセッサ300はベクトルCPU310を含む。デュアルコアベクトルプロセッサ400は、2つのベクトルCPU410及び420を含む。ベクトルCPU310、410、及び420は、対応するスカラーCPU110、210、及び220に比較して、一層幅広いデータパスオペレーシナルユニット、及び一層幅広いデータレジスタを含む。

0040

ベクトルCPU310、410、及び420は更に、ストリーミングエンジン313(図3)、及びストリーミングエンジン413及び423(図5)を含むという点で、対応するスカラーCPU110、210、及び220とは異なる。ストリーミングエンジン313、413、及び423は類似である。ストリーミングエンジン313は、データをレベル2統合キャッシュ313(L2)からベクトルCPU310に転送する。ストリーミングエンジン413は、データをレベル2統合キャッシュ431からベクトルCPU410に転送する。ストリーミングエンジン423は、データをレベル2統合キャッシュ431からベクトルCPU420に転送する。好ましい実施形態に従って、各ストリーミングエンジン313、413、及び423は、最大2つのデータストリームを管理する。

0041

各ストリーミングエンジン313、413、及び423は、一定の制約された状況においてデータを転送する。ストリームは特定のタイプのエレメントシーケンスで構成される。ストリーム上で動作するプログラムは、データを順次読み出し、各エレメント上で順に動作する。ストリームは全て、下記の基本的な特性を有する。ストリームデータは、適切に定義された、時間における開始と終了を有する。ストリームデータは、ストリームにわたって固定のエレメントサイズ及びタイプを有する。ストリームデータは、エレメントの固定のシーケンスを有する。このように、プログラムはストリーム内をランダム探すことはできない。ストリームデータは、アクティブの間は読み出し専用である。プログラムは、ストリームから読み出している間は、同時にストリームに書き込みできない。一旦、ストリームが開始されると、ストリーミングエンジンは、アドレスを計算し、定義されたデータタイプをレベル2統合キャッシュからフェッチし、ゼロ拡張符号拡張等のデータタイプマニピュレーションマトリックス転位等のデータエレメントソーティングスワッピングを実施し、データをCPU内のプログラムされた実行ユニットに直接的に送達する。ストリーミングエンジンは、このように、正常に動作するデータ上でのリアルタイムデジタルフィルタリング演算のために有用である。ストリーミングエンジンは、対応するCPUからこれらのメモリフェッチタスク解放して、他の処理機能を可能にする。

0042

ストリーミングエンジンは下記利点を提供する。多次元メモリアクセスを可能にする。機能ユニットに対して利用可能な帯域幅を増大させる。ストリームバッファがL1Dキャッシュ及びL2キャッシュをバイパスし得るので、キャッシュミスストール詰まり)の数を最小化する。ループにおいて維持する必要のあるスカラー演算の数を低減する。アドレスポインタを管理する。他の計算のためのアドレス生成命令スロット及び.Dユニットを自動的に解放するアドレス生成を取り扱う。

0043

図5は、CPUの一実施形態の構成を図示する。特に注釈がない場合は、本明細書は、スカラーCPU及びベクトルCPUの両方に適用される。CPUは、複数の実行ユニット、乗算ユニット511(.M)、相関ユニット512(.C)、算術ユニット513(.L)、算術ユニット514(.S)、ロード/ストアユニット515(.D)、分岐ユニット516(.B)、及びプレディケーションユニット517(.P)を含む。これらの実行ユニットの動作及び関係を以下に詳細に説明する。

0044

乗算ユニット511は、主として乗算を実施する。乗算ユニット511は、最大2個のダブルベクトルオペランドをアクセプトし、最大1個のダブルベクトル結果を生成する。乗算ユニット511は、8ビットから64ビットの乗算演算の精度を備える種々の整数乗算演算、種々の正規及び複素ドット積演算、及び種々の浮動小数点乗算演算、ビットワイズ論理演算ムーブ、並びに、加算及び減算を行うように構成可能な命令である。図5に図示されるように、乗算ユニット511は、4個の同時16ビット×16ビットの乗算のためのハードウェアを含む。乗算ユニット511は、下記に説明する様式で、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、及び共有の.M及びC.ローカルレジスタ523ファイルにアクセスし得る。フォワーディングマルチプレクサ530は、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及び乗算ユニット511の間のデータ転送を調停する。

0045

相関ユニット512(.C)は、最大2つのダブルベクトルオペランドをアクセプトし、最大1つのダブルベクトル結果を生成する。相関ユニット512は、これらの主要演算をサポートする。WCDMA「Rake」及び「Search」命令のサポートにおいて、相関ユニット512は、クロックサイクル毎に、最大512個の2ビットPN×8ビットI/Q複素乗算を実施する。相関ユニット512は、クロックサイクル毎に、最大512個のSAD(Sum-of-Absolute-Difference)を実施する、8ビット及び16ビットのSAD計算を実施する。相関ユニット512は、水平加算及び水平最小/最大命令を実施する。相関ユニット512は、ベクトルパーミュート(permutes)命令を実施する。相関ユニット512は、8個の256ビット幅制御レジスタを含む。これらの制御レジスタは、或る相関ユニット命令の演算を制御するように用いられる。相関ユニット512は、下記に説明する様式で、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、及び共有.M及びC.ローカルレジスタファイル523にアクセスし得る。フォワーディングマルチプレクサ530は、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及び相関ユニット512の間のデータ転送を調停する。

0046

CPU500は、算術ユニット513(.L)及び算術ユニット514(.S)の2つの算術ユニットを含む。算術ユニット513及び算術ユニット514の各々は、最大2つのベクトルオペランドをアクセプトし、1つのベクトル結果を生成する。コンピュートユニットは、これらの主要演算をサポートする。算術ユニット513及び算術ユニット514は、8ビットから64ビットまでわたる精度で種々のSIMD(single-instruction-multiple-data)固定小数点算術演算を実施する。算術ユニット513及び算術ユニット514は、結果をプレディケートレジスタファイル526(下記に詳細を説明する)に直接書き込む、種々の、ベクトル比較及び最小/最大命令を実施する。これらの比較には、A=B、A>B、A≧B、A<B、及びA≦Bが含まれる。比較が真であると、プレディケートレジスタ内の対応するビット位置に1ビットがストアされる。比較がであると、プレディケートレジスタ内の対応するビット位置に0がストアされる。ベクトル比較命令は、バイト(8ビット)データを前提とし、従って、32個のシングルビット結果を生成する。算術ユニット513及び算術ユニット514は、下記に説明されるように、指定されたプレディケートレジスタを用いて種々のベクトル演算を実施する。算術ユニット513及び算術ユニット514は、半精度(16ビット)、単精度(32ビット)から倍精度(64ビット)までわたる精度で、種々のSIMD浮動小数点算術演算を実施する。算術ユニット513及び算術ユニット514は、種々のアルゴリズム及び関数を迅速化するための特殊な命令を実施する。算術ユニット513及び算術ユニット514は、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、共有.L及び.Sローカルレジスタファイル524、及びプレディケートレジスタファイル526にアクセスし得る。フォワーディングマルチプレクサ530は、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及び算術ユニット513、514の間のデータ転送を調停する。

0047

ロード/ストアユニット515(.D)は、主としてアドレス計算に用いられる。ロード/ストアユニット515は、最大64ビットのスカラーオペランドをアクセプトするように拡張され、最大64ビットのスカラー結果を生成する。ロード/ストアユニット515は、他のユニット上のワークロードを低減するように、スワッピング、ロード及びストアデータ上でのパックアンパック等のデータマピュレションを実施するための付加的ハードウェアを含む。ロード/ストアユニット515は、各クロックサイクルに1つのロード又はストア要求を、44ビットの物理アドレスと共に、レベル1データキャッシュ(L1D)に送り出し得る。ロード又はストアデータ幅は、32ビット、64ビット、256ビット、又は512ビットであり得る。ロード/ストアユニット515は、64ビットSIMD算術演算、64ビットビットワイズ論理演算、及びスカラー及びベクトルロード及びストアデータマニピュレーション、の主要演算をサポートする。ロード/ストアユニット515は、好ましくは、48ビット仮想アドレスから44ビット物理アドレスへのアドレス翻訳を実施するためのマイクロTLB(table look-aside buffer)ブロックを含む。ロード/ストアユニット515は、後述する様式で、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、及び.Dローカルレジスタファイル525にアクセスし得る。フォワーディングマルチプレクサ530は、グローバルスカラーレジスタファイル521、グローバルベクトルレジスタファイル522、対応するストリーミングエンジン、及びロード/ストアユニット515の間のデータ転送を調停する。

0048

分岐ユニット516(.B)は、分岐アドレスを計算し、分岐予測を実施し、予測の結果に応じて制御フローを変更する。

0049

プレディケーションユニット517(.P)は、ベクトルプレディケーションレジスタ上で基本演算を実施する小型制御ユニットである。プレディケーションユニット517は、ベクトルプレディケーションレジスタ526への直接アクセスを有する。プレディケーションユニット517は、AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNTビットカウント)、RMBD(一番右のビット検出))、BIT Decimate and Expand等のプレディケーションレジスタ上で異なるビット演算を実施する。

0050

図6は、グローバルスカラーレジスタファイル521を図示する。16個の独立した64ビット幅のスカラーレジスタがある。グローバルスカラーレジスタファイル521の各レジスタは、32ビットスカラーデータ(レジスタA0〜A15 601と称する)又は64ビットのスカラーデータ(レジスタEA0〜EA15 611と称する)として読み出され得る。しかしながら、書き込みは常に64ビットであり、必要に応じ、最大64ビットになるようにゼロ拡張される。全ての機能ユニットの全てのスカラー命令が、グローバルスカラーレジスタファイル521に対して読み出し又は書き込みし得る。命令タイプはデータサイズを決定する。グローバルスカラーレジスタファイル521は、サイズが8ビットから64ビットまでわたるデータタイプをサポートする。また、ベクトル命令が、ベクトルの上位192ビットデータが無視されて、64ビットのグローバルスカラーレジスタ521に書き込み得る。ベクトル命令はまた、グローバルスカラーレジスタファイル511から64ビットデータを読み出し得る。この場合、オペランドは、入力ベクトルを形成するために、上位192ビットにおいてゼロ拡張される。

0051

図7は、グローバルベクトルレジスタファイル522を図示する。16個の独立した256ビット幅のベクトルレジスタがある。グローバルベクトルレジスタファイル522の各レジスタは、32ビットスカラーデータ(レジスタX0〜X15 701と称する)、64ビットのスカラーデータ(レジスタEX0〜EX15 711と称する)、256ビットベクトルデータ(レジスタVX0〜VX15 721と称する)、又は512ビットのダブルベクトルデータ(DVX0〜DVX12と称するが、図示せず)として読み出され得る。この実施形態において、乗算ユニット511及び相関ユニット512のみがダブルベクトル命令を実行し得る。全ての機能ユニットの全てのベクトル命令が、グローバルベクトルレジスタファイル522に対して読み出し又は書き込みし得る。また、任意の機能ユニットの任意のスカラー命令が、読み出し又は書き込みのために、グローバルベクトルレジスタファイル522レジスタの下位32又は64ビットにアクセスし得る。命令タイプはデータサイズを決定する。

0052

図8は、ローカルベクトルレジスタファイル523を図示する。16個の独立した256ビット幅のベクトルレジスタがある。ローカルベクトルレジスタファイル523の各レジスタは、32ビットスカラーデータ(レジスタM0〜M15 701と称する)、64ビットのスカラーデータ(レジスタEM0〜EM15 711と称する)、256ビットベクトルデータ(レジスタVM0〜VM15 721と称する)、又は512ビットダブルベクトルデータ(DVM0〜DVM7と称するが、図示せず)として読み出され得る。この実施形態において、乗算ユニット511及び相関ユニット512のみがダブルベクトル命令を実行し得る。全ての機能ユニットの全てのベクトル命令が、ローカルベクトルレジスタファイル523に対して書き込みし得る。乗算ユニット511及び相関ユニット512の命令のみが、ローカルベクトルレジスタファイル523から読み出しし得る。命令タイプはデータサイズを決定する。

0053

乗算ユニット511は、ダブルベクトル(512ビットデータ)上で動作し得る。乗算ユニット511は、グローバルベクトルレジスタファイル521及びローカルベクトルレジスタファイル523から、ダブルベクトルデータを読み出し、グローバルベクトルレジスタファイル521及びローカルベクトルレジスタファイル523にダブルベクトルデータを書き込み得る。レジスタ指定DVXx及びDVMxは、下記のように、グローバルベクトルレジスタファイル521及びローカルベクトルレジスタファイル523にマッピングされる。



各ダブルベクトル指定は、グローバルベクトルレジスタ522か又はローカルベクトルレジスタ523における、対応する近隣ベクトルレジスタのペアにマッピングする。指定DVX0〜DVX7は、グローバルベクトルレジスタ522にマッピングする。指定DVM0〜DVM7は、ローカルベクトルレジスタ523にマッピングする。

0054

ローカルベクトルレジスタファイル524は、ローカルベクトルレジスタファイル523に類似する。16個の独立した256ビット幅のベクトルレジスタがある。ローカルベクトルレジスタファイル524の各レジスタは、32ビットスカラーデータ(レジスタL0〜L15 701と称する)、64ビットのスカラーデータ(レジスタEL0〜EL15 711と称する)、又は256ビットベクトルデータ(レジスタVL0〜VL15 721と称する)として読み出され得る。全ての機能ユニットの全てのベクトル命令が、ローカルベクトルレジスタファイル524に対して書き込みし得る。算術ユニット513及び算術ユニット514の命令のみが、ローカルベクトルレジスタファイル524から読み出しし得る。

0055

図9は、ローカルレジスタファイル525を図示する。16個の独立した64ビット幅のレジスタがある。ローカルレジスタファイル525の各レジスタは、32ビットスカラーデータ(レジスタD0〜D15 701と称する)、又は64ビットのスカラーデータ(レジスタED0〜ED15 711と称する)として読み出され得る。全ての機能ユニットの全てのスカラー及びベクトル命令が、ローカルレジスタファイル525に対して書き込みし得る。ロード/ストアユニット515の命令のみが、ローカルレジスタファイル525から読み出しし得る。また、任意のベクトル命令が、結果のベクトルの上位192ビットデータが無視されて、ローカルレジスタファイル525に64ビットデータを書き込むことができる。任意のベクトル命令はまた、64ビットローカルレジスタファイル525レジスタから64ビットデータを読み出すことができる。リターンデータは、入力ベクトルを形成するために、上位192ビットにおいてゼロ拡張される。ローカルレジスタファイル525のレジスタは、ロード/ストアユニット515の64ビット算術論理命令のためのストアデータとして又はソースとしてではなく、ロード/ストア命令におけるアドレスとしてのみ用いられ得る。

0056

図10は、プレディケートレジスタファイル517を図示する。プレディケートレジスタファイル517に16個のレジスタ32ビットレジスタがある。プレディケートレジスタファイル517は、何れかの算術によって実行されるベクトル比較演算の結果を含み、ベクトル選択命令及びベクトルプレディケーテッドストア命令によって用いられる。また、特殊命令のスモールサブセットが、プレディケートレジスタから直接的に読み出し、演算を実施し、プレディケートレジスタへ直接的にライトバックし得る。また、グローバルレジスタファイル(521及び522)とプレディケートレジスタファイル517との間で値を転送できる命令がある。プレディケートレジスタファイル517とローカルレジスタファイル(523、524、及び525)との間の転送はサポートされていない。プレディケーションレジスタ(P0〜P15と称する)の各ビットは、ベクトルデータのバイトを制御する。ベクトルが256ビットであるので、プレディケートレジスタの幅は、256/8=32ビットに等しい。プレディケートレジスタファイルは、ベクトル比較の結果をストアするために、ベクトル比較演算によって書き込まれ得る。

0057

CPU110、210、220、310、410、又は420等のCPUは、命令パイプライン上で動作し得る。この命令パイプラインは、サイクル毎に、命令を7個の実行ユニット(乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515、分岐ユニット516、及びプレディケーションユニット517)に提供するように、最大9個の並列32ビットスロットディスパッチし得る。命令は、更に後述するように、パックされた固定長のフェッチされた命令である。全ての命令は、フェッチ及びデコードのために同数のパイプラインフェーズを必要とするが、様々な数の実行フェーズを必要とする。

0058

図11は、プログラムフェッチフェーズ1110、ディスパッチ及びデコードフェーズ1110、及び実行フェーズ1130のパイプラインフェーズを図示する。プログラムフェッチフェーズ1110は、全ての命令に対して3つのステージを含む。ディスパッチ及びデコードフェーズは、全ての命令に対して3つのステージを含む。実行フェーズ1130は、命令に応じて1から4個のステージを含む。

0059

フェッチフェーズ1110は、プログラムアドレス生成ステージ1111(PG)、プログラムアクセスステージ1112(PA)、及びプログラムレシーブステージ1113(PR)を含む。プログラムアドレス生成ステージ1111(PG)の間、プログラムアドレスがCPUにおいて生成され、読み出し要求がレベル1命令キャッシュL1Iのためのメモリコントローラに送信される。プログラムアクセスステージ1112(PA)の間、レベル1命令キャッシュL1Iは、要求を処理し、そのメモリ内のデータにアクセスし、CPU境界にフェッチパケットを送信する。プログラムレシーブステージ1113(PR)の間、CPUはフェッチパケットを登録する。

0060

命令は、常に、一度にフェチされた16語である。図12は、このフェッチパケットを図示する。図12は、シングルフェッチパケットの16個の命令1201〜1216を図示する。フェッチパケットは、512ビット(16ワード)境界上で整合される。個々の命令の実行は、各命令におけるpビットによって部分的に制御される。pビットは、好ましくは、命令のビット0である。pビットは、命令が別の命令と並列に実行するか否かを決定する。pビットは、下位から上位アドレススキャンされる。命令のpビットが1の場合、次に続く命令が、その命令Iと並列に(同じサイクルにおいて)実行される。命令のpビットが0である場合、次に続く命令は、その命令の後のサイクルで実行される。並列に実行する全ての命令が、実行パケットを構成する。実行パケットは、最大9個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを使用しなければならない。実行パケットは、最大9個の32ビット幅スロットを含み得る。スロットは、自己自足の(self-contained)命令であり得るか、又は直前の命令によって特定された一定フィールドを拡張し得る。スロットは、同じフェッチパケット内の命令に適用するように、条件付きコードとして用いられ得る。フェッチパケットは、最大2個の一定拡張スロット、及び1つの条件コード拡張スロットを含み得る。

0061

最大11個の個別の命令スロットがあるが、スケジューリング制約によって並列スロット最大数である9個に制限される。最大9個のスロットは、下記のように共有される。

0062

乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515、プレディケートユニット517と共有される分岐ユニット516、第1の一定拡張、第2の一定拡張、及び条件コード拡張と共有されるユニットレス命令。実行パケットにおける最後の命令は、0に等しいpビットを有する。

0063

CPU及びレベル1命令キャッシュL1Iパイプラインは、互いから結合解除され得る。レベル1命令キャッシュL1Iからのフェッチパケットリターンは、レベル1命令キャッシュL1Iにおいてヒットがあるか否か等の外部状況に応じて、異なる数のクロックサイクルを取り得る。従って、プログラムアクセスステージ1112(PA)は、他のステージにおけるように1クロックではなく、幾つかのクロックサイクルを取り得る。

0064

ディスパッチ及びデコードフェーズ1110は、適切な実行ユニットステージ1121(DS)、命令プリデコードステージ1122(D1)、及び命令デコード、オペランド読み出しステージ1222(D2)に対する命令ディスパッチを含む。適切な実行ユニットステージ1121(DS)に対する命令ディスパッチの間、フェッチパケットは、実行パケットに分けられ、適切な機能ユニットにアサインされる。命令プリデコードステージ1122(D1)の間、ソースレジスタ宛先レジスタ、及び関連するパスは、機能ユニットにおける命令の実行のためにデコードされる。命令デコードの間、オペランド読み出しステージ1222(D2)では、レジスタファイルからのオペランド読み出しと共に、より詳細なユニットデコードが行われる。

0065

実行フェーズ1130は、実行ステージ1131〜1135(E1〜E5)を含む。異なるタイプの命令は、それらの実行を完了させるために異なる数のこれらのステージを必要とする。パイプラインのこれらのステージは、CPUサイクル境界でのデバイス状態の理解において重要な役割を果たす。

0066

実行1ステージ1131(E1)の間、命令に対する条件が評価され、オペランドが動作される。図11に図示されるように、実行1ステージ1131は、ストリームバッファ1141から、及び概略的に1142として示されるレジスタファイルの1つから、オペランドを受け取り得る。ロード及びストア命令では、アドレス生成が実施され、アドレス変更がレジスタファイルに書き込まれる。分岐命令では、PGフェーズにおける分岐フェッチパケットが影響される。図11に図示されるように、ロード及びストア命令は、本明細書では概略的にメモリ1151として示されるメモリにアクセスする。単一サイクル命令では、宛先レジスタファイルに結果が書き込まれる。これは、命令に対する任意の条件が真として評価されると仮定している。条件が偽として評価される場合、命令は、如何なる結果も書き込むことはなく、又は、実行1ステージ1131の後に任意のパイプライン演算を有する。

0067

実行2ステージ1132(E2)の間、ロード命令がアドレスをメモリに送る。ストア命令がアドレス及びデータをメモリに送る。結果を飽和する単一サイクル命令は、飽和が起こると、制御状態レジスタ(CSR)にSATビットを設定する。2サイクル命令では、結果が宛先レジスタファイルに書き込まれる。

0068

実行3ステージ1133(E3)の間、データメモリアクセスが行われる。結果を飽和する任意の乗算命令は、飽和が起こると、制御状態レジスタ(CSR)にSATビットを設定する。3サイクル命令では、結果が宛先レジスタファイルに書き込まれる。

0069

実行4ステージ1134(E4)の間、ロード命令が、データをCPU境界に運ぶ4サイクル命令では、結果が宛先レジスタファイル書き込まれる。

0070

実行5ステージ1135(E5)の間、ロード命令がデータをレジスタに書き込む。これは、メモリ1151から実行5ステージ1135への入力と共に図11に概略的に図示される。

0071

図13は、例示の実施形態によって用いられる命令の命令コーディングの例を図示する。各命令は、32ビットで構成され、個別に制御可能な機能ユニット(乗算ユニット511、相関ユニット512、算術ユニット513、算術ユニット514、ロード/ストアユニット515)の1つの演算を制御する。ビットフィールドは、次のように定義される。クレッグフィールド及びzビットは、条件付き命令において用いられるオプションのフィールドである。これらのビットは、条件付き命令が、プレディケートレジスタ及び条件を識別するために用いられる。zビット(ビット28)は、プレディケートレジスタにおいて、プレディケーションがゼロに基づくか又は非ゼロに基づくかを示す。z=1の場合、テストはゼロに等しいことに対するものである。z=0の場合、テストは非ゼロに対するものである。クレッグ=0及びz=0のケースは、常に真として扱われ、無条件命令実行を可能にする。クレッグフィールド及びzフィールドは、命令において表2に示されるようにエンコードされる。



なお、zビットの列における「z」は、上述のゼロ/非ゼロ比較選択を指し、「x」は、ドントケア(don’t care)状態を指す。このコーディングは、16グローバルスカラーレジスタのサブセットのみをプレディケートレジスタとして特定し得る。この選択は、命令コーディングにおいてビットを保持するために成される。なお、無条件の命令は、これらのオプションのビットを有さない。無条件の命令では、これらのビット(28〜31)は、好ましくは付加的オペコードビットとして用いられる。しかしながら、必要に応じ、実行パケットが、同じ実行パケットにある命令のための4ビットクレッグ/zフィールドを含む一意の32ビット条件コード拡張スロットを含み得る。表3は、そのような条件コード拡張スロットのコーディングを示す。



このように、条件コード拡張スロットは、同じ実行パケットにおいてクレッグ/zビットが特殊な機能ユニットにアサインされるのと同じ様式でデコードされたビットを特定する。

0072

特殊ベクトルプレディケート命令は、ベクトル演算を制御するために、指定されたプレディケートレジスタを用いる。この実施形態において、全てのこれらのベクトルプレディケート命令は、バイト(8ビット)データ上で動作する。プレディケートレジスタの各ビットは、データの対応するバイト上でSIMD演算が成されるか否かを制御する。プレディケートユニット517の演算は、複数のベクトル比較に基づく様々な複素ベクトルSIMD演算を可能にする。例えば、2つの比較を用いてレンジ判定を行うことができる。候補ベクトルが、第1のデータレジスタ内にパックされた最小限のレンジを有する第1のベクトル参照と比較される。候補ベクトルの第2の比較が、第2のデータレジスタ内にパックされた最大限のレンジを有する第2の参照ベクトルと比較される。2つの結果のプレディケートレジスタの論理的組み合わせが、候補のベクトルの各データ部分がレンジ内かレンジ外かを判定するためのベクトル条件付き演算を可能にし得る。

0073

dstフィールドは、命令結果の宛先として、対応するレジスタファイルにおけるレジスタを特定する。

0074

src2フィールドは、第2のソースオペランドとして、対応するレジスタファイルにおけるレジスタを特定する。

0075

src1/cstフィールドは、命令オペコードフィールド(ビット2〜12、及び付加的に、無条件の命令のためにビット28〜31)に応じて幾つかの意味を有する。第1の意味は、対応するレジスタファイルのレジスタを第1のオペランドとして特定する。第2の意味は即値定数である。命令タイプに応じて、これは、符号なし整数として扱われ、特定されたデータ長にゼロ拡張されるか、又は、符号付き整数として扱われ、特定されたデータ長に符号拡張される。

0076

オペコードフィールド(全ての命令に対してビット2〜12、及び付加的に、無条件の命令に対してビット28〜31)は、命令のタイプを特定し、適切な命令オプションを指定する。これは、機能ユニット及び実施される演算の指定を含む。後述する命令オプションを除き、オペコードの詳細な説明は本記載の範囲に限定されない。

0077

pビット(ビット0)は実行パケットをマークする。pビットは、後に続く命令と並列に実行するか否かを決定する。pビットは、下位アドレスから上位アドレスへスキャンされる。現在の命令に対してp=1の場合、次の命令が現在の命令と並列に実行する。現在の命令に対してp=0の場合、次の命令は現在の命令の後のサイクルにおいて実行する。並列に実行する全ての命令は、実行パケットを構成する。実行パケットは、最大8個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを用いなければならない。

0078

相関ユニット512、及び算術ユニット513及び514は、しばしば、SIMD(single instruction multiple data)モードで動作する。このSIMDモードでは、2つのオペランドからパックされたデータに同じ命令が適用される。各オペランドは、所定のスロットに配置される複数のデータエレメントを持つ。SIMD演算は、データ境界においてキャリー制御によって可能にされる。そのようなキャリー制御は、種々のデータ幅上での演算を可能にする。

0079

図14はキャリー制御を図示する。ANDゲート1401が、オペランド幅算術論理ユニット内のビットNのキャリー出力を受け取る(算術ユニット513及び514に対して256ビット、相関ユニット512に対して512ビット)。ANDゲート1401はまた、後述されるキャリー制御信号を受け取る。ANDゲート1401の出力は、オペランド幅算術論理ユニットのビットN+1のキャリー入力に供給される。ANDゲート1401等のANDゲートは、あり得るデータ境界における全ビットペア間に配置される。例えば、8ビットデータに対して、そのようなANDゲートは、ビット7と8、ビット15と16、ビット23と24の間等となる。そのようなANDゲートの各々は、対応するキャリー制御信号を受け取る。データサイズが最小である場合、各キャリー制御信号は0であり、隣接するビット間のキャリー送信を効果的にブロックする。選択されたデータサイズが両方の算術論理ユニットセクションを必要とする場合、対応するキャリー制御信号は1である。下記の表4は、8ビット、16ビット、32ビット、64ビット、又は128ビットのセクションに分けられ得る、算術ユニット513及び514において用いられるような256ビット幅オペランドのケースに対するキャリー制御信号の例を図示する。最上位ビットのキャリー出力の制御は必要ないので、31個のキャリー制御信号のみが必要とされる。



当分野では、2の整数乗(2N)であるデータサイズ上で演算することが典型的である。しかしながら、このキャリー制御技術は、2の整数乗に限定されない。当業者であれば、どのようにしてこの技術を他のデータサイズ及び他のオペランド幅に適用するか理解するであろう。

0080

図15は、本発明を適用し得るコンピュートクラスタ1500を図示する。コンピュートクラスタ1500は、好ましくは、単一の集積回路において具現化される。コンピュートクラスタ1500は、6個のデュアルコアユニット1510、1520、1530、1540、1550、及び1560を含む。各デュアルコアユニット1510、1520、1530、1540、1550、及び1560は、図2において200で図示されるようなスカラーデュアルコアユニット、又は、図4において図示される400等のベクトルデュアルコアユニットであり得る。典型的なデュアルコア1510は、第1のCPU0 1511、第2のCPU1 1512を含み、その各々が、別個のL1I及びL1Dキャッシュ、共有レベル2(L2)キャッシュ1513、電力制御回路1514及びその他のサポート回路1514を含む。6個のデュアルコアユニット1510、1520、1530、1540、1550、及び1560は、マルチコア共有メモリコントローラ1570に接続される。マルチコア共有メモリコントローラ1570は、MSMCコア1571、システムオンチップ(SOC)インタフェース1572、電力回路1573、及び種々の標示されていないサポート回路を含む。マルチコア共有メモリコントローラ1570は、コンピュートクラスタ1500とシステムメモリとの間のインタフェースとして働き、レベル3(L3)キャッシュ、外部インタフェース等を含み得る。マルチコア共有メモリコントローラ1570は、コンピュートクラスタ1500の種々のパーツをL3 SRAM/キャッシュと相互接続する。標示されていないサポート回路は、SOC毎に必要なL3 SRAM、クロック、DFT(design for test)、電力管理、及びSOCモジュールとインタフェースするために必要な集積ロジックを統合する。

0081

デュアルコア1510、1520、1530、1540、1550、及び1560は、マルチコアバスアーキテクチャ(MBA)を介して、MSMC1570と相互接続される。MBAプロトコルは、従来の通信ハンドシェイクをクレジットシステムで置き換える。MBAクレジットシステムは、スレーブの、利用可能なクレジットの数をトラッキングすることによってトランザクションをアクセプトする能力を、マスターが正確にトラッキングするためのメカニズムを提供する。

0082

マスターからスレーブに送られる各トランザクションは、マスターが少なくとも1つのクレジットを使うことを必要とする。クレジットは、マスターに、特定のタイプのトランザクションを送る権利を与える有限のリソースである。一般的に、クレジットは、トランザクションが、スレーブによって受け取られると常駐することになるスレーブにおける物理ストレージ位置を表す。

0083

マスターは、所有しているクレジットの総数を正確にトラッキングすることが必要である。各トランザクションに対して、少なくとも1つのクレジットがマスターによって使われ(spend)、その結果、利用可能なクレジットの数が減少する。マスターが所与のクレジットタイプに対して、全ての利用可能なクレジットを使った場合、マスターは、そのクレジットタイプを必要とするトランザクションを送ることはできない。マスターが、トランザクションによって必要とされるより少ないクレジットを保有することもあり得る。特殊なタイプの利用可能なクレジットは、スレーブにおいて利用可能なデータバッファの数をトラッキングし得る。マスターは、必要とされるクレジットのタイプ及び数が不足しているトランザクションを開始することはできない。エージェントが、書き込み量を、保証されているスレーブ容量に対応する利用可能なクレジットタイプ及び数に限定するように、トランザクションを限定し得る。

0084

スレーブは、クレジットタイプに対応する物理リソースフリーにされると、マスターにクレジットをリターンバックしなければならない。このように、マスターはクレジットを使い、スレーブがクレジットをリターンする。システムにおけるクレジットの総数は固定され、それが閉鎖システムである。クレジットタイプに対するトランザクションタイプのマッピングは、実装依存であり、MBAプロトコルによって特定されない。

0085

MBAプロトコルにおいてつくられるクレジットシステムは、マスターとスレーブとの間の交渉を変化させて、より高い性能、より高い稼働インタフェースをつくる。従来のハンドシェイクは、トランザクションをアクセプト及び処理する前に、スレーブがトランザクションを肯定応答することを必要とするので、そのようなトランザクションが、肯定応答を待っている間、バスをブロックし得る。従来の通信ハンドシェイクにおいて、マスターは、スレーブがトランザクションをアクセプトすることが可能か否かを知らないし、知る必要がない。マスターは、トランザクションをバス上に置き、要求をアサートする。スレーブは、肯定応答をアサートすることによって準備が整う任意の時点で、コマンドをアクセプトし得る。

0086

クレジットシステムは、スレーブのトランザクションをアクセプトする能力をマスターがトラッキングすることを可能にし、そのため、ハンドシェイクから肯定応答が取り除かれる。マスターが各クレジットタイプに対して利用可能なクレジットの数をトラッキングするので、マスターは、スレーブによってアクセプトされることを保証されているトランザクションのみを送信する。

0087

クレジットは、スレーブにおける物理リソースを表す有限のリソースである。クレジットは、マスターによって各トランザクションに対して使われる。クレジットは、スレーブが、クレジットタイプに関連する物理リソースをフリーにするために充分にトランザクションを処理すると、スレーブからマスターにリターンされなければならない。クレジットのリターンは、スレーブにおいて進行中のトランザクション処理の後、成され、このアクションクリティカルパスから取り除く。これとは逆に、従来のハンドシェイクは、トランザクションを処理するために、クリティカルパスにスレーブ肯定応答を置く。

0088

MBAクレジットシステムには、従来の通信ハンドシェイクに比べて2つの重要な利点がある。第1の利点は、トランザクションが、正確に1つのサイクルの間、通信チャネル占有することである。これは、単一のトランザクションが、スレーブからの肯定応答を待っている間、チャネルをブロックすることを防止する。この結果、特に、同じ物理チャネルが複数の仮想又は物理マスターによって共有されているとき、スループットが一層高い通信チャネルとなる。第2の利点は、トランザクションを送信するための要件としての肯定応答信号を除去することによって、マスターからスレーブへトランザクションを送信するために必要とされる通信ハンドシェイクが短縮されることである。これはトランザクションをマスターからスレーブへ通信することの全体のレイテンシを削減し、その結果、より高性能な通信となる。

0089

マルチコアバスアーキテクチャ(MBA)は、マルチプロセッサプラットフォームにおけるデバイス間の内部通信のために設計された、高性能なポイントツーポイント単一方向バスプロトコルである。MBAプロトコルは下記の特性を有する。MBAプロトコルは、ポイントツーポイントである。正確に2つのエージェントが別個のトランザクションによって通信する。一方のエージェントがマスターとして機能し、他方のエージェントがスレーブとして機能する。単一のマスターと複数のスレーブとの間のブロードキャストはサポートされていない。MBAプロトコルは単一方向性である。コマンドトランザクションが、マスターによってのみ開始され得る。スレーブは、コマンドトランザクションを開始しない可能性があり得る。応答トランザクションは、第2の、ミラーリングされたインタフェース上で開始される。MBAプロトコルはノンブロッキングである。マスターによって発っせられたトランザクションは、単一サイクルにおいてスレーブによってアクセプトされなければならない。バス上のストールしているトランザクションに対する対策はない。MBAプロトコルはクレジットベースである。各トランザクションが、関連するクレジット及びクレジットタイプを有する。マスターは、トランザクションを開始し得る前に、適切なクレジットを有さなければならない。適切なクレジットタイプのクレジットの所有によって、スレーブがそのトランザクションをアクセプトすることが保証される。

0090

プロトコルにおけるデバイス及びそれらの挙動を正確に識別するために、本明細書を通して、次の用語が用いられる。

0091

エージェント:本明細書で定義されるMBAプロトコルを用いて通信する単一デバイス又はロジックコントローラ

0092

エージェントペア:MBAプロトコルを用いて通信する2つのエージェント。

0093

トランザクション:マスターからスレーブへのデータの転送を伴う可能性もあり、伴わない可能性もある、2つのエージェントであるマスターとスレーブとの間の読み出し、書き込み、又はメッセージ通信

0094

マスター:トランザクションを開始するエージェント。

0095

スレーブ:マスターによって開始されるトランザクションを受け取るエージェント。

0096

コアサイド:両方のエージェントが、(例えば、キャッシュ階層において)ハードウェアキャッシュを有し得る場合の、トランザクションにおいてCPUコアに近い方のエージェント。

0097

ファーサイド:両方のエージェントが、例えばキャッシュ階層において、ハードウェアキャッシュを有する場合の、トランザクションにおいてCPUコアから遠い方のエージェント。

0098

データフェーズトランザクションデータチャネル(TDC)上で単一サイクルにおいて転送されるデータの単一のビート

0099

データ転送:単一did[11:0]に対するデータフェーズの完全な集合最終データフェーズは、dlast信号のアサートによって示される。

0100

データウィンドウ:ddata[CFG:0]信号の幅によって決定されるようなデータ転送の最大サイズデフォルトの幅は512ビットである。

0101

コマンドトランザクション:2つのエージェントの間でシーケンスを始めるトランザクションのタイプ。コマンドトランザクションが、一意のcid[11:0]によって区別され、データの転送を伴う可能性もあり、伴わない可能性もある。

0102

応答トランザクション:2つのエージェントの間でシーケンスを完了するトランザクションのタイプ。応答トランザクションは、コマンドID(cid[11:0])によって、前に開始されたコマンドトランザクションとマッチングされ、データの転送を伴う可能性もあり、伴わない可能性もある。

0103

書き込み応答:書き込みコマンドトランザクションのためのシーケンスを完了する書き込み応答チャネル(WRC)上の専用応答。

0104

トランザクションシーケンス:ペアにされたインタフェーストポロジーを用いる2つのエージェント間の完全なプロトコルレベル通信。シーケンスは、一方のエージェントによって開始されるコマンドトランザクションで始まり、他方のエージェントからの応答トランザクションか又は書き込み応答のいずれかによって完了する。

0105

クレジット:マスターに、単一トランザクションを発する権利を与える単一原子単位。アクセプトの肯定応答を必要とせずに、スレーブが単一サイクルにおいてアクセプトすることを保証する。クレジットはクレジットタイプによって分類される。クレジットは、マスターによって保有され、使われる。クレジットは、充分な処理が成された後にスレーブによってリターンされ、それによって、マスターは同一クレジットタイプの新しいトランザクションを開始し得る。

0106

クレジットタイプ:使われる又はリターンされるクレジットの種類を識別するためにマスターによって用いられるクレジットの、総称的に定義されるが特定的に実装される分類。クレジットタイプは、典型的に、スレーブエージェントにおける特定の物理リソースに関連する。マスターに対して利用可能なリソースの個々に割り当て可能なスロットの数は、そのクレジットタイプに対する利用可能なクレジットの数に正確に等しい。マスター及びスレーブは、各総称的なクレジットタイプの厳密な定義において合意を有さなければならない。

0107

クレジットカウント:使われるべき、マスターにとって利用可能な所与のクレジットタイプのクレジットの現在の数。

0108

クレジットスぺンド:トランザクション属性チャネル(TAC)上の有効なトランザクションを識別するcvalid信号のアサート、及びccredit[CFG:0]信号上の1つ又は複数の有効なクレジットタイプのアサートを介して、TAC上でトランザクションを開始するアクション。マスターは、クレジットスぺンドが許可される前に、各関連するクレジットタイプに対して少なくとも1つのクレジットを有さなければならない。マスターは、各クレジットスぺンドに対して関連するクレジットタイプを1つ減らさなければならない。クレジットスぺンドは、暗示的なコマンドレディを備えるコマンド要求と等価である。下記に説明するように、複数の異なるタイプのクレジットがあり得る。クレジットスぺンドは、トランザクションに対応するクレジットタイプのものでなければならない。また、クレジットスぺンドは、トランザクションをサポートするために充分な数のクレジットを含まなければならない。このように、データ転送の場合において、マスターによって費やされるクレジットの数は、データ長、及び受け取り側のスレーブのバッファ容量に対応し得る。

0109

クレジットリターン:前のクレジットスぺンドに応答して、スレーブからマスターにクレジットをリターンするアクション。マスターは、クレジットリターンに応答して、関連するクレジットタイプを増加させる。

0110

クレジットリミットリセットの際、マスターに対して利用可能な特定のクレジットタイプに対するクレジットの最大数。クレジットリミットは、第1のクレジットリターンを受け取る前にマスターによって開始され得る個々のクレジットスぺンドアクションの最大数を表す。

0111

チャネル:トランザクションを記述すること又はデータを転送すること等の、共通の目的を集合的に果たすインタフェース上の信号の集合。

0112

クレジットされた(credited)チャネル:クレジットを用いるチャネル。これには、クレジットスぺンド及びクレジットリターンの両方のためのシグナリングが含まれる。

0113

キャッシャビリティドメイン:それに対して割り当てが可能であることをトランザクションが指示し得る、潜在的にキャッシュ階層の異なるレベルにあるキャッシュの集合である。

0114

シェアラビリティドメイン:潜在的にキャッシュ階層の異なるレベルにあるキャッシュの集合である。これを備えると、コヒーレントなトランザクションが、コヒーレンスプロトコルの規則に従うことを期待される。

0115

MBAプロトコルは、好ましくは、エージェントがMESIハードウェアキャッシュコヒーレンスプロトコルを実装するためのシグナリングサポートを提供する。サポートされたトランザクションタイプ及び応答状態信号は、ACEとして知られるARM AXIコヒーレンス拡張に基づく。コヒーレンスプロトコルは、データを変更する前にキャッシュライン精度で排他的所有権執行することによって、同じシェアラビリティドメインにおけるキャッシュがコヒーレントなままであるように規定する。コヒーレンスプロトコルの完全な取り扱いは本明細書の範囲外であるが、ここでは、MBAプロトコルにおいて用いられるコヒーレンスシグナリングのための背景を提供するために概要を示す。

0116

標準MESIキャッシュコヒーレンスプロトコルは、キャッシュラインのための4つの状態、即ち、変更、排他的、共有、及び無効、を提供する。

0117

変更:変更された状態を有するキャッシュラインであり、メインメモリに対して変更されている。このキャッシュラインは、同じシェアラビリティドメインにおいて、他のどのキャッシュにも存在しない。

0118

排他的:排他的状態を有するキャッシュラインであり、メインメモリに対して変更されていないが、このキャッシュラインは、同じシェアラビリティドメインにおいて、他のどのキャッシュにも存在しない。

0119

共有:共有状態を有するキャッシュラインであり、メインメモリに対して変更されていない。このキャッシュラインは、同じシェアラビリティドメインにおいて、他のキャッシュに存在し得る。

0120

無効:無効状態を有するキャッシュラインであり、キャッシュに存在しない。そのようなキャッシュラインにストアされた如何なるデータも無効であり、アクセスされるべきではない。

0121

プロトコルにおけるキャッシュコヒーレンスサポートは、トランザクション間に複数の依存関係を導入することを必要とする。例えば、コヒーレントReadCleanトランザクションの結果、1つ又は複数のCleanSharedスヌープトランザクションが生成し得、このCleanSharedスヌープトランザクションは、ReadCleanトランザクションの適法な完了の前に完了しなければならない。このケースでは、ReadCleanは、完了するためにCleanSharedに依存する。ACE仕様は、AXIプロトコルに対するコヒーレンス拡張に関連する多くのそのような依存関係を詳述している。

0122

依存関係は、一つのトランザクションが別のトランザクションが完了するまで、ブロックしなければならない場合のような、ブロッキングシナリオをつくる。また、コヒーレントトランザクションの順も、ブロッキングシナリオをつくる。例えば、オーバーラップするアドレスに対する2つのコヒーレント書き込みトランザクションは、何らかの方式で順序付けされなければならない。一方の書き込みトランザクションが他方によってブロックされる。

0123

デッドロックは、解消できない相互依存関係が存在する状態である。これは、依存性グラフにおけるループと考えることもできる。システムデッドロックを防止するために、ブロッキング規則が確立されなければならない。MBAプロトコルにおける全てのトランザクションが、ブロッキングトランザクションか又はノンブロッキングトランザクションのいずれかとして分類され得る。

0124

ブロッキングトランザクションは、下記の全てにより特徴付けられる。ブロッキングトランザクションは、1つ又は複数のスヌープコマンドトランザクションを生成することを許可されている。ブロッキングトランザクションは、完了するために、スヌープコマンドトランザクションの完了に依存することを許可されている。ブロッキングトランザクションは、完了するために、ノンブロッキングトランザクションの完了に依存することを許可されている。ブロッキングトランザクションは、完了するために、ブロッキングトランザクションの完了に依存することを許可されている。

0125

ノンブロッキングトランザクションは、下記の全てにより特徴付けられる。ノンブロッキングトランザクションは、スヌープコマンドトランザクションを生成することを許可されていない。ノンブロッキングトランザクションは、スヌープコマンドトランザクションの完了に依存することを許可されている。ノンブロッキングトランザクションは、ブロッキングトランザクションの完了に依存することを許可されていない。ノンブロッキングトランザクションは、ノンブロッキングトランザクションの完了に依存することを許可されている。

0126

後述の表6は、MBAプロトコルにおける各トランザクションを、ブロッキング又はノンブロッキングとして識別する。

0127

単一のMBAインタフェースが、3つの別個のチャネルに分割され、それらは、マスターからスレーブへの単一方向データフローを備える完全なトランザクションのために共に動作する。3つのMBAインタフェースチャネルは、要約すると次のようになる。トランザクション属性チャネル(TAC)は、マスターからスレーブへの単一のトランザクションのための全ての属性を特定するクレジットされたチャネルである。トランザクションデータチャネル(TDC)は、マスターからスレーブへのデータ転送に用いられるクレジットされない(non-credited)チャネルである。各TDCは、TAC上で前に又は同時に開始されたトランザクションにマッチングするIDを含む。書き込み応答チャネル(WRC)は、スレーブに書き込み応答を送るために、マスターによって用いられるクレジットされたチャネルである。各WRCは、ペアにされたインタフェーストポロジーにおける反対側のTAC上で前に開始されたトランザクションにマッチングするIDを含む。

0128

図16は、単一のMBAインタフェースのための各チャネルに対する信号方向を図示する。図16は、マスターエージェント1610及びスレーブエージェント1620を含む。データフロー1611によって示されるように、マスターエージェント1610は、スレーブエージェント1620にシグナリングする。マスターエージェント1610は、TAC 1612、TDC 1613、及びWRC 1614を介して、信号をスレーブ1620に送信する。

0129

図17は、ペアにされたインタフェーストポロジー(PIT)における各チャネルを図示する。完全なトランザクションシーケンスを実施するために、エージェントペアは、ミラーリングされたペア構成の2つの別個のMBAインタフェースを用いて通信しなければならない。これは対インタフェースと称される。対インタフェースは、2つのエージェント間で双方向のデータ転送をサポートする。図17は、コアサイドエージェント1710及びファーサイドエージェント1720を図示する。コアサイドエージェント1710は、CPUコアに近い方のエージェントである。ファーサイドエージェント1720は、CPUコアから遠い方のエージェントである。対インタフェーストポロジーにおいて、一方のエージェントは常にコアサイドエージェントであり、他方のエージェントは常にファーサイドエージェントである。

0130

第1のインタフェースは、データフロー1711によって示されるように、ファーサイドエージェント1720に対するコマンド及び応答トランザクションの両方を開始するために、コアサイドエージェント1710によって用いられる。これらのトランザクションでは、コアサイドエージェント1710はマスターであり、ファーサイドエージェント1720はスレーブである。コアサイドエージェント1710は、TAC 1712、TDC 1713、及びWRC 1714を介して、信号をファーサイドエージェント1720に送信する。

0131

第2の、ミラーリングされたインタフェースは、データフロー1721によって示されるように、コアサイドエージェント1710に対するコマンド及び応答トランザクションの両方を開始するために、ファーサイドエージェント1720によって用いられる。ファーサイドエージェント1720は、TAC 1722、TDC 1723、及びWRC 1724を介して、信号をコアサイドエージェント1710に送信する。

0132

図18は、別の例示の対インタフェーストポロジー(PIT)における各チャネルを図示する。図18は、コアサイドエージェント1810及びファーサイドエージェント1820を図示する。下記の図18は、対インタフェーストポロジーを示す。この例では、読み出しシーケンスが示される。コアサイドエージェント1810は、マスターとして機能しながら、インタフェース上で読み出し演算を開始する。そのような読み出し演算は、コアサイドエージェント1810からファーサイドエージェント1820へのデータ転送を必要としない。このように、このシーケンスに対して、トランザクションデータチャネル(TDC)がコアサイドエージェント1810によって用いられない。データフロー1811に従って、コアサイドエージェント1810は、マスターとして、TAC 1712を介して、信号をファーサイドエージェント1820に送信する。トランザクションシーケンスを完了するために、ファーサイドエージェント1820は、マスターとして(データフロー1821に従って)TAC 1822を介して読み出し応答トランザクションを開始し、読み出されたデータをTDC 1823上に供給する。

0133

対インタフェーストポロジーは、各エージェントが、コマンド及び応答トランザクションの両方を開始することを許可し、必要に応じ他のエージェントにデータを転送する。データフローは、マスターからスレーブへの単一の方向に制約される。この理由により、各エージェントは、1つのインタフェース上でマスターとして機能し、第2のミラーリングされたインタフェース上でスレーブとして機能する。

0134

トランザクション属性チャネル(TAC)は、単一のクレジットされたトランザクションを開始するために必要な全ての属性を特定するクレジットされたチャネルである。トランザクション属性を形成する全てのTAC信号は、正確に1サイクルの間にマスターによってアサートされ、同じサイクルにおいてスレーブによってアクセプトされなければならない。TAC上でのトランザクションの開始は、クレジットの使用を必要とする。クレジットの使用は、スレーブが、トランザクションをアクセプトするために内部物理リソース内にスペースを有することを保証する。結果として、スレーブは、TAC上でアサートされたあらゆる新しいトランザクションをアクセプトすることを要求される。

0135

マスターは、利用可能なクレジットによってのみ制限されるが、サイクル毎に新たなトランザクションを開始し得る。トランザクションは、データの転送を必要とする可能性も、必要としない可能性もある。TAC上で開始されたトランザクションがデータの転送を必要とする場合、トランザクションデータチャネル(TDC)が用いられる。

0136

cvalidのアサートと共に、マスターによって使われる全てのクレジットは、ccredit[CFG:0]信号によって決定されるクレジットタイプを有する。トランザクションがハードウェアリソースから成功裏に除去されると、スレーブは、creturn[CFG:0]信号を用いて、同じタイプのクレジットをマスターにリターンバックしなければならない。各インタフェースに対して全てのTAC信号が必要とされるわけではない。表5は、好ましい実施形態に従った、トランザクション属性チャネル信号を列挙する。

0137

信号cvalid、ccredit、cid、ctype、cmstid、cdata、cpriority、及びcsbandは、全てのトランザクションにおいて用いられ得る。信号caddress、cmemtype、cpable、ccinner、ccouter、csdomain、cbytecnt、cemudbg、及びcsecureは、コマンドトランザクションにおいてのみ用いられ得る。信号ccoh、cdirty、cstatus、及びctraceは、応答トランザクションにおいてのみ用いられ得る。信号creturnは、クレジットリターントランザクションにのみ用いられ得る。

0138

下記は、トランザクション属性チャネル上の上述された信号の説明である。表5に記載されるように、幾つかの信号は必要として指定され、幾つかは任意として指定される。チャネルがインタフェース上に存在する場合、必要とされる信号が存在しなければならない。構成にわたって全チャネルが除去される場合、必要/任意の指定は適用可能ではない。

0139

cvalid信号は、TAC上の有効なトランザクションの存在を識別する。0はトランザクションがないことを示す。1は有効なトランザクションがバス上にあることを示す。

0140

ccredit[CFG:0]信号は、このトランザクションによってクレジットが使われていることを識別するビットベクトルである。利用可能なクレジットタイプの数、及び従って、この信号の幅は、構成オプションである。好ましい実施形態において、MBAプロトコルは、ジェネリック整数クレジットタイプを定義する。クレジットタイプは、ゼロから漸増的に番号が付される符号なしの整数である。creturn[CFG:0]信号の幅は、ccreditの幅にマッチングしなければならない。トランザクション属性チャネル(TAC)上のトランザクションの存在を示すようにcvalidがアサートされるとき、ccreditは、アサートされた少なくとも1つのビットと共に非ゼロ値を1にキャリーする必要がある。複数のクレジットが、単一のトランザクションと共に使われ得る。これはccreditビットベクトルにおいて複数のビットをアサートすることによって達成される。マスター及びスレーブによるクレジットタイプの解釈及び物理リソースへのマッピングは、実装固有である。

0141

caddress[47:0]信号は、現在のトランザクションに対する開始アドレスを識別する。アドレスは、仮想アドレス、物理アドレス、又は他の任意の中間アドレス表現であり得る。アドレスは、整合及び非整合トランザクションの両方に対するトランザクションのための開始バイトを特定する。この信号は、マスターがコマンドトランザクションを開始するインタフェース上で必要とされる。

0142

cmstid[11:0]信号は、このトランザクションを開始するシステムマスターを一意的に識別する。cmstid信号は、正確なセキュリティ保護チェックを可能にするために、現在のマスターの外で発するトランザクションに対して正確に伝搬されるべきである。

0143

cid[11:0]信号は、現在のトランザクションを一意的に識別する。コマンドトランザクションがcidを確立する。トランザクションデータチャネル(TDC)上の対応するデータ転送は、did[11:0]信号を介してcid信号をミラーリングする。後続の応答トランザクション及び書き込み応答は、cid及びwid[11:0]信号を介してcidをミラーリングする。

0144

ctype[5:0]信号は、現在のトランザクションのタイプを識別する。表6は、6ビットctype信号の好ましいデコーディングを列挙する。トランザクションタイプは、トランザクションのカテゴリを識別する3つの最上位ビット、及びカテゴリ内の特定のタイプを識別する3つの最下位ビットを用いてエンコードされる。



他のあり得る全てのコーディングは予備であり、好ましい実施形態において用いられていない。

0145

cmemtype[1:0]信号は、仮想メモリ翻訳によって決定されるように、所与のトランザクションアドレスに対するメモリタイプを識別する。3つのサポートされたメモリタイプは、異なる挙動上の意味を有する。00のコーディングは、デバイスメモリタイプを示す。01のコーディングは、通常のライトバックキャッシュメモリタイプを示す。10のコーディングは、通常のライトスルーキャッシュメモリタイプを示す。11のコーディングは予備であり、好ましい実施形態において用いられていない。

0146

cpable信号は、仮想メモリ翻訳によって決定されるように、トランザクションアドレスがプリフェッチ可能か否かを識別する。プリフェッチ可能とマークされたメモリ領域は、ハードウェアプリフェッチストリームの開始に貢献し得る。0は、プリフェッチ不可能を示す。1はプリフェッチ可能を示す。

0147

ccinner[1:0]信号タイプは、仮想メモリ翻訳によって決定されるように、トランザクションアドレスに対する内部キャッシャビリティドメインに対応するキャッシュ割り当て属性を識別する。

0148

ccouter[1:0]信号は、仮想メモリ翻訳によって決定されるように、トランザクションアドレスに対する外部キャッシャビリティドメインに対応するキャッシュ割り当て属性を識別する。

0149

キャッシュ階層(レベル1、レベル2、レベル3キャッシュ等)は、内部ドメインと外部ドメインの、2つの相互に排他的なキャッシャビリティドメインに分けられる。キャッシュ割り当てポリシーは、各ドメインに対して別個に確立され、仮想メモリ翻訳によってストアされるメモリ属性において記録される。内部キャッシャビリティドメインは、CPUに最も近いキャッシュ、典型的にレベル1及びレベル2キャッシュ、を含む。外部キャッシャビリティドメインは、内部ドメインにおいてキャッシュを含まず、最終レベルキャッシュ等の内部ドメインを超えるキャッシュを含む。内部及び外部キャッシュドメインの解釈は実装依存であり、幾つかの実装は両ドメインを同一として取り扱うことを選択し得る。

0150

表7は、同一であるccinner及びccouterのコーディングを列挙する。

0151

csdomain信号は、仮想メモリ翻訳によって決定されるように、トランザクションに対する、シェアラビリティドメイン、内部、又は外部を識別する。シェアラビリティドメインは、このトランザクションに対してコヒーレントに維持されなければならないキャッシュを識別する。

0152

内部及び外部の2つのシェアラビリティドメインがある。2つのドメインは、相互排他的ではない。外部ドメインは、内部ドメインにおいてキャッシュを含む。内部共有ドメインは、CPUに最も近いキャッシュ、典型的にレベル1及びレベル2キャッシュ、を含む。外部共有ドメインは、最終レベルキャッシュ等の内部ドメインを超えるものに加えて、内部ドメインにおけるキャッシュを含む。内部及び外部共有ドメインの解釈は実装依存であり、幾つかの実装は、両ドメインを同一として取り扱うことを選択し得る。0は内部共有ドメインを示す。1は外部共有ドメインを示す。csdomainは、シェアラブルトランザクションに対してのみ有効である。csdomain信号は、ReadNoSnoop及びWriteNoSnoopトランザクションタイプに対して無視される。

0153

ccoh[1:0]信号は、読み出し応答又はスヌープ応答トランザクションに対するコヒーレンス状態情報を識別する。コヒーレンス状態情報は、開始側マスターに、キャッシュラインの最終コヒーレント状態通知するために用いられる。読み出し応答トランザクションでは、ccohは、読み出しが完了したときに、割り当てキャッシュにおけるラインのコヒーレント状態を示す。スヌープ応答トランザクションでは、ccohは、スヌープが完了したときに、スヌープされたキャッシュにおけるラインのコヒーレント状態を示す。表8は、ccohの有効なエンコーディングを列挙する。

0154

cdirty信号は、この応答トランザクションに関連するキャッシュラインデータ転送が、メインメモリに対してダーティか又はクリーンかを識別する。cdirty信号は、スヌープ側のマスターに、スヌープ応答データがメインメモリにライトバックされる必要があるか否かを示すために用いられる。cdirty信号は、オプションで、SharedDirty MESI状態を実装するために、読み出し演算と共に用いられ得る。cdirty信号は、応答トランザクションにのみ適用し、コマンドトランザクションに対する意味を搬送せず、コマンドトランザクションに対して、0に関連付けられなければならない。0のcdirty信号は、キャッシュラインデータ転送がメインメモリに対して、変更されていないことを示す。1のcdirty信号は、キャッシュラインデータ転送がメインメモリとは異なることを示す。これは、このキャッシュラインが、今後どこかの時点で、メインメモリにライトバックされなければならないことを示す。

0155

data信号は、このトランザクションが、関連するデータ転送を伴うか否かを識別する。読み出し演算は、読み出し演算がデータ転送を含まないので、この信号をアサートすることはない。後続の読み出し応答トランザクションは、cdata信号をアサートし得る。0のcdata信号は、トランザクションが転送データを含まないことを示す。1のcdat2信号は、トランザクションが関連データを含むことを示す。従って、書き込みコマンドトランザクションは、cdata=1をアサートすることが必要とされる。読み出し応答トランザクションは、cstatus[1:0]において示される状態に関係なく、cdata=1をアサートすることが必要とされる。

0156

cbytecnt[6:0]信号は、トランザクションの総サイズを識別する。最大の適法サイズは128バイトである。全てゼロのcbytecntは、128バイトトランザクションを示す。cbytecntのこのコーディングは、スヌープ及びビクティムトランザクションに対して必要とされる。そうでない場合、cbytecnt信号の数は、データ転送バイトの数に等しい。ゼロサイズのトランザクションは、cbytecnt信号によって指定することができない。しかしながら、書き込みトランザクションは、如何なるバイトも変更しない書き込みトランザクションを実施するために、TDC上のdbyten[CFG:0]信号をゼロ設定し得る。

0157

cstatus[1:0]信号は、応答トランザクションに対するトランザクション完了状態を識別する。この信号は、応答トランザクションに対してのみ有効であり、コマンドトランザクションに対して無視される。表9は、有効なエンコーディングを列挙する。

0158

ctrace[3:0]信号は、読み出し応答トランザクションに対するトレース情報を識別する。この情報は、エミュレーション/デバッグアーキテクチャによって用いられる。トレース情報は、トランザクションがサービスされたメモリ階層におけるレベルを記録する。トレース情報は、トランザクションの成功失敗状態とは関係なく記録される。成功/失敗状態は、cstatus[1:0]信号においてキャプチャされる。信号エンコーディングは、エミュレーション/デバッグアーキテクチャ仕様によって指定されたものにマッチングするように定義される。表10は、有効なエンコーディングを列挙する。

0159

cemudbg信号は、現在のトランザクションを、エミュレーショントランザクションか又は非エミュレーショントランザクションとして識別する。0のcemudbg信号は、通常の非エミュレーショントランザクションを示す。1のcemudbg信号は、エミュレーショントランザクションを示す。

0160

csecure信号は、現在のトランザクションのセキュリティレベルを識別する。0のcsecure信号は、非セキュアトランザクションを示す。1のcsecure信号は、セキュアトランザクションを示す。

0161

cpriv[1:0]信号は、現在のトランザクションの特権レベルを識別する。表11は、有効なエンコーディングを列挙する。

0162

cpriority[2:0]信号は、現在のトランザクションの優先レベルを識別する。この信号は、トランザクションを仲裁するためにスレーブによって用いられる。下位の数値は、より高い優先度を示す。従って、000のcpriority[2:0]信号は、最高優先度を示し、111のcpriority[2:0]信号は、最低優先度を示す。

0163

csband[CFG:0]信号は、応答上でミラーリングされないオプションのユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。csband信号は、トランザクション属性チャネル(TAC)によってのみ用いられ、トランザクションシーケンス演算の一部としてミラーバックされる必要がない。

0164

cmsband[CFG:0]信号は、応答上でミラーリングされなければならないオプションのユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。コマンドトランザクションのためのcmsband信号は、トランザクションシーケンス演算の一部として応答トランザクションがアサートされるとき、同じ値を用いてミラーリングされなければならない。

0165

creturn[CFG:0]信号は、それに対してこのサイクルで単一のクレジットがリターンされる、クレジットタイプを識別する。利用可能なクレジットタイプの数、従って、この信号の幅は、構成オプションである。MBAプロトコルは、ジェネリック整数クレジットタイプを定義する。マスター及びスレーブによるクレジットタイプの解釈は、実装固有である。creturn信号幅は、候補となり得るクレジットタイプの数に正確にマッチングする。creturn信号は、インタフェース上で使用されている各クレジットタイプに対して1ビットを備えるビットベクトルとして解釈される。creturn信号の各ビットは、各サイクルでスレーブによって独立してアサートされ得る。creturn信号における任意のビット上の1の値は、そのタイプの単一のクレジットのスレーブからマスターへのリターンを示す。或るサイクルでcreturn信号における複数のビットがアサートされる場合、信号においてアサートされた各ビットに対して、1つのクレジットがスレーブからマスターにリターンされる。インタフェース上の各クレジットタイプに対して、スレーブからマスターに、各サイクルで最大1つのクレジットがリターンされ得る。

0166

トランザクションデータチャネル(TDC)は、トランザクション属性チャネル(TAC)上で開始されるトランザクションに対して、マスターからスレーブへのデータ転送を実施するために用いられる、クレジットされないチャネルである。TDCは、TACとは独立してマスターされる。これらの2つのチャネルは、TACに存在するcid[11:0]信号、及びTDCに存在するdid[11:0]信号を介してリンクされる。データ転送は、1つ又は複数のデータフェーズに分割される。TDC上の信号は、各データフェーズに対して正確に1つのサイクルの間、マスターによってアサートされ、同じサイクルにおいてスレーブによってアクセプトされなければならない。

0167

TDC上のデータ転送内の個々のデータフェーズは、厳密に線形順に成される必要があるが、連続したサイクルで成される(例えば、バーストする)必要はない。データフェーズの間の空サイクルが、TDC上で許可される。単一のトランザクションの最終データフェーズは、dlast信号のアサートによって示される。TDCの全体的な利用を改善するために、データ転送内のデータフェーズが厳密に線形順に生じる限り、マスターは異なるトランザクションからのデータフェーズをインターリーブし得る。データウィンドウのサイズ、及び従ってddata信号は、64、128、256、512ビット幅に構成可能である。デフォルトは512ビットである。各データフェーズは、dbyten[CFG:0]信号によって指示されるように、データウィンドウの全体か又は一部のいずれかを転送し得る。各インタフェースに対して、全てのTDC信号が必要とされるわけではない。表12は、トランザクションデータチャネルの信号を列挙する。

0168

表12のサイズの列では、CFGは、この信号が構成可能であることを示す。括弧内の数字は、ビットでのデフォルトサイズである。dword、dparity、及びdedc信号のサイズは、ddata信号のサイズから導き出される。dword信号の幅は、構成されたデータウィンドウサイズ、及び128バイト(1024ビット)の最大データ転送の両方に基づいて決定される。最大データ転送サイズは、データウィンドウのサイズに関係なく、128バイトで固定される。

0169

dvalid信号は、トランザクション属性チャネル(TAC)上の同じサイクルか又は前のサイクルのいずれかにおいて開始されたトランザクションに対する、TDC上の有効なデータフェーズの存在を識別する。0のdvalid信号は、現サイクルにデータがないことを示す。1のdvalid信号は、現サイクルが有効データを含むことを示す。

0170

did[11:0]信号は、現在のデータ転送に対応するTACトランザクションを一意的に識別する。異なるデータ転送に対するデータフェーズがインターリーブされ得るが、did信号はデータ転送における全てのデータフェーズに対して同じでなければならない。

0171

dtype信号は、データ転送が、コマンドに対応するか又は応答トランザクションに対応するかを識別する。この情報は、同じマスターがdmstid[11:0]及びdid[11:0]の両方を共有する、コマンド及び応答データ転送を一意的に区別するために必要である。0のdtype信号は、現トランザクションがコマンドトランザクションであることを示す。1のdtype信号は、現トランザクションが応答トランザクションであることを示す。

0172

dlast信号は、現在のデータ転送が、現在のバストランザクションの最後のデータであるか否かを識別する。現在のバストランザクションのデータは、データバスの利用可能なライン上で送信するには大き過ぎる可能性がある。この場合、データは、複数のサイクルにおいて転送される。0のdlast信号は、現トランザクションが最後のデータ転送ではないことを示す。1のdlast信号は、現トランザクションが最後のデータ転送であることを示す。

0173

dstatus[1:0]は、現在のデータ転送に対するデータ状態を識別する。この信号は、応答トランザクションに対してのみ適用可能であり、書き込みコマンドトランザクションに対して無視される。この信号は、データ転送における各データフェーズに対して別個にアサートされる。この信号は、データ転送における各データフェーズに対して同じである必要はない。これにより、各データフェーズに対して別個の状態をリターンするために、細分化された読み出しリターンが可能となる。dstatus信号は、表9に列挙されたcstatus信号と同じコーディングを有する。

0174

dbyten[CFG:0]信号は、現在のデータフェーズに対するddata[CFG:0]ウィンドウにおける有効バイトレーンを識別する。ddata[CFG:0]バス上の全ての有効バイトは、dbytenビットベクトルの対応するビットにおいて1によって識別される。全てゼロのdbytenは、現在のデータフェーズにおいて有効データが転送されていないことを示す。dbyten信号は、書き込みコマンドトランザクションに対する書き込みbytenか、又は読み出しリターン/スヌープリターントランザクションに対する読み出しbytenのいずれかとして働き得、dvalidがアサートされた全てのサイクルに対して有効である必要がある。dbyten信号が、連続する1の間にゼロを有する、ギャッピー(gappy)データフェーズが、書き込みコマンドトランザクションに対してサポートされる。これは、キャッシュトランザクションに対する、書き込みバッファフラッシュ及び部分的ライン書き込みを意図している。dbyten信号はオプションである。dbyten信号が存在しない場合、全てのバイトレーンは、データ転送における各データフェーズに対して有効であると仮定される。

0175

ddata[CFG:0]信号は、現在のデータフェーズに対するデータを識別する。データバイトは、アドレスによって固定バイトレーンに整合させられ、全てのデータが、dbyten[CFG:0]ビットベクトルによってクオリファイされる。非整合データ又はギャッピーデータ(例えば、書き込みマージデータ)は、dbyten[CFG:0]ビットベクトルにおける必要なビットを設定することによって示される。

0176

dword[CFG:0]信号は、現在のデータフェーズが適用するデータ転送全体におけるデータウィンドウを識別する。データウィンドウのサイズより大きいデータ転送は、複数のデータフェーズを必要とし得る。dword信号は、現在のddata[CFG:0]及びdbyten[CFG:0]信号が適用するデータウィンドウを識別するために用いられる。データ転送は線形順に成される必要がある。従って、dword信号は、データ転送を通して単調増加される必要がある。dword信号は、データ転送における継続的なデータフェーズにおいて値を減少させることができない。マスターからの細分化された読み出しリターンが、より幅の狭いダウンストリームデータバスに遭遇すると、その結果、dwordは、データウィンドウの境界に達するまで、複数のデータフェーズに対して一貫した値を持つ。dword信号は、現在のデータフェーズにおけるどのデータバイトがデータ転送全体におけるどのデータウィンドウに対応するのかを一意的に区別することができないので、データウィンドウにわたるデータフェーズは許可されない。

0177

dmstid[11:0]信号は、このデータ転送が所属するトランザクションを開始したマスターを一意的に識別する。dmstidは、トランザクション属性チャネル(TAC)上の元のトランザクションのcmstidにマッチングしなければならない。

0178

dlast信号は、所与のdid[11:0]に対するデータ転送の最終データフェーズを識別する。

0179

dparity[CFG:0]信号は、現在のddata[CFG:0]ウィンドウに対するパリティを識別する。パリティは、32ビットサブライン毎に、ddataのXORリダクションとしてコンピュートされる。表13は、最大512ビットのデータウィンドウに対するdparity信号のエンコーディングを列挙する。

0180

細分化されたデータ転送は、複数のデータフェーズを介して、全データウィンドウを転送し得る。細分化されたデータ転送における各データフェーズについて、dbyten[CFG:0]は、転送されている総データウィンドウのサブセットを特定し得る。各データフェーズは、全データウィンドウ上でdparityを計算しなければならず、ゼロにされたdbytenビットに対応するデータバイトをゼロ設定する。これにより、スレーブが、各データフェーズからの中間dparity値の継続的なXORを実施することによって、全データウィンドウに対する正しいdparity値を再構成することが可能になる。

0181

dedc[CFG:0]信号は、現在のデータフェーズに対するエラー検出/訂正ハミング及びパリティ情報を識別する。dedc信号は、それぞれ256ビットデータ精度で計算された、2つの10ビットフィールドで構成される。各10ビットフィールドは、9ビットハミングシンドローム及び単一の全パリティビットで構成される。表14は、dedc信号のエンコーディングを列挙する。



dedc信号は、データウィンドウが256ビットより小さく構成されるインタフェース上では用いることができない。

0182

図19は、dedc信号のエンコーディングのためのロジックを図示する。データ1910は、データ[511:256]及びデータ[255:0]の2つの部分に分けられる。ハミング生成器1931は、既知の技術に従って、データ1910のデータ[511:256]を受け取り、ハミングデータの9ビットを形成する。この9ビットは、データ1920のdedc[18:10]となる。パリティXORリダクション1932は、データビットデータ[511:256]、及びハミング生成器1931からのハミングデータの9ビットの組み合わせ排他的ORを形成する。この単一のXORビットは、データ1920のdedc[19]になる。ハミング生成器1933は、既知の技術に従って、データ1910のデータ[255:0]を受け取り、ハミングデータの9ビットを形成する。この9ビットは、データ1920のdedc[8:0]となる。パリティXORリダクション1934は、データビットデータ[255:0]、及びハミング生成器1933からのハミングデータの9ビットの組み合わせ排他的ORを形成する。この単一のXORビットは、データ1920のdedc[9]となる。

0183

細分化されたデータ転送は、複数のデータフェーズを介して、全データウィンドウを転送し得る。細分化されたデータ転送における各データフェーズに対して、dbyten[CFG:0]は、転送されている総データウィンドウのサブセットを特定し得る。各データフェーズは、全データウィンドウ上でdedcを計算しなければならず、ゼロにされたdbytenビットに対応するデータバイトをゼロ設定する。これによって、スレーブが、各データフェーズから中間のdedc値の継続的なXORを実施することによって、全データウィンドウに対する正しいdedc値を再構成することが可能になる。

0184

dsband[CFG:0]信号は、ユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。dsband信号は、トランザクションデータチャネル(TDC)によってのみ用いられる。

0185

書き込み応答チャネル(WRC)は、ペアにされたインタフェーストポロジーに対する反対側MBAインタフェース上の、前に開始された書き込みコマンドトランザクションに対して、スレーブに書き込み状態をリターンするためにマスターによって用いられるクレジットされたチャネルである。WRC上の書き込み応答の開始は、クレジットの使用を必要とする。WRC信号は、正確に1サイクルの間マスターによってアサートされ、それらがアサートされたサイクルにおいて、スレーブによってアクセプトされなければならない。各書き込み状態は、元の書き込みコマンドトランザクションのcid[11:0]にマッチングするwid[11:0]信号によって一意的に識別される。書き込み応答が成功裏に処理されると、wreturn信号を用いて、スレーブによって書き込み応答クレジットがマスターにリターンされなければならない。書き込み応答に対する必要がない場合、チャネル全体が除外され得るが、チャネルが存在する場合、WRC上の全ての信号が必要とされる。

0186

表15は、書き込み応答チャネル信号を列挙する。

0187

wmstid[11:0]信号は、WRC上の唯一のオプションの信号である。インタフェースが書き込みコマンドトランザクションをサポートするか否かに応じて、書き込み応答チャネル全体が存在するように又は存在しないように構成され得る。

0188

wvalid信号は、有効な書き込み応答の存在を示す。0は書き込み応答が存在しないことを示す。1は現在のサイクルに対する有効な書き込み応答を示す。

0189

wid[11:0]信号は、これがそれに対する書き込み応答である、元のTACトランザクションを一意的に識別する。widは、元の書き込みコマンドトランザクションのcidにマッチングしなければならない。

0190

wstatus[1:0]信号は、書き込みトランザクションの状態を識別する。wstatus信号は、表9に列挙されたcstatusと同じコーディングを有する。

0191

wmstid[11:0]信号は、これがそれに対する応答である、書き込みコマンドトランザクションを発したシステムマスターを識別する。wmstidは、書き込みコマンドトランザクションの元のcmstidにマッチングしなければならない。

0192

wreturn信号は、書き込み応答クレジットのリターンを示す。0は書き込み応答クレジットリターンが存在しないことを示す。1は現在のサイクルに対する有効な書き込み応答クレジットリターンを示す。

0193

MBAプロトコルは、複数のトランザクションタイプを定義する。トランザクションは、コマンドと応答の2つの基本的なカテゴリにグループ分けされる。両方のトランザクションカテゴリが、プロトコルによってサポートされる全てのトランザクションの説明と共に以下に記載される。

0194

コマンドトランザクションが、データの転送を伴う可能性もあり、伴わない可能性もある、2つのエージェント間のトランザクションシーケンスを開始する。シーケンスは、次の2つの方式の1つにおいて完了する。1つは、反対側MBAインタフェースの書き込み応答チャネル(WRC)上で他方のエージェントによって開始される書き込み応答であり、もう1つは、反対側MBAインタフェースのトランザクション属性チャネル(TAC)上で他方のエージェントによって開始される応答トランザクション、及びそのトランザクションデータチャネル(TDC)上での関連するデータ転送である。全てのコマンドトランザクションは、一意のcid[11:0]を特定しなければならない。cidは、同じインタフェース上の同じマスターによって開始される如何なるアクティブシーケンスにおいても使用されない可能性がある。書き込みコマンドトランザクションは、マスターからスレーブへのデータの転送を必要とする。書き込みコマンドシーケンス以外の全てのシーケンスは、反対側MBAインタフェース上で他方のエージェントによって開始される応答トランザクションによって完了する。

0195

コマンドトランザクションは、デマンド、スヌープ、メッセージ、及びメンテナンスの4個のカテゴリに分類される。表16は、デマンドカテゴリにおけるコマンドトランザクションタイプを列挙する。表16における全てのコマンドは、ACE等価トランザクションに対応する。マスターの列は、各トランザクションタイプに対して予期される開始側を示す。シーケンス完了の列は、コマンドトランザクションによって開始されたシーケンスを完了させるための必要とされる応答を示す。

0196

ReadNoSnoopコマンドは、非コヒーレント読み出し演算である。この読み出し演算は、コヒーレンスプロトコルに参加せず、スヌープトランザクションを生成しない。ReadNoSnoopトランザクションは、cmemtype[1:0]、ccinner[1:0]、及びccouter[1:0]信号の値に応じて、キャッシュ割り当てとなる可能性とならない可能性がある。

0197

ReadOnceコマンドは、開始側マスターにおけるキャッシュ内に割り当てないコヒーレント読み出し演算である。

0198

ReadCleanコマンドは、開始側マスターにおけるキャッシュ内に割り当てるコヒーレント読み出し演算である。開始側マスターは、共有状態においてラインを要求するが、ファーサイド構成要素は排他的状態においてアクセスをグラントし得る。

0199

ReadUniqueコマンドは、開始側マスターにおけるキャッシュ内に割り当てるコヒーレント読み出し演算である。開始側マスターは、排他的状態においてラインを要求し、ラインは排他的状態においてグラントされなければならない。

0200

WriteNoSnoopコマンドは、非コヒーレント書き込み演算である。この書き込み演算は、コヒーレンスプロトコルに参加せず、スヌープトランザクションを生成しない。

0201

WriteUniqueコマンドは、全キャッシュラインより小さい可能性のあるサイズを有するコヒーレント書き込み演算である。トランザクションアドレスに対するキャッシュラインは、開始側マスターにおけるキャッシュに存在してはならない。

0202

WriteLineUniqueコマンドは、全キャッシュラインに等しくなければならないサイズを有するコヒーレント書き込み演算である。このトランザクションアドレスに対するキャッシュラインは、開始側マスターのキャッシュに存在してはならない。

0203

WriteCleanコマンドは、開始側マスターのキャッシュにおいてラインがクリーン状態で保持される、場合によってはコヒーレントなビクティム書き込みトランザクションである。

0204

ライトバックコマンドは、開始側マスターにおけるキャッシュにおいてラインが保持されない、場合によってはコヒーレントなビクティム書き込みトランザクションである。

0205

表17は、スヌープカテゴリにおけるコマンドトランザクションタイプを列挙する。ACE等価トランザクションは、SnoopReadOnce、ReadOnce、SnoopReadShared、ReadShared、SnoopCleanShared、CleanShared、SnoopCleanInvalid、CleanInvalid、及びSnoopMakeInvalid、MakeInvalidである。

0206

SnoopReadOnceコマンドは、スヌープされたキャッシュの状態を変更しない、非キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データはリターンされなければならない。

0207

SnoopReadSharedコマンドは、完了の際、スヌープされたキャッシュラインを共有状態に移動させることを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。

0208

SnoopCleanSharedコマンドは、完了の際、スヌープされたキャッシュラインをクリーン状態に移動させることを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。

0209

SnoopCleanInvalidコマンドは、完了の際、スヌープされたキャッシュラインを無効な状態に移動することを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。

0210

SnoopMakeInvalidコマンドは、完了の際、スヌープされたキャッシュラインを無効な状態に移動することを必要とする、キャッシングスヌープコマンドである。データは、スヌープ応答トランザクションと共にリターンされることはない。

0211

表18は、メッセージカテゴリにおけるコマンドトランザクションタイプを列挙する。DVMOperatationコマンド、DVM Syncコマンド、及びDVM Completerコマンドは、ACE等価トランザクションを有する。CacheWarmコマンド、CacheWarmNotifyコマンド、及びEvictコマンドは、ACE等価を有さない。メッセージコマンドトランザクションは、データの転送を含むことはなく、従って、トランザクションデータチャネル(TDC)の使用を必要としない。

0212

CacheWarmコマンドは、そのキャッシュ内に所与のアドレスを割り当てるようにReadClean演算の割り当てを開始することをスレーブエージェントに要求するメッセージである。MMUからのみ決定され得るメモリタイプ及びメモリ属性に対応するトランザクション属性チャネル(TAC)属性は、CacheWarmトランザクションから後続のReadClean演算にミラーリングされなければならない。CacheWarmトランザクションは、キャッシュラインをプリフェッチするために、システムによって用いられる。メッセージ応答トランザクションは、ReadClean演算が開始された後、開始され得る。

0213

CacheWarmNotifyコマンドは、そのキャッシュ内に所与のアドレスを割り当てるようにReadClean演算の割り当てを開始することをスレーブエージェントに要求するメッセージである。MMUからのみ決定され得るメモリタイプ及びメモリ属性に対応するトランザクション属性チャネル(TAC)属性は、CacheWarmトランザクションから後続のReadClean演算にミラーリングされなければならない。ReadClean演算に対して、読み出し応答トランザクションが受け取られると、スレーブエージェントは、CacheWarm演算の完了を示すために、WriteNoSnoopメッセージコマンドトランザクションを開始しなければならない。

0214

Evictコマンドは、所与のアドレスが開始側マスターにおけるキャッシュから除去された(無効化された)ことの、場合によってはコヒーレントなキャッシュ状態通知である。

0215

メンテナンスコマンドトランザクションは、メンテナンスドメインによって区別される2つの特徴がある。2つのメンテナンスドメインは、ポイントオブユニフィケーション(POU)とポイントオブコヒーレンス(POC)である。ポイントオブユニフィケーションは、命令とデータキャッシュとが一体化されるポイントである。これは、典型的に第2レベルキャッシュである。ポイントオブコヒーレンスは、所与のコヒーレンスドメインにおける全てのコヒーレントマスターが、変更されたデータをライトバックしなければならないポイントであり、それによって、同じコヒーレンスドメインにおける他のコヒーレントマスターが変更されたデータを見ることができるようにするためのポイントである。これは典型的に最終レベルキャッシュである。

0216

CleanSharedPOUコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。CleanSharedPOUトランザクションは、スレーブエージェントとコアとの間の全てのキャッシュに伝播されなければならないが、この伝搬は、SnoopCleanSharedコマンドトランザクションを介して成され得る。

0217

CleanInvalidPOUコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。また、全てのキャッシュは、キャッシュラインを無効化しなければならない。CleanInvalidPOUトランザクションは、コアに近い方のキャッシュに伝播されなければならないが、この伝搬は、SnoopCleanInvalidコマンドトランザクションを介して成され得る。

0218

MakeInvalidPOUコマンドは、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインを無効化することを要求する、キャッシュメンテナンス演算である。MakeInvalidPOUトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、SnoopMakeInvalidコマンドトランザクションを介して成され得る。

0219

CleanSharedPOCコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。CleanSharedPOCトランザクションは、スレーブエージェントとコアとの間の全てのキャッシュに伝播されなければならないが、この伝搬は、SnoopCleanSharedコマンドトランザクションを介して成され得る。

0220

CleanInvalidPOCコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。また、全てのキャッシュは、キャッシュラインを無効化しなければならない。CleanInvalidPOCトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、SnoopCleanInvalidコマンドトランザクションを介して成され得る。

0221

MakeInvalidPOCコマンドは、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインを無効化することを要求する、キャッシュメンテナンス演算である。MakeInvalidPOCトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、SnoopMakeInvalidコマンドトランザクションを介して成され得る。

0222

応答トランザクションは、2つのエージェント間のトランザクションシーケンスを完了するために用いられる。応答トランザクションは、元のコマンドトランザクションのcid[11:0]にマッチングする必要がある。応答トランザクションは、データの転送に関連する可能性も、しない可能性もある。表20は、応答トランザクションタイプを列挙する。ACE等価トランザクションは、読み出し応答がRRESPであり、スヌープ応答がCR、CUであり、メッセージ応答及びメンテナンス応答コマンドに対してACE等価がない。マスターの列は、各トランザクションタイプに対する予期される開始側を示す。

0223

読み出しシーケンスを完了するために、読み出し応答トランザクションが必要とされる。読み出し応答トランザクションは、常にデータ転送を含む。失敗状態を示すcstatus[1:0]値を有する読み出し応答トランザクションは、それでもなお、cdata信号をアサートし、ゼロにされたデータをリターンしなければならない。成功を示すcstatus[1:0]値を有する読み出し応答トランザクションは、トランザクションデータチャネル(TDC)上にデータ転送を含まなければならない。

0224

スヌープシーケンスを完了するために、スヌープ応答トランザクションが必要とされる。スヌープ応答トランザクションは、データ転送を含む可能性も、含まない可能性もある。失敗状態を示すcstatus[1:0]値を有するスヌープ応答トランザクションは、cdata信号をディアサートし得、トランザクションデータチャネル(TDC)の使用を防止し得る。成功を示すcstatus[1:0]値を有するスヌープ応答トランザクションは、トランザクションデータチャネル(TDC)上にデータ転送を含まなければならない。

0225

メッセージシーケンスを完了するために、メッセージ応答トランザクションが必要とされる。メッセージ応答トランザクションは、データ転送を含むことはない。

0226

メンテナンスシーケンスを完了するために、メンテナンス応答トランザクションが必要とされる。メンテナンス応答トランザクションは、データ転送を含むことはない。

0227

応答トランザクションは、トランザクション属性チャネル(TAC)上の対応するcstatus[1:0]信号をアサートすることによってエラー状態を示す。読み出し応答トランザクションは、読み出し演算を処理するように試みている間、エラーの発生に関係なく、1のcdata信号をアサートする必要がある。

0228

アドレス及び保護エラーは、典型的に、スレーブがエンドポイント読み出しアクセスを実施する前に検出される。この場合、それでもなお、データ転送が読み出し応答トランザクションと共に成されなければならない。データ転送を伴う全読み出し応答トランザクションは、次のように起こり得る。1のcdata信号が、トランザクション属性チャネル(TAC)上でトランザクションを用いてアサートされなければならない。cstatus[1:0]信号は、発生したエラーがある場合はその種類を示す。これは、アドレスエラー及び保護エラーであり得る。データ転送がトランザクションデータチャネル(TDC)上で成されなければならない。データ転送のサイズは、元の読み出し演算のcbytecnt[6:0]に等しくなければならない。ddata[CFG:0]信号は、セキュリティホールを回避するために、全てゼロに設定されなければならない。このセキュリティホールは、読み出しアクセスの間に、場合によっては読み出し応答トランザクションが開始された後に起こり得る、非コレクタルビットエラー等のこの信号エラー上で前にレジスタされたデータのサンプリングを可能にし得る。1つ又は複数のデータフェーズが転送された後にエラーが発生する場合、データ転送は完了しなければならず、エラーのあるデータフェーズに対してddata[CFG:0]を全てゼロに設定することに加え、dstatus[1:0]信号上の対応するエラー種類をアサートすることによって、エラーのあるデータフェーズが示されなければならない。

0229

全てのMBAトランザクションは、クレジットの使用を介して動作する。トランザクション属性チャネル(TAC)上で開始されるトランザクション、及び書き込み応答チャネル(WRC)上で開始される書き込み応答は、少なくとも1つのクレジットの使用を必要とする。クレジットは、マスターによって所有及び使われ、その後、スレーブによってリターンされる。書き込み応答クレジットは、1種類のみを有し、より詳細な分類は必要ない。トランザクションクレジットは、複数のクレジットタイプに組織化される。例示の実施形態の多くの実装は、クレジットタイプをスレーブ上の物理リソースによって分類する。

0230

全てのトランザクションでは、ccredit[CFG:0]信号は、使われているクレジットのタイプを示す。例示の実施形態は、クレジットタイプの固定数を定義する必要がなく、クレジットタイプの固定された意味も定義する必要がない。特定の実装によって、MBAインタフェース上の利用可能なクレジットタイプの数、並びに各クレジットタイプに関連する意味が構成される。

0231

クレジットされたチャネルに対するクレジットハンドシェイクは、非常にシンプルであり、クレジットスぺンドの後、クレジットリターン、という時間的形式に従う。マスターは、cvalidをアサートすること、及び、ccredit[CFG:0]ビットベクトルにおいて1つ又は複数のビットをアサートすることによって、1つ又は複数のクレジットを使う。対応するスレーブは、同じサイクル上でトランザクションをアクセプトする。これは強制的である。マスターが使うためのクレジットを有する場合、これは、スレーブがトランザクションをアクセプトしなければならないことを示す。スレーブは、トランザクションを完了し、その後、トランザクションによって用いられた1つ又は複数のリソースをフリーにする。リソースをフリーにすると、スレーブは、creturn[CFG:0]ビットベクトルにおける対応するビットをアサートすることによって、クレジットをマスターにリターンする。その後、マスターは後の使用のためにクレジットを有する。

0232

図20は、トランザクション属性チャネル(TAC)に対するシンプルなクレジットハンドシェイクを図示する。図20において、2001は、マスター及びスレーブを両方制御するクロック信号である。マスターは、トランザクションを開始させるために、1クロックサイクルの間アクティブなcvalid信号2002を生成する。また、マスターは、同じ1つのクロックサイクルの間に、ccredit信号A2003を生成する。このccredit信号A2003は、現在のトランザクション上で使われているタイプクレジットを示す。例示の実施形態に従い、マスターが使うためのクレジットを有する場合、スレーブは、トランザクションをアクセプトしなければならない。このように、スレーブは、トランザクションをアクセプトし、不確定時間2010を演算する。アクセプトされたトランザクションによって必要とされる処理が完了すると、スレーブは、creturn信号A2004を介してクレジットをリターンする。このcreturn信号A2004は、好ましくは、1クロックサイクルの長さを有する。

0233

例示の実施形態において、クレジットされたチャネル上でのクレジットリターンアクションに対して、クレジットスぺンドの1対1のマッピングがある。同時期に同じチャネル上で進行中の複数のクレジットハンドシェイクがあり得る。マスターは、所有するクレジットの数を常に把握する責任を持つ。各クレジットスぺンドアクションが、マスターにおけるクレジットカウントを1だけ減少させる。各クレジットリターンアクションが、マスターにおけるクレジットカウントを1だけ増加させる。

0234

クレジットスぺンド及びクレジットリターンアクションは、同じ又は異なるクレジットタイプに対する異なるハンドシェイクに対して、クレジットされた同じチャネル上でインターリーブされ得る。

0235

図21は、同じチャネル上のインターリーブされるクレジットハンドシェイクを図示する。図21において、2101は、マスター及びスレーブの両方を制御するクロック信号である。マスターは、第1のトランザクションを開始するために、1クロックサイクル2111の間、アクティブのcvalid信号2102を生成する。また、マスターは、同じクロックサイクル2111の間、ccredit信号A2103を生成する。このccredit信号A2003は、現在のトランザクション上で使われているクレジットのタイプを示す。2クロックサイクル2112の間、マスターは、ccredit信号B2103を送信し、その後ccredit信号A2103が続く。これらのccredit信号は、2クロックサイクルのcvalid信号2102の期間内にある。マスターが、スレーブからのクレジットリターンの前に、第2のccredit信号A2103を送信したことに留意されたい。これは、マスターが元々、タイプAクレジットを少なくとも2つ有していた場合にのみ起こる。これは、スレーブが、第1のそのようなトランザクションを完了する前に、タイプAの第2の要求をアクセプトするための容量を有していることを必要とする。スレーブは、このようにして、第1のトランザクションタイプAをアクセプトする。第1のアクセプトされたトランザクションによって要求される処理が完了すると、スレーブは、時間2113の間に、creturn信号A2104を介してクレジットをリターンする。このcreturn信号A2104は、好ましくは1クロックサイクルの長さを有する。第2のアクセプトされたトランザクション(タイプB)及び第3のアクセプトされたトランザクション(タイプA)によって要求される処理が完了すると、スレーブは、時間2114の間に、creturn信号A+B2104を介して、2つのクレジットをリターンする。好ましい実施形態において、クレジットリターンは、チャネル上で用いられる各クレジットタイプに対して1ビットを備えるビットベクトルとしてエンコードされ得る。タイプA及びタイプBの両方に対してビットを設定することで、単一のクレジットリターン信号が両方のクレジットタイプをリターンすることが可能となる。

0236

図17は、ペアにされたインタフェーストポロジー(PIT)における各チャネルを図示する。完全なトランザクションシーケンスを実施するために、エージェントペアが、ミラーリングされたペア構成の2つの別個のMBAインタフェースを用いて通信しなければならない。これは、ペアにされたインタフェースと称される。ペアにされたインタフェースは2つのエージェント間の双方向のデータ転送をサポートする。エージェントAとBの間の全てのクレジットされたシーケンスは、クレジットされた非書き込みシーケンス、クレジットされた書き込みシーケンス、及びクレジットされたDVMシーケンス、の3つの形式の1つに従う。

0237

図22は、クレジット非書き込みシーケンスにおけるステップを図示する。そのようなクレジット非書き込みシーケンスは、コアサイドエージェント1710がTAC 1712上でタイプA0のクレジットスぺンドを始めること(ステップ2201)で開始する。ステップ2202で、ファーサイドエージェント1720が、タイプA0のクレジットリターンをTAC 1722上でコアサイドエージェント1710に送信する。これは、ファーサイドエージェント1720が初期コマンドトランザクション(ステップ2201)によって占有された物理リソースをクリアにすると成される。クレジットリターンに関連するトランザクションIDはない。ステップ2203で、ファーサイドエージェント1720は、新しい応答トランザクションを開始し、TAC 1722上でクレジットタイプB1の単一のクレジットを使う。この応答トランザクションのIDは、元のID(ステップ2201)にマッチングしなければならない。ステップ2204で、ファーサイドエージェント1720は、TDC 1723上で、1つ又は複数のデータフェーズのオプションのデータ転送を実施する。データ転送がステップ2203におけるクレジットスぺンドに該当するので、このアクションに対してクレジットは必要とされない。TAC 1722とTDC 1723が異なるチャネルなので、TDC 1723上でのデータ転送の初期フェーズが、ステップ2203におけるクレジットスぺンドと同時に起こり得る。図22は、複数のデータ転送を有する例を図示する。ステップ2205において、コアサイドエージェント1710は、リターンクレジットタイプBの単一のクレジットを、TAC 1712上でファーサイドエージェント1720にリターンする。これは、コアサイド1710が、リターントランザクションによって占有された物理リソースをクリアする(ステップ2203)と起こる。クレジットリターンに関連するトランザクションIDはない。

0238

読み出し演算、スヌープ演算、メッセージシーケンス、及びメンテナンスシーケンスの5つのクレジットされた非書き込みシーケンスタイプがある。表21は、ペアにされたインタフェーストポロジーにおける、図11に図示されたステップに対する適法なトランザクションタイプ及びデータ転送を列挙する。

0239

0240

図23は、クレジットされた書き込みコマンドシーケンスの一般的な形式を図示する。クレジットされた書き込みシーケンスは、シーケンスが完了する様式によって、上述のクレジットされた非書き込みシーケンスから差別化される。クレジットされた書き込みシーケンスは、書き込み応答チャネル(WRC)上での書き込み状態で完了する。トランザクションID及びクレジットタイプは、クレジットの性質、及びシーケンスにわたるIDフローを示すために、自由裁量による象徴的な名を用いて示され、それ以外はMBAインタフェース又はプロトコル内で如何なる意味も持たない。

0241

クレジットされた書き込みシーケンスは、コアサイドエージェント1710がTAC 1711上でタイプA5の単一クレジットを使うステップ2301で開始する。これは、コアサイド1710が、ファーサイドエージェント1720が書き込みのデータを扱えることを確実にしなければならないので、図22のステップ2201のクレジットタイプA0とは異なる。従って、異なるクレジットタイプが必要とされる。ステップ2301において、コアサイドエージェント1710は、書き込みコマンドトランザクションに対して、TDC 1712上の1つ又は複数のデータフェーズのデータ転送を実施する。このアクションに対してクレジットは必要とされない。このデータ転送は、ステップ2301におけるクレジットスぺンドに該当する。TAC 1711とTDC 1712は異なるチャネルであるので、TDC 1712上のデータ転送の初期フェーズが、ステップ2201におけるクレジットスぺンドと同時に起こり得る。図22は、複数のデータ転送を有する例を図示する。ステップ2303において、ファーサイドエージェント1720は、タイプA5の単一クレジットをTAC 1722上でコアサイドエージェント1710にリターンバックする。これは、ファーサイドエージェント1720が、コマンドトランザクションによって占有された物理リソースをクリアにする(ステップ2301)と起こる。このクレジットリターンに関連するトランザクションIDはない。WRC 1724上で書き込みコマンドトランザクションの処理が完了すると、ステップ2304において、ファーサイドエージェント1720が書き込み応答を開始する。IDは、元のIDにマッチングしなければならない。書き込み応答は、専用の書き込み応答クレジットタイプの使用を必要とする。ステップ2304において、コアサイドエージェント1710は、WRC 1714を介して、単一の書き込み応答クレジットをファーサイドエージェント1720にリターンする。これは、ファーサイドエージェント1710によって送られた書き込み応答がコアサイドエージェント1710によって消費されると成される。書き込み応答クレジットリターンに関連するトランザクションID又は明示的なクレジットタイプはない。

0242

下記は、例示のクレジットされたDVMシーケンスのステップである。この例は、相互接続として機能するファーサイドエージェントと、キャッシュマスターとして機能するコアサイドエージェントとの間の挙動を説明する。この例において、コアサイドエージェント1710/キャッシュマスターは、表では説明されていない、システムにおける別のキャッシュマスターからの相互接続に対して開始されたDVM−Operationに応答している。DVMシーケンスには、DVM Operation、DVM sync、及びDVM Completeの3つの部分がある。

0243

DVMOperationは、ファーサイドエージェント1720が、新しいDVM−Operationコマンドトランザクションシーケンスを開始することで始まる。これは、適切なタイプの単一クレジットを使うことを含む。コアサイドエージェント1710は、コアサイドエージェント1710が、コマンドトランザクションによって占有された物理リソースをクリアにすると、そのタイプの単一クレジットをファーサイドエージェント1720にリターンバックすることによって応答する。このクレジットリターンに関連するトランザクションIDはない。コアサイドエージェント1710は、次に、DVM−Operationの受け取りを確認するために、ファーサイドエージェント1720に対して、クレジットされたトランザクションとしてのメッセージ応答を開始する。コアサイドエージェント1710は、元のDVM−OperationからのIDを用いる。ファーサイドエージェント1720は、メッセージ応答によって用いられるタイプにマッチングする単一クレジットをリターンする。クレジットリターンに関連するトランザクションIDはない。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • セイコーエプソン株式会社の「 回路装置、回路装置の判定方法および電子機器」が 公開されました。( 2020/10/29)

    【課題】切断の誤判定を防止しつつ、構成の複雑化を回避する。【解決手段】回路装置は、パケットの電流を増幅して、USB規格のバスに出力するパケット出力回路と、バスに送信されたパケットの振幅レベルが所定の期... 詳細

  • 日本電信電話株式会社の「 パケット処理装置およびパケット処理方法」が 公開されました。( 2020/10/29)

    【課題】データブロックを元の複数のデータに復元する処理に必要となるハードウェアの規模を小さくし、かつ高い受信性能を実現する。【解決手段】パケット処理装置は、通信回線から受信したパケットの処理を行って処... 詳細

  • キヤノン株式会社の「 情報処理装置」が 公開されました。( 2020/10/29)

    【課題】機能ブロック間でデータの受け渡しを行う構成において、タイミング設計が容易となるように、機能ブロックに対するクロック供給を行う。【解決手段】同期関係にある複数の機能ブロックと、それぞれが、カウン... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ