(57)【要約】      （修正有）【課題】バス通信の性能を向上する。【解決手段】エージェント２４００において、バス通信プロトコルでは、マスターサイドがバスクレジットをストアする。マスターサイド２４１０は、充分な数及びタイプのバスクレジットを持つ場合のみ、バストランザクションを送信し、バスクレジットの数を低減する。バスクレジットは、バストランザクションを受け取るスレーブデバイス上のリソースに対応する。スレーブサイド２４２０は、適切なクレジットを伴う場合、バストランザクションを受け取り、トランザクションをサービスし、クレジットリターンを送信する。マスターサイドは、対応する数及びタイプのクレジットを、ストアされた量に加算する。スレーブサイドは、別のバストランザクションをアクセプトする準備をする。マスターサイドは、バストランザクションを再び送信する。バスエージェントは、プロセスの状態に応じてマスターとスレーブの両方として機能する。【選択図】図２４
2020191122.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバイスと第２のデバイスとの間のバス通信の方法であって、
前記第１のデバイスにおいて複数のバスクレジットをストアすること、
前記第１のデバイスが、バストランザクションを前記第２のデバイスにバス上で送信すること、
前記第１のデバイスがバストランザクションを前記第２のデバイスに前記バス上で送信すると、前記第１のデバイスが、
前記ストアされたバスクレジットの数を、前記バストランザクションに対応する量だけ減少させること、及び
対応するバスクレジット信号を前記第２のデバイスに前記バス上で送信することであって、
前記ストアされたバスクレジットの数が前記バストランザクションに対応する前記量より少ない場合、前記第１のデバイスがバストランザクションを送信しない可能性があること、及び
前記第１のデバイスが、前記バスを介して前記第２のデバイスからクレジットリターンを受け取ると、前記ストアされたバスクレジットの数を前記クレジットリターンに対応する量だけ増加させること、
を含む、方法。
【請求項２】
請求項１に記載の方法であって、
前記バストランザクションがコマンドであり、
前記バストランザクションを前記バス上で送信することが、前記コマンドに対応する信号を前記バス上で送信することを含む、方法。
【請求項３】
請求項１に記載の方法であって、
前記バストランザクションが読み出しであり、
前記バストランザクションを前記バス上で送信することが、読み出しアドレスの範囲を示す少なくとも１つの信号を前記バス上で送信することを含む、方法。
【請求項４】
請求項３に記載の方法であって、
読み出しアドレスの範囲を示す少なくとも１つの信号を送信することが、
初期読み出しアドレスを示す第１の信号を送信すること、及び
読み出し長を示す第２の信号を送信すること、
を含む、方法。
【請求項５】
請求項１に記載の方法であって、
前記バストランザクションが書き込みであり、前記バストランザクションを前記バス上で送信することが、
書き込みアドレスの範囲を示す少なくとも１つの信号を送信すること、及び
書き込みデータに対応する信号を前記バス上で送信すること、
を含む、方法。
【請求項６】
請求項５に記載の方法であって、書き込みアドレスの範囲を示す少なくとも１つの信号を送信することが、
初期書き込みアドレスを示す第１の信号を送信すること、及び
書き込み長を示す第２の信号を送信すること、
を含む、方法。
【請求項７】
請求項１に記載の方法であって、
前記第１のデバイスが第１のトランザクション識別を前記バスを介して前記第２のデバイスに送信するステップを更に含む、方法。
【請求項８】
請求項７に記載の方法であって、
前記第２のデバイスが、トランザクション応答を前記バスを介して前記第１のデバイスに送信することを更に含み、前記トランザクション応答が、前記第１のトランザクション識別に対応する第２のトランザクション識別を含む、方法。
【請求項９】
請求項８に記載の方法であって、
前記バストランザクションが読み出しであり、
前記トランザクション応答が前記読み出しに対応するデータを含む、方法。
【請求項１０】
第１のデバイスと第２のデバイスとの間のバス通信の方法であって、
バスを介して前記第２のデバイスからバストランザクション及びバスクレジット信号を受け取ること、
前記バスクレジット信号が前記バストランザクションに対応する場合、前記第１のデバイスにおいて前記バストランザクションをアクセプトすること、
前記第１のデバイスにおいて前記バストランザクションをサービスすること、及び
前記第１のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第１のデバイスが前記バスを介して前記第２のデバイスにクレジットリターンを送信すること、
を含む、方法。
【請求項１１】
請求項１０に記載の方法であって、
前記バストランザクションがコマンドであり、
前記第１のデバイスにおいて前記バストランザクションをサービスすることが、前記コマンドを実行することを含む、方法。
【請求項１２】
請求項１０に記載の方法であって、
前記バストランザクションが読み出しであり、前記バストランザクションが読み出しアドレスの範囲を示す少なくとも１つの信号を含み、
前記第１のデバイスにおいて前記バストランザクションをサービスすることが、
読み出しアドレスの前記範囲において前記第１のデバイスからデータをリコールすることと、
前記第１のデバイスから前記リコールされたデータを、前記バスを介して前記第２のデバイスに送信することと、
を含む、方法。
【請求項１３】
請求項１２に記載の方法であって、
読み出しアドレスの範囲を示す前記少なくとも１つの信号が、初期読み出しアドレスを示す第１の信号、及び読み出し長を示す第２の信号を含む、方法。
【請求項１４】
請求項１０に記載の方法であって、
前記バストランザクションが書き込みであり、
前記バストランザクションが、書き込みアドレスの範囲を示す少なくとも１つの信号、及び書き込みデータに対応する信号を含み、
前記第１のデバイスにおいて前記バストランザクションをサービスすることが、前記書
き込みデータを書き込みアドレスの前記範囲に対応するアドレスにおいてストアすることを含む、方法。
【請求項１５】
請求項１４に記載の方法であって、
書き込みアドレスの範囲を示す前記少なくとも１つの信号が、初期書き込みアドレスを示す第１の信号、及び書き込み長を示す第２の信号を含む、方法。
【請求項１６】
請求項１０に記載の方法であって、
前記バストランザクションが第１のトランザクション識別を含む、方法。
【請求項１７】
請求項１６に記載の方法であって、
前記第１のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第１のデバイスが、トランザクション応答を前記バスを介して前記第２のデバイスに送信することを更に含み、
前記トランザクション応答が、前記第１のトランザクション識別に対応する第２のトランザクション識別を含む、方法。
【請求項１８】
第１のデバイスと第２のデバイスとの間のバス通信の方法であって、
前記第１のデバイスにおいて複数のバスクレジットをストアすること、
前記第１のデバイスが、バストランザクションを前記第２のデバイスにバス上で送信すること、
前記第１のデバイスがバストランザクションを前記第２のデバイスに前記バス上で送信すると、前記第１のデバイスが、
バスクレジットの前記ストアされた数を、前記バストランザクションに対応する量だけ減少させること、及び
対応するバスクレジット信号を、前記第２のデバイスに前記バスで送信することであって、
ストアされたバスクレジットの前記数が前記バストランザクションに対応する前記量より少ない場合、前記第１のデバイスがバストランザクションを送信しない可能性があること、
前記第２のデバイスにおいて、前記バストランザクション及び前記バスクレジット信号を、前記バスを介して前記第１のデバイスから受け取ること、
前記バスクレジット信号が前記バストランザクションに対応する場合、前記第２のデバイスにおいて前記バストランザクションをアクセプトすること、
前記第２のデバイスにおいて前記バストランザクションをサービスすること、
前記第１のデバイスにおいて前記バストランザクションをサービスすることを完了すると、前記第２のデバイスが、前記バスを介して前記第１のデバイスにクレジットリターンを送信すること、及び
前記第１のデバイスが前記バスを介して前記第２のデバイスからクレジットリターンを受け取ると、バスクレジットの前記ストアされた数を前記クレジットリターンに対応する量だけ増加させること、
を含む、方法。
【請求項１９】
請求項１８に記載の方法であって、
前記バストランザクションがコマンドであり、
前記バストランザクションを前記バス上で送信することが、前記コマンドに対応する信号を前記バス上で送信することを含み、
前記第２のデバイスにおいて前記バストランザクションをサービスすることが、前記コ
マンドを実行することを含む、方法。
【請求項２０】
請求項１８に記載の方法であって、
前記バストランザクションが読み出しであり、
前記バストランザクションを前記バス上で送信することが、読み出しアドレスの範囲を示す少なくとも１つの信号を前記バス上で送信することを含み、
前記第２のデバイスにおいて前記バストランザクションをサービスすることが、
前記読み出しアドレスの範囲において前記第２のデバイスからデータをリコールすることと、
前記第２のデバイスから前記リコールされたデータを、前記バスを介して前記第１のデバイスに送信することと、
を含む、方法。
【請求項２１】
請求項２０に記載の方法であって、
読み出しアドレスの範囲を示す少なくとも１つの信号を送信することが、初期読み出しアドレスを示す第１の信号を送信すること、及び読み出し長を示す第２の信号を送信することを含む、方法。
【請求項２２】
請求項１８に記載の方法であって、
前記バストランザクションが書き込みであり、
前記バストランザクションを前記バス上で送信することが、書き込みアドレスの範囲を示す少なくとも１つの信号を送信すること、及び書き込みデータに対応する信号を前記バス上で送信することを含み、
前記第２のデバイスにおいて前記バストランザクションをサービスすることが、書き込みアドレスの前記範囲に対応するアドレスにおいて前記書き込みデータをストアすることを含む、方法。
【請求項２３】
請求項２２に記載の方法であって、
書き込みアドレスの範囲を示す少なくとも１つの信号を送信することが、初期書き込みアドレスを示す第１の信号を送信すること、及び書き込み長を示す第２の信号を送信することを含む、方法。
【請求項２４】
請求項１８に記載の方法であって、
前記第１のデバイスが、記バスを介して第１のトランザクション識別を前前記第２のデバイスに送信すること、及び
前記第１のデバイスにおいて前記バストランザクションをサービスすることが完了すると、前記第２のデバイスが、前記バスを介して前記第１のデバイスにトランザクション応答を送信すること、
を更に含み、
前記トランザクション応答が、前記第１のトランザクション識別に対応する第２のトランザクション識別を含む、方法。
【請求項２５】
バス上で情報を交換するように動作可能なバスエージェントであって、
中に複数のバスクレジットをストアするクレジットカウンタ、
前記バスに及び前記クレジットカウンタに接続される属性チャネルであって、
バストランザクションを前記バス上で送信すること、
前記クレジットカウンタにストアされたバスクレジットの数を、前記バストランザクションに対応する量だけ減少させること、及び
対応するバスクレジット信号を前記バス上で送信すること、
によってバストランザクションを開始するように動作可能である、前記属性チャネル、
を含み、
ストアされたバスクレジットの前記数が、前記バストランザクションに対応する前記量より少ない場合、前記属性チャネルが前記バストランザクションを送信しない可能性があり得、
前記属性チャネルが更に、
前記バスからのクレジットリターンを受け取るように、及び
前記クレジットカウンタにストアされたバスクレジットの前記数を前記クレジットリターンに対応する量だけ増加させるように、
動作可能である、バスエージェント。
【請求項２６】
請求項２５に記載のバスエージェントであって、
前記バストランザクションが読み出しであり、前記属性チャネルが、読み出しアドレスの範囲を示す少なくとも１つの信号を送信することによって、前記読み出しを前記バス上で送信するように動作可能である、バスエージェント。
【請求項２７】
請求項２６に記載のバスエージェントであって、
前記属性チャネルが、
初期読み出しアドレスを示す第１の信号を送信すること、及び
読み出し長を示す第２の信号を送信すること、
によって読み出しアドレスの範囲を示す前記少なくとも１つの信号を送信するように動作可能である、バスエージェント。
【請求項２８】
請求項２５に記載のバスエージェントであって、
前記バストランザクションが書き込みであり、
前記属性チャネルが、書き込みアドレスの範囲を示す少なくとも１つの信号を送信することによって、前記書き込みを前記バス上で送信するように動作可能であり、
書き込みデータに対応する信号を送信するように、書き込みの際に動作可能なデータチャネルを更に含む、バスエージェント。
【請求項２９】
請求項２８に記載のバスエージェントであって、
前記属性チャネルが、
初期書き込みアドレスを示す第１の信号を送信すること、及び
書き込み長を示す第２の信号を送信すること、
によって、書き込みアドレスの範囲を示す前記少なくとも１つの信号を送信するように動作可能である、バスエージェント。
【請求項３０】
請求項２５に記載のバスエージェントであって、
前記属性チャネルが更に、トランザクション識別を送信することによって、前記バストランザクションを前記バス上で送信するように動作可能である、バスエージェント。
【請求項３１】
バス上で情報を交換するように動作可能なバスエージェントであって、
前記バスに接続される属性チャネルであって、前記属性チャネルが、
前記バスからバストランザクション及びバスクレジット信号を受け取るように、及び
前記バスクレジット信号が前記バストランザクションに対応する場合、前記バストラン
ザクションをアクセプトするように、
動作可能である、前記属性チャネル、及び
前記属性チャネルによってアクセプトされるバストランザクションをサービスするように動作可能である前記属性チャネルに接続されるバックエンドプロセス、
を含み、
前記属性チャネルが更に、前記バックエンドプロセスによって前記バストランザクションをサービスすることが完了すると、クレジットリターンを前記バス上で送信するように動作可能である、バスエージェント。
【請求項３２】
請求項３１に記載のバスエージェントであって、
前記バスプロセスに結合される読み出し／書き込みメモリを更に含み、
前記バストランザクションが読み出しであり、
前記属性チャネルが、読み出しアドレスの範囲を示す少なくとも１つの信号を受け取ることを含み、前記読み出しを前記バス上で受け取るように動作可能であり、
前記バックエンドプロセスが、前記読み出し／書き込みメモリから、前記読み出しアドレスの範囲に対応するアドレスから、データをリコールすることによって、前記読み出しをサービスするように動作可能であり、
更に、前記バス及び前記読み出し／書き込みメモリに接続されるデータチャネルを含み、前記データチャネルが、前記読み出し／書き込みメモリからリコールされたデータを前記バス上で送信するように動作可能である、バスエージェント。
【請求項３３】
請求項３２に記載のバスエージェントであって、
前記属性チャネルが、
初期読み出しアドレスを示す第１の信号を受け取ること、及び
読み出し長を示す第２の信号を受け取ること、
によって、読み出しアドレスの範囲を示す前記少なくとも１つの信号を受け取るように動作可能である、バスエージェント。
【請求項３４】
請求項３１に記載のバスエージェントであって、
前記バスプロセスに接続される読み出し／書き込みメモリを更に含み、
前記バストランザクションが書き込みであり、
前記属性チャネルが、書き込みアドレスの範囲を示す少なくとも１つの信号を受け取ることを含み、前記書き込みを前記バス上で受け取るように動作可能であり、
更に、前記バスに接続されるデータチャネルを含み、前記データチャネルが、前記バスから書き込みデータを受け取るように動作可能であり、
前記バックエンドプロセスが更に、前記読み出し／書き込みメモリに結合され、更に、書き込みアドレスの前記範囲に対応するアドレスにおいて前記バスから前記読み出し／書き込みメモリに書き込みデータストアすることによって、前記書き込みをサービスするように動作可能である、バスエージェント。
【請求項３５】
請求項３４に記載のバスエージェントであって、
前記属性チャネルが、
初期書き込みアドレスを示す第１の信号を受け取ること、及び
書き込み長を示す第２の信号を受け取ること、
によって、書き込みアドレスの前記範囲を示す前記少なくとも１つの信号を受け取るように動作可能である、バスエージェント。
【請求項３６】
請求項３１に記載のバスエージェントであって、
前記バストランザクションが第１のトランザクション識別を含む、バスエージェント。
【請求項３７】
請求項３６に記載のバスエージェントであって、
前記バス及び前記読み出し／書き込みメモリに接続されるデータチャネルを更に含み、
前記データチャネルが、前記第１のデバイスにおける前記バストランザクションのサービスが完了すると、トランザクション応答を前記バス上で送信するように動作可能であり、
前記トランザクション応答が、前記第１のトランザクション識別に対応する第２のトランザクション識別を含む、バスエージェント。
【請求項３８】
バス上で情報を交換するように動作可能なバスシステムであって、
第１のバスエージェント、及び
第２のバスエージェント、
を含み、
前記第１のバスエージェントが、中に複数のバスクレジットをストアするクレジットカウンタと、前記バスに及び前記クレジットカウンタに接続される第１の属性チャネルとを含み、
前記第１の属性チャネルが、
前記バス上でバストランザクションを送信すること、
前記クレジットカウンタにストアされたバスクレジットの前記数を前記バストランザクションに対応する量だけ減少させること、及び
対応するバスクレジット信号を前記バス上で送信すること、
によってバストランザクションを開始するように動作可能であり、
ストアされたバスクレジットの前記数が前記バストランザクションに対応する前記量より少ない場合、前記第１の属性チャネルが前記バストランザクションを送信しない可能性があり得、
前記第１の属性チャネルが、更に、
前記バスからクレジットリターンを受け取るように、及び前記クレジットカウンタにストアされたバスクレジットの前記数を前記クレジットリターンに対応する量だけ増加させるように動作可能であり、
前記第２のバスエージェントが、
前記バスに接続される第２の属性チャネルであって、前記バスからバストランザクション及びバスクレジット信号を受け取るように、及び前記バスクレジット信号が前記バストランザクションに対応する場合、前記バストランザクションをアクセプトするように動作可能である、前記第２の属性チャネルと、
前記第２の属性チャネルに接続され、前記第２の属性チャネルによってアクセプトされたバストランザクションをサービスするように動作可能であるバックエンドプロセスと、
を含み、
前記第２の属性チャネルが、更に、前記バックエンドプロセスによる前記バストランザクションのサービスが完了すると、前記バス上でクレジットリターンを送信するように動作可能である、バスシステム。
【請求項３９】
請求項３８に記載のバスシステムであって、
前記バストランザクションが読み出しであり、前記第１の属性チャネルが、読み出しア
ドレスの範囲を示す少なくとも１つの信号を送信することによって、前記読み出しを前記バス上で送信するように動作可能であり、前記第２のエージェントが、更に、前記バスプロセスに結合される読み出し／書き込みメモリを含み、
前記第２の属性チャネルが、読み出しアドレスの範囲を示す少なくとも１つの信号を含み、前記読み出しを前記バス上で受け取るように動作可能であり、前記バックエンドプロセスが、前記読み出し／書き込みメモリから、読み出しアドレスの前記範囲に対応するアドレスから、データをリコールすることによって、前記読み出しをサービスするように動作可能であり、
更に、前記バス及び前記読み出し／書き込みメモリに接続されるデータチャネルを含み、前記データチャネルが、前記読み出し／書き込みメモリからリコールされたデータを前記バス上で送信するように動作可能である、バスシステム。
【請求項４０】
請求項３８に記載のバスシステムであって、
前記第１の属性チャネルが、
初期読み出しアドレスを示す第１の信号を送信すること、及び
読み出し長を示す第２の信号を送信すること、
によって、読み出しアドレスの範囲を示す前記少なくとも１つの信号を送信するように動作可能であり、
前記第２の属性チャネルが、
前記初期読み出しアドレスを示す前記第１の信号を受け取ること、及び
前記読み出し長を示す前記第２の信号を受け取ること、
によって、読み出しアドレスの範囲を示す前記少なくとも１つの信号を受け取るように動作可能である、バスシステム。
【請求項４１】
請求項３８に記載のバスエージェントであって、
前記バストランザクションが書き込みであり、前記第１の属性チャネルが、書き込みアドレスの範囲を示す少なくとも１つの信号を送信することによって、前記書き込みを前記バス上で送信するように動作可能であり、前記第１のバスエージェントが更に、書き込みの際、書き込みデータに対応する信号を送信するように動作可能である第１のデータチャネルを含み、
前記第２のエージェントが更に、
前記バスプロセスに結合される読み出し／書き込みメモリと、
前記バスに接続されるデータチャネルと、
を含み、前記データチャネルが前記バスから書き込みデータを受け取るように動作可能であり、
前記第２の属性チャネルが、書き込みアドレスの範囲を示す少なくとも１つの信号を受け取ることを含み、前記書き込みを前記バス上で受け取るように動作可能であり、及び
前記バックエンドプロセスが更に、前記読み出し／書き込みメモリに結合され、更に、前記バスからの書き込みデータを、書き込みアドレスの前記範囲に対応するアドレスにおいて、前記読み出し／書き込みメモリにストアすることによって、前記書き込みをサービスするように動作可能である、バスエージェント。
【請求項４２】
請求項４１に記載のバスエージェントであって、
前記第１の属性チャネルが、
初期書き込みアドレスを示す第１の信号を送信すること、及び
書き込み長を示す第２の信号を送信すること、
によって、書き込みアドレスの範囲を示す前記少なくとも１つの信号を送信するように動作可能であり、
前記第２の属性チャネルが更に、
前記初期書き込みアドレスを示す前記第１の信号を受け取ること、及び
前記書き込み長を示す前記第２の信号を受け取ること、
によって、書き込みアドレスの前記範囲を示す前記少なくとも１つの信号を受け取るように動作可能である、バスエージェント。
【請求項４３】
請求項３８に記載のバスシステムであって、
前記第１の属性チャネルが更に、第１のトランザクション識別を送信することによって、前記バス上で前記バストランザクションを送信するように動作可能であり、
前記第２のエージェントが更に、前記バス及び前記読み出し／書き込みメモリに接続されるデータチャネルを含み、
前記データチャネルが、前記バストランザクションをサービスすることが完了すると、トランザクション応答を前記バス上で送信するように動作可能であり、
前記トランザクション応答が、前記第１のトランザクション識別に対応する第２のトランザクション識別を含む、バスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、デジタルデータ処理に関し、特に複数のＣＰＵコア間のデータバスに関する。
【背景技術】
【０００２】
従来のバスプロトコルは、マスターとスレーブとの間でトランザクションを送信するために通信ハンドシェイクに依存する。典型的なハンドシェイクは下記の形式を取る。マスターがバス上にトランザクションを置き、マスターがコマンド要求信号をアサートする。トランザクションは、トランザクションが受け取られたことを示すコマンド肯定応答信号をスレーブがアサートするまで、バス上に留まり、他のトランザクションが送信されることを防ぐ。処理が完了した後、スレーブは、オプションとして、応答を別個のバス上に置き得、応答要求をアサートし得る。応答は、応答が受け取られたことを示す肯定応答信号をマスターがアサートするまで、バス上に留まり、他の応答が送信されることを防ぐ。
【０００３】
この従来のバス通信ハンドシェイクは、次の要因によって性能損失があった。肯定応答信号を待って要求信号がアサートされるとき、コマンド又は応答等のトランザクションが複数のサイクルの間バス上に存在し得る。この待機は、他のトランザクションがバスを用いることを阻む。これにより、その時間期間の間に送信されるトランザクションの数が減少し、通信性能が低下する。このハンドシェイクは、トランザクションを送信するために、トランザクション送信側からの要求信号、及びトランザクション受信側からの肯定応答信号の２方向通信を必要とする。これらの２方向信号は、典型的に異なるサイクルにあり、単一トランザクション処理の待ち時間を付加する。
【０００４】
典型的な通信プロトコルは、読み出し、書き込み、及びコヒーレンストランザクションを別個の物理チャネル上で送信する。コマンド及び応答もまた典型的に別個のチャネル上で送信される。アドレス及びデータ幅が増加すると、その結果、物理設計中に配路されなければならない物理的ワイヤの数が非常に膨大になる。その結果ワイヤが密集し、これは、面積の増加、電力消費の増大、及び設計スケジュールの長期化につながる。面積の増加が付加的なパイプラインステージの挿入に繋がる場合、この配線密集は性能低下も引き起こす恐れがある。
【発明の概要】
【０００５】
説明される例のバス通信プロトコルにおいて、マスターデバイスが通信を開始し得る。各マスターデバイスは複数のバスクレジットをストアする。マスターデバイスは、バストランザクションに対応する数及びタイプのバスクレジットをストアしている場合にのみ、そのバストランザクションを送信し得る。マスターデバイスが充分なバスクレジットを持つ場合、マスターデバイスは、バストランザクション及びクレジット信号を送信し得る。送信の際、マスターデバイスは、ストアされたバスクレジットの数を、バストランザクションに対応する量、減少させる。
【０００６】
バスクレジットは、バストランザクションを受け取るスレーブデバイス上のリソースに対応する。マスターデバイスが適切なクレジットを持つ場合、スレーブデバイスは、バストランザクションを受け取る容量を有する。このように、スレーブデバイスは、適切なクレジットが付随している場合、バストランザクションを受け取らなければならない。
【０００７】
バストランザクションをアクセプトした後、スレーブデバイスはトランザクションをサービスする。そのようなサービスには、コマンドを実行すること、読み出しに応答してデータをリコールすること、又は書き込みに応答してデータをストアすることが含まれ得る。バストランザクションをサービスし、スレーブデバイスが別のトランザクションをアクセプトし得る状態を再開した後、スレーブデバイスは、クレジットリターンをバス上に送信する。マスターデバイスがクレジットリターンを受け取ると、マスターデバイスは、対応する数及びタイプのクレジットをストアされている量に加算する。クレジットリターンの送信に続いて、スレーブデバイスは、別のバストランザクションをアクセプトする準備が整う。クレジットリターンを受け取ると、マスターデバイスは、バストランザクションを開始することが再度可能になる。
【０００８】
多くのタイプの相互作用において、バスエージェントは、プロセスの状態に応じてマスターとスレーブの両方として機能し得る。通常の読み出し動作では、第１のバスエージェントが、マスターデバイスとして機能する間に、読み出しを送信し、読み出しアドレスを指示する。第２のバスエージェントが、スレーブデバイスとして機能する間に、読み出しを受け取り、アクセプトする。第２のバスエージェントは、スレーブデバイスとして機能する間に、メモリにアクセスすること、及び特定されたデータをリコールすることによって、読み出しをサービスする。好ましい実施形態において、第２のバスエージェントは、独立したバストランザクションによって、リコールされたデータを第１のエージェントに送信する。この例において、第２のバスエージェントは、第１のバスエージェントへのデータ送信をサポートするための数とタイプのバスクレジットをストアしなければならない。第２のエージェントが適正なクレジットをストアする場合、第１のバスエージェントは、バストランザクションを受け取り、サービスする容量を有する。この例において、第２のバスエージェントは、充分なバスクレジットを持ち、読み出されたデータのデータ転送を開始する。第１のバスエージェントは、バストランザクション及び読み出されたデータをアクセプトする。第１のバスエージェントは、読み出されたデータをストアすることによって、バストランザクションをサービスする。バストランザクションをサービスし、更なるバストランザクションを受け取るためにリソースをクリアにすると、第１のバスエージェントは、対応するクレジットリターンを第２のバスエージェントに送信する。第２のバスエージェントは、その後、ストアされたクレジットを増加させ、第１のバスエージェントが再びバストランザクションを受け取ることが可能であることを確認する。
【０００９】
好ましい実施形態において、複数のそのようなバス交換がオーバーラップし得る。そのようなオーバーラップするバストランザクションを分離させておくために、第１のバスエージェントは、好ましくは、第１のトランザクション識別をトランザクションと共に送信する。第２のバスエージェントは、バストランザクション応答において第１のトランザクション識別に対応する第２のトランザクション識別を送信する。これによって、第１のバスエージェントは応答を区別することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に従ったシングルコアスカラープロセッサを図示する。
【００１１】
【図２】別の実施形態に従ったデュアルコアスカラープロセッサを図示する。
【００１２】
【図３】更なる実施形態に従ったシングルコアベクトルプロセッサを図示する。
【００１３】
【図４】更なる実施形態に従ったデュアルコアベクトルプロセッサを図示する。
【００１４】
【図５】ＣＰＵの一実施形態の構成を図示する。
【００１５】
【図６】グローバルスカラーレジスタファイルを図示する。
【００１６】
【図７】グローバルベクトルレジスタファイルを図示する。
【００１７】
【図８】乗算及び相関機能ユニットによって共有されるローカルベクトルレジスタファイルを図示する。
【００１８】
【図９】ロード／ストアユニットのローカルレジスタファイルを図示する。
【００１９】
【図１０】プレディケートレジスタファイルを図示する。
【００２０】
【図１１】好ましい実施形態に従った、中央処理装置のパイプラインフェーズを図示する。
【００２１】
【図１２】シングルフェッチパケットの１６個の命令を図示する。
【００２２】
【図１３】例示の実施形態によって用いられる命令の命令コーディングの例を図示する。
【００２３】
【図１４】例示の実施形態に従った、ＳＩＭＤ演算のためのキャリー制御を図示する。
【００２４】
【図１５】本発明を適用し得るコンピュートクラスタ１５００を図示する。
【００２５】
【図１６】シングルマルチコアバスアーキテクチャインタフェースのための各チャネルに対する信号方向を図示する。
【００２６】
【図１７】例示のペアにされたインタフェーストポロジーにおける各チャネルを図示する。
【００２７】
【図１８】別の例示のペアにされたインタフェーストポロジーにおける各チャネルを図示する。
【００２８】
【図１９】ｄｅｄｃ信号のエンコーディングのためのロジックを図示する。
【００２９】
【図２０】トランザクション属性チャネルのためのシンプルなクレジットハンドシェイクを図示する。
【００３０】
【図２１】同じチャネル上のインターリーブされたクレジットハンドシェイクを示す。
【００３１】
【図２２】クレジット非書き込みシーケンスにおけるステップを図示する。
【００３２】
【図２３】クレジットされた（ｃｒｅｄｉｔｅｄ）書き込みコマンドシーケンスの一般的な形式を図示する。
【００３３】
【図２４】例示の実施形態において用いられるようなエージェントのブロック図を示す。
【発明を実施するための形態】
【００３４】
図１は、一実施形態に従ったシングルコアスカラープロセッサを図示する。シングルコアプロセッサ１００はスカラー中央処理装置（ＣＰＵ）１１０を含み、スカラーＣＰＵ１１０は、別個のレベル１命令キャッシュ（Ｌ１Ｉ）１１１及びレベル１データキャッシュ（Ｌ１Ｄ）１１２に結合される。中央処理装置コア１１０は、既知のように構成され得、典型的に、レジスタファイル、整数算術論理ユニット、整数積算器、及びプログラムフロー制御ユニットを含み得る。シングルコアプロセッサ１００は、命令とデータの両方を持つレベル２組み合わせ命令／データキャッシュ（Ｌ２）１１３を含む。好ましい実施形態において、スカラー中央処理装置（ＣＰＵ）１１０、レベル１命令キャッシュ（Ｌ１Ｉ）１１１、レベル１データキャッシュ（Ｌ１Ｄ）１１２、及びレベル２組み合わせ命令／データキャッシュ（Ｌ２）１１３は、単一の集積回路上に形成される。
【００３５】
好ましい実施形態において、この単一の集積回路はまた、電力制御回路１２１等の補助回路、エミュレーション／トレース回路１２２、ＤＳＴ（ｄｅｓｉｇｎ  ｆｏｒ  ｔｅｓｔ）ＰＢＩＳＴ（ｐｒｏｇｒａｍｍａｂｌｅ  ｂｕｉｌｔ−ｉｎ  ｓｅｌｆ−ｔｅｓｔ）回路１２３、及びクロッキング回路１２４を含む。メモリコントローラ１３１が、ＣＰＵ１１０の外部として、単一集積回路１００上に集積され得る。
【００３６】
ＣＰＵ１１０は、定義されたデータに対してデータ処理演算を実施するように、プログラム制御下で動作する。ＣＰＵ１１０を制御するプログラムは、デコーディング及び実行の前にフェッチされなければならない複数の命令で構成される。シングルコアプロセッサ１００は複数のキャッシュメモリを含む。図１は、第１のレベルキャッシュのペアを図示する。レベル１命令キャッシュ（Ｌ１Ｉ）１１１は、ＣＰＵ１１０によって用いられる命令をストアする。ＣＰＵ１１０は、最初に、レベル１命令キャッシュ１２１から任意の命令にアクセスすることを試みる。レベル１データキャッシュ（Ｌ１Ｄ）１１２は、ＣＰＵ１１０によって用いられるデータをストアする。ＣＰＵ１１０は、最初に、レベル１データキャッシュ１１２から任意の必要とされるデータにアクセスすることを試みる。２つのレベル１キャッシュ（Ｌ１Ｉ  １１１、及びＬ１Ｄ  １１２）は、レベル２統合キャッシュ（Ｌ２）１１３によってバックアップされている。レベル１命令キャッシュ１１１又はレベル１データキャッシュ１１２に対するキャッシュミスがった場合、要求された命令又はデータが、レベル２統合キャッシュ１１３から探される。要求された命令又はデータがレベル２統合キャッシュ１１３にストアされている場合は、その命令又はデータは、中央処理装置コア１１０に供給するために、要求しているレベル１キャッシュに供給される。当業者には周知のように、要求された命令又はデータは、使用を迅速にするために、要求しているキャッシュとＣＰＵ１１０の両方に同時に供給され得る。
【００３７】
レベル２統合キャッシュ１１３は、更に、メモリコントローラ１３１を介して、より高いレベルのメモリシステムに結合される。メモリコントローラ１３１は、外部メモリ（図１に図示されない）にアクセスすることによって、レベル２統合キャッシュ１１３におけるキャッシュミスを取り扱う。メモリコントローラ１３１は、キャッシャビリティ判定、エラー検出及び訂正、アドレス翻訳等など、全てのメモリ中心の機能を取り扱う。シングルコアプロセッサ１００は、マルチプロセッサシステムの一部であり得る。その場合、メモリコントローラ１３１は、プロセッサ間のデータ転送を取り扱い、プロセッサ間のキャッシュコヒーレンスを維持する。
【００３８】
図２は、別の実施形態に従ったデュアルコアプロセッサを図示する。デュアルコアプロセッサ２００は、別個のレベル１命令キャッシュ（Ｌ１Ｉ）２１１及びレベル１データキャッシュ（Ｌ１Ｄ）２１２に結合される第１のＣＰＵ２１０、及び別個のレベル１命令キャッシュ（Ｌ１Ｉ）２２１及びレベル１データキャッシュ（Ｌ１Ｄ）２１２に結合される第２のＣＰＵ２２０を含む。中央処理装置２１０及び２２０は、好ましくは、図１に図示されるＣＰＵ１１０と同様に構成される。デュアルコアプロセッサ２００は、４個のレベル１キャッシュ（Ｌ１Ｉ  ２１１、Ｌ１Ｄ  ２１２、Ｌ１Ｉ  ２２１、及びＬ１Ｄ  ２２２）全てをサポートする、単一の共有されたレベル２組み合わせ命令／データキャッシュ（Ｌ２）２３１を含む。好ましい実施形態において、ＣＰＵ２１０、レベル１命令キャッシュ（Ｌ１Ｉ）２１１、レベル１データキャッシュ（Ｌ１Ｄ）２１２、ＣＰＵ２２０、レベル１命令キャッシュ（Ｌ１Ｉ）２２１、レベル１データキャッシュ（Ｌ１Ｄ）２２２、及びレベル２組み合わせ命令／データキャッシュ（Ｌ２）２３１が、単一の集積回路上に形成される。この単一の集積回路は、好ましくは、電力制御回路２４５等の補助回路、エミュレーション／トレース回路１１６、ＤＳＴ（ｄｅｓｉｇｎ  ｆｏｒ  ｔｅｓｔ）ＰＢＩＳＴ（ｐｒｏｇｒａｍｍａｂｌｅ  ｂｕｉｌｔ−ｉｎ  ｓｅｌｆ−ｔｅｓｔ）回路１１７、及びクロッキング回路１１８を含む。この単一の集積回路はまたメモリコントローラ２５１を含み得る。
【００３９】
図３及び図４は、それぞれ図１及び図２に示されるものと類似のシングルコアプロセッサ及びデュアルコアプロセッサを図示する。図３及び図４は、ベクトル中央処理装置が示されている点で、図１及び図２とは異なる。下記に更に詳細を説明するように、シングルコアベクトルプロセッサ３００はベクトルＣＰＵ３１０を含む。デュアルコアベクトルプロセッサ４００は、２つのベクトルＣＰＵ４１０及び４２０を含む。ベクトルＣＰＵ３１０、４１０、及び４２０は、対応するスカラーＣＰＵ１１０、２１０、及び２２０に比較して、一層幅広いデータパスオペレーショナルユニット、及び一層幅広いデータレジスタを含む。
【００４０】
ベクトルＣＰＵ３１０、４１０、及び４２０は更に、ストリーミングエンジン３１３（図３）、及びストリーミングエンジン４１３及び４２３（図５）を含むという点で、対応するスカラーＣＰＵ１１０、２１０、及び２２０とは異なる。ストリーミングエンジン３１３、４１３、及び４２３は類似である。ストリーミングエンジン３１３は、データをレベル２統合キャッシュ３１３（Ｌ２）からベクトルＣＰＵ３１０に転送する。ストリーミングエンジン４１３は、データをレベル２統合キャッシュ４３１からベクトルＣＰＵ４１０に転送する。ストリーミングエンジン４２３は、データをレベル２統合キャッシュ４３１からベクトルＣＰＵ４２０に転送する。好ましい実施形態に従って、各ストリーミングエンジン３１３、４１３、及び４２３は、最大２つのデータストリームを管理する。
【００４１】
各ストリーミングエンジン３１３、４１３、及び４２３は、一定の制約された状況においてデータを転送する。ストリームは特定のタイプのエレメントのシーケンスで構成される。ストリーム上で動作するプログラムは、データを順次読み出し、各エレメント上で順に動作する。ストリームは全て、下記の基本的な特性を有する。ストリームデータは、適切に定義された、時間における開始と終了を有する。ストリームデータは、ストリームにわたって固定のエレメントサイズ及びタイプを有する。ストリームデータは、エレメントの固定のシーケンスを有する。このように、プログラムはストリーム内をランダムに探すことはできない。ストリームデータは、アクティブの間は読み出し専用である。プログラムは、ストリームから読み出している間は、同時にストリームに書き込みできない。一旦、ストリームが開始されると、ストリーミングエンジンは、アドレスを計算し、定義されたデータタイプをレベル２統合キャッシュからフェッチし、ゼロ拡張、符号拡張等のデータタイプマニピュレーション、マトリックス転位等のデータエレメントソーティング／スワッピングを実施し、データをＣＰＵ内のプログラムされた実行ユニットに直接的に送達する。ストリーミングエンジンは、このように、正常に動作するデータ上でのリアルタイムのデジタルフィルタリング演算のために有用である。ストリーミングエンジンは、対応するＣＰＵからこれらのメモリフェッチタスクを解放して、他の処理機能を可能にする。
【００４２】
ストリーミングエンジンは下記利点を提供する。多次元メモリアクセスを可能にする。機能ユニットに対して利用可能な帯域幅を増大させる。ストリームバッファがＬ１Ｄキャッシュ及びＬ２キャッシュをバイパスし得るので、キャッシュミスストール（詰まり）の数を最小化する。ループにおいて維持する必要のあるスカラー演算の数を低減する。アドレスポインタを管理する。他の計算のためのアドレス生成命令スロット及び．Ｄユニットを自動的に解放するアドレス生成を取り扱う。
【００４３】
図５は、ＣＰＵの一実施形態の構成を図示する。特に注釈がない場合は、本明細書は、スカラーＣＰＵ及びベクトルＣＰＵの両方に適用される。ＣＰＵは、複数の実行ユニット、乗算ユニット５１１（．Ｍ）、相関ユニット５１２（．Ｃ）、算術ユニット５１３（．Ｌ）、算術ユニット５１４（．Ｓ）、ロード／ストアユニット５１５（．Ｄ）、分岐ユニット５１６（．Ｂ）、及びプレディケーションユニット５１７（．Ｐ）を含む。これらの実行ユニットの動作及び関係を以下に詳細に説明する。
【００４４】
乗算ユニット５１１は、主として乗算を実施する。乗算ユニット５１１は、最大２個のダブルベクトルオペランドをアクセプトし、最大１個のダブルベクトル結果を生成する。乗算ユニット５１１は、８ビットから６４ビットの乗算演算の精度を備える種々の整数乗算演算、種々の正規及び複素ドット積演算、及び種々の浮動小数点乗算演算、ビットワイズ論理演算、ムーブ、並びに、加算及び減算を行うように構成可能な命令である。図５に図示されるように、乗算ユニット５１１は、４個の同時１６ビット×１６ビットの乗算のためのハードウェアを含む。乗算ユニット５１１は、下記に説明する様式で、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、及び共有の．Ｍ及びＣ．ローカルレジスタ５２３ファイルにアクセスし得る。フォワーディングマルチプレクサ５３０は、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、対応するストリーミングエンジン、及び乗算ユニット５１１の間のデータ転送を調停する。
【００４５】
相関ユニット５１２（．Ｃ）は、最大２つのダブルベクトルオペランドをアクセプトし、最大１つのダブルベクトル結果を生成する。相関ユニット５１２は、これらの主要演算をサポートする。ＷＣＤＭＡ「Ｒａｋｅ」及び「Ｓｅａｒｃｈ」命令のサポートにおいて、相関ユニット５１２は、クロックサイクル毎に、最大５１２個の２ビットＰＮ×８ビットＩ／Ｑ複素乗算を実施する。相関ユニット５１２は、クロックサイクル毎に、最大５１２個のＳＡＤ（Ｓｕｍ−ｏｆ−Ａｂｓｏｌｕｔｅ−Ｄｉｆｆｅｒｅｎｃｅ）を実施する、８ビット及び１６ビットのＳＡＤ計算を実施する。相関ユニット５１２は、水平加算及び水平最小／最大命令を実施する。相関ユニット５１２は、ベクトルパーミュート（ｐｅｒｍｕｔｅｓ）命令を実施する。相関ユニット５１２は、８個の２５６ビット幅の制御レジスタを含む。これらの制御レジスタは、或る相関ユニット命令の演算を制御するように用いられる。相関ユニット５１２は、下記に説明する様式で、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、及び共有．Ｍ及びＣ．ローカルレジスタファイル５２３にアクセスし得る。フォワーディングマルチプレクサ５３０は、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、対応するストリーミングエンジン、及び相関ユニット５１２の間のデータ転送を調停する。
【００４６】
ＣＰＵ５００は、算術ユニット５１３（．Ｌ）及び算術ユニット５１４（．Ｓ）の２つの算術ユニットを含む。算術ユニット５１３及び算術ユニット５１４の各々は、最大２つのベクトルオペランドをアクセプトし、１つのベクトル結果を生成する。コンピュートユニットは、これらの主要演算をサポートする。算術ユニット５１３及び算術ユニット５１４は、８ビットから６４ビットまでわたる精度で種々のＳＩＭＤ（ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ−ｍｕｌｔｉｐｌｅ−ｄａｔａ）固定小数点算術演算を実施する。算術ユニット５１３及び算術ユニット５１４は、結果をプレディケートレジスタファイル５２６（下記に詳細を説明する）に直接書き込む、種々の、ベクトル比較及び最小／最大命令を実施する。これらの比較には、Ａ＝Ｂ、Ａ＞Ｂ、Ａ≧Ｂ、Ａ＜Ｂ、及びＡ≦Ｂが含まれる。比較が真であると、プレディケートレジスタ内の対応するビット位置に１ビットがストアされる。比較が偽であると、プレディケートレジスタ内の対応するビット位置に０がストアされる。ベクトル比較命令は、バイト（８ビット）データを前提とし、従って、３２個のシングルビット結果を生成する。算術ユニット５１３及び算術ユニット５１４は、下記に説明されるように、指定されたプレディケートレジスタを用いて種々のベクトル演算を実施する。算術ユニット５１３及び算術ユニット５１４は、半精度（１６ビット）、単精度（３２ビット）から倍精度（６４ビット）までわたる精度で、種々のＳＩＭＤ浮動小数点算術演算を実施する。算術ユニット５１３及び算術ユニット５１４は、種々のアルゴリズム及び関数を迅速化するための特殊な命令を実施する。算術ユニット５１３及び算術ユニット５１４は、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、共有．Ｌ及び．Ｓローカルレジスタファイル５２４、及びプレディケートレジスタファイル５２６にアクセスし得る。フォワーディングマルチプレクサ５３０は、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、対応するストリーミングエンジン、及び算術ユニット５１３、５１４の間のデータ転送を調停する。
【００４７】
ロード／ストアユニット５１５（．Ｄ）は、主としてアドレス計算に用いられる。ロード／ストアユニット５１５は、最大６４ビットのスカラーオペランドをアクセプトするように拡張され、最大６４ビットのスカラー結果を生成する。ロード／ストアユニット５１５は、他のユニット上のワークロードを低減するように、スワッピング、ロード及びストアデータ上でのパック、アンパック等のデータマニピュレーションを実施するための付加的ハードウェアを含む。ロード／ストアユニット５１５は、各クロックサイクルに１つのロード又はストア要求を、４４ビットの物理アドレスと共に、レベル１データキャッシュ（Ｌ１Ｄ）に送り出し得る。ロード又はストアデータ幅は、３２ビット、６４ビット、２５６ビット、又は５１２ビットであり得る。ロード／ストアユニット５１５は、６４ビットＳＩＭＤ算術演算、６４ビットビットワイズ論理演算、及びスカラー及びベクトルロード及びストアデータマニピュレーション、の主要演算をサポートする。ロード／ストアユニット５１５は、好ましくは、４８ビット仮想アドレスから４４ビット物理アドレスへのアドレス翻訳を実施するためのマイクロＴＬＢ（ｔａｂｌｅ  ｌｏｏｋ−ａｓｉｄｅ  ｂｕｆｆｅｒ）ブロックを含む。ロード／ストアユニット５１５は、後述する様式で、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、及び．Ｄローカルレジスタファイル５２５にアクセスし得る。フォワーディングマルチプレクサ５３０は、グローバルスカラーレジスタファイル５２１、グローバルベクトルレジスタファイル５２２、対応するストリーミングエンジン、及びロード／ストアユニット５１５の間のデータ転送を調停する。
【００４８】
分岐ユニット５１６（．Ｂ）は、分岐アドレスを計算し、分岐予測を実施し、予測の結果に応じて制御フローを変更する。
【００４９】
プレディケーションユニット５１７（．Ｐ）は、ベクトルプレディケーションレジスタ上で基本演算を実施する小型制御ユニットである。プレディケーションユニット５１７は、ベクトルプレディケーションレジスタ５２６への直接アクセスを有する。プレディケーションユニット５１７は、ＡＮＤ、ＡＮＤＮ、ＯＲ、ＸＯＲ、ＮＯＲ、ＢＩＴＲ、ＮＥＧ、ＳＥＴ、ＢＩＴＣＮＴ（ビットカウント）、ＲＭＢＤ（一番右のビット検出））、ＢＩＴ  Ｄｅｃｉｍａｔｅ  ａｎｄ  Ｅｘｐａｎｄ等のプレディケーションレジスタ上で異なるビット演算を実施する。
【００５０】
図６は、グローバルスカラーレジスタファイル５２１を図示する。１６個の独立した６４ビット幅のスカラーレジスタがある。グローバルスカラーレジスタファイル５２１の各レジスタは、３２ビットスカラーデータ（レジスタＡ０〜Ａ１５  ６０１と称する）又は６４ビットのスカラーデータ（レジスタＥＡ０〜ＥＡ１５  ６１１と称する）として読み出され得る。しかしながら、書き込みは常に６４ビットであり、必要に応じ、最大６４ビットになるようにゼロ拡張される。全ての機能ユニットの全てのスカラー命令が、グローバルスカラーレジスタファイル５２１に対して読み出し又は書き込みし得る。命令タイプはデータサイズを決定する。グローバルスカラーレジスタファイル５２１は、サイズが８ビットから６４ビットまでわたるデータタイプをサポートする。また、ベクトル命令が、ベクトルの上位１９２ビットデータが無視されて、６４ビットのグローバルスカラーレジスタ５２１に書き込み得る。ベクトル命令はまた、グローバルスカラーレジスタファイル５１１から６４ビットデータを読み出し得る。この場合、オペランドは、入力ベクトルを形成するために、上位１９２ビットにおいてゼロ拡張される。
【００５１】
図７は、グローバルベクトルレジスタファイル５２２を図示する。１６個の独立した２５６ビット幅のベクトルレジスタがある。グローバルベクトルレジスタファイル５２２の各レジスタは、３２ビットスカラーデータ（レジスタＸ０〜Ｘ１５  ７０１と称する）、６４ビットのスカラーデータ（レジスタＥＸ０〜ＥＸ１５  ７１１と称する）、２５６ビットベクトルデータ（レジスタＶＸ０〜ＶＸ１５  ７２１と称する）、又は５１２ビットのダブルベクトルデータ（ＤＶＸ０〜ＤＶＸ１２と称するが、図示せず）として読み出され得る。この実施形態において、乗算ユニット５１１及び相関ユニット５１２のみがダブルベクトル命令を実行し得る。全ての機能ユニットの全てのベクトル命令が、グローバルベクトルレジスタファイル５２２に対して読み出し又は書き込みし得る。また、任意の機能ユニットの任意のスカラー命令が、読み出し又は書き込みのために、グローバルベクトルレジスタファイル５２２レジスタの下位３２又は６４ビットにアクセスし得る。命令タイプはデータサイズを決定する。
【００５２】
図８は、ローカルベクトルレジスタファイル５２３を図示する。１６個の独立した２５６ビット幅のベクトルレジスタがある。ローカルベクトルレジスタファイル５２３の各レジスタは、３２ビットスカラーデータ（レジスタＭ０〜Ｍ１５  ７０１と称する）、６４ビットのスカラーデータ（レジスタＥＭ０〜ＥＭ１５  ７１１と称する）、２５６ビットベクトルデータ（レジスタＶＭ０〜ＶＭ１５  ７２１と称する）、又は５１２ビットダブルベクトルデータ（ＤＶＭ０〜ＤＶＭ７と称するが、図示せず）として読み出され得る。この実施形態において、乗算ユニット５１１及び相関ユニット５１２のみがダブルベクトル命令を実行し得る。全ての機能ユニットの全てのベクトル命令が、ローカルベクトルレジスタファイル５２３に対して書き込みし得る。乗算ユニット５１１及び相関ユニット５１２の命令のみが、ローカルベクトルレジスタファイル５２３から読み出しし得る。命令タイプはデータサイズを決定する。
【００５３】
乗算ユニット５１１は、ダブルベクトル（５１２ビットデータ）上で動作し得る。乗算ユニット５１１は、グローバルベクトルレジスタファイル５２１及びローカルベクトルレジスタファイル５２３から、ダブルベクトルデータを読み出し、グローバルベクトルレジスタファイル５２１及びローカルベクトルレジスタファイル５２３にダブルベクトルデータを書き込み得る。レジスタ指定ＤＶＸｘ及びＤＶＭｘは、下記のように、グローバルベクトルレジスタファイル５２１及びローカルベクトルレジスタファイル５２３にマッピングされる。
【表１】
2020191122.tif 000003
各ダブルベクトル指定は、グローバルベクトルレジスタ５２２か又はローカルベクトルレジスタ５２３における、対応する近隣ベクトルレジスタのペアにマッピングする。指定ＤＶＸ０〜ＤＶＸ７は、グローバルベクトルレジスタ５２２にマッピングする。指定ＤＶＭ０〜ＤＶＭ７は、ローカルベクトルレジスタ５２３にマッピングする。
【００５４】
ローカルベクトルレジスタファイル５２４は、ローカルベクトルレジスタファイル５２３に類似する。１６個の独立した２５６ビット幅のベクトルレジスタがある。ローカルベクトルレジスタファイル５２４の各レジスタは、３２ビットスカラーデータ（レジスタＬ０〜Ｌ１５  ７０１と称する）、６４ビットのスカラーデータ（レジスタＥＬ０〜ＥＬ１５  ７１１と称する）、又は２５６ビットベクトルデータ（レジスタＶＬ０〜ＶＬ１５  ７２１と称する）として読み出され得る。全ての機能ユニットの全てのベクトル命令が、ローカルベクトルレジスタファイル５２４に対して書き込みし得る。算術ユニット５１３及び算術ユニット５１４の命令のみが、ローカルベクトルレジスタファイル５２４から読み出しし得る。
【００５５】
図９は、ローカルレジスタファイル５２５を図示する。１６個の独立した６４ビット幅のレジスタがある。ローカルレジスタファイル５２５の各レジスタは、３２ビットスカラーデータ（レジスタＤ０〜Ｄ１５  ７０１と称する）、又は６４ビットのスカラーデータ（レジスタＥＤ０〜ＥＤ１５  ７１１と称する）として読み出され得る。全ての機能ユニットの全てのスカラー及びベクトル命令が、ローカルレジスタファイル５２５に対して書き込みし得る。ロード／ストアユニット５１５の命令のみが、ローカルレジスタファイル５２５から読み出しし得る。また、任意のベクトル命令が、結果のベクトルの上位１９２ビットデータが無視されて、ローカルレジスタファイル５２５に６４ビットデータを書き込むことができる。任意のベクトル命令はまた、６４ビットローカルレジスタファイル５２５レジスタから６４ビットデータを読み出すことができる。リターンデータは、入力ベクトルを形成するために、上位１９２ビットにおいてゼロ拡張される。ローカルレジスタファイル５２５のレジスタは、ロード／ストアユニット５１５の６４ビット算術論理命令のためのストアデータとして又はソースとしてではなく、ロード／ストア命令におけるアドレスとしてのみ用いられ得る。
【００５６】
図１０は、プレディケートレジスタファイル５１７を図示する。プレディケートレジスタファイル５１７に１６個のレジスタ３２ビットレジスタがある。プレディケートレジスタファイル５１７は、何れかの算術によって実行されるベクトル比較演算の結果を含み、ベクトル選択命令及びベクトルプレディケーテッドストア命令によって用いられる。また、特殊命令のスモールサブセットが、プレディケートレジスタから直接的に読み出し、演算を実施し、プレディケートレジスタへ直接的にライトバックし得る。また、グローバルレジスタファイル（５２１及び５２２）とプレディケートレジスタファイル５１７との間で値を転送できる命令がある。プレディケートレジスタファイル５１７とローカルレジスタファイル（５２３、５２４、及び５２５）との間の転送はサポートされていない。プレディケーションレジスタ（Ｐ０〜Ｐ１５と称する）の各ビットは、ベクトルデータのバイトを制御する。ベクトルが２５６ビットであるので、プレディケートレジスタの幅は、２５６／８＝３２ビットに等しい。プレディケートレジスタファイルは、ベクトル比較の結果をストアするために、ベクトル比較演算によって書き込まれ得る。
【００５７】
ＣＰＵ１１０、２１０、２２０、３１０、４１０、又は４２０等のＣＰＵは、命令パイプライン上で動作し得る。この命令パイプラインは、サイクル毎に、命令を７個の実行ユニット（乗算ユニット５１１、相関ユニット５１２、算術ユニット５１３、算術ユニット５１４、ロード／ストアユニット５１５、分岐ユニット５１６、及びプレディケーションユニット５１７）に提供するように、最大９個の並列３２ビットスロットをディスパッチし得る。命令は、更に後述するように、パックされた固定長のフェッチされた命令である。全ての命令は、フェッチ及びデコードのために同数のパイプラインフェーズを必要とするが、様々な数の実行フェーズを必要とする。
【００５８】
図１１は、プログラムフェッチフェーズ１１１０、ディスパッチ及びデコードフェーズ１１１０、及び実行フェーズ１１３０のパイプラインフェーズを図示する。プログラムフェッチフェーズ１１１０は、全ての命令に対して３つのステージを含む。ディスパッチ及びデコードフェーズは、全ての命令に対して３つのステージを含む。実行フェーズ１１３０は、命令に応じて１から４個のステージを含む。
【００５９】
フェッチフェーズ１１１０は、プログラムアドレス生成ステージ１１１１（ＰＧ）、プログラムアクセスステージ１１１２（ＰＡ）、及びプログラムレシーブステージ１１１３（ＰＲ）を含む。プログラムアドレス生成ステージ１１１１（ＰＧ）の間、プログラムアドレスがＣＰＵにおいて生成され、読み出し要求がレベル１命令キャッシュＬ１Ｉのためのメモリコントローラに送信される。プログラムアクセスステージ１１１２（ＰＡ）の間、レベル１命令キャッシュＬ１Ｉは、要求を処理し、そのメモリ内のデータにアクセスし、ＣＰＵ境界にフェッチパケットを送信する。プログラムレシーブステージ１１１３（ＰＲ）の間、ＣＰＵはフェッチパケットを登録する。
【００６０】
命令は、常に、一度にフェチされた１６語である。図１２は、このフェッチパケットを図示する。図１２は、シングルフェッチパケットの１６個の命令１２０１〜１２１６を図示する。フェッチパケットは、５１２ビット（１６ワード）境界上で整合される。個々の命令の実行は、各命令におけるｐビットによって部分的に制御される。ｐビットは、好ましくは、命令のビット０である。ｐビットは、命令が別の命令と並列に実行するか否かを決定する。ｐビットは、下位から上位アドレスへスキャンされる。命令のｐビットが１の場合、次に続く命令が、その命令Ｉと並列に（同じサイクルにおいて）実行される。命令のｐビットが０である場合、次に続く命令は、その命令の後のサイクルで実行される。並列に実行する全ての命令が、実行パケットを構成する。実行パケットは、最大９個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを使用しなければならない。実行パケットは、最大９個の３２ビット幅スロットを含み得る。スロットは、自己自足の（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）命令であり得るか、又は直前の命令によって特定された一定フィールドを拡張し得る。スロットは、同じフェッチパケット内の命令に適用するように、条件付きコードとして用いられ得る。フェッチパケットは、最大２個の一定拡張スロット、及び１つの条件コード拡張スロットを含み得る。
【００６１】
最大１１個の個別の命令スロットがあるが、スケジューリング制約によって並列スロット最大数である９個に制限される。最大９個のスロットは、下記のように共有される。
【００６２】
乗算ユニット５１１、相関ユニット５１２、算術ユニット５１３、算術ユニット５１４、ロード／ストアユニット５１５、プレディケートユニット５１７と共有される分岐ユニット５１６、第１の一定拡張、第２の一定拡張、及び条件コード拡張と共有されるユニットレス命令。実行パケットにおける最後の命令は、０に等しいｐビットを有する。
【００６３】
ＣＰＵ及びレベル１命令キャッシュＬ１Ｉパイプラインは、互いから結合解除され得る。レベル１命令キャッシュＬ１Ｉからのフェッチパケットリターンは、レベル１命令キャッシュＬ１Ｉにおいてヒットがあるか否か等の外部状況に応じて、異なる数のクロックサイクルを取り得る。従って、プログラムアクセスステージ１１１２（ＰＡ）は、他のステージにおけるように１クロックではなく、幾つかのクロックサイクルを取り得る。
【００６４】
ディスパッチ及びデコードフェーズ１１１０は、適切な実行ユニットステージ１１２１（ＤＳ）、命令プリデコードステージ１１２２（Ｄ１）、及び命令デコード、オペランド読み出しステージ１２２２（Ｄ２）に対する命令ディスパッチを含む。適切な実行ユニットステージ１１２１（ＤＳ）に対する命令ディスパッチの間、フェッチパケットは、実行パケットに分けられ、適切な機能ユニットにアサインされる。命令プリデコードステージ１１２２（Ｄ１）の間、ソースレジスタ、宛先レジスタ、及び関連するパスは、機能ユニットにおける命令の実行のためにデコードされる。命令デコードの間、オペランド読み出しステージ１２２２（Ｄ２）では、レジスタファイルからのオペランド読み出しと共に、より詳細なユニットデコードが行われる。
【００６５】
実行フェーズ１１３０は、実行ステージ１１３１〜１１３５（Ｅ１〜Ｅ５）を含む。異なるタイプの命令は、それらの実行を完了させるために異なる数のこれらのステージを必要とする。パイプラインのこれらのステージは、ＣＰＵサイクル境界でのデバイス状態の理解において重要な役割を果たす。
【００６６】
実行１ステージ１１３１（Ｅ１）の間、命令に対する条件が評価され、オペランドが動作される。図１１に図示されるように、実行１ステージ１１３１は、ストリームバッファ１１４１から、及び概略的に１１４２として示されるレジスタファイルの１つから、オペランドを受け取り得る。ロード及びストア命令では、アドレス生成が実施され、アドレス変更がレジスタファイルに書き込まれる。分岐命令では、ＰＧフェーズにおける分岐フェッチパケットが影響される。図１１に図示されるように、ロード及びストア命令は、本明細書では概略的にメモリ１１５１として示されるメモリにアクセスする。単一サイクル命令では、宛先レジスタファイルに結果が書き込まれる。これは、命令に対する任意の条件が真として評価されると仮定している。条件が偽として評価される場合、命令は、如何なる結果も書き込むことはなく、又は、実行１ステージ１１３１の後に任意のパイプライン演算を有する。
【００６７】
実行２ステージ１１３２（Ｅ２）の間、ロード命令がアドレスをメモリに送る。ストア命令がアドレス及びデータをメモリに送る。結果を飽和する単一サイクル命令は、飽和が起こると、制御状態レジスタ（ＣＳＲ）にＳＡＴビットを設定する。２サイクル命令では、結果が宛先レジスタファイルに書き込まれる。
【００６８】
実行３ステージ１１３３（Ｅ３）の間、データメモリアクセスが行われる。結果を飽和する任意の乗算命令は、飽和が起こると、制御状態レジスタ（ＣＳＲ）にＳＡＴビットを設定する。３サイクル命令では、結果が宛先レジスタファイルに書き込まれる。
【００６９】
実行４ステージ１１３４（Ｅ４）の間、ロード命令が、データをＣＰＵ境界に運ぶ。４サイクル命令では、結果が宛先レジスタファイル書き込まれる。
【００７０】
実行５ステージ１１３５（Ｅ５）の間、ロード命令がデータをレジスタに書き込む。これは、メモリ１１５１から実行５ステージ１１３５への入力と共に図１１に概略的に図示される。
【００７１】
図１３は、例示の実施形態によって用いられる命令の命令コーディングの例を図示する。各命令は、３２ビットで構成され、個別に制御可能な機能ユニット（乗算ユニット５１１、相関ユニット５１２、算術ユニット５１３、算術ユニット５１４、ロード／ストアユニット５１５）の１つの演算を制御する。ビットフィールドは、次のように定義される。クレッグフィールド及びｚビットは、条件付き命令において用いられるオプションのフィールドである。これらのビットは、条件付き命令が、プレディケートレジスタ及び条件を識別するために用いられる。ｚビット（ビット２８）は、プレディケートレジスタにおいて、プレディケーションがゼロに基づくか又は非ゼロに基づくかを示す。ｚ＝１の場合、テストはゼロに等しいことに対するものである。ｚ＝０の場合、テストは非ゼロに対するものである。クレッグ＝０及びｚ＝０のケースは、常に真として扱われ、無条件の命令実行を可能にする。クレッグフィールド及びｚフィールドは、命令において表２に示されるようにエンコードされる。
【表２】
2020191122.tif 000004
なお、ｚビットの列における「ｚ」は、上述のゼロ／非ゼロ比較選択を指し、「ｘ」は、ドントケア（ｄｏｎ’ｔ  ｃａｒｅ）状態を指す。このコーディングは、１６グローバルスカラーレジスタのサブセットのみをプレディケートレジスタとして特定し得る。この選択は、命令コーディングにおいてビットを保持するために成される。なお、無条件の命令は、これらのオプションのビットを有さない。無条件の命令では、これらのビット（２８〜３１）は、好ましくは付加的オペコードビットとして用いられる。しかしながら、必要に応じ、実行パケットが、同じ実行パケットにある命令のための４ビットクレッグ／ｚフィールドを含む一意の３２ビット条件コード拡張スロットを含み得る。表３は、そのような条件コード拡張スロットのコーディングを示す。
【表３】
2020191122.tif 000005
このように、条件コード拡張スロットは、同じ実行パケットにおいてクレッグ／ｚビットが特殊な機能ユニットにアサインされるのと同じ様式でデコードされたビットを特定する。
【００７２】
特殊ベクトルプレディケート命令は、ベクトル演算を制御するために、指定されたプレディケートレジスタを用いる。この実施形態において、全てのこれらのベクトルプレディケート命令は、バイト（８ビット）データ上で動作する。プレディケートレジスタの各ビットは、データの対応するバイト上でＳＩＭＤ演算が成されるか否かを制御する。プレディケートユニット５１７の演算は、複数のベクトル比較に基づく様々な複素ベクトルＳＩＭＤ演算を可能にする。例えば、２つの比較を用いてレンジ判定を行うことができる。候補ベクトルが、第１のデータレジスタ内にパックされた最小限のレンジを有する第１のベクトル参照と比較される。候補ベクトルの第２の比較が、第２のデータレジスタ内にパックされた最大限のレンジを有する第２の参照ベクトルと比較される。２つの結果のプレディケートレジスタの論理的組み合わせが、候補のベクトルの各データ部分がレンジ内かレンジ外かを判定するためのベクトル条件付き演算を可能にし得る。
【００７３】
ｄｓｔフィールドは、命令結果の宛先として、対応するレジスタファイルにおけるレジスタを特定する。
【００７４】
ｓｒｃ２フィールドは、第２のソースオペランドとして、対応するレジスタファイルにおけるレジスタを特定する。
【００７５】
ｓｒｃ１／ｃｓｔフィールドは、命令オペコードフィールド（ビット２〜１２、及び付加的に、無条件の命令のためにビット２８〜３１）に応じて幾つかの意味を有する。第１の意味は、対応するレジスタファイルのレジスタを第１のオペランドとして特定する。第２の意味は即値定数である。命令タイプに応じて、これは、符号なし整数として扱われ、特定されたデータ長にゼロ拡張されるか、又は、符号付き整数として扱われ、特定されたデータ長に符号拡張される。
【００７６】
オペコードフィールド（全ての命令に対してビット２〜１２、及び付加的に、無条件の命令に対してビット２８〜３１）は、命令のタイプを特定し、適切な命令オプションを指定する。これは、機能ユニット及び実施される演算の指定を含む。後述する命令オプションを除き、オペコードの詳細な説明は本記載の範囲に限定されない。
【００７７】
ｐビット（ビット０）は実行パケットをマークする。ｐビットは、後に続く命令と並列に実行するか否かを決定する。ｐビットは、下位アドレスから上位アドレスへスキャンされる。現在の命令に対してｐ＝１の場合、次の命令が現在の命令と並列に実行する。現在の命令に対してｐ＝０の場合、次の命令は現在の命令の後のサイクルにおいて実行する。並列に実行する全ての命令は、実行パケットを構成する。実行パケットは、最大８個の命令を含み得る。実行パケットにおける各命令は、異なる機能ユニットを用いなければならない。
【００７８】
相関ユニット５１２、及び算術ユニット５１３及び５１４は、しばしば、ＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）モードで動作する。このＳＩＭＤモードでは、２つのオペランドからパックされたデータに同じ命令が適用される。各オペランドは、所定のスロットに配置される複数のデータエレメントを持つ。ＳＩＭＤ演算は、データ境界においてキャリー制御によって可能にされる。そのようなキャリー制御は、種々のデータ幅上での演算を可能にする。
【００７９】
図１４はキャリー制御を図示する。ＡＮＤゲート１４０１が、オペランド幅算術論理ユニット内のビットＮのキャリー出力を受け取る（算術ユニット５１３及び５１４に対して２５６ビット、相関ユニット５１２に対して５１２ビット）。ＡＮＤゲート１４０１はまた、後述されるキャリー制御信号を受け取る。ＡＮＤゲート１４０１の出力は、オペランド幅算術論理ユニットのビットＮ＋１のキャリー入力に供給される。ＡＮＤゲート１４０１等のＡＮＤゲートは、あり得るデータ境界における全ビットペア間に配置される。例えば、８ビットデータに対して、そのようなＡＮＤゲートは、ビット７と８、ビット１５と１６、ビット２３と２４の間等となる。そのようなＡＮＤゲートの各々は、対応するキャリー制御信号を受け取る。データサイズが最小である場合、各キャリー制御信号は０であり、隣接するビット間のキャリー送信を効果的にブロックする。選択されたデータサイズが両方の算術論理ユニットセクションを必要とする場合、対応するキャリー制御信号は１である。下記の表４は、８ビット、１６ビット、３２ビット、６４ビット、又は１２８ビットのセクションに分けられ得る、算術ユニット５１３及び５１４において用いられるような２５６ビット幅オペランドのケースに対するキャリー制御信号の例を図示する。最上位ビットのキャリー出力の制御は必要ないので、３１個のキャリー制御信号のみが必要とされる。
【表４】
2020191122.tif 000006
当分野では、２の整数乗（２Ｎ）であるデータサイズ上で演算することが典型的である。しかしながら、このキャリー制御技術は、２の整数乗に限定されない。当業者であれば、どのようにしてこの技術を他のデータサイズ及び他のオペランド幅に適用するか理解するであろう。
【００８０】
図１５は、本発明を適用し得るコンピュートクラスタ１５００を図示する。コンピュートクラスタ１５００は、好ましくは、単一の集積回路において具現化される。コンピュートクラスタ１５００は、６個のデュアルコアユニット１５１０、１５２０、１５３０、１５４０、１５５０、及び１５６０を含む。各デュアルコアユニット１５１０、１５２０、１５３０、１５４０、１５５０、及び１５６０は、図２において２００で図示されるようなスカラーデュアルコアユニット、又は、図４において図示される４００等のベクトルデュアルコアユニットであり得る。典型的なデュアルコア１５１０は、第１のＣＰＵ０  １５１１、第２のＣＰＵ１  １５１２を含み、その各々が、別個のＬ１Ｉ及びＬ１Ｄキャッシュ、共有レベル２（Ｌ２）キャッシュ１５１３、電力制御回路１５１４及びその他のサポート回路１５１４を含む。６個のデュアルコアユニット１５１０、１５２０、１５３０、１５４０、１５５０、及び１５６０は、マルチコア共有メモリコントローラ１５７０に接続される。マルチコア共有メモリコントローラ１５７０は、ＭＳＭＣコア１５７１、システムオンチップ（ＳＯＣ）インタフェース１５７２、電力回路１５７３、及び種々の標示されていないサポート回路を含む。マルチコア共有メモリコントローラ１５７０は、コンピュートクラスタ１５００とシステムメモリとの間のインタフェースとして働き、レベル３（Ｌ３）キャッシュ、外部インタフェース等を含み得る。マルチコア共有メモリコントローラ１５７０は、コンピュートクラスタ１５００の種々のパーツをＬ３  ＳＲＡＭ／キャッシュと相互接続する。標示されていないサポート回路は、ＳＯＣ毎に必要なＬ３  ＳＲＡＭ、クロック、ＤＦＴ（Ｄｄｅｓｉｇｎ  ｆｏｒ  ｔｅｓｔ）、電力管理、及びＳＯＣモジュールとインタフェースするために必要な集積ロジックを統合する。
【００８１】
デュアルコア１５１０、１５２０、１５３０、１５４０、１５５０、及び１５６０は、マルチコアバスアーキテクチャ（ＭＢＡ）を介して、ＭＳＭＣ  １５７０と相互接続される。ＭＢＡプロトコルは、従来の通信ハンドシェイクをクレジットシステムで置き換える。ＭＢＡクレジットシステムは、スレーブの、利用可能なクレジットの数をトラッキングすることによってトランザクションをアクセプトする能力を、マスターが正確にトラッキングするためのメカニズムを提供する。
【００８２】
マスターからスレーブに送られる各トランザクションは、マスターが少なくとも１つのクレジットを使うことを必要とする。クレジットは、マスターに、特定のタイプのトランザクションを送る権利を与える有限のリソースである。一般的に、クレジットは、トランザクションが、スレーブによって受け取られると常駐することになるスレーブにおける物理ストレージ位置を表す。
【００８３】
マスターは、所有しているクレジットの総数を正確にトラッキングすることが必要である。各トランザクションに対して、少なくとも１つのクレジットがマスターによって使われ（ｓｐｅｎｄ）、その結果、利用可能なクレジットの数が減少する。マスターが所与のクレジットタイプに対して、全ての利用可能なクレジットを使った場合、マスターは、そのクレジットタイプを必要とするトランザクションを送ることはできない。マスターが、トランザクションによって必要とされるより少ないクレジットを保有することもあり得る。特殊なタイプの利用可能なクレジットは、スレーブにおいて利用可能なデータバッファの数をトラッキングし得る。マスターは、必要とされるクレジットのタイプ及び数が不足しているトランザクションを開始することはできない。エージェントが、書き込み量を、保証されているスレーブ容量に対応する利用可能なクレジットタイプ及び数に限定するように、トランザクションを限定し得る。
【００８４】
スレーブは、クレジットタイプに対応する物理リソースがフリーにされると、マスターにクレジットをリターンバックしなければならない。このように、マスターはクレジットを使い、スレーブがクレジットをリターンする。システムにおけるクレジットの総数は固定され、それが閉鎖システムである。クレジットタイプに対するトランザクションタイプのマッピングは、実装依存であり、ＭＢＡプロトコルによって特定されない。
【００８５】
ＭＢＡプロトコルにおいてつくられるクレジットシステムは、マスターとスレーブとの間の交渉を変化させて、より高い性能、より高い稼働インタフェースをつくる。従来のハンドシェイクは、トランザクションをアクセプト及び処理する前に、スレーブがトランザクションを肯定応答することを必要とするので、そのようなトランザクションが、肯定応答を待っている間、バスをブロックし得る。従来の通信ハンドシェイクにおいて、マスターは、スレーブがトランザクションをアクセプトすることが可能か否かを知らないし、知る必要がない。マスターは、トランザクションをバス上に置き、要求をアサートする。スレーブは、肯定応答をアサートすることによって準備が整う任意の時点で、コマンドをアクセプトし得る。
【００８６】
クレジットシステムは、スレーブのトランザクションをアクセプトする能力をマスターがトラッキングすることを可能にし、そのため、ハンドシェイクから肯定応答が取り除かれる。マスターが各クレジットタイプに対して利用可能なクレジットの数をトラッキングするので、マスターは、スレーブによってアクセプトされることを保証されているトランザクションのみを送信する。
【００８７】
クレジットは、スレーブにおける物理リソースを表す有限のリソースである。クレジットは、マスターによって各トランザクションに対して使われる。クレジットは、スレーブが、クレジットタイプに関連する物理リソースをフリーにするために充分にトランザクションを処理すると、スレーブからマスターにリターンされなければならない。クレジットのリターンは、スレーブにおいて進行中のトランザクション処理の後、成され、このアクションをクリティカルパスから取り除く。これとは逆に、従来のハンドシェイクは、トランザクションを処理するために、クリティカルパスにスレーブ肯定応答を置く。
【００８８】
ＭＢＡクレジットシステムには、従来の通信ハンドシェイクに比べて２つの重要な利点がある。第１の利点は、トランザクションが、正確に１つのサイクルの間、通信チャネルを占有することである。これは、単一のトランザクションが、スレーブからの肯定応答を待っている間、チャネルをブロックすることを防止する。この結果、特に、同じ物理チャネルが複数の仮想又は物理マスターによって共有されているとき、スループットが一層高い通信チャネルとなる。第２の利点は、トランザクションを送信するための要件としての肯定応答信号を除去することによって、マスターからスレーブへトランザクションを送信するために必要とされる通信ハンドシェイクが短縮されることである。これはトランザクションをマスターからスレーブへ通信することの全体のレイテンシを削減し、その結果、より高性能な通信となる。
【００８９】
マルチコアバスアーキテクチャ（ＭＢＡ）は、マルチプロセッサプラットフォームにおけるデバイス間の内部通信のために設計された、高性能なポイントツーポイント単一方向バスプロトコルである。ＭＢＡプロトコルは下記の特性を有する。ＭＢＡプロトコルは、ポイントツーポイントである。正確に２つのエージェントが別個のトランザクションによって通信する。一方のエージェントがマスターとして機能し、他方のエージェントがスレーブとして機能する。単一のマスターと複数のスレーブとの間のブロードキャストはサポートされていない。ＭＢＡプロトコルは単一方向性である。コマンドトランザクションが、マスターによってのみ開始され得る。スレーブは、コマンドトランザクションを開始しない可能性があり得る。応答トランザクションは、第２の、ミラーリングされたインタフェース上で開始される。ＭＢＡプロトコルはノンブロッキングである。マスターによって発っせられたトランザクションは、単一サイクルにおいてスレーブによってアクセプトされなければならない。バス上のストールしているトランザクションに対する対策はない。ＭＢＡプロトコルはクレジットベースである。各トランザクションが、関連するクレジット及びクレジットタイプを有する。マスターは、トランザクションを開始し得る前に、適切なクレジットを有さなければならない。適切なクレジットタイプのクレジットの所有によって、スレーブがそのトランザクションをアクセプトすることが保証される。
【００９０】
プロトコルにおけるデバイス及びそれらの挙動を正確に識別するために、本明細書を通して、次の用語が用いられる。
【００９１】
エージェント：本明細書で定義されるＭＢＡプロトコルを用いて通信する単一デバイス又はロジックコントローラ。
【００９２】
エージェントペア：ＭＢＡプロトコルを用いて通信する２つのエージェント。
【００９３】
トランザクション：マスターからスレーブへのデータの転送を伴う可能性もあり、伴わない可能性もある、２つのエージェントであるマスターとスレーブとの間の読み出し、書き込み、又はメッセージ通信。
【００９４】
マスター：トランザクションを開始するエージェント。
【００９５】
スレーブ：マスターによって開始されるトランザクションを受け取るエージェント。
【００９６】
コアサイド：両方のエージェントが、（例えば、キャッシュ階層において）ハードウェアキャッシュを有し得る場合の、トランザクションにおいてＣＰＵコアに近い方のエージェント。
【００９７】
ファーサイド：両方のエージェントが、例えばキャッシュ階層において、ハードウェアキャッシュを有する場合の、トランザクションにおいてＣＰＵコアから遠い方のエージェント。
【００９８】
データフェーズ：トランザクションデータチャネル（ＴＤＣ）上で単一サイクルにおいて転送されるデータの単一のビート。
【００９９】
データ転送：単一ｄｉｄ［１１：０］に対するデータフェーズの完全な集合。最終データフェーズは、ｄｌａｓｔ信号のアサートによって示される。
【０１００】
データウィンドウ：ｄｄａｔａ［ＣＦＧ：０］信号の幅によって決定されるようなデータ転送の最大サイズ。デフォルトの幅は５１２ビットである。
【０１０１】
コマンドトランザクション：２つのエージェントの間でシーケンスを始めるトランザクションのタイプ。コマンドトランザクションが、一意のｃｉｄ［１１：０］によって区別され、データの転送を伴う可能性もあり、伴わない可能性もある。
【０１０２】
応答トランザクション：２つのエージェントの間でシーケンスを完了するトランザクションのタイプ。応答トランザクションは、コマンドＩＤ（ｃｉｄ［１１：０］）によって、前に開始されたコマンドトランザクションとマッチングされ、データの転送を伴う可能性もあり、伴わない可能性もある。
【０１０３】
書き込み応答：書き込みコマンドトランザクションのためのシーケンスを完了する書き込み応答チャネル（ＷＲＣ）上の専用応答。
【０１０４】
トランザクションシーケンス：ペアにされたインタフェーストポロジーを用いる２つのエージェント間の完全なプロトコルレベル通信。シーケンスは、一方のエージェントによって開始されるコマンドトランザクションで始まり、他方のエージェントからの応答トランザクションか又は書き込み応答のいずれかによって完了する。
【０１０５】
クレジット：マスターに、単一トランザクションを発する権利を与える単一原子単位。アクセプトの肯定応答を必要とせずに、スレーブが単一サイクルにおいてアクセプトすることを保証する。クレジットはクレジットタイプによって分類される。クレジットは、マスターによって保有され、使われる。クレジットは、充分な処理が成された後にスレーブによってリターンされ、それによって、マスターは同一クレジットタイプの新しいトランザクションを開始し得る。
【０１０６】
クレジットタイプ：使われる又はリターンされるクレジットの種類を識別するためにマスターによって用いられるクレジットの、総称的に定義されるが特定的に実装される分類。クレジットタイプは、典型的に、スレーブエージェントにおける特定の物理リソースに関連する。マスターに対して利用可能なリソースの個々に割り当て可能なスロットの数は、そのクレジットタイプに対する利用可能なクレジットの数に正確に等しい。マスター及びスレーブは、各総称的なクレジットタイプの厳密な定義において合意を有さなければならない。
【０１０７】
クレジットカウント：使われるべき、マスターにとって利用可能な所与のクレジットタイプのクレジットの現在の数。
【０１０８】
クレジットスぺンド：トランザクション属性チャネル（ＴＡＣ）上の有効なトランザクションを識別するｃｖａｌｉｄ信号のアサート、及びｃｃｒｅｄｉｔ［ＣＦＧ：０］信号上の１つ又は複数の有効なクレジットタイプのアサートを介して、ＴＡＣ上でトランザクションを開始するアクション。マスターは、クレジットスぺンドが許可される前に、各関連するクレジットタイプに対して少なくとも１つのクレジットを有さなければならない。マスターは、各クレジットスぺンドに対して関連するクレジットタイプを１つ減らさなければならない。クレジットスぺンドは、暗示的なコマンドレディを備えるコマンド要求と等価である。下記に説明するように、複数の異なるタイプのクレジットがあり得る。クレジットスぺンドは、トランザクションに対応するクレジットタイプのものでなければならない。また、クレジットスぺンドは、トランザクションをサポートするために充分な数のクレジットを含まなければならない。このように、データ転送の場合において、マスターによって費やされるクレジットの数は、データ長、及び受け取り側のスレーブのバッファ容量に対応し得る。
【０１０９】
クレジットリターン：前のクレジットスぺンドに応答して、スレーブからマスターにクレジットをリターンするアクション。マスターは、クレジットリターンに応答して、関連するクレジットタイプを増加させる。
【０１１０】
クレジットリミット：リセットの際、マスターに対して利用可能な特定のクレジットタイプに対するクレジットの最大数。クレジットリミットは、第１のクレジットリターンを受け取る前にマスターによって開始され得る個々のクレジットスぺンドアクションの最大数を表す。
【０１１１】
チャネル：トランザクションを記述すること又はデータを転送すること等の、共通の目的を集合的に果たすインタフェース上の信号の集合。
【０１１２】
クレジットされた（ｃｒｅｄｉｔｅｄ）チャネル：クレジットを用いるチャネル。これには、クレジットスぺンド及びクレジットリターンの両方のためのシグナリングが含まれる。
【０１１３】
キャッシャビリティドメイン：それに対して割り当てが可能であることをトランザクションが指示し得る、潜在的にキャッシュ階層の異なるレベルにあるキャッシュの集合である。
【０１１４】
シェアラビリティドメイン：潜在的にキャッシュ階層の異なるレベルにあるキャッシュの集合である。これを備えると、コヒーレントなトランザクションが、コヒーレンスプロトコルの規則に従うことを期待される。
【０１１５】
ＭＢＡプロトコルは、好ましくは、エージェントがＭＥＳＩハードウェアキャッシュコヒーレンスプロトコルを実装するためのシグナリングサポートを提供する。サポートされたトランザクションタイプ及び応答状態信号は、ＡＣＥとして知られるＡＲＭ  ＡＸＩコヒーレンス拡張に基づく。コヒーレンスプロトコルは、データを変更する前にキャッシュライン精度で排他的所有権を執行することによって、同じシェアラビリティドメインにおけるキャッシュがコヒーレントなままであるように規定する。コヒーレンスプロトコルの完全な取り扱いは本明細書の範囲外であるが、ここでは、ＭＢＡプロトコルにおいて用いられるコヒーレンスシグナリングのための背景を提供するために概要を示す。
【０１１６】
標準ＭＥＳＩキャッシュコヒーレンスプロトコルは、キャッシュラインのための４つの状態、即ち、変更、排他的、共有、及び無効、を提供する。
【０１１７】
変更：変更された状態を有するキャッシュラインであり、メインメモリに対して変更されている。このキャッシュラインは、同じシェアラビリティドメインにおいて、他のどのキャッシュにも存在しない。
【０１１８】
排他的：排他的状態を有するキャッシュラインであり、メインメモリに対して変更されていないが、このキャッシュラインは、同じシェアラビリティドメインにおいて、他のどのキャッシュにも存在しない。
【０１１９】
共有：共有状態を有するキャッシュラインであり、メインメモリに対して変更されていない。このキャッシュラインは、同じシェアラビリティドメインにおいて、他のキャッシュに存在し得る。
【０１２０】
無効：無効状態を有するキャッシュラインであり、キャッシュに存在しない。そのようなキャッシュラインにストアされた如何なるデータも無効であり、アクセスされるべきではない。
【０１２１】
プロトコルにおけるキャッシュコヒーレンスサポートは、トランザクション間に複数の依存関係を導入することを必要とする。例えば、コヒーレントＲｅａｄＣｌｅａｎトランザクションの結果、１つ又は複数のＣｌｅａｎＳｈａｒｅｄスヌープトランザクションが生成し得、このＣｌｅａｎＳｈａｒｅｄスヌープトランザクションは、ＲｅａｄＣｌｅａｎトランザクションの適法な完了の前に完了しなければならない。このケースでは、ＲｅａｄＣｌｅａｎは、完了するためにＣｌｅａｎＳｈａｒｅｄに依存する。ＡＣＥ仕様は、ＡＸＩプロトコルに対するコヒーレンス拡張に関連する多くのそのような依存関係を詳述している。
【０１２２】
依存関係は、一つのトランザクションが別のトランザクションが完了するまで、ブロックしなければならない場合のような、ブロッキングシナリオをつくる。また、コヒーレントトランザクションの順も、ブロッキングシナリオをつくる。例えば、オーバーラップするアドレスに対する２つのコヒーレント書き込みトランザクションは、何らかの方式で順序付けされなければならない。一方の書き込みトランザクションが他方によってブロックされる。
【０１２３】
デッドロックは、解消できない相互依存関係が存在する状態である。これは、依存性グラフにおけるループと考えることもできる。システムデッドロックを防止するために、ブロッキング規則が確立されなければならない。ＭＢＡプロトコルにおける全てのトランザクションが、ブロッキングトランザクションか又はノンブロッキングトランザクションのいずれかとして分類され得る。
【０１２４】
ブロッキングトランザクションは、下記の全てにより特徴付けられる。ブロッキングトランザクションは、１つ又は複数のスヌープコマンドトランザクションを生成することを許可されている。ブロッキングトランザクションは、完了するために、スヌープコマンドトランザクションの完了に依存することを許可されている。ブロッキングトランザクションは、完了するために、ノンブロッキングトランザクションの完了に依存することを許可されている。ブロッキングトランザクションは、完了するために、ブロッキングトランザクションの完了に依存することを許可されている。
【０１２５】
ノンブロッキングトランザクションは、下記の全てにより特徴付けられる。ノンブロッキングトランザクションは、スヌープコマンドトランザクションを生成することを許可されていない。ノンブロッキングトランザクションは、スヌープコマンドトランザクションの完了に依存することを許可されている。ノンブロッキングトランザクションは、ブロッキングトランザクションの完了に依存することを許可されていない。ノンブロッキングトランザクションは、ノンブロッキングトランザクションの完了に依存することを許可されている。
【０１２６】
後述の表６は、ＭＢＡプロトコルにおける各トランザクションを、ブロッキング又はノンブロッキングとして識別する。
【０１２７】
単一のＭＢＡインタフェースが、３つの別個のチャネルに分割され、それらは、マスターからスレーブへの単一方向データフローを備える完全なトランザクションのために共に動作する。３つのＭＢＡインタフェースチャネルは、要約すると次のようになる。トランザクション属性チャネル（ＴＡＣ）は、マスターからスレーブへの単一のトランザクションのための全ての属性を特定するクレジットされたチャネルである。トランザクションデータチャネル（ＴＤＣ）は、マスターからスレーブへのデータ転送に用いられるクレジットされない（ｎｏｎ−ｃｒｅｄｉｔｅｄ）チャネルである。各ＴＤＣは、ＴＡＣ上で前に又は同時に開始されたトランザクションにマッチングするＩＤを含む。書き込み応答チャネル（ＷＲＣ）は、スレーブに書き込み応答を送るために、マスターによって用いられるクレジットされたチャネルである。各ＷＲＣは、ペアにされたインタフェーストポロジーにおける反対側のＴＡＣ上で前に開始されたトランザクションにマッチングするＩＤを含む。
【０１２８】
図１６は、単一のＭＢＡインタフェースのための各チャネルに対する信号方向を図示する。図１６は、マスターエージェント１６１０及びスレーブエージェント１６２０を含む。データフロー１６１１によって示されるように、マスターエージェント１６１０は、スレーブエージェント１６２０にシグナリングする。マスターエージェント１６１０は、ＴＡＣ  １６１２、ＴＤＣ  １６１３、及びＷＲＣ  １６１４を介して、信号をスレーブ１６２０に送信する。
【０１２９】
図１７は、ペアにされたインタフェーストポロジー（ＰＩＴ）における各チャネルを図示する。完全なトランザクションシーケンスを実施するために、エージェントペアは、ミラーリングされたペア構成の２つの別個のＭＢＡインタフェースを用いて通信しなければならない。これは対インタフェースと称される。対インタフェースは、２つのエージェント間で双方向のデータ転送をサポートする。図１７は、コアサイドエージェント１７１０及びファーサイドエージェント１７２０を図示する。コアサイドエージェント１７１０は、ＣＰＵコアに近い方のエージェントである。ファーサイドエージェント１７２０は、ＣＰＵコアから遠い方のエージェントである。対インタフェーストポロジーにおいて、一方のエージェントは常にコアサイドエージェントであり、他方のエージェントは常にファーサイドエージェントである。
【０１３０】
第１のインタフェースは、データフロー１７１１によって示されるように、ファーサイドエージェント１７２０に対するコマンド及び応答トランザクションの両方を開始するために、コアサイドエージェント１７１０によって用いられる。これらのトランザクションでは、コアサイドエージェント１７１０はマスターであり、ファーサイドエージェント１７２０はスレーブである。コアサイドエージェント１７１０は、ＴＡＣ  １７１２、ＴＤＣ  １７１３、及びＷＲＣ  １７１４を介して、信号をファーサイドエージェント１７２０に送信する。
【０１３１】
第２の、ミラーリングされたインタフェースは、データフロー１７２１によって示されるように、コアサイドエージェント１７１０に対するコマンド及び応答トランザクションの両方を開始するために、ファーサイドエージェント１７２０によって用いられる。ファーサイドエージェント１７２０は、ＴＡＣ  １７２２、ＴＤＣ  １７２３、及びＷＲＣ  １７２４を介して、信号をコアサイドエージェント１７１０に送信する。
【０１３２】
図１８は、別の例示の対インタフェーストポロジー（ＰＩＴ）における各チャネルを図示する。図１８は、コアサイドエージェント１８１０及びファーサイドエージェント１８２０を図示する。下記の図１８は、対インタフェーストポロジーを示す。この例では、読み出しシーケンスが示される。コアサイドエージェント１８１０は、マスターとして機能しながら、インタフェース上で読み出し演算を開始する。そのような読み出し演算は、コアサイドエージェント１８１０からファーサイドエージェント１８２０へのデータ転送を必要としない。このように、このシーケンスに対して、トランザクションデータチャネル（ＴＤＣ）がコアサイドエージェント１８１０によって用いられない。データフロー１８１１に従って、コアサイドエージェント１８１０は、マスターとして、ＴＡＣ  １７１２を介して、信号をファーサイドエージェント１８２０に送信する。トランザクションシーケンスを完了するために、ファーサイドエージェント１８２０は、マスターとして（データフロー１８２１に従って）ＴＡＣ  １８２２を介して読み出し応答トランザクションを開始し、読み出されたデータをＴＤＣ  １８２３上に供給する。
【０１３３】
対インタフェーストポロジーは、各エージェントが、コマンド及び応答トランザクションの両方を開始することを許可し、必要に応じ他のエージェントにデータを転送する。データフローは、マスターからスレーブへの単一の方向に制約される。この理由により、各エージェントは、１つのインタフェース上でマスターとして機能し、第２のミラーリングされたインタフェース上でスレーブとして機能する。
【０１３４】
トランザクション属性チャネル（ＴＡＣ）は、単一のクレジットされたトランザクションを開始するために必要な全ての属性を特定するクレジットされたチャネルである。トランザクション属性を形成する全てのＴＡＣ信号は、正確に１サイクルの間にマスターによってアサートされ、同じサイクルにおいてスレーブによってアクセプトされなければならない。ＴＡＣ上でのトランザクションの開始は、クレジットの使用を必要とする。クレジットの使用は、スレーブが、トランザクションをアクセプトするために内部物理リソース内にスペースを有することを保証する。結果として、スレーブは、ＴＡＣ上でアサートされたあらゆる新しいトランザクションをアクセプトすることを要求される。
【０１３５】
マスターは、利用可能なクレジットによってのみ制限されるが、サイクル毎に新たなトランザクションを開始し得る。トランザクションは、データの転送を必要とする可能性も、必要としない可能性もある。ＴＡＣ上で開始されたトランザクションがデータの転送を必要とする場合、トランザクションデータチャネル（ＴＤＣ）が用いられる。
【０１３６】
ｃｖａｌｉｄのアサートと共に、マスターによって使われる全てのクレジットは、ｃｃｒｅｄｉｔ［ＣＦＧ：０］信号によって決定されるクレジットタイプを有する。トランザクションがハードウェアリソースから成功裏に除去されると、スレーブは、ｃｒｅｔｕｒｎ［ＣＦＧ：０］信号を用いて、同じタイプのクレジットをマスターにリターンバックしなければならない。各インタフェースに対して全てのＴＡＣ信号が必要とされるわけではない。表５は、好ましい実施形態に従った、トランザクション属性チャネル信号を列挙する。
【表５】
2020191122.tif 000007
【０１３７】
信号ｃｖａｌｉｄ、ｃｃｒｅｄｉｔ、ｃｉｄ、ｃｔｙｐｅ、ｃｍｓｔｉｄ、ｃｄａｔａ、ｃｐｒｉｏｒｉｔｙ、及びｃｓｂａｎｄは、全てのトランザクションにおいて用いられ得る。信号ｃａｄｄｒｅｓｓ、ｃｍｅｍｔｙｐｅ、ｃｐａｂｌｅ、ｃｃｉｎｎｅｒ、ｃｃｏｕｔｅｒ、ｃｓｄｏｍａｉｎ、ｃｂｙｔｅｃｎｔ、ｃｅｍｕｄｂｇ、及びｃｓｅｃｕｒｅは、コマンドトランザクションにおいてのみ用いられ得る。信号ｃｃｏｈ、ｃｄｉｒｔｙ、ｃｓｔａｔｕｓ、及びｃｔｒａｃｅは、応答トランザクションにおいてのみ用いられ得る。信号ｃｒｅｔｕｒｎは、クレジットリターントランザクションにのみ用いられ得る。
【０１３８】
下記は、トランザクション属性チャネル上の上述された信号の説明である。表５に記載されるように、幾つかの信号は必要として指定され、幾つかは任意として指定される。チャネルがインタフェース上に存在する場合、必要とされる信号が存在しなければならない。構成にわたって全チャネルが除去される場合、必要／任意の指定は適用可能ではない。
【０１３９】
ｃｖａｌｉｄ信号は、ＴＡＣ上の有効なトランザクションの存在を識別する。０はトランザクションがないことを示す。１は有効なトランザクションがバス上にあることを示す。
【０１４０】
ｃｃｒｅｄｉｔ［ＣＦＧ：０］信号は、このトランザクションによってクレジットが使われていることを識別するビットベクトルである。利用可能なクレジットタイプの数、及び従って、この信号の幅は、構成オプションである。好ましい実施形態において、ＭＢＡプロトコルは、ジェネリック整数クレジットタイプを定義する。クレジットタイプは、ゼロから漸増的に番号が付される符号なしの整数である。ｃｒｅｔｕｒｎ［ＣＦＧ：０］信号の幅は、ｃｃｒｅｄｉｔの幅にマッチングしなければならない。トランザクション属性チャネル（ＴＡＣ）上のトランザクションの存在を示すようにｃｖａｌｉｄがアサートされるとき、ｃｃｒｅｄｉｔは、アサートされた少なくとも１つのビットと共に非ゼロ値を１にキャリーする必要がある。複数のクレジットが、単一のトランザクションと共に使われ得る。これはｃｃｒｅｄｉｔビットベクトルにおいて複数のビットをアサートすることによって達成される。マスター及びスレーブによるクレジットタイプの解釈及び物理リソースへのマッピングは、実装固有である。
【０１４１】
ｃａｄｄｒｅｓｓ［４７：０］信号は、現在のトランザクションに対する開始アドレスを識別する。アドレスは、仮想アドレス、物理アドレス、又は他の任意の中間アドレス表現であり得る。アドレスは、整合及び非整合トランザクションの両方に対するトランザクションのための開始バイトを特定する。この信号は、マスターがコマンドトランザクションを開始するインタフェース上で必要とされる。
【０１４２】
ｃｍｓｔｉｄ［１１：０］信号は、このトランザクションを開始するシステムマスターを一意的に識別する。ｃｍｓｔｉｄ信号は、正確なセキュリティ保護チェックを可能にするために、現在のマスターの外で発するトランザクションに対して正確に伝搬されるべきである。
【０１４３】
ｃｉｄ［１１：０］信号は、現在のトランザクションを一意的に識別する。コマンドトランザクションがｃｉｄを確立する。トランザクションデータチャネル（ＴＤＣ）上の対応するデータ転送は、ｄｉｄ［１１：０］信号を介してｃｉｄ信号をミラーリングする。後続の応答トランザクション及び書き込み応答は、ｃｉｄ及びｗｉｄ［１１：０］信号を介してｃｉｄをミラーリングする。
【０１４４】
ｃｔｙｐｅ［５：０］信号は、現在のトランザクションのタイプを識別する。表６は、６ビットｃｔｙｐｅ信号の好ましいデコーディングを列挙する。トランザクションタイプは、トランザクションのカテゴリを識別する３つの最上位ビット、及びカテゴリ内の特定のタイプを識別する３つの最下位ビットを用いてエンコードされる。
【表６】
2020191122.tif 000008
他のあり得る全てのコーディングは予備であり、好ましい実施形態において用いられていない。
【０１４５】
ｃｍｅｍｔｙｐｅ［１：０］信号は、仮想メモリ翻訳によって決定されるように、所与のトランザクションアドレスに対するメモリタイプを識別する。３つのサポートされたメモリタイプは、異なる挙動上の意味を有する。００のコーディングは、デバイスメモリタイプを示す。０１のコーディングは、通常のライトバックキャッシュメモリタイプを示す。１０のコーディングは、通常のライトスルーキャッシュメモリタイプを示す。１１のコーディングは予備であり、好ましい実施形態において用いられていない。
【０１４６】
ｃｐａｂｌｅ信号は、仮想メモリ翻訳によって決定されるように、トランザクションアドレスがプリフェッチ可能か否かを識別する。プリフェッチ可能とマークされたメモリ領域は、ハードウェアプリフェッチストリームの開始に貢献し得る。０は、プリフェッチ不可能を示す。１はプリフェッチ可能を示す。
【０１４７】
ｃｃｉｎｎｅｒ［１：０］信号タイプは、仮想メモリ翻訳によって決定されるように、トランザクションアドレスに対する内部キャッシャビリティドメインに対応するキャッシュ割り当て属性を識別する。
【０１４８】
ｃｃｏｕｔｅｒ［１：０］信号は、仮想メモリ翻訳によって決定されるように、トランザクションアドレスに対する外部キャッシャビリティドメインに対応するキャッシュ割り当て属性を識別する。
【０１４９】
キャッシュ階層（レベル１、レベル２、レベル３キャッシュ等）は、内部ドメインと外部ドメインの、２つの相互に排他的なキャッシャビリティドメインに分けられる。キャッシュ割り当てポリシーは、各ドメインに対して別個に確立され、仮想メモリ翻訳によってストアされるメモリ属性において記録される。内部キャッシャビリティドメインは、ＣＰＵに最も近いキャッシュ、典型的にレベル１及びレベル２キャッシュ、を含む。外部キャッシャビリティドメインは、内部ドメインにおいてキャッシュを含まず、最終レベルキャッシュ等の内部ドメインを超えるキャッシュを含む。内部及び外部キャッシュドメインの解釈は実装依存であり、幾つかの実装は両ドメインを同一として取り扱うことを選択し得る。
【０１５０】
表７は、同一であるｃｃｉｎｎｅｒ及びｃｃｏｕｔｅｒのコーディングを列挙する。
【表７】
2020191122.tif 000009
【０１５１】
ｃｓｄｏｍａｉｎ信号は、仮想メモリ翻訳によって決定されるように、トランザクションに対する、シェアラビリティドメイン、内部、又は外部を識別する。シェアラビリティドメインは、このトランザクションに対してコヒーレントに維持されなければならないキャッシュを識別する。
【０１５２】
内部及び外部の２つのシェアラビリティドメインがある。２つのドメインは、相互排他的ではない。外部ドメインは、内部ドメインにおいてキャッシュを含む。内部共有ドメインは、ＣＰＵに最も近いキャッシュ、典型的にレベル１及びレベル２キャッシュ、を含む。外部共有ドメインは、最終レベルキャッシュ等の内部ドメインを超えるものに加えて、内部ドメインにおけるキャッシュを含む。内部及び外部共有ドメインの解釈は実装依存であり、幾つかの実装は、両ドメインを同一として取り扱うことを選択し得る。０は内部共有ドメインを示す。１は外部共有ドメインを示す。ｃｓｄｏｍａｉｎは、シェアラブルトランザクションに対してのみ有効である。ｃｓｄｏｍａｉｎ信号は、ＲｅａｄＮｏＳｎｏｏｐ及びＷｒｉｔｅＮｏＳｎｏｏｐトランザクションタイプに対して無視される。
【０１５３】
ｃｃｏｈ［１：０］信号は、読み出し応答又はスヌープ応答トランザクションに対するコヒーレンス状態情報を識別する。コヒーレンス状態情報は、開始側マスターに、キャッシュラインの最終コヒーレント状態を通知するために用いられる。読み出し応答トランザクションでは、ｃｃｏｈは、読み出しが完了したときに、割り当てキャッシュにおけるラインのコヒーレント状態を示す。スヌープ応答トランザクションでは、ｃｃｏｈは、スヌープが完了したときに、スヌープされたキャッシュにおけるラインのコヒーレント状態を示す。表８は、ｃｃｏｈの有効なエンコーディングを列挙する。
【表８】
2020191122.tif 000010
【０１５４】
ｃｄｉｒｔｙ信号は、この応答トランザクションに関連するキャッシュラインデータ転送が、メインメモリに対してダーティか又はクリーンかを識別する。ｃｄｉｒｔｙ信号は、スヌープ側のマスターに、スヌープ応答データがメインメモリにライトバックされる必要があるか否かを示すために用いられる。ｃｄｉｒｔｙ信号は、オプションで、ＳｈａｒｅｄＤｉｒｔｙ  ＭＥＳＩ状態を実装するために、読み出し演算と共に用いられ得る。ｃｄｉｒｔｙ信号は、応答トランザクションにのみ適用し、コマンドトランザクションに対する意味を搬送せず、コマンドトランザクションに対して、０に関連付けられなければならない。０のｃｄｉｒｔｙ信号は、キャッシュラインデータ転送がメインメモリに対して、変更されていないことを示す。１のｃｄｉｒｔｙ信号は、キャッシュラインデータ転送がメインメモリとは異なることを示す。これは、このキャッシュラインが、今後どこかの時点で、メインメモリにライトバックされなければならないことを示す。
【０１５５】
ｃｄａｔａ信号は、このトランザクションが、関連するデータ転送を伴うか否かを識別する。読み出し演算は、読み出し演算がデータ転送を含まないので、この信号をアサートすることはない。後続の読み出し応答トランザクションは、ｃｄａｔａ信号をアサートし得る。０のｃｄａｔａ信号は、トランザクションが転送データを含まないことを示す。１のｃｄａｔ２信号は、トランザクションが関連データを含むことを示す。従って、書き込みコマンドトランザクションは、ｃｄａｔａ＝１をアサートすることが必要とされる。読み出し応答トランザクションは、ｃｓｔａｔｕｓ［１：０］において示される状態に関係なく、ｃｄａｔａ＝１をアサートすることが必要とされる。
【０１５６】
ｃｂｙｔｅｃｎｔ［６：０］信号は、トランザクションの総サイズを識別する。最大の適法サイズは１２８バイトである。全てゼロのｃｂｙｔｅｃｎｔは、１２８バイトトランザクションを示す。ｃｂｙｔｅｃｎｔのこのコーディングは、スヌープ及びビクティムトランザクションに対して必要とされる。そうでない場合、ｃｂｙｔｅｃｎｔ信号の数は、データ転送バイトの数に等しい。ゼロサイズのトランザクションは、ｃｂｙｔｅｃｎｔ信号によって指定することができない。しかしながら、書き込みトランザクションは、如何なるバイトも変更しない書き込みトランザクションを実施するために、ＴＤＣ上のｄｂｙｔｅｎ［ＣＦＧ：０］信号をゼロ設定し得る。
【０１５７】
ｃｓｔａｔｕｓ［１：０］信号は、応答トランザクションに対するトランザクション完了状態を識別する。この信号は、応答トランザクションに対してのみ有効であり、コマンドトランザクションに対して無視される。表９は、有効なエンコーディングを列挙する。
【表９】
2020191122.tif 000011
【０１５８】
ｃｔｒａｃｅ［３：０］信号は、読み出し応答トランザクションに対するトレース情報を識別する。この情報は、エミュレーション／デバッグアーキテクチャによって用いられる。トレース情報は、トランザクションがサービスされたメモリ階層におけるレベルを記録する。トレース情報は、トランザクションの成功／失敗状態とは関係なく記録される。成功／失敗状態は、ｃｓｔａｔｕｓ［１：０］信号においてキャプチャされる。信号エンコーディングは、エミュレーション／デバッグアーキテクチャ仕様によって指定されたものにマッチングするように定義される。表１０は、有効なエンコーディングを列挙する。
【表１０】
2020191122.tif 000012
【０１５９】
ｃｅｍｕｄｂｇ信号は、現在のトランザクションを、エミュレーショントランザクションか又は非エミュレーショントランザクションとして識別する。０のｃｅｍｕｄｂｇ信号は、通常の非エミュレーショントランザクションを示す。１のｃｅｍｕｄｂｇ信号は、エミュレーショントランザクションを示す。
【０１６０】
ｃｓｅｃｕｒｅ信号は、現在のトランザクションのセキュリティレベルを識別する。０のｃｓｅｃｕｒｅ信号は、非セキュアトランザクションを示す。１のｃｓｅｃｕｒｅ信号は、セキュアトランザクションを示す。
【０１６１】
ｃｐｒｉｖ［１：０］信号は、現在のトランザクションの特権レベルを識別する。表１１は、有効なエンコーディングを列挙する。
【表１１】
2020191122.tif 000013
【０１６２】
ｃｐｒｉｏｒｉｔｙ［２：０］信号は、現在のトランザクションの優先レベルを識別する。この信号は、トランザクションを仲裁するためにスレーブによって用いられる。下位の数値は、より高い優先度を示す。従って、０００のｃｐｒｉｏｒｉｔｙ［２：０］信号は、最高優先度を示し、１１１のｃｐｒｉｏｒｉｔｙ［２：０］信号は、最低優先度を示す。
【０１６３】
ｃｓｂａｎｄ［ＣＦＧ：０］信号は、応答上でミラーリングされないオプションのユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。ｃｓｂａｎｄ信号は、トランザクション属性チャネル（ＴＡＣ）によってのみ用いられ、トランザクションシーケンス演算の一部としてミラーバックされる必要がない。
【０１６４】
ｃｍｓｂａｎｄ［ＣＦＧ：０］信号は、応答上でミラーリングされなければならないオプションのユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。コマンドトランザクションのためのｃｍｓｂａｎｄ信号は、トランザクションシーケンス演算の一部として応答トランザクションがアサートされるとき、同じ値を用いてミラーリングされなければならない。
【０１６５】
ｃｒｅｔｕｒｎ［ＣＦＧ：０］信号は、それに対してこのサイクルで単一のクレジットがリターンされる、クレジットタイプを識別する。利用可能なクレジットタイプの数、従って、この信号の幅は、構成オプションである。ＭＢＡプロトコルは、ジェネリック整数クレジットタイプを定義する。マスター及びスレーブによるクレジットタイプの解釈は、実装固有である。ｃｒｅｔｕｒｎ信号幅は、候補となり得るクレジットタイプの数に正確にマッチングする。ｃｒｅｔｕｒｎ信号は、インタフェース上で使用されている各クレジットタイプに対して１ビットを備えるビットベクトルとして解釈される。ｃｒｅｔｕｒｎ信号の各ビットは、各サイクルでスレーブによって独立してアサートされ得る。ｃｒｅｔｕｒｎ信号における任意のビット上の１の値は、そのタイプの単一のクレジットのスレーブからマスターへのリターンを示す。或るサイクルでｃｒｅｔｕｒｎ信号における複数のビットがアサートされる場合、信号においてアサートされた各ビットに対して、１つのクレジットがスレーブからマスターにリターンされる。インタフェース上の各クレジットタイプに対して、スレーブからマスターに、各サイクルで最大１つのクレジットがリターンされ得る。
【０１６６】
トランザクションデータチャネル（ＴＤＣ）は、トランザクション属性チャネル（ＴＡＣ）上で開始されるトランザクションに対して、マスターからスレーブへのデータ転送を実施するために用いられる、クレジットされないチャネルである。ＴＤＣは、ＴＡＣとは独立してマスターされる。これらの２つのチャネルは、ＴＡＣに存在するｃｉｄ［１１：０］信号、及びＴＤＣに存在するｄｉｄ［１１：０］信号を介してリンクされる。データ転送は、１つ又は複数のデータフェーズに分割される。ＴＤＣ上の信号は、各データフェーズに対して正確に１つのサイクルの間、マスターによってアサートされ、同じサイクルにおいてスレーブによってアクセプトされなければならない。
【０１６７】
ＴＤＣ上のデータ転送内の個々のデータフェーズは、厳密に線形順に成される必要があるが、連続したサイクルで成される（例えば、バーストする）必要はない。データフェーズの間の空サイクルが、ＴＤＣ上で許可される。単一のトランザクションの最終データフェーズは、ｄｌａｓｔ信号のアサートによって示される。ＴＤＣの全体的な利用を改善するために、データ転送内のデータフェーズが厳密に線形順に生じる限り、マスターは異なるトランザクションからのデータフェーズをインターリーブし得る。データウィンドウのサイズ、及び従ってｄｄａｔａ信号は、６４、１２８、２５６、５１２ビット幅に構成可能である。デフォルトは５１２ビットである。各データフェーズは、ｄｂｙｔｅｎ［ＣＦＧ：０］信号によって指示されるように、データウィンドウの全体か又は一部のいずれかを転送し得る。各インタフェースに対して、全てのＴＤＣ信号が必要とされるわけではない。表１２は、トランザクションデータチャネルの信号を列挙する。
【表１２】
2020191122.tif 000014
【０１６８】
表１２のサイズの列では、ＣＦＧは、この信号が構成可能であることを示す。括弧内の数字は、ビットでのデフォルトサイズである。ｄｗｏｒｄ、ｄｐａｒｉｔｙ、及びｄｅｄｃ信号のサイズは、ｄｄａｔａ信号のサイズから導き出される。ｄｗｏｒｄ信号の幅は、構成されたデータウィンドウサイズ、及び１２８バイト（１０２４ビット）の最大データ転送の両方に基づいて決定される。最大データ転送サイズは、データウィンドウのサイズに関係なく、１２８バイトで固定される。
【０１６９】
ｄｖａｌｉｄ信号は、トランザクション属性チャネル（ＴＡＣ）上の同じサイクルか又は前のサイクルのいずれかにおいて開始されたトランザクションに対する、ＴＤＣ上の有効なデータフェーズの存在を識別する。０のｄｖａｌｉｄ信号は、現サイクルにデータがないことを示す。１のｄｖａｌｉｄ信号は、現サイクルが有効データを含むことを示す。
【０１７０】
ｄｉｄ［１１：０］信号は、現在のデータ転送に対応するＴＡＣトランザクションを一意的に識別する。異なるデータ転送に対するデータフェーズがインターリーブされ得るが、ｄｉｄ信号はデータ転送における全てのデータフェーズに対して同じでなければならない。
【０１７１】
ｄｔｙｐｅ信号は、データ転送が、コマンドに対応するか又は応答トランザクションに対応するかを識別する。この情報は、同じマスターがｄｍｓｔｉｄ［１１：０］及びｄｉｄ［１１：０］の両方を共有する、コマンド及び応答データ転送を一意的に区別するために必要である。０のｄｔｙｐｅ信号は、現トランザクションがコマンドトランザクションであることを示す。１のｄｔｙｐｅ信号は、現トランザクションが応答トランザクションであることを示す。
【０１７２】
ｄｌａｓｔ信号は、現在のデータ転送が、現在のバストランザクションの最後のデータであるか否かを識別する。現在のバストランザクションのデータは、データバスの利用可能なライン上で送信するには大き過ぎる可能性がある。この場合、データは、複数のサイクルにおいて転送される。０のｄｌａｓｔ信号は、現トランザクションが最後のデータ転送ではないことを示す。１のｄｌａｓｔ信号は、現トランザクションが最後のデータ転送であることを示す。
【０１７３】
ｄｓｔａｔｕｓ［１：０］は、現在のデータ転送に対するデータ状態を識別する。この信号は、応答トランザクションに対してのみ適用可能であり、書き込みコマンドトランザクションに対して無視される。この信号は、データ転送における各データフェーズに対して別個にアサートされる。この信号は、データ転送における各データフェーズに対して同じである必要はない。これにより、各データフェーズに対して別個の状態をリターンするために、細分化された読み出しリターンが可能となる。ｄｓｔａｔｕｓ信号は、表９に列挙されたｃｓｔａｔｕｓ信号と同じコーディングを有する。
【０１７４】
ｄｂｙｔｅｎ［ＣＦＧ：０］信号は、現在のデータフェーズに対するｄｄａｔａ［ＣＦＧ：０］ウィンドウにおける有効バイトレーンを識別する。ｄｄａｔａ［ＣＦＧ：０］バス上の全ての有効バイトは、ｄｂｙｔｅｎビットベクトルの対応するビットにおいて１によって識別される。全てゼロのｄｂｙｔｅｎは、現在のデータフェーズにおいて有効データが転送されていないことを示す。ｄｂｙｔｅｎ信号は、書き込みコマンドトランザクションに対する書き込みｂｙｔｅｎか、又は読み出しリターン／スヌープリターントランザクションに対する読み出しｂｙｔｅｎのいずれかとして働き得、ｄｖａｌｉｄがアサートされた全てのサイクルに対して有効である必要がある。ｄｂｙｔｅｎ信号が、連続する１の間にゼロを有する、ギャッピー（ｇａｐｐｙ）データフェーズが、書き込みコマンドトランザクションに対してサポートされる。これは、キャッシュトランザクションに対する、書き込みバッファフラッシュ及び部分的ライン書き込みを意図している。ｄｂｙｔｅｎ信号はオプションである。ｄｂｙｔｅｎ信号が存在しない場合、全てのバイトレーンは、データ転送における各データフェーズに対して有効であると仮定される。
【０１７５】
ｄｄａｔａ［ＣＦＧ：０］信号は、現在のデータフェーズに対するデータを識別する。データバイトは、アドレスによって固定バイトレーンに整合させられ、全てのデータが、ｄｂｙｔｅｎ［ＣＦＧ：０］ビットベクトルによってクオリファイされる。非整合データ又はギャッピーデータ（例えば、書き込みマージデータ）は、ｄｂｙｔｅｎ［ＣＦＧ：０］ビットベクトルにおける必要なビットを設定することによって示される。
【０１７６】
ｄｗｏｒｄ［ＣＦＧ：０］信号は、現在のデータフェーズが適用するデータ転送全体におけるデータウィンドウを識別する。データウィンドウのサイズより大きいデータ転送は、複数のデータフェーズを必要とし得る。ｄｗｏｒｄ信号は、現在のｄｄａｔａ［ＣＦＧ：０］及びｄｂｙｔｅｎ［ＣＦＧ：０］信号が適用するデータウィンドウを識別するために用いられる。データ転送は線形順に成される必要がある。従って、ｄｗｏｒｄ信号は、データ転送を通して単調増加される必要がある。ｄｗｏｒｄ信号は、データ転送における継続的なデータフェーズにおいて値を減少させることができない。マスターからの細分化された読み出しリターンが、より幅の狭いダウンストリームデータバスに遭遇すると、その結果、ｄｗｏｒｄは、データウィンドウの境界に達するまで、複数のデータフェーズに対して一貫した値を持つ。ｄｗｏｒｄ信号は、現在のデータフェーズにおけるどのデータバイトがデータ転送全体におけるどのデータウィンドウに対応するのかを一意的に区別することができないので、データウィンドウにわたるデータフェーズは許可されない。
【０１７７】
ｄｍｓｔｉｄ［１１：０］信号は、このデータ転送が所属するトランザクションを開始したマスターを一意的に識別する。ｄｍｓｔｉｄは、トランザクション属性チャネル（ＴＡＣ）上の元のトランザクションのｃｍｓｔｉｄにマッチングしなければならない。
【０１７８】
ｄｌａｓｔ信号は、所与のｄｉｄ［１１：０］に対するデータ転送の最終データフェーズを識別する。
【０１７９】
ｄｐａｒｉｔｙ［ＣＦＧ：０］信号は、現在のｄｄａｔａ［ＣＦＧ：０］ウィンドウに対するパリティを識別する。パリティは、３２ビットサブライン毎に、ｄｄａｔａのＸＯＲリダクションとしてコンピュートされる。表１３は、最大５１２ビットのデータウィンドウに対するｄｐａｒｉｔｙ信号のエンコーディングを列挙する。
【表１３】
2020191122.tif 000015
【０１８０】
細分化されたデータ転送は、複数のデータフェーズを介して、全データウィンドウを転送し得る。細分化されたデータ転送における各データフェーズについて、ｄｂｙｔｅｎ［ＣＦＧ：０］は、転送されている総データウィンドウのサブセットを特定し得る。各データフェーズは、全データウィンドウ上でｄｐａｒｉｔｙを計算しなければならず、ゼロにされたｄｂｙｔｅｎビットに対応するデータバイトをゼロ設定する。これにより、スレーブが、各データフェーズからの中間ｄｐａｒｉｔｙ値の継続的なＸＯＲを実施することによって、全データウィンドウに対する正しいｄｐａｒｉｔｙ値を再構成することが可能になる。
【０１８１】
ｄｅｄｃ［ＣＦＧ：０］信号は、現在のデータフェーズに対するエラー検出／訂正ハミング及びパリティ情報を識別する。ｄｅｄｃ信号は、それぞれ２５６ビットデータ精度で計算された、２つの１０ビットフィールドで構成される。各１０ビットフィールドは、９ビットハミングシンドローム及び単一の全パリティビットで構成される。表１４は、ｄｅｄｃ信号のエンコーディングを列挙する。
【表１４】
2020191122.tif 000016
ｄｅｄｃ信号は、データウィンドウが２５６ビットより小さく構成されるインタフェース上では用いることができない。
【０１８２】
図１９は、ｄｅｄｃ信号のエンコーディングのためのロジックを図示する。データ１９１０は、データ［５１１：２５６］及びデータ［２５５：０］の２つの部分に分けられる。ハミング生成器１９３１は、既知の技術に従って、データ１９１０のデータ［５１１：２５６］を受け取り、ハミングデータの９ビットを形成する。この９ビットは、データ１９２０のｄｅｄｃ［１８：１０］となる。パリティＸＯＲリダクション１９３２は、データビットデータ［５１１：２５６］、及びハミング生成器１９３１からのハミングデータの９ビットの組み合わせ排他的ＯＲを形成する。この単一のＸＯＲビットは、データ１９２０のｄｅｄｃ［１９］になる。ハミング生成器１９３３は、既知の技術に従って、データ１９１０のデータ［２５５：０］を受け取り、ハミングデータの９ビットを形成する。この９ビットは、データ１９２０のｄｅｄｃ［８：０］となる。パリティＸＯＲリダクション１９３４は、データビットデータ［２５５：０］、及びハミング生成器１９３３からのハミングデータの９ビットの組み合わせ排他的ＯＲを形成する。この単一のＸＯＲビットは、データ１９２０のｄｅｄｃ［９］となる。
【０１８３】
細分化されたデータ転送は、複数のデータフェーズを介して、全データウィンドウを転送し得る。細分化されたデータ転送における各データフェーズに対して、ｄｂｙｔｅｎ［ＣＦＧ：０］は、転送されている総データウィンドウのサブセットを特定し得る。各データフェーズは、全データウィンドウ上でｄｅｄｃを計算しなければならず、ゼロにされたｄｂｙｔｅｎビットに対応するデータバイトをゼロ設定する。これによって、スレーブが、各データフェーズから中間のｄｅｄｃ値の継続的なＸＯＲを実施することによって、全データウィンドウに対する正しいｄｅｄｃ値を再構成することが可能になる。
【０１８４】
ｄｓｂａｎｄ［ＣＦＧ：０］信号は、ユーザー定義サイドバンド信号である。この信号はオプションであり、その解釈は実装固有である。ｄｓｂａｎｄ信号は、トランザクションデータチャネル（ＴＤＣ）によってのみ用いられる。
【０１８５】
書き込み応答チャネル（ＷＲＣ）は、ペアにされたインタフェーストポロジーに対する反対側ＭＢＡインタフェース上の、前に開始された書き込みコマンドトランザクションに対して、スレーブに書き込み状態をリターンするためにマスターによって用いられるクレジットされたチャネルである。ＷＲＣ上の書き込み応答の開始は、クレジットの使用を必要とする。ＷＲＣ信号は、正確に１サイクルの間マスターによってアサートされ、それらがアサートされたサイクルにおいて、スレーブによってアクセプトされなければならない。各書き込み状態は、元の書き込みコマンドトランザクションのｃｉｄ［１１：０］にマッチングするｗｉｄ［１１：０］信号によって一意的に識別される。書き込み応答が成功裏に処理されると、ｗｒｅｔｕｒｎ信号を用いて、スレーブによって書き込み応答クレジットがマスターにリターンされなければならない。書き込み応答に対する必要がない場合、チャネル全体が除外され得るが、チャネルが存在する場合、ＷＲＣ上の全ての信号が必
要とされる。
【０１８６】
表１５は、書き込み応答チャネル信号を列挙する。
【表１５】
2020191122.tif 000017
【０１８７】
ｗｍｓｔｉｄ［１１：０］信号は、ＷＲＣ上の唯一のオプションの信号である。インタフェースが書き込みコマンドトランザクションをサポートするか否かに応じて、書き込み応答チャネル全体が存在するように又は存在しないように構成され得る。
【０１８８】
ｗｖａｌｉｄ信号は、有効な書き込み応答の存在を示す。０は書き込み応答が存在しないことを示す。１は現在のサイクルに対する有効な書き込み応答を示す。
【０１８９】
ｗｉｄ［１１：０］信号は、これがそれに対する書き込み応答である、元のＴＡＣトランザクションを一意的に識別する。ｗｉｄは、元の書き込みコマンドトランザクションのｃｉｄにマッチングしなければならない。
【０１９０】
ｗｓｔａｔｕｓ［１：０］信号は、書き込みトランザクションの状態を識別する。ｗｓｔａｔｕｓ信号は、表９に列挙されたｃｓｔａｔｕｓと同じコーディングを有する。
【０１９１】
ｗｍｓｔｉｄ［１１：０］信号は、これがそれに対する応答である、書き込みコマンドトランザクションを発したシステムマスターを識別する。ｗｍｓｔｉｄは、書き込みコマンドトランザクションの元のｃｍｓｔｉｄにマッチングしなければならない。
【０１９２】
ｗｒｅｔｕｒｎ信号は、書き込み応答クレジットのリターンを示す。０は書き込み応答クレジットリターンが存在しないことを示す。１は現在のサイクルに対する有効な書き込み応答クレジットリターンを示す。
【０１９３】
ＭＢＡプロトコルは、複数のトランザクションタイプを定義する。トランザクションは、コマンドと応答の２つの基本的なカテゴリにグループ分けされる。両方のトランザクションカテゴリが、プロトコルによってサポートされる全てのトランザクションの説明と共に以下に記載される。
【０１９４】
コマンドトランザクションが、データの転送を伴う可能性もあり、伴わない可能性もある、２つのエージェント間のトランザクションシーケンスを開始する。シーケンスは、次の２つの方式の１つにおいて完了する。１つは、反対側ＭＢＡインタフェースの書き込み応答チャネル（ＷＲＣ）上で他方のエージェントによって開始される書き込み応答であり、もう１つは、反対側ＭＢＡインタフェースのトランザクション属性チャネル（ＴＡＣ）上で他方のエージェントによって開始される応答トランザクション、及びそのトランザクションデータチャネル（ＴＤＣ）上での関連するデータ転送である。全てのコマンドトランザクションは、一意のｃｉｄ［１１：０］を特定しなければならない。ｃｉｄは、同じインタフェース上の同じマスターによって開始される如何なるアクティブシーケンスにおいても使用されない可能性がある。書き込みコマンドトランザクションは、マスターからスレーブへのデータの転送を必要とする。書き込みコマンドシーケンス以外の全てのシーケンスは、反対側ＭＢＡインタフェース上で他方のエージェントによって開始される応答トランザクションによって完了する。
【０１９５】
コマンドトランザクションは、デマンド、スヌープ、メッセージ、及びメンテナンスの４個のカテゴリに分類される。表１６は、デマンドカテゴリにおけるコマンドトランザクションタイプを列挙する。表１６における全てのコマンドは、ＡＣＥ等価トランザクションに対応する。マスターの列は、各トランザクションタイプに対して予期される開始側を示す。シーケンス完了の列は、コマンドトランザクションによって開始されたシーケンスを完了させるための必要とされる応答を示す。
【表１６】
2020191122.tif 000018
【０１９６】
ＲｅａｄＮｏＳｎｏｏｐコマンドは、非コヒーレント読み出し演算である。この読み出し演算は、コヒーレンスプロトコルに参加せず、スヌープトランザクションを生成しない。ＲｅａｄＮｏＳｎｏｏｐトランザクションは、ｃｍｅｍｔｙｐｅ［１：０］、ｃｃｉｎｎｅｒ［１：０］、及びｃｃｏｕｔｅｒ［１：０］信号の値に応じて、キャッシュ割り当てとなる可能性とならない可能性がある。
【０１９７】
ＲｅａｄＯｎｃｅコマンドは、開始側マスターにおけるキャッシュ内に割り当てないコヒーレント読み出し演算である。
【０１９８】
ＲｅａｄＣｌｅａｎコマンドは、開始側マスターにおけるキャッシュ内に割り当てるコヒーレント読み出し演算である。開始側マスターは、共有状態においてラインを要求するが、ファーサイド構成要素は排他的状態においてアクセスをグラントし得る。
【０１９９】
ＲｅａｄＵｎｉｑｕｅコマンドは、開始側マスターにおけるキャッシュ内に割り当てるコヒーレント読み出し演算である。開始側マスターは、排他的状態においてラインを要求し、ラインは排他的状態においてグラントされなければならない。
【０２００】
ＷｒｉｔｅＮｏＳｎｏｏｐコマンドは、非コヒーレント書き込み演算である。この書き込み演算は、コヒーレンスプロトコルに参加せず、スヌープトランザクションを生成しない。
【０２０１】
ＷｒｉｔｅＵｎｉｑｕｅコマンドは、全キャッシュラインより小さい可能性のあるサイズを有するコヒーレント書き込み演算である。トランザクションアドレスに対するキャッシュラインは、開始側マスターにおけるキャッシュに存在してはならない。
【０２０２】
ＷｒｉｔｅＬｉｎｅＵｎｉｑｕｅコマンドは、全キャッシュラインに等しくなければならないサイズを有するコヒーレント書き込み演算である。このトランザクションアドレスに対するキャッシュラインは、開始側マスターのキャッシュに存在してはならない。
【０２０３】
ＷｒｉｔｅＣｌｅａｎコマンドは、開始側マスターのキャッシュにおいてラインがクリーン状態で保持される、場合によってはコヒーレントなビクティム書き込みトランザクションである。
【０２０４】
ライトバックコマンドは、開始側マスターにおけるキャッシュにおいてラインが保持されない、場合によってはコヒーレントなビクティム書き込みトランザクションである。
【０２０５】
表１７は、スヌープカテゴリにおけるコマンドトランザクションタイプを列挙する。ＡＣＥ等価トランザクションは、ＳｎｏｏｐＲｅａｄＯｎｃｅ、ＲｅａｄＯｎｃｅ、ＳｎｏｏｐＲｅａｄＳｈａｒｅｄ、ＲｅａｄＳｈａｒｅｄ、ＳｎｏｏｐＣｌｅａｎＳｈａｒｅｄ、ＣｌｅａｎＳｈａｒｅｄ、ＳｎｏｏｐＣｌｅａｎＩｎｖａｌｉｄ、ＣｌｅａｎＩｎｖａｌｉｄ、及びＳｎｏｏｐＭａｋｅＩｎｖａｌｉｄ、ＭａｋｅＩｎｖａｌｉｄである。
【表１７】
2020191122.tif 000019
【０２０６】
ＳｎｏｏｐＲｅａｄＯｎｃｅコマンドは、スヌープされたキャッシュの状態を変更しない、非キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データはリターンされなければならない。
【０２０７】
ＳｎｏｏｐＲｅａｄＳｈａｒｅｄコマンドは、完了の際、スヌープされたキャッシュラインを共有状態に移動させることを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。
【０２０８】
ＳｎｏｏｐＣｌｅａｎＳｈａｒｅｄコマンドは、完了の際、スヌープされたキャッシュラインをクリーン状態に移動させることを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。
【０２０９】
ＳｎｏｏｐＣｌｅａｎＩｎｖａｌｉｄコマンドは、完了の際、スヌープされたキャッシュラインを無効な状態に移動することを必要とする、キャッシング読み出しスヌープコマンドである。スヌープされたキャッシュにおいてラインが存在する場合、データは、スヌープ応答トランザクションと共にリターンされなければならない。
【０２１０】
ＳｎｏｏｐＭａｋｅＩｎｖａｌｉｄコマンドは、完了の際、スヌープされたキャッシュラインを無効な状態に移動することを必要とする、キャッシングスヌープコマンドである。データは、スヌープ応答トランザクションと共にリターンされることはない。
【０２１１】
表１８は、メッセージカテゴリにおけるコマンドトランザクションタイプを列挙する。ＤＶＭ  Ｏｐｅｒａｔａｔｉｏｎコマンド、ＤＶＭ  Ｓｙｎｃコマンド、及びＤＶＭ  Ｃｏｍｐｌｅｔｅｒコマンドは、ＡＣＥ等価トランザクションを有する。ＣａｃｈｅＷａｒｍコマンド、ＣａｃｈｅＷａｒｍＮｏｔｉｆｙコマンド、及びＥｖｉｃｔコマンドは、ＡＣＥ等価を有さない。メッセージコマンドトランザクションは、データの転送を含むことはなく、従って、トランザクションデータチャネル（ＴＤＣ）の使用を必要としない。
【表１８】
2020191122.tif 000020
【０２１２】
ＣａｃｈｅＷａｒｍコマンドは、そのキャッシュ内に所与のアドレスを割り当てるようにＲｅａｄＣｌｅａｎ演算の割り当てを開始することをスレーブエージェントに要求するメッセージである。ＭＭＵからのみ決定され得るメモリタイプ及びメモリ属性に対応するトランザクション属性チャネル（ＴＡＣ）属性は、ＣａｃｈｅＷａｒｍトランザクションから後続のＲｅａｄＣｌｅａｎ演算にミラーリングされなければならない。ＣａｃｈｅＷａｒｍトランザクションは、キャッシュラインをプリフェッチするために、システムによって用いられる。メッセージ応答トランザクションは、ＲｅａｄＣｌｅａｎ演算が開始された後、開始され得る。
【０２１３】
ＣａｃｈｅＷａｒｍＮｏｔｉｆｙコマンドは、そのキャッシュ内に所与のアドレスを割り当てるようにＲｅａｄＣｌｅａｎ演算の割り当てを開始することをスレーブエージェントに要求するメッセージである。ＭＭＵからのみ決定され得るメモリタイプ及びメモリ属性に対応するトランザクション属性チャネル（ＴＡＣ）属性は、ＣａｃｈｅＷａｒｍトランザクションから後続のＲｅａｄＣｌｅａｎ演算にミラーリングされなければならない。ＲｅａｄＣｌｅａｎ演算に対して、読み出し応答トランザクションが受け取られると、スレーブエージェントは、ＣａｃｈｅＷａｒｍ演算の完了を示すために、ＷｒｉｔｅＮｏＳｎｏｏｐメッセージコマンドトランザクションを開始しなければならない。
【０２１４】
Ｅｖｉｃｔコマンドは、所与のアドレスが開始側マスターにおけるキャッシュから除去された（無効化された）ことの、場合によってはコヒーレントなキャッシュ状態通知である。
【０２１５】
メンテナンスコマンドトランザクションは、メンテナンスドメインによって区別される２つの特徴がある。２つのメンテナンスドメインは、ポイントオブユニフィケーション（ＰＯＵ）とポイントオブコヒーレンス（ＰＯＣ）である。ポイントオブユニフィケーションは、命令とデータキャッシュとが一体化されるポイントである。これは、典型的に第２レベルキャッシュである。ポイントオブコヒーレンスは、所与のコヒーレンスドメインにおける全てのコヒーレントマスターが、変更されたデータをライトバックしなければならないポイントであり、それによって、同じコヒーレンスドメインにおける他のコヒーレントマスターが変更されたデータを見ることができるようにするためのポイントである。これは典型的に最終レベルキャッシュである。
【表１９】
2020191122.tif 000021
【０２１６】
ＣｌｅａｎＳｈａｒｅｄＰＯＵコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。ＣｌｅａｎＳｈａｒｅｄＰＯＵトランザクションは、スレーブエージェントとコアとの間の全てのキャッシュに伝播されなければならないが、この伝搬は、ＳｎｏｏｐＣｌｅａｎＳｈａｒｅｄコマンドトランザクションを介して成され得る。
【０２１７】
ＣｌｅａｎＩｎｖａｌｉｄＰＯＵコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。また、全てのキャッシュは、キャッシュラインを無効化しなければならない。ＣｌｅａｎＩｎｖａｌｉｄＰＯＵトランザクションは、コアに近い方のキャッシュに伝播されなければならないが、この伝搬は、ＳｎｏｏｐＣｌｅａｎＩｎｖａｌｉｄコマンドトランザクションを介して成され得る。
【０２１８】
ＭａｋｅＩｎｖａｌｉｄＰＯＵコマンドは、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブユニフィケーションまでの所与のキャッシュラインを無効化することを要求する、キャッシュメンテナンス演算である。ＭａｋｅＩｎｖａｌｉｄＰＯＵトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、ＳｎｏｏｐＭａｋｅＩｎｖａｌｉｄコマンドトランザクションを介して成され得る。
【０２１９】
ＣｌｅａｎＳｈａｒｅｄＰＯＣコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。ＣｌｅａｎＳｈａｒｅｄＰＯＣトランザクションは、スレーブエージェントとコアとの間の全てのキャッシュに伝播されなければならないが、この伝搬は、ＳｎｏｏｐＣｌｅａｎＳｈａｒｅｄコマンドトランザクションを介して成され得る。
【０２２０】
ＣｌｅａｎＩｎｖａｌｉｄＰＯＣコマンドは、キャッシュラインが変更された状態に保たれる場合、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインをライトアウトすることを要求する、キャッシュメンテナンス演算である。また、全てのキャッシュは、キャッシュラインを無効化しなければならない。ＣｌｅａｎＩｎｖａｌｉｄＰＯＣトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、ＳｎｏｏｐＣｌｅａｎＩｎｖａｌｉｄコマンドトランザクションを介して成され得る。
【０２２１】
ＭａｋｅＩｎｖａｌｉｄＰＯＣコマンドは、コアからスレーブエージェントまでの全てのキャッシュに、ポイントオブコヒーレンスまでの所与のキャッシュラインを無効化することを要求する、キャッシュメンテナンス演算である。ＭａｋｅＩｎｖａｌｉｄＰＯＣトランザクションは、コアに近い方のキャッシュに伝搬されなければならないが、この伝搬は、ＳｎｏｏｐＭａｋｅＩｎｖａｌｉｄコマンドトランザクションを介して成され得る。
【０２２２】
応答トランザクションは、２つのエージェント間のトランザクションシーケンスを完了するために用いられる。応答トランザクションは、元のコマンドトランザクションのｃｉｄ［１１：０］にマッチングする必要がある。応答トランザクションは、データの転送に関連する可能性も、しない可能性もある。表２０は、応答トランザクションタイプを列挙する。ＡＣＥ等価トランザクションは、読み出し応答がＲＲＥＳＰであり、スヌープ応答がＣＲ、ＣＵであり、メッセージ応答及びメンテナンス応答コマンドに対してＡＣＥ等価がない。マスターの列は、各トランザクションタイプに対する予期される開始側を示す。
【表２０】
2020191122.tif 000022
【０２２３】
読み出しシーケンスを完了するために、読み出し応答トランザクションが必要とされる。読み出し応答トランザクションは、常にデータ転送を含む。失敗状態を示すｃｓｔａｔｕｓ［１：０］値を有する読み出し応答トランザクションは、それでもなお、ｃｄａｔａ信号をアサートし、ゼロにされたデータをリターンしなければならない。成功を示すｃｓｔａｔｕｓ［１：０］値を有する読み出し応答トランザクションは、トランザクションデータチャネル（ＴＤＣ）上にデータ転送を含まなければならない。
【０２２４】
スヌープシーケンスを完了するために、スヌープ応答トランザクションが必要とされる。スヌープ応答トランザクションは、データ転送を含む可能性も、含まない可能性もある。失敗状態を示すｃｓｔａｔｕｓ［１：０］値を有するスヌープ応答トランザクションは、ｃｄａｔａ信号をディアサートし得、トランザクションデータチャネル（ＴＤＣ）の使用を防止し得る。成功を示すｃｓｔａｔｕｓ［１：０］値を有するスヌープ応答トランザクションは、トランザクションデータチャネル（ＴＤＣ）上にデータ転送を含まなければならない。
【０２２５】
メッセージシーケンスを完了するために、メッセージ応答トランザクションが必要とされる。メッセージ応答トランザクションは、データ転送を含むことはない。
【０２２６】
メンテナンスシーケンスを完了するために、メンテナンス応答トランザクションが必要とされる。メンテナンス応答トランザクションは、データ転送を含むことはない。
【０２２７】
応答トランザクションは、トランザクション属性チャネル（ＴＡＣ）上の対応するｃｓｔａｔｕｓ［１：０］信号をアサートすることによってエラー状態を示す。読み出し応答トランザクションは、読み出し演算を処理するように試みている間、エラーの発生に関係なく、１のｃｄａｔａ信号をアサートする必要がある。
【０２２８】
アドレス及び保護エラーは、典型的に、スレーブがエンドポイント読み出しアクセスを実施する前に検出される。この場合、それでもなお、データ転送が読み出し応答トランザクションと共に成されなければならない。データ転送を伴う全読み出し応答トランザクションは、次のように起こり得る。１のｃｄａｔａ信号が、トランザクション属性チャネル（ＴＡＣ）上でトランザクションを用いてアサートされなければならない。ｃｓｔａｔｕｓ［１：０］信号は、発生したエラーがある場合はその種類を示す。これは、アドレスエラー及び保護エラーであり得る。データ転送がトランザクションデータチャネル（ＴＤＣ）上で成されなければならない。データ転送のサイズは、元の読み出し演算のｃｂｙｔｅｃｎｔ［６：０］に等しくなければならない。ｄｄａｔａ［ＣＦＧ：０］信号は、セキュリティホールを回避するために、全てゼロに設定されなければならない。このセキュリティホールは、読み出しアクセスの間に、場合によっては読み出し応答トランザクションが開始された後に起こり得る、非コレクタブルビットエラー等のこの信号エラー上で前にレジスタされたデータのサンプリングを可能にし得る。１つ又は複数のデータフェーズが転送された後にエラーが発生する場合、データ転送は完了しなければならず、エラーのあるデータフェーズに対してｄｄａｔａ［ＣＦＧ：０］を全てゼロに設定することに加え、ｄｓｔａｔｕｓ［１：０］信号上の対応するエラー種類をアサートすることによって、エラーのあるデータフェーズが示されなければならない。
【０２２９】
全てのＭＢＡトランザクションは、クレジットの使用を介して動作する。トランザクション属性チャネル（ＴＡＣ）上で開始されるトランザクション、及び書き込み応答チャネル（ＷＲＣ）上で開始される書き込み応答は、少なくとも１つのクレジットの使用を必要とする。クレジットは、マスターによって所有及び使われ、その後、スレーブによってリターンされる。書き込み応答クレジットは、１種類のみを有し、より詳細な分類は必要ない。トランザクションクレジットは、複数のクレジットタイプに組織化される。例示の実施形態の多くの実装は、クレジットタイプをスレーブ上の物理リソースによって分類する。
【０２３０】
全てのトランザクションでは、ｃｃｒｅｄｉｔ［ＣＦＧ：０］信号は、使われているクレジットのタイプを示す。例示の実施形態は、クレジットタイプの固定数を定義する必要がなく、クレジットタイプの固定された意味も定義する必要がない。特定の実装によって、ＭＢＡインタフェース上の利用可能なクレジットタイプの数、並びに各クレジットタイプに関連する意味が構成される。
【０２３１】
クレジットされたチャネルに対するクレジットハンドシェイクは、非常にシンプルであり、クレジットスぺンドの後、クレジットリターン、という時間的形式に従う。マスターは、ｃｖａｌｉｄをアサートすること、及び、ｃｃｒｅｄｉｔ［ＣＦＧ：０］ビットベクトルにおいて１つ又は複数のビットをアサートすることによって、１つ又は複数のクレジットを使う。対応するスレーブは、同じサイクル上でトランザクションをアクセプトする。これは強制的である。マスターが使うためのクレジットを有する場合、これは、スレーブがトランザクションをアクセプトしなければならないことを示す。スレーブは、トランザクションを完了し、その後、トランザクションによって用いられた１つ又は複数のリソースをフリーにする。リソースをフリーにすると、スレーブは、ｃｒｅｔｕｒｎ［ＣＦＧ：０］ビットベクトルにおける対応するビットをアサートすることによって、クレジットをマスターにリターンする。その後、マスターは後の使用のためにクレジットを有する。
【０２３２】
図２０は、トランザクション属性チャネル（ＴＡＣ）に対するシンプルなクレジットハンドシェイクを図示する。図２０において、２００１は、マスター及びスレーブを両方制御するクロック信号である。マスターは、トランザクションを開始させるために、１クロックサイクルの間アクティブなｃｖａｌｉｄ信号２００２を生成する。また、マスターは、同じ１つのクロックサイクルの間に、ｃｃｒｅｄｉｔ信号Ａ２００３を生成する。このｃｃｒｅｄｉｔ信号Ａ２００３は、現在のトランザクション上で使われているタイプクレジットを示す。例示の実施形態に従い、マスターが使うためのクレジットを有する場合、スレーブは、トランザクションをアクセプトしなければならない。このように、スレーブは、トランザクションをアクセプトし、不確定時間２０１０を演算する。アクセプトされたトランザクションによって必要とされる処理が完了すると、スレーブは、ｃｒｅｔｕｒｎ信号Ａ２００４を介してクレジットをリターンする。このｃｒｅｔｕｒｎ信号Ａ２００４は、好ましくは、１クロックサイクルの長さを有する。
【０２３３】
例示の実施形態において、クレジットされたチャネル上でのクレジットリターンアクションに対して、クレジットスぺンドの１対１のマッピングがある。同時期に同じチャネル上で進行中の複数のクレジットハンドシェイクがあり得る。マスターは、所有するクレジットの数を常に把握する責任を持つ。各クレジットスぺンドアクションが、マスターにおけるクレジットカウントを１だけ減少させる。各クレジットリターンアクションが、マスターにおけるクレジットカウントを１だけ増加させる。
【０２３４】
クレジットスぺンド及びクレジットリターンアクションは、同じ又は異なるクレジットタイプに対する異なるハンドシェイクに対して、クレジットされた同じチャネル上でインターリーブされ得る。
【０２３５】
図２１は、同じチャネル上のインターリーブされるクレジットハンドシェイクを図示する。図２１において、２１０１は、マスター及びスレーブの両方を制御するクロック信号である。マスターは、第１のトランザクションを開始するために、１クロックサイクル２１１１の間、アクティブのｃｖａｌｉｄ信号２１０２を生成する。また、マスターは、同じクロックサイクル２１１１の間、ｃｃｒｅｄｉｔ信号Ａ２１０３を生成する。このｃｃｒｅｄｉｔ信号Ａ２００３は、現在のトランザクション上で使われているクレジットのタイプを示す。２クロックサイクル２１１２の間、マスターは、ｃｃｒｅｄｉｔ信号Ｂ２１０３を送信し、その後ｃｃｒｅｄｉｔ信号Ａ２１０３が続く。これらのｃｃｒｅｄｉｔ信号は、２クロックサイクルのｃｖａｌｉｄ信号２１０２の期間内にある。マスターが、スレーブからのクレジットリターンの前に、第２のｃｃｒｅｄｉｔ信号Ａ２１０３を送信したことに留意されたい。これは、マスターが元々、タイプＡクレジットを少なくとも２つ有していた場合にのみ起こる。これは、スレーブが、第１のそのようなトランザクションを完了する前に、タイプＡの第２の要求をアクセプトするための容量を有していることを必要とする。スレーブは、このようにして、第１のトランザクションタイプＡをアクセプトする。第１のアクセプトされたトランザクションによって要求される処理が完了すると、スレーブは、時間２１１３の間に、ｃｒｅｔｕｒｎ信号Ａ２１０４を介してクレジットをリターンする。このｃｒｅｔｕｒｎ信号Ａ２１０４は、好ましくは１クロックサイクルの長さを有する。第２のアクセプトされたトランザクション（タイプＢ）及び第３のアクセプトされたトランザクション（タイプＡ）によって要求される処理が完了すると、スレーブは、時間２１１４の間に、ｃｒｅｔｕｒｎ信号Ａ＋Ｂ２１０４を介して、２つのクレジットをリターンする。好ましい実施形態において、クレジットリターンは、チャネル上で用いられる各クレジットタイプに対して１ビットを備えるビットベクトルとしてエンコードされ得る。タイプＡ及びタイプＢの両方に対してビットを設定することで、単一のクレジットリターン信号が両方のクレジットタイプをリターンすることが可能となる。
【０２３６】
図１７は、ペアにされたインタフェーストポロジー（ＰＩＴ）における各チャネルを図示する。完全なトランザクションシーケンスを実施するために、エージェントペアが、ミラーリングされたペア構成の２つの別個のＭＢＡインタフェースを用いて通信しなければならない。これは、ペアにされたインタフェースと称される。ペアにされたインタフェースは２つのエージェント間の双方向のデータ転送をサポートする。エージェントＡとＢの間の全てのクレジットされたシーケンスは、クレジットされた非書き込みシーケンス、クレジットされた書き込みシーケンス、及びクレジットされたＤＶＭシーケンス、の３つの形式の１つに従う。
【０２３７】
図２２は、クレジット非書き込みシーケンスにおけるステップを図示する。そのようなクレジット非書き込みシーケンスは、コアサイドエージェント１７１０がＴＡＣ  １７１２上でタイプＡ０のクレジットスぺンドを始めること（ステップ２２０１）で開始する。ステップ２２０２で、ファーサイドエージェント１７２０が、タイプＡ０のクレジットリターンをＴＡＣ  １７２２上でコアサイドエージェント１７１０に送信する。これは、ファーサイドエージェント１７２０が初期コマンドトランザクション（ステップ２２０１）によって占有された物理リソースをクリアにすると成される。クレジットリターンに関連するトランザクションＩＤはない。ステップ２２０３で、ファーサイドエージェント１７２０は、新しい応答トランザクションを開始し、ＴＡＣ  １７２２上でクレジットタイプＢ１の単一のクレジットを使う。この応答トランザクションのＩＤは、元のＩＤ（ステップ２２０１）にマッチングしなければならない。ステップ２２０４で、ファーサイドエージェント１７２０は、ＴＤＣ  １７２３上で、１つ又は複数のデータフェーズのオプションのデータ転送を実施する。データ転送がステップ２２０３におけるクレジットスぺンドに該当するので、このアクションに対してクレジットは必要とされない。ＴＡＣ  １７２２とＴＤＣ  １７２３が異なるチャネルなので、ＴＤＣ  １７２３上でのデータ転送の初期フェーズが、ステップ２２０３におけるクレジットスぺンドと同時に起こり得る。図２２は、複数のデータ転送を有する例を図示する。ステップ２２０５において、コアサイドエージェント１７１０は、リターンクレジットタイプＢの単一のクレジットを、ＴＡＣ  １７１２上でファーサイドエージェント１７２０にリターンする。これは、コアサイド１７１０が、リターントランザクションによって占有された物理リソースをクリアする（ステップ２２０３）と起こる。クレジットリターンに関連するトランザクションＩＤはない。
【０２３８】
読み出し演算、スヌープ演算、メッセージシーケンス、及びメンテナンスシーケンスの５つのクレジットされた非書き込みシーケンスタイプがある。表２１は、ペアにされたインタフェーストポロジーにおける、図１１に図示されたステップに対する適法なトランザクションタイプ及びデータ転送を列挙する。
【０２３９】
【表２１】
2020191122.tif 000023
【０２４０】
図２３は、クレジットされた書き込みコマンドシーケンスの一般的な形式を図示する。クレジットされた書き込みシーケンスは、シーケンスが完了する様式によって、上述のクレジットされた非書き込みシーケンスから差別化される。クレジットされた書き込みシーケンスは、書き込み応答チャネル（ＷＲＣ）上での書き込み状態で完了する。トランザクションＩＤ及びクレジットタイプは、クレジットの性質、及びシーケンスにわたるＩＤフローを示すために、自由裁量による象徴的な名を用いて示され、それ以外はＭＢＡインタフェース又はプロトコル内で如何なる意味も持たない。
【０２４１】
クレジットされた書き込みシーケンスは、コアサイドエージェント１７１０がＴＡＣ  １７１１上でタイプＡ５の単一クレジットを使うステップ２３０１で開始する。これは、コアサイド１７１０が、ファーサイドエージェント１７２０が書き込みのデータを扱えることを確実にしなければならないので、図２２のステップ２２０１のクレジットタイプＡ０とは異なる。従って、異なるクレジットタイプが必要とされる。ステップ２３０１において、コアサイドエージェント１７１０は、書き込みコマンドトランザクションに対して、ＴＤＣ  １７１２上の１つ又は複数のデータフェーズのデータ転送を実施する。このアクションに対してクレジットは必要とされない。このデータ転送は、ステップ２３０１におけるクレジットスぺンドに該当する。ＴＡＣ  １７１１とＴＤＣ  １７１２は異なるチャネルであるので、ＴＤＣ  １７１２上のデータ転送の初期フェーズが、ステップ２２０１におけるクレジットスぺンドと同時に起こり得る。図２２は、複数のデータ転送を有する例を図示する。ステップ２３０３において、ファーサイドエージェント１７２０は、タイプＡ５の単一クレジットをＴＡＣ  １７２２上でコアサイドエージェント１７１０にリターンバックする。これは、ファーサイドエージェント１７２０が、コマンドトランザクションによって占有された物理リソースをクリアにする（ステップ２３０１）と起こる。このクレジットリターンに関連するトランザクションＩＤはない。ＷＲＣ  １７２４上で書き込みコマンドトランザクションの処理が完了すると、ステップ２３０４において、ファーサイドエージェント１７２０が書き込み応答を開始する。ＩＤは、元のＩＤにマッチングしなければならない。書き込み応答は、専用の書き込み応答クレジットタイプの使用を必要とする。ステップ２３０４において、コアサイドエージェント１７１０は、ＷＲＣ  １７１４を介して、単一の書き込み応答クレジットをファーサイドエージェント１７２０にリターンする。これは、ファーサイドエージェント１７１０によって送られた書き込み応答がコアサイドエージェント１７１０によって消費されると成される。書き込み応答クレジットリターンに関連するトランザクションＩＤ又は明示的なクレジットタイプはない。
【０２４２】
下記は、例示のクレジットされたＤＶＭシーケンスのステップである。この例は、相互接続として機能するファーサイドエージェントと、キャッシュマスターとして機能するコアサイドエージェントとの間の挙動を説明する。この例において、コアサイドエージェント１７１０／キャッシュマスターは、表では説明されていない、システムにおける別のキャッシュマスターからの相互接続に対して開始されたＤＶＭ−Ｏｐｅｒａｔｉｏｎに応答している。ＤＶＭシーケンスには、ＤＶＭ  Ｏｐｅｒａｔｉｏｎ、ＤＶＭ  ｓｙｎｃ、及びＤＶＭ  Ｃｏｍｐｌｅｔｅの３つの部分がある。
【０２４３】
ＤＶＭ  Ｏｐｅｒａｔｉｏｎは、ファーサイドエージェント１７２０が、新しいＤＶＭ−Ｏｐｅｒａｔｉｏｎコマンドトランザクションシーケンスを開始することで始まる。これは、適切なタイプの単一クレジットを使うことを含む。コアサイドエージェント１７１０は、コアサイドエージェント１７１０が、コマンドトランザクションによって占有された物理リソースをクリアにすると、そのタイプの単一クレジットをファーサイドエージェント１７２０にリターンバックすることによって応答する。このクレジットリターンに関連するトランザクションＩＤはない。コアサイドエージェント１７１０は、次に、ＤＶＭ−Ｏｐｅｒａｔｉｏｎの受け取りを確認するために、ファーサイドエージェント１７２０に対して、クレジットされたトランザクションとしてのメッセージ応答を開始する。コアサイドエージェント１７１０は、元のＤＶＭ−ＯｐｅｒａｔｉｏｎからのＩＤを用いる。ファーサイドエージェント１７２０は、メッセージ応答によって用いられるタイプにマッチングする単一クレジットをリターンする。クレジットリターンに関連するトランザクションＩＤはない。
【０２４４】
その後、ファーサイドエージェント１７２０は、新しいＤＶＭ−Ｓｙｎｃコマンドトランザクションシーケンスを開始し、適切な単一クレジットを使う。この例において、同じマスターからの全てのＤＶＭトランザクションは、同じクレジットタイプを用いる。コアサイドエージェント１７１０は、対応するタイプＡ６の単一クレジットを、ファーサイドエージェント１７２０にリターンする。これは、コアサイドエージェント１７１０がコマンドトランザクションによって占有された物理リソースをクリアにすると成される。クレジットリターンに関連するトランザクションＩＤはない。次に、コアサイドエージェント１７１０は、ＤＶＭ−Ｓｙｎｃの受け取りを確認するために、ファーサイドエージェント１７２０へのメッセージ応答を、クレジットされたトランザクションにおいて開始する。コアサイドエージェント１７１０は、元のＤＶＭ−ＳｙｎｃトランザクションからのＩＤを用いる。ファーサイドエージェント１７２０は、メッセージ応答によって用いられるタイプにマッチングする単一のクレジットタイプをリターンする。このクレジットリターンに関連するトランザクションＩＤはない。
【０２４５】
コアサイドエージェント１７１０は、新しいＤＶＭ−Ｃｏｍｐｌｅｔｅコマンドトランザクションシーケンスを開始し、適切なタイプの単一クレジットを使う。ファーサイドエージェント１７２０は、そのタイプの単一クレジットをコアサイドエージェント１７１０にリターンバックする。これは、ファーサイドエージェント１７２０がコマンドトランザクションによって占有された物理リソースをクリアにすると成される。クレジットリターンに関連するトランザクションＩＤはない。ファーサイドエージェント１７２０は、ＤＶＭ−Ｃｏｍｐｌｅｔｅの受け取りを確認するために、エージェントＢへの、メッセージ応答のクレジットされたトランザクションを開始する。元のＤＶＭ−ＳｙｎｃからのＩＤが用いられる。コアサイドエージェント１７１０は、メッセージ応答によって用いられるタイプにマッチングする単一クレジットをリターンする。このクレジットリターンに関連するトランザクションＩＤはない。
【０２４６】
リセットの際、インタフェース上の各クレジットタイプに対するクレジットカウントは、静的インタフェース構成によって決定されるクレジットリミットタイオフ（ｔｉｅｏｆｆ）値にリセットされる。各クレジットタイプに対して、このリミットは、対応するトランザクションをサービスするスレーブリソースに対応する。
【０２４７】
トランザクションは、ｃａｄｄｒｅｓｓ［４７：０］、ｃｍｓｔｉｄ［１１：０］、及びｃｉｄ［１１：０］のトランザクションプロパティに基づいてＭＢＡプロトコルにおいて順序付けられている。オプションのｃｍｓｔｉｄ信号を含まないＭＢＡインタフェースでは、順序付け規則の目的で、全てのトランザクションに対して一定のｃｍｓｔｉｄが仮定される。ｃａｄｄｒｅｓｓ及びｃｂｙｔｅｃｎｔによって決定されるように、同じバイトの１つ又は複数上で２つのトランザクションが動作する場合、トランザクションは、オーバーラップするアドレスを有すると定義される。２つのエージェント間のクレジットされた非書き込みシーケンスは、図２２に示されるように順序付けされる。２つのエージェント間のクレジットされた書き込みシーケンスは、図２３に示されるように順序付けされる。
【０２４８】
複数のシーケンスが、同じＭＢＡのペアにされたインタフェース上でインターリーブされ得る（図１７）。単一シーケンスに対する順序付け規則は有効なままであり、別個のシーケンスに対するシーケンスステップは、任意の順にインターリーブされ得る。マスターが、全てがデータ転送を含む複数のトランザクションを送っている場合、マスターは、単一シーケンスの規則が順守される限り、任意の順序で、異なるトランザクション間で、ＴＤＣ上でデータフェーズをインターリーブし得る。
【０２４９】
マスターエージェントに対する順序付け規則は、次のように要約される。データ転送を含む任意のトランザクションに対して、第１のＴＤＣＤＡＴＡフェーズは、同じサイクルにおいて開始され得るが、ＴＡＣに先行することはできない。データ転送における全てのデータフェーズは、アドレスに基づいて単調増加順に起こらなければならない。マスターは、任意の単一データ転送内のデータフェーズが、アドレスに基づいて単調増加順に開始される限り、トランザクション属性チャネル（ＴＡＣ）上で発行されるトランザクションに対して任意の順で、トランザクションデータチャネル（ＴＤＣ）データフェーズをインターリーブし得る。マスターは、応答トランザクション又は書き込み状態のいずれかが、前のｃｍｓｔｉｄ／ｃｉｄペアに対して受け取られるまで、同じｃｍｓｔｉｄ［１１：０］及びｃｉｄ［１１：０］の組み合わせで、同じＭＢＡインタフェース上で複数のコマンドトランザクションを開始してはならない。
【０２５０】
スレーブエージェントに対する順序付け規則は、次のように要約される。スレーブは、同じｃｍｓｔｉｄとオーバーラップするアドレスに対する全てのブロッキングトランザクションを、ｃｃｒｅｄｉｔか又はｃｉｄかに関係なく、それらが受け取られた順で完了しなければならない。スレーブは、同じｃｍｓｔｉｄとオーバーラップするアドレスに対する全てのノンブロッキングトランザクションを、ｃｃｒｅｄｉｔか又はｃｉｄかに関係なく、それらが受け取られた順で完了しなければならない。スレーブが、同じｃｍｓｔｉｄとオーバーラップするアドレスに対するノンブロッキングトランザクションを受け取った後に、ブロッキングトランザクションを受け取る場合、スレーブは、２つのトランザクションを、ｃｃｒｅｄｉｔか又はｃｉｄに関係なく、それらが受け取られた順で完了しなければならない。ブロッキングトランザクションは、同じｃｍｓｔｉｄとオーバーラップするアドレスに対するノンブロッキングトランザクションをバイパスしてはならない。スレーブが、同じｃｍｓｔｉｄとオーバーラップするアドレスに対するブロッキングトランザクションを受け取った後に、ノンブロッキングトランザクションを受け取る場合、スレーブは、それらを受け取った順でトランザクションを完了することを必要としない。ノンブロッキングトランザクションは、同じｃｍｓｔｉｄとオーバーラップするアドレスに対するブロッキングトランザクションをバイパスすることを許可される。スレーブは、ｃｃｒｅｄｉｔ、ｃｍｓｔｉｄ、又はｃｉｄにかかわらず、任意の順で、非オーバーラップするアドレスを用いてトランザクションを完了し得る。
【０２５１】
コアサイドエージェントは、メモリのシェアラブル領域に対するトランザクションに対する正確性を保証するために、下記の規則に従わなければならない。コアサイドエージェントは、ｃｃｒｅｄｉｔ、ｃｍｓｔｉｄ、又はｃｉｄに関係なく、オーバーラップするアドレスに対する、スヌープコマンドトランザクション及び読み出し応答トランザクションの順を維持しなければならない。
【０２５２】
ファーサイドエージェントは、メモリのシェアラブル領域に対するトランザクションの正確性を保証するために、下記の規則に従わなければならない。ファーサイドエージェントが、コアサイドエージェントに対してスヌープコマンドトランザクションを開始し、その後、オーバーラップするアドレスを備えるブロッキングコマンドトランザクションを受け取る場合、ファーサイドエージェントは、コアサイドエージェントからスヌープ応答トランザクションを受け取り、処理するまで、ブロッキングコマンドトランザクションを処理してはならない。
【０２５３】
マスターは、ｃｍｓｔｉｄ／ｃｉｄペアに対して、応答トランザクション又は書き込み状態のいずれかが受け取られるまで、同じｃｍｓｔｉｄ［１１：０］及びｃｉｄ［１１：０］の組み合わせを備える同じＭＢＡインタフェース上で複数のコマンドトランザクションを開始してはならない。
【０２５４】
マルチコアバスアーキテクチャ（ＭＢＡ）プロトコルの導入は、全てのコマンドの特徴（読み出し、書き込み、コヒーレンス、メッセージ）、並びに応答を含む全てのトランザクションタイプに対して、同じ物理チャネルを共有する新規の技術を含む。トランザクション属性チャネル（ＴＡＣ）及びトランザクションデータチャネル（ＴＤＣ）の２つのチャネルは、トランザクションタイプに関係なく、全てのトランザクション属性及びデータを送信するために用いられる。書き込みコマンド、読み出し応答、コヒーレンス応答のどれに対するか等、単一方向におけるデータフローに対する幅に関係なく、単一のデータバスのみが必要とされる。
【０２５５】
図２４は、図１７に図示されるコアサイドエージェント１７１０又はファーサイドエージェント１７２０等の、エージェント２４００のブロック図である。図２４は、ＭＢＡにおける最小の信号ワイヤの使用を図示する。バックエンドプロセス２４０１は、エージェントに対する全ての回路及びシステムを表す。これは、内部キャッシュを備えるＣＰＵ、メモリ、制御可能な周辺機器等を含み得る。この例において、バックエンドプロセス２４０１は、発信トランザクション及びクレジットリターンに対して使われる、クレジットカウンタ２４０２にストアされたバスクレジットのトラッキング（増加及び減少）を含むバスプロトコルを扱う。
【０２５６】
図２４はまた、バックエンドプロセス２４０１に接続された読み出し／書き込みメモリ２４０３を図示する。読み出し／書き込みメモリ２４０３は、例示の実施形態において考慮される、制御された演算のタイプを表す。図２４に図示された例において、バックエンドプロセス２４０１は、バストランザクションに従って、読み出し／書き込みメモリ２４０３から読み出し又は読み出し／書き込みメモリ２４０３に書き込み得る。バックエンドプロセス２４０１は、出力デバイスへ又は入力デバイスからなど、単一方向のデータフローを制御し得る。
【０２５７】
バックエンドプロセス２４０１は、この例におけるマスターサイド２４１０及びスレーブサイド２４２０を含む上述のＭＢＡを介して通信する。他の実現可能な構成を更に以下に説明する。
【０２５８】
マスターサイド２４１０は、マスター属性チャネル２４１１、マスターデータチャネル２４１２、及びマスター書き込み応答チャネル２４１３を含む。エージェント２４００は、バス２４１４を介して通信する、上述の表５に列挙されたｃｖａｌｉｄ、ｃｃｒｅｄｉｔ、ｃｉｄ、ｃｔｙｐｅ、及びｃｄａｔａ等の全ての信号上で、マスター属性チャネル２４１１を用いる。エージェント２４００は、バス２４１５を介して通信する、上述の表１２に列挙したｄｖａｌｉｄ、ｄｉｄ、ｄｔｙｐｅ、ｄｌａｓｔ、及びｄｄａｔａなどの全ての信号上で、マスターデータチャネル２４１２を用いる。エージェント２４００は、バス２４１６を介して通信する、上述の表１５に列挙したｗｖａｌｉｄ、ｗｉｄ、及びｗｓｔａｔｕｓ等のすべての信号上で、マスター書き込み応答チャネル２４１３を用いる。
【０２５９】
スレーブサイド２４２０は、スレーブ属性チャネル２４２１、スレーブデータチャネル２４２２、及びスレーブ書き込み応答チャネル２４２３を含む。エージェント２４００は、バス２４２４を介して通信する、上述の表５に列挙したようなｃｒｅｔｕｒｎ信号上で、スレーブ属性チャネル２４２１を用いる。エージェント２４００は、バス２４２５を介して通信する、上述の表１２に列挙したｄｖａｌｉｄ、ｄｉｄ、ｄｔｙｐｅ、ｄｌａｓｔ、及びｄｄａｔａ等の信号全ての上で、スレーブデータチャネル２４１２を用いる。エージェント２４００は、バス２４２６を介して通信する、上述の表１５に列挙したようなｗｒｅｔｕｒｎ信号上で、スレーブ書き込み応答チャネル２４２３を用いる。
【０２６０】
図２４は、マスター及びスレーブデバイスの両方として動作するために必要とされる全てのパーツを含むエージェント２４００を図示する。ＭＢＡにおいて、エージェントは、しばしば、両方の役目において動作する。例えば、外部メモリエージェントと通信するエージェントは、マスターとスレーブの両方として機能する必要があり得る。マスターとして、そのようなエージェントは、読み出し又は書き込みを始めるためにクレジットを使い、読み出し又は書き込み開始アドレス、及びデータ長を供給し、トランザクションが書き込みである場合はデータを供給し、及びクレジットリターンを受け取る必要がある。スレーブとして、そのようなエージェントは、クレジットをアクセプトし、読み出しトランザクションに応答してメモリによって供給されるデータをアクセプトし、及びクレジットをリターンする必要がある。この例は、２方向のデータフローを想定している。この例は、一般的に、図２４において示したパーツ全てを必要とする。
【０２６１】
図２４のパーツ全てよりも必要とするパーツが少ない他の例もある。出力デバイス等の書き込み専用周辺機器に結合されるエージェントを想定する。そのようなエージェントは、書き込みを始めるためにクレジットを使い、必要に応じて書き込み開始アドレス及びデータ長を供給し、書き込みデータを供給し、及びクレジットリターンを受け取る必要がある。また、そのようなエージェントは、書き込み応答を書き込み専用周辺機器に生成し得る。書き込み専用周辺機器はデータをリターンしないであろうし、そのため、そのようなエージェントは、バストランザクションを制御する必要もないであろうため、スレーブデバイスである必要がないであろう。そのようなエージェントは、マスター属性チャネル２４１１、マスターデータチャネル２４１２、及びマスター書き込み応答チャネル２４２３を必要とし得る。
【０２６２】
入力デバイス等の読み出し専用周辺機器に結合されるエージェントの別の例を考える。そのようなエージェントは、読み出しを始めるためにクレジットを使い、クレジットリターンを受け取る必要がある。そのようなエージェントは、クレジットをアクセプトし、読み出しトランザクションに応答してメモリにより供給されるデータをアクセプトし、及びクレジットをリターンするために、スレーブとして動作する必要がある。そのようなエージェントは、マスター属性チャネル２４１２、スレーブ属性チャネル２４２１、スレーブデータチャネル２４２２、及びスレーブ書き込み応答チャネル２４２３を必要とし得る。このエージェントは、マスターデータチャネル２４１２又はマスター書き込み応答チャネル２４１３を必要としない。
【０２６３】
他の解決策が、異なるコマンドタイプ間で幾つかの信号を共有し得る（例えば、読み出し及び書き込みが、アドレスピンを共有し得る）。典型的に、これらの他の解決策は、読み出しデータと書き込みデータとを分離する。これは、５１２ビット及びそれ以上などの大きなデータ幅でのワイヤ輻輳の最大の原因である。ＭＢＡプロトコルは、トランザクションタイプに関係なく、同じピンを横切って全てのトランザクションを送信し、その結果、最大のワイヤ共有と最小の物理的オーバーヘッドを達成する。
【０２６４】
ＭＢＡプロトコルは、マスターからスレーブへトランザクションを送るためにトランザクション属性チャネル（ＴＡＣ）及びトランザクションデータチャネル（ＴＤＣ）の２つのチャネルしか必要としない。ＴＡＣは、アドレス、メモリ属性、及びトランザクションタイプを含む、全てのトランザクション属性を送信する。ＴＤＣは、データを１つ又は複数のフェーズにおいて送信する。全てのトランザクションタイプが同じ２つのチャネルを用いるので、例示の実施形態は、全範囲の異なるトランザクションタイプを送信するために、最小数の物理的ワイヤしか必要としない。
【０２６５】
ＭＢＡプロトコルによって提供されるチャネル共有は、結果として、大きな相互接続に対して物理的ワイヤ輻輳を有意に減少させ、複数のマスターを備えるスレーブデバイスを達成する。これは、面積及び電力を低減させ、性能を向上させ、物理的閉鎖に対する設計サイクルを短縮するという結果をもたらす。
【図１】
2020191122.tif 000024
【図２】
2020191122.tif 000025
【図３】
2020191122.tif 000026
【図４】
2020191122.tif 000027
【図５】
2020191122.tif 000028
【図６】
2020191122.tif 000029
【図７】
2020191122.tif 000030
【図８】
2020191122.tif 000031
【図９】
2020191122.tif 000032
【図１０】
2020191122.tif 000033
【図１１】
2020191122.tif 000034
【図１２】
2020191122.tif 000035
【図１３】
2020191122.tif 000036
【図１４】
2020191122.tif 000037
【図１５】
2020191122.tif 000038
【図１６】
2020191122.tif 000039
【図１７】
2020191122.tif 000040
【図１８】
2020191122.tif 000041
【図１９】
2020191122.tif 000042
【図２０】
2020191122.tif 000043
【図２１】
2020191122.tif 000044
【図２２】
2020191122.tif 000045
【図２３】
2020191122.tif 000046
【図２４】
2020191122.tif 000047
【手続補正書】
【提出日】令和2年8月6日(2020.8.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムであって、
第１のバスエージェントと、
第２のバスエージェントと、
前記第１のバスエージェントと前記第２のバスエージェントとに結合され、前記第１のバスエージェントから前記第２のバスエージェントへのクレジットされる属性チャネルと前記第１のバスエージェントから前記第２のバスエージェントへのクレジットされないデータチャネルとを含む、バスインターフェースと、
を含み、
前記第１のバスエージェントが、前記クレジットされる属性チャネルのクレジットを追跡するように動作可能なカウンタを含み、前記クレジットが複数のクレジットタイプに関連し、
前記第１のバスエージェントが、
前記カウンタを用いて、前記クレジットされる属性チャネルが、トランザクションを実行するために、第１のトランザクションタイプに対応する前記複数のクレジットタイプの第１のクレジットタイプの十分なクレジットを有するかどうかを判定し、
前記クレジットされる属性チャネルが十分なクレジットを有することに応答して、
前記クレジットされる属性チャネルを介して前記第２のバスエージェントに前記トランザクションの属性を転送し、
前記クレジットされないデータチャネルを介して前記第２のバスエージェントに前記トランザクションのデータを転送する、
ことによって前記トランザクションを実行する、
ように動作可能である、システム。
【請求項２】
請求項１に記載のシステムであって、
前記トランザクションが第１のトランザクションであり、
前記第１のバスエージェントが、
前記カウンタを用いて、前記クレジットされる属性チャネルが、第２のトランザクションを実行するために、前記第１のクレジットタイプと異なる第２のクレジットタイプの十分なクレジットを有するかどうかを判定し、
前記クレジットされる属性チャネルが前記第２のクレジットタイプの十分なクレジットを有することに応答して、前記属性が前記第１のトランザクションと前記第２のトランザクションとに対応するように、前記クレジットされる属性チャネルを介して前記第２のバスエージェントに前記属性を転送することにより前記第２のトランザクションを実行する、
ように更に動作可能である、システム。
【請求項３】
請求項２に記載のシステムであって、
前記属性が、前記第１のトランザクションの第１のクレジットタイプに関連する第１のビットと前記第２のトランザクションの第２のクレジットタイプに関連する第２のビットとを含むビットベクトルを含む、システム。
【請求項４】
請求項１に記載のシステムであって、
前記第１のバスエージェントが、クロックサイクルの間に前記属性と前記データとを転送するように更に動作可能である、システム。
【請求項５】
請求項１に記載のシステムであって、
前記第１のバスエージェントが、第１のクロックサイクルの間に前記属性を転送し、前記第１のクロックサイクルの後の第２のクロックサイクルの間に前記データを転送するように更に動作可能である、システム。
【請求項６】
請求項１に記載のシステムであって、
前記データが前記トランザクションの第１のデータのサブセットであり、前記第１のデータのサブセットが第１のデータフェーズの間に転送され、
前記第１のバスエージェントが、第２のデータフェーズの間に前記クレジットされないデータチャネルを介して前記第２のバスエージェントに前記トランザクションの第２のデータのサブセットを転送するように更に動作可能である、システム。
【請求項７】
請求項１に記載のシステムであって、
前記トランザクションを実行することが、第１のクレジットタイプのクレジットを消費する、システム。
【請求項８】
請求項１に記載のシスムであって、
前記クレジットされる属性チャネルが第１のクレジットされる属性チャネルであり、
前記バスインターフェースが、前記第２のバスエージェントから前記第１のバスエージェントへの第２のクレジットされる属性チャネルを更に含み、
前記第２のバスエージェントが、前記トランザクションの実行の後に、前記第１のバスエージェントに対して前記第１のクレジットタイプのクレジットをリターンするように動作可能である、システム。
【請求項９】
請求項１に記載のシステムであって、
前記バスインターフェースが、前記第２のバスエージェントから前記第１のバスエージェントへの書き込みリターンチャネルを更に含み、
前記第２のバスエージェントが、前記書き込みリターンチャネルを介して前記第１のバスエージェントに前記トランザクションに対する応答を送信するように動作可能である、システム。
【請求項１０】
請求項９に記載のシステムであって、
前記トランザクションに対する応答が、前記第１のバスエージェントに対する前記第１のクレジットタイプのクレジットのリターンを含む、システム。
【請求項１１】
請求項１に記載のシステムであって、
前記属性が、前記トランザクションに関連する前記第１のクレジットタイプの表示を含む、システム。
【請求項１２】
請求項１に記載のシステムであって、
前記第１のバスエージェントが、
前記クレジットされる属性チャネルを介して前記属性を転送し、
前記第２のバスエージェントからの応答を受信することなしに、前記クレジットされないデータチャネルを介して前記データを転送する、
ように更に動作可能である、システム。
【請求項１３】
請求項１に記載のシステムであって、
前記属性と前記データとの各々が、前記トランザクションの識別子の表示を含む、システム。
【請求項１４】
プロセッサであって、
第１の処理コアと、
第２の処理コアと、
前記第１及び第２の処理コアに結合され、前記第１の処理コアから前記第２の処理コアへのクレジットされる属性チャネルと前記第１の処理コアから前記第２の処理コアへのクレジットされないデータチャネルとを含む、バスインターフェースと、
を含み、
前記第１の処理コアが、
前記クレジットされる属性チャネルの複数のクレジットタイプを計数し、
前記クレジットされる属性チャネルが、トランザクションを実行するために、第１のトランザクションに対応する前記複数のクレジットタイプの第１のクレジットタイプの十分なクレジットを有するかどうかを判定し、
前記クレジットされる属性チャネルが十分なクレジットを有することに応答して、
前記クレジットされる属性チャネルを介して前記第２の処理コアに前記トランザクションの属性を転送し、
前記クレジットされないデータチャネルを介して前記第２の処理コアに前記トランザクションのデータを転送する、
ように動作可能である、プロセッサ。
【請求項１５】
請求項１４に記載のプロセッサであって、
前記トランザクションが第１のトランザクションであり、
前記第１の処理コアが、
前記クレジットされる属性チャネルが、第２のトランザクションを実行するために、前記第１のクレジットタイプとは異なる第２のクレジットタイプの十分なクレジットを有するかどうかを判定し、
前記クレジットされる属性チャネルが前記第２のクレジットタイプの十分なクレジットを有することに応答して、前記属性が前記第１のトランザクションと前記第２のトランザクションとに対応するように、前記クレジットされる属性チャネルを介して前記第２の処理コアに前記属性を転送することによって前記第２のトランザクションを実行する、
ように更に動作可能である、プロセッサ。
【請求項１６】
請求項１５に記載のプロセッサであって、
前記属性が、前記第１のトランザクションの前記第１のクレジットタイプに関連する第１のビットと前記第２のトランザクションの前記第２のクレジットタイプに関連する第２のビットとを含むビットベクトルを含む、プロセッサ。
【請求項１７】
請求項１４に記載のプロセッサであって、
前記第１の処理コアが、クロックサイクルの間に前記属性と前記データとを転送するように更に動作可能である、プロセッサ。
【請求項１８】
請求項１４に記載のプロセッサであって、
前記第１の処理コアが、第１のクロックサイクルの間に前記属性を転送し、前記第１のクロックサイクルの後の第２のクロックサイクルの間に前記データを転送るように更に動作可能である、プロセッサ。
【請求項１９】
請求項１４に記載のプロセッサであって、
前記クレジットされる属性チャネルが第１のクレジットされる属性チャネルであり、
前記バスインターフェースが、前記第２の処理コアから前記第１の処理コアへの第２のクレジットされる属性チャネルを更に含み、
前記第２の処理コアが、前記トランザクションの実行の後に、前記第１の処理コアに前記第１のクレジットタイプのクレジットをリターンするように動作可能である、プロセッサ。
【請求項２０】
請求項１４に記載のプロセッサであって、
前記バスインターフェースが、前記第２の処理コアから前記第１の処理コアへの書き込みリターンチャネルを更に含み、
前記第２の処理コアが、前記書き込みリターンチャネルを介して前記第１の処理コアに前記トランザクションに対する応答を送信するように動作可能であり、
前記トランザクションに対する応答が、前記第１の処理コアに対する前記第１のクレジットタイプのクレジットのリターンを含む、プロセッサ。