特許第5747099号(P5747099)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エンパイア テクノロジー ディベロップメント エルエルシーの特許一覧

特許5747099マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス
<>
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000002
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000003
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000004
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000005
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000006
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000007
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000008
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000009
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000010
  • 特許5747099-マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5747099
(24)【登録日】2015年5月15日
(45)【発行日】2015年7月8日
(54)【発明の名称】マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセス
(51)【国際特許分類】
   G06F 12/08 20060101AFI20150618BHJP
【FI】
   G06F12/08 531E
   G06F12/08 531B
   G06F12/08 551C
【請求項の数】21
【全頁数】23
(21)【出願番号】特願2014-80607(P2014-80607)
(22)【出願日】2014年4月9日
(62)【分割の表示】特願2012-545934(P2012-545934)の分割
【原出願日】2010年9月24日
(65)【公開番号】特開2014-149859(P2014-149859A)
(43)【公開日】2014年8月21日
【審査請求日】2014年4月9日
(31)【優先権主張番号】12/649,659
(32)【優先日】2009年12月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509348786
【氏名又は名称】エンパイア テクノロジー ディベロップメント エルエルシー
(74)【代理人】
【識別番号】100133503
【弁理士】
【氏名又は名称】関口 一哉
(72)【発明者】
【氏名】ヤン ゾリヒン
【審査官】 塩澤 如正
(56)【参考文献】
【文献】 特開2002−024198(JP,A)
【文献】 特開2007−199999(JP,A)
【文献】 特開2001−101148(JP,A)
【文献】 特開2005−189928(JP,A)
【文献】 特開2001−101147(JP,A)
【文献】 特表2006−501546(JP,A)
【文献】 特表2008−525902(JP,A)
【文献】 特表2006−516058(JP,A)
【文献】 米国特許出願公開第2009/0031085(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 − G06F 12/12
(57)【特許請求の範囲】
【請求項1】
キャッシュに記憶されたデータブロックを送るためのシステムにおいて、
第1のタイルの第1のプロセッサであって、データブロックの要求を発生させ、前記要求がデータブロックのための宛先タイルを識別する宛先識別子を含み、宛先タイルが第1のタイルと異なるとともにデータブロックが第1のタイルと異なるタイルに存在する、第1のプロセッサと、
第1のタイルから要求を受け取る、宛先タイルとは異なる第2のタイルであって、前記第2のタイルはデータブロックが宛先タイルに送られるよう、第1のタイルからの要求を処理するものである、第2のタイルと、
を備えるシステム。
【請求項2】
前記第1のタイルがテーブルを更に含み、テーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項1に記載のシステム。
【請求項3】
前記要求が第1の要求であり、
第1のプロセッサが、データブロックのための第2の要求を発生させるものであり、
第1のプロセッサは、宛先識別子がテーブル中に存在するかを決定するためにテーブルを検索するものであり、
宛先識別子がテーブル中に存在すると決定されると、第1のプロセッサは、第2の要求を第1のタイルから宛先タイルへ送るものであり、
宛先識別子がテーブル中に存在しないと決定されると、第1のプロセッサは、第2の要求を第1のタイルから第2のタイルへ送るものである、請求項2に記載のシステム。
【請求項4】
テーブルが、一群のデータブロックが宛先タイルに記憶されていることを示すものである、請求項2に記載のシステム。
【請求項5】
第2のタイルがダイのためのディレクトリを含む、請求項1に記載のシステム。
【請求項6】
第2のタイルは、データブロックが宛先タイルに記憶されることを示すために第2のタイルのディレクトリを更新するものである、請求項5に記載のシステム。
【請求項7】
第2のタイルは、ディレクトリと異なる第2のタイルのロケーションヒントテーブルを更新するものであり、ロケーションヒントテーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項6に記載のシステム。
【請求項8】
前記要求が第1の要求であり、
第1のプロセッサは、データブロックのための第2の要求を発生させるものであり、
第1のプロセッサは、第1のタイルからの第2の要求を第2のタイルへ送るものであり、
第2のタイルは、宛先識別子がロケーションヒントテーブル中に存在するかどうかを決定するために第2のタイルのロケーションヒントテーブルを検索するものであり、
宛先識別子がロケーションヒントテーブル中に存在すると決定されると、第2のタイルは、ロケーションヒントを第2のタイルから第1のタイルへ送り、
第2のタイルは、ディレクトリを検索して、第2の要求を宛先タイルへ送るものである、請求項7に記載のシステム。
【請求項9】
前記要求が第1の要求であり、
第1のプロセッサは、データブロックのための第2の要求を発生させるものであり、
第1のプロセッサは、第1のタイルからの第2の要求を第2のタイルへ送るものであり、
第2のタイルは、宛先識別子がロケーションヒントテーブル中に存在するかどうかを決定するためにロケーションヒントテーブルを検索するものであり、
宛先識別子がロケーションヒントテーブル中に存在すると決定されると、第2のタイルは、第2の要求を第2のタイルから宛先タイルへ送り、
宛先識別子がロケーションヒントテーブル中に存在しないと決定されると、第2のタイルは、ディレクトリを検索して第2の要求を第2のタイルから宛先タイルへ送るものである、請求項6に記載のシステム。
【請求項10】
第1のタイルが第1のダイにあり、
宛先タイルが第2のダイにあり、
第1および第2のダイが異なる、請求項1に記載のシステム。
【請求項11】
第2のタイルが第1のダイにある、請求項10に記載のシステム。
【請求項12】
第1のプロセッサは、データを閾値を超えて宛先タイルに記憶することが抑制される、請求項1に記載のシステム。
【請求項13】
キャッシュに記憶されたデータブロックを送るための方法において、
第1のタイルの第1のプロセッサによってデータタイルにおいてデータブロックの要求を発生させるステップであって、要求がデータブロックのための宛先タイルを識別する宛先識別子を含み、宛先タイルとデータタイルが第1のタイルと異なるものであるステップと、
第2のタイルによって第1のタイルから要求を受けるステップであって、第2のタイルは宛先タイルと異なるステップと、
第2のプロセッサによって、データブロックが宛先タイルに送られるよう、第1のタイルから受け取った要求を処理するステップと、
を備える方法。
【請求項14】
データブロックが宛先タイルに記憶されることを示すために第1のタイルのテーブルを更新するステップを更に備える、請求項13に記載の方法。
【請求項15】
前記要求が第1の要求であり、
データブロックのための第2の要求を第1のプロセッサにより発生させるステップと、
宛先識別子がテーブル中に存在するかどうかを決定するために第1のプロセッサによってテーブルを検索するステップと、
宛先識別子がテーブル中に存在すると決定されると、第1のプロセッサによって第2の要求を第1のタイルから宛先タイルへ送るステップ、
を更に備える、請求項14に記載の方法。
【請求項16】
前記要求が第1の要求であり、
データブロックのための第2の要求を第1のプロセッサにより発生させるステップと、
宛先識別子がテーブル中に存在するかどうかを決定するために第1のプロセッサによってテーブルを検索するステップと、
宛先識別子がテーブル中に存在しないと決定されると、第1のプロセッサによって第2の要求を第1のタイルから第2のタイルへ送るステップ、
を更に備える、請求項14に記載の方法。
【請求項17】
データブロックが宛先タイルに記憶されることを示すために第2のタイルのディレクトリを第2のプロセッサによって更新するステップを更に備える、請求項16に記載の方法。
【請求項18】
第2のプロセッサがディレクトリとは異なる第2のタイルのロケーションヒントテーブルを更新することを更に備え、ロケーションヒントテーブルは、データブロックが宛先タイルに記憶されることを示すものである、請求項17に記載の方法。
【請求項19】
宛先識別子がロケーションヒントテーブル中に存在するかどうかを決定するために第2のプロセッサによってロケーションヒントテーブルを検索するステップと、
宛先識別子がロケーションヒントテーブル中に存在すると決定されると、第2のプロセッサによってロケーションヒントを第2のタイルから第1のタイルへ送るステップと、
第2のプロセッサによってディレクトリを検索して、第2のプロセッサによって第2の要求を第2のタイルから宛先タイルへ送るステップと、
を更に備える、請求項18に記載の方法。
【請求項20】
ダイ中のデータブロックを要求するシステムであって、
第1のタイルであって、前記第1のタイルは第1のプロセッサと第1のメモリを含み、第1のメモリは第1のプロセッサと通信すると共にテーブルを含み、テーブルはダイのためのディレクトリのサブセットである、第1のタイルと、
第2のタイルであって、前記第2のタイルは第1のタイルと通信すると共に第2のプロセッサ及び第2のメモリを含み、第2のメモリはダイのためのディレクトリを含み、ディレクトリは各タイルに記憶されたダイ及びブロックにおけるタイルのインデックスを含む、第2のタイルと、を備え、
第1のプロセッサは第1のタイルとは異なるデータタイルにおいてデータブロックのための要求を発生させ、データブロックがテーブルにおいてインデックス付けされているかを決定するために第1のタイルのテーブルを検索し、データブロックがデータタイルと関連してテーブルにおいてインデックス付けされていると決定されたときは、第1のプロセッサが要求をデータタイルに送るものである、システム。
【請求項21】
ダイにおいてデータブロックを要求する方法であって、
ダイが第1のプロセッサ及び第1のメモリを含む第1のタイルを有し、第1のメモリはダイのためのディレクトリのサブセットであるテーブルを含み、
ダイはまた第2のプロセッサ及び第2のメモリを含む第2のタイルを有し、第2のメモリはダイのためのディレクトリを含み、ディレクトリはダイ中のタイルにおけるインデックス及び各タイルに記憶されたブロックを含むものであり、該方法は
第1のプロセッサによって、第1のタイルとは異なるデータタイルにおけるデータブロックのための要求を発生させるステップと、
テーブル中にデータブロックが存在するかどうかを決定するために第1のタイルのテーブルを検索するステップと、
データブロックがデータタイルと関連してテーブルでインデックス付けされていると決定されると、第1のプロセッサによって要求を第1のタイルからデータタイルへ送るステップと、
を備えるものである、方法。
【発明の詳細な説明】
【背景技術】
【0001】
本明細書中で特に別に示されていなければ、この節に記載される資料は、この出願の請求項に対して従来技術ではなく、この節に含めることによって従来技術であると認められない。
【0002】
マルチコアプロセッサアーキテクチャでは、複数のプロセッサコアが単一の集積回路ダイ中に、あるいは単一のチップパッケージに配置される複数の集積回路ダイ上に含まれてよい。プロセッサコアのうちの1つ以上によるアクセスのためにデータを記憶するべくキャッシュが使用される場合がある。データは、一般にダイの外側に配置される大型メモリに記憶されるデータのサブセットとなり得る。各プロセッサには、プロセッサのためのデータを記憶するキャッシュが設けられてもよい。データの単一の断片が複数のキャッシュに記憶される場合があるため、キャッシュコヒーレンスプロトコルは、複数のキャッシュに記憶されるデータのトラックを維持するように構成される場合がある。キャッシュコヒーレンスプロトコルは、複数のデータ要求によって一貫して同じデータが戻されるようにするのに役立つべく構成される。
【発明の概要】
【課題を解決するための手段】
【0003】
幾つかの実施例では、キャッシュに記憶されたデータブロックを送るためのシステムが一般に記載される。幾つかの実施例において、前記システムは、第1のタイルの第1のプロセッサと、第2のタイルと、データタイルとを含む。幾つかの実施例において、第1のプロセッサは、データブロックの要求を発生させるのに有効である。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルは第1のタイルと異なる。幾つかの実施例において、第2のタイルは、第1のタイルから要求を受けるのに有効である。幾つかの実施例において、第2のタイルは、データブロックを含むデータタイルを決定するのに有効である。幾つかの実施例において、第2のタイルは、第1のタイルから受けられる要求をデータタイルへ送るのに更に有効である。幾つかの実施例において、前記データタイルは、第2のタイルから要求を受けるのに有効である。幾つかの実施例において、前記データタイルは、宛先識別子によって識別される宛先タイルへデータブロックを送るのに更に有効である。
【0004】
幾つかの実施例では、キャッシュに記憶されたデータブロックを送るための方法が一般に記載される。幾つかの実施例において、前記方法は、第1のタイルの第1のプロセッサによってデータブロックの要求を発生させるステップを含む。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルは第1のタイルと異なる。幾つかの実施例において、前記方法は、第2のタイルによって第1のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを含むデータタイルを第2のタイルの第2のプロセッサによって決定するステップを含む。幾つかの実施例において、前記方法は、第1のタイルから受けられる要求を第2のプロセッサによってデータタイルへ送るステップを含む。幾つかの実施例において、前記方法は、データタイルによって第2のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを、データタイルの第3のプロセッサによって、宛先識別子により識別される宛先タイルへ送るステップを含む。
【0005】
幾つかの実施例では、コンピュータによって実行されるときに方法を行なうようにコンピュータを適合させるコンピュータ実行可能命令が記憶されたコンピュータ記憶媒体が一般に記載される。幾つかの実施例において、前記方法は、第1のタイルの第1のプロセッサによってデータブロックの要求を発生させるステップを含む。幾つかの実施例において、前記要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含む。幾つかの実施例において、前記宛先タイルは第1のタイルと異なる。幾つかの実施例において、前記方法は、第2のタイルによって第1のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを含むデータタイルを第2のタイルの第2のプロセッサによって決定するステップを含む。幾つかの実施例において、前記方法は、第1のタイルから受けられる要求を第2のプロセッサによってデータタイルへ送るステップを含む。幾つかの実施例において、前記方法は、データタイルによって第2のタイルから要求を受けるステップを含む。幾つかの実施例において、前記方法は、データブロックを、データタイルの第3のプロセッサによって、宛先識別子により識別される宛先タイルへ送るステップを含む。
【0006】
幾つかの実施例では、マルチプロセッサアーキテクチャのタイルが一般に記載される。幾つかの実施例において、前記タイルはプロセッサとテーブルとを含む。幾つかの実施例において、前記プロセッサは、データブロックの第1の要求を発生させるのに有効である。幾つかの実施例において、前記第1の要求は、データブロックのための宛先タイルの識別を含む宛先識別子を含み、宛先タイルはプロセッサを含むタイルと異なる。幾つかの実施例において、前記プロセッサは、該プロセッサを含むタイルから第1の要求を第2のタイルへ送るのに有効である。幾つかの実施例において、前記テーブルは、データブロックが宛先タイルに記憶されることを示すのに有効である。幾つかの実施例において、前記プロセッサは、データブロックにアクセスするための第2の要求を発生させるのに更に有効である。幾つかの実施例において、前記プロセッサは、宛先タイルがテーブルでインデックス付けされているかどうかを決定するためにテーブルを検索するのに有効である。幾つかの実施例では、宛先タイルがテーブルでインデックス付けされていると決定されると、前記プロセッサは、該プロセッサを含むタイルから第2の要求を宛先タイルへ送るのに有効である。幾つかの実施例では、宛先タイルがテーブルに存在しないと決定されると、前記プロセッサは、該プロセッサを含むタイルから第2の要求を第2のタイルへ送るのに有効である。
【0007】
前述した概要は、単なる例示であり、決して限定しようとするものではない。前述した例示的な態様、実施形態、および、特徴に加えて、図面および以下の詳細な説明を参照することにより、更なる態様、実施形態、および、特徴が明らかになる。
【0008】
この開示の前述の特徴および他の特徴は、添付図面と併せて解釈される以下の説明および添付の特許請求の範囲から更に十分に明らかになる。これらの図面が、本開示に係る単なる幾つかの実施形態を描いているにすぎず、したがって、本開示の範囲を限定すると見なされるべきでないことを理解しつつ、添付図面を用いることにより、本開示を更に具体的に詳しく説明する。
【図面の簡単な説明】
【0009】
図1】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
図2】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
図3】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
図4】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステム例を示している。
図5】マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。
図6】マルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。
図7】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのプロセス例における信号フロー図を描いている。
図8】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのプロセス例における信号フロー図を描いている。
図9】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためのコンピュータプログラムプロダクトを示している。
図10】マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうためにコンピュータデバイス上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラムプロダクトの一例を示す概略図を示している。
【発明を実施するための形態】
【0010】
以下の詳細な説明では、説明の一部を形成する添付図面を参照する。図中、同様の記号は、一般に、文脈が他の点を定めていなければ同様の構成要素を特定する。詳細な説明、図面、および、特許請求の範囲に記載される例示的な実施形態は、限定しようとするものではない。本明細書中で与えられる主題の思想または範囲から逸脱することなく、他の実施形態が利用されてもよく、また、他の変更がなされてもよい。容易に分かるように、本開示の態様は、本明細書中に一般に記載されるように、また、図面に示されるように、多種多様な異なる形態で配置でき、置き換えることができ、組み合わせることができ、分離でき、および、設計することができ、その全てが本明細書中に明示的にもくろまれる。
【0011】
この開示は、一般に、とりわけマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうことに関連する方法、装置、システム、デバイス、および、コンピュータプログラムプロダクトに対して描かれている。簡単に述べられている技術は、一般に、キャッシュに記憶されるデータブロックを送るためのシステムに関して記載される。本明細書中に記載される幾つかの実施例では、システムが第1のタイルに第1のプロセッサを備えてもよい。第1のプロセッサはデータブロックの要求を発生させるのに有効であり、前記要求はデータブロックのための宛先タイルを識別する宛先識別子を含み、宛先タイルは第1のタイルとは異なる。幾つかの実施例のシステムは、要求を受けるのに有効な第2のタイルを更に備えてもよく、第2のタイルはデータブロックを含むデータタイルを決定するのに有効であり、第2のタイルは要求をデータタイルへ送るのに更に有効である。幾つかの実施例のシステムは、第2のタイルから要求を受けるのに有効なデータタイルを更に備えてもよく、データタイルはデータブロックを宛先タイルへ送るのに有効である。
【0012】
図1は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられる、マルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの一実施例を示している。一実施例のシステム100は複数のタイルを含むダイ102を含んでもよい。1つのタイル118が簡略化のために示されている。各タイル118は、キャッシュ110と、プロセッサまたはプロセッサコア(以下、「プロセッサ」と称する)112と、ディレクトリ114と、ニアロケーションヒントテーブル(NLHT)117とを含んでもよい。プロセッサ112は、コードを含むデータ(以下、データおよびコードをいずれも「データブロック」と称する)を処理するようになっていてもよい。キャッシュ110は、プロセッサ112に対してローカルなデータブロックを記憶するように構成されてもよい。
【0013】
以下でより詳しく説明するように、他のタイルに記憶されるデータブロックへ書き込むあるいは該データブロックから読み取るなど、プロセッサ112がデータブロックにアクセスすることを要求するときには、プロセッサ112は、タイル118に近い隣接するあるいは近くのタイルのキャッシュにデータブロックが記憶されることを求める要求を開始してもよい。その後、タイル118のプロセッサ112が記憶されたデータブロックから読み取るあるいは該データブロックへ書き込むための他の要求を開始するときには、記憶されたデータブロックに対してより素早くアクセスできる。
【0014】
ニアロケーションヒントテーブル117の一例は、それぞれがタイル118のプロセッサ112により使用されるデータを記憶している隣接する複数のタイルのキャッシュのインデックスを含んでもよい。プロセッサ112は、要求されるデータブロックが隣接するタイルのキャッシュに記憶されているかどうかを確かめるために、ニアロケーションヒントテーブル117を検索するように構成されてもよい。
【0015】
ディレクトリ114は、ダイ102の全てのタイルに記憶されるそれぞれのデータブロックと関連付けられる場所を識別する(例えば、インデックスを付ける)ディレクトリであってもよい。ディレクトリ114は、ダイ102にある単一のタイルに配置されてもよく、または、多くのあるいは全てのタイル間で分配されてもよい。要求されるデータブロックがニアロケーションヒントテーブル117でインデックス付けされていない場合、プロセッサ112は、要求されるデータブロックに関して、他のタイル内にあってもよいディレクトリ114を検索してもよい。
【0016】
図2は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの実施例を示している。図2は、システム100にほぼ類似しており、更なる細部を伴う。図1の構成要素と全く同一にラベルが付されている図2の構成要素については、明確にするために再び説明はしない。
【0017】
図2に示されるように、ダイ102は、それぞれのキャッシュ110、150−164を含むタイル118、130−144の行列(例えば、配列)を含んでもよい。各タイルは、それぞれのプロセッサ112、ディレクトリ114、ロケーションヒント構造116、および/または、ニアロケーションヒントテーブル117のうちの1つ以上を含んでもよい。簡略化のため、タイル118のコンテンツだけが示されている。ダイ102にある各タイルが一様な配置のようにほぼ同じであってもよく、あるいは、幾つかのタイルが異種の配置のように異なっていてもよい。データを複数のダイ間で共有できるようにダイ102が他のダイ103と通信して配置されてもよい。
【0018】
ディレクトリ114は、タイル間で分配されてもよく、あるいは、1つのタイルに集約されてもよい。ディレクトリ114が分配される場合には、例えば、アドレスの第1の範囲(例えば、0x0000−0x1000)が第1のタイルに記憶され、アドレスの第2の範囲(例えば、0x1001−0x2000)が第2のタイルに記憶されるなどしてもよい。したがって、図のディレクトリ114はダイディレクトリ全体の第1の部分を示してもよい。この場合、その第1の部分がタイル118に記憶されてもよく、また、更なる部分がタイル130、131、132などの他のタイルに記憶されてもよい。ニアロケーションヒントテーブル117、ロケーションヒント構造116、および、ディレクトリ114は、例えばプロセッサ112によってアクセスできるデータ構造であってもよく、あるいは、プロセッサ112内のレジスタであってもよい。
【0019】
図3は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおいてデータ記憶およびアクセスを実施するために利用できるシステムの一実施例を示している。前述した構成要素と全く同一にラベルが付されている図3の構成要素については、明確にするために再び説明はしない。
【0020】
図3で与えられる実施例では、データがタイルのキャッシュ110、150−164に記憶されてもよく、あるいは、ダイ103にあるキャッシュに記憶されてもよい。要求しているタイル118のプロセッサ112は、データブロックXから読み取るおよび/またはデータブロックXへ書き込むなど、データブロックXにアクセスすることを求めるように構成されてもよい。データブロックXのためのディレクトリ114は他のディレクトリタイル143に記憶されてもよい。タイル118は、データブロックXのためのディレクトリタイル143へ要求180を送るように構成されてもよい。要求180は、例えば隣接するタイル130、133、134のキャッシュ150、153または154などの隣接するあるいは近くのタイル等の宛先タイルの識別を含んでもよい宛先識別子を含むことができる。一例において、タイル118は、データブロックXがタイル133のキャッシュ153へ送られることを要求してもよい。宛先識別子はキャッシュ153またはタイル133を参照してもよい。例えば、タイルは、タイルから1ネットワークホップ、2ネットワークホップ等の距離を隔てる隣接するキャッシュを示すトポロジーテーブルにアクセスしてもよい。タイルは、それぞれのタイルが追加のキャッシュ容量を必要とするかどうかを監視するようになっていてもよい構成要素を有してもよい。タイル118は、追加のキャッシュ容量が必要とされるときにデータブロックXが隣接するキャッシュへ送られることを要求するようになっていてもよい。
【0021】
幾つかの実施例において、ディレクトリタイル143は、要求180を受けるように構成されてもよく、ディレクトリタイル143のディレクトリ114を検索してもよく、また、データブロックXが記憶される場所−例えばキャッシュ157を決定してもよい。タイル143は、その後に要求180をデータタイル137のキャッシュ157へ送るように構成されてもよい。タイル137は、データブロックXを宛先タイル133のキャッシュ153へ送るように構成されてもよく、宛先タイル133のキャッシュ153からデータがタイル118の要求しているプロセッサ112へ転送されてもよい。タイル133へのデータブロックXの送信(または、送り)は、例えば、データブロックXの少なくとも一部をコピーすること、データブロックXの少なくとも一部を移動させること、あるいは、経時的な移動またはコピーの何らかの組み合わせなどの多くの操作を含んでもよい。また、読み取り操作または書き込み操作は、バスを介した通信のためにアドレスおよび/またはデータが利用できるときにあるいは相互接続ネットワークを介してメッセージを送ることにより読み取りあるいは書き込み要求ラインをアサートするなど、データ通信のための更なる技術的要件を含んでもよい。この場合、読み取り/書き込み操作は同期してもよく(例えば、クロックベースで)あるいは同期しなくてもよい(例えば、読み取り/書き込み肯定応答ベースで)。
【0022】
幾つかの実施例において、要求しているタイル118は、データブロックYに関して類似する要求180aを行なうように構成されてもよい。データブロックYのためのディレクトリは、ディレクトリタイル132のキャッシュ152に記憶されてもよい。要求180aは、隣接するキャッシュ150または154の宛先識別子を含んでもよい。タイル132は、要求180aを受けて、タイル132のディレクトリ114を検索するとともに、データブロックYが記憶されるデータタイル135へ要求180aを送るように構成されてもよい。タイル135は、宛先タイル130、134のキャッシュ150、154のいずれかあるいは両方へデータブロックYを送る184ように構成されてもよい。そこから、データは、タイル118の要求しているプロセッサ112へ転送されてもよい。
【0023】
図4は、本明細書中に記載される少なくとも幾つかの実施形態にしたがって設けられるマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうことができるシステムのシステム図である。前述した構成要素と全く同一にラベルが付されている図4の構成要素については、明確にするために再び説明はしない。
【0024】
図4に与えられる実施例において、タイル118は、データブロックXがタイル133に記憶され且つデータブロックYがタイル130、134に記憶されることを示すためにタイル118に記憶されるニアロケーションヒントテーブル117を更新するように構成されてもよい。ニアロケーションヒントテーブル117は、最初にディレクトリではなくタイル133のデータを検索することがおそらく有利であるというヒントをタイル118に与える。タイル118がデータブロックXまたはデータブロックYにアクセスするように要求されると、タイル118は、どのタイルが要求を送信すべきかを決定するために、XおよびYに関する対応するディレクトリの代わりに、ニアロケーションヒントテーブル117を最初に検索するように構成されてもよい。これは、データブロックX、Yのキャッシュ格納場所を識別する情報へのより迅速なアクセスをもたらす場合がある。ニアロケーションヒントテーブル117がタイル118のローカルレジスタに記憶されるため、ニアロケーションヒントテーブル117に更に容易にアクセスできる。ニアロケーションヒントテーブル117が所望のデータブロックのためのエントリを含まない場合、または、タイル118がニアロケーションヒントテーブル117に示されるタイルで検索してデータブロックが見つけられない場合には、タイル118は、適用可能なディレクトリを有するタイルへ要求を送るように構成されてもよい。
【0025】
ニアロケーションヒントテーブル117は、キャッシュブロックと同じあるいはキャッシュブロックとは異なる粒度を有するデータロケーションヒントをトラッキングしてもよい。ニアロケーションヒントテーブル117は、キャッシュブロック、一群の関連するキャッシュブロック、ページ、または、他の粒度の場所をトラッキングできる。テーブル117は、トラッキング粒度に基づいてデータアドレスによってインデックスが付けられ、データを記憶してもよい宛先タイルを指し示す。大きい粒度は、トラッキングするために使用されるテーブルサイズを減少させることができ、一方、小さい粒度は、異なる宛先タイルでデータの更に柔軟な配置を可能にする。コヒーレンス正確性がディレクトリ・キャッシュコヒーレンスプロトコルによって維持されてもよい。幾つかの実施例では、データがもはやインデックス付きの宛先タイルにないときなど、テーブル117のエントリが古い情報を有する場合には、性能が影響を受ける場合があるが、コヒーレンス正確性は影響されない場合がある。テーブルがオーバーフローする場合には、テーブルのエントリが交換されてもよい。キャッシュブロックよりも大きい粒度でデータの宛先としてテーブル117のエントリが隣接するタイルを指し示す場合には、データの幾つかのブロックが依然としてローカルキャッシュにあってもよいが、他のブロックは隣接する宛先タイルに配置されてもよい。ローカルキャッシュ内の特定のデータに属するブロックがエビクトされて、プロセッサが特定のデータのそのブロックを要求すると、ブロックが再びフェッチされてもよく、また、ブロックが宛先タイルに配置されてもよい。したがって、経時的に、特定のデータのブロックがローカルキャッシュから宛先タイルへ移動する。
【0026】
タイル143は、Xがたった今タイル133に記憶されることを示すためにディレクトリ114およびロケーションヒント構造116を更新するように構成されてもよい。タイル132は、Yがたった今タイル130、134に記憶されることを示すためにディレクトリ114およびロケーションヒント構造116を更新するように構成されてもよい。ロケーションヒント構造116のエントリは、ブロックを読み取ることが求められるプロセッサに対してロケーションヒント情報を伝える。この情報に応じて、要求しているタイルのプロセッサは、データを局所的にキャッシュするように構成されてもよい。あるいは、宛先タイルが隣接している場合には、プロセッサは、宛先タイルのキャッシュ内へのデータの記憶を要求するように構成され得る。プロセッサは、ディレクトリについて問い合わせする前に、プロセッサが今後の要求に関してこの宛先タイルを検索するようにそれ自体のニアロケーションヒントテーブルを更新するべく構成することができる。ロケーションヒント構造は、性能向上のために使用されてもよく、また、正確な情報を有している必要がない。ロケーションヒント構造は、所定のデータのための全ての場所のトラッキングを維持するように構成されてもよく、あるいは、全ての場所のトラッキングを維持しないように構成されてもよい。ディレクトリは、所定のデータブロックのための全ての想定し得る場所のトラッキングを維持する。システム100がブロック粒度でデータブロックの場所をトラッキングするように指示されている場合には、そのような情報を与えるためにディレクトリを使用できる。システム100が一群のブロック、ページ、または、他の粒度の場所をトラッキングするように指示されている場合には、ロケーションヒント構造が使用されてもよい。
【0027】
一例において、タイル118などのタイルがタイル143からデータブロックXを要求するときには、タイル143は、ディレクトリ114全体を検索する前に最初にデータブロックXの場所に関してロケーションヒント構造116を検索するように構成されてもよい。このとき、要求しているタイル(タイル118または他のタイル)は、ロケーションヒント構造116によって示されるタイルで検索するという選択肢、または、ディレクトリ114で検索するという選択肢を有する。ロケーションヒント構造116は、ディレクトリ114内にあってもよく、ディレクトリ114の外側にあってもよく、ダイ102の内側にあってもよく、あるいは、ダイ102の外側にあってもよい。
【0028】
幾つかの実施例において、キャッシュ150、153、154は、タイル118のキャッシュ110に適合できないかもしれないデータブロックを記憶するために、あるいは、キャッシュ110に記憶されるデータブロックとは異なる優先レベルをもってデータブロックを記憶するために、タイル118により使用されてもよい。例えば、近い将来にアクセスされる確率が高いブロックが高い優先順位を有してもよい。他のブロックよりも高い優先順位を有するブロックは、それらにアクセスするための待ち時間を最小にするために可能な限りプロセッサの近傍に配置されてもよい。例えば、優先レベルが最も高いブロックは、要求しているタイルのローカルキャッシュに配置されてもよく、また、僅かに低い優先レベルは、最も近い隣接タイルに配置されてもよい。タイル118に物理的に近いタイルにデータが記憶されると、多くの利益がもたらされる場合がある。1つの実施例では、タイル118に物理的に近接させてデータブロックを配置すると、タイル118のプロセッサ112のためのデータアクセス時間を減らすことができる。他の実施例では、データブロックの配置が、ダイ102における全体のダイトラフィックを減少させる場合があり、および/または、キャッシュミスを最小にする場合があり、それにより、さもなければ古くなるあるいはページアウトされるであろうデータにアクセスできる。タイル118は、タイル118のキャッシュに対応しない宛先識別子を送ることによりデータがタイル118のキャッシュ以外のキャッシュへ送られることを連続的に要求するように構成されてもよい。幾つかの実施例において、タイル118は、宛先識別子をキャッシュ110に対応させることによりデータブロックがキャッシュ110へ送られることを要求するように構成されてもよい。幾つかの実施例において、要求しているプロセッサは、異なるタイルのキャッシュに記憶されるデータの閾値よりも多くを要求することが抑制されてもよい。このようにすると、この異なるタイルにおけるプロセッサにより必要とされるローカルデータには悪影響が及ばない。
【0029】
前述したように、タイル118がデータブロックXにアクセスするように要求されると、タイル118は、データブロックXを記憶するキャッシュに関してニアロケーションヒントテーブル117を検索するように構成されてもよい。タイル118がデータブロックを記憶するキャッシュに関する表示をロケーションヒントテーブル117で見つけることができない場合、タイル118は、データブロックXのためのディレクトリへ要求を送るように構成されてもよい。同様に、タイル118がニアロケーションヒントテーブル117に表示されたタイルへ要求を行なった場合であって、適切なデータブロックが表示されたタイルに記憶されていない場合には、タイル118は、データブロックXのためのディレクトリへ要求を送るように構成されてもよい。ニアロケーションヒントテーブル117は、ディレクトリ114を使用してキャッシュコヒーレンス実施に影響を与える必要がない。
【0030】
他の想定し得る利点のうちで、システム100は、各タイルが各タイルに存在しているものよりも大きいキャッシュを使用できるようにしてもよい。集約キャッシュが、タイルに隣接していてもよいあるいは隣接していなくてもよい複数のタイルからのキャッシュを備えてもよい。集約キャッシュは、キャッシュミスが殆ど起こり得ず且つデータブロックをダイから外す要求が殆ど起こり得ないことを示唆してもよい。集約キャッシュが大きくなると、より多くのデータをキャッシュに記憶できるが、要求されるデータがキャッシュに記憶される他の必要とされるデータをエビクトする機会が少なくなる場合がある。また、集約キャッシュが大きくなると、データの複数の断片が単一のおそらく更に小さいキャッシュ内で空間を得るために争う必要がない。
【0031】
隣接するタイルのキャッシュを使用できれば、アクセス時間を短いままにすることができる。この開示の少なくとも幾つかの原理に係るシステムは、既存のキャッシュコヒーレンスプロトコルに対して僅かな変更を行なうことにより実施されてもよい。情報が古くなる場合には、キャッシュされたデータの場所を見つけるためにキャッシュディレクトリが依然として使用されてもよい。要求しているプロセッサに対して物理的に近接するキャッシュにデータが記憶される結果として、および/または、ダイの全体にわたって分布されるタイルのキャッシュディレクトリに対してプロセッサがあまり頻繁にアクセスしなくてもよいという理由により、キャッシュ内およびチップネットワークトラフィック上のデータへのアクセス待ち時間が減らされてもよい。
【0032】
図5は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。幾つかの実施例では、図5のプロセスを前述したシステム100を使用して実施することができる。プロセスの一例は、ブロックS2、S4、S6、S8、S10、S12、S14、S16、S18、S20、および/または、S22のうちの1つ以上によって示される1つ以上の操作、行為、または、機能を含んでもよい。別個のブロックとして示されているが、所望の実施に応じて、様々なブロックが更なるブロックへ分けられてもよく、様々なブロックが更に少ないブロックへと組み合わされてもよく、あるいは、様々なブロックが排除されてもよい。処理がブロックS2で始まってもよい。
【0033】
ブロックS2において、要求しているタイルは、データブロックの要求をディレクトリタイルへ送るあるいは開始するようになっていてもよい。要求は、要求しているタイルがデータブロックを記憶するためのタイルを示す宛先識別子を含んでもよい。ディレクトリタイルは、要求されたデータブロックのためのディレクトリを含んでもよい。幾つかの実施例において、宛先タイルは、要求しているタイルに隣接するタイル(例えば、要求しているタイルに近いあるいは要求しているタイルに物理的に近接するタイル)であってもよい。処理がブロックS2からブロックS4へと続いてもよい。また、処理がブロックS2からブロックS6へと続いてもよい。
【0034】
ブロックS4において、要求しているタイルのプロセッサは、宛先識別子に対応するタイルのキャッシュにデータブロックが記憶されてもよいことを示すためにニアロケーションヒントテーブルを更新するようになっていてもよい。
【0035】
ブロックS6において、ディレクトリタイルは、要求しているタイルから要求を受けるようになっていてもよい。処理がブロックS6からブロックS8へと続いてもよい。
【0036】
ブロックS8において、ディレクトリタイルは、データブロックを記憶する適切なデータタイルに関してディレクトリを検索するようになっていてもよく、また、受けられた要求をそのデータタイルへ送ってもよい。処理がブロックS8からブロックS10へ続いてもよい。また、処理がブロックS8からブロックS14へ続いてもよい。
【0037】
ブロックS10において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにディレクトリを更新するようになっていてもよい。処理がブロックS10からブロックS12へ続いてもよい。
【0038】
ブロックS12において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにロケーションヒント構造を更新するようになっていてもよい。ロケーションヒント構造を使用して、ディレクトリが検索される前にデータブロックの場所を決定することができる。
【0039】
ブロックS14では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理がブロックS14からブロックS16へ続いてもよい。
【0040】
ブロックS16において、データタイルは、データブロックを宛先タイルおよび要求しているタイルへ送るようになっていてもよい。処理がブロックS16からブロックS18、S22へ続いてもよい。ブロックS22では、要求しているプロセッサがデータブロックを受けるようになっていてもよい。
【0041】
ブロックS18では、宛先タイルがデータブロックを受けるようになっていてもよい。処理がブロックS18からブロックS20へ続いてもよい。
【0042】
ブロックS20では、宛先タイルがデータブロックをキャッシュに記憶するようになっていてもよい。
【0043】
図6は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。図6のプロセスは、例えば前述したシステム100を使用して実施できる。プロセスの一例は、ブロックS40、S44、S45、S46、S48、S50、S52、S53、S54、S56、S58、S60、および/または、S62のうちの1つ以上によって示される1つ以上の操作、行為、または、機能を含んでもよい。別個のブロックとして示されているが、所望の実施に応じて、様々なブロックが更なるブロックへ分けられてもよく、様々なブロックが更に少ないブロックへと組み合わされてもよく、あるいは、様々なブロックが排除されてもよい。処理がブロックS40で始まってもよい。
【0044】
ブロックS40において、要求しているタイルがそのローカルキャッシュでデータブロックを見つけない場合、要求しているタイルは、要求しているタイルの外側のキャッシュに記憶されるデータブロックへのアクセスを要求するように構成されてもよい。処理がブロックS40からブロックS42へ続いてもよい。
【0045】
ブロックS42において、要求しているタイルは、データブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかを確かめるためにニアロケーションヒントテーブルを検索するように構成されてもよい。処理がブロックS42からブロックS44へ続いてもよい。
【0046】
ブロックS44では、要求されたデータブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかの問い合わせを行なうことができる。データブロックがニアロケーションヒントテーブルでインデックス付けされていると決定される(「Yes」)と、処理がブロックS44からブロックS46へ続いてもよい。幾つかの実施例において、ブロックS45、S46は、データブロックがデータタイルで見つけられない場合にディレクトリにアクセスする待ち時間を最小限に抑えるために並行して行なわれてもよい。あるいはそうではなく、データブロックがニアロケーションヒントテーブルでインデックス付けされていない(「No」)という決定がなされると、あるいは、テーブルでインデックス付けされる場所がデータブロックを有さない場合には、処理がブロックS44からブロックS45へ続いてもよい。
【0047】
ブロックS46において、要求しているタイルは、要求を適切なデータタイルへ送るようになっていてもよい。処理がブロックS45からブロックS58へ続いてもよい。
【0048】
ブロックS45において、要求しているタイルは、データブロックのためのディレクトリを含むディレクトリタイルへ要求を送るようになっていてもよい。処理がブロックS45からブロックS48へ続いてもよい。
【0049】
ブロックS48では、ディレクトリタイルが要求を受けるようになっていてもよい。処理がブロックS48からブロックS50へ続いてもよい。
【0050】
ブロックS50では、ディレクトリタイルがデータブロックに関してロケーションヒント構造を検索するようになっていてもよい。処理がブロックS50からブロックS52へ続いてもよい。
【0051】
ブロックS52では、データブロックがロケーションヒント構造でインデックス付けされているかどうかを決定するために、ロケーションヒント構造に対して問い合わせが行なわれてもよい。データブロックがロケーションヒント構造でインデックス付けされていると決定される(「Yes」)と、処理がブロックS52からブロックS53へ続いてもよい。ブロックS53では、ディレクトリタイルがロケーションヒントを要求しているタイルへ送るようになっていてもよい。ブロックS53の後にブロックS64が続いてもよく、ブロックS64では、要求しているタイルがニアロケーションヒントテーブルを更新するのに有効であってもよい。処理がブロックS52からブロックS54へ続いてもよい。
【0052】
ブロックS54では、ディレクトリタイルがデータタイルに関してディレクトリを検索するようになっていてもよい。処理がブロックS54からブロックS56へ続いてもよい。
【0053】
ブロックS56では、要求がディレクトリタイルからデータタイルへ送られてもよい。処理がブロックS53からブロックS58へ続いてもよい。
【0054】
ブロックS58では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理がブロックS58からブロックS60へ続いてもよい。
【0055】
ブロックS60では、データタイルがデータブロックを要求しているタイルへ送るようになっていてもよい。処理がブロックS60からブロックS62へ続いてもよい。
【0056】
ブロックS62では、要求しているタイルがデータブロックをデータタイルから受けるようになっていてもよい。
【0057】
図7は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関する信号フロー図を描いている。幾つかの実施例において、図7のプロセスは、前述したシステム100を使用して実施されてもよい。プロセスの一例は、操作502、504、506、508、510、512、514、516、517、518、520および/または522のうちの1つ以上によって示される1つ以上の操作、行為、または、機能を含んでもよい。別個の操作として示されているが、所望の実施に応じて、様々な操作が更なる操作へ分けられてもよく、様々な操作が更に少ない操作へと組み合わされてもよく、あるいは、様々な操作が排除されてもよい。処理が操作502で始まってもよい。
【0058】
操作502において、要求しているタイルは、データブロックの要求をディレクトリタイルへ送るあるいは開始するようになっていてもよい。要求は、要求しているタイルがデータブロックを記憶するためのタイルを示す宛先識別子を含んでもよい。ディレクトリタイルは、要求されたデータブロックのためのディレクトリを含む。幾つかの実施例において、宛先タイルは、要求しているタイルに隣接するタイルであってもよい。処理が操作502から操作504へと続いてもよい。
【0059】
操作504において、要求しているタイルのプロセッサは、宛先識別子に対応するタイルのキャッシュにデータブロックが記憶されてもよいことを示すためにニアロケーションヒントテーブルを更新してもよい。処理が操作502から操作506へと続いてもよい。
【0060】
操作506では、ディレクトリタイルが要求を受けるようになっていてもよい。処理が操作506から操作508へと続いてもよい。
【0061】
操作508において、ディレクトリタイルは、データブロックを記憶する適切なデータタイルに関してディレクトリを検索するようになっていてもよく、また、要求をそのデータタイルへ送ってもよい。処理が操作508から操作510および操作514へ続いてもよい。
【0062】
操作510において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにディレクトリを更新するようになっていてもよい。処理が操作510から操作512へ続いてもよい。
【0063】
操作512において、ディレクトリタイルは、データブロックが今から宛先識別子に対応するタイルに記憶されることを示すためにロケーションヒント構造を更新するようになっていてもよい。ロケーションヒント構造を使用して、ディレクトリが検索される前にデータブロックの場所を決定することができる。
【0064】
操作514では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理が操作514から操作516、517へ続いてもよい。
【0065】
操作517において、データタイルは、データブロックを要求しているタイルへ送るようになっていてもよい。処理が操作517から操作522へ続いてもよい。操作522では、要求しているプロセッサがデータブロックを受けるようになっていてもよい。
【0066】
操作516では、データタイルがデータブロックを宛先タイルへ送るようになっていてもよい。処理が操作516から操作518へ続いてもよい。
【0067】
操作518では、宛先タイルがデータブロックを受けるようになっていてもよい。処理が操作518から操作520へ続いてもよい。
【0068】
操作520では、宛先タイルがデータブロックをキャッシュに記憶するようになっていてもよい。
【0069】
図8は、本開示の少なくとも幾つかの実施形態にしたがって設けられるマルチコアプロセッサアーキテクチャにおけるデータ記憶およびアクセスのためのプロセス例に関するフロー図を描いている。幾つかの実施例において、図8のプロセスは、前述したシステム100を使用して実施されてもよい。プロセスの一例は、操作540、542、544、545、546、548、550、552、553、554、556、558、560および/または562のうちの1つ以上によって示される1つ以上の操作、行為、または、機能を含んでもよい。別個の操作として示されているが、所望の実施に応じて、様々な操作が更なる操作へ分けられてもよく、様々な操作が更に少ない操作へと組み合わされてもよく、あるいは、様々な操作が排除されてもよい。処理が操作540で始まってもよい。
【0070】
操作540において、要求しているタイルは、要求しているタイルの外側のキャッシュに記憶されるデータブロックへのアクセスを要求するように構成されてもよい。処理が操作540から操作542へ続いてもよい。
【0071】
操作542において、要求しているタイルは、データブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかを確かめるためにニアロケーションヒントテーブルを検索するように構成されてもよい。処理が操作542から操作544へ続いてもよい。
【0072】
操作544では、要求されたデータブロックがニアロケーションヒントテーブルでインデックス付けされているかどうかの問い合わせを行なうことができる。データブロックがニアロケーションヒントテーブルでインデックス付けされていると決定される(「Yes」)と、処理が操作544から操作546へ続いてもよい。
【0073】
あるいはそうではなく、データブロックがニアロケーションヒントテーブルでインデックス付けされていない(「No」)という決定がなされると、あるいは、テーブルでインデックス付けされる場所がデータブロックを有さない場合には、処理が操作544から操作545へ続いてもよい。
【0074】
操作546において、要求しているタイルは、要求を適切なデータタイルへ送るようになっていてもよい。処理が操作546から操作558へ続いてもよい。
【0075】
操作545において、要求しているタイルは、データブロックのためのディレクトリを含むディレクトリタイルへ要求を送るようになっていてもよい。処理が操作545から操作548へ続いてもよい。
【0076】
操作548では、ディレクトリタイルが要求しているタイルから要求を受けるようになっていてもよい。処理が操作548から操作550へ続いてもよい。
【0077】
操作550では、ディレクトリタイルがデータブロックに関してロケーションヒント構造を検索するようになっていてもよい。処理が操作550から操作552へ続いてもよい。
【0078】
操作552では、データブロックがロケーションヒント構造でインデックス付けされているかどうかを決定するために問い合わせが行なわれてもよい。データブロックがロケーションヒント構造でインデックス付けされていると決定される(「Yes」)と、処理が操作552から操作553へ続いてもよい。操作553では、ディレクトリタイルがロケーションヒントを要求しているタイルへ送るようになっていてもよい。操作553の後に操作564が続いてもよく、操作564では、要求しているタイルがニアロケーションヒントテーブルを更新するのに有効であってもよい。
【0079】
処理が操作552から操作554へ続いてもよい。
【0080】
操作554では、ディレクトリタイルがデータタイルに関してディレクトリを検索するようになっていてもよい。操作554は操作548、550と並行に行なうことができる。処理が操作554から操作556へ続いてもよい。
【0081】
操作556では、操作548でディレクトリタイルにより受けられる要求が操作554で識別されたデータタイルへ送られてもよい。処理が操作556から操作558へ続いてもよい。
【0082】
操作558では、データタイルがディレクトリタイルから要求を受けるようになっていてもよい。処理が操作558から操作560へ続いてもよい。
【0083】
操作560では、データタイルがデータブロックを要求しているタイルへ送るようになっていてもよい。処理が操作560から操作562へ続いてもよい。
【0084】
操作562では、要求しているタイルがデータブロックをデータタイルから受けるようになっていてもよい。
【0085】
図9は、本開示の少なくとも幾つかの実施例にしたがって設けられるコンピュータプログラムプロダクト300の一例を示している。プログラムプロダクト300は信号担持媒体302を含んでもよい。信号担持媒体302は、例えばプロセッサにより実行されるときに図1−8に関して前述した機能性を与えてもよい1つ以上の命令304を含んでもよい。したがって、例えば、システム100を参照すると、タイル118、130−144のプロセッサ112のうちの1つ以上が、媒体302によってシステム100へ伝えられる命令304に応じて図9に示されるブロックのうちの1つ以上に着手してもよい。
【0086】
幾つかの実施において、信号担持媒体302は、これらに限定されないがハードディスクドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、デジタルテープ、メモリなどのコンピュータ可読媒体306を含んでもよい。幾つかの実施において、信号担持媒体302は、これらに限定されないがメモリ、読み取り/書き込み(R/W)CD、R/W DVDなどの記録できる媒体308を含んでもよい。幾つかの実施において、信号担持媒体302は、これらに限定されないがデジタルおよび/またはアナログ通信媒体(例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク等)などの通信媒体310を含んでもよい。したがって、例えば、プログラムプロダクト300は、RF信号担持媒体302によってシステム100の1つ以上のモジュールへ伝えられてもよい。この場合、信号担持媒体302は無線通信媒体310(例えば、IEEE802.11標準規格に従う無線通信媒体)によって伝えられてもよい。
【0087】
図10は、本開示の少なくとも幾つかの実施形態に係るマルチプロセッサアーキテクチャにおいてデータ記憶およびアクセスを行なうようになっているコンピュータデバイス400の一例を示すブロック図である。非常に基本的な構成402において、コンピュータデバイス400は、一般に、1つ以上のプロセッサ404と、システムメモリ406とを含む。プロセッサ404とシステムメモリ406との間の通信のためにメモリバス408が使用されてもよい。
【0088】
所望の構成に応じて、プロセッサ404は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、または、これらの任意の組み合わせを含むがこれらに限定されない任意のタイプのものであってもよい。プロセッサ404は、レベル1キャッシュ410およびレベル2キャッシュ412などの1つ以上のレベルのキャッシングと、プロセッサコア414と、レジスタ416とを含んでもよい。プロセッサコア414の一例としては、算術論理演算ユニット(ALU)、浮動小数点演算ユニット(FPU)、デジタル信号処理コア(DSPコア)、または、これらの任意の組み合わせを挙げることができる。メモリコントローラ418の一例がプロセッサ404と共に使用されてもよく、あるいは、幾つかの実施では、メモリコントローラ418がプロセッサ404の内部部品であってもよい。
【0089】
所望の構成に応じて、システムメモリ406は、揮発性メモリ(例えばRAM)、不揮発性メモリ(例えば、ROM、フラッシュメモリなど)、あるいは、これらの任意の組み合わせを含むがこれらに限定されない任意のタイプのものであってもよい。システムメモリ406は、オペレーティングシステム420、1つ以上のアプリケーション422、および、プログラムデータ424を含んでもよい。アプリケーション422は、図2のシステム100に関して説明した機能を含む本明細書中に記載される機能を果たすようになっているマルチプロセッサアーキテクチャアルゴリズム426におけるデータ記憶およびアクセスを含んでもよい。プログラムデータ424は、本明細書中に記載されるマルチプロセッサアーキテクチャアルゴリズムにおけるデータ記憶およびアクセスに役立ち得る記憶・マルチプロセッサアーキテクチャデータ428を含んでもよい。幾つかの実施形態では、アプリケーション422がオペレーティングシステム420でプログラムデータ424により動作するようになっていてもよく、それにより、マルチプロセッサアーキテクチャアルゴリズムにおけるデータ記憶およびアクセスが行なわれてもよい。図10では、この記載された基本的構成402が内側の破線内の構成要素により示されている。
【0090】
コンピュータデバイス400は、基本構成402と任意の所要のデバイスおよびインタフェースとの間の通信を容易にするために、更なる特徴または機能性と、更なるインタフェースとを有してもよい。例えば、バス/インタフェースコントローラ430は、記憶インタフェースバス434を介した基本構成402と1つ以上のデータ記憶デバイス432との間の通信を容易にするために使用されてもよい。データ記憶デバイス432は、取り外し可能な記憶デバイス436、取り外し不能な記憶デバイス438、または、これらの組み合わせであってもよい。取り外し可能な記憶デバイスおよび取り外し不能な記憶デバイスの例としては、幾つか例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、および、テープドライブが挙げられる。コンピュータ記憶媒体の例としては、コンピュータ可読命令、データ構造、プログラムモジュール、または、他のデータなどの情報の記憶のための任意の方法または技術で実施される、揮発性および不揮発性の取り外し可能なおよび取り外し不能な媒体を挙げることができる。
【0091】
システムメモリ406、取り外し可能な記憶デバイス436、および、取り外し不能な記憶デバイス438は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、所望の情報を記憶するために使用されてもよく且つコンピュータデバイス400によってアクセスされてもよい、RAM、ROM、EEPROM、フラッシュメモリ、または、他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または、他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは、任意の他の媒体が挙げられるが、これらに限定されない。任意のそのようなコンピュータ記憶媒体は、コンピュータデバイス400の一部であってもよい。
【0092】
コンピュータデバイス400は、バス/インタフェースコントローラ430を介した様々なインタフェースデバイス(例えば、出力デバイス442、周辺インタフェース444、および、通信デバイス446)から基本構成402への通信を容易にするためのインタフェースバス440を含んでもよい。出力デバイス442の実施例は、1つ以上のA/Vポート452を介してディスプレイまたはスピーカなどの様々な外部デバイスへ通信するように構成されてもよいグラフィックス処理ユニット448および音声処理ユニット450を含む。周辺インタフェース444の実施例は、1つ以上のI/Oポート458を介して入力デバイス(例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等)または他の周辺デバイス(例えば、プリンタ、スキャナ等)などの外部デバイスと通信するように構成されてもよいシリアルインタフェースコントローラ454またはパラレルインタフェースコントローラ456を含む。通信デバイス446の実施例は、1つ以上の通信ポート464を介したネットワーク通信リンクによる1つ以上の他のコンピュータデバイス462との通信を容易にするようになっていてもよいネットワークコントローラ460を含む。
【0093】
ネットワーク通信リンクは通信媒体の一例であってもよい。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または、変調データ信号中の他のデータ、例えば搬送波または他の輸送機構によって具現化されてもよく、また、任意の情報伝達媒体を含んでもよい。「変調データ信号」は、その特性のうちの1つ以上が信号中の情報をエンコードするような態様で設定されあるいは変えられる信号であってもよい。一例として、限定的ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、および、音響、高周波(RF)、マイクロ波、赤外線(IR)、および、他の無線媒体などの無線媒体を含んでもよい。本明細書中で使用されるコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含んでもよい。
【0094】
コンピュータデバイス400は、小型フォームファクタポータブル(またはモバイル)電子デバイス、例えば、携帯電話、パーソナルデータアシスタント(PDA)、パーソナルメディアプレーヤデバイス、無線ウェブウォッチデバイス、パーソナルヘッドセットデバイス、アプリケーション固有デバイス、または、前述した任意の機能を含むハイブリッドデバイスの一部として実施されてもよい。コンピュータデバイス400は、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実施されてもよい。
【0095】
本開示は、様々な態様の例示として意図されるこの出願に記載された特定の実施例に関して限定されるべきではない。当業者であれば分かるように、その思想および範囲から逸脱することなく多くの改良および変形を行なうことができる。本明細書中で列挙された方法および装置に加えて、本開示の範囲内の機能的に等価な方法および装置は、前述した説明から当業者に明らかである。そのような改良および変形は、添付の請求項の範囲内に入るように意図される。本開示は、そのような請求項の権利が与えられる等価物の全範囲と共に、添付の請求項の用語によってのみ限定されるべきである。言うまでもなく、この開示は、特定の方法、試薬、化合物組成、または、生物系に限定されず、無論、これらは変化し得る。また、本明細書中で使用される専門用語が、単に特定の実施形態を説明するという目的のためのものにすぎず、限定しようとするものでないことは言うまでもない。
【0096】
本明細書中でのほぼ任意の複数形および/または単数形の用語の使用に関して、当業者は、文脈および/または用途に適するように複数形から単数形へおよび/または単数形から複数形へ変換できる。明確にするために、本明細書中には、様々な単数形/複数形の置換が明示的に記載されている場合がある。
【0097】
当業者であれば分かるように、一般に、本明細書中で、特に添付の特許請求の範囲(例えば、添付の請求項の本文)で使用される用語は、一般に、「開かれた」用語(open terms)として意図される(例えば、用語「含んでいる」は、「〜を含んでいるがこれらに限定されない」として解釈されるべきであり、用語「有する」は、「少なくとも有する」として解釈されるべきであり、用語「含む」は、「〜を含むがこれらに限定されない」として解釈されるべきである)。また、当業者であれば分かるように、導入請求項列挙の特定の要素が意図される場合には、そのような意図が請求項に明示的に列挙され、また、そのような列挙がない場合には、そのような意図は存在しない。例えば、理解を助けるものとして、以下の添付の請求項は、請求項列挙を導入するために「少なくとも1つの」および「1つ以上の」という導入表現の使用を含む場合がある。しかしながら、そのような表現の使用は、同じ請求項が「1つ以上」または「少なくとも1つの」という導入表現および「1つの(a、an)」(例えば、「a」および/または「an」は「少なくとも1つの」または「1つ以上」を意味するように解釈されるべきである)などの不定冠詞を含む場合であっても、不定冠詞「1つの(a、an)」による請求項列挙の導入がそのような導入請求項列挙を含む任意の特定の請求項をたった1つのそのような列挙を含む実施形態に限定することを意味するように解釈されるべきではない。また、同じことが、請求項列挙を導入するために使用される定冠詞の使用においても当てはまる。また、導入請求項列挙の特定の要素が明示的に列挙されている場合であっても、当業者であれば分かるように、そのような列挙は、少なくとも列挙された要素を意味するように解釈されるべきである(例えば、他の修飾語句を伴わない「2つの列挙」の剥き出しの列挙は、少なくとも2つの列挙、または、2つ以上の列挙を意味する)。また、「A、B、および、C等のうちの少なくとも1つ」に類似する慣例が使用される場合には、一般に、そのような構文は、当業者がその慣例を理解できるという意味で意図される(例えば、「A、B、および、Cのうちの少なくとも1つを有するシステム」は、Aだけを有する、Bだけを有する、Cだけを有する、AおよびBを共に有する、AおよびCを共に有する、BおよびCを共に有する、および/または、A、B、Cを共に有するなどといったシステムを含むがこれに限定されない)。「A、B、または、C等のうちの少なくとも1つ」に類似する慣例が使用される場合には、一般に、そのような構文は、当業者がその慣例を理解できるという意味で意図される(例えば、「A、B、または、Cのうちの少なくとも1つを有するシステム」は、Aだけを有する、Bだけを有する、Cだけを有する、AおよびBを共に有する、AおよびCを共に有する、BおよびCを共に有する、および/または、A、B、Cを共に有するなどといったシステムを含むがこれに限定されない)。また、当業者であれば分かるように、2つ以上の代替用語を与えるほぼ任意の離接語および/または表現は、明細書本文、特許請求の範囲、または、図面であろうとなかろうと、これらの用語のうちの1つ、用語のいずれか、あるいは、両方の用語を含む可能性を考慮するように理解されるべきである。例えば、表現「AまたはB」は、「A」または「B」または「AおよびB」の可能性を含むように理解される。
【0098】
また、本開示の特徴または態様がマーカッシュグループの観点で記載される場合には、当業者であれば分かるように、それによって、本開示はマーカッシュグループの任意の個々の要素または要素のサブグループに関しても記載されている。
【0099】
当業者であれば分かるように、任意のおよび全ての目的のため、例えば書面による説明を行なうという観点から、本明細書中に開示される全ての範囲は、任意のおよび全ての想定し得る部分範囲およびその部分範囲の組み合わせも包含する。任意の記載された範囲は、同じ範囲が少なくとも等しい1/2部分、1/3部分、1/4部分、1/5部分、1/10部分などへ分けられることを十分に記載しており可能であるとして容易に認識され得る。非限定的な例として、本明細書中に記載されるそれぞれの範囲は、下側の1/3、中間の1/3、上側の1/3などへと容易に分けることができる。また、当業者であれば分かるように、「最大で」、「少なくとも」、「よりも大きい」、「よりも小さい」などの全ての言葉は、記載された数を含んでおり、後に前述した部分範囲へと分けられ得る範囲を示す。最後に、当業者であれば分かるように、範囲はそれぞれの個々の要素を含む。したがって、例えば、1−3個のセルを有するグループは、1個、2個、または、3個のセルを有するグループを示す。同様に、1−5個のセルを有するグループは、1個、2個、3個、4個、または、5個のセルを有するグループを示す。他も同様である。
【0100】
様々な態様および実施形態について本明細書中で開示してきたが、他の態様および実施形態は当業者に明らかである。本明細書中に開示される様々な態様および実施形態は、例示目的であって、限定しようとするものではない。真の範囲および思想は以下の特許請求の範囲によって示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10