(57)【要約】  集積回路デバイスのための装置および方法が説明される。集積回路デバイスの装置には、複数のメモリバンク（１０４）に結合された複数のメモリコントローラ（１０３、２００）がある。スイッチのネットワーク（１０２）が複数のメモリコントローラ（１０３、２００）に結合される。複数のデータ処理デバイス（１０５、３００）がスイッチのネットワーク（１０２）に結合され、メモリ要求（３０５）を生成するように構成される。ネットワークコントローラ（１０１、４００）がスイッチのネットワーク（１０２）に結合され、メモリ要求（３０５）をキューに入れ、複数のメモリバンク（１０４）に関連付けられた対応する応答時間（４１７）に応答してキューに入れられたメモリ要求（３０５）からメモリへの要求（４２２）を選択的に発行するように構成される。【選択図】図１
2020520019.tif 000002
【特許請求の範囲】
【請求項１】
集積回路デバイスのための装置であって、
複数のメモリバンクに結合された複数のメモリコントローラと、
前記複数のメモリコントローラに結合されたスイッチのネットワークと、
前記スイッチのネットワークに結合された、メモリ要求を生成するように構成された複数のデータ処理デバイスと、
前記スイッチのネットワークに結合された、前記メモリ要求をキューに入れ、前記複数のメモリバンクに関連付けられた対応する応答時間に応答してキューに入れられた前記メモリ要求からメモリへの要求を選択的に発行するように構成されたネットワークコントローラと
を備える、装置。
【請求項２】
前記ネットワークコントローラが、対応する応答時間を取得するために前記メモリへの要求のそれぞれについて選出時間と前記対応する応答時間との間の差を決定するように構成され、
前記ネットワークコントローラが、キューに入れられた前記メモリ要求を前記対応する応答時間に関連付けるように構成される、
請求項１に記載の装置。
【請求項３】
前記ネットワークコントローラが、
発行された前記メモリ要求に対応する選出時間を保存するように構成された選出時間カウンタ回路と、
保存された前記選出時間のそれぞれについて要求カウントを保存するように構成された選出要求総数カウンタ回路と、
発行され完了した前記メモリ要求について受信完了時間からそれぞれ前記選出時間を減算することにより、前記対応する応答時間を生成するように構成された総応答時間カウンタ回路と、
前記対応する応答時間を受信するように結合された、
発行された前記メモリ要求に関連付けられた前記複数のメモリバンクの前記対応する応答時間の移動平均を生成し、
前記移動平均のうちの最低移動平均を決定し、
前記最低移動平均を有する前記複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられた前記メモリ要求のうちの１つのメモリ要求を発行する
ように構成された要求スケジューラ回路と
で構成される、請求項２に記載の装置。
【請求項４】
前記スイッチのネットワークが、プログラマブル論理ファブリックのプログラマブル相互接続回路を含む、請求項２に記載の装置。
【請求項５】
前記メモリ要求が、前記対応する応答時間の最短から最長に応答して順不同で実行するためのメモリ書込みコマンドまたはメモリ読出しコマンドの少なくとも一方を含む、請求項２に記載の装置。
【請求項６】
前記ネットワークコントローラが、対応する枯渇カウントを提供するために前記ネットワークコントローラでそれぞれキューに入れられた前記メモリ要求のそれぞれについて発行のために選択されていない各インスタンスをカウントするように構成され、
前記ネットワークコントローラが、カウント閾値を超える前記枯渇カウントのうちの１つの枯渇カウントを有するキューに入れられた前記メモリ要求の各メモリ要求を発行するように構成される、
請求項３に記載の装置。
【請求項７】
前記スイッチのネットワークの少なくとも１つのスイッチがアービタとして構成され、前記アービタが
前記ネットワークコントローラから発行された前記メモリ要求のサブセットを受信し、
前記アービタで受信された前記メモリ要求の前記サブセットをキューに入れ、
前記アービタでキューに入れられた前記メモリ要求の前記サブセットによってアドレス指定された前記複数のメモリバンクに対して前記対応する応答時間に応答して前記メモリ要求の前記サブセットからメモリ要求を発行する
ように構成される、請求項３に記載の装置。
【請求項８】
集積回路デバイスのための装置であって、
複数のメモリバンクに結合された複数のメモリコントローラと、
前記複数のメモリコントローラに結合されたスイッチのネットワークと、
前記スイッチのネットワークに結合された、メモリ要求を生成するように構成された複数のデータ処理デバイスと、
前記スイッチのネットワークに結合されたネットワークコントローラと、
アービタとして構成された前記スイッチのネットワークのスイッチであって、前記アービタが、前記複数のメモリバンクの対応する応答時間に応答して前記アービタでキューに入れられた前記メモリ要求を発行するように構成される、スイッチと
を備える装置。
【請求項９】
前記アービタのそれぞれが、対応する応答時間を取得するために前記アービタから発行された前記メモリ要求のそれぞれについて選出時間と前記対応する応答時間との差を決定するように構成され、
前記アービタのそれぞれが、前記アービタでキューに入れられた前記メモリ要求を前記対応する応答時間に関連付けるように構成される、
請求項８に記載の装置。
【請求項１０】
前記アービタのそれぞれが、
発行された前記メモリ要求に対応する選出時間を保存するように構成された選出時間カウンタ回路と、
保存された前記選出時間のそれぞれについて要求カウントを保存するように構成された選出要求総数カウンタ回路と、
発行され完了した前記メモリ要求の受信完了時間からそれぞれ前記選出時間を減算することにより、前記対応する応答時間を生成するように構成された総応答時間カウンタ回路と、
前記対応する応答時間を受信するように結合された要求スケジューラ回路であって、
発行された前記メモリ要求の前記アービタにそれぞれ関連付けられた前記複数のメモリバンクのそれぞれについて、前記対応する応答時間の移動平均を生成し、
前記移動平均のうちの最低移動平均を決定し、
前記最低移動平均を有する前記複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられた前記メモリ要求のうちの１つのメモリ要求を発行する
ように構成された要求スケジューラ回路と
で構成される、請求項９に記載の装置。
【請求項１１】
前記メモリ要求が、前記対応する応答時間の最短から最長に応答して順不同で実行するためのメモリ書込みコマンドまたはメモリ読出しコマンドの少なくとも一方を含む、請求項１０に記載の装置。
【請求項１２】
前記アービタのそれぞれが、対応する枯渇カウントを提供するために、前記アービタでそれぞれキューに入れられた前記メモリ要求のそれぞれについて発行のために選択されていない各インスタンスをカウントするように構成され、
前記アービタのそれぞれが、カウント閾値を超える前記枯渇カウントのうちの１つの枯渇カウントを有するキューに入れられた前記メモリ要求の各メモリ要求を発行するように構成される、
請求項９に記載の装置。
【請求項１３】
集積回路デバイスのための方法であって、
複数のデータ処理デバイスからメモリ要求を生成することと、
前記メモリ要求をネットワークコントローラ内でキューに入れることと、
キューに入れられた前記メモリ要求によってアドレス指定された複数のメモリバンクの対応する応答時間に応答して前記メモリ要求を発行することと、
スイッチのネットワークおよび前記複数のメモリバンクに結合された複数のメモリコントローラによる受信のために、前記メモリ要求を前記スイッチのネットワークに通過させることと、
を含む方法。
【請求項１４】
前記メモリ要求を発行することが、
キューに入れられた前記メモリ要求のそれぞれを発行することと完了することとの間の時間差を決定して前記対応する応答時間を取得することと、
キューに入れられた前記メモリ要求を前記対応する応答時間に関連付けることと
を含む、請求項１３に記載の方法。
【請求項１５】
前記メモリ要求を前記発行することが、
発行された前記メモリ要求に関連付けられた前記複数のメモリバンクのそれぞれについて前記対応する応答時間の移動平均を生成することと、
前記移動平均のうちの最低移動平均を決定することと、
前記最低移動平均を有する前記複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられた前記メモリ要求のうちの１つのメモリ要求を発行することと
を含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の説明は、集積回路デバイス（ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ  ｄｅｖｉｃｅｓ）（「ＩＣ」）に関する。より詳細には、以下の説明は、ＩＣに対するメモリ要求（ｍｅｍｏｒｙ  ｒｅｑｕｅｓｔｓ）の適応スケジューリングに関する。
【背景技術】
【０００２】
メモリの読出し要求および書込み要求は、１または複数クロックサイクルの待ち時間で行うことができる。例えば、ダイナミックランダムアクセスメモリまたはＤＲＡＭはかなりの待ち時間を有することがある。かなりの待ち時間を有していると、メモリスループットを含む性能に悪影響を与える可能性がある。したがって、メモリスループットを向上させたＩＣを提供することが望ましい。
【発明の概要】
【０００３】
装置（ａｐｐａｒａｔｕｓ）は、一般に集積回路デバイスに関する。この種の装置では、複数のメモリコントローラが複数のメモリバンク（ｍｅｍｏｒｙ  ｂａｎｋｓ）に結合される。スイッチのネットワークが複数のメモリコントローラに結合される。複数のデータ処理デバイスがスイッチのネットワークに結合され、メモリ要求を生成するように構成される。ネットワークコントローラがスイッチのネットワークに結合され、メモリ要求をキューに入れ、複数のメモリバンクに関連付けられた対応する応答時間に応答してキューに入れられたメモリ要求からメモリへの要求を選択的に発行するように構成される。
【０００４】
いくつかの実施形態では、ネットワークコントローラは、対応する応答時間を取得するためにメモリへの要求のそれぞれについて選出時間（ｐｉｃｋ  ｔｉｍｅ）と対応する応答時間との間の差を決定するように構成され得る。ネットワークコントローラは、キューに入れられたメモリ要求を対応する応答時間に関連付けるようにも構成され得る。
【０００５】
いくつかの実施形態では、ネットワークコントローラは、発行されたメモリ要求に対応する選出時間を保存するように構成された選出時間カウンタ回路で構成され得る。ネットワークコントローラは、保存された選出時間のそれぞれについて要求カウントを保存するように構成された選出要求総数カウンタ回路も含むことができる。ネットワークコントローラは、発行され完了したメモリ要求について受信完了時間からそれぞれ選出時間を減算することにより、対応する応答時間を生成するように構成された総応答時間カウンタ回路も含むことができる。ネットワークコントローラは、対応する応答時間を受信するように結合された、発行されたメモリ要求に関連する複数のメモリバンクの対応する応答時間の移動平均を生成し、移動平均のうちの最低移動平均を決定し、そして最低移動平均を有する複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられたメモリ要求のうちの１つのメモリ要求を発行するように構成された要求スケジューラ回路も含むことができる。
【０００６】
いくつかの実施形態では、スイッチのネットワークは、プログラマブル論理ファブリックのプログラマブル相互接続回路を含むことができる。
【０００７】
いくつかの実施形態では、対応する応答時間は、メモリページが開いていることを示すことができる。
【０００８】
いくつかの実施形態では、メモリ要求は、対応する応答時間の最短から最長に応答して順不同で実行するためのメモリ書込みコマンドまたはメモリ読出しコマンドの少なくとも一方を含むことができる。
【０００９】
いくつかの実施形態では、複数のメモリバンクは、ページ読出しまたはページ書込みの少なくとも一方でアクセス可能であり得る。
【００１０】
いくつかの実施形態では、ネットワークコントローラは、対応する枯渇カウント（ｓｔａｒｖａｔｉｏｎ  ｃｏｕｎｔｓ）を提供するためにネットワークコントローラでそれぞれキューに入れられたメモリ要求のそれぞれについて発行のために選択されていない各インスタンスをカウントするように構成され得る。ネットワークコントローラはさらに、カウント閾値を超える枯渇カウントのうちの１つの枯渇カウントを有するキューに入れられたメモリ要求の各メモリ要求を発行するように構成され得る。
【００１１】
いくつかの実施形態では、スイッチのネットワークの少なくとも１つのスイッチがアービタ（ａｒｂｉｔｅｒ）として構成され得る。アービタは、ネットワークコントローラから発行されたメモリ要求のサブセットを受信し、アービタで受信されたメモリ要求のサブセットをキューに入れ、アービタでキューに入れられたメモリ要求のサブセットによってアドレス指定された複数のメモリバンクに対して対応する応答時間に応答してメモリ要求のサブセットからメモリ要求を発行するように構成され得る。
【００１２】
別の装置は、一般に集積回路デバイスに関する。この種の装置では、複数のメモリコントローラが複数のメモリバンクに結合される。スイッチのネットワークが複数のメモリコントローラに結合される。複数のデータ処理デバイスがスイッチのネットワークに結合され、メモリ要求を生成するように構成される。ネットワークコントローラがスイッチのネットワークに結合される。スイッチのネットワークのスイッチはアービタとして構成される。アービタは、キューに入れられ、複数のメモリバンクの対応する応答時間に応答してアービタでキューに入れられたメモリ要求を発行するように構成される。
【００１３】
いくつかの実施形態では、アービタのそれぞれが、対応する応答時間を取得するためにアービタから発行されたメモリ要求のそれぞれについて選出時間と対応する応答時間との差を決定するように構成され得る。アービタのそれぞれが、アービタでキューに入れられたメモリ要求を対応する応答時間に関連付けるように構成され得る。
【００１４】
いくつかの実施形態では、アービタのそれぞれが、発行されたメモリ要求に対応する選出時間を保存するように構成された選出時間カウンタ回路で構成され得る。アービタのそれぞれがさらに、保存された選出時間のそれぞれの要求カウントを保存するように構成された選出要求総数カウンタ回路と、発行され完了したメモリ要求の受信済み完了時間からそれぞれ選出時間を減算することにより対応する応答時間を生成するように構成された総応答時間カウンタ回路と、で構成され得る。アービタのそれぞれがさらに、対応する応答時間を受信するように結合された要求スケジューラ回路であって、発行されたメモリ要求のアービタにそれぞれ関連付けられた複数のメモリバンクのそれぞれについて対応する応答時間の移動平均を生成し、移動平均のうちの最低移動平均を決定し、そして最低移動平均を有する複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられたメモリ要求のうちの１つのメモリ要求を発行するように構成された要求スケジューラ回路で構成され得る。
【００１５】
いくつかの実施形態では、スイッチのネットワークは、プログラマブル論理ファブリックのプログラマブル相互接続回路を含むことができる。
【００１６】
いくつかの実施形態では、対応する応答時間は、メモリページが開いていることを示すことができる。
【００１７】
いくつかの実施形態では、メモリ要求は、対応する応答時間の最短から最長に応答して順不同で実行するためのメモリ書込みコマンドまたはメモリ読出しコマンドの少なくとも一方を含むことができる。
【００１８】
いくつかの実施形態では、複数のメモリバンクは、ページ読出しまたはページ書込みの少なくとも一方でアクセス可能であり得る。
【００１９】
いくつかの実施形態では、アービタのそれぞれが、対応する枯渇カウントを提供するためにアービタでそれぞれキューに入れられたメモリ要求のそれぞれについて発行のために選択されていない各インスタンスをカウントするように構成され得る。アービタのそれぞれがさらに、カウント閾値を超える枯渇カウントのうちの１つの枯渇カウントを有するキューに入れられたメモリ要求の各メモリ要求を発行するように構成され得る。
【００２０】
一方法は、一般に集積回路デバイスに関する。かかる方法では、メモリ要求が複数のデータ処理デバイスから生成される。メモリ要求は、ネットワークコントローラ内でキューに入れられる。メモリ要求は、キューに入れられたメモリ要求によってアドレス指定された複数のメモリバンクの対応する応答時間に応答して発行される。メモリ要求は、スイッチのネットワークおよび複数のメモリバンクに結合された複数のメモリコントローラによる受信のために、スイッチのネットワークを通過する。
【００２１】
いくつかの実施形態では、メモリ要求を発行することは、キューに入れられたメモリ要求のそれぞれを発行することと完了することとの間の時間差を決定して対応する応答時間を取得することと、キューに入れられたメモリ要求を対応する応答時間に関連付けることと、を含むことができる。
【００２２】
いくつかの実施形態では、メモリ要求を発行することは、発行されたメモリ要求に関連付けられた複数のメモリバンクのそれぞれについて対応する応答時間の移動平均を生成することと、移動平均のうちの最低移動平均を決定することと、最低移動平均を有する複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられたメモリ要求のうちの１つのメモリ要求を発行することと、を含むことができる。
【００２３】
他の機能は、以下の詳細な説明および特許請求の範囲を考慮して認識されるであろう。
【００２４】
添付の図面は、例示的な装置および／または方法を示す。しかしながら、添付の図面は、特許請求の範囲を限定するものと受け取られるべきではなく、説明および理解のためだけのものである。
【図面の簡単な説明】
【００２５】
【図１】例示的なネットワークオンチップ（「ＮｏＣ」）を示すブロック図である。
【図２】例示的なメモリコントローラを示すブロック図である。
【図３】データ処理デバイスの例示的なセットを示すブロック図である。
【図４】例示的なネットワークコントローラを示すブロック図である。
【図５】例示的なステートフルカウンタを示す概略図である。
【図６】例示的な要求スケジューラを示すブロック図である。
【図７】別の例示的な要求スケジューラを示すブロック図である。
【図８】別の例示的なＮｏＣを示すブロック図である。
【図９】例示的な柱状フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）アーキテクチャを示す簡略ブロック図である。
【図１０】例示的なメモリ要求スケジューリングフローを示す流れ図である。
【発明を実施するための形態】
【００２６】
以下の説明では、本明細書に記載されている特定の例のより完全な説明を提供するために多くの特定の詳細が記述されている。しかしながら、当業者には、１つまたは複数の他の例および／またはこれらの例の変形形態が、以下に与えられる特定の詳細のすべてではなしに実施され得ることが明らかであろう。他のインスタンスでは、よく知られた特徴は、本明細書内の例の説明を不明瞭にしないように詳細には記述されていない。説明を簡単にするために、同じ番号ラベルは、異なる図で同じ項目を参照するために使用されるが、他の例では項目が異なる場合がある。
【００２７】
例示的な装置および／または方法が本明細書に記載されている。「例示的」という単語は、本明細書では「例、インスタンス、または実例として役立つこと」を意味するために使用されることを理解されたい。本明細書に「例示的」と記載されている例または特徴は、必ずしも他の例または特徴よりも好ましいまたは有利であると解釈される必要はない。
【００２８】
いくつかの図に例示的に描かれている例を説明する前に、さらなる理解のために概略紹介が提供される。
【００２９】
メモリ要求の往復正味時間は、例えばネットワークコントローラまたはアービタの少なくとも一方によって監視される。これらの往復正味時間または応答時間は、どのメモリページが開いている（すなわち、応答時間が短い）か、どのメモリページが開いていない（すなわち、応答時間が長い）か、を効果的に識別するために、メモリ要求に関連付けられ得る。それらの線に沿って、短い応答時間を有するメモリバンクに関連付けられたメモリ要求は、長い応答時間を有するメモリバンクに関連付けられたメモリ要求よりも選択され得る。応答時間が短い可能性が高いメモリ要求のこの優先的選択は、メモリ要求の全体的なスループットを向上させるために使用され得る。言い換えると、メモリ待ち時間が短縮され、したがってメモリアクセスの全体的性能が向上する。
【００３０】
それらの線に沿って、ネットワークコントローラおよび／またはアービタレベルで情報を提供してメモリ内のどのページが現在アクティブであるかを識別するために回路が追加される。このような回路は、メモリ要求の往復時間を決定するとともに、そのようなメモリ要求のそのような往復時間に関連する移動平均を維持するために使用される。読出しまたは書込みメモリアドレスから、ページアドレスまたは列アドレスが決定され得る。ページアドレスの場合、ネットワークコントローラおよび／またはアービタでの未処理のメモリ要求がそのようなページアドレスと一致するかどうかが判断され得る。最低平均往復時間または平均サービス時間を有するページアドレスと一致することが選択され得る、または一致するページアドレスを有していないメモリ要求よりも優先され得る。
【００３１】
上記の一般的な理解を念頭において、メモリ要求の適応スケジューリングの様々な構成が以下に一般的に記述される。
【００３２】
図１は、例示的なネットワークオンチップ（「ＮｏＣ」）１００を示すブロック図である。ＮｏＣ１００は、集積回路デバイスの装置であり得る。
【００３３】
ＮｏＣ１００は、メモリコントローラ１０３、メモリバンク１０４、スイッチのネットワーク１０２、データ処理デバイス１０５、およびネットワークコントローラ１０１を含むことができる。データ処理デバイス１０５とは、一般に、データを扱うかつ／または処理するように構成された集積回路デバイスを意味する。
【００３４】
メモリコントローラ１０３はメモリバンク１０４に結合され得る。スイッチのネットワーク１０２はメモリコントローラ１０３に結合され得る。集積回路のプログラマブルハードウェアファブリック１０９内の各プログラマブルタイル１０８は、プログラマブル相互接続回路１０６とプログラマブル論理回路１０７の両方を含むことができる。プログラマブル相互接続回路１０６は、プログラマブル相互接続点（「ＰＩＰ」）によって相互接続された様々な長さのいくつかの相互接続線を含むことができる。例えばＦＰＧＡなどのこれらのプログラマブル相互接続回路１０６は、スイッチのネットワーク１０２のインスタンスを生成するようにプログラミングされ得る。データ処理デバイス１０５はスイッチのネットワーク１０２に結合され得る。データ処理デバイスは、以下でさらに詳述されるように、メモリ要求を生成するように構成され得る。
【００３５】
ネットワークコントローラ１０１はスイッチのネットワーク１０２に結合され得る。ネットワークコントローラ１０１は、以下でさらに詳述されるように、メモリ要求をキューに入れるように構成され得る。メモリコントローラ１０１は、以下でさらに詳述されるように、キューに入れられたメモリ要求からメモリへの要求を、キューに入れられたかかるメモリ要求でアドレス指定されたメモリバンクに関連付けられた対応する応答時間に応答して選択的に発行するように構成され得る。
【００３６】
一般に、複数のメモリ要求、例えば、ネットワークコントローラ１０１（または以下で説明するアービタ）でキューアップされたデータ処理デバイス１０５からの複数のＤＲＡＭ読出し要求などの場合、応答時間はレジスタおよびカウンタを使用して決定され得る。これらの応答時間は、特定のメモリ要求が完了するのにどのくらい時間がかかるのかを理解するために使用され得る。ページアクセス可能メモリまたはページメモリのメモリアドレスの場合、周知のように行バッファおよびメモリバンクがそのようなメモリアドレスから識別され得るかつ／または識別可能であり得る。メモリバンク当たりのサービス時間または往復時間の移動平均を維持することを含む、各メモリバンクの要求および関連する応答時間を追跡することにより、最速応答時間を有するかかるメモリバンクのメモリコントローラ、またはより具体的には、最短移動平均応答もしくはサービス時間を有するメモリバンクのメモリコントローラに送信するために、メモリ要求が、ネットワークコントローラ１０１（または以下で説明するアービタ）などにおけるメモリ要求キューから選択され得る。
【００３７】
図２は、例示的なメモリコントローラ２００を示すブロック図である。メモリコントローラ２００は、図１のメモリコントローラ１０３のメモリコントローラの一例であり得る。
【００３８】
メモリコントローラ２００は、スケジューラ２０１と１つまたは複数のメモリ要求キュー（「要求キュー（ｒｅｑｕｅｓｔ  ｑｕｅｕｅｓ）」）２０２とを含むことができる。一般に、要求キュー２０２は、読出し要求キュー２０３および書込み要求キュー２０４を含むことができる。しかしながら、メモリの読出し専用の実装が使用されてもよく、その場合、要求キュー２０２は、例えば、単一のメモリ読出し要求キューのみを含むことができる。
【００３９】
図３は、データ処理デバイス３００の例示的なセットを示すブロック図である。データ処理デバイス３００は、図１のデータ処理デバイス１０５のセットの一例であり得る。しかしながら、データ処理デバイス３００として図示されたものよりも少ないまたは多いデータ処理デバイスが使用されてもよい。さらに、他のタイプのデータ処理デバイス、すなわち図示の例におけるもの以外のものがデータ処理デバイス３００に使用されてもよく、データ処理デバイスの他の構成、すなわち図示の例以外のものがデータ処理デバイス３００に使用されてもよい。
【００４０】
この例では、データ処理デバイス３００は、マイクロプロセッサコア３０１−１〜３０１−Ｍ（まとめて「マイクロプロセッサコア３０１」）およびネットワークインタフェース３１１を含む。マイクロプロセッサコア３０１は、制限なく１つまたは複数のマルチコアマイクロプロセッサを含む、１つまたは複数のマイクロプロセッサからなり得る。マイクロプロセッサの例には、とりわけＩｎｔｅｌ、ＡＲＭ、およびＡＭＤのマイクロプロセッサが含まれる。
【００４１】
マイクロプロセッサコア３０１は、それぞれメモリ要求を発行することができる。マイクロプロセッサコア３０１−１〜３０１−Ｍのそれぞれのメモリ要求３０５−１〜３０５−Ｍの場合、これらのマイクロプロセッサコア３０１はそれぞれ、データ３０４−１〜３０４−Ｍをそれぞれ読み出すまたは書き込むために、読出しまたは書込み（「Ｒ／Ｗ」）コマンド３０２−１〜３０２−Ｍおよび対応するＲ／Ｗアドレス３０３−１〜３０３−Ｍを発行することができる。メモリ要求３０５−（Ｍ＋１）の場合、ネットワークインタフェース３１１はそれぞれ、データ３０４−（Ｍ＋１）をそれぞれ読み出すまたは書き込むために、Ｒ／Ｗコマンド３０２−（Ｍ＋１）および対応するＲ／Ｗアドレス３０３−（Ｍ＋１）を発行することができる。例えば、マイクロプロセッサコア３０１−Ｍは、対応するＲ／Ｗアドレス３０３−Ｍを用いて読出しまたは書込み（「Ｒ／Ｗ」）コマンド３０２−Ｍを発行することができる。かかるＲ／Ｗアドレス３０３−Ｍは、図１のメモリバンク１０４内のどこでデータがＲ／Ｗメモリ要求に対応して読み出されるまたは書き込まれるべきかを示す。読出しコマンドの完了に応答して読出しアドレスでメモリから読み出されたデータは、随意に、一般にデータ３０４−Ｍとして示されるように、要求元のデータ処理デバイスに戻されてもよく、または周知のように他の場所に送信されてもよい。同様に、書込みアドレスでメモリに書き込まれるべきデータは、随意に、一般にデータ３０４−Ｍとして示されているように、要求元のデータ処理デバイスから提供されてもよい。
【００４２】
上記の線に沿って、Ｍが１より大きい正の整数である場合、Ｍ＋１個のデータ処理デバイス３００からのメモリ要求３０５−１〜３０５−Ｍ＋１が存在し得る。同じ時間間隔でかつ／または同じ時間間隔以内にＭ＋１個の要求を発行するＭ＋１個のデータ処理デバイス３００または「リクエスタ（ｒｅｑｕｅｓｔｏｒｓ）」があり得るが、一度の未処理または保留中の要求の数は、例えば図１のネットワークコントローラ１０１などのネットワークコントローラによってサポートされ得る最大要求数によって制限され得る。さらに、同じリクエスタが一度に複数の未処理の要求を有することができる。
【００４３】
以下の説明は、メモリ読出しコマンドおよび／またはメモリ書込みコマンドに関係なく、順不同の順序で実行され得るメモリ要求に関するものである。それらの線に沿って、キューに入れられたメモリ要求が選択または選出されてもよく、メモリ要求キューからのこれらの選択済みメモリ要求は、性能を向上させるためにアウトオブオーダのシーケンスで選択されてもよいことを理解されたい。
【００４４】
限定するものではなく例として明瞭にするために、以下の説明は、一般に、図１のメモリバンク１０４がページ読出しおよび／またはページ書込みでアクセス可能なＤＲＡＭメモリバンクである場合である。しかしながら、ページまたは同様のアクセスを有する他のタイプのメモリが使用され得ることを理解されたい。
【００４５】
図４は、例示的なネットワークコントローラ４００を示すブロック図である。ネットワークコントローラ４００は、図１のネットワークコントローラ１０１の一例であり得る。図１〜図４を同時参照して、ネットワークコントローラ４００についてさらに説明する。
【００４６】
ネットワークコントローラ４００は、「選出時間カウンタ」回路４０１、選出要求総数カウンタ回路（「選出要求カウンタ」）４０２、総応答時間カウンタ回路（「応答時間カウンタ」）４０３、および要求スケジューラ回路（「要求スケジューラ」）４０４を含むことができる。選出時間カウンタ４０１は、レジスタ４１１−０〜４１１−Ｎ（まとめて「レジスタ４１１」）を有するレジスタファイルであり得る。
【００４７】
１つまたは複数のメモリ要求３０５が、データ処理デバイス３００から要求スケジューラ４０４に提供される。データ処理デバイス３００は、かかるメモリ要求３０５をスイッチのネットワーク１０２を介して要求スケジューラ４０４のネットワークコントローラ４００に提供することができる。
【００４８】
要求スケジューラ４０４でキューに入れられたメモリ要求３０５から要求スケジューラ４０４によって選出または選択されたメモリ要求（「Ｒ」）の場合、かかる選択に応答する要求スケジューラ４０４は、メモリへのかかる選択済み要求、すなわちメモリへの要求の信号４２２またはメモリへの要求Ｒ４２２を送信し、どの要求が選択されたのかを、すなわち選出要求Ｒ信号４２１を示す。受信済みの選出要求Ｒ信号４２１の現在の時間は、かかる信号に関連付けられたメモリ要求Ｒのレジスタ４１１−Ｒに保存され得る、ただしＲは０からＮまでの整数である。整数Ｎは、少なくとも、ネットワークコントローラ４００がサポートできる未処理の要求の数であり得る。したがって、整数Ｎは定数であり得る。
【００４９】
現在の時間は、選出時間カウンタ４０１のレジスタ４１１−Ｒに保存され得る。したがって、実際上、選出時間カウンタ４０１は、ネットワークコントローラが発行したメモリ要求のアクティブな選出時間のカウントを保存するために使用され得る。保存された選出時間を有する各レジスタ４１１は、対応する要求Ｒに関連付けられる。
【００５０】
信号を送信するタイミング、ならびに本明細書に記載されている他のタイミングは、同じクロック信号４５５を用いてカウンタ４０１〜４０３ならびに要求スケジューラ４０４をクロック制御することによって提供され得る。セット、リセット、クリア、電源、接地など、他の既知のタイプの信号は、限定するものではなく明瞭にするために例示的に示されていない。
【００５１】
メモリへの発行済み要求Ｒ４２２であるように要求スケジューラ４０４によって選択されたキューに入れられた要求は、読出し要求であろうと書込み要求であろうと、対応するカウンタＲを増分するためにさらに使用され得る。
【００５２】
それらの線に沿って、選出要求Ｒ信号４２１が選出時間カウンタ４０１と選出要求カウンタ４０２の両方に送信され得る。
【００５３】
選出要求カウンタ４０２は、レジスタ４１１に対応するカウンタ４１２−０〜４１２−Ｎ（まとめて「カウンタ４１２」）を含むことができる。それらの線に沿って、カウンタ４１２のカウンタ４１２−Ｒは、選出要求Ｒ信号４２１のアサーションに応答して増分され得る。したがって、カウンタ４１２はそれぞれ、選出時間カウンタ回路４０１のレジスタ４１１に保存されたアクティブな選出時間の対応する各選出時間値について選出要求Ｒ信号４２１だけ増分するのに応答して要求カウントを保存することができる。
【００５４】
カウンタ４１２のそれぞれについて最大値が同じであり得る。カウンタ４１２−Ｒが増分後にかかる最大値に達すると、かかるカウンタ４１２−Ｒはかかる飽和値に維持され得る、すなわちかかるカウンタ４１２−Ｒに設定された最大値に保持され得る。例えば、３ビットカウンタの場合、最大値は数値７とすることができ、かかるカウンタ４１２−Ｒは順次７まで増分され、その後、そのような７のカウントで保持され得る。
【００５５】
メモリへの発行済み要求Ｒ４２２が完了した後、メモリからの応答信号４２４、またはメモリから要求スケジューラ４０４への応答Ｒ信号４２４に対する応答が受信され得る。メモリからのかかる応答信号４２４は、メモリへの対応する要求Ｒ４２２におけるそのような要求されたタスクの完了を示すために使用され得る。それらの線に沿って、完了したメモリ要求Ｒに応答してかかるレジスタをクリアするために、更新カウンタ信号４２５が要求スケジューラ４０４からレジスタ４１１−Ｒの選出時間カウンタ４０１に提供され得る。
【００５６】
要求スケジューラ４０４によって受信されたメモリからの応答４２４の場合、そのような応答は、対応する要求Ｒが完了した時間の値を含む。この時間の値は、Ｒの応答時間と呼ばれる。
【００５７】
メモリへの読出し要求４２２の場合、メモリからの対応する応答４２４は、かかる読出し要求の完了に応答するメモリからのデータ読出しをさらに含むことができる。
【００５８】
Ｒの応答時間または完了時間は、要求スケジューラ４０４から応答時間カウンタ４０３に応答または完了時間（「応答時間」）Ｒ信号４２３として提供され得る。応答時間カウンタ４０３は、カウンタ回路４１３−０〜４１３−Ｎ（まとめて「カウンタ４１３」）を含むことができる。カウンタ４１３のカウンタ４１３−Ｒは応答時間Ｒ信号４２３を受信することができる。
【００５９】
カウンタ４１３のかかるカウンタ４１３−Ｒは、以下の対応する信号、すなわち、選出時間カウンタ４０１のレジスタ４１１のレジスタ４１１−Ｒからの選出時間Ｒ信号４３１と、選出要求カウンタ４０２のカウンタ４１２−ＲからのＲ信号４３２に対する要求の総数と、をさらに受信することができる。応答時間カウンタ回路４０３のカウンタ４１３は、Ｒの総応答時間を決定し、対応する信号、すなわち総応答時間Ｒ信号４３３を生成するように構成され得る。このＲの総応答時間は、応答時間Ｒ信号４２３からの完了した要求Ｒの受信応答時間値から、レジスタ４１１−Ｒから取得された要求Ｒの選出時間値を減算することを含むことができる。完了したメモリ要求Ｒの総応答時間Ｒ信号４３３は、カウンタ４１３−Ｒから要求スケジューラ４０４に送信され得る。
【００６０】
要求スケジューラ４０４は、以下でさらに詳述されるように、対応する平均応答時間４１７に関連してメモリ要求３０５をキューに入れるように構成され得る。平均応答時間４１７を使用して、要求スケジューラ４０４は、メモリ要求３０５のどれを発行すべきかを選出することができる。この発行は、スループットを向上させるためにアウトオブオーダ順序付けで行うことができる。
【００６１】
随意に、未処理要求の総数に対応するＮについてＮ個の応答時間が追跡されているものとする。さらに、メモリバンク番号ＢがかかるＮ個の要求のメモリアドレスから取得され、かかるメモリバンクＢの応答時間が追跡されるものとする。これは、メモリバンクの総数がＮより大であり、これは概して真であることを前提としている。ただし、Ｎ個の要求のうち、同じバンク番号、例えばメモリバンクＢなどへの複数のメモリ要求が存在する可能性がある。例えば、バンク番号Ｂが抽出されるメモリアドレスの一部は、メモリ要求Ｎのうちの２つ以上のメモリ要求について同じである。
【００６２】
このメモリバンクＢに対応するメモリ応答時間が最短である場合、同じメモリバンクＢへのこれらの２つ以上のメモリ要求のうちのどれが最初に送信されるべきかについて決定する。この例では、要求スケジューラ４０４は、かかる２つ以上のメモリ要求のうちの最初に受信したものをメモリバンクＢに送信するように構成される。
【００６３】
ただし、別の例では、同じメモリバンク要求のうちのどれを最初に送信するべきかを決定するために別の基準が使用されてもよい。
【００６４】
引き続き図４を参照しながら図３に戻ると、データ処理デバイス３００のそれぞれが潜在的リクエスタであり、潜在的リクエスタは、複数の要求を発行することができ、したがって複数の未処理の要求を一度に有することができる。整数Ｎは、少なくとも、ネットワークコントローラ４００が一度にすべてのリクエスタに対してサポートすることができる未処理の要求の最大数であり得る。ただし、Ｎの値はかかる最大数を超える場合がある。それらの線に沿って、カウンタ４０１〜４０３はそれぞれ、リクエスタごとに維持される回路のセットを有することができる。それらの線に沿って、例えば、レジスタ４１１のサブセット、カウンタ４１２のサブセット、およびカウンタ４１３のサブセットはそれぞれ、マイクロプロセッサコア３０１のうちの１つのマイクロプロセッサコア、すなわちデータ処理デバイス３００のリクエスタによる排他的使用のために別々に維持または分離され得る。しかしながら、要求スケジューラ４０４は、そのようなレジスタ４１１、カウンタ４１２、およびカウンタ４１３のすべてを監督または管理することができる。
【００６５】
例えば、メモリバンクの総数が３２であるとすると、他の数が使用されてもよく、未処理の要求の最大数Ｎが８であるとすると、他の数が使用されてもよい。このような例では、せいぜい８つのメモリ応答時間しか一度に追跡されない。この例では、８つの応答時間はすべて、メモリバンクＢ０、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７に対して現在追跡されている。この例では、あるメモリ要求がメモリバンクＢ０に関連付けられて完了し、別のメモリ要求がメモリバンクＢ１０（すなわち、メモリバンク番号１０）に対して受信される。それらの線に沿って、本明細書に記載されているように、メモリバンクＢ０の応答時間を追跡するために以前に使用された応答時間回路は、メモリバンクＢ１０の応答時間を追跡するために再利用され得る。メモリバンクＢ０のサンプル要求が行われ、現在、メモリバンクＢ０への未処理の要求が他にないため、メモリバンクＢ０への応答時間を追跡するために以前に割り当てられた回路は、この例では、メモリバンクＢ１０への応答時間を追跡することに再利用または再割当てされ得る。
【００６６】
図５は、例示的なステートフルカウンタ５００を示す概略図である。言い換えれば、カウンタ５００は、要求Ｒの数が、かかるカウンタがそのために構成される要求の最大総数よりも少ないか多いかに依存する出力を有するように構成され得る。
【００６７】
カウンタ５００は図４のカウンタ４１３とすることができ、限定するものではなく明瞭にするために、カウンタ５００は対応する要求Ｒに関するものとして説明される。
【００６８】
それらの線に沿って、カウンタ５００−Ｒは、図４および図５を同時参照して説明される。
【００６９】
カウンタ５００−Ｒは、減算器５０１、加算器５０３、除算器５０４、加算器５０５、デジタル比較器５０６、マルチプレクサ（「ｍｕｘ」）５０７、減算器５０８、および総応答時間Ｒレジスタ５１６を含むことができる。選出時間Ｒ信号４３１は、減算器５０１のマイナスポートに結合され得る。応答時間Ｒ信号４２３は、減算器５０１のプラスポートおよび加算器５０５のプラスポートに結合され得る。
【００７０】
減算器５０１は、完了した発行済みメモリ要求Ｒに対して応答時間Ｒ信号４２３の応答時間から選出時間Ｒ信号４３１の選出時間を減算することにより差を決定するように構成され得る。
【００７１】
この差は正味時間Ｒ信号５０２と呼ばれ、正味時間Ｒ信号５０２は加算器５０３のプラスポートに入力され得る。
【００７２】
加算器５０３の別のプラスポートは、Ｒバイアル総応答時間Ｒ信号４３３に対して現在の総応答時間を受信するために結合され得る。総応答時間Ｒ信号４３３は、除算器５０４の分子ポートに入力され得る。
【００７３】
加算器５０３の出力は、正味時間Ｒ信号５０２と現在の総応答時間Ｒの合計値とすることができ、合計値は増分値５１２と呼ばれる。増分値５１２は、ｍｕｘ５０７のデータ入力ポートに提供される。
【００７４】
除算器５０４の除数ポートは、要求最大総数信号５１０を受信するために結合され得る。要求最大総数信号５１０の要求の最大総数値はプリセット閾値であり得る。
【００７５】
除算器５０４は、Ｒの総応答時間を、平均を取得するために設定された要求の最大総数値で除算するように構成されてもよく、平均は、平均信号５０９として除算器５０４から出力され得る。平均信号５０９は、減算器５０８のマイナスポートに入力され得る。Ｒ値の総応答時間は、調整済み平均信号５１３を取得するために、現在の総応答時間Ｒ信号４３３から減算器５０８のプラスポートに入力され得る。総応答時間Ｒ信号４３３からのＲ値の現在総応答時間から平均信号５０９からの平均を減算することにより、実際上、前の応答時間の一部は、調整済み平均を与えるために除去され得る。
【００７６】
調整済み平均を新たに応答時間で更新するために、応答時間Ｒ信号４２３からの応答時間Ｒ値が加算器５０５のプラスポートに入力され得る。調整済み平均信号５１３は、加算器５０５の別のプラスポートに入力され得る。加算器５０５は、調整済み平均信号５１３のＲの現在の調整済み平均値に新たにＲの応答時間を加算して増分値信号５１４を出力するように構成され得る。増分値信号５１４は、ｍｕｘ５０７の別のデータポートに入力され得る。実際上、増分値信号は、Ｒの調整済み平均応答時間をＲの新たに受信された応答時間で更新するものである。
【００７７】
比較器５０６のマイナスポートは、要求最大総数信号５０４により許容要求最大総数プリセット値を受信するように結合され得る。比較器５０６のプラスポートは、要求Ｒの総数信号４３２によりＲに対する現在の要求総数を受信するように結合され得る。比較器５０６の出力は、デジタル１または０制御選択信号をｍｕｘ５０７に提供するために使用され得る。
【００７８】
比較器５０６の出力がｍｕｘ５０７に入力される制御選択信号５１１としてデジタル１である場合、増分値信号５１２が更新値信号５１５としてｍｕｘ５０７から出力され得る。比較器５０６の出力がｍｕｘ５０７に入力される制御選択信号５１１としてデジタル０である場合、増分値信号５１４が更新値信号５１５としてｍｕｘ５０７から出力され得る。更新値信号５１５は、Ｒ値の更新済み総応答時間を有することができる。更新値信号５１５は、Ｒ値のかかる更新済み総応答時間を一時的に保存するために、総応答時間Ｒレジスタ５１６のデータ入力ポートに結合され得る。
【００７９】
総応答時間Ｒ信号４３３のＲ値の総応答時間は、Ｒレジスタの総応答時間５１６のデータ出力ポートから供給され得る。総応答時間Ｒ信号４３３のＲ値の総応答時間は要求スケジューラ４０４に出力され得る。
【００８０】
一般に、ネットワークコントローラ４００は、各そのような完了した要求の対応する総応答時間を取得するために発行された各完了したメモリ要求の選出時間と対応する応答時間との差を決定するように構成され得る。メモリ要求はメモリアドレスを含むため、ネットワークコントローラは、以下でさらに詳述されるように、キューに入れられたメモリ要求のアドレスを対応する応答時間に関連付けるように構成され得る。
【００８１】
図６は、例示的な要求スケジューラ６００を示すブロック図である。要求スケジューラ６００は要求スケジューラ４０４の一例である。要求スケジューラについて、図４〜図６を同時参照してさらに説明する。
【００８２】
要求スケジューラ６００は、メモリ要求キューバッファ６０１、メモリ応答キューバッファ６３０、オプションの要求有効チェック回路６０６、オプションの応答有効チェック回路６３１、読出しカウンタバッファ６０２、除算器６０３、移動平均バッファ６０８、および比較器回路６０５を含むことができる。メモリ要求３０５は、メモリ要求キューバッファ６０１によって受信され、メモリ要求キューバッファ６０１でキューに入れられ得る。メモリ要求キューバッファ６０１、ならびに要求スケジュール６００の他のすべてのバッファは、クロック信号４５５（明瞭にするために図６には示されていない）を用いたクロッキングでこの例の対応するレジスタファイルが実装され得る。ただし、他の例では、レジスタまたは他のタイプの一時データ保存が使用され得る。
【００８３】
メモリ要求Ｒを受信するのに応答して、メモリ要求キューバッファ６０１は、要求Ｒコマンド信号（「読出しカウンタ信号」）６１１に対して読出しカウンタを発行するように構成され得る。読出しカウンタ信号６１１は、読出しカウンタ信号６１１の内容を読み出すためにカウンタ４０２および４０３に提供され得る。
【００８４】
読出しカウンタ信号６１１に応答して、カウンタ４１２−Ｒの内容およびカウンタ４１３−Ｒの内容（後者はカウンタ４１３−Ｒの総応答時間Ｒレジスタ５１６の内容であり得る）はそれぞれ、Ｒ信号４３２−Ｒに対する要求の総数およびＲ信号４３３−Ｒに対する総応答時間であり得る。カウンタ４１２−Ｒの信号４３２−Ｒの値およびカウンタ４１３−Ｒの信号４３３−Ｒの値は、読出しカウンタバッファ６０２にロードされ得る。Ｒ値のこれらの総応答時間および要求の総数は、一般に信号４３２−Ｒおよび４３３−Ｒとして読出しカウンタバッファ６０２から読み取ることができる。
【００８５】
随意に、１つまたは複数の除算器６０３が、信号４３２−Ｒおよび４３３−Ｒを受信するために結合され得る。除算器６０３のある除算器は、移動平均信号６０７でＲの移動平均応答時間を提供するために、信号４３３−ＲのＲの総応答時間、すなわち実行総応答時間を信号４３２−ＲのＲの要求の総数、すなわち実行要求数で除算するように構成され得る。
【００８６】
随意に、移動平均サービス時間は、除算器６０３の別の除算器で決定され得る。除算器６０３のある除算器は、移動平均信号６０７でＲの移動平均サービス時間を提供するために、信号４３３−ＲのＲの総応答時間を要求最大総数信号５０４の要求最大総数で除算するように構成され得る。
【００８７】
Ｒの移動平均応答時間または移動平均サービス時間のどちらかまたは両方が、移動平均バッファ６０８でバッファリングするために除算器６０３から移動平均信号６０７で出力され得る。限定するものではなく例として明瞭にするために、移動平均応答時間のみが使用されるものとするが、別の例では移動平均応答時間と移動平均サービス時間のどちらかまたは両方が使用され得る。
【００８８】
比較器回路６０５は、移動平均バッファ６０８に結合され得る、または移動平均バッファ６０８を含むことができる。比較器回路６０５は、発行済みメモリ要求のメモリアドレスを受信するために、メモリ要求キューバッファ６０１に結合され得る。
【００８９】
比較器回路６０５は、随意に、対応するメモリアドレス、すなわちアドレス６１８に関連して移動平均応答時間、すなわち移動平均６１７を保存するバッファ６０８を含むことができる。メモリアドレス６１８は、随意に、発行済みメモリ要求４２２についてメモリ要求キューバッファ６０１内のメモリ要求から取得され得る。対応する応答時間について生成された移動平均６１７はメモリバンクためのものとすることができ、かかるメモリバンクは、関連する発行済みメモリ要求４２２のメモリアドレス６１８を使用して、各要求Ｒ応答時間について関連付けることができる。
【００９０】
比較器６０５は、移動平均６１７の最低移動平均を決定するように構成され得る。比較器６０５は、かかる最低移動平均を選択して選出要求Ｒ信号６２１を提供するように構成され得る。２つ以上の最低移動平均の結びつきのために、比較器６０５は、メモリ要求キューバッファ６０１からメモリ要求の到着データを取得するように構成され得る。それらの線に沿って、バッファ６０１に最長時間保存されており、そのときの現在の最低移動平均を有するメモリバンクに関連付けられたメモリアドレスを有するメモリ要求Ｒに優先権が提供され得る。選出要求Ｒ信号６２１は、そのときの最低移動平均を有する図１のメモリバンク１０４のうちの１つのメモリバンクに対してキューに入れられたメモリ要求のメモリ要求キューバッファ６０１からメモリ要求を発行するために使用され得る。
【００９１】
選出要求Ｒ信号６２１は、随意に要求有効チェック回路６０６に提供され得る。各メモリ要求３０５には、要求有効制御信号（図示せず）が提供され得る。要求有効チェック回路６０６は、そのような要求有効制御情報を取得して選出要求Ｒ信号６２１を有効にするために、メモリ要求キューバッファ６０１に結合され得る。有効な選出要求Ｒ信号６２１の場合、要求有効チェック回路６０６は、前述のように、レジスタ４１１−Ｒおよびカウンタ４１２−Ｒを更新するために選出要求Ｒ信号４２１を発行することができる。有効な選出要求Ｒ信号４２１は、バッファ６０１に、かかる信号に関連付けられたメモリ要求Ｒに対するメモリへの要求４２２を発行させるために、バッファ６０１に提供され得る。
【００９２】
メモリの読出しやメモリへの書込みなど、メモリへの完了した要求４２２に対して、メモリからの応答４２４は、メモリ応答キューバッファ６３０によって受信され得る。したがって、図１のメモリコントローラ１０３およびスイッチのネットワーク１０２を介したメモリバンク１０４からなど、メモリからの応答４２４は、メモリ応答キューバッファ６３０内でバッファリングされ得る。
【００９３】
メモリからの応答４２４は、対応する応答時間および応答有効制御情報を含む。メモリ要求Ｒに対するメモリからの応答４２４に関する応答有効制御情報は、検証のためにバッファ６３０から応答有効チェック回路６３１に提供され得る。無効な応答の場合、応答有効チェック回路６３１は、バッファ６３０からそのようなエントリを削除するために使用され得る。
【００９４】
メモリからの受信済み応答４２４から、対応する応答時間４２３が有効なエントリから取得され得る。それらの線に沿って、前述のように、応答時間Ｒ信号４２３は、バッファ６３０からそのような応答時間を提供するために使用され得る。
【００９５】
バッファ６３０は、エントリＲ削除信号６３２をバッファ６０１に提供してバッファ６０１内の保留中のメモリ要求を、完了しておりかつ有効であるものとして削除するために使用され得る。それらの線に沿って、完了したメモリ要求Ｒについて、バッファ６３０は、カウンタ４０１内のレジスタ４１１−Ｒに更新カウンタ信号４２５をアサートするように構成され得る。
【００９６】
メモリ要求と応答との間の関連性は、このような関連性が実装依存であるため、アプリケーションごとに異なる場合がある。上記の例では、メモリ要求Ｒに関連付けられたメモリバンクを識別するとともに、識別されたかかるメモリバンクをかかるメモリ要求Ｒの完了に対する対応する応答時間に関連付けるためにページメモリアドレスが使用される。
【００９７】
一例では、新たに開放されたメモリバンクを含む現在開いているメモリバンクだけがページメモリアクセスで追跡され得る。メモリアドレスの例が追跡および関連付けに使用された場合でも、一意の識別子が各要求に使用されてもよく、応答または応答が要求のそのような一意の識別子とともに戻ってくると、関連性が形成され得る。メモリ要求と応答との間の関連性を形成する他の多くの既知の例がある。
【００９８】
図７は、別の例示的な要求スケジューラ７００を示すブロック図である。要求スケジューラ７００は要求スケジューラ４０４の別の例である。実際上、要求スケジューラ７００は要求スケジューラ６００であるが、枯渇カウンタおよびバッファ回路７０１を備える。したがって、限定するものではなく明瞭にするために同じ説明は繰り返さない。
【００９９】
比較器回路６０５から出力された選出要求Ｒ信号６２１は、枯渇カウンタおよびバッファ回路７０１に提供され得る。枯渇カウンタおよびバッファ回路７０１は、メモリ要求３０５を受信するために結合され得る。枯渇カウンタおよびバッファ回路７０１は、バッファ６０１からメモリ要求データを受信するように結合されたバッファ７１７で構成され得る。
【０１００】
枯渇カウンタおよびバッファ回路７０１のカウンタ７１８は、メモリ要求の各インスタンスがキューに入れられ、キューに入れられたかかるメモリ要求のそれぞれについて発行のために選択されず、非選択のキューに入れられた各メモリ要求のための対応する枯渇カウントを提供するために発行されないことをカウントするように構成され得る。枯渇カウントは、バッファ７１７内の非選択のメモリ要求のために保存され得る。
【０１０１】
枯渇カウンタおよびバッファ回路７０１は、プリセット閾値７０２を受信するために結合され得る。枯渇カウンタおよびバッファ回路７０１は、バッファ７１７でキューに入れられかつ枯渇閾値７０２を超える関連枯渇カウントの対応する枯渇カウントに応答して発行のために以前に選択されなかったメモリ要求の各メモリ要求を発行するように構成され得る。
【０１０２】
枯渇カウンタおよびバッファ回路７０１は、枯渇閾値７０２を超える枯渇カウントがない場合に選出要求Ｒ信号６２１が選出要求Ｒ信号７２１として通過できるように構成され得る。言い換えれば、枯渇閾値７０２以下のすべての枯渇カウントについて、最小の平均サービス時間または応答時間を有するメモリ要求が選択され得る。そうではなく、枯渇閾値７０２を超える枯渇カウントがある場合、そのような枯渇閾値７０２を超えるあらゆる枯渇カウントについて、枯渇カウンタおよびバッファ回路７０１は、一連の選出要求Ｒ信号７２１に対してそのような過剰な枯渇カウントを有するかかるメモリ要求Ｒのそれぞれすべてを選択するように構成され得る。メモリ要求の対応する枯渇カウントに応答して発行された各メモリ要求について、したがって、カウンタ７１８のそのような枯渇カウンタはゼロにリセットされる。
【０１０３】
メモリ要求キューバッファ６０１は、前述のように完了したメモリ要求などについて、バッファ７１７からメモリ要求を削除または消去するために使用され得る。選出要求Ｒ信号７２１はその後、図６を参照して説明したように、選出要求Ｒ信号６２１について説明したように処理され得る。
【０１０４】
上記の説明を念頭において、優先順位処理に枯渇カウントを提供するためにメモリ要求を選出または選択することは適応的であることを理解されたい。それらの線に沿って、要求不足のためにまたは他の理由でメモリのページが閉じられると、閉じられた各ページへのメモリ要求のための移動平均サービス時間が増加する。選択は、ページが閉じられていてアクティブなメモリ要求がほとんどないメモリ要求よりも優先度が低いアクティブなメモリ要求を有するオープンページを優先する。
【０１０５】
前述した図１のＮｏＣ１００の階層は、ネットワークコントローラ１０１からプッシュダウンされ得る。それらの線に沿って、１つまたは複数のアービタがスイッチのネットワーク１０２に含められ得る。
【０１０６】
図８は、例示的なＮｏＣ８００を示すブロック図である。図８のＮｏＣ  ８００は、図１のＮｏＣ  １００と同じ構成要素をいくつか有しているので、一般に、限定するものではなく明瞭にするために違いのみを説明する。
【０１０７】
ネットワークコントローラ１０１は、例えば図４のネットワークコントローラ４００などを参照して前述の通り説明され得る。あるいは、従来のネットワークコントローラがマスターネットワーキングユニットとして使用されてもよい。限定するものではなく例として明瞭にするために、ネットワークコントローラ１０１は図４のネットワークコントローラ４００であるものとする。
【０１０８】
メモリ要求３０５はネットワークコントローラ１０１に提供されてもよく、ネットワークコントローラ１０１は、前述のように、移動平均時間に少なくとも部分的に応答して選択されたメモリへの要求４２２を発行することができる。メモリからの応答４２４は、メモリへのかかる発行済み要求４２２に応答してネットワークコントローラ１０１に提供され得る。
【０１０９】
かかる情報３０５、４２２、および４２４は、スイッチのネットワーク１０２のアドレスコンテキストスイッチ８１１を通過することができる。アドレスコンテキストスイッチ８１１とは、一般に、スイッチのネットワーク１０２を通って特定のメモリコントローラに、さらに特定の１つのメモリバンクまたは特定の複数のメモリバンクに至る経路がメモリアドレスに基づいていることを意味する。スイッチのネットワーク１０２を通ってルート付けされる他のトラフィックはメモリアドレスに基づいていなくてもよいが、メモリコントローラからのアップストリームトラフィックの誘導は既知であり、したがって明瞭にするために本明細書には記載されていない。
【０１１０】
整数Ａ個のスイッチ回路（「スイッチ」）８１３−１〜８１３−Ａ（Ａは１より大きい正の整数）が、信号バス８１２を介してアドレスコンテキストスイッチ８１１に結合され得る。スイッチ８１３−１〜８１３−Ａはそれぞれ、アービタ８０１およびアドレスコンテキストスイッチ８１１を含むことができる。
【０１１１】
各アービタ８０１は、ネットワークコントローラ１０１と同じように構成され得る。しかし、各アービタ８０１は、メモリコントローラ１０３のサブセット８０３にアクセスするためのものであり得る。メモリコントローラ１０３の各サブセット８０３は、メモリバンク１０４のサブセット８０４にアクセスするためのものであり得る。サブセット８０３は、信号バス８２４を介して対応するサブセット８０４に結合され得る。
【０１１２】
スイッチ８１３−１〜８１３−Ａはそれぞれ、互いに結合されたアービタ８０１およびアドレスコンテキストスイッチ８１１を含むことができる。スイッチ８１３−１〜８１３−Ａのそれぞれのかかるアドレスコンテキストスイッチ８１１は、メモリコントローラ１０３の対応するサブセット８０３、したがってメモリバンク１０４のサブセット８０４のためのものであり得る。スイッチ８１３のアドレスコンテキストスイッチ８１１は、対応する信号バス８２３を介してメモリコントローラ１０３の関連するサブセット８０３に結合され得る。
【０１１３】
ネットワークコントローラ１０１の上記の線に沿って、アービタ８０１は、ネットワークコントローラから発行されたメモリ要求のサブセットを受信し、受信されたかかるメモリ要求のサブセットをキューに入れ、そしてアービタ８０１でキューに入れられたかかるメモリ要求によってアドレス指定されたメモリバンク１０４の関連するサブセット８０４の対応する応答時間に応答してキューに入れられたかかるメモリ要求のサブセットからメモリ要求を発行するように構成され得る。
【０１１４】
スイッチのネットワーク１０２のスイッチの少なくとも１つのサブセットがアービタ８０１として構成され得る。そのようなアービタ８０１は、メモリバンク１０４のサブセット８０４に対するメモリ要求をキューに入れ発行するように構成され得る。各アービタ８０１は、ネットワークコントローラ１０１について前述したように、かかるアービタ８０１から発行されたメモリ要求のそれぞれが対応する応答時間を取得するために選出時間と対応する応答時間との差を決定するように構成され得る。アービタ８０１はそれぞれ、アービタ８０１内のキューに入れられたメモリ要求のアドレスを対応する応答時間に関連付けるように構成され得る。したがって、ネットワークコントローラ１０１の上述の機能はそれぞれ、メモリアドレス可能範囲のサブセットについてであるが、アービタ８０１によって実行され得る。したがって、アービタ８０１はそれぞれ、例えば要求スケジューラ６００または７００を有するネットワークコントローラ４００などのネットワークコントローラ１０１のように構成され得る。
【０１１５】
本明細書に記載されている１つまたは複数の例はＦＰＧＡに実装され得るため、そのようなＩＣの詳細な説明が提供される。しかしながら、他のタイプのＩＣは、本明細書に記載されている技術から利益を得る可能性があることを理解されたい。
【０１１６】
プログラマブル論理デバイス（「ＰＬＤ」）は、指定された論理機能を実行するようにプログラミングされ得る、よく知られたタイプの集積回路である。ＰＬＤの一タイプであるフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）は通常、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、例えば、入力／出力ブロック（「ＩＯＢ」）、構成可能論理ブロック（「ＣＬＢ」）、専用ランダムアクセスメモリブロック（「ＢＲＡＭ」）、乗算器、デジタル信号処理ブロック（「ＤＳＰ」）、プロセッサ、クロックマネージャ、遅延ロックループ（「ＤＬＬ」）などを含むことができる。本明細書では、「含む（ｉｎｃｌｕｄｅ）」および「含む（ｉｎｃｌｕｄｉｎｇ）」は、限定することなく含むことを意味する。
【０１１７】
各プログラマブルタイルは通常、プログラマブル相互接続とプログラマブル論理の両方を含む。プログラマブル相互接続は通常、プログラマブル相互接続点（「ＰＩＰ」）によって相互接続された様々な長さの多数の相互接続線を含む。プログラマブル論理は、例えば関数発生器、レジスタ、算術論理などを含むことができるプログラマブル要素を使用して、ユーザ設計の論理を実装する。
【０１１８】
プログラマブル相互接続およびプログラマブル論理は、通常、プログラマブル要素が構成される方法を定義する内部構成メモリセルにコンフィギュレーションデータのストリームをロードすることによってプログラミングされる。コンフィギュレーションデータは、外部デバイスによってメモリから（例えば、外部ＰＲＯＭから）読み出されるまたはＦＰＧＡに書き込まれることができる。次いで、個々のメモリセルの集合的な状態はＦＰＧＡの機能を決定する。
【０１１９】
別のタイプのＰＬＤは、統合プログラマブル論理デバイス（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、またはＣＰＬＤである。
【０１２０】
ＣＰＬＤは、相互接続スイッチマトリックスによって互いに接続されかつ入力／出力（「Ｉ／Ｏ」）リソースに接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各機能ブロックは、プログラマブル論理アレイ（「ＰＬＡ」）およびプログラマブルアレイ論理（「ＰＡＬ」）デバイスで使用されるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤでは、通常、コンフィギュレーションデータは不揮発性メモリにオンチップで保存される。いくつかのＣＰＬＤでは、コンフィギュレーションデータは不揮発性メモリにオンチップで保存され、次いで初期コンフィギュレーション（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【０１２１】
これらのプログラマブル論理デバイス（「ＰＬＤ」）のすべてについて、デバイスの機能性は、その目的のためにデバイスに提供されるデータビットによって制御される。データビットは、揮発性メモリ（例えば、ＦＰＧＡやいくつかのＣＰＬＤなどのスタティックメモリセル）、不揮発性メモリ（例えば、いくつかのＣＰＬＤなどのフラッシュメモリ）、またはその他の種類のメモリセルに保存され得る。
【０１２２】
他のＰＬＤは、デバイス上の様々な要素をプログラム可能に相互接続する、金属層などの処理層を適用することによってプログラミングされる。これらのＰＬＤはマスクプログラマブルデバイスとして知られる。ＰＬＤは、他の方法、例えばヒューズまたはアンチヒューズ技術を使用して実装されることもできる。「ＰＬＤ」および「プログラマブル論理デバイス」という用語は、これらの例示的なデバイス、ならびに部分的にのみプログラム可能な包括的なデバイスを含むが、これらに限定されるものではない。例えば、ＰＬＤの１つのタイプは、ハードコードされたトランジスタ論理とハードコードされたトランジスタ論理をプログラム可能に相互接続するプログラマブルスイッチファブリックとを組み合わせたものを含む。
【０１２３】
上述したように、高度なＦＰＧＡは、アレイに複数の異なるタイプのプログラマブル論理ブロックを含めることができる。例えば、図９は、マルチギガビットトランシーバ（「ＭＧＴ」）９０１と、構成可能論理ブロック（「ＣＬＢ」）９０２と、ランダムアクセスメモリブロック（「ＢＲＡＭ」）９０３と、入力／出力ブロック（「ＩＯＢ」）９０４と、構成およびクロッキング論理（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）９０５と、デジタル信号処理ブロック（「ＤＳＰ」）９０６と、特殊入力／出力ブロック（「Ｉ／Ｏ」）９０７（例えば、構成ポートおよびクロックポート）と、デジタルクロックマネージャ、アナログデジタルコンバータ、システムモニタリング論理などの他のプログラマブル論理９０８と、を含む多数の様々なプログラマブルタイルを含むＦＰＧＡアーキテクチャ９００を示す。いくつかのＦＰＧＡは、専用プロセッサブロック（「ＰＲＯＣ」）９１０も含む。
【０１２４】
いくつかのＦＰＧＡでは、各プログラマブルタイルは、各隣接タイル内の対応する相互接続要素へ行き来する標準化された接続を有するプログラマブル相互接続要素（「ＩＮＴ」）９１１を含む。したがって、統合されたプログラマブル相互接続要素は、図示のＦＰＧＡのためのプログラマブル相互接続構造を実装する。
【０１２５】
プログラマブル相互接続要素９１１は、図９の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素へ行き来する接続も含む。
【０１２６】
例えば、ＣＬＢ９０２は、ユーザ論理に加えて単一のプログラマブル相互接続要素（「ＩＮＴ」）９１１を実装するようにプログラミングされ得る構成可能論理要素（「ＣＬＥ」）９１２を含むことができる。ＢＲＡＭ９０３は、１つまたは複数のプログラマブル相互接続要素に加えてＢＲＡＭ論理要素（「ＢＲＬ」）９１３を含むことができる。一般に、タイルに含められる相互接続要素の数はタイルの高さに依存する。図示の実施形態では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有しているが、他の数（例えば４）も使用され得る。ＤＳＰタイル９０６は、適切な数のプログラマブル相互接続要素に加えてＤＳＰ論理要素（「ＤＳＰＬ」）９１４を含むことができる。ＩＯＢ９０４は、例えば、プログラマブル相互接続要素９１１の１つのインスタンスに加えて入力／出力論理要素（「ＩＯＬ」）９１５の２つのインスタンスを含むことができる。当業者には明らかになるように、例えばＩ／Ｏ論理要素９１５に接続される実際のＩ／Ｏパッドは一般に、入力／出力論理要素９１５の領域に限定されない。
【０１２７】
図示の実施形態では、ダイの中心付近の水平領域（図９に示されている）は、構成、クロック、および他の制御論理のために使用される。この水平領域または列から延びる垂直列９０９は、クロックおよび構成信号をＦＰＧＡの幅にわたって分散させるために使用される。
【０１２８】
図９に示されているアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を占める通常の柱状構造を分断する追加の論理ブロックを含む。
【０１２９】
追加の論理ブロックは、プログラマブルブロックおよび／または専用論理とすることができる。例えば、プロセッサブロック９１０は、ＣＬＢおよびＢＲＡＭのいくつかの列にまたがっている。
【０１３０】
図９は例示的なＦＰＧＡアーキテクチャのみを例示するものであることに留意されたい。例えば、行内の論理ブロックの数、行の相対幅、行の数および順序、行に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および図９の上部に含まれる相互接続／論理実装は純粋に例示的なものである。例えば、実際のＦＰＧＡでは、複数の隣接するＣＬＢ行が、ユーザ論理の効率的な実装を容易にするために、ＣＬＢが出現する場所ならどこにも含められるが、隣接するＣＬＢ行の数は、ＦＰＧＡの全体的なサイズによって異なる。
【０１３１】
図１０は、例示的なメモリ要求スケジューリングフロー１０００を示す流れ図である。メモリ要求スケジューリングフロー１０００は、集積回路デバイスに使用され得る。メモリ要求スケジューリングフロー１０００について、図１〜図４、図６〜図８および図１０を同時参照してさらに説明する。
【０１３２】
動作１００１で、メモリ要求３０５が、１つまたは複数のデータ処理デバイス１０５、３００から生成され得る。動作１００２で、かかるメモリ要求３０５は、ネットワークコントローラ１０１、４００でキューに入れられ得る。
【０１３３】
動作１００３で、メモリ要求３０５は、キューに入れられたかかるメモリ要求３０５によってアドレス指定された複数のメモリバンク１０４の対応する応答時間４１７に応答して発行され得る。往復正味時間または対応する応答時間４１７は対応するメモリ要求に関連付けられてもよく、かかる対応する応答時間４１７の長さは、どのメモリページが開いているまたはアクティブであるか（すなわち応答時間が短い）を、また、どのメモリページが閉じられているまたは非アクティブであるか（すなわち応答時間が長い）を効果的に識別するために使用されてもよい。動作１００４で、メモリ要求３０５は、かかるスイッチのネットワーク１０２およびかかる複数のメモリバンク１０４に結合された複数のメモリコントローラ１０３、２００による受信のために、スイッチのネットワーク１０２に通過し得る。
【０１３４】
１００３でキューに入れられたメモリ要求３０５のメモリ要求を発行する場合、動作１００５で、キューに入れられたメモリ要求３０５のそれぞれを発行することと完了することとの時間差が決定されて、対応する応答時間４１７を取得することができる。動作１００６で、キューに入れられたメモリ要求３０５は、対応する応答時間４１７に関連付けられ得る。
【０１３５】
１００３でキューに入れられたメモリ要求３０５のメモリ要求を発行する場合、動作１００７で、発行されたメモリ要求３０５に関連付けられたメモリバンク１０４のそれぞれの対応する応答時間４１７に対して移動平均６１７が生成され得る。動作１００８で、移動平均６１７の最低移動平均が決定され得る。動作１００９で、キューに入れられたメモリ要求３０５のうちの１つのメモリ要求が、かかる最低移動平均を有する複数のメモリバンク１０４のうちの１つのメモリバンクに対して発行され得る。それらの線に沿って、対応する応答時間４１７は、キューに入れられたメモリ要求３０５を発行するために最短から最長に効果的にランク付けされるまたはキューに入れられることができ、キューに入れられたメモリ要求３０５は、かかるメモリ要求３０５がキューに入れられるときに関して順不同で発行され得る。キューに入れられたメモリ要求３０５は順不同の順序で発行され得る、ただし、そのような発行の順序は、対応する応答時間４１７の最短から最長までであり、かかる順不同実行の長い時間の前に短い時間で発行される。
【０１３６】
前述は例示的な装置および／または方法について説明しているが、本明細書に記載されている１つまたは複数の態様による他のさらなる例は、以下の特許請求の範囲とその同等物によって決定される、本発明の範囲から逸脱することなく考案され得る。ステップを列挙したクレームは、ステップの順序を意味するものではない。商標は、商標のそれぞれの所有者の財産である。
【図１】
2020520019.tif 000003
【図２】
2020520019.tif 000004
【図３】
2020520019.tif 000005
【図４】
2020520019.tif 000006
【図５】
2020520019.tif 000007
【図６】
2020520019.tif 000008
【図７】
2020520019.tif 000009
【図８】
2020520019.tif 000010
【図９】
2020520019.tif 000011
【図１０】
2020520019.tif 000012
【手続補正書】
【提出日】令和1年5月31日(2019.5.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路デバイスのための装置であって、
複数のメモリバンクに結合された複数のメモリコントローラと、
前記複数のメモリコントローラに結合されたスイッチのネットワークと、
前記スイッチのネットワークに結合された、メモリ要求を生成するように構成された複数のデータ処理デバイスと、
前記スイッチのネットワークに結合されたネットワークコントローラと、
アービタとして構成された前記スイッチのネットワークのスイッチであって、前記アービタが、前記メモリ要求をキューに入れられ、キューに入れられた前記メモリ要求を、前記メモリ要求によってアドレス指定された前記複数のメモリバンクに関連付けられた前記対応する応答時間に関連付け、前記複数のメモリバンクの前記対応する応答時間に応答して前記アービタでキューに入れられた前記メモリ要求から要求を選択的に発行し、前記複数のメモリコントローラによる受信のために前記メモリ要求を前記スイッチのネットワークに通過させるように構成される、スイッチと
を備える、装置。
【請求項２】
前記アービタのそれぞれが、対応する応答時間を取得するために前記アービタから発行された前記メモリ要求のそれぞれについて選出時間と前記対応する応答時間との差を決定するように構成される、
請求項１に記載の装置。
【請求項３】
前記アービタのそれぞれが、
発行された前記メモリ要求に対応する選出時間を保存するように構成された選出時間カウンタ回路と、
保存された前記選出時間のそれぞれについて要求カウントを保存するように構成された選出要求総数カウンタ回路と、
発行され完了した前記メモリ要求の受信完了時間からそれぞれ前記選出時間を減算することにより、前記対応する応答時間を生成するように構成された総応答時間カウンタ回路と、
前記対応する応答時間を受信するように結合された要求スケジューラ回路であって、
発行された前記メモリ要求の前記アービタにそれぞれ関連付けられた前記複数のメモリバンクのそれぞれについて、前記対応する応答時間の移動平均を生成し、
前記移動平均のうちの最低移動平均を決定し、
前記最低移動平均を有する前記複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられた前記メモリ要求のうちの１つのメモリ要求を発行する
ように構成された要求スケジューラ回路と
で構成される、請求項２に記載の装置。
【請求項４】
前記メモリ要求が、前記対応する応答時間の最短から最長に応答して順不同で実行するためのメモリ書込みコマンドまたはメモリ読出しコマンドの少なくとも一方を含む、請求項３に記載の装置。
【請求項５】
前記アービタのそれぞれが、対応する枯渇カウントを提供するために、前記アービタでそれぞれキューに入れられた前記メモリ要求のそれぞれについて発行のために選択されていない各インスタンスをカウントするように構成され、
前記アービタのそれぞれが、カウント閾値を超える前記枯渇カウントのうちの１つの枯渇カウントを有するキューに入れられた前記メモリ要求の各メモリ要求を発行するように構成される、
請求項２に記載の装置。
【請求項６】
前記スイッチのネットワークが、プログラマブル論理ファブリックのプログラマブル相互接続回路を含む、請求項２に記載の装置。
【請求項７】
集積回路デバイスのための方法であって、
複数のデータ処理デバイスからメモリ要求を生成することと、
アービタとして構成されたスイッチのネットワークのスイッチで前記メモリ要求をキューに入れることであって、前記スイッチのネットワークがネットワークコントローラに結合されることと、
前記アービタにおいて、キューに入れられた前記メモリ要求を、キューに入れられた前記メモリ要求によってアドレス指定された前記複数のメモリバンクに関連付けられた前記対応する応答時間に関連付けることと、
前記アービタにより、キューに入れられた前記メモリ要求によってアドレス指定された前記複数のメモリバンクの前記対応する応答時間に応答して前記メモリ要求を選択的に発行することと、
前記スイッチのネットワークに結合された複数のメモリコントローラによる受信のために、前記メモリ要求を前記スイッチのネットワークに通過させることと
を含む、方法。
【請求項８】
前記メモリ要求を発行することが、
キューに入れられた前記メモリ要求のそれぞれを発行することと完了することとの間の時間差を決定して前記対応する応答時間を取得すること
を含む、請求項７に記載の方法。
【請求項９】
前記メモリ要求を前記発行することが、
発行された前記メモリ要求に関連付けられた前記複数のメモリバンクのそれぞれについて前記対応する応答時間の移動平均を生成することと、
前記移動平均のうちの最低移動平均を決定することと、
前記最低移動平均を有する前記複数のメモリバンクのうちの１つのメモリバンクのためにキューに入れられた前記メモリ要求のうちの１つのメモリ要求を発行することと
を含む、請求項８に記載の方法。
【国際調査報告】
2020520019.tif 000013
2020520019.tif 000014
2020520019.tif 000015