(57)【特許請求の範囲】
【請求項１】
マスタ・デバイスと、
複数のスレーブ・デバイスと、
前記マスタ・デバイスを前記複数のスレーブ・デバイスに結合して、前記マスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによってトランザクションが実行されることを可能にするように構成された相互接続回路とを備えるデータ処理システムであって、
前記マスタ・デバイスは、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行するように構成され、前記マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、
前記相互接続回路は、前記複数のトランザクションのそれぞれに関して、そのトランザクションを実行することを要求される前記スレーブ・デバイスを決定するために前記アドレス情報及び前記数量指示を解析するように構成され、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中でその決定されたスレーブ・デバイスによって実行されるべき前記トランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路を含み、
決定された各スレーブ・デバイスは、その決定されたスレーブ・デバイスによって実行される各トランザクションの完了を識別する応答を前記マスタ・デバイスに与えるように構成され、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの前記応答とは無関係にそのスレーブ・デバイスの応答を与えるように構成され、各応答は、前記基本トランザクション識別子から決定されたトランザクション識別子と、前記マスタ・デバイスが、前記マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にするトランザクション固有の情報とを含むデータ処理システム。
【請求項２】
前記要求配信回路によって発行される前記トランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、そのマルチトランザクション要求が発行された前記決定されたスレーブ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する請求項１に記載のデータ処理システム。
【請求項３】
前記マスタ・デバイスによって発行される前記マルチトランザクション要求は、マルチバースト・トランザクション要求であり、前記複数のトランザクションのそれぞれは、前記マスタ・デバイスと前記決定されたスレーブ・デバイスの間で実行されるべき複数のデータ転送が指定されるバースト・トランザクションである請求項１又は請求項２に記載のデータ処理システム。
【請求項４】
前記アドレス情報は、基本アドレスを備え、前記マルチトランザクション要求によって識別される各トランザクションに関するアドレスは、前記基本アドレスを基準として決定される請求項１から３までのいずれか一項に記載のデータ処理システム。
【請求項５】
各前記マルチトランザクション要求は、連続的なアドレス範囲内の所定のアドレスと関係する一連のトランザクションを識別する請求項４に記載のデータ処理システム。
【請求項６】
前記マルチトランザクション要求は、前記マルチトランザクション要求によって識別される各トランザクションに関する前記アドレスを決定するのに前記基本アドレスとの組合せで使用されるマスク情報を備える請求項４に記載のデータ処理システム。
【請求項７】
スレーブ・デバイスが、特定のトランザクションに関する応答を与える場合、前記応答の中に含められる前記トランザクション識別子を生成するのにそのスレーブ・デバイスによって前記基本トランザクション識別子との組合せで使用される前記トランザクション固有の情報は、前記トランザクションのために指定された前記アドレスのいくつかのビットを備える請求項４に記載のデータ処理システム。
【請求項８】
キャッシュ・ストレージを有する少なくとも１つの更なるマスタ・デバイスを更に備えるデータ処理システムであって、
そのキャッシュ・ストレージの中には、前記少なくとも１つの更なるマスタ・デバイスによってアクセスされるようにデータがキャッシュされ、
前記相互接続回路は、受信されたトランザクション要求に応答して、前記受信されたトランザクション要求に関連付けられた前記トランザクションに関して指定されたアドレスに基づいて、そのアドレスにおけるデータが前記キャッシュ・ストレージ内に記憶されているかどうかを決定するために、前記キャッシュ・ストレージに関してスヌープ動作を実行するスヌープ回路を備え、
前記要求配信回路は、前記複数のトランザクションのうちのいずれかが、前記スヌープ回路によってスヌープ動作が実行されることを要求するアドレスを指定するかどうかを決定するために前記アドレス情報及び前記数量指示を解析するように更に構成され、
前記要求配信回路は、前記複数のトランザクションのうちの少なくとも１つがスヌープ動作が実行されることを要求すると決定したことに応答して、前記マスタ・デバイスから受信された前記マルチトランザクション要求を複数のトランザクション要求に分割し、前記スヌープ回路に対して前記トランザクション要求のうちの少なくとも１つを発行する請求項１から７までのいずれか一項に記載のデータ処理システム。
【請求項９】
前記スヌープ回路に対して発行される前記トランザクション要求のうちの少なくとも１つは、スヌープ動作が実行されることが要求される前記複数のトランザクションのうちの複数を識別するマルチトランザクション要求を備える請求項８に記載のデータ処理システム。
【請求項１０】
前記スヌープ回路は、複数のスヌープ回路を備え、各スヌープ回路は、異なるアドレス範囲に関連付けられ、前記要求配信回路は、各スヌープ回路に対して別々のトランザクション要求を発行するように構成される請求項８又は９に記載のデータ処理システム。
【請求項１１】
前記スヌープ回路は、前記キャッシュ・ストレージの中に記憶されたデータのアドレスのアドレス指示を保持するように構成されたスヌープ・フィルタを備え、トランザクションのために実行される前記スヌープ動作は、前記トランザクションによって指定される前記アドレスを使用して前記スヌープ・フィルタを参照すること、及び前記アドレスが、前記スヌープ・フィルタによって保持される前記アドレス指示のうちの１つと合致することを前記スヌープ・フィルタが示す場合、前記キャッシュ・ストレージに対してスヌープ要求を発行することを備える請求項８から１０までのいずれか一項に記載のデータ処理システム。
【請求項１２】
前記複数のスレーブ・デバイスは、関連付けられたメモリ・デバイスに結合された複数のメモリ・コントローラを含む請求項１から１１までのいずれか一項に記載のデータ処理システム。
【請求項１３】
関連付けられた各メモリ・デバイスは、アドレスのパターンに関連付けられたデータを記憶するように構成され、１つのメモリ・デバイスのアドレスの前記パターンは、別のメモリ・デバイスのアドレスの前記パターンとインターリーブされ、
前記要求配信回路は、各メモリ・コントローラに、前記関連付けられたメモリ・デバイスのアドレスの前記パターン内に指定されたアドレスがある前記複数のトランザクションの中の前記トランザクションを実行させるために、前記マルチバースト・トランザクション要求を、各メモリ・コントローラに対して発行される別々のマルチバースト・トランザクション要求に分割するように構成される、請求項３に従属する場合の請求項１２に記載のデータ処理システム。
【請求項１４】
前記メモリ・コントローラのそれぞれは、いずれのトランザクションがそのメモリ・コントローラによる実行を要求するかを識別するのに前記メモリ・コントローラによって使用される制御データを供給される請求項１３に記載のデータ処理システム。
【請求項１５】
前記要求配信回路は、各メモリ・コントローラに対して発行される前記マルチトランザクション要求の中に前記制御データを符号化する請求項１４に記載のデータ処理システム。
【請求項１６】
前記マスタ・デバイスによって発行される前記マルチトランザクション要求は、各書込みトランザクションに関して前記マスタ・デバイスから前記決定されたスレーブ・デバイスに書込みデータが書き込まれることを要求する複数の書込みトランザクションを識別し、
前記相互接続回路は、前記複数の書込みトランザクションのそれぞれに関する前記書込みデータを、各書込みトランザクションに関して前記決定されたスレーブ・デバイスにルーティングするように構成された書込みデータ・ルーティング回路を含み、
前記マスタ・デバイスは、各トランザクションに関して前記書込みデータ・ルーティング回路を通る前記書込みデータの出力を、そのトランザクションに関する前記決定されたスレーブ・デバイスが、前記書込みデータを求める要求を発行するまで、遅延させるように構成される請求項１から１５までのいずれか一項に記載のデータ処理システム。
【請求項１７】
決定された各スレーブ・デバイスが前記書込みデータを求める前記要求を発行する、決定された各スレーブ・デバイスと前記マスタ・デバイスの間のハンドシェーク機構を更に備える請求項１６に記載のデータ処理システム。
【請求項１８】
前記マスタ・デバイスは、前記書込みデータが記憶されるキャッシュ・ストレージを備え、前記決定されたスレーブ・デバイスによって発行される前記書込みデータを求める前記要求は、前記要求された書込みデータが前記キャッシュ・ストレージから退去させられるように構成される請求項１６に記載のデータ処理システム。
【請求項１９】
前記相互接続回路は、
前記複数のトランザクションの実行中に各スレーブ・デバイスによって発行された前記応答を前記マスタ・デバイスにルーティングするように構成された応答ルーティング回路と、
前記要求配信回路に関連付けられ、前記要求配信回路が、前記マルチトランザクション要求を、異なるスレーブ・デバイスに対して発行される複数のトランザクション要求に分割すると決定されると、異なるスレーブ・デバイスから前記応答ルーティング回路を介して応答が戻されることに起因する前記応答ルーティング回路内の競合を低減しようと努めるために、前記複数のトランザクション要求に関して競合低減対策を適用するように構成された競合緩和回路とを更に備える請求項１から１８までのいずれか一項に記載のデータ処理システム。
【請求項２０】
前記競合低減対策は、前記異なるスレーブ・デバイスのそれぞれに、前記応答ルーティング回路内の異なるタイムスロットを割り当てることを備える請求項１９に記載のデータ処理システム。
【請求項２１】
前記競合低減対策は、前記要求配信回路によって発行される各トランザクション要求に関連して、前記決定されたスレーブ・デバイスによって使用されるデータレートを制限するデータレート指示を与えることを備える請求項１９に記載のデータ処理システム。
【請求項２２】
前記マルチトランザクション要求は、各書込みトランザクションに関して前記マスタ・デバイスから前記決定されたスレーブ・デバイスに書込みデータが書き込まれることを要求する複数の書込みトランザクションを識別し、前記マルチトランザクション要求は、各トランザクションに関して書き込まれるべき前記書込みデータ値を識別するフィールドを含む請求項１から２１までのいずれか一項に記載のデータ処理システム。
【請求項２３】
前記マルチトランザクション要求は、実行されるべき複数の読取りトランザクションを識別し、各読取りデータ値が書き込まれるべきアドレスを識別するのに使用される書込みアドレス指示を更に指定し、その結果、データが、１つのアドレスから読み取られて、別の書込みトランザクション要求が発行されることなしに、次に、別のアドレスに書き込まれることを可能にする請求項１から２１までのいずれか一項に記載のデータ処理システム。
【請求項２４】
前記マスタ・デバイスは、関連するマルチトランザクション書込み要求が後に続くマルチトランザクション読取り要求を発行するように構成され、
前記要求配信回路は、前記マルチトランザクション読取り要求及び前記関連するマルチトランザクション書込み要求に応答して、データが１つのアドレスから読み取られ、次に、別のアドレスに書き込まれるようにするよう、決定された各スレーブ・デバイスに対してトランザクション要求を発行するように構成される請求項１から２１までのいずれか一項に記載のデータ処理システム。
【請求項２５】
前記関連付けられたマルチトランザクション書込み要求は、前記要求配信回路が、前記関連付けられたマルチトランザクション書込み要求を、前記マルチトランザクション読取り要求に関連付けられているものとして識別することを可能にするために、前記マルチトランザクション読取り要求のために使用されるのと同一の基本トランザクション識別子を指定するように構成される請求項２４に記載のデータ処理システム。
【請求項２６】
マスタ・デバイスと複数のスレーブ・デバイスを相互接続して、前記マスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによってトランザクションが実行されることを可能にするための相互接続回路であって、
前記マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を受信するように構成されたマスタ・インターフェースであって、前記マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与えるマスタ・インターフェースと、
前記複数のトランザクションのそれぞれに関して、前記トランザクションを実行することを要求される前記スレーブ・デバイスを決定するために前記アドレス情報及び前記数量指示を解析するように構成され、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中で前記決定されたスレーブ・デバイスによって実行されるべき前記トランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路と、
前記マスタ・デバイスに、決定された各スレーブ・デバイスから与えられる、前記決定されたスレーブ・デバイスによって実行された各トランザクションの完了を識別する応答をルーティングするように構成された応答ルーティング回路であって、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの前記応答とは無関係に前記決定された各スレーブ・デバイスの応答を与え、各応答は、基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、前記マスタ・デバイスが、前記マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にする応答ルーティング回路とを備える相互接続回路。
【請求項２７】
マスタ・デバイスと、
複数のキャッシュ・ストレージ・デバイスと、
前記マスタ・デバイスを前記複数のキャッシュ・ストレージ・デバイスに結合して、前記マスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、前記複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にするように構成された相互接続回路とを備えるデータ処理システムであって、
前記マスタ・デバイスは、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行するように構成され、前記マルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、前記複数のトランザクションのそれぞれは、前記トランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定し、
前記相互接続回路は、前記複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれが前記トランザクションを実行することを要求されるかを決定するために前記アドレス情報及び前記数量指示を解析するように構成され、前記複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中で前記複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべき前記トランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路を含み、
前記データ処理システムは、
前記複数のトランザクションの実行中に前記複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、前記マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかを前記マスタ・デバイスが決定することを可能にするように構成されたキャッシュ・メンテナンス追跡回路を備え、
前記要求配信回路によって発行される前記トランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、前記マルチトランザクション要求が発行された前記キャッシュ・ストレージ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する、データ処理システム。
【請求項２８】
前記アドレス情報は、基本アドレスを備え、前記マルチトランザクション要求によって識別される各トランザクションに関する前記アドレスは、前記基本アドレスを基準として決定される請求項２７に記載のデータ処理システム。
【請求項２９】
更なるマスタ・デバイスを更に備えるデータ処理システムであって、前記複数のキャッシュ・ストレージ・デバイスは、前記マスタ・デバイスと前記更なるマスタ・デバイスによって共有される少なくとも１つのキャッシュ・ストレージ・デバイスを備える請求項２７又は２８に記載のデータ処理システム。
【請求項３０】
更なるマスタ・デバイスを更に備えるデータ処理システムであって、前記複数のキャッシュ・ストレージ・デバイスは、前記更なるマスタ・デバイスによってアクセスされるようにデータをキャッシュするために前記更なるマスタ・デバイスに関連して提供される少なくとも１つのキャッシュ・ストレージ・デバイスを備える請求項２７又は２８に記載のデータ処理システム。
【請求項３１】
前記要求配信回路は、前記複数のトランザクション要求のそれぞれによって指定された前記キャッシュ・メンテナンス動作を実行するために前記複数のキャッシュ・ストレージ・デバイスに関してスヌープ動作を実行するように構成されたスヌープ回路を備える請求項２７から３０までのいずれか一項に記載のデータ処理システム。
【請求項３２】
前記スヌープ回路は、複数のスヌープ回路を備え、各スヌープ回路は、異なるアドレス範囲に関連付けられ、前記要求配信回路は、前記複数のトランザクションのそれぞれに関して、前記複数のスヌープ回路のいずれが前記トランザクションによって指定される前記キャッシュ・メンテナンス動作を実行することを要求されるかを決定するために前記アドレス情報及び前記数量指示を解析し、前記決定に依存して各スヌープ回路に対して別々のトランザクション要求を発行するように構成された第１のステージ要求配信回路を更に備える請求項３１に記載のデータ処理システム。
【請求項３３】
前記キャッシュ・メンテナンス追跡回路は、前記複数のスヌープ回路のそれぞれの内部に備えられたキャッシュ・メンテナンス追跡回路を備え、各キャッシュ・メンテナンス追跡回路は、前記関連付けられたスヌープ回路によって扱われる前記トランザクションによって指定された前記キャッシュ・メンテナンス動作の実行中に前記複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、他の各キャッシュ・メンテナンス追跡回路から与えられる前記進行情報とは無関係に前記マスタ・デバイスに進行情報を与えるように構成される請求項３２に記載のデータ処理システム。
【請求項３４】
前記スヌープ回路は、各キャッシュ・ストレージ・デバイスに関して、前記キャッシュ・ストレージ・デバイスの中に記憶されたデータのアドレスのアドレス指示を保持するように構成されたスヌープ・フィルタを備え、トランザクションのために実行される前記スヌープ動作は、前記トランザクションによって指定される前記アドレスを使用して前記スヌープ・フィルタ内でルックアップ動作を実行すること、及び、各キャッシュ・ストレージ・デバイスに関して、前記アドレスが、前記キャッシュ・ストレージ・デバイスのために前記スヌープ・フィルタによって保持される前記アドレス指示のうちの１つと合致することを前記ルックアップ動作が示す場合、前記キャッシュ・ストレージ・デバイスに対してスヌープ要求を発行することを備える請求項３１から３３までのいずれか一項に記載のデータ処理システム。
【請求項３５】
前記スヌープ・フィルタは、複数のエントリを備え、各エントリは、アドレス指示と、トランザクションの前記アドレスが前記アドレス指示と合致した場合、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれに対してスヌープ要求が発行されるべきかを示すキャッシュ識別子情報とを記憶する請求項３４に記載のデータ処理システム。
【請求項３６】
前記スヌープ・フィルタは、セット・アソシアティブ型のストレージであり、各トランザクションの前記アドレスのインデックス部分は、アドレス指示が前記アドレスと比較されるべき前記スヌープ・フィルタ内のエントリを識別するのに使用され、
前記マルチトランザクション要求によって指定された前記複数のトランザクションが、前記複数のトランザクションを処理する際に前記スヌープ・フィルタの各エントリを複数回、参照することを要求するのに十分なだけ広いアドレス範囲と関係する場合、前記スヌープ回路は、前記スヌープ・フィルタの各エントリがルックアップを１回、受けるために、前記スヌープ・フィルタ内の修正されたルックアップ動作を適用するように構成され、前記エントリから得られた前記アドレス指示のいくつかのビットがマスクされ、次に、前記トランザクションのうちの複数と共通するマスクされたアドレスと比較され、その比較が合致を示す場合、前記スヌープ・フィルタの前記エントリに関連付けられたキャッシュ識別子情報によって示される各キャッシュ・ストレージ・デバイスに対してスヌープ要求が発行される請求項３４又は３５に記載のデータ処理システム。
【請求項３７】
各キャッシュ・ストレージ・デバイスは、複数のキャッシュ・エントリを有するセット・アソシアティブ型のキャッシュ・ストレージ・デバイスであり、各キャッシュ・エントリは、アドレス指示と、１つ又は複数の関連付けられたデータ値とを備え、各トランザクションによって指定される前記キャッシュ・メンテナンス動作を実行する際、前記トランザクションの前記アドレスのインデックス部分が、アドレス指示が前記アドレスと比較されるべきキャッシュ・エントリを識別するのに使用され、
キャッシュ・ストレージ・デバイスが、前記キャッシュ・ストレージ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別するマルチトランザクション要求を前記要求配信回路から受信し、且つ前記複数のトランザクションのうちの前記複数が、前記複数のトランザクションのうちの前記複数によって指定される前記キャッシュ・メンテナンス動作を実行する際、前記キャッシュ・ストレージ・デバイスの各キャッシュ・エントリを複数回、参照することを要求するのに十分なだけ広いアドレス範囲と関係する場合、前記キャッシュ・ストレージ・デバイスは、各キャッシュ・エントリがルックアップを１回、受けるために、修正されたキャッシュ・ルックアップ動作を適用するように構成され、前記キャッシュ・エントリから得られた前記アドレス指示のいくつかのビットがマスクされ、次に、前記トランザクションのうちの複数と共通するマスクされたアドレスと比較され、前記比較が合致を示す場合、前記キャッシュ・エントリにおける前記１つ又は複数のデータ値が、前記キャッシュ・メンテナンス動作の対象とされる、請求項２７から３６までのいずれか一項に記載のデータ処理システム。
【請求項３８】
前記キャッシュ・メンテナンス追跡回路は、前記マルチトランザクション要求によって指定された前記複数のトランザクションの全てが実行されると、前記マスタ・デバイスに対する前記進行情報として単一の組み合わされた応答を与えるように構成される請求項２７から３７までのいずれか一項に記載のデータ処理システム。
【請求項３９】
前記キャッシュ・メンテナンス追跡回路は、前記マスタ・デバイスに対する前記進行情報として、進行情報の複数の別々のアイテムを与えるように構成され、進行情報の各アイテムは、カウント値を与え、前記マスタ・デバイスは、前記複数のトランザクションがいつ完了されたかを決定するために、受信された前記カウント値を累算するように構成される請求項２７から３７までのいずれか一項に記載のデータ処理システム。
【請求項４０】
マスタ・デバイスと複数のキャッシュ・ストレージ・デバイスを相互接続して、前記マスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、前記複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にするための相互接続回路であって、
前記マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を受信するように構成されたマスタ・インターフェースであって、前記マルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、前記複数のトランザクションのそれぞれは、前記トランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定するマスタ・インターフェースと、
前記複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのいずれが前記トランザクションを実行することを要求されるかを決定するために前記アドレス情報及び前記数量指示を解析するように構成され、前記複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中で前記複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべき前記トランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路と、
前記複数のトランザクションの実行中に前記複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、前記マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかを前記マスタ・デバイスが決定することを可能にするように構成されたキャッシュ・メンテナンス追跡回路とを備え、
前記要求配信回路によって発行される前記トランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、前記マルチトランザクション要求が発行された前記キャッシュ・ストレージ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する、相互接続回路。
【請求項４１】
マスタ・デバイスと、複数のスレーブ・デバイスと、前記マスタ・デバイスを前記複数のスレーブ・デバイスに結合して、前記マスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによってトランザクションが実行されることを可能にする相互接続回路とを備えるデータ処理システム内で前記トランザクションを実行する方法であって、
前記マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することであって、前記マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与えることと、
前記相互接続回路内で、前記複数のトランザクションのそれぞれに関して、前記トランザクションを実行することを要求される前記スレーブ・デバイスを決定するために前記アドレス情報及び前記数量指示を解析し、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中で前記決定されたスレーブ・デバイスによって実行されるべき前記トランザクションを識別するトランザクション要求を発行することと、
前記マスタ・デバイスに対して、決定された各スレーブ・デバイスから、前記決定されたスレーブ・デバイスによって実行された各トランザクションの完了を識別する応答を発行することであって、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの応答とは無関係に前記決定された各スレーブ・デバイスの応答を与え、各応答は、前記基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、前記マスタ・デバイスが、前記マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にする、発行することとを備える方法。
【請求項４２】
マスタ手段と、
複数のスレーブ手段と、
前記マスタ手段を前記複数のスレーブ手段に結合して、前記マスタ手段から要求が行われると、前記複数のスレーブ手段によってトランザクションが実行されることを可能にするための相互接続手段とを備えるデータ処理システムであって、
前記マスタ手段は、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することを目的とし、前記マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、
前記相互接続手段は、前記複数のトランザクションのそれぞれに関して、前記トランザクションを実行することを要求される前記スレーブ手段を決定するために前記アドレス情報及び前記数量指示を解析することを目的とし、決定された各スレーブ手段に対して、前記複数のトランザクションの中で前記決定されたスレーブ手段によって実行されるべき前記トランザクションを識別するトランザクション要求を発行することを更に目的とする要求配信手段を含み、
決定された各スレーブ手段は、マスタ手段に、前記決定されたスレーブ手段によって実行された各トランザクションの完了を識別する応答を与えることを目的とし、決定された各スレーブ手段は、他の任意の決定されたスレーブ手段からの前記応答とは無関係に前記決定された各スレーブ手段の応答を与えることを目的とし、各応答は、前記基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、前記マスタ手段が、前記マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にするデータ処理システム。
【請求項４３】
マスタ・デバイスと、複数のキャッシュ・ストレージ・デバイスと、前記マスタ・デバイスを前記複数のキャッシュ・ストレージ・デバイスに結合して、前記マスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、前記複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にし、要求配信回路を含む相互接続回路とを備えるデータ処理システム内で前記キャッシュ・メンテナンス動作を実行する方法であって、
前記マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することであって、前記マルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、前記複数のトランザクションのそれぞれは、前記トランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定する、発行することと、
前記要求配信回路内で、前記複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれが前記トランザクションを実行することを要求されるかを決定するために前記アドレス情報及び前記数量指示を解析し、前記複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中で前記複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべき前記トランザクションを識別するトランザクション要求を発行することと、
前記相互接続回路内で、前記複数のトランザクションの実行中に前記複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、前記マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかを前記マスタ・デバイスが決定することを可能にすることとを備え、
前記要求配信回路によって発行される前記トランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、前記マルチトランザクション要求が発行された前記キャッシュ・ストレージ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する、方法。
【請求項４４】
マスタ手段と、
複数のキャッシュ・ストレージ手段と、
前記マスタ手段を前記複数のキャッシュ・ストレージ手段に結合して、前記マスタ手段によって指定されたキャッシュ・メンテナンス動作が、前記複数のキャッシュ・ストレージ手段によって実行されることを可能にするための相互接続手段とを備えるデータ処理システムであって、
前記マスタ手段は、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することを目的とし、前記マルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、前記複数のトランザクションのそれぞれは、前記トランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定し、
前記相互接続手段は、前記複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ手段のうちのいずれが前記トランザクションを実行することを要求されるかを決定するために前記アドレス情報及び前記数量指示を解析することを目的とし、前記複数のキャッシュ・ストレージ手段のそれぞれに対して、前記複数のトランザクションの中で前記複数のキャッシュ・ストレージ手段のそれぞれによって実行されるべき前記トランザクションを識別するトランザクション要求を発行することを更に目的とする要求配信手段を含み、
前記データ処理システムは、
前記複数のトランザクションの実行中に前記複数のキャッシュ・ストレージ手段から進行指示を受信するため、及び前記マスタ手段に進行情報を与えて、前記複数のトランザクションがいつ完了されたかを前記マスタ手段が決定することを可能にするためのキャッシュ・メンテナンス追跡手段を備え、
前記要求配信手段によって発行される前記トランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、前記マルチトランザクション要求が発行された前記キャッシュ・ストレージ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のトランザクションを扱うためのデータ処理システム及びデータ処理方法に関する。
【背景技術】
【０００２】
最新のデータ処理システムにおいて、利用可能なメモリ帯域幅を最も効率的に利用することがますます重要となっている。例えば、システム・オン・チップ（ＳｏＣ）において、相当な量のデータの書込み又は読取りが関与するトランザクションを発行することができるグラフィックス・プロセシング・ユニット（ＧＰＵ）及びディスプレイ・コントローラなどの様々なマスタ・デバイスが存在する。トランザクションを、各ビート中に或る量のデータがメモリに書き込まれる、又はメモリから読み取られる複数のビートから成るバースト・トランザクションとして発行することが知られている。そのようなバースト・トランザクションは、メモリ帯域幅を非常に効率的に利用することができる。しかし、任意の特定のトランザクションが特定のスレーブ・デバイスによって処理されなければならないという限界が存在する。最新のシステムにおいて、複数のメモリ・デバイスが、ＳｏＣ内に備えられること、又はＳｏＣに接続されることが可能であり、データは、それらの様々なデバイスの間でインターリーブされることが可能であり、このことが、任意の特定のトランザクションによってアドレス指定され得るデータの量を制限する可能性がある。
【０００３】
更に、最新のＳｏＣは、通常、複数のマスタ・デバイスを含み、それらのデバイスのそれぞれは、１つ又は複数のレベルのキャッシュを包含することが可能である。このことは、キャッシュ整合性の問題をもたらし、通常、様々なマスタ・デバイスとスレーブ・デバイスを相互接続する相互接続回路は、キャッシュ・コンテンツが整合性を有するように保たれること、及びそれに相応するように各マスタ・デバイスが最新のデータにアクセスすることを確実にするキャッシュ整合性回路（例えば、スヌープ回路）を含む。トランザクションが発行された時点で、トランザクションがキャッシュ可能なアドレスを指定するものと想定すると、トランザクションが発行された時点で、そのアドレスにおけるデータがキャッシュされているか否かは分らない。したがって、データへのアクセスがキャッシュの中で行われるか、又はメモリの中で行われるかは、分らない。通常、このことは、任意の特定のトランザクションによってアドレス指定されるデータの量を、キャッシュ・ラインのサイズを超えないように制限し、したがって、キャッシュの中にそのデータが存在する場合、任意の特定のトランザクションが、キャッシュへのアクセスによって提供され得ることを確実にする。バースト・トランザクションの場合、したがって、このことは、バーストの全体的なサイズを制限する。そのようなアプローチは、キャッシュ整合性が単純で、効果的な様態で保持され得ることを確実にするが、複数のより小さいバースト・トランザクションを扱う必要性のため、利用可能なメモリ帯域幅の効率的な利用を低減する。また、そのようなより小さいバーストの使用は、相互接続回路内の電力消費を増加させることにもなり、並べ替えキューにおける将来のトランザクションの可視性を事実上低下させることにより、メモリ・コントローラの並べ替え能力を低下させて、メモリ効率を低下させる可能性がある。
【０００４】
米国特許出願第２０１０／００４２７５９号が、２つ以上のメモリ・デバイスが単一の集合ターゲットとして扱われることを可能にする機構を提供する。その結果、マスタ・デバイスが、その単一の集合ターゲットにトランザクションを発行することができ、より大きいバースト・トランザクションが指定されることを可能にする。次に、その単一のトランザクションが、様々なスレーブ・デバイスに送るために分割される。しかし、結果は、結果が、元のトランザクションが向けられた単一の集合ターゲットからマスタに戻され得るように再び組み合わされる必要がある。このことが、結果を協調させる際の複雑さをもたらす。
【０００５】
ＳｏＣにおけるマスタ・デバイスとスレーブ・デバイスの間でトランザクションを効率的に扱うことに関連する前述した問題は、ＳｏＣ内で発行される他のタイプのトランザクションに関して生じる可能性もある。例えば、マスタ・デバイスが、ＳｏＣ内の複数のキャッシュ・ストレージ・デバイスに関して実行されるべきキャッシュ・メンテナンス動作を識別するトランザクションを相互接続回路に対して発行することが可能である。関連するトランザクションが相互接続回路に対して発行された時点で、いずれの特定のキャッシュ・ストレージ・デバイス、又はいずれの特定の複数のキャッシュ・ストレージ・デバイスがキャッシュ・メンテナンス動作を実施する必要があるか分らない可能性があるので、各トランザクションを、単一のキャッシュ・ラインのデータをアドレス指定することに制限することが通常である。したがって、複数のキャッシュ・ラインに関してキャッシュ・メンテナンス動作を実行するために、通常、複数の別々のトランザクションを発行する必要がある。このことは、相互接続内の電力消費を増加させる傾向がある。
【０００６】
したがって、データ処理システム内でトランザクションを扱うための改良された機構を提供することが望ましい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願第２０１０／００４２７５９号
【発明の概要】
【課題を解決するための手段】
【０００８】
第１の態様から見て、本発明は、マスタ・デバイスと、複数のスレーブ・デバイスと、マスタ・デバイスを前記複数のスレーブ・デバイスに結合して、マスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによってトランザクションが実行されることを可能にするように構成された相互接続回路とを備えるデータ処理システムを提供し、マスタ・デバイスは、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行するように構成され、マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、相互接続回路は、複数のトランザクションのそれぞれに関して、そのトランザクションを実行することを要求されるスレーブ・デバイスを決定するためにアドレス情報及び数量指示を解析するように構成され、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中でその決定されたスレーブ・デバイスによって実行されるべきトランザクションを識別するトランザクション要求を発行するように更に構成され、決定された各スレーブ・デバイスは、その決定されたスレーブ・デバイスによって実行される各トランザクションの完了を識別する応答をマスタ・デバイスに与えるように構成され、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの応答とは無関係にそのスレーブ・デバイスの応答を与えるように構成され、各応答は、基本トランザクション識別子から決定されたトランザクション識別子と、マスタ・デバイスが、マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にするトランザクション固有の情報とを含む。
【０００９】
本発明によれば、マスタ・デバイスは、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行するように構成される。次に、相互接続回路内の要求配信回路が、いずれのスレーブ・デバイスが各トランザクションを実行することを要求されるかを決定するために、マルチトランザクション要求と一緒に与えられるアドレス情報、並びに実行されるべきトランザクションの数を示す数量指示を解析する。その解析の結果、次に、要求配信回路が、関係のあるスレーブ・デバイスに対して、それらのスレーブ・デバイスによって実行されるべきトランザクションを識別するトランザクション要求を発行する。次に、各スレーブ・デバイスが、そのスレーブ・デバイスに割り当てられたトランザクションを処理し、各トランザクションの完了を識別する応答をマスタ・デバイスに与えるように構成される。各スレーブ・デバイスは、その他のスレーブ・デバイスのいずれからの応答とも無関係にそのスレーブ・デバイスの応答を与え、各応答は、マルチトランザクション要求の中で与えられる基本トランザクション識別子から決定されたトランザクション識別子と、いくらかのトランザクション固有の情報とを含み、このことが、マスタ・デバイスが、マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にする。
【００１０】
そのようなアプローチによって、要求配信回路は、マルチトランザクション要求内で指定された個々のトランザクションが、処理のために適切なスレーブ・デバイスにルーティングされることを、ただし、様々なスレーブ・デバイスによって生成される応答を協調させる必要なしに、確実にすることができる。詳細には、マスタ・デバイスは、単一の要求（マルチトランザクション要求）を発行していながら、その要求が複数のトランザクションと関係することを認識しており、マスタ・デバイスは、各トランザクションに関して応答を受信することを予期する。したがって、これらの応答は、マルチトランザクション要求内のいずれのトランザクションに応答が行われているのかをマスタ・デバイスが決定することを可能にする適切なトランザクション識別子と一緒に、各スレーブ・デバイスによって独立に生成されることが可能である。
【００１１】
応答は、様々な形態をとる。例えば、読取りトランザクションに関して、マスタ・デバイスに１つ又は複数の応答が与えられることが可能であり、各応答は、読取りデータのアイテムを識別する。書込みトランザクションの場合、スレーブ・デバイスからマスタ・デバイスに応答が送り返されて、書込みトランザクションが実行されたこと、例えば、書込みデータがスレーブ・デバイスによって受信されたことが確認される。
【００１２】
マルチトランザクション要求は、複数のトランザクションと関係するため、このことは、相互接続回路内の効率の良さ、及び相互接続回路とスレーブ・デバイスの間の帯域幅の効率的な利用につながり得る。例えば、マルチトランザクション要求の複数のトランザクションを解析することによって、このことは、相互接続回路内のリソースのより効率的な利用につながり得る。更に、トランザクションのうちのいくつかが同一のスレーブ・デバイスによって扱われ得ると決定された場合、要求配信回路が、それらの複数のトランザクションを一緒にスレーブ・デバイスにルーティングすることが可能であり、相互接続回路とスレーブ・デバイスの間の帯域幅のより良い利用を可能にする。更に、スレーブ・デバイスにそれらの複数のトランザクションの知識を与えることによって、スレーブ・デバイスは、トランザクションをより効率的に処理することができる可能性がある。特定の実例として、スレーブ・デバイスは、ＤＲＡＭメモリに対するアクセスを制御するのに使用されるメモリ・コントローラであり得る。メモリの同一の開いたページ内のデータの複数のアイテムにアクセスする方が、より効率的であり、複数のトランザクションを同時に受信し、扱うことによって、メモリ・コントローラは、それらの様々なトランザクションを別々に扱う必要があるとした場合と比べて、その一連のトランザクションをより効率的に処理することができる可能性がある。その場合、スレーブ・デバイスは、それでも、各トランザクションの完了を識別する応答をマスタ・デバイスに送ることができ、各トランザクションがいつ処理されたかをマスタ・デバイスが決定することを可能にする。
【００１３】
要求配信回路が、決定された各スレーブ・デバイスに対してトランザクション要求を発行することが可能であるいくつもの方法が存在する。一実施例において、要求配信回路によって発行されるトランザクション要求は、少なくとも１つのマルチトランザクション要求を含み、前記少なくとも１つのマルチトランザクション要求のそれぞれは、そのマルチトランザクション要求が発行された、決定されたスレーブ・デバイスによって実行されることが要求される前記複数のトランザクションのうちの複数を識別する。そのようなアプローチによって、個別のスレーブ・デバイスは、そのスレーブ・デバイスが処理すべき複数のトランザクションについての通知を受信することができ、そのスレーブ・デバイスが、効率を最適化するようにそれらのトランザクションの扱いを構成することを可能にする。特定の実例として、要求配信回路が、マルチトランザクション要求の中のトランザクションの特定のシーケンスがスヌーピング／キャッシュ整合性動作の対象とされる必要がなく、そのシーケンスにおけるトランザクションの全てが特定のスレーブ・デバイスによるサービスを受けると決定した場合、それらのシーケンスのトランザクションを識別するマルチトランザクション要求がそのスレーブ・デバイスに対して発行されることが可能である。その場合、しばしば、スレーブ・デバイスは、それらの個々のトランザクションを少しずつ受信して、それらのトランザクションを別々に処理している場合と比べて、実行されるべきトランザクションのシーケンス全体を認識していることの結果として、それらのトランザクションをより効率的に処理することができる。
【００１４】
マルチトランザクション要求は、様々な形態をとることが可能である。しかし、一実施例において、マスタ・デバイスによって発行されるマルチトランザクション要求は、マルチバースト・トランザクション要求であり、前記複数のトランザクションのそれぞれは、そのバースト・トランザクションのためにマスタ・デバイスと決定されたスレーブ・デバイスの間で実行されるべき複数のデータ転送を指定するバースト・トランザクションである。
【００１５】
アドレス情報は、様々な形態をとることが可能であるが、一実施例において、基本アドレスを備え、マルチトランザクション要求によって識別される各トランザクションに関するアドレスは、その基本アドレスを基準として決定される。したがって、各トランザクションに関連付けられた個々のアドレスは、基本アドレスを基準として決定され得る。
【００１６】
一実施例において、各マルチトランザクション要求は、連続的なアドレス範囲内の所定のアドレスと関係する一連のトランザクションを識別する。したがって、純粋に例として、各トランザクションが、或るバイト数のデータを識別するバースト・トランザクションである場合、アドレスは、隣接するブロックのデータを指定するように識別されることが可能であり、各ブロックは、マルチトランザクション要求によって指定される一連のトランザクション内の個別のバースト・トランザクションの対象である。
【００１７】
代替の実施例において、一連のトランザクションが連続的なアドレス範囲内の所定のアドレスと関係することは必須ではない。例えば、一実施例において、マルチトランザクション要求は、マルチトランザクション要求によって識別される各トランザクションに関するアドレスを決定するのに基本アドレスと組合せで使用されるマスク情報を備える。一実施例において、マスク情報は、ビット単位のフィールドの形態をとることが可能であり、このフィールドは、例えば、一連の隣接するブロックのデータのいずれのブロックが各トランザクションの対象とされるべきかを識別するのに使用され得る。例えば、「１０１１」というビット単位のフィールドが、マルチトランザクション要求内の３つのトランザクションの連続によって処理されるべき第１のデータ・ブロック、第２のデータ・ブロック、及び第４のデータ・ブロックを識別することが可能である。
【００１８】
マスタ・デバイスに戻される各応答に関するトランザクション識別子を形成するために基本トランザクション識別子と組み合わされるトランザクション固有の情報は、様々な形態をとることが可能である。しかし、一実施例において、スレーブ・デバイスが、特定のトランザクションに関する応答を与える場合、応答の中に含められるトランザクション識別子を生成するのにそのスレーブ・デバイスによって基本トランザクション識別子との組合せで使用されるトランザクション固有の情報は、そのトランザクションのために指定されたアドレスのいくつかのビットを備える。例えば、そのアドレスの或る数の下位ビットが、基本トランザクション識別子と組み合わされた場合、各トランザクションを一意に識別するのに使用されることが可能である。
【００１９】
一実施例において、データ処理システムは、キャッシュ・ストレージを有する少なくとも１つの更なるマスタ・デバイスを更に備え、そのキャッシュ・ストレージの中には、その少なくとも１つの更なるマスタ・デバイスによってアクセスされるようにデータがキャッシュされる。その結果、データ処理システム内でキャッシュ整合性問題が生じることがあり、要求配信回路は、マルチトランザクション要求によって指定された様々なトランザクションをどのように配信すべきかを決定する際に、そのことを考慮に入れるように構成される。詳細には、一実施例において、相互接続回路は、受信されたトランザクション要求に応答して、その受信されたトランザクション要求に関連付けられたトランザクションに関して指定されたアドレスに基づいて、そのアドレスにおけるデータがキャッシュ・ストレージ内に記憶されているかどうかを決定するために、前記キャッシュ・ストレージに関してスヌープ動作を実行するスヌープ回路を備える。要求配信回路は、複数のトランザクションのうちのいずれかが、スヌープ回路によってスヌープ動作が実行されることを要求するアドレスを指定するかどうかを決定するためにアドレス情報及び数量指示を解析し、複数のトランザクションのうちの少なくとも１つが、スヌープ動作が実行されることを要求すると決定したことに応答して、マスタ・デバイスから受信されたマルチトランザクション要求を複数のトランザクション要求に分割し、スヌープ回路に対してトランザクション要求のうちの少なくとも１つを発行するように更に構成される。スヌープ回路が実行するスヌープ動作の結果としてスヌープ回路から受信される応答に依存して、関係のあるトランザクションに関してマスタ・デバイスに直接に応答を発行することができる可能性があり、又は、代わりに、扱いのためにスレーブ・デバイスのうちの１つにそれらのトランザクションをルーティングすることが必要である可能性がある。
【００２０】
一実施例において、スヌープ回路に対して発行されるトランザクション要求のうちの少なくとも１つは、スヌープ動作が実行されることが要求される前記複数のトランザクションのうちの複数を識別するマルチトランザクション要求を備える。スヌープ回路による扱いを要求する複数のトランザクションについて知らされることにより、スヌープ回路は、例えば、関連するスヌープ・フィルタ内でより少ないルックアップを実行すること、及び／又はスヌープされるべき複数のキャッシュ・ラインを識別するスヌープ要求をキャッシュ・ストレージに対して発行することによって、スヌープ動作をより効率的に実行することができる可能性がある。
【００２１】
スヌープ回路は、様々な形態をとることが可能であるが、一実施例において、複数のスヌープ回路を備え、各スヌープ回路は、異なるアドレス範囲に関連付けられ、要求配信回路は、各スヌープ回路に対して別々のトランザクション要求を発行するように構成される。複数のスヌープ回路を備えることによって、スヌープ動作が、異なるアドレス範囲に関して並行に実行されることが可能であり、その結果、効率が向上させられる。更に、各スヌープ回路に対してマルチトランザクション要求が発行されて、更なる効率利益がもたらされることが可能である。
【００２２】
一実施例において、スヌープ回路は、要求配信回路からトランザクション要求が受信されると、各キャッシュに対してスヌープ要求を自動的に発行することが可能である。しかし、代替の実施例において、スヌープ回路は、キャッシュ・ストレージの中に記憶されたデータのアドレスのアドレス指示を保持するように構成されたスヌープ・フィルタを備えることが可能であり、トランザクションのために実行されるスヌープ動作は、トランザクションによって指定されるアドレスを使用してスヌープ・フィルタを参照すること、及びそのアドレスが、スヌープ・フィルタによって保持されるアドレス指示のうちの１つと合致することをスヌープ・フィルタが示す場合、キャッシュ・ストレージに対してスヌープ要求を発行することを備える。そのようなアプローチは、キャッシュ・ストレージに対して発行される必要があるスヌープ要求の数を低減することが可能である。
【００２３】
更に、マルチトランザクション要求を扱う際、スヌープ回路は、マルチトランザクション要求内で識別された複数のトランザクションの知識に基づいて、スヌープ・フィルタにおいて要求されるルックアップの回数を低減することができる可能性がある。例えば、スヌープ・フィルタにおける各エントリが、通常よりわずかに短く、したがって、複数のキャッシュ・ラインと合致するタグ部分を記憶するように構成されることが可能であり、それらのキャッシュ・ラインのそれぞれに関して、エントリが、そのエントリに関して合致が検出された場合にいずれのキャッシュがスヌープされる必要があるかを識別する情報を記憶するように構成されることが可能である。その場合、各エントリに関して単一回のルックアップが実行されることが可能であり、トランザクションの対応する短くされたタグ部分が、スヌープ・フィルタのエントリの中に記憶されたタグ部分と合致した場合、そのエントリの中に記憶された関係のある情報が、関連付けられたキャッシュ・ラインに関していずれのキャッシュがスヌープされる必要があるかを識別するのに使用されることが可能である。複数のキャッシュ・ラインを単一のエントリに関連付けることができることにより、このことは、マルチトランザクション要求が及ぶアドレスの全範囲を処理するために要求されるルックアップの回数を低減することによって、スヌープ・フィルタに対するアクセスの効率を大幅に向上させることができる。
【００２４】
複数のスレーブ・デバイスは、様々な形態をとることが可能であるが、一実施例において、関連付けられたメモリ・デバイスに結合された複数のメモリ・コントローラを含む。
【００２５】
一実施例において、関連付けられた各メモリ・デバイスは、アドレスのパターンに関連付けられたデータを記憶するように構成され、１つのメモリ・デバイスのアドレスのパターンは、別のメモリ・デバイスのアドレスのパターンとインターリーブされる。要求配信回路は、各メモリ・コントローラに、関連付けられたメモリ・デバイスのアドレスのパターン内に指定されたアドレスがある前記複数のトランザクションの中のトランザクションを実行させるために、マルチバースト・トランザクション要求を、各メモリ・コントローラに対して発行される別々のマルチバースト・トランザクション要求に分割するように構成される。次に、各メモリ・コントローラが、その他のメモリ・コントローラのいずれによって扱われるトランザクションとも無関係に、そのメモリ・コントローラによって受信されたマルチバースト・トランザクション要求の中で識別される様々なトランザクションを扱うことができ、各メモリ・コントローラは、そのメモリ・コントローラが処理した各トランザクションの完了を示す応答をマスタ・デバイスに送り返す。マルチバースト・トランザクション要求を受信することによって、メモリ・コントローラは、メモリ・コントローラが実行することを要求される複数のトランザクションの見通しを得ることになり、それに相応して、それらの複数のトランザクションによって要求される様々なアクセスの扱いの効率を最適化するように、関連付けられたメモリ・デバイスに対するメモリ・コントローラのアクセスをスケジュールすることができる。
【００２６】
各メモリ・コントローラが、そのメモリ・コントローラが実行する必要があるトランザクションを決定することが可能であるいくつかの方法が存在する。例えば、一実施例において、各メモリ・コントローラは、いずれのトランザクションがそのメモリ・コントローラによる実行を要求するかを識別するのにメモリ・コントローラによって使用される制御データを供給されることが可能である。詳細には、様々なメモリ・デバイスの間でアドレスがインターリーブされる様態は、通常、静的に定義され、それに相応して、その情報がメモリ・コントローラに供給されることが可能である。その場合、メモリ・コントローラは、マスタ・デバイスによって発行された完全な元のマルチバースト・トランザクション要求を受信し、制御データから、そのマルチバースト・トランザクション要求内の個々のトランザクションのうちのいずれをそのメモリ・コントローラが処理すべきかを決定することが可能である。次に、メモリ・コントローラは、メモリ・コントローラが処理する各トランザクションに関してマスタ・デバイスに応答を送り返す。マルチバースト・トランザクション要求が、関係のあるメモリ・コントローラの全てにルーティングされるものと想定すると、このことは、トランザクションの全てが実行されること、及びマスタ・デバイスが、マルチバースト・トランザクション要求内の各トランザクションの完了に関して通知を受けることを確実にする。
【００２７】
代替として、要求配信回路が、各メモリ・コントローラに対して発行されるマルチトランザクション要求の中に制御データを符号化してもよい。したがって、各メモリ・コントローラは、わずかに修正されたマルチトランザクション要求を受信し、制御データは、そのマルチトランザクション要求が発行されたメモリ・コントローラに固有である。この制御データは、様々な形態をとることが可能であるが、一実施例において、受信側メモリ・コントローラによって扱われるべきトランザクションの特定のサブセットを識別するのに使用されるいくらかのマスク・データの形態をとることが可能である。
【００２８】
前述したとおり、マルチトランザクション要求内で指定されたトランザクションは、読取りトランザクション又は書込みトランザクションであることが可能である。トランザクションが書込みトランザクションである場合、マルチトランザクション要求によって指定された各書込みトランザクションが実行されることを可能にするために、様々なスレーブ・デバイスへのルーティングを必要とする相当な量の書込みデータが、通常、存在する。このことは、潜在的に、相互接続回路の書込みデータ・ルーティング回路内の輻輳につながる可能性があり、そのような輻輳は、相互接続回路の動作の効率を低下させる可能性がある。しかし、一実施例において、輻輳のそのような潜在性は、書込みデータのアイテムの伝送を、様々なスレーブ・デバイスによってそれらのアイテムが要求されるまで延期することによって軽減される。詳細には、一実施例において、マスタ・デバイスによって発行されるマルチトランザクション要求は、各書込みトランザクションに関してマスタ・デバイスから決定されたスレーブ・デバイスに書込みデータが書き込まれることを要求する複数の書込みトランザクションを識別し、相互接続回路は、複数の書込みトランザクションのそれぞれに関する書込みデータを、各書込みトランザクションに関して決定されたスレーブ・デバイスにルーティングするように構成された書込みデータ・ルーティング回路を含み、マスタ・デバイスは、各トランザクションに関して書込みデータ・ルーティング回路を通る書込みデータの出力を、そのトランザクションに関する決定されたスレーブ・デバイスが、その書込みデータを求める要求を発行するまで、遅延させるように構成される。
【００２９】
スレーブ・デバイスが書込みデータを求める要求を発行することが可能である様々な方法が存在する。一実施例において、データ処理システムは、決定された各スレーブ・デバイスが書込みデータを求める要求を発行する、決定された各スレーブ・デバイスとマスタ・デバイスの間のハンドシェーク機構を更に備える。したがって、マスタ・デバイスは、書込みデータの各アイテムを、ハンドシェーク機構を介してスレーブ・デバイスによってそのアイテムが要求された場合に限って、出力する。
【００３０】
代替の実施例において、マスタ・デバイスは、前記書込みデータが記憶されるキャッシュ・ストレージを備え、決定されたスレーブ・デバイスによって発行される書込みデータを求める要求は、要求された書込みデータがキャッシュ・ストレージから退去させられるように構成される。したがって、そのような実施例において、書込みデータは、キャッシュの中に記憶され、関係のあるスレーブ・デバイスによって必要とされるにつれ、キャッシュから退去させる。書込みデータをキャッシュ・ストレージから退去させることが可能な、いくつかの方法が存在する。例えば、スレーブ・デバイスが、相互接続回路内のスヌープ回路に対してスヌープ要求を発行して、その退去を行わせるように構成されることが可能である。
【００３１】
一実施例において、相互接続回路は、複数のトランザクションの実行中に各スレーブ・デバイスによって発行された応答をマスタ・デバイスにルーティングするように構成された応答ルーティング回路を更に備える。一実施例によれば、相互接続回路は競合緩和回路を更に備えており、この競合緩和回路は、要求配信回路に関連付けられており、要求配信回路がマルチトランザクション要求を様々なスレーブ・デバイスに対して発行される複数のトランザクション要求に分割するという決定があると、該複数のトランザクション要求に関して競合低減対策を適用し、それにより、様々なスレーブ・デバイスから応答ルーティング回路を介して応答が戻されることに起因する応答ルーティング回路内の競合を低減しようと努めるように構成されている。詳細には、要求配信回路は、要求される複数のトランザクションと関係する着信するマルチトランザクション要求を解析するので、その時点で、相互接続回路が、応答の数、及びそれらの応答の送信元について、すなわち、いずれのスレーブ・デバイスがそれらの様々な応答を発行するかについての、いくらかの認識を有し、この実施例によれば、相互接続回路は、様々なスレーブ・デバイスからマスタ・デバイスに戻される必要がある様々な応答に起因する応答ルーティング回路内の競合を低減しようと努める競合緩和回路を含む。
【００３２】
競合緩和回路が応答ルーティング回路内の競合を低減することが可能である様々な方法が存在する。例えば、適用された競合低減対策が、スレーブ・デバイスのそれぞれに、応答ルーティング回路内の異なるタイムスロットを割り当てて、複数のスレーブ・デバイスが同時にマスタ・デバイスに応答を送ろうとすることを回避しようとすることも可能である。代替として、又は更に、決定されたスレーブ・デバイスによって使用されるデータレートを制限するデータ指示が、各トランザクション要求に関連付けられて与えられてもよい。データ指示は、例えば、スレーブ・デバイスが応答を戻すことができる最大レート（例えば、読取りトランザクションに関して読取りデータを戻すことに関する最大レート）を識別することが可能であり、又は、書込みトランザクションに関して、スレーブ・デバイスが書込みデータを要求することができる最大レートを指定することが可能である。使用され得るデータレートを絞ることによって、このことは、相互接続回路において競合が生じる機会を低減することが可能である。使用され得る別の可能な対策として、要求配信回路が、特定のスレーブ・デバイスによるトランザクションの実行の合間に時間遅延を導入するように個別の各スレーブ・デバイスに向かうトランザクション要求の伝搬を互い違いに配置することも可能である。
【００３３】
一実施例において、マルチトランザクション要求が、複数の書込みトランザクションを識別する場合、マルチトランザクション要求は、各トランザクションに関して書き込まれるべき書込みデータ値を識別するフィールドを含むことが可能である。このことは、例えば、メモリの領域に論理０値を書き込むのに使用され得る。書込みデータ値がトランザクションのフィールドとして指定されるので、要求された書込みデータは、トランザクションを処理するスレーブ・デバイスによってローカルで生成されることが可能であり、したがって、このことは、書込みデータ輻輳の低減、及び電力消費の低減をもたらすことが可能である。
【００３４】
前述した実施例に関するマルチトランザクション要求は、効率的なメモリ・コピー機能を提供するのに使用されることも可能である。例えば、一実施例において、マルチトランザクション要求が、実行されるべき複数の読取りトランザクションを識別することが可能であり、各読取りデータ値が書き込まれるべきアドレスを識別するのに使用される書込みアドレス指示を更に指定することが可能であり、その結果、データが、１つのアドレスから読み取られて、別の書込みトランザクション要求が発行されることなしに、次に、別のアドレスに書き込まれることを可能にする。書込みアドレス情報は、様々な方法で、例えば、明示的な書込みアドレスによって、又は各トランザクションの読取りアドレスに関して適用されるべき何らかのオフセット値を指定することによって指定されることが可能である。
【００３５】
そのようなメモリ・コピー動作を実行するための代替の機構として、マスタ・デバイスが、関連するマルチトランザクション書込み要求が後に続くマルチトランザクション読取り要求を発行するように構成されることが可能であり、要求配信回路が、マルチトランザクション読取り要求及び関連するマルチトランザクション書込み要求に応答して、データが１つのアドレスから読み取られ、次に、別のアドレスに書き込まれるように、決定された各スレーブ・デバイスに対してトランザクション要求を発行するように構成される。
【００３６】
マルチトランザクション書込み要求がマルチトランザクション読取り要求に関連付けられているものとして識別され得るいくつかの方法が存在する。例えば、一実施例において、関連付けられたマルチトランザクション書込み要求は、要求配信回路が、関連付けられたマルチトランザクション書込み要求を、マルチトランザクション読取り要求に関連付けられているものとして識別することを可能にするために、マルチトランザクション読取り要求のために使用されるのと同一の基本トランザクション識別子を指定するように構成される。
【００３７】
第２の態様から見て、本発明は、マスタ・デバイスと複数のスレーブ・デバイスを相互接続して、マスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによってトランザクションが実行されることを可能にするための相互接続回路であって、マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を受信するように構成されたマスタ・インターフェースであって、マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与えるマスタ・インターフェースと、その複数のトランザクションのそれぞれに関して、そのトランザクションを実行することを要求されるスレーブ・デバイスを決定するためにアドレス情報及び数量指示を解析するように構成され、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中でその決定されたスレーブ・デバイスによって実行されるべきトランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路と、マスタ・デバイスに、決定された各スレーブ・デバイスから与えられる、その決定されたスレーブ・デバイスによって実行された各トランザクションの完了を識別する応答をルーティングするように構成された応答ルーティング回路であって、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの応答とは無関係にそのスレーブ・デバイスの応答を与え、各応答は、基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、マスタ・デバイスが、マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にする応答ルーティング回路とを備える相互接続回路を提供する。
【００３８】
第３の態様から見て、本発明は、マスタ・デバイスと、複数のスレーブ・デバイスと、そのマスタ・デバイスを前記複数のスレーブ・デバイスに結合して、そのマスタ・デバイスから要求が行われると、前記複数のスレーブ・デバイスによって前記トランザクションが実行されることを可能にする相互接続回路とを備えるデータ処理システム内でトランザクションを実行する方法であって、マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することであって、マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与える、発行することと、相互接続回路内で、その複数のトランザクションのそれぞれに関して、そのトランザクションを実行することを要求されるスレーブ・デバイスを決定するためにアドレス情報及び数量指示を解析し、決定された各スレーブ・デバイスに対して、前記複数のトランザクションの中でその決定されたスレーブ・デバイスによって実行されるべきトランザクションを識別するトランザクション要求を発行することと、マスタ・デバイスに対して、決定された各スレーブ・デバイスから、その決定されたスレーブ・デバイスによって実行された各トランザクションの完了を識別する応答を発行することであって、決定された各スレーブ・デバイスは、他の任意の決定されたスレーブ・デバイスからの応答とは無関係にそのスレーブ・デバイスの応答を与え、各応答は、基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、マスタ・デバイスが、マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にする、発行することとを備える方法を提供する。
【００３９】
第４の態様から見て、本発明は、マスタ手段と、複数のスレーブ手段と、そのマスタ手段を前記複数のスレーブ手段に結合して、そのマスタ手段から要求が行われると、前記複数のスレーブ手段によってトランザクションが実行されることを可能にするための相互接続手段とを備えるデータ処理システムであって、マスタ手段は、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することを目的とし、マルチトランザクション要求は、基本トランザクション識別子と、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、相互接続手段は、その複数のトランザクションのそれぞれに関して、そのトランザクションを実行することを要求されるスレーブ手段を決定するためにアドレス情報及び数量指示を解析することを目的とし、決定された各スレーブ手段に対して、前記複数のトランザクションの中でその決定されたスレーブ手段によって実行されるべきトランザクションを識別するトランザクション要求を発行することを更に目的とする要求配信手段を含み、決定された各スレーブ手段は、マスタ手段に、その決定されたスレーブ手段によって実行された各トランザクションの完了を識別する応答を与えることを目的とし、決定された各スレーブ手段は、他の任意の決定されたスレーブ手段からの応答とは無関係にそのスレーブ手段の応答を与えることを目的とし、各応答は、基本トランザクション識別子から決定されたトランザクション識別子と、トランザクション固有の情報とを含み、マスタ手段が、マルチトランザクション要求内で識別される各トランザクションの完了を識別することを可能にするデータ処理システムを提供する。
【００４０】
本発明の発明者らは、本発明のマルチトランザクション要求アプローチが、マスタ・デバイスと複数のキャッシュ・ストレージ・デバイスの間で実行されるトランザクション、詳細には、キャッシュ・メンテナンス動作を指定する一連のトランザクションに関連して採用されることも可能であることに気づいた。詳細には、本発明の更なる態様から見て、本発明は、マスタ・デバイスと、複数のキャッシュ・ストレージ・デバイスと、そのマスタ・デバイスを前記複数のキャッシュ・ストレージ・デバイスに結合して、そのマスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、その複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にするように構成された相互接続回路とを備えるデータ処理システムであって、マスタ・デバイスは、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行するように構成され、そのマルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、その複数のトランザクションのそれぞれは、そのトランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定し、相互接続回路は、その複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれがそのトランザクションを実行することを要求されるかを決定するためにアドレス情報及び数量指示を解析するように構成され、その複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中でその複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべきトランザクションを識別するトランザクション要求を発行するように更に構成され、データ処理システムは、前記複数のトランザクションの実行中にその複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかをマスタ・デバイスが決定することを可能にするように構成されたキャッシュ・メンテナンス追跡回路を備えるデータ処理システムを提供する。
【００４１】
本発明のこの態様によれば、相互接続回路内の要求配信回路が、その複数のキャッシュ・ストレージ・デバイスのうちのいずれが、マルチトランザクション要求の中で指定されたトランザクションのそれぞれを実行することを要求されるかを決定し、次に、その複数のキャッシュ・ストレージ・デバイスのそれぞれに、各ストレージ・デバイスが実行することを要求されるトランザクションを識別するトランザクション要求を発行することができる。次に、各キャッシュ・ストレージ・デバイスが、そのキャッシュ・ストレージ・デバイスの要求されるキャッシュ・メンテナンス動作を実行することが可能であり、キャッシュ・メンテナンス追跡回路が、それらのキャッシュ・ストレージ・デバイスから戻される進行指示を受信し、次に、マスタ・デバイスに進行情報を与えるのに使用される。マルチトランザクション要求アプローチの使用を介して、一連のキャッシュ・メンテナンス動作全体が、一度に指定されることが可能である一方で、要求配信回路は、その場合、個々の各キャッシュ・ストレージ・デバイスが適切なキャッシュ・メンテナンス動作を実行することを確実にすることができる。いくつかのキャッシュ・メンテナンス動作は、単一のキャッシュによって実行されることしか必要としない可能性があるが、他のキャッシュ・メンテナンス動作は、複数のキャッシュ・ストレージ・デバイス内で実行される必要がある可能性があり、その場合、キャッシュ・メンテナンス追跡回路は、様々なキャッシュ・ストレージ・デバイスからの進行指示を使用して、各キャッシュ・メンテナンス動作がいつ完了されたかを決定し、それに相応してマスタ・デバイスに知らせることが可能である。
【００４２】
マスタ・デバイスは、いずれのキャッシュ・ストレージ・デバイスが個別の各トランザクション／キャッシュ・メンテナンス動作を処理する必要があるかについての知識を有することを全く要求されず、キャッシュ・メンテナンス追跡回路から与えられる進行情報を単に使用して、様々な複数のトランザクションがいつ完了されたかを決定する。マスタ・デバイスの視点からは、様々なトランザクション／キャッシュ・メンテナンス動作がどのような順序で実行されるかは問題ではなく、したがって、このことは、様々なキャッシュ・ストレージ・デバイスが、可能な限り効率的な様態で様々なキャッシュ・メンテナンス動作を実行するようにキャッシュ・ストレージ・デバイスの挙動を最適化することを可能にする。例えば、個別のキャッシュ・ストレージ・デバイスが、実行されるべき一連のトランザクション／キャッシュ・メンテナンス動作を指定するマルチトランザクション要求を受信する状況において、いくつかのキャッシュ・メンテナンス動作を実行する際にキャッシュ・ストレージ・デバイスのタグ部分の内部で要求されるルックアップの回数を低減することが可能である。
【００４３】
本発明の第１の態様の発明の場合と同様に、要求配信回路はそれ自体、マルチトランザクション要求を発行することが可能であり、この場合にこれらのマルチトランザクション要求の受信者は、キャッシュ・ストレージ・デバイスのうちの１つ又は複数である。更に、第１の態様の発明の場合と同様に、マルチトランザクション要求によって識別される各トランザクションに関するアドレスは、一実施例において、マルチトランザクション要求によって指定される基本アドレスを基準として決定される。
【００４４】
複数のキャッシュ・ストレージ・デバイスは、様々な形態をとることが可能である。例えば、複数のキャッシュ・ストレージ・デバイスは全て、複数のマスタ・デバイスの間で共有されるキャッシュ・ストレージ・デバイスであり得る。代替として、複数のキャッシュ・ストレージ・デバイスは全て、特定のマスタ・デバイスに関連付けられた個々のキャッシュ・ストレージ・デバイスであってもよい。１つの特定の実施例において、複数のキャッシュ・ストレージ・デバイスは、特定のマスタ・デバイスに関連して備えられるキャッシュ・ストレージ・デバイスと、複数のマスタ・デバイスの間で共有される他のキャッシュ・ストレージ・デバイスの混合を包含することが可能である。
【００４５】
一実施例において、要求配信回路は、複数のトランザクション要求のそれぞれによって指定されたキャッシュ・メンテナンス動作を実行するために前記複数のキャッシュ・ストレージ・デバイスに関してスヌープ動作を実行するように構成されたスヌープ回路を備える。
【００４６】
１つの特定の実施例において、スヌープ回路は、複数のスヌープ回路を備え、各スヌープ回路は、異なるアドレス範囲に関連付けられ、要求配信回路は、複数のトランザクションのそれぞれに関して、その複数のスヌープ回路のいずれがそのトランザクションによって指定されるキャッシュ・メンテナンス動作を実行することを要求されるかを決定するためにアドレス情報及び数量指示を解析し、前記決定に依存して各スヌープ回路に対して別々のトランザクション要求を発行するように構成された第１のステージ要求配信回路を更に備える。したがって、そのような実施例において、要求配信回路はまず、各トランザクションに関連付けられたアドレスに基づいて、いずれのスヌープ回路がそのトランザクションを受信すべきかを決定し、その決定に依存して各スヌープ回路に対して相応するようにトランザクション要求を発行する。このことは、通常、マルチトランザクション要求を受信する各スヌープ回路が、そのスヌープ回路に関連付けられた特定のトランザクションを識別することをもたらすことが可能である。次に、個々のスヌープ回路が、キャッシュ・メンテナンス動作のそれぞれをいずれのキャッシュ・ストレージ・デバイスが実行する必要があるか決定するために、それらの要求を処理することが可能であり、それらのスヌープ回路が、次に、キャッシュ・ストレージ・デバイスに対してトランザクション要求を発行する（この場合もやはり、それらのトランザクション要求のうちの１つ又は複数もそれ自体、そのマルチトランザクション要求が発行されたキャッシュ・ストレージ・デバイスによって実行されるべき複数のトランザクション／キャッシュ・メンテナンス動作を指定するマルチトランザクション要求であり得る）。
【００４７】
キャッシュ・メンテナンス追跡回路は、様々な形態をとることが可能である。しかし、一実施例において、キャッシュ・メンテナンス追跡回路は、前記複数のスヌープ回路のそれぞれの内部に備えられたキャッシュ・メンテナンス追跡回路を備え、各キャッシュ・メンテナンス追跡回路は、関連付けられたスヌープ回路によって扱われるトランザクションによって指定されたキャッシュ・メンテナンス動作の実行中に複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、他の各キャッシュ・メンテナンス追跡回路から与えられる進行情報とは無関係にマスタ・デバイスに進行情報を与えるように構成される。詳細には、マスタ・デバイスがマルチトランザクション要求を発行する際、マスタ・デバイスは、それらのトランザクションがどのように処理されるかに制約を課すことはなく、したがって、様々なキャッシュ・メンテナンス追跡回路の間の協調は全く必要とされない。代わりに、キャッシュ・メンテナンス追跡回路のそれぞれから与えられる進行情報が、元のマルチトランザクション要求の中で指定されたトランザクションの全てがいつ処理されたかをマスタ・デバイスが決定することを可能にするのに十分であることで十分である。
【００４８】
一実施例において、スヌープ回路は、トランザクション要求を受信すると、キャッシュ・ストレージ・デバイスのそれぞれに対してスヌープ要求を発行するように構成されることが可能である。しかし、代替の実施例において、スヌープ回路は、各キャッシュ・ストレージ・デバイスに関して、そのキャッシュ・ストレージ・デバイスの中に記憶されたデータのアドレスのアドレス指示を保持するように構成されたスヌープ・フィルタを備え、トランザクションのために実行されるスヌープ動作は、トランザクションによって指定されるアドレスを使用してスヌープ・フィルタ内でルックアップ動作を実行すること、及び、各キャッシュ・ストレージ・デバイスに関して、そのアドレスが、そのキャッシュ・ストレージ・デバイスのためにスヌープ・フィルタによって保持されるアドレス指示のうちの１つと合致することをそのルックアップ動作が示す場合、そのキャッシュ・ストレージ・デバイスに対してスヌープ要求を発行することを備える。このことは、システム内のスヌープ要求トラフィックの量を低減することが可能である。更に、スヌープ回路が、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を受信する状況において、スヌープ・フィルタ内のルックアップは、スヌープ・フィルタ内でルックアップを実行することに関連する電力消費を低減するために最適化されることが可能である。
【００４９】
例えば、一実施例において、スヌープ・フィルタは、複数のエントリを備えることが可能であり、各エントリは、アドレス指示と、トランザクションのアドレスがそのアドレス指示と合致した場合、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれに対してスヌープ要求が発行されるべきかを示すキャッシュ識別子情報とを記憶する。
【００５０】
しかし、スヌープ回路が、広いアドレス範囲にわたって実行されるべき一連のキャッシュ・メンテナンス動作を指定するマルチトランザクション要求を受信する場合、このことは、スヌープ・フィルタ内の同一のエントリが複数のルックアップ動作を受けることを要求する可能性がある。一実施例において、そのような状況において、スヌープ・フィルタに対するアクセスの回数を低減するために、修正されたルックアップ動作が実行される。詳細には、一実施例において、スヌープ・フィルタは、セット・アソシアティブ型のストレージであり、各トランザクションのアドレスのインデックス部分が、アドレス指示がそのアドレスと比較されるべきスヌープ・フィルタ内のエントリを識別するのに使用される。マルチトランザクション要求によって指定された複数のトランザクションが、前記複数のトランザクションを処理する際にスヌープ・フィルタの各エントリを複数回、参照することを要求するだけ十分に広いアドレス範囲と関係する場合、スヌープ回路は、スヌープ・フィルタの各エントリがルックアップを１回、受ける、スヌープ・フィルタ内の修正されたルックアップ動作を適用するように構成され、そのエントリから得られたアドレス指示のいくつかのビットがマスクされ、次に、それらのトランザクションのうちの複数と共通するマスクされたアドレスと比較され、その比較が合致を示す場合、スヌープ・フィルタのそのエントリに関連付けられたキャッシュ識別子情報によって示される各キャッシュ・ストレージ・デバイスに対してスヌープ要求が発行される。そのようなアプローチは、スヌーピング動作を実行することに関連する電力消費を大幅に低減することが可能であり、パフォーマンスを向上させることも可能である。
【００５１】
同一の基本的なアプローチが、キャッシュ・ストレージ・デバイスがマルチトランザクション要求を受信する状況において、キャッシュ・ストレージ・デバイス内で採用されることも可能である。詳細には、ルックアップは、各キャッシュ・エントリ内で１回だけ実行されることが可能であり、この場合も、マスキングが、修正された比較を実行するのに使用され、その比較からもたらされる合致は、関連付けられたキャッシュ・エントリの中のデータ値がキャッシュ・メンテナンス動作の対象とされるべきことを示す。
【００５２】
スヌープ動作の効率を高める別の方法として、スヌープ・フィルタ・エントリ自体の構造が、エントリの中に記憶されたアドレス指示が単一のキャッシュ・ラインと関係するだけでなく、代わりに、複数のキャッシュ・ラインと関係するように変更されることが可能である（例えば、アドレス指示を、アドレスのより少ない数のビットに構成することによって）。その場合、エントリは、縮小されたアドレス指示を共有するキャッシュ・ラインのそれぞれに関していずれのキャッシュ・ストレージ・デバイスをスヌープすべきかの指示を記憶することが可能である。スヌープ・フィルタとの合致が得られると、次に、このことは、いずれのキャッシュ・ストレージ・デバイスが、キャッシュ・ラインのそれぞれに関してスヌープを要求するものとしてエントリによってフラグを立てられているかに依存して、スヌープ・フィルタにおけるそのエントリに関連付けられたキャッシュ・エントリのいずれか、又は全てに関して、スヌープ要求が、要求されるキャッシュのそれぞれに対して発行されることをもたらす。
【００５３】
キャッシュ・メンテナンス追跡回路によってマスタ・デバイスに与えられる進行情報は、様々な形態をとることが可能である。例えば、進行情報は、マルチトランザクション要求によって指定された複数のトランザクションの全てが実行されると、キャッシュ・メンテナンス追跡回路によって発行される単一の組み合わされた応答を形成することが可能である。代替として、進行情報の複数の別々のアイテムが、キャッシュ・メンテナンス追跡回路によって与えられてもよく、各アイテムは、カウント値を与える。その場合、マスタ・デバイスは、トランザクションの全てがいつ完了されたかを決定するために、受信されたカウント値を累算するように構成されることが可能である。複数のキャッシュ・ストレージ・デバイスによって特定のキャッシュ・メンテナンス動作が実行される必要がある場合、キャッシュ・メンテナンス追跡回路は、それらのキャッシュ・ストレージ・デバイスの全てによるキャッシュ・メンテナンス動作の完了が、マスタ・デバイスに単一の「カウント」が戻されることだけをもたらすことを確実にして、マスタ・デバイスが、その複数のトランザクションがいつ完了されたかを決定するためにカウント値を単に累算するだけでよいことを確実にする。
【００５４】
更なる態様から見て、本発明は、マスタ・デバイスと複数のキャッシュ・ストレージ・デバイスを相互接続して、マスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にするための相互接続回路であって、マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を受信するように構成されたマスタ・インターフェースであって、マルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、その複数のトランザクションのそれぞれは、そのトランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定するマスタ・インターフェースと、その複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのいずれがそのトランザクションを実行することを要求されるかを決定するためにアドレス情報及び数量指示を解析するように構成され、その複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中でその複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべきトランザクションを識別するトランザクション要求を発行するように更に構成された要求配信回路と、前記複数のトランザクションの実行中にその複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかをマスタ・デバイスが決定することを可能にするように構成されたキャッシュ・メンテナンス追跡回路とを備える相互接続回路を提供する。
【００５５】
更なる態様から見て、本発明は、マスタ・デバイスと、複数のキャッシュ・ストレージ・デバイスと、そのマスタ・デバイスを前記複数のキャッシュ・ストレージ・デバイスに結合して、そのマスタ・デバイスによって指定されたキャッシュ・メンテナンス動作が、その複数のキャッシュ・ストレージ・デバイスによって実行されることを可能にする相互接続回路とを備えるデータ処理システム内で前記キャッシュ・メンテナンス動作を実行する方法であって、マスタ・デバイスから、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することであって、そのマルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、その複数のトランザクションのそれぞれは、そのトランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定する、発行することと、相互接続回路内で、その複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ・デバイスのうちのいずれがそのトランザクションを実行することを要求されるかを決定するためにアドレス情報及び数量指示を解析し、その複数のキャッシュ・ストレージ・デバイスのそれぞれに対して、前記複数のトランザクションの中でその複数のキャッシュ・ストレージ・デバイスのそれぞれによって実行されるべきトランザクションを識別するトランザクション要求を発行することと、相互接続回路内で、前記複数のトランザクションの実行中にその複数のキャッシュ・ストレージ・デバイスから進行指示を受信し、マスタ・デバイスに進行情報を与えて、前記複数のトランザクションがいつ完了されたかをマスタ・デバイスが決定することを可能にすることとを備える方法を提供する。
【００５６】
本発明の更なる態様から見て、本発明は、マスタ手段と、複数のキャッシュ・ストレージ手段と、そのマスタ手段を前記複数のキャッシュ・ストレージ手段に結合して、そのマスタ手段によって指定されたキャッシュ・メンテナンス動作が、その複数のキャッシュ・ストレージ手段によって実行されることを可能にするための相互接続手段とを備えるデータ処理システムであって、マスタ手段は、実行されるべき複数のトランザクションを識別するマルチトランザクション要求を発行することを目的とし、そのマルチトランザクション要求は、実行されるべきトランザクションの数を示す数量指示と、アドレス情報とを与え、その複数のトランザクションのそれぞれは、そのトランザクションに関連付けられたアドレスにおいて実行されるべきキャッシュ・メンテナンス動作を指定し、相互接続手段は、その複数のトランザクションのそれぞれに関して、前記複数のキャッシュ・ストレージ手段のうちのいずれがそのトランザクションを実行することを要求されるかを決定するためにアドレス情報及び数量指示を解析することを目的とし、その複数のキャッシュ・ストレージ手段のそれぞれに対して、前記複数のトランザクションの中でその複数のキャッシュ・ストレージ手段のそれぞれによって実行されるべきトランザクションを識別するトランザクション要求を発行することを更に目的とする要求配信手段を含み、データ処理システムは、前記複数のトランザクションの実行中にその複数のキャッシュ・ストレージ手段から進行指示を受信するため、及びマスタ手段に進行情報を与えて、前記複数のトランザクションがいつ完了されたかをマスタ手段が決定することを可能にするためのキャッシュ・メンテナンス追跡手段を備えるデータ処理システムを提供する。
【００５７】
本発明は、単に例として、添付の図面に示される本発明の実施例を参照して更に説明される。
【図面の簡単な説明】
【００５８】
【図１Ａ】一実施例によるマルチトランザクション要求を示す概略図である。
【図１Ｂ】一実施例によるマルチトランザクション要求内に含められたトランザクションの数情報に関する代替のフォーマットを示す図である。
【図２】一実施例によるデータ処理システムを示すブロック図である。
【図３】一実施例による図２のシステム内に組み込まれ得る延期された書込み機構を示す概略図である。
【図４】一実施例による、要求配信回路が、キャッシュ整合性を確実にする整合性処理回路を含む実施例を示す概略図である。
【図５】一実施例による、要求配信回路がどのようにいくつかの階層型配信ブロックから形成され得るかを示す概略図である。
【図６Ａ】或る実施例による、インターリーブ・サポート機能がどのように要求配信回路内に組み込まれ得るかを示す概略図である。
【図６Ｂ】異なる実施例による、インターリーブ・サポート機能がどのように要求配信回路内に組み込まれ得るかを示す概略図である。
【図７Ａ】或る実施例による、競合緩和機能がどのように要求配信回路内に組み込まれ得るかを示す図である。
【図７Ｂ】異なる実施例による、競合緩和機能がどのように要求配信回路内に組み込まれ得るかを示す図である。
【図８】代替の実施例によるマルチトランザクション要求を示す概略図である。
【図９】一実施例による、メモリ・コピー動作がどのように実行され得るかを示す概略図である。
【図１０】マルチトランザクション要求の発行を介してキャッシュ・メンテナンス動作が実行されることを可能にする、代替の実施例によるデータ処理システムを示す図である。
【図１１Ａ】或る実施例による、図１０のスヌープ・フィルタ内のエントリに関する１つのフォーマットを示す図である。
【図１１Ｂ】異なる実施例による、図１０のスヌープ・フィルタ内のエントリに関する別の１つのフォーマットを示す図である。
【図１２】一実施例による、図１０のシステム内のスヌープ・フィルタ・ルックアップ内で、又はキャッシュ・ルックアップ内で実行され得る最適化を示す流れ図である。
【図１３】一実施例による、図１２において説明されるマスキングがどのように実行されるかを示す概略図である。
【発明を実施するための形態】
【００５９】
図１Ａは、一実施例によるマスタ・デバイスによって発行されるマルチトランザクション要求１０で指定される様々なフィールドを示す概略図である。第１のフィールド１２が、マルチトランザクション要求の中で指定されたトランザクションのそれぞれに関してトランザクション識別子を生成するのにトランザクション固有の情報と組み合わせて使用され得る基本トランザクション識別子を指定する。更に、フィールド１４が、マルチトランザクション要求に包含されるトランザクションの数についての情報を与える。この情報は、様々な形態をとることが可能であり、図１Ｂは、２つの可能な実例を示す。第１の実例によれば、フィールド１４は、実際には、トランザクションの数を指定するサイズ・フィールド３０の形態をとる。代替の実施例において、フィールド１４は、ビット単位のフィールド３５の形態をとり、各ビットは、一連のデータ・ブロック内の特定のデータ・ブロックがマルチトランザクション要求内のトランザクションによって処理されるべきかどうかを示すために設定される、又はクリアされる。この情報は、マルチトランザクション要求内の各トランザクションに関する開始アドレスを識別するために、アドレス・フィールド１６内で与えられるアドレス情報に関連付けられて使用され得る。
【００６０】
例えば、アドレス情報フィールド１６は、マルチトランザクション要求内に包含されるトランザクションのシーケンスにおける第１のトランザクションに関連付けられた基本アドレスを指定することが可能である。各トランザクションによって（マスタ・デバイスからスレーブ・デバイスに対する書込み動作として、又はスレーブ・デバイスからマスタ・デバイスにデータを戻す読取り動作として）マスタ・デバイスとスレーブ・デバイスの間で転送されるべきデータの特定の量を所与として、シーケンスにおけるトランザクションのそれぞれに関する開始アドレスが決定され得る。単一のサイズ・フィールド３０が使用される場合、トランザクションは、順次の一連のトランザクションであるものと想定されることが可能であり、各トランザクションに関する開始アドレスは、フィールド１６内の基本アドレスから相応するように決定され得る。ビット単位のフィールド３５が代わりに使用される場合、その連続における各トランザクションに関する開始アドレスは、ビット単位のフィールド内の情報を使用して決定され得る。第１のビット、第２のビット、及び第４のビットが設定されるが、第３のビットはクリアされている図１Ｂに示される実例を使用すると、このことは、第１のトランザクションが基本アドレスから生じ、第２のトランザクションが、基本アドレスを、各トランザクションによって扱われるデータのサイズによって決定されるいくらかの量だけインクリメントすることによって見出される開始アドレスを有するデータの隣接するブロックに関するトランザクションである（例示のため、この開始アドレスは、基本アドレス足すオフセットＸに等しいものと想定する）ことを識別するのに使用され得る。第３のビット位置における論理０値は、次のアドレス（すなわち、基本アドレス足す２Ｘ）におけるデータ・ブロックがトランザクションの対象ではないことを示し、代わりに、次のトランザクションは、実際には、基本アドレス足す３Ｘに等しい開始アドレスにおけるデータに関する。
【００６１】
図１Ａに戻ると、バースト・サイズ・フィールド１８が、各トランザクションによって転送されるデータの量を識別するように備えられることが可能である。この実例において、各トランザクションは、各クロック・サイクル（本明細書でビートとも呼ばれる）において所定の量のデータが転送されるバースト・トランザクションであり、そのプロセスが、そのトランザクションの各ビート中にデータの異なるブロックに関して繰り返されるものと想定される。バースト・サイズ・フィールドは、各バースト・トランザクションを介して転送されるデータの全体的な量を識別するのに使用され得る（各バースト・トランザクションに関して別個の応答が発行されている）。このフィールドは、代替の実施例において、バースト・サイズが所定であり得るため、オプションであることが可能である。
【００６２】
読取り／書込みフィールド２０が、各マルチトランザクション要求に関して、その要求によって識別された複数のトランザクションが読取りトランザクションであるか、書込みトランザクションであるかを識別するのに使用される。１つ又は複数のオプションの更なるフィールド２２が、任意の特定の実施例において関係があると考えられる他の情報を与えるように備えられることも可能である。
【００６３】
図２は、一実施例によるデータ処理システムのブロック図である。この実例において、マスタ・デバイス５５が、相互接続回路５０を介して複数のスレーブ・デバイス６０、６２、６４、６６に結合される。当業者には理解されるとおり、しばしば、相互接続回路は、複数のマスタ・デバイスを複数のスレーブ・デバイスと相互接続するが、図示を簡単にするため、単一のマスタ・デバイスだけが図２に示される。説明される実施例によれば、マスタ・デバイス５５が、図１Ａ及び図１Ｂを参照して前述した形態のマルチトランザクション要求を発行し、そのマルチトランザクション要求が、相互接続回路５０内の要求配信回路７０によって受信される。要求配信回路７０は、マルチトランザクション要求によって指定された各トランザクションをいずれのスレーブ・デバイスが実行することを要求されるかを決定するように構成される。通常、スレーブ・デバイス６０、６２、６４、６６のそれぞれは、（アドレス・マップによって識別される）可能なアドレスの全範囲内の特定のアドレス範囲に、フィールド１６内のアドレス情報、及びフィールド１４内のトランザクションの数についての情報を使用することによって相応するようにマップされ、要求配信回路７０は、各トランザクションに関する開始アドレスを決定することができ、次に、アドレス・マップを参照して、各トランザクションをいずれのスレーブ・デバイスが実行することを要求されるかを決定することができる。次に、要求配信回路７０は、スレーブ・デバイスのそれぞれに対してトランザクション要求のシーケンスを発行する。
【００６４】
一実施例によれば、複数のトランザクションが１つの特定のスレーブ・デバイスによって扱われるべき状況において、要求配信回路は、そのスレーブ・デバイスに伝搬されるようにマルチトランザクション要求を形成することが可能である。スレーブ・デバイスに、単一の要求を介して、そのスレーブ・デバイスが実行する必要がある複数のトランザクションについての情報を与えることによって、このことは、そのスレーブ・デバイスが、それらの複数のトランザクションを扱う効率を向上させるようにそのスレーブ・デバイスの挙動を最適化しようと努めることを可能にすることができる。例えば、スレーブ・デバイスが、ＤＲＡＭメモリなどのメモリにアクセスするのに使用されるメモリ・コントローラである場合、ＤＲＡＭのページを閉じて、別のページを開くことに関連するオーバヘッドが存在するので、ＤＲＡＭにおけるメモリの開かれたページに複数回のアクセスを行うことの方が、通常、効率的である。実行される必要がある一連のトランザクションの知識を有して、メモリ・コントローラは、マルチトランザクション要求の中で識別されるその一連のトランザクションによって指定される必要な書込み動作又は読取り動作を実行する際、開かれたページをより効率的に利用するようにメモリ・アクセスを最適化しようと努めることが可能である。
【００６５】
マルチトランザクション要求が、一連の書込みトランザクションを指定する場合、書込みデータは、マスタ・デバイス５５によってパス７７を介して相互接続５０に出力される必要があり、次に、書込みデータ・ルーティング回路７５が、各トランザクションに関して関係のあるスレーブ・デバイスに、要求される書込みデータをルーティングするのに使用される。一実施例において、各トランザクションをいずれのスレーブ・デバイスが処理すべきかについて要求配信回路によって決定された情報が、各トランザクションに関して関連する書込みデータを正しくルーティングするのに使用するために書込みデータ・ルーティング回路に供給されることも可能である。しかし、代替の実施例において、各書込みトランザクションの書込みデータは、スレーブ・デバイスがその書込みデータを要求するまで、そのスレーブ・デバイスに対して発行されない。したがって、そのような実施例において、要求配信回路７０が、特定のスレーブ・デバイスに対してトランザクション要求を発行すると、次に、そのスレーブ・デバイスが、そのスレーブ・デバイスが書込みデータを受け付ける準備ができていることを示す応答を、元のマスタ・デバイス５５に戻すように発行する。この応答は、書込みデータがルーティングされなければならないスレーブ・デバイスのＩＤを包含する。
【００６６】
したがって、マスタ・デバイスが最初にマルチトランザクション要求を送信する際、マスタ・デバイスは、各トランザクション、及び関連する書込みデータがいずれのスレーブ・デバイスを宛先とするかを知らず、代わりに、マルチトランザクション要求内の特定のトランザクションに関する書込みデータが現時点で送信され得るという、スレーブ・デバイスからの指示を待ち、その指示は、書込みデータ・ルーティング回路７５が書込みデータを適切なスレーブ・デバイスにルーティングすることを可能にする情報も与える。
【００６７】
説明される実施例によれば、マスタ・デバイスは、単一のマルチトランザクション要求を発行しているが、マスタ・デバイスが実行されることを要求した個々のトランザクションを認識している。それらのトランザクションは個別であるので、マスタ・デバイスは、個々のトランザクションが実行される順序に関心はなく、任意の特定のトランザクションをいずれのスレーブ・デバイスが処理しているかについての知識を有する必要も全くない。要求されるのは、マスタ・デバイスが、各トランザクションの完了について知らされることだけである。各トランザクションに関して、このことは、各スレーブ・デバイスが、相互接続５０内の読取りデータ／応答ルーティング回路８０を介して応答データを発行することによって実現されることが可能であり、次に、この応答データが、パス８２を介してマスタ・デバイスにルーティングされる。書込みトランザクションの場合、応答データは、書込みトランザクションが実行されたことを確認する単純な確認応答スタイルの信号であるだけでよい。この場合も、トランザクション識別子は、フィールド１２内の基本トランザクション識別子、及び何らかのトランザクション固有の情報に基づいて生成されて、マスタ・デバイスが、マルチトランザクション要求の中で識別される複数のトランザクションのいずれに応答が行われているかを決定することを可能にする。
【００６８】
一連の読取りトランザクションを指定するマルチトランザクション要求の場合、回路８０を介して戻される読取りデータ自体が、個々のトランザクションが実行されたと決定するためにマスタ・デバイスによって要求される応答を形成することが可能であり、この場合も、読取りデータの各アイテムには、応答が行われている特定のトランザクションを識別するトランザクション識別子が付随する。
【００６９】
そのような機構によって、マスタ・デバイスは、複数のトランザクションを指定する単一の要求を発行することが可能であり、様々なトランザクションは、その後、要求配信回路７０によって適切なスレーブ・デバイスにルーティングされるマルチトランザクション要求を構成する。個別のスレーブ・デバイス自体が、要求配信回路からマルチトランザクション要求を受信する場合、そのスレーブ・デバイスは、実行される必要がある複数のトランザクションの知識に基づいて、その複数のトランザクションによって要求されるアクセスを最適化しようと努めることが可能である。例えば、そのスレーブ・デバイスは、トランザクションの並べ替えをサポートするスレーブ・デバイスである場合、要求されるトランザクションをより効率的に実行するために、それらのトランザクションを並べ替えることを選択することが可能である。更に、前述のメモリ・コントローラ／ＤＲＡＭメモリの実例を考慮すると、そのスレーブ・デバイスは、トランザクションによって要求されるアクセスをより効率的に処理するために、開かれたページに対するアクセスを最大化するように努めることが可能である。各スレーブ・デバイスは、トランザクションがそれぞれ独立に識別可能であるため、その他のスレーブ・デバイスとは無関係に動作することが可能であり、その場合、応答は、読取りデータ／応答ルーティング回路８０を介してそれらのスレーブ・デバイスから利用可能になる場合に供給されることが可能であり、各応答は、マスタ・デバイスが、複数のトランザクションのうちで、応答が行われている特定のトランザクションを識別することを可能にするのに十分なトランザクション識別子を与える。この機構は、スレーブ・デバイスを相手にした通信パスにおける利用可能な帯域幅のより最適な利用を可能にする一方で、いくつかのスレーブ・デバイスが、実行される必要がある複数のトランザクションの概観に基づいてトランザクションが処理される効率を向上させることができるため、パフォーマンス向上が実現されることも可能にする。
【００７０】
一連の書込みトランザクションを指定するマルチトランザクション要求の場合、様々なトランザクションのために要求される書込みデータが、マルチトランザクション要求に関連してマスタ・デバイス５５から書込みデータ・ルーティング回路７５に出力されるとした場合、このことは、書込みデータ・ルーティング回路７５内の輻輳につながり得る潜在性が存在する。詳細には、書込みデータ・ルーティング回路は、通常、書込みキューに関連付けられたいくつかのステージから成り、それらのキューのうちのいくつかは、一杯になって、様々な書込みトランザクションが処理されるのを待っている可能性がある。このことは、相互接続回路の動作の効率を低下させる可能性がある。一実施例において、そのような潜在的な書込み輻輳は、図３に概略で示されるとおり、マスタ・デバイスからの書込みデータの伝送を延期することによって軽減される。例示のため、スレーブ・デバイス６０のうちの１つが示され、そのスレーブ・デバイスは、そのスレーブ・デバイスに転送された各トランザクション要求が入れられる要求キュー１００を有する。一実施例によれば、スレーブ・デバイスがマルチトランザクション要求を受信した場合、そのマルチトランザクション要求は、要求キュー１００内の１つのスロットだけを占有する。要求処理回路１０５が、キューからの要求を処理するように構成され得る。マルチトランザクション要求は、単一の要求キューしか占有しないように構成され得るので、このことは、事実上、要求処理回路が、そうでない場合に該当し得るよりも、より多くの待ち状態のトランザクションの可視性を有することを可能にし、したがって、将来のトランザクションのより高い可視性のため、要求処理回路によって適用され得る並べ替えの効率を向上させる。
【００７１】
図３において、円に囲まれた数字は、スレーブ・デバイスによるトランザクション要求の受信からそのトランザクション要求の関連する書込みデータの書込みまでの処理の一般的なシーケンスを表すのに使用される。
【００７２】
要求処理回路がマルチトランザクション要求を処理している場合、各トランザクションに関して、要求処理回路は、そのトランザクションと関係する書込みデータを要求する適切な制御信号をマスタ・デバイス５５に戻すように送信することが可能である。その要求には、マルチトランザクション要求の基本トランザクション識別子及びいくらかのトランザクション固有の情報（開始アドレスのいくつかの下位ビットなどの）から導き出されたトランザクション識別子がタグ付けされることが可能である。次に、このことは、要求された書込みデータが、書込みデータ・ルーティング回路７５を介してマスタ・デバイスから出力されることをもたらし、書込みデータは、書込みデータ・キュー１１０内に入れられる。要求処理回路１０５は、書込み制御回路１１５を制御し、したがって、次に、キューからその書込みデータを読み取り、書込み動作を開始することが可能である。メモリ・コントローラ、及び関連するメモリ・デバイスの前述の実例に関して、図３のスレーブ・デバイス６０内に示される要素は、メモリ・コントローラ内に備えられることが可能であり、書込みデータは、関連するメモリ・デバイス内に記憶するために書込み制御要素１１５から出力される。
【００７３】
書込みデータを出力するようにマスタ・デバイスをトリガするための機構は、様々な形態をとり得る。例えば、スレーブ・デバイスが書込みデータの出力を要求することを可能にするハンドシェーク機構が、スレーブ・デバイスとマスタ・デバイスの間に存在することが可能である。そのようなハンドシェーク機構が利用可能でない場合、スレーブ・デバイスは、例えば、相互接続内のスヌープ回路に、マスタ・デバイス・キャッシュからデータを退去させるスヌープ要求を発行させることによって、マスタ・デバイスのキャッシュからの書込みデータの退去を引き起こすことが可能であり得る。
【００７４】
図４は、マルチトランザクション要求を処理する際、要求配信回路がどのように、キャッシュ整合性の問題を管理するように構成され得るかを示す。図３の場合と同様に、円に囲まれた数字は、図に示される様々な対話の相対的な順序を示す。この例において、データ処理システムは、独自の関連するキャッシュ１３２、１４２、１５２をそれぞれが有する一連のマスタ・デバイス１３０、１４０、１５０を含む。それらのキャッシュのそれぞれは、単一のレベルのキャッシュであることが可能であり、又はそれら自体、複数のレベルのキャッシュ、例えば、レベル２キャッシュと組み合わされたレベル１キャッシュによって構成されることが可能である。図に示されるとおり、マスタ・デバイス１３０が、要求配信回路１６０に対してマルチトランザクション要求を発行するものと想定され、この実例における要求配信回路は、一実施例において、スヌープ回路の形態をとることが可能な整合性処理回路を含む。
【００７５】
一実施例において、要求配信回路１６０内の整合性処理回路は、マルチトランザクション要求の中で発行された全てのトランザクションのアドレスに関して、その他のマスタ・デバイス１４０、１５０のキャッシュ１４２、１５２に対してスヌープ要求を発行するように構成されることが可能であり、その場合、スヌープ応答は、要求配信回路に戻される。代替として、整合性処理回路は、キャッシュ１４２、１５２の中にデータが保持されるアドレスの指示を与えるストレージ構造に対するアクセスを有し、アドレス指示がトランザクションにおけるアドレス指示と合致するデータをキャッシュが記憶していることをストレージ構造が示す場合に限って、関係のあるキャッシュに対してスヌープ要求を発行してもよい。要求配信回路１６０の整合性処理回路内のストレージ構造は、様々な形態をとることが可能であるが、一実施例において、アドレス部分のログを記録するためのスヌープ・フィルタ、及び関連するアドレス部分がそのスヌープ・フィルタにおけるログ記録されたアドレス部分と合致するトランザクションを求めてスヌープされるべきキャッシュのＩＤの形態をとる。
【００７６】
スヌープ要求に応答して行われることが要求されるアクションは、実施例、及びトランザクションのタイプに依存して異なる。例えば、書込みトランザクションに関して、スヌープ要求は、ローカル・キャッシュ１４２、１５２の中に記憶されたデータの任意のコピーが単に無効にされるようにすることが可能であり、その場合、新たな書込みデータは、関係のあるスレーブ・デバイス１７０、１７２、１７４の中に記憶されるようにマスタ・デバイス１３０によって供給される。このことは、マスタ・デバイス１４０、１５０が、マスタ・デバイス１４０、１５０のローカル・キャッシュの中のデータの古くなったバージョンにアクセスすることによって、その後、誤ったデータにアクセスすることがないことを確実にする。代替として、新たな書込みデータは、その書込みデータがメモリに書き込まれることに加えて、スヌープされるキャッシュに書き込まれるようにされることも可能である。読取りトランザクションの場合、スヌープ要求は、読取りトランザクションによって要求されたデータがキャッシュ内で見出された場合、通常、要求されるデータがスヌープ応答の一部として、スヌープされるキャッシュから出力されるようにする。このことは、整合性処理回路１６０が、その後、そのデータにアクセスするためにスレーブ・デバイス１７０、１７２、１７４にアクセスする必要なしに、読取りデータ／応答ルーティング回路１６５を介してマスタ・デバイス１３０に要求される読取りデータを戻すことを可能にする。
【００７７】
キャッシュ１４２、１５２のそれぞれがマルチトランザクション要求の中の全てのトランザクションに関してスヌープされる実施例において、読取りトランザクションに関して、スヌープ応答が整合性処理回路によって収集されてから、関連するトランザクション要求がスレーブ・デバイスに伝搬される必要があるかどうかが決定される（要求される読取りデータがキャッシュ１４２、１５２のいずれかに存在しないことにより）ことが通常である。一連の書込みトランザクションに関して、スヌープ要求が、関係のあるキャッシュ・ラインが前のバージョンの書込みデータを包含する場合に、それらのキャッシュ・ラインが単に無効にされるようにしている場合、書込みトランザクションは、要求されるスレーブ・デバイス１７０、１７２、１７４に同時に伝搬されることが可能である。同様に、マルチトランザクション要求によって指定されたトランザクション要求のサブセットだけが、スヌープ要求が発行されることを要求する可能性があるようにスヌープ・フィルタが使用される実施例の場合、スヌープ応答が受信されることを待つことなしに、スレーブ・デバイス１７０、１７２、１７４に遅延なしに伝搬されることが可能ないくつかのトランザクション要求が存在する。この理由で、要求配信回路１６０から伝搬される様々なスヌープ要求、スヌープ応答、及びトランザクション要求の全てには、参照符号３がラベル付けされて、前述した制約の下で、これらが基本的に並行に行われることが示される。前述した実施例の場合と同様に、要求配信回路が、複数のトランザクションがスレーブ・デバイスのうちの１つへの伝搬を要求することを識別する場合、要求配信回路は、関係のあるスレーブ・デバイスに対して、そのスレーブ・デバイスによって実行されるべきトランザクションを識別するマルチトランザクション要求を発行することが可能である。
【００７８】
前段の説明から理解されるとおり、スレーブ・デバイスのそれぞれは、実行されたトランザクションのそれぞれの完了を示す応答を、読取りデータ／応答ルーティング回路１６５を介してマスタ・デバイス１３０に独立に出力する。更に、要求配信回路１６０内の整合性処理回路そのものが、スヌープされたキャッシュ１４２、１５２から受信されたスヌープ応答に基づいて、読取りデータ／応答ルーティング回路１６５を介してマスタ・デバイス１３０に戻されるようにルーティングされる応答の送信元であり得る。スレーブ・デバイスからの応答の場合と同様に、整合性処理回路からの応答は、マルチトランザクション要求のフィールド１２内の基本トランザクション識別子から導き出された、それらの応答に関連付けられたトランザクション識別子と、トランザクションの開始アドレスのいくつかの下位アドレス・ビットなどのいくらかのトランザクション固有の情報とを有する。したがって、前述した実施例の場合と同様に、マスタ・デバイス１３０は、マルチトランザクション要求の中で指定されたトランザクションのそれぞれがいつ完了されたかを決定するために、読取りデータ／応答ルーティング回路１６５を介して供給される様々な応答を監視することが可能である。
【００７９】
図５は、要求配信回路２００がどのように、階層に構成された複数の個別のステージから形成され得るかを概略で示す。この実例において、スヌープ回路は、別々の２つのスヌープ回路２１２、２１４から形成される要求配信回路内に備えられ、各スヌープ回路は、異なるアドレス範囲に関連付けられるものと想定される。したがって、マルチトランザクション要求の中で指定されるトランザクションのそれぞれに関して、いずれのスヌープ回路がそのトランザクションを点検すべきかを決定するために、最初に受信されたマルチトランザクション要求を解析するアドレス・マップ分割回路２１０が提供される。その解析の結果、スヌープ回路のそれぞれに、それらのスヌープ回路による点検を必要とする様々なトランザクションを識別する修正されたマルチトランザクション要求が送信される。第１のスヌープ回路２１２は、第１のスヌープ回路２１２が受信する各トランザクションに関して、マスタ・デバイス１４０、１５０内のキャッシュ１４２、１５２に関してスヌープ要求が発行される必要があるかどうかを決定する。スヌープ要求が発行される必要がある場合、それらのスヌープ要求が発行され、要求されるスヌープ応答が受信される。書込みトランザクションに関して、スヌープ回路は、この事例では、メモリ・コントローラ２０２である、スヌープ回路に関連付けられたスレーブ・デバイスに対してトランザクション要求を発行することも、通常、行う。この場合も、このことは、メモリ・コントローラ２０２に対してスヌープ回路２１２からマルチトランザクション要求を発行して、メモリ・コントローラ２０２が、それらの複数のトランザクションを扱う際にメモリ・コントローラ２０２の挙動を最適化することを可能にすることによって実現され得る。同一のアクションが、スヌープ応答に基づいて応答され得ない読取りトランザクションに関して行われることが可能である。
【００８０】
スヌープ回路２１４は、要求されるとおりにキャッシュ１４２、１５２に対してスヌープ要求を発行して、スヌープ回路２１２と同様に動作する。しかし、この事例において、単一のスレーブ・デバイスが、スヌープ回路２１４によって管理されるアドレス範囲に関連付けられているだけでなく、代わりに、この実例においては、メモリ・コントローラ２０４、２０６、２０８によって形成された３つのスレーブ・デバイスが存在する。したがって、スヌープ回路２１４によって出力されるトランザクション要求はまず、アドレス・マップ分割回路２２０に送られ、アドレス・マップ分割回路２２０は、この実例において、メモリ・コントローラ２０４に関連付けられたアドレスの知識を有する。したがって、関連するアドレスがメモリ・コントローラ２０４にマップされるトランザクションに関して、アドレス・マップ分割回路２２０は、メモリ・コントローラ２０４に対してそのトランザクションを発行する。他の全てのトランザクション要求は、アドレス・マップ分割回路２２５に転送され、アドレス・マップ分割回路２２５は、メモリ・コントローラ２０６及び２０８のそれぞれに関連付けられたアドレスの知識を有し、したがって、適切なメモリ・コントローラ２０６、２０８にトランザクション要求を伝搬するために、受信されたトランザクションを相応するように分割する。
【００８１】
図５は、単に、要求配信回路がどのように、要求されるとおりにスヌープ要求を実行しながら、要求されるスレーブ・デバイスに様々なトランザクション要求をルーティングするように階層に構成され得るかの実例に過ぎないことが理解されよう。
【００８２】
特定のスレーブ・デバイスに関連付けられたアドレスが、粗いレベルの粒度で、又はより細かいレベルの粒度で、別のスレーブ・デバイスに関連付けられたアドレスとインターリーブされることがあり得る。例えば、このことは、関連付けられたＤＲＡＭメモリ・ブロックに対するアクセスをそれぞれが制御し、アドレスが、アクセス時間を向上させるために様々なＤＲＡＭメモリ・ブロックの間でインターリーブされる複数のメモリ・コントローラが備えられるＤＲＡＭメモリの場合に、しばしば、該当する。一実施例において、要求配信回路は、受信されたマルチトランザクション要求を、スレーブ・デバイスのそれぞれを宛先とするトランザクション要求に分割するのを支援するためにインターリーブ・サポート回路を含み得る。このことが、マスタ・デバイス２５０が、要求配信回路２５５を含む相互接続を介して２つのスレーブ・デバイス２７０、２８０に結合される図６Ａにおける実例によって示される。要求配信回路は、例えば、メモリ・コントローラであり得る２つのスレーブ・デバイス２７０、２８０にアドレスがどのようにマップされるかを識別するメモリ・マップ２６２に対するアクセスを有するインターリーブ・サポート・ブロック２６０を含む。スレーブ・デバイスのそれぞれには、そのスレーブ・デバイスがトランザクション要求を受信するトランザクションを実行するトランザクション・ハンドラ２７２、２８２が関連付けられる。前述したとおり、スレーブ・デバイス自体が、要求配信回路２５５からマルチトランザクション要求を受信することが可能であり、その場合、トランザクション・ハンドラは、それらのトランザクションのそれぞれが実行されるべきであると決定し、次に、それらのトランザクションがスレーブ・デバイスによって実行されるようにし、それらのトランザクションのそれぞれの完了を示す応答データが、マスタ・デバイスに戻されるようにルーティングされる。
【００８３】
図６Ａの実例において、要求配信回路２５５は、マルチトランザクション要求を解析し、詳細には、インターリーブ・サポート・ブロック２６０が、いずれのトランザクションがスレーブ・デバイス２７０、２８０のいずれへのルーティングを必要とするかを決定するためにメモリ・マップ２６２を参照する。次に、要求配信回路２５５が、スレーブ・デバイスのそれぞれに送信される修正されたマルチトランザクション要求を作成する。この実施例において、修正は、要求配信回路によって発行された各マルチトランザクション要求に関してフィールド１４内にトランザクションの数情報を設定して、いずれのトランザクションが実行される必要があるかを受信側スレーブ・デバイスに明らかにすることを含む。一実施例において、このことは、図１Ｂにおけるビット単位のフィールド３５のようなビット単位のフィールドを使用して、受信側スレーブ・デバイスによって処理されるべきマルチトランザクション要求内の特定のトランザクションを識別することによって実現され得る。したがって、スレーブ・デバイス２７０に対して要求配信回路２５５から発行されるマルチトランザクション要求は、要求配信回路２５５からスレーブ・デバイス２８０に送信されるマルチトランザクション要求とは異なるようにビット単位のフィールドが設定されて、スレーブ・デバイスのそれぞれが、その後、要求されるトランザクションを実行し、マスタ・デバイスに対して、要求される応答を発行するようにする。次に、マスタ・デバイスが、マスタ・デバイスによって最初に発行されたマルチトランザクション要求の中で指定されたトランザクションのそれぞれがいつ完了されたかを決定することができる。
【００８４】
図６Ｂは、スレーブ・デバイス２７０、２８０のそれぞれが、スレーブ・デバイス２７０、２８０の間でアドレスをインターリーブするのに使用されるインターリーブ・パターンを識別するコード情報２７４、２８４をローカルで記憶する代替の実施例を示す。この実施例において、スレーブ・デバイス２７０、２８０の両方は、同一のマルチトランザクション要求を受信し、関連付けられたコード情報２７４、２８４を使用して、そのマルチトランザクション要求内のトランザクションのいずれが処理されるべきであるかを決定する。次に、インターリーブ・サポート・ブロック２６０が、いずれのトランザクションが、スレーブ・デバイス２７０又はスレーブ・デバイス２８０によって扱われるべきかを決定し、その後、それらのスレーブ・デバイスが処理する必要がある特定のトランザクションを識別するために、それらのスレーブ・デバイスが、それらのスレーブ・デバイスによってローカルで記憶されたコード２７４、２８４を使用することを可能にするようにそれらのスレーブ・デバイスの両方にブロードキャストされるマルチトランザクション要求を構築するのに使用される。
【００８５】
図６Ａ及び図６Ｂにおいて、オプションの競合緩和ブロック２６５が示される。次に、このブロックが使用され得る方法が、図７Ａ及び図７Ｂを参照して説明される。マルチトランザクション要求によって指定される様々なトランザクションを処理する際、相互接続の読取りデータ／応答ルーティング回路内で競合問題が生じる潜在性が存在し、書込みトランザクションの場合もやはり、相互接続の書込みデータ・ルーティング回路内で競合問題が生じる潜在性が存在する。同時に応対がなされる複数のトランザクションが存在する任意のシステムにおいて、競合の可能性が生じる。しかし、要求配信回路２５５は、マルチトランザクション要求がどのように扱われるかを管理しており、詳細には、そのマルチトランザクション要求の中で指定されるトランザクションを実行することが要求される様々なスレーブ・デバイスに、それらのトランザクションについてどのように通知が行われるかについて管理しているので、要求配信回路２５５は、相互接続内の競合を低減しようと努めるために競合低減対策を適用する競合緩和ブロック２６５を含むことが可能である。行われ得る競合低減対策の１つの実例として（図７Ａ参照）、要求配信回路２５５が、スレーブ２７０に対してマルチトランザクション要求を発行するが、他方のスレーブ・デバイス２８０に対する要求されるマルチトランザクション要求の伝送を時間遅延させるように構成されることが可能である。このことは、応答がマスタ・デバイスに戻されるようにルーティングされるタイミングが互い違いになることをもたらし、したがって、競合を低減する可能性が高い。
【００８６】
図７Ｂは、要求配信回路２５５から各スレーブ・デバイス２７０、２８０に対してマルチトランザクション要求が基本的に同時に発行されるが、それらのマルチトランザクション要求のそれぞれと一緒に側波帯信号として緩和制御情報が含められる代替の実施例を示す。１つの実例において、このことは、スレーブ・デバイスによって使用され得る何らかの最大データレートを指定して、例えば、各スレーブ・デバイスがマスタ・デバイスに応答を与えることが可能な最大レートを低減する、又は、マルチトランザクション要求が複数の書込みトランザクションと関係する場合に、各スレーブ・デバイスがマスタ・デバイスに書込みデータを要求することが可能な最大レートを低減することが可能である。このことは、相互接続内の競合の可能性を低減するのに役立つ。競合を低減する別の対策として、特定のタイムスロットが、読取りデータ／応答ルーティング回路８０を介して応答データを戻すことに関してスレーブ・デバイスのそれぞれに割り当てられることも可能である。
【００８７】
代替の実施例において、スレーブ・デバイスとマスタ・デバイスの間で書込みトランザクションのために書込みデータを要求するハンドシェーク信号が使用される場合、書込みデータ・ルーティング回路７５に関して競合緩和対策を特別に行う必要性は存在しないようにすることが可能である。代わりに、２つのスレーブが同時に書込みデータを要求する場合、マスタ・デバイスは、それらの要求のうちの１つだけを受け付け、その受け付けられた要求に関して書込みデータを供給する。その時点で要求に応対がなされないスレーブ・デバイスは、その要求を再アサートすることが可能であり、又は書込みデータを待っている間に異なるトランザクションを再スケジュールすることも可能である。
【００８８】
図８は、いくつかのタイプの書込みトランザクションのために一実施例において使用され得るマルチトランザクション要求の別のフォーマットを概略で示す。マルチトランザクション要求３００は、図１Ａに示されるフィールド１２、１４、１６、１８、２０、及び２２と一致するフィールド３１２、３１４、３１６、３１８、３２０、及び３２２である様々なフィールドを含む。この実例において、読取り書込みフィールド３２０は、マルチトランザクション要求が一連の書込みトランザクションと関係することを識別するように設定される。また、通常の書込みを識別する第１の値に設定され得る、又は書込みデータが書込みタイプ・フィールドから直接に暗示され得る特定の形態の書込み動作を識別する第２の特別な値に設定され得る、書込みタイプ・フィールド３２４も備えられる。例えば、一実施例において、書込みタイプ・フィールドが論理０値に設定された場合、このことは、全ての書込みトランザクションに関する書込みデータが一連の論理０値であり、その結果、メモリの領域全体が論理０値にリセットされることが可能であることを意味する。そのような形態のマルチトランザクション要求では、書込みデータは暗示され、ローカルで生成され得るので、スレーブ・デバイスが各トランザクションに関して書込みデータを個々に要求する必要はない。このことは、書込みデータ輻輳を低減し、相互接続内の電力消費を低減する。
【００８９】
また、説明される実施例のマルチトランザクション要求アプローチが、図９に概略で示されるとおり、効率的なメモリ・コピー動作を実行するのに使用されることも可能である。メモリ・コピー動作によれば、データは、第１のアドレスから読み取られ、その後、第２のアドレスに直接に書き込まれる。一実施例において、そのようなメモリ動作は、マルチトランザクション読取り要求の後に続いて、そのマルチトランザクション読取り要求に関連付けられるべきマルチトランザクション書込み要求を発行することによって広い範囲のメモリ・アドレスに関して実行され得る。マルチトランザクション読取り要求とマルチトランザクション書込み要求の間の関連付けを示す１つの方法は、両方のマルチトランザクション要求に関して同一の基本トランザクション識別子を使用することである。マルチトランザクション書込み要求の対象であるアドレスの全てが単一のスレーブ・デバイス内に存在する状況を最初に考慮すると、図９にされる構成要素がそのスレーブ・デバイス内に備えられて、マルチトランザクション要求が受信されるキュー３５０と、要求キュー内の要求を処理するための要求処理回路３５５を含むことが可能である。それらの要求を処理する際、要求処理ブロック３５５は、読取り制御回路３６０と書込み制御回路３６５の両方と通信して、要求される読取り動作及び書込み動作が行われるようにする。キューが、マルチトランザクション読取り要求の後に続いて、同一の基本トランザクション識別子を有するマルチトランザクション書込み要求を包含することを突き止めると、要求処理ブロック３５５は、要求される読取り動作を実行するよう読取り制御回路を制御し、次に、読取りデータの各アイテムが、読取り制御ブロックから直接に、要求処理ブロックが要求される書込み動作を実行させる書込み制御ブロック３６５に転送される。
【００９０】
読取り動作と書込み動作が全て同一のスレーブ・デバイスに関して実行されるわけではない状況、例えば、データが１つのスレーブ・デバイスから読み取られ、その後、別のスレーブ・デバイスに書き込まれる状況において、その２つのスレーブ・デバイスの間の協調は、それらのスレーブ・デバイスの一方から相互接続に戻される読取りデータが、他方のスレーブ・デバイスにおける書込み制御ブロックに直接にルーティングされて、そのデータが、その他方のスレーブ・デバイス内の要求されるメモリ・アドレスに書き込まれるようにするように相互接続構造内で実施され得る。
【００９１】
代替の実施例において、メモリ・コピー機能を実行するために別々のマルチトランザクション読取り要求とマルチトランザクション書込み要求を要求するのではなく、各読取りデータ・アイテムが書き込まれるべきアドレスが決定されることを可能にする書込みアドレス情報を含む修正されたマルチトランザクション読取り要求が指定されることが可能である。書込みアドレス情報は、様々な形態をとることが可能であるが、一実施例において、対応する書込みアドレスを計算するために各読取りアドレスに適用されるべきオフセットを示すオフセット指示を備えることが可能である。
【００９２】
理解されるとおり、仮想でアドレス指定されるデータに関して、マルチトランザクション要求の長さは、通常、読取り又は書込みがページ境界に遭遇することによって制限される。
【００９３】
前述した実施例において説明されるマルチトランザクション要求アプローチは、システム内の複数のキャッシュに関してキャッシュ・メンテナンス動作が実行されるようにするために相互接続内でマスタ・デバイスからスヌープ回路に対して発行されるトランザクションによって開始されるキャッシュ・メンテナンス動作の効率を高めるために使用されることも可能である。そのような構成が、図１０を参照して実例として説明される。この実例において、マスタ・デバイス４００は、マルチトランザクション要求を発行し（そのマルチトランザクション要求内の各トランザクションは、キャッシュ・メンテナンス動作を指定する）、そのマルチトランザクション要求が、スヌープ回路４３０内の要求配信回路４４０によって受信される。システム内で複数のキャッシュが備えられることが可能であり、要求配信回路４４０が、マルチトランザクション要求内のアドレス情報及び数量指示（すなわち、トランザクションの数を示す）を参照して、いずれのキャッシュがいずれのキャッシュ・メンテナンス動作を受ける必要があるかを決定する。その複数のキャッシュは、他のマスタ・デバイス４１０、４２０に関連付けられたローカル・キャッシュ４１２、４２２であることが可能であり、又はいくつかの共有されるキャッシュ４５０、４５２、例えば、マスタ・デバイス４００、４１０、４２０のそれぞれがアクセス可能なレベル３キャッシュであることが可能である。一実施例において、図１０に示されるとおり、その複数のキャッシュは、ローカル・キャッシュ４１２、４２２の混合と共有されるキャッシュ４５０、４５２の両方を備えることが可能である。
【００９４】
一実施例において、全てのトランザクションに関して、キャッシュのそれぞれに対して、それらのキャッシュ内でルックアップを開始するスヌープ要求が発行され、キャッシュ・ルックアップの一環としてヒットが検出された場合（すなわち、トランザクションの関係のあるアドレス部分が、キャッシュ・ラインに関連して記憶されたアドレス部分と合致した場合）、関連付けられたキャッシュ・ラインに対するキャッシュ・メンテナンス動作の実行がされる。
【００９５】
しかし、代替の実施例において、スヌープ・フィルタ４４５が維持されて、アドレス部分を識別する複数のエントリを有し、トランザクションの対応するアドレス部分が、スヌープ・フィルタ・エントリにおける記憶されたアドレス部分と合致する場合、いずれのキャッシュがスヌープ要求の対象とされる必要があるかの指示を与える。そのような構成が図１１Ａに示され、スヌープ・フィルタ５００における各エントリ５０５は、キャッシュのキャッシュ・ライン内に保持されるデータ値の全てに共通するアドレス部分であるタグ・アドレス部分５０７を含む。更に、各エントリは、タグ部分５０７がトランザクション（この事例では、キャッシュ・メンテナンス動作を指定するトランザクション）のタグ部分と合致する場合、スヌープされる必要があるキャッシュのフィールド５０９の中に指示を記憶する。スヌープ・フィルタ・アプローチを使用することにより、このことは、各キャッシュ・メンテナンス動作を受ける必要があるキャッシュのサブセットを決定することによってシステム内のスヌープ要求トラフィックの量を低減することが可能である。
【００９６】
キャッシュ・メンテナンス動作は、当業者には理解されるとおり、様々な形態をとることが可能である。例えば、キャッシュ・メンテナンス動作は、キャッシュ・ラインの内容が消去され、無効にされることを要求することが可能である。消去動作は、キャッシュ・ラインにおいて保持されるデータがメモリの中に記憶されたデータより新しい場合、メモリが無効にされるのに先立って、現在の内容がメモリに書き出されることを要求する。
【００９７】
マスタ・デバイス４００は、複数のトランザクションを識別するマルチトランザクション要求を指定し、したがって、実行される必要がある複数のキャッシュ・メンテナンス動作を指定するので、要求配信回路４４０が、特定のキャッシュが複数のキャッシュ・メンテナンス動作を実行する必要があると決定した場合、要求配信回路４４０は、マルチトランザクション要求を、関係のあるキャッシュに対するスヌープ要求として発行することによって、キャッシュにそのことを明らかにすることが可能である。このことは、図１２及び図１３を参照して後段の実例に関して説明されるとおり、キャッシュ内のキャッシュ・メンテナンス動作の扱いのいくらかの最適化を可能にすることができる。
【００９８】
様々なスヌープ応答は、要求配信回路に戻され、その後、マスタ・デバイス４００に進行情報を送り返して、マスタ・デバイスが、複数のトランザクション（この事例では、複数のキャッシュ・メンテナンス動作）がいつ実行されたかを決定することを可能にすることを担う追跡回路４３５に転送される。特定のキャッシュ・メンテナンス動作が複数のキャッシュの内部で実行される必要がある状況において、追跡回路は、キャッシュのそれぞれからの応答を監視し、スヌープ応答の全てが受信されて初めて、特定のトランザクションを完了したものとして扱う。
【００９９】
追跡回路４３５は、マルチトランザクション要求の中で指定されたトランザクションの全ての実行を常に把握しており、その後、要求されるキャッシュ・メンテナンス動作の全てが実行されると、マスタ・デバイス４００に単一の通知を送り返すように構成されることが可能である。代替として、追跡回路４３５は、例えば、トランザクションのブロック、又は個々のトランザクションが処理されるにつれ、マスタ・デバイス４００に一連のカウント値を戻すように発行することによって、より少しずつ進行情報を与えることも可能である。その場合、マスタ・デバイス４００は、マルチトランザクション要求の中で指定されたトランザクションの全てがいつ処理されたかを決定するために、単に様々なカウント値を累算するだけでよい。
【０１００】
ローカル・キャッシュ４１２、４２２に関して、内容は、時とともに動的に変化し、スヌープ・フィルタ４４５が、各キャッシュ内のエントリに関連付けられたアドレスを常に把握しておき、スヌープ要求が必要であるか否かを相応するように示すための効率的な機構を提供することが理解されよう。共有されるキャッシュ４５０、４５２に関して、しばしば、異なるアドレス範囲が異なるキャッシュに関連付けられることがあり、したがって、キャッシュとキャッシュの中に記憶されたデータのアドレスの間により静的な関係が存在する。そのような構成において、要求配信回路４４０は、任意の特定のトランザクションに関して、共有されるキャッシュのうちのいずれがスヌープ要求の発行を受ける必要があるかを決定するために、共有されるキャッシュ４５０、４５２と関係していくらかの静的マッピング情報に対するアクセスを有することが可能である。
【０１０１】
単一のスヌープ回路が提供され得るが、一実施例において、複数のスヌープ回路４３０、４６０が提供され、各スヌープ回路は、異なるアドレス範囲に関連付けられる。そのような実施例において、第１のステージ要求配信回路４７０が、マルチトランザクション要求によって指定された各トランザクションに関して、いずれのスヌープ回路が、関連付けられたトランザクションを受信し、処理すべきかを決定するために、各スヌープ回路に関連付けられたアドレス範囲についての情報を参照するために備えられることが可能である。このことは、それらのトランザクションのあるサブセットがスヌープ回路４３０に転送され、異なるサブセットがスヌープ回路４６０にルーティングされることをもたらし得る。その場合、スヌープ回路のそれぞれは、そのスヌープ回路によって処理されるべき様々なトランザクションを識別する、第１のステージ要求配信回路４７０からの修正されたマルチトランザクション要求を受信するように構成されることが可能である。そのような実施例において、各スヌープ回路は、マスタ・デバイス４００に進行情報を各々、独立に送り返す別個の追跡回路４３５を有する。その場合、マスタ・デバイス４００は、マルチトランザクション要求に関連付けられたトランザクションの全てがいつ処理されたかを決定するために、追跡回路のそれぞれから供給される進行情報を監視することが可能である。
【０１０２】
前述した実施例とは異なり、一連のキャッシュ・メンテナンス動作を指定するマルチトランザクション要求に関して、マスタ・デバイス４００は、通常、トランザクションごとに、いずれのトランザクションが実行されたかを知る必要がないことは注目に値する。代わりに、キャッシュ・メンテナンス動作がいつ完了されたかを知るだけでよい。したがって、通常、マスタ・デバイスに送り返される進行情報が、マスタ・デバイスが、キャッシュ・メンテナンス動作の全てがいつ実行されたかを決定するのに十分であるだけでよく、その情報が、マスタ・デバイス４００に個々のトランザクションを明らかにする一意のトランザクション識別子情報を含む必要は全くない。
【０１０３】
図１１Ｂは、マルチトランザクション要求によって指定される複数のキャッシュ・メンテナンス動作の扱いを支援するようにスヌープ・フィルタの構成に行われ得る最適化を示す。この実施例において、スヌープ・フィルタ５２０における各エントリ５２５は、図１１Ａの実例のフィールド５０７の中に記憶されたタグ部分よりわずかに短いタグ部分を記憶するフィールド５３０を有し、したがって、このより短いタグ部分は、複数のキャッシュ・ラインと合致する。その場合、単一のルックアップが、各エントリ５２５に関して実行されることが可能であり、トランザクションの対応する短くされたタグ部分が、フィールド５３０内に記憶されたタグ部分と合致する場合、様々なフィールド５３２、５３４、５３６の全てにおける関係のある情報が、それらのフィールドに関連付けられたキャッシュ・ラインに関していずれのキャッシュがスヌープされる必要があるかを識別するのに使用され得る。複数のキャッシュ・ラインを単一のエントリに関連付けることができるようにすることにより、このことは、マルチトランザクション要求が及ぶアドレスの全範囲を処理するために要求されるルックアップの回数を低減することによってスヌープ・フィルタに対するアクセスの効率を大幅に向上させることができる。
【０１０４】
しばしば、スヌープ・フィルタ４４５は、キャッシュと同一の基本構造を有し、したがって、図１３における要素６００によって示されるような、Ｎウェイ・セット・アソシアティブ型のストレージ構造として構成されることが可能である。ウェイ６０２、６０４、６０６、６０８のそれぞれは、複数のエントリを含み、それらのエントリは、タグ部分と、いくらかの関連付けられた情報とを記憶する。スヌープ・フィルタ内で、関連付けられた情報は、図１１Ａ又は図１１Ｂに示される情報、すなわち、エントリに記憶されたタグ部分との合致が検出された場合にスヌープされる必要があるキャッシュを識別する情報である。キャッシュ自体に関して、関連付けられた情報は、妥当な制御データと、汚い制御データとを含む。更に、キャッシュの中で、各タグ・エントリに関して、トランザクション・アドレスのタグ部分とエントリ６２０に記憶されたタグ部分の間に合致が見出された場合、アクセスされる複数のデータ値を記憶する対応するキャッシュ・ラインが存在することが理解されよう。
【０１０５】
図１３に示されるとおり、考慮されるアドレス６１０に関して、アドレスのインデックス部分６１４が、Ｎウェイ・セット・アソシアティブ型のストレージ構造内の特定のセットを識別するのに使用され、次に、タグ情報が、そのセットの中の各エントリから対応するタグ比較ブロック６２５、６３０、６３５に出力され、Ｎウエイ・セット・アソシアティブ型のストレージ構造における各ウェイにつき１つのタグ比較ブロックが存在する。次に、出力されたタグ情報が、ヒットが存在するかどうかを決定するためにアドレス６１０のタグ部分６１２と比較される。ヒットが存在する場合、次に、スヌープ・フィルタにおいてルックアップが実行される場合、関連付けられた情報がエントリとともに、スヌープされる必要があるキャッシュを識別する。代わりに、キャッシュの１つの内部でルックアップが実行される場合、ヒットがあった場合、このことは、キャッシュ・メンテナンス動作の対象とされる必要があるキャッシュ・ラインを識別する。
【０１０６】
図１２は、スヌープ・フィルタ４４５、又はキャッシュのいずれかにおいて、マルチトランザクション要求が、そのマルチトランザクション要求が及ぶアドレス範囲がキャッシュ・ウェイのサイズより大きい場合に、それらの要素に向けられた場合に使用され得る最適化を示す流れ図である。アドレス範囲が、キャッシュ・ウェイ・サイズ以下の場合、プロセスは、単にステップ５７５に進み、標準のタグ・ルックアップ・プロセスが実行される。しかし、アドレスがキャッシュ・ウェイ・サイズより大きい場合、プロセスは、ステップ５５５に進み、トランザクションの全てに応対するためにキャッシュを指す各インデックスが何回、反復される必要があるかが決定される。次に、各インデックスを複数回、反復する代わりに、プロセスは、ステップ５６０に代わりに進み、そのインデックス・ロケーションにおける各セットに関して対応するタグ値を得るために、各インデックスにつき１回、タグ・ルックアップが実行される。その後、ステップ５６５において、各タグ値のいくつかの最下位ビットがタグ比較からマスクされ、マスクされるビットの数は、ステップ５５５において決定された反復の回数に依存する。例えば、各インデックスの８回の反復が要求されると決定された場合、タグ値の最下位の３ビットがマスクされる。より一般的には、要求される反復の回数が２のべき乗である場合、単純なビット・マスクが使用され得る。他の反復に関して、より複雑な技法が使用されることが可能である。
【０１０７】
更に、図１３に示されるとおり、アドレス６１０のタグ部分６１２からの均等な数のビットがマスクされ、したがって、各タグ比較ブロック６２５、６３０、６３５は、マスクされたタグ情報に基づいてタグ比較を実行する。ウェイのいずれかにおいてヒットが検出された場合、データ・キャッシュ４１２、４２２、４５０、４５２のうちの１つにおいてルックアップが実行されている場合、又は、代わりに、スヌープ・フィルタ・キャッシュにおいてルックアップが実行されている場合、対応するキャッシュ・ラインに対して消去動作が実行され、次に、このことが、スヌープ・フィルタ・エントリの中の関連付けられた制御情報によって識別されるキャッシュのそれぞれに対してスヌープ要求が発行されることをトリガする。
【０１０８】
スヌープ・フィルタが物理アドレスに対して作用する実施例において、そのような状況においてマスタ・デバイスから発行され得るマルチトランザクション要求のサイズを制限することの結果として、大きい仮想アドレス動作がページ・サイズの動作に細分されなくてもよい可能性があることが理解されよう。
【０１０９】
図１２及び図１３を参照して説明されるアプローチによって実現され得る利点の例として、実例として、８ウェイ２５６ｋＢキャッシュを考慮することにする。ラインのそれぞれが６４バイトである場合、合計のキャッシュは、４ｋのラインを有し、５１２個のセットが存在することになる。したがって、４ＭＢ消去動作が実行される必要がある場合、図１２及び図１３のアプローチの使用なしでは、このことは、６４ｋ回の検査が実行されることを要求することになり、４ＭＢ消去の実行中、各インデックスに関して繰り返されるルックアップ動作が実行される。しかし、図１２及び図１３のアプローチの使用を介して、エントリのそれぞれは、１回だけ検査され、したがって、６４ｋ回の検査ではなく、５１２回の検査が実行される。各検査は、事実上、１２８個のアドレスを範囲に含み、したがって、それらのアドレスの７ビットがタグ検査のためにマスクされる。
【０１１０】
特定の実施例が本明細書において説明されてきたが、本発明は、それらの実施例に限定されないこと、並びに本発明の範囲内で、それらの実施例に対する多くの修正及び追加が行われ得ることが理解されよう。例えば、本発明の範囲を逸脱することなく、以下の従属クレームの特徴が独立クレームの特徴と様々に組み合わされることが可能である。
【図１Ａ】
0006574779.tif 000002
【図１Ｂ】
0006574779.tif 000003
【図２】
0006574779.tif 000004
【図３】
0006574779.tif 000005
【図４】
0006574779.tif 000006
【図５】
0006574779.tif 000007
【図６Ａ】
0006574779.tif 000008
【図６Ｂ】
0006574779.tif 000009
【図７Ａ】
0006574779.tif 000010
【図７Ｂ】
0006574779.tif 000011
【図８】
0006574779.tif 000012
【図９】
0006574779.tif 000013
【図１０】
0006574779.tif 000014
【図１１Ａ】
0006574779.tif 000015
【図１１Ｂ】
0006574779.tif 000016
【図１２】
0006574779.tif 000017
【図１３】
0006574779.tif 000018