(57)【要約】  メモリコントローラはメモリアクセス回路を備え、メモリアクセス回路は、メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答してメモリに格納されているデータにアクセスし、アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供するように構成されている。
2020514878.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセス回路を備えるメモリコントローラであって、前記メモリアクセス回路が、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、前記メモリに格納されているデータにアクセスし、
アクセスされた前記データを前記データアクセスリクエストに対するデータアクセス応答として提供する、
ように構成されている、メモリコントローラ。
【請求項２】
前記データアクセスヒントメッセージおよび前記データアクセスリクエストの各々が、１つ以上のメモリアドレスの範囲によってデータアクセスを指定する請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリアクセス回路が、データアクセスヒントメッセージに応答して、１つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、前記メモリアクセス回路は、前記メモリコントローラが、１つ以上のメモリアドレスの前記所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされた前記データをデータアクセス応答として提供するように構成されている、請求項２に記載のメモリコントローラ。
【請求項４】
前記データアクセスリクエストが、前記メモリコントローラとデータ通信している別のノードであって、前記データアクセス応答が提供されるべき別のノードを指定する、請求項１に記載のメモリコントローラ。
【請求項５】
前記メモリアクセス回路が、受信したデータアクセスヒントメッセージに応答して、データアクセスを開始するか否かを決定するように構成されている、請求項１に記載のメモリコントローラ。
【請求項６】
データ処理システムであって、
各々が、関連づけられたキャッシュメモリを有する１つ以上のマスターノードと、
各々が、請求項１に記載のメモリコントローラを備える１つ以上のスレーブノードと、
前記データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノードと、
を備えるデータ処理システム。
【請求項７】
前記１つ以上のマスターノードが、前記ホームノードにデータアクセスリクエストを発行するように構成され、
前記ホームノードが、前記ホームノードがデータアクセスリクエストに応えられるか、または前記データアクセスが、１つ以上のスレーブノードへのアクセスを必要とするかを検出し、１つ以上のスレーブノードへのアクセスが必要なときに、前記１つ以上のスレーブノードにデータアクセスリクエストを送信するように構成されている、
請求項６に記載のデータ処理システム。
【請求項８】
前記１つ以上のマスターノードが、
前記ホームノードへのデータアクセスリクエスト、または
前記ホームノードへのデータアクセスリクエスト、および前記ホームノードが前記データアクセスに応えることができない場合に、前記データアクセスリクエストによって指定された前記データアクセスに応える、１つ以上のスレーブノードのうちの、該当する１つへのデータアクセスヒントメッセージ、
のいずれか一方を送信するように構成されている、請求項７に記載のデータ処理システム。
【請求項９】
前記１つ以上のマスターノードが、前記データアクセスヒントメッセージを送信するか否かを決定する予測回路を備える、請求項８に記載のデータ処理システム。
【請求項１０】
前記予測回路が、前記ホームノードおよびスレーブノードの一方または両方から受信した指示であって、前記スレーブノードが、以前のデータアクセスリクエストの１つ以上に応えたか否かを示す指示に応答して、前記データアクセスヒントメッセージを前記スレーブノードに送信するか否かを決定するように構成されている、請求項９に記載のデータ処理システム。
【請求項１１】
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、前記メモリに格納されているデータにアクセスすることと、
アクセスされた前記データを前記データアクセスリクエストに対するデータアクセス応答として提供することと、
を含むメモリ制御方法。
【請求項１２】
最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納し、前記予測データから、次のデータアクセスリクエストが前記第１データソースによって応えられるかまたは前記第２データソースによって応えられるかを予測する予測器回路であって、前記第１データソースおよび前記第２データソースが、データアクセスリクエストが前記第１データソースによって応えられない場合に、前記第２データソースによって応えられるように配置されている、予測器回路と、
前記第１データソースに前記データアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが前記第２データソースによって応えられるであろうと前記予測器回路が予測したことに応答して、前記所与のデータアクセスリクエストに前記第２データソースが応えなければならないであろうという指示を前記第２データソースに発行する発行回路と、
を備えるデータ処理回路。
【請求項１３】
前記予測器回路が、前記第１データソースおよび前記第２データソースの一方または両方から受信した、どのデータソースが最近のデータアクセスリクエストに応えたかを示す情報に応答して前記予測データを格納するように構成されている、請求項１２に記載のデータ処理回路。
【請求項１４】
前記予測データがカウント値を含み、前記予測器回路が、最近のデータアクセスリクエストに前記第１データソースが応えたか、または前記第２データソースが応えたか応じて前記カウント値を変更するように構成されている、請求項１３に記載のデータ処理回路。
【請求項１５】
前記予測器回路が、前記カウント値をしきい値と比較するための比較器を備える、請求項１４に記載のデータ処理回路。
【請求項１６】
前記予測器回路が、最近のデータアクセスに前記第１データソースが応えたことに応答して第１変更量だけ前記カウント値を変更し、最近のデータアクセスに前記第２データソースが応えたことに応答して前記第１変更量とは逆の第２変更量だけカウント値を変化させるように構成されている、請求項１４に記載のデータ処理回路。
【請求項１７】
前記予測器回路が、前記第１変更量および前記第２変更量の一方または両方を変化させるように構成される、請求項１６に記載のデータ処理回路。
【請求項１８】
前記予測器回路が、データアクセスリクエストの２つ以上のクラスについてそれぞれの予測を生成するように構成されている、請求項１２に記載のデータ処理回路。
【請求項１９】
データアクセスリクエストの前記２つ以上のクラスが、
データ読み出しリクエストと、
命令フェッチリクエストと、
アドレス変換フェッチリクエストとからなるリストと、から選択される、請求項１８に記載のデータ処理回路。
【請求項２０】
前記予測器回路が、
データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値と、
前記データアクセスリクエストに応答してアクセスされるデータ項目のアドレスと、
のうちの１つ以上に依存して予測を生成するように構成されている、請求項１２に記載のデータ処理回路。
【請求項２１】
前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方からインデックスを生成し、前記インデックスによってカウンタ値のテーブルにアクセスするように構成されている、請求項２０に記載のデータ処理回路。
【請求項２２】
前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方からタグを生成し、前記インデックスによってアクセスされるカウンタ値の前記テーブル内のエントリに関連して前記タグを格納する、請求項２１に記載のデータ処理回路。
【請求項２３】
前記予測器回路が、格納されているタグを検索し、検索された前記タグを前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方から生成された前記タグと比較するように構成されている、請求項２２に記載のデータ処理回路。
【請求項２４】
前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の２つ以上のテーブルにアクセスするように構成されている、請求項２３に記載のデータ処理回路。
【請求項２５】
２つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、前記予測器回路が、前記２つ以上のテーブルのうちの該当する１つによって格納されたカウンタ値であって、前記プログラムカウンタ値と前記データ項目の前記アドレスの一方または両方の、より大きいビット数によって生成された前記インデックスの参照先であるカウンタ値に応じて前記予測を生成するように構成されている、請求項２４に記載のデータ処理回路。
【請求項２６】
各々が、請求項１２に記載のデータ処理回路を備え、各々が、関連づけられたキャッシュメモリを有する１つ以上のマスターノードと、
前記第１データソースを提供するホームノードであって、前記キャッシュメモリのうち、１つ以上からリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、かつ前記ホームノードが前記所与のデータアクセスリクエストに応えることができない場合に、前記第２データソースから、リクエストされた前記データをリクエストするように構成されたホームノードと、
各々が、高レベルメモリを有し、前記第２データソースを提供する１つ以上のスレーブノードと、
を備えるデータ処理装置。
【請求項２７】
前記マスターノードが、前記１つ以上のスレーブノードのうちの１つへのデータ送信をリクエストする送信リクエストを、前記ホームノードに発行するように構成され、
前記ホームノードが、送信リクエストをシリアライズし、前記１つ以上のスレーブノードへのリクエストにアクセスするようにして、スレーブノードでメモリアドレスに書き込まれたデータを、後続のアクセスリクエストに応答して、前記メモリアドレスから読み出されたデータと一致させるように構成されている、請求項２６に記載のデータ処理装置。
【請求項２８】
前記ホームノードが、コヒーレントメモリシステムとして、前記１つ以上のマスターノードの前記キャッシュメモリおよび前記１つ以上のスレーブノードの前記高レベルメモリにわたってコヒーレンシを制御し、１つのノードによって、前記コヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータを、別のノードによって、前記コヒーレントメモリシステム内の、前記メモリアドレスから読み出されたデータと一致させるように構成されている、請求項２６に記載のデータ処理装置。
【請求項２９】
最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納することと、
前記予測データから、次のデータアクセスリクエストが前記第１データソースによって応えられるかまたは前記第２データソースによって応えられるかを予測することであって、前記第１データソースおよび前記第２データソースが、データアクセスリクエストが前記第１データソースによって応えられない場合に、前記第２データソースによって応えられるように配置されている、予測することと、
前記第２データソースに指示を発行することとであって、所与のデータアクセスリクエストが前記第２データソースによって応えられるであろうと前記予測器回路が予測したことに応答して、前記所与のデータアクセスリクエストに前記第２データソースが応えなければならないであろうという指示を前記第２データソースに発行することと、を含むデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理に関する。
【０００２】
データ転送プロトコルは、例えばシステムオンチップ（ＳｏＣ）システムまたはネットワークオンチップ（ＮｏＣ）システムとの関連において、相互接続回路を介して互いに接続されたデバイス間またはノード間のデータ転送の動作を調整することができる。そのようなデータ転送プロトコルの一例は、いわゆるアドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）コヒーレントハブインタフェース（ＣＨＩ）プロトコルである。
【０００３】
ＣＨＩプロトコルでは、ノードはリクエストノード（ＲＮ）、ホームノード（ＨＮ）、またはスレーブノード（ＳＮ）として分類することができる。ノードはフルコヒーレントであっても、入出力（Ｉ／Ｏ）コヒーレントであってもよい。フルコヒーレントのＨＮまたはＲＮ（それぞれＨＮ−Ｆ、ＲＮ−Ｆ）は、コヒーレントキャッシュストレージを含み、フルコヒーレントＳＮ（ＳＮ−Ｆ）はＨＮ−Ｆと対になる。ＨＮ−Ｆは、メモリ領域のコヒーレンシおよび／またはシリアライゼーションを管理することができ、ポイントオブコヒーレンシ（ｐｏｉｎｔ  ｏｆ  ｃｏｈｅｒｅｎｃｙ、ＰＯＣ）および／またはポイントオブシリアライゼーション（ｐｏｉｎｔ  ｏｆ  ｓｅｒｉａｌｉｓａｔｉｏｎ、ＰＯＳ）の一例と呼ぶことがある。
【０００４】
ここで、「コヒーレント」という用語は、あるノードによってコヒーレントメモリシステム内のメモリアドレスに書き込まれたデータ項目が、別のノードによって、コヒーレントメモリシステム内の当該メモリアドレスから読み出されたデータ項目と一致することを意味する。したがって、コヒーレンス機能に関連づけられたロジックの役割は、データハンドリングトランザクションが行われる前に、アクセスされるデータ項目のバージョンが古ければ（同じデータ項目の別のコピーに対して修正が行われたため）、アクセスされるコピーが、まず最新の状態にされることを確実にすることである。同様に、データハンドリングトランザクションにデータ項目を修正することが含まれる場合、コヒーレンスロジックは、そのデータ項目の、他の既存のコピーとのコンフリクトを回避する。
【０００５】
シリアライゼーションは、複数である可能性のあるリクエスト側ノードからのメモリアクセスリクエストであって、対応すべきレイテンシ期間が異なる可能性のあるメモリアクセスリクエストのハンドリングの順序付けであって、それらのリクエストの結果がリクエスト側ノードに正しい順序で提示され、リクエスト同士の間の依存関係が正しくハンドリングされる（例えば、データ読み出しが、同じアドレスに対するデータ書き込みに続いて行われる）ようにする順序付けに関する。
【０００６】
読み出しリクエスト等のデータアクセスは、（例えばキャッシュメモリにアクセスすることによって）読み出しリクエスト自体に対応することができる、または例えば必要とされるデータ項目が、メインメモリまたは高レベルキャッシュメモリから読み出さなければならない場合には、解決のためにＳＮ−Ｆに対する読み出しリクエストを参照することができるＨＮ−Ｆを介して行うことができる。そのような例では、ＳＮ−Ｆは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のメモリに関連づけられたダイナミックメモリコントローラ（ＤＭＣ）を備えることができる。ＨＮ−Ｆは、ＨＮ−Ｆ自身がリクエストに対応できない場合には、ＳＮ−Ｆへの読み出しリクエストの発行をハンドリングする。
【０００７】
他の例示的プロトコルとしては、アドバンスト拡張インタフェース（ＡＸＩ）プロトコルまたはＡＸＩコヒーレンシエクステンション（ＡＣＥ）プロトコルが挙げられる。ＡＣＥプロトコルは、例えばＨＮを利用しないが、例えば相互接続によって実現されるＰＯＣ／ＰＯＳを提供することができる。
【発明の概要】
【０００８】
例示的な配置では、メモリコントローラであって、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスし、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供するように構成されたメモリアクセス回路を備えるメモリコントローラが提供される。
【０００９】
別の例示的な配置では、メモリ制御方法であって、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法が提供される。
【００１０】
別の例示的な配置では、最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納し、予測データから、次のデータアクセスリクエストが第１データソースによって応えられるかまたは第２データソースによって応えられるかを予測する予測器回路であって、第１データソースおよび第２データソースが、データアクセスリクエストが第１データソースによって応えられない場合に、第２データソースによって応えられるように配置されている、予測器回路と、
第１データソースにデータアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが第２データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第２データソースが応えなければならないであろうという指示を第２データソースに発行する発行回路とを備えるデータ処理回路が提供される。
【００１１】
別の例示的構成では、最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納することと、
予測データから、次のデータアクセスリクエストが第１データソースによって応えられるか、または第２データソースによって応えられるかを予測することであって、第１データソースおよび第２データソースが、第１データソースがデータアクセスリクエストに応えない場合には、第２データソースによって応えるように配置されている、予測することと、
所与のデータアクセスリクエストが、第２データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに第２データソースが応えなければならないであろうという指示を第２データソースに発行することとを含むデータ処理方法が提供される。
【００１２】
本技術の、さらなるそれぞれの態様および特徴は、添付の特許請求の範囲によって定義される。
【００１３】
本技術は、添付の図面に示される本技術の実施形態を参照して、単なる例としてさらに説明される。
【図面の簡単な説明】
【００１４】
【図１】データ処理装置を概略的に示す図である。
【図２】データ読み出しアクセスを示す概略タイミング図である。
【図３】データ読み出しアクセスを示す概略タイミング図である。
【図４】方法を示す概略フローチャートである。
【図５】マスターノードを概略的に示す図である。
【図６】予測器回路を概略的に示す図である。
【図７】予測器回路を概略的に示す図である。
【図８】予測器回路の一部を概略的に示す図である。
【図９】予測器回路の別の例を概略的に示す図である。
【図１０】メモリコントローラを概略的に示す図である。
【図１１】方法を示す概略フローチャートである。
【図１２】方法を示す概略フローチャートである。
【発明を実施するための形態】
【００１５】
添付の図面を参照して実施形態を説明する前に、以下の実施形態の説明を提供する。
【００１６】
例示的実施形態は、メモリコントローラであって、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスし、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供する
ように構成されたメモリアクセス回路を備えるメモリコントローラを提供する。
【００１７】
例示的実施形態では、ホームノード等の別のノードを介してメモリコントローラにルーティングされるデータアクセスリクエスト等のデータアクセスリクエストに関連づけられたレイテンシは、可能性のある後続のデータアクセスリクエストを示すデータアクセスヒントに応答するメモリコントローラを設けることによって低減される可能性がある。後続のデータアクセスリクエストが受信されたとき、関連するデータアクセスは既に開始されている場合がある。
【００１８】
例では、データアクセスヒントメッセージおよびデータアクセスリクエストは、各々が、１つ以上のメモリアドレスの範囲によってデータアクセスを指定する。例えば、メモリアクセス回路が、データアクセスヒントメッセージに応答して１つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、メモリアクセス回路は、メモリコントローラが、１つ以上のメモリアドレスの所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされたデータをデータアクセス応答として提供するように構成される。このように、データアクセスヒントメッセージはデータアクセスを開始することができるが、そのデータアクセスは、後続のデータアクセスリクエストが受信されない限り完了しない。
【００１９】
例えばデータアクセスリクエストがホームノード等の別のノードを介して到着する場合に応答をルーティングするために、データアクセスリクエストは、メモリコントローラとデータ通信している別のノードであって、データアクセス応答を提供すべき別のノードを指定してもよい。
【００２０】
例では、受信側ノードが、例えば現在の負荷に応じて、データアクセスヒントメッセージによって動作するか動作しないかは任意であってもよい。そのような例では、メモリアクセス回路は、受信したデータアクセスヒントメッセージに応答してデータアクセスを開始するか否かを決定するように構成される。
【００２１】
例示的な配置はまた、各々が、関連づけられたキャッシュメモリを有する１つ以上のマスターノードと、各々が、上述のように定義されるメモリコントローラを備える１つ以上のスレーブノードと、データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノードとを備えるデータ処理システムを提供してもよい。
【００２２】
例では、１つ以上のマスターノードは、ホームノードにデータアクセスリクエストを発行するように構成され、ホームノードは、ホームノードがデータアクセスリクエストに応えられるか、またはデータアクセスが１つ以上のスレーブノードへのアクセスを必要とするかを検出し、１つ以上のスレーブノードへのアクセスが必要なときに、その１つ以上のスレーブノードにデータアクセスリクエストを送信するように構成される。例えば、１つ以上のマスターノードは、以下のいずれかを送信するように構成できる。すなわち、ホームノードへのデータアクセスリクエスト、またはホームノードへのデータアクセスリクエストおよびホームノードがそのデータアクセスに応えることができない場合に、１つ以上のスレーブノードのうち、データアクセスリクエストによって指定されたデータアクセスに応える、該当する１つのスレーブノードへのデータアクセスヒントメッセージである。
【００２３】
例では、マスターノードによって発行されるべきものの選択は、データアクセスヒントメッセージを送信するか否かを決定する予測回路を備える１つ以上のマスターノードによって行われ得る。
【００２４】
例では、予測回路は、ホームノードおよびスレーブノードの一方または両方から受信した指示であって、スレーブノードが、以前のデータアクセスリクエストの１つ以上に応えたか否かを示す指示に応答して、データアクセスヒントメッセージをスレーブノードに送信するか否かを決定するように構成される。
【００２５】
別の例示的実施形態は、メモリ制御方法であって、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法を提供する。
【００２６】
別の例示的実施形態は、最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納し、予測データから、次のデータアクセスリクエストが第１データソースによって応えられるかまたは第２データソースによって応えられるかを予測する予測器回路であって、第１データソースおよび第２データソースが、データアクセスリクエストが第１データソースによって応えられない場合に、第２データソースによって応えられるように配置されている、予測器回路と、
第１データソースにデータアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが第２データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第２データソースが応えなければならないであろうという指示を第２データソースに発行する発行回路とを備えるデータ処理回路を提供する。
【００２７】
これらの例示的実施形態では、データアクセスが第２データソースによって応えられるか否かに関する予測に基づいて、指示（読み出しヒントメッセージ等）を第２データソースに発行することもしないこともできる。このようにして、（すべてのデータアクセスについて読み出しヒントメッセージを送信することと比較して）送信帯域幅を節約することができるが、それでも第２データソースが読み出しヒントメッセージに応答してデータアクセスを開始できるようにすることによってレイテンシを低減する可能性がある。
【００２８】
いくつかの例では、予測器回路は、どのデータソースが最近のデータアクセスリクエストに応えたかを示す、第１データソースおよび第２データソースの一方または両方から受信した情報に応答して予測データを格納するように構成される。予測は、そのような格納されたデータに基づくことができる。
【００２９】
いくつかの例では、予測データはカウント値を含み、予測器回路は、最近のデータアクセスリクエストが第１データソースおよび第２データソースのいずれによって応えられたかに応じてカウント値を変更するように構成される。例えば、予測器回路は、カウント値をしきい値と比較するための比較器を含んでもよい。
【００３０】
いくつかの例では、予測器回路は、最近のデータアクセスが第１データソースによって応えられることに応答して第１変更量だけカウント値を変更し、最近のデータアクセスが第２データソースによって応えられることに応答して、第１変更量とは逆方向の第２変更量だけカウント値を変更するように構成される。これらの変更量は固定されてもよく、または予測器回路が第１変更量および第２変更量の一方または両方を変化させるように構成されてもよい。
【００３１】
読み出しヒントメッセージを使用する尤度が異なる可能性を考慮するために、いくつかの例では、予測器回路は、２つ以上のクラスのデータアクセスリクエストについてそれぞれの予測を生成するように構成される。例えば、２つ以上のクラスのデータアクセスリクエストは、
データ読み出しリクエストと、
命令フェッチリクエストと、
アドレス変換フェッチリクエストとからなるリストから選択されてもよい。
【００３２】
異なるデータアクセスリクエスト間の相違を考慮するために、いくつかの例では、
予測器回路は、データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値と、
データアクセスリクエストに応答してアクセスされるデータ項目のアドレスとのうちの１つ以上に依存して予測を生成するように構成される。
【００３３】
いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からインデックスを生成し、そのインデックスによってカウンタ値のテーブルにアクセスするように構成される。エイリアシング（同じインデックスによるが、プログラムカウンタおよび／またはアドレスの異なる値に依存する、同じ予測データへの望ましくないアクセス）を軽減するために、いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からタグを生成し、インデックスによってアクセスされるカウンタ値のテーブル内のエントリに関連してタグを格納するように構成される。例えば、予測器回路は、格納されているタグを検索し、検索されたタグをプログラムカウンタ値、およびデータ項目のアドレスの一方または両方から生成されたタグと比較するように構成されてもよい。
【００３４】
いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の２つ以上のテーブルにアクセスするように構成される。例えば、２つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、予測器回路が、２つ以上のテーブルのうちの該当する１つによって格納されたカウンタ値であって、プログラムカウンタ値とデータ項目のアドレスの一方または両方の、より大きいビット数によって生成されたインデックスの参照先であるカウンタ値に応じて予測を生成するように構成される。
【００３５】
例示的な配置はまた、各々が、上述のように定義されるデータ処理回路を備え、各々が、関連づけられたキャッシュメモリを有する１つ以上のマスターノードと、
第１データソースを提供するホームノードであって、キャッシュメモリのうち１つ以上からリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、かつホームノードが所与のデータアクセスリクエストに応えることができない場合に、第２データソースから、リクエストされたデータをリクエストするように構成されたホームノードと、
各々が、高レベルメモリを有し、第２データソースを提供する１つ以上のスレーブノードとを備えるデータ処理装置を提供する。
【００３６】
いくつかの例では、マスターノードは、１つ以上のスレーブノードのうちの１つへのデータ送信をリクエストする送信リクエストを、ホームノードに発行するように構成され、
ホームノードは、送信リクエストをシリアライズし、１つ以上のスレーブノードへのリクエストにアクセスするようにして、スレーブノードでメモリアドレスに書き込まれたデータを、後続のアクセスリクエストに応答して、メモリアドレスから読み出されたデータと一致させるように構成される。
【００３７】
いくつかの例では、ホームノードは、コヒーレントメモリシステムとして、１つ以上のマスターノードのキャッシュメモリおよび１つ以上のスレーブノードの高レベルメモリにわたってコヒーレンシを制御し、１つのノードによってコヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータを、別のノードによって、コヒーレントメモリシステム内のメモリアドレスから読み出されたデータと一致させるように構成される。
【００３８】
別の例示的実施形態は、最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納することと、
予測データから、次のデータアクセスリクエストが第１データソースまたは第２データソースであって、第１データソースおよび第２データソースが、第１データソースがデータアクセスリクエストに応えない場合には、第２データソースによって応えるように配置されている、第１データソースによって応えられるか、または第２データソースによって応えられるかを予測することと、
所与のデータアクセスリクエストが、第２データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに第２データソースが応えなければならないであろうという指示を第２データソースに発行することとを含むデータ処理方法を提供する。
【００３９】
ここで図面を参照すると、図１は、ネットワーク１００によって相互接続された装置のネットワークとして実施されたデータ処理装置を概略的に示す。このデータ処理装置は、いわゆるシステムオンチップ（ＳｏＣ）またはネットワークオンチップ（ＮｏＣ）等の単一の集積回路として、または複数の相互接続された個別装置として提供されてもよい。
【００４０】
ネットワーク１００を介して各種のいわゆるノードが接続されている。これらは、ネットワーク化システム内のデータコヒーレンシを監視する１つ以上のホームノード（ＨＮ）１１０と、高レベルキャッシュメモリ１２０（「高レベル」の言及は、リクエスト側ノードによって提供され、以下に説明されるキャッシュメモリに関する）等の１つ以上のスレーブノード（ＳＮ）と、メインメモリ１３０と、周辺装置１４０とを含む。図１に示すスレーブノードの選択は一例であり、各タイプのスレーブノードを０個以上設けてもよい。
【００４１】
この例では、スレーブノード１２０、１３０の各々は、メモリコントローラ（ＤＭＣ）１２２、１３２、およびメモリ（ＤＲＡＭ）１２４、１３４を備える。
【００４２】
図１はまた、この例ではコヒーレントハブインタフェース（ＣＨＩ）プロトコルに従って動作する、複数のいわゆるリクエストノード（ＲＮ）１５０、１６０、１７０を示す。
【００４３】
ＲＮ１５０、１６０、１７０は、関連づけられたキャッシュメモリ１５２、１６２、１７２を有する、フルコヒーレントＲＮ（ＲＮ−Ｆ）である。ＲＮ１７０はＲＮ−Ｆでもよく、キャッシュメモリ１７２を有してもよい。
【００４４】
より一般的には、ノードはフルコヒーレントまたは入出力（Ｉ／Ｏ）コヒーレントであってもよい。フルコヒーレントＨＮまたはフルコヒーレントＲＮ（それぞれＨＮ−Ｆ、ＲＮ−Ｆ）は、コヒーレントキャッシュストレージを含む。例えば、ＨＮ−Ｆ１１０はキャッシュストレージ１１２を含む。
【００４５】
フルコヒーレントＳＮ（ＳＮ−Ｆ）はＨＮ−Ｆと対になる。ＨＮ−Ｆは、メモリ領域に対するコヒーレンシを管理することができる。
【００４６】
図１は、各々が、関連づけられたキャッシュメモリ１５２、１６２、１７２を有する１つ以上のマスターノード１５０、１６０、１７０と、各々が、メモリコントローラを備える１つ以上のスレーブノード１２０と、データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノード１１０とを備えるデータ処理システムの例を提供する。
【００４７】
同様に、図１は、各々が、予測器および発行回路（以下で説明する）を含み、各々が、関連づけられたキャッシュメモリ１５２、１６２、１７２を有する１つ以上のマスターノード１５０、１６０、１７０と、第１データソースを提供するホームノード１１０であって、１つ以上のキャッシュメモリからリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、ホームノードが所与のデータアクセスリクエストに応えることができない場合に、スレーブノード１２０、１３０等の第２データソースからリクエストされたデータをリクエストするように構成されたホームノード１１０と、各々が、高レベルメモリを有し、第２データソースを提供する１つ以上のスレーブノード１２０、１３０とを備えるデータ処理装置の例を提供する。
【００４８】
図２は、データ読み出しアクセスを示す概略タイミング図である。
【００４９】
図２では、リクエスト側ノードＲＮ−Ｆ１５０、１６０、１７０のうちの１つが、ホームノードＨＮ−Ｆ１１０によって、（コヒーレンシの観点から）監視されているデータを読み出そうとしている。ＨＮ−Ｆは、いわゆるポイントオブコヒーレンシ（ＰｏＣ）として動作する。時間的に重複するデータアクセスリクエスト、またはあるデータアクセスリクエストの結果が、別のデータアクセスリクエストの完了のタイミングに少なくとも関連するデータアクセスリクエストのハンドリングの順序を管理することに関して、ＨＮ−Ｆは、そのようなデータアクセスリクエストが適切な順序で開始および／または完了されることを確実にするするためのいわゆるポイントオブシリアライゼーション（ＰｏＳ）としても動作することができる。
【００５０】
したがって、例では、マスターノードは、１つ以上のスレーブノードのうちの１つへのデータ送信をリクエストする送信リクエストを、ホームノードに発行するように構成され、ホームノードは、送信リクエストをシリアライズし、１つ以上のスレーブノードへのリクエストにアクセスするＰｏＳとして動作し、スレーブノードでメモリアドレスに書き込まれたデータが、後続のアクセスリクエストに応答して、そのメモリアドレスから読み出されたデータと一致するように構成される。例では、ホームノードは、コヒーレントメモリシステムとして、１つ以上のマスターノードのキャッシュメモリ、および１つ以上のスレーブノードの高レベルメモリにわたってコヒーレンシを制御するＰｏＣとして動作するように構成され、１つのノードによって、コヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータが、別のノードによって、コヒーレントメモリシステム内の、そのメモリアドレスから読み出されたデータと一致するようにする。
【００５１】
リクエスト側ノードは、データ読み出しリクエスト２００をホームノードに送信する。ホームノードは、ホームノード自身がリクエストに対応できる、すなわち応えられるか否かを検出し、できる場合、ホームノードはリクエストノードにデータ読み出し応答２０５を提供し、プロセスは終了する。
【００５２】
ホームノードによる読み出しリクエストに対応することには、ホームノードがホームノード自身のキャッシュメモリ（もしあれば）から、リクエストされたデータを検索すること、および／またはＰｏＣとしての役割においてホームノードによって管理される（１つ以上のキャッシュメモリ１５２、１６２、１７２等の）キャッシュメモリから、リクエストされたデータを検索することが含まれ得る。いくつかの例では、ホームノードは、ＰｏＣ（いわゆるスヌープフィルタ等）としてのホームノードによって維持されており、ＰｏＣとして制御している各キャッシュメモリによって保持されているデータを示す記録を調べることによって、または、１つ以上のキャッシュメモリをクエリすることによって、リクエストされたデータの、最新の、すなわち有効なバージョンを保持しているか否か、またはホームノードによってコヒーレンシ管理されているキャッシュメモリが、リクエストされたデータの、最新の、すなわち有効なバージョンを保持しているか否かを検出できる。ホームノードが読み出しリクエストに対応できるか否かを検出するためにホームノードが使用する特定の技術は、使用されているシステムアーキテクチャによって異なる。ホームノードによる、ホームノードが読み出しリクエストに対応できるか否かの検出は、プリエンプティブな検出（例えば、上述のようにスヌープフィルタを使用した）であっても、ホームノードによる、障害から生じる検出であって、読み出しリクエストに対応する試みを正常に完了するための検出であってもよい。
【００５３】
ホームノードによって読み出しリクエストに対応することは、読み出しリクエストに対応するためにメモリ１２０、１３０にアクセスが行われないことを意味する。
【００５４】
しかしながら、ホームノードは、ホームノード自身がリクエストに対応することができないことを検出した場合には、その後、読み出しリクエスト２１０を適切なスレーブノードＳＮ１２０、１３０に送信する。スレーブノードのメモリコントローラ（ＤＭＣ）は、リクエストを受信し、トランザクション２１５、２２０として、メモリ（ＤＲＡＭ）から要求されたデータを読み出す。次に、メモリコントローラは、ホームノードを介して、または図２の例に示されているようにリクエストノードに直接に、読み出し応答２２５としてデータをリクエストノードに返す。例では、ホームノードによって提供される読み出しリクエストは、メモリコントローラとのデータ通信している別のノード（ＲＮ等）であって、読み出し応答を提供すべき別のノードを指定することができる。
【００５５】
したがって、ホームノードおよびスレーブノードは、第１データソースによっては、データアクセスリクエストに応えられない場合、第２データソースによって、そのデータアクセスリクエストに応えられるように配置された、第１データソースおよび第２データソースの例をそれぞれ提供する。
【００５６】
メモリアクセスのレイテンシは、（少なくともいくつかの状況では）システム性能にとって重要であり、あるいは重大ですらある。図２の例では、メモリ読み出しリクエストが、ＤＲＡＭを参照しなければならない場合、レイテンシは、ホームノードが、リクエスト２００を受信してからリクエスト２１０を発行するまでのディレイ２３０、およびＤＭＣがリクエスト２１０を受信してからトランザクション２１５を開始するまでのディレイ２３５として導入される。
【００５７】
図３は、本開示の例示的実施形態によるデータ読み出しアクセスを示す概略タイミング図である。
【００５８】
ＲＮ−Ｆは、図２を参照して説明したようにデータ読み出しリクエスト３００を発行するが、スレーブノードのメモリコントローラに直接、いわゆる「読み出しヒント」３０５も発行する。このメモリコントローラは、ホームノード自身が読み出しリクエストに対応する、すなわち応えることができない場合には、この読み出しリクエストに対応、すなわち応えなければならない。ＲＮ−Ｆは、システム構成またはメモリマップ情報から、どのスレーブノードが読み出しリクエストに関連しているかを検出できる。例えば、これは、システムレベル構成として確立され、図１のネットワークまたは装置内のアドレス範囲と宛先との間のマッピングを提供する、いわゆるシステムアドレスマップ（ＳＡＭ）であってもよい。例示的配置では、各ノードは（そのシステム内およびその時点で）一意の識別子（ＩＤ）を有する。パケットは、送信先のターゲットＩＤと、応答が返される先のソースＩＤを指定する。
【００５９】
読み出しリクエスト等のパケットは、ＨＮ−Ｆ（フルコヒーレント）またはＨＮ−Ｉ（入出力コヒーレント）であってもよいホームノード（または本技術に関してはさらには説明しない様々なノード）に送信することができる。ＲＮのＳＡＭロジックは、使用する特定のＨＮの選択において、到着するべきアドレスにハッシュ関数を使用することができる。    追加の構成情報は、特定のＨＮを、あるノードＩＤにマッピングする。
【００６０】
ＲＮ−Ｆ１５０、１６０、１７０はまた、ＨＮ−Ｆ自身がデータアクセスリクエストに応えない場合、リクエストがどのスレーブノードによって処理されるかを検出するために、上述したものと同様のＳＡＭ機能を提供する。そのため、１つ以上のスレーブノードのセットも、各ＲＮ−ＦのＳＡＭ機能によって、アドレス範囲にマッピングされる。したがって、個々のアドレスに対して、当該アドレスにマッピングされるＨＮであって、ＲＮ−Ｆが読み出しリクエストを送信する先であるＨＮがあってもよい。また、同じアドレスにマッピングされるＳＮ−Ｆであって、ＲＮ−Ｆが読み出しヒントを送信する（該当する場合）先であるＳＮ−Ｆがあってもよい。読み出しヒントは、スレーブノードのターゲットＩＤを使用してアドレス指定されるが、読み出しリクエストはＨＮのターゲットＩＤを使用してアドレス指定される。
【００６１】
したがって、例では、リクエスト側ノード、すなわちマスターノードは、アドレスまたはアドレス範囲（例えば、データアクセスリクエストに関する）をホームノードおよびスレーブノードにマッピングするアドレス構成情報にアクセスするように構成され、マスターノード、すなわちリクエスト側ノードは、アクセスされるアドレスまたはアドレス範囲に適用可能なデータアクセスリクエスト（読み出しリクエスト等）をホームノードに発行し、かつその同じアドレスまたはアドレス範囲に適用可能なデータアクセスヒント（読み出しヒント等）をスレーブノードに発行することができる。
【００６２】
ホームノードは、上述したように、要求されたデータを読み出し応答３１０として返すか、または読み出しリクエスト３１５をスレーブノードに送信して（ここでも、必要に応じて、同様のＳＡＭ機能を用いて、どのスレーブノードを使用するか、および／または上述した対配置を検出して）進める。しかし、この場合、スレーブノードは、時間３３５における読み出しヒント３０５の受信に応答して、要求されたデータを検索するためのトランザクション３２０、３３０を既に開始している。したがって、スレーブノードがトランザクション３２０を開始するために読み出しリクエスト３１５の受信まで待機するのではなく、メモリコントローラが、読み出しヒント３０５の受信に応答してより早くトランザクション３２０を開始することができる。前述のように、一旦メモリコントローラが要求されたデータを受信すると、メモリコントローラは要求されたデータを読み出し応答３４０としてＲＮ−Ｆに提供する。
【００６３】
読み出しヒント３０５の提供によって、トランザクション３２０、３３０をより早く開始することにより、期間３４５のレイテンシを低減することができる。そのような期間の長さは、システムの多くの異なる設計パラメータおよび態様に依存するが、例示的実施形態では、そのような低減は、ＤＲＡＭからのデータ読み出しにかかる全体の時間に関して重要となり得る。
【００６４】
図４は、図３を参照して説明した方法を示す概略フローチャートである。図４において、破線（で描かれている）縦線は、リクエスト側ノードの活動、ホームノードの活動、およびスレーブノードの活動を分離している。
【００６５】
図４に示されるプロセスは、ステップ４００において、読み出しリクエストおよび読み出しヒントを発行するリクエスト側ノードによって開始される。読み出しリクエストは、要求されたアドレスまたはアドレス範囲に関連するホームノードに発行され、読み出しヒントは、そのアドレスまたはアドレス範囲に関連するスレーブノードに発行され、ホームノードがこの読み出しリクエストに対応できない場合は、この読み出しリクエストを対応するために必要となる。読み出しリクエストおよび読み出しヒントは、リクエスト側ノードによって、どちらの順序でも、あるいは一緒にでも発行することができる。
【００６６】
ステップ４０５において、ホームノードが読み出しリクエスト３００を受信し、ステップ４１０において、ホームノードがこの読み出しリクエストに応えられるか否かを検出する。ホームノードが読み出しリクエスト３００に応えられるか否かを検出するために、例えば、ホームノードは、このリクエストを求めてキャッシュ、スヌープフィルタ等を探索してもよい。
【００６７】
答えが、はいであれば、ステップ４１５において、ホームノードは読み出しリクエストに応え、ステップ４２０において読み出し応答３１０をリクエスト側ノードに提供する。
【００６８】
ステップ４１０で答えがノーである場合、ステップ４２５においてホームノードはリクエスト３１５をスレーブノードに送信する。これで、この特定のトランザクションへのホームノードの関与が終了する。
【００６９】
別に、ステップ４３０で、スレーブノードはリクエスト側ノードからヒント３０５を受信し、ステップ４３５でメモリにアクセスするためにトランザクション３２０を開始する。その後、スレーブノードにおける制御の流れは、２つの経路のうちの１つをたどることができ、これらの経路間の区別は、以下でさらに説明されるであろう。１つの経路では、ヒント３０５が受信されたが後続の読み出しリクエスト３１５が受信されず、ヒント３０５が不要であり、ホームノードが実際には読み出し応答３１０でリクエストに対応できることを暗示する場合には、ステップ４４０でヒントは破棄され、ヒントの受信に応答して開始されたメモリトランザクションを終了する。
【００７０】
一方、リクエスト３１５が受信されると、トランザクション３２０、３３０が完了するが、このような処理をしない場合よりもわずかに早い。このことは、ステップ４３５において先駆けて処理が開始され、ステップ４５０において応答３４０が提供される前に、ステップ４４５で読み出しリクエストに応えられたことによる。
【００７１】
読み出しヒントは、図１に示すタイプのネットワーク内の、あるタイプのメッセージまたは命令であって、少なくともいくつかの他のタイプのメッセージまたは命令とは異なり、動作を必要とせず、かつ少なくともいくつかの他のタイプまたはメッセージとは異なり、応答を要求しないタイプのメッセージまたは命令とすることができる。例えば、スレーブノードに他の活動が、既に完全にロードされている場合、スレーブノードは読み出しヒントを破棄または無視できる。実際、中間ノードは、例えばその中間ノードのバッファリング容量および／または送信容量が完全にロードされている場合には、読み出しヒントを捨てる、すなわち伝達しないことがある。スレーブノードは、読み出しヒントに関する受信の応答、すなわち肯定応答を提供する必要はない。したがって、例では、メモリアクセス回路は、受信した読み出しヒントに応答してデータアクセスを開始するか否かを決定するように構成することができる。
【００７２】
図４では、１つ以上のマスターノードは、ホームノードにデータアクセスリクエストを発行する（４００）ように構成され、ホームノードは、ホームノードがデータアクセスリクエストに応えられるか、またはデータアクセスが１つ以上のスレーブノードへのアクセスを必要とするかを検出し（４１０）、１つ以上のスレーブノードへのアクセスが必要なときに、その１つ以上のスレーブノードにデータアクセスリクエストを送信する（４２５）ように構成される。例では、１つ以上のマスターノードは、以下のいずれかを送信するように構成される。すなわち、ホームノードへのデータアクセスリクエスト２００、またはホームノードへのデータアクセスリクエスト３００およびホームノードがそのデータアクセスに応えられない場合に、１つ以上のスレーブノードのうち、データアクセスリクエストによって指定されたデータアクセスに応える該当する１つへのデータアクセスヒントメッセージ３０５である。
【００７３】
図５は、リクエスト側ノードＲＮ−Ｆ５００の機能の一部を概略的に示す。この例は、（以下に説明するように）単一のプロセッサコアに関するものであるが、プロセッサのグループ、すなわち「クラスタ」にも同様に適用することができる。プロセッサコア５１０は、プロセッサ命令に基づいて処理動作を行い、かつキャッシュメモリ５２０にアクセスする。プロセッサコアは、図１のネットワーク１００を介してデータ処理トランザクションを開始し、そのようなトランザクションを発行し処理するための回路５３０を備える。
【００７４】
回路５３０は、予測器回路５３２と、履歴格納部５３４と、未処理トランザクションバッファ５３６と、発行ロジック５３８とを含む。予測器回路５３２および履歴格納部５３４の機能については後述する。発行ロジック５３８は、ネットワークへのデータ読み出しリクエストまたはデータ書き込みリクエストの発行をハンドリングし、未処理トランザクション格納部５３６は、発行され、完了応答がまだ受信されていないリクエストの詳細を維持する。
【００７５】
したがって、図５では、１つ以上のマスターノード５００は、データアクセスヒントメッセージを送信するか否かを決定する予測回路５３２を備える。
【００７６】
図５はまた、予測器回路５３２と発行回路５３８とを備えるデータ処理回路の例を提供する。予測器回路５３２は、最近のデータアクセスリクエストが第１データソース（ホームノード等）によって応えられたか、または第２データソース（ＤＲＡＭ等）によって応えられたかを示す予測データを（例えば履歴格納部５３４に）格納し、予測データから、次のデータアクセスリクエストが第１データソースによって応えられるか、または第２データソースによって応えられるかを予測する。第１データソースおよび第２データソースは、データアクセスリクエストが第１データソースによっては応えられない場合に、第２データソースによって応えられるように配置されている。発行回路５３８は、第１データソースにデータアクセスリクエスト３００を発行するものであり、発行回路は、所与のデータアクセスリクエストが第２データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第２データソースが応えなければならないであろうという指示（読み出しヒント３０５等）を第２データソースに発行するように構成される。
【００７７】
図６は、予測器回路５３２の動作の一例を概略的に示す。履歴格納部５３４は、例えばカウント値を維持する。カウント値は、以前の読み出しトランザクションがどのようにハンドリングされたかについて受信した情報６０５に応答して変更ロジック６００によって変更される。例えば、読み出しトランザクションの応答がホームノードから受信されるように、読み出しトランザクション処理される場合、履歴格納部５３４によって保持されているカウントをデクリメントし、例えば１だけ減らしてもよい。トランザクションがＤＲＡＭによって処理されたことを読み出し応答が示す場合、履歴格納部５３４によって保持されているカウントをインクリメントし、例えば１だけ増やしてもよい。
【００７８】
比較器６１０は、履歴格納部５３４によって保持されている現在のカウントをしきい値６２０と比較する。現在のカウントがしきい値よりも大きい（最近のトランザクションの多くがＤＲＡＭによって処理されたことを示す）場合、予測ロジック５３２は、（例えば信号６１５によって）発行回路５３８に、読み出しリクエストを発行するのと同時に読み出しヒントを発行するように指示してもよい。一方、カウント値がしきい値以下である場合、信号６１５は、読み出しヒントが発行されていないことを示し得る。
【００７９】
いわゆるコマンド帯域幅が許せば、読み出しヒントは読み出しリクエストと同時に発行できることに留意されたい。すなわち、そのようなコマンドを搬送するために物理バスが提供され、そのバス上に、両方を同時に発行できるスペースがある場合、同時の発行が行われ得る。読み出しリクエストと読み出しヒントを異なる時間に発行しなければならない場合、いくつかの例では、どちらが先に発行されるかは任意に選択される。
【００８０】
図６（および後述する他の例）に示すタイプの回路を使用する１つの理由は、読み出しヒントがすべての読み出しリクエストと一緒に、すなわちすべての読み出しリクエストに関連して発行される状況を回避することである。そうすることは、ネットワーク全体で、関連するスレーブノードに読み出しヒントを伝播する必要があるため、システム全体に負荷をかける可能性がある。したがって、すべての読み出しリクエストと共に読み出しヒントを発行することで（少なくとも一部の例では）ホームノードが読み出しリクエストに対応できない場合に前述のレイテンシの利点が満たされることが保証されるが、ノード間で情報を送信するために利用可能なメッセージ送信帯域幅が過負荷になるという観点から、システム性能が犠牲になる。したがって、図６に示すタイプの回路、または後述する他の例は、特定の読み出しリクエストに関して、読み出しヒントが有用または適切である可能性が高いか否かの予測すなわち推定を提供することができる。このようにして、発行される読み出しヒントは、（すべての読み出しクエストと共に読み出しヒントが発行される比較状況におけるものよりも）少ないが、図６の回路または後述する他の例の目的は、実際に発行される読み出しヒントが有用である、すなわちそれぞれの読み出しリクエストに対して適切な読み出しヒントとなる傾向があることである。
【００８１】
上述したように、読み出しヒントは、中間ノードによって転送されなくてもよく、受信側スレーブノードによって動作がなされなくてもよいことに留意されたい。したがって、いくつかの例では、ＲＮに提供されるものとして本明細書で説明するタイプの予測回路を、代替的にまたは付加的に、それぞれ読み出しヒントを転送および／または動作を行うか否かに関する、中間ノードおよび／またはスレーブノードに対する情報を、中間ノードまたはスレーブノードに提供してもよい。
【００８２】
変更ロジック６００は、履歴格納部５３４によって保持されたカウントのインクリメントまたはデクリメントをハンドリングする。インクリメントの大きさとデクリメントの大きさは１でなくてもよく、または同じでなくてもよい。例えば、カウントは、ホームノードによってハンドリングされた各トランザクションに対して１だけデクリメントされるが、ＤＲＡＭによってハンドリングされた各トランザクションに対して２だけインクリメントされてもよい。いくつかの例では、例えば、発行回路５３８が、例えば読み出しヒントを発行する目標レートと比較して、発行される読み出しヒントが多すぎる、または少なすぎることを検出した場合、インクリメントおよびデクリメントは動作中に適応的な基準で変更されてもよい。同様に、しきい値６２０は、例えば発行回路５３８によって、同じ基準で適応させることができる。トランザクションがＤＲＡＭによってハンドリングされるときにカウントがインクリメントされることも、トランザクションがホームノード自体によってハンドリングされるときにデクリメントされることも要件ではない。変更が逆方向である限り、どちらの意味も使用することができる。同様に、変更ロジック６００によって加えられる変更の方向によって、比較器６１０によって行われるテストは、しきい値６２０より大きい、しきい値６２０以上、しきい値６２０より小さい、またはしきい値６２０以下のいずれかであり得る。一般に、しきい値６２０との比較は、（どちらの方向の変更および比較が使用されても）、ＤＲＡＭが対応しているリクエストが優勢であることが、次の読み出しリクエストが読み出しヒントを伴うべきであることを示す予測回路を導く傾向があり、ホームノードが対応しているリクエストが優勢であることが、次の読み出しリクエストが読み出しヒントを伴うべきではないことを示す予測回路を導く傾向があるように、構成され得る。一般に、例では、予測器回路は、最近のデータアクセスに第１データソースが応えたことに応答して第１変更量だけカウント値を変更し、最近のデータアクセスに第２データソースが応えたことに応答して第１変更量と反対の方向の第２変更量だけカウント値を変化させるように構成される。説明したように、例において、予測器回路は、第１変更量および第２変更量の一方または両方を変化させるように構成されるように、適応変化を使用することができる。
【００８３】
これらの例では、予測データはカウント値を含み、予測器回路は、最近のデータアクセスリクエストに第１データソースが応えたかまたは第２が応えたかに応じてカウント値を変更するように構成される。
【００８４】
図６の例は単一のカウンタを提供し、したがってプログラムが概してキャッシュミスまたは概してキャッシュヒットの挙動に陥る可能性があるように、プログラムの段階的な動作に基づく予測の例を提供する。単一のカウンタは、キャッシュヒットまたはキャッシュミス動作に陥る傾向を追跡するためのエレガントで単純な方法を提供する。他の例では、より複雑なカウント配置が使用され、それに対応してより詳細な予測配置が提供される。
【００８５】
情報６０５の使用は、ホームノードおよびスレーブノードの一方または両方から受信された、スレーブノードが１つ以上の以前のデータアクセスリクエストを満たしたか否かを示す指示６０５に応答して、予測回路がデータアクセスヒントメッセージをスレーブノードに送信するか否かを決定するように構成される例を提供し得る。例では、予測器回路は、第１データソースおよび第２データソースの一方または両方から受信した、どのデータソースが最近のデータアクセスリクエストに応えたかを示す情報に応答して予測データを格納するように構成される。
【００８６】
図６の例では、比較器６１０によるしきい値との「ハード」比較（カウント値をしきい値と比較するための比較器の例）を使用して、読み出しヒントを発行すべきか否かについてはい／いいえの結果を出す。他の例では、カウントの大きさは、ヒントが有用であるという尤度の指示を提供することができ、それにより、比較器は、この尤度および他の要因（上述したように、所望のレートに対する、読み出しヒントを生成するレート等）に基づいて読み出しヒントを送信するか否かの指示を生成できる。そのため、カウントは、ハード比較として適用されるのではなく、「ソフト」な尤度を示すことができる。
【００８７】
ＲＮおよび／または予測回路は、読み出しヒントが特定の読み出しリクエストに対して実際に発行されたか否かを示す情報を格納することができる。この情報は、後述する例示的な方法で、読み出しヒントが有用であるか否かに関する、スレーブノードからの返信情報と共に、および／またはスレーブノードが特定の読み出しリクエストに対応したことを示す、スレーブノードから返される情報と共に使用できる。
【００８８】
図７は、予測器回路の複数のインスタンス７００、７１０、７２０、例えば、（ｉ）データ読み出し動作、（ｉｉ）命令フェッチ動作、（ｉｉｉ）例えばメモリ管理ユニット（ＭＭＵ）による使用のためのメモリアドレス変換情報フェッチ等の、読み出しトランザクションの複数のクラスの各々に対して１つのインスタンスを概略的に示す。予測回路７００、７１０、７２０は、図６に示されているタイプ、または後述するタイプのものであってもよい。トランザクション７３０のタイプに従って、インスタンス７００〜７２０のうちのそれぞれ１つのインスタンスが、概略的なマルチプレクサ７４０による動作のために選択され得る。適切な予測器回路の出力は現在の予測として使用され、予測が適切であったか否かを示す、応答として受信した情報（以前のリクエストがホームノードによって処理されたかＤＲＡＭによって処理されたかの指示６０５等、ただし、後述する他の例では、付加的に、または代替的に、より詳細な情報が提供され得る）が、当該それぞれの予測器回路に提供される。
【００８９】
したがって、図７は、予測器回路が２つ以上のクラスのデータアクセスリクエストについてそれぞれの予測を生成するように構成されている例を提供する。例えば、２つ以上のクラスのデータアクセスリクエストを、データ読み出しリクエスト、命令フェッチリクエスト、およびアドレス変換フェッチリクエストからなるリストから選択することができる。
【００９０】
図８は、テーブル８００によって提供され、結合器８２０によって生成されたアドレス情報８１０によってアドレス指定される、カウント値または他の情報のテーブルを概略的に示す。結合器８２０は、例えば現在の読み出し動作を開始する命令に適切なプログラムカウンタ値のビットおよび／または現在の動作によってアクセスされている物理アドレス（ＰＡ）のビット（例えば、アクセスされているアドレスの範囲内の最も低い物理アドレス）を結合する。結合器８２０によって行われる結合は、例えば、ハッシュ演算、またはそれぞれの値のビットのグループが互いに結合される、いわゆる重ね合わせ演算（ｆｏｌｄｉｎｇ  ｏｐｅｒａｔｉｏｎ）等であり得る。
【００９１】
テーブル８００は複数のカウント値を保持する。アドレス情報８１０に応答して、カウント値の１つがアクセスのために選択され、カウント値８０５として（例えば、図６の比較器６１０と同様の比較器に）出力される。以前の読み出しリクエストの結果に関する情報６０５が受信されたとき（例えば、以前の読み出しリクエストがホームノードによって対応されたかＤＲＡＭによって対応されたか）、（ＰＡ／ＰＣを使用して結合器８２０によって決定されるように）当該読み出しリクエストに適した、それぞれのカウント値が、例えば変更ロジック６００または同様のものを使用して変更され、例えばインクリメントまたはデクリメントされる。
【００９２】
そのため、図７には、読み出しリクエストのクラスに従って（その動作に関して）分割された予測回路の例を示しした。図８には、読み出しリクエストに関連するＰＣおよびＰＡの一方または両方への依存に従って（予測回路の動作に関して）分割された予測回路の例を示す。
【００９３】
なお、結合器８２０の動作は、いわゆるエイリアシングの事例につながる場合があり、その場合、ＰＡおよびＰＣ（の一方または両方）の値の、異なる複数のセットは、同一のアドレス情報８１０の生成につながる場合がある。この潜在的な問題は、後述する図９の例によって少なくとも部分的に軽減することができる。
【００９４】
図９は、予測器回路のさらなる例を概略的に示す。ここで、カウント値は、現在のプログラムカウンタおよびアクセスされている物理アドレスの一方または両方から導出される値が、適切なカウント値を選ぶためのインデックスを生成するために使用されるように、例えば２５６個のエントリ（したがって８ビットインデックスによってアドレス指定される）のテーブルに格納される。
【００９５】
この例では、３つのそのようなテーブル９００、９１０、９２０が提供される。各々の場合のインデックスは、プログラムカウンタのビットおよび／またはアクセスされている物理アドレスの、異なる組み合わせによって生成される。インデックスの生成は、それぞれの重ね合わせ／ハッシングロジック９０５、９１５、９２５によって実行される。
【００９６】
重ね合わせ／ハッシングロジック９０５は、（本例では）プログラムカウンタおよび物理アドレスの３２ビットすべてに作用する。一例では、重ね合わせ／ハッシングロジック９０５は、例えばプログラムカウンタおよび物理アドレス値の各々を、８ビットの各部分（例えば、ＬＳＢで始まりＭＳＢで終わる連続した８ビット部分）に分割し、これらの部分を繰り上げることなく加算すること（排他的論理和演算）によって、これらの値を一緒に重ね合わせる（ｆｏｌｄ）。しかしながら、他のビット数低減技術すなわちハッシュ化技術が使用され得る。結果として得られるインデックスは、テーブル９００内の適切なエントリにインデックスを付けるために使用される。
【００９７】
テーブル９００の各エントリは、それぞれのカウント値およびタグを格納する。タグも、プログラムカウンタおよび／または物理アドレスからも生成されるが、異なる重ね合わせ技術、すなわちハッシング技術を使用して生成される。タグは、カウント値と一緒にテーブル９００に格納され、また重ね合わせ／ハッシングロジック９０５によって別に再生成される。テーブルエントリがアクセスされると、カウント９０６が出力されるだけでなく、格納されているタグ９０７も出力され、これは重ね合わせ／ハッシュロジック９０５によって生成されたタグ９０８と比較される。比較器９０９は、２つのタグ値が同じか否かを検出する。もし同じであれば、比較器９３０によるカウント値としきい値（ｔｈｒ１）との比較は予測に関連し、またそれぞれのカウント値は、読み出しリクエストの結果について、応答として受信した情報に応答して、（例えば図９に示されていない変更ロジック６００と同様の変更ロジックによって）修正される。タグ値が同じでない場合、これは長いアドレス値を重ね合わせ、すなわちハッシュ化して短いインデックス値とするエイリアシング効果が、プログラムカウンタと物理アドレスとの現在の組み合わせに対して誤ったエントリが読み出されたことを意味することを、単に意味する。この場合、比較器９３０による比較は、予測プロセスの一部としては使用されない。
【００９８】
重ね合わせ／ハッシングロジック９１５によって、プログラムカウンタおよび／または物理アドレスの最下位１６ビットのみを使用することを除いて、同様の配置が実行される。同様に、重ね合わせ／ハッシングロジック９２５は、プログラムカウンタおよび／または物理アドレスの最下位８ビットのみを使用する。各々が、比較器９０９および比較器９３０の同様の配置を使用する。
【００９９】
したがって、重ね合わせ／ハッシングロジックの３つのインスタンス９０５、９１５、９２５は、ＰＣ／ＰＡビットのそれぞれ異なる部分、例えばそれぞれ異なる大きさの部分を使用して、インデックスおよびタグを生成する。小さい部分ほど、上述したエイリアシングのタイプがより発生しやすくなる。２つ以上のテーブルに対するタグの比較が肯定的である（タグが一致する）ことが判明した場合、プログラムカウンタ／物理アドレスのインデックスを生成するために、そのプログラムカウンタ／物理アドレスのより大きなビット数を使用するテーブルのうちの、該当する１つからのカウント値のしきい値との比較が使用される。言い換えれば、一致するタグを有する複数のテーブルがある場合には、（図９に描かれている）より高い位置にあるテーブルが使用される。
【０１００】
他の例では、最近のリクエストの結果、例えば、読み出しリクエストがホームノードによって対応されたことを示す１と、読み出しリクエストがＤＲＡＭによって対応されたことを示す０との履歴が、（例えば）３２個の履歴値の順序（先入れ先出し）レジスタ９５０に配置される。順序レジスタ９５０では、最下位のエントリが最新の履歴値であり、ＰＣおよび／またはＰＡに加えて、またはその代わりに、最下位のエントリを、例えば上述したのと同じ部分（３１：０、１５：０、７：０）を使用して重ね合わせ／ハッシュプロセスに組み込むことができる。
【０１０１】
したがって、図９は、以下のうちの１つ以上に依存して予測を生成するように構成されている予測器回路の一例を提供する。すなわち、データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値、およびデータアクセスリクエストに応答してアクセスされるデータ項目のアドレスである。例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方から（回路９０５、９１５、９２５によって）インデックスを生成し、そのインデックスによってカウンタ値のテーブルにアクセスするように構成される。回路９０５、９１５、９２５は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からタグを生成し、インデックスによってアクセスされるカウンタ値のテーブル内のエントリに関連してタグを格納することができる。例では、（回路９０５、９１５、９２５および比較器９０９による）予測器回路は、格納されているタグを検索し、検索されたタグをプログラムカウンタ値およびデータ項目のアドレスの一方または両方から生成されたタグと比較するように構成される。
【０１０２】
図９では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の２つ以上のテーブルにアクセスするように構成される。上述したように、例では、２つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、予測器回路が、２つ以上のテーブルのうちの該当する１つによって格納されたカウンタ値であって、プログラムカウンタ値とデータ項目のアドレスの一方または両方の、より大きいビット数によって生成されたインデックスの参照先であるカウンタ値に応じて予測を生成するように構成される。
【０１０３】
図１０は、読み出しヒント１０００、およびリードまたはライトリクエスト１０１０の一方または両方を受信するように配置されたメモリコントローラ１００５（ＤＭＣ１２２、１３２等）を概略的に示す。未処理読み出しヒントのバッファ１０２０が提供され、それによって、新しい読み出しヒントが受信されて、アクセスロジック１０３０がＤＲＡＭへのアクセスを開始することによってその読み出しヒントに対する動作が行われたとき、そのヒントを定義する情報が未処理ヒントバッファ１０２０に格納される。
【０１０４】
例では、読み出しヒント（データアクセスヒントメッセージ）およびデータアクセスリクエスト（読み出しリクエスト）は、各々が、１つ以上のメモリアドレスの範囲によってデータアクセスを指定する。未処理のヒントと同じメモリアドレスまたはアドレス範囲に関して、後続のリクエストが受信され、ヒントが受信されて動作が開始された後、十分に早くリクエストが受信された場合（後述）、検出回路１０２２は、未処理ヒントバッファ１０２０から削除する。別に、リクエストは未処理リクエストバッファ１０４０に格納される。アクセスロジック１０３０は関連する１つ以上のメモリアドレスへのアクセスを継続し、適切な時点で応答１０５０を生成する。応答は、読み出しリクエストの場合にはリクエストされたデータと、いくつかの例では読み出し応答の最後のデータ項目またはデータビートに付随することがある完了の肯定応答とを含むことができる。
【０１０５】
検出回路１０２２は、読み出しヒントに対応するリクエストが受信された時点で、その読み出しヒントがアクティブであった（例えば、未処理ヒントバッファ１０２０にまだ保持されている）か否かを検出し、この検出の結果を示す信号１０２４を生成するように配置される。
【０１０６】
応答１０５０の一部または全部を形成する肯定応答は、データがＤＲＡＭから取得されたことを識別する（その予測が正しいことを確認するために予測器回路が使用することができる）情報を含むことができる。これは、応答３４０（図３）のソースの識別子を肯定応答内で示すことによって実施することができる。応答３４０（図３）のソースの識別子は、例えば、応答３４０を提供した特定のメモリリソースの識別子として、応答３４０を提供したメモリリソースのタイプの分類の識別子として、および／または応答３４０がＤＲＡＭによって提供されたという指示として示される。
【０１０７】
応答の一部または全部を形成する肯定応答はまた、後続のリクエストが受信された時点で読み出しヒントがまだアクティブであったか否かについての指示（信号１０２４に応じて）を含むことができ、それによってメモリアクセスレイテンシの一部を低減するのに役立つヒントの使用状況を示す。
【０１０８】
ヒントが受信され、動作が行われる（かつ未処理ヒントバッファ１０２０に格納される）が、後続のリクエストが受信されない場合（例えば、結局、ＨＮがリクエストに対応できたため）、読み出しヒントが受信されてから、および／または未処理ヒントバッファに最初に格納されてから所定時間経過後に、またはアクセスロジック１０３０が、ヒントによって開始されたアクセスの処理において所定の段階に達したことを示すとき、または２つのうちの早い方、または２つのうち遅い方のいずれかの時点で、検出回路１０２２はヒントを回収し、そのヒントを未処理ヒントバッファ１０２０から削除する。
【０１０９】
そのため、メモリアクセス回路が、読み出しヒントに応答して、１つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、メモリアクセス回路は、メモリコントローラが、１つ以上のメモリアドレスの所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされたデータをデータアクセス応答として提供するように構成される。読み出しヒントだけでは、（例の配置では）関連データの返信につながらない。読み出しヒントは、後続の読み出しリクエストに備えて、メモリアクセスを開始するだけである。
【０１１０】
しかしながら、その後（読み出しヒントが回収された後に）読み出しリクエストが受信された場合、読み出しリクエストが受信された時点で関連する読み出しヒントがアクティブではなかったことを示すために信号１０２４が生成される。
【０１１１】
上述した予測回路の例では、カウント値等は、読み出しリクエストがホームノードによって処理された、すなわち応えられたか、またはＤＲＡＭ等のスレーブノードへの参照によって処理された、すなわち応えられたかに応じて変更される。他の例では、カウント値は、（代替的にまたは付加的に）（ｉ）読み出しヒントが実際に提供されたか否か（スレーブノードからの応答による情報を必要とせずに予測回路および／またはＲＮで行うことができる検出）、（ｉｉ）それぞれの読み出しヒントが、後続のリクエストを受信した時点でまだアクティブであり、それによってヒントの使用が、メモリアクセスレイテンシの一部を低減することに有用であったか否かの一方または両方に応じて変更してもよい。「有用な」読み出しヒントが提供された場合、これは、さらなる読み出しヒントが（例えば、その分類またはハッシュされたアドレスに対して）提供されるべきであることを指示する方向に、カウント値または他の予測を導く傾向がある。読み出しヒントが提供されたが「有用」ではなかった場合、さらなる読み出しヒントを提供すべきではないことを指示する方向にカウント値の変更を導くように配置することができる。読み出しヒントが提供されなかったが、読み出しリクエストがスレーブノード（例えば、ＤＲＡＭ）によって対応された場合、これは、さらなる読み出しヒントが提供されるべきであることを指示する方向に予測を導く傾向があり得る。当然のことながら、これらの結果のいずれかの、任意の個々のインスタンスは、それ自体では、（おそらく個々のインスタンスによってカウントがしきい値の逆方向に動かない限り）ＲＮの挙動に変更を加えて読み出しヒントを発行するようにしたり発行しないようにしたりはしない。しかし、そのような個々のインスタンスは、それでも、カウント値を１つの結果または他の結果に向かって動かすことができる。つまり、予測を一方向または他方向に導く傾向がある。
【０１１２】
したがって、図１０は、メモリコントローラであって、メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージ１０００に応答して、メモリに格納されているデータのデータアクセスを開始し、メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエスト１０１０に応答して、メモリに格納されているデータにアクセスし、アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答１０５０として提供するように構成されたメモリアクセス回路（アクセスロジック１０３０等）を備えるメモリコントローラの例を提供する。
【０１１３】
図１１は、別の例示的実施形態は、メモリ制御方法であって、ステップ１１００において、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
ステップ１１１０において、メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
ステップ１１２０において、アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法を概略的に示す。
【０１１４】
図１２は、ステップ１２００で、最近のデータアクセスリクエストが第１データソースによって応えられたか、または第２データソースによって応えられたかを示す予測データを格納することと、
ステップ１２１０で、予測データから、次のデータアクセスリクエストが第１データソースまたは第２データソースであって、第１データソースおよび第２データソースが、第１データソースがデータアクセスリクエストに応えない場合には、第２データソースによって応えるように配置されている、第１データソースによって応えられるか、または第２データソースによって応えられるかを予測することと、
ステップ１２２０において、所与のデータアクセスリクエストが、第２データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに、第２データソースが応えなければならないであろうという指示を第２データソースに発行することとを含むデータ処理方法を概略的に示す。
【０１１５】
本出願において、「〜に構成されている」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェアまたはソフトウェアの配置または相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有してもよく、またはプロセッサまたは他の処理装置（上述のような処理要素等）が機能を行うようにプログラムされてもよい。「に構成されている」は、定義された動作を提供するために装置要素が何らかの方法で変更される必要があることを意味しない。
【０１１６】
本技術の例示的な実施形態を添付の図面を参照して本明細書で詳細に説明したが、本技術はそれらの正確な実施形態に限定されず、当業者であれば、添付の特許請求の範囲によって定義されるような技術の範囲および趣旨から逸脱することなく、様々な変更、追加および修正を行うことができることを理解されたい。例えば、従属請求項の特徴の様々な組み合わせは、本技術の範囲から逸脱することなく、独立請求項の特徴と一緒になされ得る。
【図１】
2020514878.tif 000003
【図２】
2020514878.tif 000004
【図３】
2020514878.tif 000005
【図４】
2020514878.tif 000006
【図５】
2020514878.tif 000007
【図６】
2020514878.tif 000008
【図７】
2020514878.tif 000009
【図８】
2020514878.tif 000010
【図９】
2020514878.tif 000011
【図１０】
2020514878.tif 000012
【図１１】
2020514878.tif 000013
【図１２】
2020514878.tif 000014
【国際調査報告】
2020514878.tif 000015
2020514878.tif 000016
2020514878.tif 000017
2020514878.tif 000018