(57)【特許請求の範囲】
【請求項１】
キャッシュに記憶されたデータブロックを送るためのシステムにおいて、
第１のタイルの第１のプロセッサであって、データブロックの要求を発生させ、前記要求がデータブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルが第１のタイルと異なる、第１のプロセッサと、
第１のタイルから要求を受ける第２のタイルであって、データブロックを含むデータタイルを決定するとともに、第１のタイルから受ける要求をデータタイルへ送る第２のタイルと、
を備え、
データタイルは、第２のタイルから要求を受けるとともに、宛先識別子によって識別される宛先タイルへデータブロックを送るものである、システム。
【請求項２】
第１のタイルがテーブルを更に含み、テーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項１に記載のシステム。
【請求項３】
第１のプロセッサは、データブロックにアクセスするための第２の要求を発生させ、
第１のプロセッサは、宛先タイルがテーブルでインデックス付けされているかどうかを決定するためにテーブルを検索するものであり、
宛先タイルがテーブルでインデックス付けされていると決定されると、第１のプロセッサは、第２の要求を第１のタイルから宛先タイルへ送り、
宛先タイルがテーブルに存在しないと決定されると、第１のプロセッサは、第２の要求を第１のタイルから第２のタイルへ送るものである、請求項２に記載のシステム。
【請求項４】
第２のタイルがデータブロックのためのディレクトリを含む、請求項１に記載のシステム。
【請求項５】
第２のタイルは、データブロックが宛先タイルに記憶されることを示すために第２のタイルのディレクトリを更新するものである、請求項４に記載のシステム。
【請求項６】
第２のタイルは、ディレクトリと異なる第２のタイルのロケーションヒントテーブルを更新し、ロケーションヒントテーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項５に記載のシステム。
【請求項７】
第１のプロセッサは、データブロックにアクセスするための第２の要求を発生させ、
第１のプロセッサは、第１のタイルからの第２の要求を第２のタイルへ送るものであり、
第２のタイルは、宛先タイルがロケーションヒントテーブルでインデックス付けされているかどうかを決定するために第２のタイルのロケーションヒントテーブルを検索し、
宛先タイルがロケーションヒントテーブルでインデックス付けされていると決定されると、第２のタイルは、ロケーションヒントを第２のタイルから第１のタイルへ送るものであり、
第２のタイルは、ディレクトリを検索して、第２の要求を宛先タイルへ送るものである、請求項６に記載のシステム。
【請求項８】
第２のタイルは、宛先タイルがロケーションヒントテーブルでインデックス付けされているかどうかを決定するためにロケーションヒントテーブルを検索し、
宛先タイルがロケーションヒントテーブルでインデックス付けされていると決定されると、第２のタイルは、第２の要求をディレクトリタイルからの宛先タイルへ送り、
宛先タイルがロケーションヒントテーブルに存在しないと決定されると、第２のタイルは、ディレクトリを検索して第２の要求を第２のタイルから宛先タイルへ送るものである、請求項３または請求項６に記載のシステム。
【請求項９】
宛先タイルは、要求しているタイルから１ネットワークホップまたは２ネットワークホップ隔てて配置される、請求項１に記載のシステム。
【請求項１０】
データタイルに記憶されるデータブロックが第１の優先レベルを有し、
第１のタイルに記憶されるデータブロックが第２の優先レベルを有し、
第１および第２の優先レベルが異なる、請求項１に記載のシステム。
【請求項１１】
第１のタイルが第１のダイにあり、
宛先タイルが第２のダイにあり、
第１および第２のダイが異なる、請求項１に記載のシステム。
【請求項１２】
第２のタイルが第１のダイにある、請求項１１に記載のシステム。
【請求項１３】
テーブルは、複数の関連するデータブロックが宛先タイルに記憶されることを示すものである、請求項２に記載のシステム。
【請求項１４】
第１のプロセッサは、データを閾値を超えて宛先タイルに記憶することが抑制される、請求項１に記載のシステム。
【請求項１５】
キャッシュに記憶されたデータブロックを送るための方法において、
第１のタイルの第１のプロセッサによってデータブロックの要求を発生させるステップであって、要求がデータブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルが第１のタイルと異なるステップと、
第２のタイルによって第１のタイルから要求を受けるステップと、
データブロックを含むデータタイルを第２のタイルの第２のプロセッサによって決定するステップと、
第１のタイルから受けられる要求を第２のプロセッサによってデータタイルへ送るステップと、
データタイルによって第２のタイルから要求を受けるステップと、
データブロックを、データタイルの第３のプロセッサによって、宛先識別子により識別される宛先タイルへ送るステップと、
を備える、方法。
【請求項１６】
データブロックが宛先タイルに記憶されることを示すために第１のタイルのテーブルを更新するステップを更に備える、請求項１５に記載の方法。
【請求項１７】
データブロックにアクセスするための第２の要求を第１のプロセッサにより発生させるステップと、
宛先タイルがテーブルでインデックス付けされているかどうかを決定するために第１のプロセッサによってテーブルを検索するステップと、
宛先タイルがテーブルでインデックス付けされていると決定されると、第１のプロセッサによって第２の要求を第１のタイルから宛先タイルへ送るステップと、
宛先タイルがテーブルに存在しないと決定されると、第１のプロセッサによって第２の要求を第１のタイルから第２のタイルへ送るステップと、
を更に備える、請求項１６に記載の方法。
【請求項１８】
データブロックが宛先タイルに記憶されることを示すために第２のタイルのディレクトリを第２のプロセッサによって更新するステップを更に備える、請求項１７に記載の方法。
【請求項１９】
第２のプロセッサがディレクトリとは異なる第２のタイルのロケーションヒントテーブルを更新することを更に備え、ロケーションヒントテーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項１８に記載の方法。
【請求項２０】
宛先タイルがロケーションヒントテーブルでインデックス付けされているかどうかを決定するために第２のプロセッサによってロケーションヒントテーブルを検索するステップと、
宛先タイルがロケーションヒントテーブルでインデックス付けされていると決定されると、第２のプロセッサによってロケーションヒントを第２のタイルから第１のタイルへ送るステップと、
第２のプロセッサによってディレクトリを検索して、第２のプロセッサによって第２の要求を第２のタイルから宛先タイルへ送るステップと、
を更に備える、請求項１９に記載の方法。
【請求項２１】
コンピュータによる実行に応じて、
第１のタイルの第１のプロセッサによってデータブロックの要求を発生させるステップであって、要求がデータブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルが第１のタイルと異なるステップと、
第１のタイルが要求を第２のタイルへ送るステップと、
データブロックを含むデータタイルを第２のタイルの第２のプロセッサによって決定するステップと、
第１のタイルから送られる要求を第２のプロセッサによってデータタイルへ送るステップと、
データブロックを、データタイルの第３のプロセッサによって、前記第２のプロセッサによって送られた要求に含まれる宛先識別子により識別される宛先タイルへ送るステップと、
を備える方法を行なうようにコンピュータを適合させる、コンピュータ実行可能命令が記憶されたコンピュータ記憶媒体。
【請求項２２】
データブロックが宛先タイルに記憶されることを示すために第１のタイルのテーブルを更新するステップを更に備える、請求項２１に記載のコンピュータ記憶媒体。
【請求項２３】
データブロックにアクセスするための第２の要求を第１のプロセッサにより発生させるステップと、
宛先タイルがテーブルでインデックス付けされているかどうかを決定するために第１のプロセッサによってテーブルを検索するステップと、
宛先タイルがテーブルでインデックス付けされていると決定されると、第１のプロセッサによって第２の要求を第１のタイルから宛先タイルへ送るステップと、
宛先タイルがテーブルに存在しないと決定されると、第１のプロセッサによって第２の要求を第１のタイルから第２のタイルへ送るステップと、
を更に備える、請求項２２に記載のコンピュータ記憶媒体。
【請求項２４】
プロセッサであって、該プロセッサがデータブロックの第１の要求を発生させ、第１の要求がデータブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルがプロセッサを含むタイルと異なる、プロセッサを備え、
プロセッサは、該プロセッサを含むタイルから第１の要求を第２のタイルへ送り、
データブロックが宛先タイルに記憶されることを示すテーブルを備え、
プロセッサは、データブロックにアクセスするための第２の要求を発生させるものであり、
プロセッサは、宛先タイルがテーブルでインデックス付けされているかどうかを決定するためにテーブルを検索し、
宛先タイルがテーブルでインデックス付けされていると決定されると、プロセッサは、該プロセッサを含むタイルから第２の要求を宛先タイルへ送り、
宛先タイルがテーブルに存在しないと決定されると、プロセッサは、該プロセッサを含むタイルから第２の要求を第２のタイルへ送るものである、
マルチプロセッサアーキテクチャのタイル。
【請求項２５】
宛先タイルがテーブルに存在しないと決定されると、プロセッサは、データブロックを宛先タイルから受けるものである、請求項２４に記載のタイル。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書中で特に別に示されていなければ、この節に記載される資料は、この出願の請求項に対して従来技術ではなく、この節に含めることによって従来技術であると認められない。
【０００２】
マルチコアプロセッサアーキテクチャでは、複数のプロセッサコアが単一の集積回路ダイ中に、あるいは単一のチップパッケージに配置される複数の集積回路ダイ上に含まれてよい。プロセッサコアのうちの１つ以上によるアクセスのためにデータを記憶するべくキャッシュが使用される場合がある。データは、一般にダイの外側に配置される大型メモリに記憶されるデータのサブセットとなり得る。各プロセッサには、プロセッサのためのデータを記憶するキャッシュが設けられてもよい。データの単一の断片が複数のキャッシュに記憶される場合があるため、キャッシュコヒーレンスプロトコルは、複数のキャッシュに記憶されるデータのトラックを維持するように構成される場合がある。キャッシュコヒーレンスプロトコルは、複数のデータ要求によって一貫して同じデータが戻されるようにするのに役立つべく構成される。
【発明の概要】
【課題を解決するための手段】
【０００３】
幾つかの実施例では、キャッシュに記憶されたデータブロックを送るためのシステムが一般に記載される。幾つかの実施例において、前記システムは、第１のタイルの第１のプロセッサと、第２のタイルと、データタイルとを含む。幾つかの実施例において、第１のプロセッサは、データブロックの要求を発生させるのに有効である。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルは第１のタイルと異なる。幾つかの実施例において、第２のタイルは、第１のタイルから要求を受けるのに有効である。幾つかの実施例において、第２のタイルは、データブロックを含むデータタイルを決定するのに有効である。幾つかの実施例において、第２のタイルは、第１のタイルから受けられる要求をデータタイルへ送るのに更に有効である。幾つかの実施例において、前記データタイルは、第２のタイルから要求を受けるのに有効である。幾つかの実施例において、前記データタイルは、宛先識別子によって識別される宛先タイルへデータブロックを送るのに更に有効である。
【０００４】
幾つかの実施例では、キャッシュに記憶されたデータブロックを送るための方法が一般に記載される。幾つかの実施例において、前記方法は、第１のタイルの第１のプロセッサによってデータブロックの要求を発生させるステップを含む。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルは第１のタイルと異なる。幾つかの実施例において、前記方法は、第２のタイルによって第１のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを含むデータタイルを第２のタイルの第２のプロセッサによって決定するステップを含む。幾つかの実施例において、前記方法は、第１のタイルから受けられる要求を第２のプロセッサによってデータタイルへ送るステップを含む。幾つかの実施例において、前記方法は、データタイルによって第２のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを、データタイルの第３のプロセッサによって、宛先識別子により識別される宛先タイルへ送るステップを含む。
【０００５】
幾つかの実施例では、コンピュータによって実行されるときに方法を行なうようにコンピュータを適合させるコンピュータ実行可能命令が記憶されたコンピュータ記憶媒体が一般に記載される。幾つかの実施例において、前記方法は、第１のタイルの第１のプロセッサによってデータブロックの要求を発生させるステップを含む。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含む。幾つかの実施例において、前記宛先タイルは第１のタイルと異なる。幾つかの実施例において、前記方法は、第２のタイルによって第１のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを含むデータタイルを第２のタイルの第２のプロセッサによって決定するステップを含む。幾つかの実施例において、前記方法は、第１のタイルから受けられる要求を第２のプロセッサによってデータタイルへ送るステップを含む。幾つかの実施例において、前記方法は、データタイルによって第２のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを、データタイルの第３のプロセッサによって、宛先識別子により識別される宛先タイルへ送るステップを含む。
【０００６】
幾つかの実施例では、マルチプロセッサアーキテクチャのタイルが一般に記載される。幾つかの実施例において、前記タイルはプロセッサとテーブルとを含む。幾つかの実施例において、前記プロセッサは、データブロックの第１の要求を発生させるのに有効である。幾つかの実施例において、前記第１の要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルはプロセッサを含むタイルと異なる。幾つかの実施例において、前記プロセッサは、該プロセッサを含むタイルから第１の要求を第２のタイルへ送るのに有効である。幾つかの実施例において、前記テーブルは、データブロックが宛先タイルに記憶されることを示すのに有効である。幾つかの実施例において、前記プロセッサは、データブロックにアクセスするための第２の要求を発生させるのに更に有効である。幾つかの実施例において、前記プロセッサは、宛先タイルがテーブルでインデックス付けされているかどうかを決定するためにテーブルを検索するのに有効である。幾つかの実施例では、宛先タイルがテーブルでインデックス付けされていると決定されると、前記プロセッサは、該プロセッサを含むタイルから第２の要求を宛先タイルへ送るのに有効である。幾つかの実施例では、宛先タイルがテーブルに存在しないと決定されると、前記プロセッサは、該プロセッサを含むタイルから第２の要求を第２のタイルへ送るのに有効である。
【０００７】
前述した概要は、単なる例示であり、決して限定しようとするものではない。前述した例示的な態様、実施形態、および、特徴に加えて、図面および以下の詳細な説明を参照することにより、更なる態様、実施形態、および、特徴が明らかになる。
【０００８】
この開示の前述の特徴および他の特徴は、添付図面と併せて解釈される以下の説明および添付の特許請求の範囲から更に十分に明らかになる。これらの図面が、本開示に係る単なる幾つかの実施形態を描いているにすぎず、したがって、本開示の範囲を限定すると見なされるべきでないことを理解しつつ、添付図面を用いることにより、本開示を更に具体的に詳しく説明する。
【図面の簡単な説明】
【０００９】
【図１】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
【図２】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
【図３】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
【図４】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
【図５】マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。
【図６】マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。
【図７】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのプロセス例における信号フロー図を描いている。
【図８】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのプロセス例における信号フロー図を描いている。
【図９】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのコンピュータプログラムプロダクトを示している。
【図１０】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためにコンピュータデバイス上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラムプロダクトの一例を示す概略図を示している。
【発明を実施するための形態】
【００１０】
以下の詳細な説明では、説明の一部を形成する添付図面を参照する。図中、同様の記号は、一般に、文脈が他の点を定めていなければ同様の構成要素を特定する。詳細な説明、図面、および、特許請求の範囲に記載される例示的な実施形態は、限定しようとするものではない。本明細書中で与えられる主題の思想または範囲から逸脱することなく、他の実施形態が利用されてもよく、また、他の変更がなされてもよい。容易に分かるように、本開示の態様は、本明細書中に一般に記載されるように、また、図面に示されるように、多種多様な異なる形態で配置でき、置き換えることができ、組み合わせることができ、分離でき、および、設計することができ、その全てが本明細書中で明示的に考慮される。
【００１１】
この開示は、一般に、とりわけマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうことに関連する方法、装置、システム、デバイス、および、コンピュータプログラムプロダクトに対して描かれている。簡単に述べられている技術は、一般に、キャッシュに記憶されるデータブロックを送るためのシステムとして記載される。本明細書中に記載される幾つかの実施例では、システムが第１のタイルに第１のプロセッサを備えてもよい。第１のプロセッサはデータブロックの要求を発生させるのに有効であり、前記要求はデータブロックのための宛先タイルを識別する宛先識別子を含み、宛先タイルは第１のタイルとは異なる。幾つかの実施例のシステムは、要求を受けるのに有効な第２のタイルを更に備えてもよく、第２のタイルはデータブロックを含むデータタイルを決定するのに有効であり、第２のタイルは要求をデータタイルへ送るのに更に有効である。幾つかの実施例のシステムは、第２のタイルから要求を受けるのに有効なデータタイルを更に備えてもよく、データタイルはデータブロックを宛先タイルへ送るのに有効である。
【００１２】
図１は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられる、マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの一実施例を示している。一実施例のシステム１００は複数のタイルを含むダイ１０２を含んでもよい。１つのタイル１１８が簡略化のために示されている。各タイル１１８は、キャッシュ１１０と、プロセッサまたはプロセッサコア（以下、「プロセッサ」と称する）１１２と、ディレクトリ１１４と、ニアロケーションヒントテーブル（ＮＬＨＴ）１１７とを含んでもよい。プロセッサ１１２は、コードを含むデータ（以下、データおよびコードをいずれも「データブロック」と称する）を処理するようになっていてもよい。キャッシュ１１０は、プロセッサ１１２に対してローカルなデータブロックを記憶するように構成されてもよい。
【００１３】
以下でより詳しく説明するように、他のタイルに記憶されるデータブロックへ書き込むあるいは該データブロックから読み取るなど、プロセッサ１１２がデータブロックにアクセスすることを要求するときには、プロセッサ１１２は、タイル１１８に近い隣接するあるいは近くのタイルのキャッシュにデータブロックが記憶されることを求める要求を開始してもよい。その後、タイル１１８のプロセッサ１１２が記憶されたデータブロックから読み取るあるいは該データブロックへ書き込むための他の要求を開始するときには、記憶されたデータブロックに対してより素早くアクセスできる。
【００１４】
ニアロケーションヒントテーブル１１７の一例は、それぞれがタイル１１８のプロセッサ１１２により使用されるデータを記憶している隣接する複数のタイルのキャッシュのインデックスを含んでもよい。プロセッサ１１２は、要求されるデータブロックが隣接するタイルのキャッシュに記憶されているかどうかを確かめるために、ニアロケーションヒントテーブル１１７を検索するように構成されてもよい。
【００１５】
ディレクトリ１１４は、ダイ１０２の全てのタイルに記憶されるそれぞれのデータブロックと関連付けられる場所を識別する（例えば、インデックスを付ける）ディレクトリであってもよい。ディレクトリ１１４は、ダイ１０２にある単一のタイルに配置されてもよく、または、多くのあるいは全てのタイル間で分配されてもよい。要求されるデータブロックがニアロケーションヒントテーブル１１７でインデックス付けされていない場合、プロセッサ１１２は、要求されるデータブロックに関して、他のタイル内にあってもよいディレクトリ１１４を検索してもよい。
【００１６】
図２は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの実施例を示している。図２は、システム１００にほぼ類似しており、更なる細部を伴う。図１の構成要素と全く同一にラベルが付されている図２の構成要素については、明確にするために再び説明はしない。
【００１７】
図２に示されるように、ダイ１０２は、それぞれのキャッシュ１１０、１５０−１６４を含むタイル１１８、１３０−１４４の行列（例えば、配列）を含んでもよい。各タイルは、それぞれのプロセッサ１１２、ディレクトリ１１４、ロケーションヒント構造１１６、および／または、ニアロケーションヒントテーブル１１７のうちの１つ以上を含んでもよい。簡略化のため、タイル１１８のコンテンツだけが示されている。ダイ１０２にある各タイルが一様な配置のようにほぼ同じであってもよく、あるいは、幾つかのタイルが異種の配置のように異なっていてもよい。データを複数のダイ間で共有できるようにダイ１０２が他のダイ１０３と通信して配置されてもよい。
【００１８】
ディレクトリ１１４は、タイル間で分配されてもよく、あるいは、１つのタイルに集約されてもよい。ディレクトリ１１４が分配される場合には、例えば、アドレスの第１の範囲（例えば、０ｘ００００−０ｘ１０００）が第１のタイルに記憶され、アドレスの第２の範囲（例えば、０ｘ１００１−０ｘ２０００）が第２のタイルに記憶されるなどしてもよい。したがって、図のディレクトリ１１４はダイディレクトリ全体の第１の部分を示してもよい。この場合、その第１の部分がタイル１１８に記憶されてもよく、また、更なる部分がタイル１３０、１３１、１３２などの他のタイルに記憶されてもよい。ニアロケーションヒントテーブル１１７、ロケーションヒント構造１１６、および、ディレクトリ１１４は、例えばプロセッサ１１２によってアクセスできるデータ構造であってもよく、あるいは、プロセッサ１１２内のレジスタであってもよい。
【００１９】
図３は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの一実施例を示している。前述した構成要素と全く同一にラベルが付されている図３の構成要素については、明確にするために再び説明はしない。
【００２０】
図３で与えられる実施例では、データがタイルのキャッシュ１１０、１５０−１６４に記憶されてもよく、あるいは、ダイ１０３にあるキャッシュに記憶されてもよい。要求しているタイル１１８のプロセッサ１１２は、データブロックＸから読み取るおよび／またはデータブロックＸへ書き込むなど、データブロックＸにアクセスすることを求めるように構成されてもよい。データブロックＸのためのディレクトリ１１４は他のディレクトリタイル１４３に記憶されてもよい。タイル１１８は、データブロックＸのためのディレクトリタイル１４３へ要求１８０を送るように構成されてもよい。要求１８０は、例えば隣接するタイル１３０、１３３、１３４のキャッシュ１５０、１５３または１５４などの隣接するあるいは近くのタイル等の宛先タイルの識別を含んでもよい宛先識別子を含むことができる。一例において、タイル１１８は、データブロックＸがタイル１３３のキャッシュ１５３へ送られることを要求してもよい。宛先識別子はキャッシュ１５３またはタイル１３３を参照してもよい。例えば、タイルは、タイルから１ネットワークホップ、２ネットワークホップ等の距離を隔てる隣接するキャッシュを示すトポロジーテーブルにアクセスしてもよい。タイルは、それぞれのタイルが追加のキャッシュ容量を必要とするかどうかを監視するようになっていてもよい構成要素を有してもよい。タイル１１８は、追加のキャッシュ容量が必要とされるときにデータブロックＸが隣接するキャッシュへ送られることを要求するようになっていてもよい。
【００２１】
幾つかの実施例において、ディレクトリタイル１４３は、要求１８０を受けるように構成されてもよく、ディレクトリタイル１４３のディレクトリ１１４を検索してもよく、また、データブロックＸが記憶される場所−例えばキャッシュ１５７を決定してもよい。タイル１４３は、その後に要求１８０をデータタイル１３７のキャッシュ１５７へ送るように構成されてもよい。タイル１３７は、データブロックＸを宛先タイル１３３のキャッシュ１５３へ送るように構成されてもよく、宛先タイル１３３のキャッシュ１５３からデータがタイル１１８の要求しているプロセッサ１１２へ転送されてもよい。タイル１３３へのデータブロックＸの送信（または、送り）は、例えば、データブロックＸの少なくとも一部をコピーすること、データブロックＸの少なくとも一部を移動させること、あるいは、経時的な移動またはコピーの何らかの組み合わせなどの多くの操作を含んでもよい。また、読み取り操作または書き込み操作は、バスを介した通信のためにアドレスおよび／またはデータが利用できるときにあるいは相互接続ネットワークを介してメッセージを送ることにより読み取りあるいは書き込み要求ラインをアサートするなど、データ通信のための更なる技術的要件を含んでもよい。この場合、読み取り／書き込み操作は同期してもよく（例えば、クロックベースで）あるいは同期しなくてもよい（例えば、読み取り／書き込み肯定応答ベースで）。
【００２２】
幾つかの実施例において、要求しているタイル１１８は、データブロックＹに関して類似する要求１８０ａを行なうように構成されてもよい。データブロックＹのためのディレクトリは、ディレクトリタイル１３２のキャッシュ１５２に記憶されてもよい。要求１８０ａは、隣接するキャッシュ１５０または１５４の宛先識別子を含んでもよい。タイル１３２は、要求１８０ａを受けて、タイル１３２のディレクトリ１１４を検索するとともに、データブロックＹが記憶されるデータタイル１３５へ要求１８０ａを送るように構成されてもよい。タイル１３５は、宛先タイル１３０、１３４のキャッシュ１５０、１５４のいずれかあるいは両方へデータブロックＹを送る１８４ように構成されてもよい。そこから、データは、タイル１１８の要求しているプロセッサ１１２へ転送されてもよい。
【００２３】
図４は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうことができるシステムのシステム図である。前述した構成要素と全く同一にラベルが付されている図４の構成要素については、明確にするために再び説明はしない。
【００２４】
図４に与えられる実施例において、タイル１１８は、データブロックＸがタイル１３３に記憶され且つデータブロックＹがタイル１３０、１３４に記憶されることを示すためにタイル１１８に記憶されるニアロケーションヒントテーブル１１７を更新するように構成されてもよい。ニアロケーションヒントテーブル１１７は、最初にディレクトリではなくタイル１３３のデータを検索することがおそらく有利であるというヒントをタイル１１８に与える。タイル１１８がデータブロックＸまたはデータブロックＹにアクセスするように要求されると、タイル１１８は、どのタイルが要求を送信すべきかを決定するために、ＸおよびＹに関する対応するディレクトリの代わりに、ニアロケーションヒントテーブル１１７を最初に検索するように構成されてもよい。これは、データブロックＸ、Ｙのキャッシュ格納場所を識別する情報へのより迅速なアクセスをもたらす場合がある。ニアロケーションヒントテーブル１１７がタイル１１８のローカルレジスタに記憶されるため、ニアロケーションヒントテーブル１１７に更に容易にアクセスできる。ニアロケーションヒントテーブル１１７が所望のデータブロックのためのエントリを含まない場合、または、タイル１１８がニアロケーションヒントテーブル１１７に示されるタイルで検索してデータブロックが見つけられない場合には、タイル１１８は、適用可能なディレクトリを有するタイルへ要求を送るように構成されてもよい。
【００２５】
ニアロケーションヒントテーブル１１７は、キャッシュブロックと同じあるいはキャッシュブロックとは異なる粒度を有するデータロケーションヒントをトラッキングしてもよい。ニアロケーションヒントテーブル１１７は、キャッシュブロック、一群の関連するキャッシュブロック、ページ、または、他の粒度の場所をトラッキングできる。テーブル１１７は、トラッキング粒度に基づいてデータアドレスによってインデックスが付けられ、データを記憶してもよい宛先タイルを指し示す。大きい粒度は、トラッキングするために使用されるテーブルサイズを減少させることができ、一方、小さい粒度は、異なる宛先タイルでデータの更に柔軟な配置を可能にする。コヒーレンス正確性がディレクトリ・キャッシュコヒーレンスプロトコルによって維持されてもよい。幾つかの実施例では、データがもはやインデックス付きの宛先タイルにないときなど、テーブル１１７のエントリが古い情報を有する場合には、性能が影響を受ける場合があるが、コヒーレンス正確性は影響されない場合がある。テーブルがオーバーフローする場合には、テーブルのエントリが交換されてもよい。キャッシュブロックよりも大きい粒度でデータの宛先としてテーブル１１７のエントリが隣接するタイルを指し示す場合には、データの幾つかのブロックが依然としてローカルキャッシュにあってもよいが、他のブロックは隣接する宛先タイルに配置されてもよい。ローカルキャッシュ内の特定のデータに属するブロックがエビクトされて、プロセッサが特定のデータのそのブロックを要求すると、ブロックが再びフェッチされてもよく、また、ブロックが宛先タイルに配置されてもよい。したがって、経時的に、特定のデータのブロックがローカルキャッシュから宛先タイルへ移動する。
【００２６】
タイル１４３は、Ｘがたった今タイル１３３に記憶されることを示すためにディレクトリ１１４およびロケーションヒント構造１１６を更新するように構成されてもよい。タイル１３２は、Ｙがたった今タイル１３０、１３４に記憶されることを示すためにディレクトリ１１４およびロケーションヒント構造１１６を更新するように構成されてもよい。ロケーションヒント構造１１６のエントリは、ブロックを読み取ることが求められるプロセッサに対してロケーションヒント情報を伝える。この情報に応じて、要求しているタイルのプロセッサは、データを局所的にキャッシュするように構成されてもよい。あるいは、宛先タイルが隣接している場合には、プロセッサは、宛先タイルのキャッシュ内へのデータの記憶を要求するように構成され得る。プロセッサは、ディレクトリについて問い合わせする前に、プロセッサが今後の要求に関してこの宛先タイルを検索するようにそれ自体のニアロケーションヒントテーブルを更新するべく構成することができる。ロケーションヒント構造は、性能向上のために使用されてもよく、また、正確な情報を有している必要がない。ロケーションヒント構造は、所定のデータのための全ての場所のトラッキングを維持するように構成されてもよく、あるいは、全ての場所のトラッキングを維持しないように構成されてもよい。ディレクトリは、所定のデータブロックのための全ての想定し得る場所のトラッキングを維持する。システム１００がブロック粒度でデータブロックの場所をトラッキングするように指示されている場合には、そのような情報を与えるためにディレクトリを使用できる。システム１００が一群のブロック、ページ、または、他の粒度の場所をトラッキングするように指示されている場合には、ロケーションヒント構造が使用されてもよい。
【００２７】
一例において、タイル１１８などのタイルがタイル１４３からデータブロックＸを要求するときには、タイル１４３は、ディレクトリ１１４全体を検索する前に最初にデータブロックＸの場所に関してロケーションヒント構造１１６を検索するように構成されてもよい。このとき、要求しているタイル（タイル１１８または他のタイル）は、ロケーションヒント構造１１６によって示されるタイルで検索するという選択肢、または、ディレクトリ１１４で検索するという選択肢を有する。ロケーションヒント構造１１６は、ディレクトリ１１４内にあってもよく、ディレクトリ１１４の外側にあってもよく、ダイ１０２の内側にあってもよく、あるいは、ダイ１０２の外側にあってもよい。
【００２８】
幾つかの実施例において、キャッシュ１５０、１５３、１５４は、タイル１１８のキャッシュ１１０に適合できないかもしれないデータブロックを記憶するために、あるいは、キャッシュ１１０に記憶されるデータブロックとは異なる優先レベルをもってデータブロックを記憶するために、タイル１１８により使用されてもよい。例えば、近い将来にアクセスされる確率が高いブロックが高い優先順位を有してもよい。他のブロックよりも高い優先順位を有するブロックは、それらにアクセスするための待ち時間を最小にするために可能な限りプロセッサの近傍に配置されてもよい。例えば、優先レベルが最も高いブロックは、要求しているタイルのローカルキャッシュに配置されてもよく、また、僅かに低い優先レベルは、最も近い隣接タイルに配置されてもよい。タイル１１８に物理的に近いタイルにデータが記憶されると、多くの利益がもたらされる場合がある。１つの実施例では、タイル１１８に物理的に近接させてデータブロックを配置すると、タイル１１８のプロセッサ１１２のためのデータアクセス時間を減らすことができる。他の実施例では、データブロックの配置が、ダイ１０２における全体のダイトラフィックを減少させる場合があり、および／または、キャッシュミスを最小にする場合があり、それにより、さもなければ古くなるあるいはページアウトされるであろうデータにアクセスできる。タイル１１８は、タイル１１８のキャッシュに対応しない宛先識別子を送ることによりデータがタイル１１８のキャッシュ以外のキャッシュへ送られることを連続的に要求するように構成されてもよい。幾つかの実施例において、タイル１１８は、宛先識別子をキャッシュ１１０に対応させることによりデータブロックがキャッシュ１１０へ送られることを要求するように構成されてもよい。幾つかの実施例において、要求しているプロセッサは、異なるタイルのキャッシュに記憶されるデータの閾値よりも多くを要求することが抑制されてもよい。このようにすると、この異なるタイルにおけるプロセッサにより必要とされるローカルデータには悪影響が及ばない。
【００２９】
前述したように、タイル１１８がデータブロックＸにアクセスするように要求されると、タイル１１８は、データブロックＸを記憶するキャッシュに関してニアロケーションヒントテーブル１１７を検索するように構成されてもよい。タイル１１８がデータブロックを記憶するキャッシュに関する表示をロケーションヒントテーブル１１７で見つけることができない場合、タイル１１８は、データブロックＸのためのディレクトリへ要求を送るように構成されてもよい。同様に、タイル１１８がニアロケーションヒントテーブル１１７に表示されたタイルへ要求を行なった場合であって、適切なデータブロックが表示されたタイルに記憶されていない場合には、タイル１１８は、データブロックＸのためのディレクトリへ要求を送るように構成されてもよい。ニアロケーションヒントテーブル１１７は、ディレクトリ１１４を使用してキャッシュコヒーレンス実施に影響を与える必要がない。
【００３０】
他の想定し得る利点のうちで、システム１００は、各タイルが各タイルに存在しているものよりも大きいキャッシュを使用できるようにしてもよい。集約キャッシュが、タイルに隣接していてもよいあるいは隣接していなくてもよい複数のタイルからのキャッシュを備えてもよい。集約キャッシュは、キャッシュミスが殆ど起こり得ず且つデータブロックをダイから外す要求が殆ど起こり得ないことを示唆してもよい。集約キャッシュが大きくなると、より多くのデータをキャッシュに記憶できるが、要求されるデータがキャッシュに記憶される他の必要とされるデータをエビクトする機会が少なくなる場合がある。また、集約キャッシュが大きくなると、データの複数の断片が単一のおそらく更に小さいキャッシュ内で空間を得るために争う必要がない。
【００３１】
隣接するタイルのキャッシュを使用できれば、アクセス時間を短いままにすることができる。この開示の少なくとも幾つかの原理に係るシステムは、既存のキャッシュコヒーレンスプロトコルに対して僅かな変更を行なうことにより実施されてもよい。情報が古くなる場合には、キャッシュされたデータの場所を見つけるためにキャッシュディレクトリが依然として使用されてもよい。要求しているプロセッサに対して物理的に近接するキャッシュにデータが記憶される結果として、および／または、ダイの全体にわたって分布されるタイルのキャッシュディレクトリに対してプロセッサがあまり頻繁にアクセスしなくてもよいという理由により、キャッシュ内およびチップネットワークトラフィック上のデータへのアクセス待ち時間が減らされてもよい。
【００３２】
図５は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。幾つかの実施例では、図５のプロセスを前述したシステム１００を使用して実施することができる。プロセスの一例は、ブロックＳ２、Ｓ４、Ｓ６、Ｓ８、Ｓ１０、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０、および／または、Ｓ２２のうちの１つ以上によって示される１つ以上の操作、行為、または、機能を含んでもよい。別個のブロックとして示されているが、所望の実施に応じて、様々なブロックが更なるブロックへ分けられてもよく、様々なブロックが更に少ないブロックへと組み合わされてもよく、あるいは、様々なブロックが排除されてもよい。処理がブロックＳ２で始まってもよい。
【００３３】
ブロックＳ２において、要求しているタイルは、データブロックの要求をディレクトリタイルへ送るあるいは開始するようになっていてもよい。要求は、要求しているタイルがデータブロックを記憶するためのタイルを示す宛先識別子を含んでもよい。ディレクトリタイルは、要求されたデータブロックのためのディレクトリを含んでもよい。幾つかの実施例において、宛先タイルは、要求しているタイルに隣接するタイル（例えば、要求しているタイルに近いあるいは要求しているタイルに物理的に近接するタイル）であってもよい。処理がブロックＳ２からブロックＳ４へと続いてもよい。また、処理がブロックＳ２からブロックＳ６へと続いてもよい。
【００３４】
ブロックＳ４において、要求しているタイルのプロセッサは、宛先識別子に対応するタイルのキャッシュにデータブロックが記憶されてもよいことを示すためにニアロケーションヒントテーブルを更新するようになっていてもよい。
【００３５】
ブロックＳ６において、ディレクトリタイルは、要求しているタイルから要求を受けるようになっていてもよい。処理がブロックＳ６からブロックＳ８へと続いてもよい。
【００３６】
ブロックＳ８において、ディレクトリタイルは、データブロックを記憶する適切なデータタイルに関してディレクトリを検索するようになっていてもよく、また、受けられた要求をそのデータタイルへ送ってもよい。処理がブロックＳ８からブロックＳ１０へ続いてもよい。また、処理がブロックＳ８からブロックＳ１４へ続いてもよい。
【００３７】
ブロックＳ１０において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにディレクトリを更新するようになっていてもよい。処理がブロックＳ１０からブロックＳ１２へ続いてもよい。
【００３８】
ブロックＳ１２において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにロケーションヒント構造を更新するようになっていてもよい。ロケーションヒント構造を使用して、ディレクトリが検索される前にデータブロックの場所を決定することができる。
【００３９】
ブロックＳ１４では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理がブロックＳ１４からブロックＳ１６へ続いてもよい。
【００４０】
ブロックＳ１６において、データタイルは、データブロックを宛先タイルおよび要求しているタイルへ送るようになっていてもよい。処理がブロックＳ１６からブロックＳ１８、Ｓ２２へ続いてもよい。ブロックＳ２２では、要求しているプロセッサがデータブロックを受けるようになっていてもよい。
【００４１】
ブロックＳ１８では、宛先タイルがデータブロックを受けるようになっていてもよい。処理がブロックＳ１８からブロックＳ２０へ続いてもよい。
【００４２】
ブロックＳ２０では、宛先タイルがデータブロックをキャッシュに記憶するようになっていてもよい。
【００４３】
図６は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。図６のプロセスは、例えば前述したシステム１００を使用して実施できる。プロセスの一例は、ブロックＳ４０、Ｓ４４、Ｓ４５、Ｓ４６、Ｓ４８、Ｓ５０、Ｓ５２、Ｓ５３、Ｓ５４、Ｓ５６、Ｓ５８、Ｓ６０、および／または、Ｓ６２のうちの１つ以上によって示される１つ以上の操作、行為、または、機能を含んでもよい。別個のブロックとして示されているが、所望の実施に応じて、様々なブロックが更なるブロックへ分けられてもよく、様々なブロックが更に少ないブロックへと組み合わされてもよく、あるいは、様々なブロックが排除されてもよい。処理がブロックＳ４０で始まってもよい。
【００４４】
ブロックＳ４０において、要求しているタイルがそのローカルキャッシュでデータブロックを見つけない場合、要求しているタイルは、要求しているタイルの外側のキャッシュに記憶されるデータブロックへのアクセスを要求するように構成されてもよい。処理がブロックＳ４０からブロックＳ４２へ続いてもよい。
【００４５】
ブロックＳ４２において、要求しているタイルは、データブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかを確かめるためにニアロケーションヒントテーブルを検索するように構成されてもよい。処理がブロックＳ４２からブロックＳ４４へ続いてもよい。
【００４６】
ブロックＳ４４では、要求されたデータブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかの問い合わせを行なうことができる。データブロックがニアロケーションヒントテーブルでインデックス付けされていると決定される（「Ｙｅｓ」）と、処理がブロックＳ４４からブロックＳ４６へ続いてもよい。幾つかの実施例において、ブロックＳ４５、Ｓ４６は、データブロックがデータタイルで見つけられない場合にディレクトリにアクセスする待ち時間を最小限に抑えるために並行して行なわれてもよい。あるいはそうではなく、データブロックがニアロケーションヒントテーブルでインデックス付けされていない（「Ｎｏ」）という決定がなされると、あるいは、テーブルでインデックス付けされる場所がデータブロックを有さない場合には、処理がブロックＳ４４からブロックＳ４５へ続いてもよい。
【００４７】
ブロックＳ４６において、要求しているタイルは、要求を適切なデータタイルへ送るようになっていてもよい。処理がブロックＳ４５からブロックＳ５８へ続いてもよい。
【００４８】
ブロックＳ４５において、要求しているタイルは、データブロックのためのディレクトリを含むディレクトリタイルへ要求を送るようになっていてもよい。処理がブロックＳ４５からブロックＳ４８へ続いてもよい。
【００４９】
ブロックＳ４８では、ディレクトリタイルが要求を受けるようになっていてもよい。処理がブロックＳ４８からブロックＳ５０へ続いてもよい。
【００５０】
ブロックＳ５０では、ディレクトリタイルがデータブロックに関してロケーションヒント構造を検索するようになっていてもよい。処理がブロックＳ５０からブロックＳ５２へ続いてもよい。
【００５１】
ブロックＳ５２では、データブロックがロケーションヒント構造でインデックス付けされているかどうかを決定するために、ロケーションヒント構造に対して問い合わせが行なわれてもよい。データブロックがロケーションヒント構造でインデックス付けされていると決定される（「Ｙｅｓ」）と、処理がブロックＳ５２からブロックＳ５３へ続いてもよい。ブロックＳ５３では、ディレクトリタイルがロケーションヒントを要求しているタイルへ送るようになっていてもよい。ブロックＳ５３の後にブロックＳ６４が続いてもよく、ブロックＳ６４では、要求しているタイルがニアロケーションヒントテーブルを更新するのに有効であってもよい。処理がブロックＳ５２からブロックＳ５４へ続いてもよい。
【００５２】
ブロックＳ５４では、ディレクトリタイルがデータタイルに関してディレクトリを検索するようになっていてもよい。処理がブロックＳ５４からブロックＳ５６へ続いてもよい。
【００５３】
ブロックＳ５６では、要求がディレクトリタイルからデータタイルへ送られてもよい。処理がブロックＳ５３からブロックＳ５８へ続いてもよい。
【００５４】
ブロックＳ５８では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理がブロックＳ５８からブロックＳ６０へ続いてもよい。
【００５５】
ブロックＳ６０では、データタイルがデータブロックを要求しているタイルへ送るようになっていてもよい。処理がブロックＳ６０からブロックＳ６２へ続いてもよい。
【００５６】
ブロックＳ６２では、要求しているタイルがデータブロックをデータタイルから受けるようになっていてもよい。
【００５７】
図７は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関する信号フロー図を描いている。幾つかの実施例において、図７のプロセスは、前述したシステム１００を使用して実施されてもよい。プロセスの一例は、操作５０２、５０４、５０６、５０８、５１０、５１２、５１４、５１６、５１７、５１８、５２０および／または５２２のうちの１つ以上によって示される１つ以上の操作、行為、または、機能を含んでもよい。別個の操作として示されているが、所望の実施に応じて、様々な操作が更なる操作へ分けられてもよく、様々な操作が更に少ない操作へと組み合わされてもよく、あるいは、様々な操作が排除されてもよい。処理が操作５０２で始まってもよい。
【００５８】
操作５０２において、要求しているタイルは、データブロックの要求をディレクトリタイルへ送るあるいは開始するようになっていてもよい。要求は、要求しているタイルがデータブロックを記憶するためのタイルを示す宛先識別子を含んでもよい。ディレクトリタイルは、要求されたデータブロックのためのディレクトリを含む。幾つかの実施例において、宛先タイルは、要求しているタイルに隣接するタイルであってもよい。処理が操作５０２から操作５０４へと続いてもよい。
【００５９】
操作５０４において、要求しているタイルのプロセッサは、宛先識別子に対応するタイルのキャッシュにデータブロックが記憶されてもよいことを示すためにニアロケーションヒントテーブルを更新してもよい。処理が操作５０２から操作５０６へと続いてもよい。
【００６０】
操作５０６では、ディレクトリタイルが要求を受けるようになっていてもよい。処理が操作５０６から操作５０８へと続いてもよい。
【００６１】
操作５０８において、ディレクトリタイルは、データブロックを記憶する適切なデータタイルに関してディレクトリを検索するようになっていてもよく、また、要求をそのデータタイルへ送ってもよい。処理が操作５０８から操作５１０および操作５１４へ続いてもよい。
【００６２】
操作５１０において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにディレクトリを更新するようになっていてもよい。処理が操作５１０から操作５１２へ続いてもよい。
【００６３】
操作５１２において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにロケーションヒント構造を更新するようになっていてもよい。ロケーションヒント構造を使用して、ディレクトリが検索される前にデータブロックの場所を決定することができる。
【００６４】
操作５１４では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理が操作５１４から操作５１６、５１７へ続いてもよい。
【００６５】
操作５１７において、データタイルは、データブロックを要求しているタイルへ送るようになっていてもよい。処理が操作５１７から操作５２２へ続いてもよい。操作５２２では、要求しているプロセッサがデータブロックを受けるようになっていてもよい。
【００６６】
操作５１６では、データタイルがデータブロックを宛先タイルへ送るようになっていてもよい。処理が操作５１６から操作５１８へ続いてもよい。
【００６７】
操作５１８では、宛先タイルがデータブロックを受けるようになっていてもよい。処理が操作５１８から操作５２０へ続いてもよい。
【００６８】
操作５２０では、宛先タイルがデータブロックをキャッシュに記憶するようになっていてもよい。
【００６９】
図８は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。幾つかの実施例において、図８のプロセスは、前述したシステム１００を使用して実施されてもよい。プロセスの一例は、操作５４０、５４２、５４４、５４５、５４６、５４８、５５０、５５２、５５３、５５４、５５６、５５８、５６０および／または５６２のうちの１つ以上によって示される１つ以上の操作、行為、または、機能を含んでもよい。別個の操作として示されているが、所望の実施に応じて、様々な操作が更なる操作へ分けられてもよく、様々な操作が更に少ない操作へと組み合わされてもよく、あるいは、様々な操作が排除されてもよい。処理が操作５４０で始まってもよい。
【００７０】
操作５４０において、要求しているタイルは、要求しているタイルの外側のキャッシュに記憶されるデータブロックへのアクセスを要求するように構成されてもよい。処理が操作５４０から操作５４２へ続いてもよい。
【００７１】
操作５４２において、要求しているタイルは、データブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかを確かめるためにニアロケーションヒントテーブルを検索するように構成されてもよい。処理が操作５４２から操作５４４へ続いてもよい。
【００７２】
操作５４４では、要求されたデータブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかの問い合わせを行なうことができる。データブロックがニアロケーションヒントテーブルでインデックス付けされていると決定される（「Ｙｅｓ」）と、処理が操作５４４から操作５４６へ続いてもよい。
【００７３】
あるいはそうではなく、データブロックがニアロケーションヒントテーブルでインデックス付けされていない（「Ｎｏ」）という決定がなされると、あるいは、テーブルでインデックス付けされる場所がデータブロックを有さない場合には、処理が操作５４４から操作５４５へ続いてもよい。
【００７４】
操作５４６において、要求しているタイルは、要求を適切なデータタイルへ送るようになっていてもよい。処理が操作５４６から操作５５８へ続いてもよい。
【００７５】
操作５４５において、要求しているタイルは、データブロックのためのディレクトリを含むディレクトリタイルへ要求を送るようになっていてもよい。処理が操作５４５から操作５４８へ続いてもよい。
【００７６】
操作５４８では、ディレクトリタイルが要求しているタイルから要求を受けるようになっていてもよい。処理が操作５４８から操作５５０へ続いてもよい。
【００７７】
操作５５０では、ディレクトリタイルがデータブロックに関してロケーションヒント構造を検索するようになっていてもよい。処理が操作５５０から操作５５２へ続いてもよい。
【００７８】
操作５５２では、データブロックがロケーションヒント構造でインデックス付けされているかどうかを決定するために問い合わせが行なわれてもよい。データブロックがロケーションヒント構造でインデックス付けされていると決定される（「Ｙｅｓ」）と、処理が操作５５２から操作５５３へ続いてもよい。操作５５３では、ディレクトリタイルがロケーションヒントを要求しているタイルへ送るようになっていてもよい。操作５５３の後に操作５６４が続いてもよく、操作５６４では、要求しているタイルがニアロケーションヒントテーブルを更新するのに有効であってもよい。
【００７９】
処理が操作５５２から操作５５４へ続いてもよい。
【００８０】
操作５５４では、ディレクトリタイルがデータタイルに関してディレクトリを検索するようになっていてもよい。操作５５４は操作５４８、５５０と並行に行なうことができる。処理が操作５５４から操作５５６へ続いてもよい。
【００８１】
操作５５６では、操作５４８でディレクトリタイルにより受けられる要求が操作５５４で識別されたデータタイルへ送られてもよい。処理が操作５５６から操作５５８へ続いてもよい。
【００８２】
操作５５８では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理が操作５５８から操作５６０へ続いてもよい。
【００８３】
操作５６０では、データタイルがデータブロックを要求しているタイルへ送るようになっていてもよい。処理が操作５６０から操作５６２へ続いてもよい。
【００８４】
操作５６２では、要求しているタイルがデータブロックをデータタイルから受けるようになっていてもよい。
【００８５】
図９は、本開示の少なくとも幾つかの実施例にしたがって設けられるコンピュータプログラムプロダクト３００の一例を示している。プログラムプロダクト３００は信号担持媒体３０２を含んでもよい。信号担持媒体３０２は、例えばプロセッサにより実行されるときに図１−８に関して前述した機能性を与えてもよい１つ以上の命令３０４を含んでもよい。したがって、例えば、システム１００を参照すると、タイル１１８、１３０−１４４のプロセッサ１１２のうちの１つ以上が、媒体３０２によってシステム１００へ伝えられる命令３０４に応じて図９に示されるブロックのうちの１つ以上に着手してもよい。
【００８６】
幾つかの実施において、信号担持媒体３０２は、これらに限定されないがハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、メモリなどのコンピュータ可読媒体３０６を含んでもよい。幾つかの実施において、信号担持媒体３０２は、これらに限定されないがメモリ、読み取り／書き込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどの記録できる媒体３０８を含んでもよい。幾つかの実施において、信号担持媒体３０２は、これらに限定されないがデジタルおよび／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク等）などの通信媒体３１０を含んでもよい。したがって、例えば、プログラムプロダクト３００は、ＲＦ信号担持媒体３０２によってシステム１００の１つ以上のモジュールへ伝えられてもよい。この場合、信号担持媒体３０２は無線通信媒体３１０（例えば、ＩＥＥＥ８０２．１１標準規格に従う無線通信媒体）によって伝えられてもよい。
【００８７】
図１０は、本開示の少なくとも幾つかの実施形態に係るマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうようになっているコンピュータデバイス４００の一例を示すブロック図である。非常に基本的な構成４０２において、コンピュータデバイス４００は、一般に、１つ以上のプロセッサ４０４と、システムメモリ４０６とを含む。プロセッサ４０４とシステムメモリ４０６との間の通信のためにメモリバス４０８が使用されてもよい。
【００８８】
所望の構成に応じて、プロセッサ４０４は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、または、これらの任意の組み合わせを含むがこれらに限定されない任意のタイプのものであってもよい。プロセッサ４０４は、レベル１キャッシュ４１０およびレベル２キャッシュ４１２などの１つ以上のレベルのキャッシングと、プロセッサコア４１４と、レジスタ４１６とを含んでもよい。プロセッサコア４１４の一例としては、算術論理演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、または、これらの任意の組み合わせを挙げることができる。メモリコントローラ４１８の一例がプロセッサ４０４と共に使用されてもよく、あるいは、幾つかの実施では、メモリコントローラ４１８がプロセッサ４０４の内部部品であってもよい。
【００８９】
所望の構成に応じて、システムメモリ４０６は、揮発性メモリ（例えばＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、フラッシュメモリなど）、あるいは、これらの任意の組み合わせを含むがこれらに限定されない任意のタイプのものであってもよい。システムメモリ４０６は、オペレーティングシステム４２０、１つ以上のアプリケーション４２２、および、プログラムデータ４２４を含んでもよい。アプリケーション４２２は、図２のシステム１００に関して説明した機能を含む本明細書中に記載される機能を果たすようになっているマルチプロセッサアーキテクチャアルゴリズム４２６におけるデータ記憶およびアクセスを含んでもよい。プログラムデータ４２４は、本明細書中に記載されるマルチプロセッサアーキテクチャアルゴリズムにおけるデータ記憶およびアクセスに役立ち得る記憶・マルチプロセッサアーキテクチャデータ４２８を含んでもよい。幾つかの実施形態では、アプリケーション４２２がオペレーティングシステム４２０でプログラムデータ４２４により動作するようになっていてもよく、それにより、マルチプロセッサアーキテクチャアルゴリズムにおけるデータ記憶およびアクセスが行なわれてもよい。図１０では、この記載された基本的構成４０２が内側の破線内の構成要素により示されている。
【００９０】
コンピュータデバイス４００は、基本構成４０２と任意の所要のデバイスおよびインタフェースとの間の通信を容易にするために、更なる特徴または機能性と、更なるインタフェースとを有してもよい。例えば、バス／インタフェースコントローラ４３０は、記憶インタフェースバス４３４を介した基本構成４０２と１つ以上のデータ記憶デバイス４３２との間の通信を容易にするために使用されてもよい。データ記憶デバイス４３２は、取り外し可能な記憶デバイス４３６、取り外し不能な記憶デバイス４３８、または、これらの組み合わせであってもよい。取り外し可能な記憶デバイスおよび取り外し不能な記憶デバイスの例としては、幾つか例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、および、テープドライブが挙げられる。コンピュータ記憶媒体の例としては、コンピュータ可読命令、データ構造、プログラムモジュール、または、他のデータなどの情報の記憶のための任意の方法または技術で実施される、揮発性および不揮発性の取り外し可能なおよび取り外し不能な媒体を挙げることができる。
【００９１】
システムメモリ４０６、取り外し可能な記憶デバイス４３６、および、取り外し不能な記憶デバイス４３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、所望の情報を記憶するために使用されてもよく且つコンピュータデバイス４００によってアクセスされてもよい、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または、他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または、他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは、任意の他の媒体が挙げられるが、これらに限定されない。任意のそのようなコンピュータ記憶媒体は、コンピュータデバイス４００の一部であってもよい。
【００９２】
コンピュータデバイス４００は、バス／インタフェースコントローラ４３０を介した様々なインタフェースデバイス（例えば、出力デバイス４４２、周辺インタフェース４４４、および、通信デバイス４４６）から基本構成４０２への通信を容易にするためのインタフェースバス４４０を含んでもよい。出力デバイス４４２の実施例は、１つ以上のＡ／Ｖポート４５２を介してディスプレイまたはスピーカなどの様々な外部デバイスへ通信するように構成されてもよいグラフィックス処理ユニット４４８および音声処理ユニット４５０を含む。周辺インタフェース４４４の実施例は、１つ以上のＩ／Ｏポート４５８を介して入力デバイス（例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等）または他の周辺デバイス（例えば、プリンタ、スキャナ等）などの外部デバイスと通信するように構成されてもよいシリアルインタフェースコントローラ４５４またはパラレルインタフェースコントローラ４５６を含む。通信デバイス４４６の実施例は、１つ以上の通信ポート４６４を介したネットワーク通信リンクによる１つ以上の他のコンピュータデバイス４６２との通信を容易にするようになっていてもよいネットワークコントローラ４６０を含む。
【００９３】
ネットワーク通信リンクは通信媒体の一例であってもよい。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または、変調データ信号中の他のデータ、例えば搬送波または他の輸送機構によって具現化されてもよく、また、任意の情報伝達媒体を含んでもよい。「変調データ信号」は、その特性のうちの１つ以上が信号中の情報をエンコードするような態様で設定されあるいは変えられる信号であってもよい。一例として、限定的ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、および、音響、高周波（ＲＦ）、マイクロ波、赤外線（ＩＲ）、および、他の無線媒体などの無線媒体を含んでもよい。本明細書中で使用されるコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含んでもよい。
【００９４】
コンピュータデバイス４００は、小型フォームファクタポータブル（またはモバイル）電子デバイス、例えば、携帯電話、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤデバイス、無線ウェブウォッチデバイス、パーソナルヘッドセットデバイス、アプリケーション固有デバイス、または、前述した任意の機能を含むハイブリッドデバイスの一部として実施されてもよい。コンピュータデバイス４００は、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実施されてもよい。
【００９５】
本開示は、様々な態様の例示として意図されるこの出願に記載された特定の実施例に関して限定されるべきではない。当業者であれば分かるように、その思想および範囲から逸脱することなく多くの改良および変形を行なうことができる。本明細書中で列挙された方法および装置に加えて、本開示の範囲内の機能的に等価な方法および装置は、前述した説明から当業者に明らかである。そのような改良および変形は、添付の請求項の範囲内に入るように意図される。本開示は、そのような請求項の権利が与えられる等価物の全範囲と共に、添付の請求項の用語によってのみ限定されるべきである。言うまでもなく、この開示は、特定の方法、試薬、化合物組成、または、生物系に限定されず、無論、これらは変化し得る。また、本明細書中で使用される専門用語が、単に特定の実施形態を説明するという目的のためのものにすぎず、限定しようとするものでないことは言うまでもない。
【００９６】
本明細書中でのほぼ任意の複数形および／または単数形の用語の使用に関して、当業者は、文脈および／または用途に適するように複数形から単数形へおよび／または単数形から複数形へ変換できる。明確にするために、本明細書中には、様々な単数形／複数形の置換が明示的に記載されている場合がある。
【００９７】
当業者であれば分かるように、一般に、本明細書中で、特に添付の特許請求の範囲（例えば、添付の請求項の本文）で使用される用語は、一般に、「開かれた」用語（ｏｐｅｎ  ｔｅｒｍｓ）として意図される（例えば、用語「含んでいる」は、「〜を含んでいるがこれらに限定されない」として解釈されるべきであり、用語「有する」は、「少なくとも有する」として解釈されるべきであり、用語「含む」は、「〜を含むがこれらに限定されない」として解釈されるべきである）。また、当業者であれば分かるように、導入請求項列挙の特定の要素が意図される場合には、そのような意図が請求項に明示的に列挙され、また、そのような列挙がない場合には、そのような意図は存在しない。例えば、理解を助けるものとして、以下の添付の請求項は、請求項列挙を導入するために「少なくとも１つの」および「１つ以上の」という導入表現の使用を含む場合がある。しかしながら、そのような表現の使用は、同じ請求項が「１つ以上」または「少なくとも１つの」という導入表現および「１つの（ａ、ａｎ）」（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つ以上」を意味するように解釈されるべきである）などの不定冠詞を含む場合であっても、不定冠詞「１つの（ａ、ａｎ）」による請求項列挙の導入がそのような導入請求項列挙を含む任意の特定の請求項をたった１つのそのような列挙を含む実施形態に限定することを意味するように解釈されるべきではない。また、同じことが、請求項列挙を導入するために使用される定冠詞の使用においても当てはまる。また、導入請求項列挙の特定の要素が明示的に列挙されている場合であっても、当業者であれば分かるように、そのような列挙は、少なくとも列挙された要素を意味するように解釈されるべきである（例えば、他の修飾語句を伴わない「２つの列挙」の剥き出しの列挙は、少なくとも２つの列挙、または、２つ以上の列挙を意味する）。また、「Ａ、Ｂ、および、Ｃ等のうちの少なくとも１つ」に類似する慣例が使用される場合には、一般に、そのような構文は、当業者がその慣例を理解できるという意味で意図される（例えば、「Ａ、Ｂ、および、Ｃのうちの少なくとも１つを有するシステム」は、Ａだけを有する、Ｂだけを有する、Ｃだけを有する、ＡおよびＢを共に有する、ＡおよびＣを共に有する、ＢおよびＣを共に有する、および／または、Ａ、Ｂ、Ｃを共に有するなどといったシステムを含むがこれに限定されない）。「Ａ、Ｂ、または、Ｃ等のうちの少なくとも１つ」に類似する慣例が使用される場合には、一般に、そのような構文は、当業者がその慣例を理解できるという意味で意図される（例えば、「Ａ、Ｂ、または、Ｃのうちの少なくとも１つを有するシステム」は、Ａだけを有する、Ｂだけを有する、Ｃだけを有する、ＡおよびＢを共に有する、ＡおよびＣを共に有する、ＢおよびＣを共に有する、および／または、Ａ、Ｂ、Ｃを共に有するなどといったシステムを含むがこれに限定されない）。また、当業者であれば分かるように、２つ以上の代替用語を与えるほぼ任意の離接語および／または表現は、明細書本文、特許請求の範囲、または、図面であろうとなかろうと、これらの用語のうちの１つ、用語のい���れか、あるいは、両方の用語を含む可能性を考慮するように理解されるべきである。例えば、表現「ＡまたはＢ」は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むように理解される。
【００９８】
また、本開示の特徴または態様がマーカッシュグループの観点で記載される場合には、当業者であれば分かるように、それによって、本開示はマーカッシュグループの任意の個々の要素または要素のサブグループに関しても記載されている。
【００９９】
当業者であれば分かるように、任意のおよび全ての目的のため、例えば書面による説明を行なうという観点から、本明細書中に開示される全ての範囲は、任意のおよび全ての想定し得る部分範囲およびその部分範囲の組み合わせも包含する。任意の記載された範囲は、同じ範囲が少なくとも等しい１／２部分、１／３部分、１／４部分、１／５部分、１／１０部分などへ分けられることを十分に記載しており可能であるとして容易に認識され得る。非限定的な例として、本明細書中に記載されるそれぞれの範囲は、下側の１／３、中間の１／３、上側の１／３などへと容易に分けることができる。また、当業者であれば分かるように、「最大で」、「少なくとも」、「よりも大きい」、「よりも小さい」などの全ての言葉は、記載された数を含んでおり、後に前述した部分範囲へと分けられ得る範囲を示す。最後に、当業者であれば分かるように、範囲はそれぞれの個々の要素を含む。したがって、例えば、１−３個のセルを有するグループは、１個、２個、または、３個のセルを有するグループを示す。同様に、１−５個のセルを有するグループは、１個、２個、３個、４個、または、５個のセルを有するグループを示す。他も同様である。
【０１００】
様々な態様および実施形態について本明細書中で開示してきたが、他の態様および実施形態は当業者に明らかである。本明細書中に開示される様々な態様および実施形態は、例示目的であって、限定しようとするものではない。真の範囲および思想は以下の特許請求の範囲によって示される。
【図１】
0005525064.tif 000002
【図２】
0005525064.tif 000003
【図３】
0005525064.tif 000004
【図４】
0005525064.tif 000005
【図５】
0005525064.tif 000006
【図６】
0005525064.tif 000007
【図７】
0005525064.tif 000008
【図８】
0005525064.tif 000009
【図９】
0005525064.tif 000010
【図１０】
0005525064.tif 000011