(57)【要約】      （修正有）【課題】マルチプロセッサ共有メモリシステムにおける改善されたデータ管理を提供する。【解決手段】システムは、複数のホストプロセッサと、ホストプロセッサに対する分散共有メモリとして構成された複数のハイブリッドメモリキューブ（ＨＭＣ）デバイス１０５とを含む。ＨＭＣデバイスは、第２のメモリダイ１１０の上端に配置された少なくとも第１のメモリダイを含む複数の集積回路メモリダイを含む。メモリダイのメモリの少なくとも一部は、メモリコヒーレンスディレクトリの少なくとも一部を含むようにマッピングされ、少なくとも１つの第２のデバイスによる複数のメモリダイのメモリへの三次元（３Ｄ）アクセスを管理するように構成された少なくとも１つのメモリコントローラ及び複数のメモリダイのメモリに記憶されたデータに対するメモリコヒーレンスプロトコルを実装するように構成された論理回路を含む論理ベースダイ１１５を含む。【選択図】図１
2020021495.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストプロセッサと、
前記ホストプロセッサに対する分散共有メモリとして構成された複数のハイブリッドメモリキューブ（ＨＭＣ）デバイスと、
を備えるコンピューティングシステムであって、
各ＨＭＣデバイスは、
第２のメモリダイの上端に配置された少なくとも第１のメモリダイを含む複数の集積回路メモリダイであって、前記メモリダイのメモリの少なくとも一部は、メモリコヒーレンスディレクトリの少なくとも一部を含むようにマッピングされる、前記複数の集積回路メモリダイと、
少なくとも１つの第２のデバイスによる前記複数のメモリダイのメモリへの三次元（３Ｄ）アクセスを管理するように構成された少なくとも１つのメモリコントローラ、及び前記複数のメモリダイの前記メモリに記憶されたデータに対するメモリコヒーレンスプロトコルを実装するように構成された論理回路を含む論理ベースダイと、
を含む、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
米国出願は、その全体を参照することによってその内容が組み込まれる、２０１４年５月８日に出願された米国仮特許出願第６１／９９０，２０７号の優先権の利益を主張する。
【背景技術】
【０００２】
マルチプロセッサシステムは、２つ以上のプロセッサが同一のデータに関して動作を実
行することを可能にする共有メモリを含むことができる。共有メモリへのアクセスは遅く、かつシステム待ち時間につながることがある。メモリアクセス時間を改善するために、マルチプロセッサ共有メモリシステムは、比較的小さいが、より高速アクセスのキャッシュメモリを含むことができる。キャッシュメモリは、プロセッサによって頻繁にアクセスされ得るデータのコピーを記憶する。キャッシュされたデータの正確性を維持するために、キャッシュコヒーレンスプロトコルに従う。キャッシュコヒーレンスプロトコルは、プロセッサによるキャッシュされたデータへのアクセスにルールを課して、データの複数のコピーがあるにも関わらず、データがプロセッサの全てにわたって正確であることを保証する。しかしながら、キャッシュコヒーレンスプロトコルは、貴重なシステム帯域幅を消費し、及びデータアクセスに対する非均一な待ち時間を生じさせることがある。本発明者は、マルチプロセッサ共有メモリシステムにおける改善されたデータ管理の必要性を認識している。
【発明の概要】
【０００３】
本発明は、複数のホストプロセッサと、前記ホストプロセッサに対する分散共有メモリとして構成された複数のハイブリッドメモリキューブ（ＨＭＣ）デバイスと、を備えるコンピューティングシステムであって、各ＨＭＣデバイスは、第２のメモリダイの上端に配置された少なくとも第１のメモリダイを含む複数の集積回路メモリダイであって、前記メモリダイのメモリの少なくとも一部は、メモリコヒーレンスディレクトリの少なくとも一部を含むようにマッピングされる、前記複数の集積回路メモリダイと、少なくとも１つの第２のデバイスによる前記複数のメモリダイのメモリへの三次元（３Ｄ）アクセスを管理するように構成された少なくとも１つのメモリコントローラ、及び前記複数のメモリダイの前記メモリに記憶されたデータに対するメモリコヒーレンスプロトコルを実装するように構成された論理回路を含む論理ベースダイと、を含む。
【図面の簡単な説明】
【０００４】
【図１】本発明のいくつかの実施形態を実施するために使用しても良い、ハイブリッドメモリキューブの概念を示す。
【図２】本発明のいくつかの実施形態を実施するために使用しても良い、ハイブリッドメモリキューブの象限（ｑｕａｄｒａｎｔ）を示すブロック図である。
【図３】本発明のいくつかの実施形態を実施するために使用しても良い、ハイブリッドメモリキューブに対する４つの潜在的なデバイストポロジのブロック図を示す。
【図４】本発明のいくつかの実施形態を実施するために使用しても良い、コヒーレンスディレクトリメモリフォーマットの実施例を示す。
【図５】本発明のいくつかの実施形態を実施するために使用しても良い、ＨＭＣデバイスで実装されるコンピュータシステムの実施例のブロック図を示す。
【図６】コンピュータシステムを動作させる方法のフロー図を示す。
【発明を実施するための形態】
【０００５】
本発明の例示的な実施形態の以下の詳細な説明では、図面及び例示によって本発明の特定の例示的な実施形態を参照する。これらの実施例は、当業者が本発明を実施することができるように十分に詳細に説明され、及び本発明を種々の目的または実施形態にどのように適用し得るかを示す役割を果たす。本発明の他の実施形態が存在し、ならびにそれらは本発明の範囲内にあり、本発明の主題または範囲から逸脱することなく、論理的、機構的、電気的な変更、及び他の変更がなされても良い。しかしながら、本明細書で説明される本発明の種々の実施形態の特徴または限定は、それらが組み込まれる例示的な実施形態にとって必要であり、本発明の他の実施形態及び本発明全体として限定するものではなく、本発明、その要素、動作、及び適用に関するいずれかの言及は、本発明を全体として限定せず、単にこれらの例示的な実施形態を定義する役割を果たす。したがって、以下の詳細な説明は、本発明の種々の実施形態の範囲を限定せず、本発明は、添付の特許請求の範囲によってのみ定義される。
【０００６】
従来のコンピュータシステムでは、メモリは、行及び列に二次元で構成される。メモリアクセスの待ち時間を改善する取組みは、高帯域幅インタフェースを有するダブルデータレートタイプスリー（ＤＤＲ３：ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ  ｔｙｐｅ  ｔｈｒｅｅ）またはＤＤＲ４を含んできた。ＤＤＲ３及びＤＤＲ４は、従来の行／列のアプローチを使用する。
【０００７】
図１は、ハイブリッドメモリキューブ１０５（ＨＭＣ）の概念を示す。ＨＭＣは、集積回路（ＩＣ）メモリダイ１１０を積み重ね、かつ、ＩＣダイの上端及び下端の両方にアクセスすることを可能にするシリコン貫通ビア（ＴＳＶ）構造（図示せず）を使用してダイを相互接続することにより、第３の次元を含む。３次元ダイを構築するために、ＴＳＶの製造技術によって、複数のダイ層の相互接続が可能になる。複数のダイ層を相互接続するこの能力によって、メモリ記憶層及び１つまたは複数の論理層の組み合わせを有するメモリデバイスを構築することが可能になる。この方式では、デバイスは、単一のパッケージで物理メモリ記憶及び論理メモリトランザクション処理をもたらす。図１に示される配置は、概念を示すものであり、実際のダイのレイアウトを必ずしも表すものではない。
【０００８】
ＨＭＣ（例えば、Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０で指定されるような）は、最大でデバイスごとに３２０ギガバイト／秒の利用可能な帯域幅容量を有する非常に小型かつ電力効率の良いパッケージをもたらすことができる。ＨＭＣデバイスは、設計への階層型及び並列アプローチを用いてそのような帯域幅が可能である。デバイスの階層構造は、論理層にわたって垂直になされ、ハードウェアの並列性は、所与のダイ層にわたってなされる。ＨＭＣの中で、メモリはボールト（ｖａｕｌｔ）に構成される。各ボールト１２０は、シリコン貫通ビアを使用して、ダイの中でメモリ層の各々に垂直に及ぶ。図１の簡易化された実施例では、ＨＭＣは、各ボールトが論理ベースダイ層１１５または論理ベースを有する１６個のボールトに構成される。
【０００９】
図２は、ＨＭＣ２０５の象限（４分割された一部分）を示すブロック図である。ＨＭＣの４つのボールトが示され、各ボールト２２０は、複数のメモリ層を含む。論理ベース層２１５は、複数のコンポーネント含む。例えば、各ボールトは、ボールトに対する全てのメモリ参照動作を管理するメモリコントローラを論理ベースに有する。メモリコントローラは、３Ｄ記憶層への柔軟なアクセスをもたらす。３Ｄ階層化アプローチによって、ターゲットのストレージアレイ内のバンクにわたってのみでなく、並列なストレージアレイにわたってもメモリトランザクションが並行して行われることが可能になる。論理ベース層２１５は、説明される機能を実装する１つまたは複数のプロセッサを含んでも良く、ＨＭＣは、プロセッサ・イン・メモリ（ＰＩＭ）デバイスとすることができる。
【００１０】
論理ベース層２１５は、ＨＭＣデバイスへの外部リンクアクセスとともに、内部ルーティング及びトランザクション論理の両方をもたらす。外部Ｉ／Ｏリンクは、４つまたは８つの論理リンクによってもたらされる。各リンクは、１６個または８つの直列Ｉ／Ｏ、またはＳＥＲＤＥＳ、双方向リンクのグループを含むことができる。４つのリンクデバイスは、１０、１２．５及び１５Ｇｂｐｓで動作する能力を有する。８つのリンクデバイスは１０Ｇｂｐｓで動作する能力を有する。内部的には、各々の垂直メモリ記憶ユニットを制御する論理デバイスにおけるトランザクションを指示するために、リンクがルーティング論理に連結される。図２の実施例では、ルーティング論理は、クロスバースイッチング論理を含む。
【００１１】
ＨＭＣリンク構造は、デバイスを両方のホスト（プロセッサ）または他のＨＭＣデバイスに連結する能力をサポートする。この連鎖法（ｃｈａｉｎｉｎｇ）の概念によって、単一のデバイスよりも大きな容量を必要とするメモリサブシステムの構築が可能となるとともに、リンク構造及びパケット化トランザクションプロトコルに影響を与えない。リンクは、多数のトポロジでは、ホストデバイスリンクまたはパススルーリンクとして構成されることができる。
【００１２】
図３は、ベース４リンクＨＭＣ構成に基づいて４つの可能性のあるデバイストポロジのブロック図を示す。ＨＭＣメモリデバイス３０５は、メッシュ、トーラス（ｔｏｒｕｓ）、またはクロスバーなどの従来のネットワークトポロジにおいて構成されることができる。複数のＨＭＣデバイスをともに連鎖することによって、ホストに利用可能な総メモリ容量が増加する。
【００１３】
図２に戻り、ボールトに対する論理ベース層は、独立したボールトごとのＤＩＭＭコントローラユニットと同様である。図２の実施例では、ボールト論理ブロック２２５及びそれらのそれぞれのボールト記憶ユニット２２０は、４系（４つのユニット；ｑｕａｄ  ｕｎｉｔｓ）に構成されても良い。４系の各々は、４つのボールトユニットを表す。４系の各々は、最も近い物理リンクブロックと緩く（ｌｏｏｓｅｌｙ）関連付けられる。この方式では、ホストデバイスは、要求パケットを、その関連付けられた４系が要求されたボールトに物理的に近接しているリンクに論理的に送信することによって、ＨＭＣデバイスの論理ベース層を通じて待ち時間を最小化する能力を有する。
【００１４】
ターゲットのメモリボールト内で一旦、メモリ記憶は、バンク及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）の従来の概念に分かれることがある。積み重なったメモリ層を通じた垂直アクセスは、適切なメモリバンクを選択することと同様である。低位のバンクは、低位のダイ層において構成されることができ、垂直に上に向かって後続のバンクが選択される。バンク層内で一旦、ＤＲＡＭは、従来のように行及び列を使用して構成されることができる。ボールトコントローラは、ＤＲＡＭを各々が１６バイトを処理する１メガビット（１Ｍｂ）のブロックに分割する。ターゲットバンクへの読み込みまたは書き込み要求は、列のフェッチごとに３２バイトで実行されることができる。
【００１５】
マルチホスト・マルチＨＭＣシステムについて、ホストデバイスとＨＭＣデバイスとの間の帯域内通信がパケット化フォーマットを使用して実行される。このパケット化フォーマットは、３つの主要なパケット分類、すなわち、要求パケット、応答パケット、及びフロー制御パケットを含むことができる。パケットは、単一では１６バイトのフロー単位、すなわちＦＬＩＴである複数で構成されることができる。最大パケットサイズは、９ＦＬＩＴまたは１４４バイトを含む。最小の１６バイト（１ＦＬＩＴ）パケットは、パケットヘッダ及びパケットテールを含む。全てのメモリペイロードサイズに対するメモリ読み込み要求パケットは、パケットヘッダ、テール、及びそれぞれの物理メモリアドレスのみを必要とし得る。したがって、読み込み要求は、単一のＦＬＩＴを使用して構成されることができる。しかしながら、書き込み要求及び原子要求パケットはまた、書き込み及び読み込み−修正−書き込み動作それぞれのために必要とされる入力データを含む。したがって、これらの要求タイプは、２〜９ＦＬＩＴのパケット幅を有する。
【００１６】
ＨＭＣシステムの実装態様は、複数のパケットの入れ替えポイント（ｒｅｏｒｄｅｒｉｎｇ  ｐｏｉｎｔ）を有しても良い。補助的デバイスを宛先とする到達パケットは、ローカルボールトのアクセスを待機しているそれらを超える場合がある。ローカルボールトはまた、それぞれのボールトのバンクに対する帯域幅の使用、及びそれぞれのボールトのバンクからの帯域幅の使用を最大限に効率化するために、待ち行列に入れられたパケットを入れ替えても良い。しかしながら、所与のＨＭＣの実装態様に存在する入れ替えポイントは、ボールト内で特定のリンクから特定のバンクへのパケットのストリームの順序を維持する。これは、メモリ書き込み要求の後にメモリ読み込み要求が続くことが正確かつ決定的なメモリの振る舞いを果たす（ｄｅｌｉｖｅｒ）ことを保証する。
【００１７】
前に説明されたように、ＨＭＣは、高帯域幅デバイスをもたらす。しかしながら、現在のシステム相互接続の仕様は一般的に、その主要なメモリがＨＭＣなどの高帯域幅デバイスに基づいているシステムで適切にバランスを維持するために必要な十分な機能、柔軟性、及び性能に欠けている。例えば、システムアーキテクチャは、システムオンチップ（ＳｏＣ）とローカルメモリとの間で秒あたり数百ギガバイトの帯域幅を維持するために１つまたは複数のＨＭＣを含む場合があるが、システムアーキテクチャは、この利用可能な帯域幅の一部のみ（例えば、１０分の１）を有するシステム相互接続をもたらす。結果として、システムが著しくアンバランスになる。
【００１８】
さらに、システム相互接続に連結されたプロセッサがキャッシュコヒーレンス機構をもたらす場合、共有メモリ及びキャッシュメモリサブシステムの両方で同時性及び正確性を維持するのに十分な帯域幅及び機能をもたらすために、別個の論理ブロックがシステムに追加される必要がある場合がある。これによって、複合的な組の周辺論理ブロック及び異なるレベルの待ち時間を有する複合的なプロトコルの仕様を有するプロセッサ相互接続、メモリ相互接続、及びシステム相互接続がもたらされる。
【００１９】
非効率的なキャッシュコヒーレンシは特に、複数のＳｏＣデバイスまたはソケットにわたって分散される複数のスレッド（またはタスク）の実行での適用における懸念事項である。コアＳｏＣまたはプロセッサが機能的なデータキャッシングをサポートする場合、ＳｏＣソケットの間のキャッシュコヒーレンシ機構は、システム相互接続で利用可能な帯域幅よりも１０倍高くすることができるローカルなメモリ帯域幅をサポートする必要がある。再度、結果として、システムが著しくアンバランスになる。
【００２０】
システムレベルの待ち時間を改善するアプローチは、実質的に高帯域幅のメモリデバイスの帯域幅を有するメモリコヒーレンスサブシステムを設けることである。これを設ける１つの方法は、１つまたは複数のＨＭＣデバイスを使用してシステムメモリコヒーレンスを実装することである。ＨＭＣがその場（ｉｎ−ｓｉｔｕ）での原子メモリ動作を実行する能力を有するので、ＨＭＣは、高帯域幅及び低待ち時間のメモリコヒーレンシ機構をもたらすように拡張されることができる。
【００２１】
従来のシステムでは、キャッシュコヒーレンスのための１つのアプローチは、ディレクトリベースのキャッシュコヒーレンスプロトコルを使用することである。コヒーレンスディレクトリは、プロセッサが一次メモリからそのキャッシュへのエントリをロードすることの許可を求めるフィルタとして機能する。エントリが変化するとき、ディレクトリは、そのエントリを有する他のキャッシュを更新するまたは無効にする。ディレクトリベースのキャッシュコヒーレンスは、状態をキャッシュラインに割り当てる「ディレクトリ」の維持を含む。各キャッシュラインは、キャッシュラインの状態の最終的なアービタ（ａｒｂｉｔｅｒ）として「ホームノード」が割り当てられることができる。ホームノードは、アドレス空間を保有し、及びキャッシュラインを修正する許可を付与する。ディレクトリは状態を割り当て、次いで、ディレクトリベースのプロトコルは、メタデータを処理するためにホストの間でポイントツーポイント通信を使用する。
【００２２】
プロセッサは一般的に、ディレクトリの相当な量のキャッシュライン状態情報を記憶し、ならびにキャッシュメタデータを読み込み、及びキャッシュラインの状態を判定するために高速キャッシュメモリアクセスに依存する。キャッシュメモリコントローラは、どのホストがキャッシュラインをチェックアウトしたかを記録する。この構成では、キャッシュディレクトリそれ自体がキャッシュされる必要があり（完全に連結されてキャッシュされることが多い）、最後のレベルのキャッシュまたはメモリコントローラにおいて維持される複合的かつ電力消費の少ない（ｐｏｗｅｒ−ｈｕｎｇｒｙ）データ構造を生成する。これらのデータ構造は、オンチップに適合しないことが多く、及び大規模対称マルチプロセッサ（ＳＭＰ）構成に対してＤＲＡＭによって支援（ｂａｃｋ）される必要があることが多い。
【００２３】
その物理メモリ記憶の階層特性を理由に、ＨＭＣデバイスは、従来のバンク化されたＤＲＡＭデバイス（例えば、ＤＤＲ３またはＤＤＲ４デバイス）が行うのとは異なる物理アドレス指定及びインタリーブモデルを有する。ＨＭＣデバイスに対する物理アドレスは、ボールト、バンク、及びアドレスビットを含む３４ビットフィールドに符号化される。４つのリンクデバイスを有する実装態様は、より低い３２ビットのフィールドを利用し、８つのリンクデバイスを有する実装態様は、より低い３３ビットのフィールドを利用する。
【００２４】
ＤＤＲ３またはＤＤＲ４デバイスとは対照的に、ＨＭＣデバイスは、抽象的（ａｂｓｔｒａｃｔｅｄ）メモリ記憶インタフェースを安価に実装することができる。例えば、ＤＤＲタイプデバイスについて、プロセッサがアドレスにアクセスすることを望むとき、現実または実際の物理アドレスは、バスに配置され、及びアクセスされる。ＨＭＣプロトコルでは、物理アドレスは、それがＨＭＣに到達するときに異なるメモリアドレスに再マッピングされることができる。よって、ＨＭＣについて、実際のメモリ位置が書き込まれる保証がない。加えて、ＨＭＣは、設定された時間に応答を生成することが必要とされない。
【００２５】
ＨＭＣのこのアドレス再マッピング能力は、ディレクトリベースのメモリコヒーレンスを実装するために利用されることができる。ディレクトリメモリコヒーレンスのサポートをもたらすために、ＨＭＣのベース論理層は、所与のメモリブロックの位置を関連するメモリワードまたは「キャッシュライン」に引き出す（ａｂｓｔｒａｃｔ）ように構成されることができる。よって、メモリコヒーレンスディレクトリは、ＨＭＣ記憶ボールト内に記憶されることができる。これは、同一のＨＭＣプロトコルを使用して従来のメモリトラフィック及びキャッシュコヒーレンシトラフィックの両方を管理する方法をもたらし、それによって、ローカルメモリデータアクセス及びシステムメモリデータアクセスに均一性をもたらすことができる。
【００２６】
図４は、コヒーレンスディレクトリメモリフォーマットの実施例を示す。ＨＭＣの直接メモリ空間を、ベース物理アドレスフィールドに含まれる物理アドレスに関して説明することができる。示される実施例では、最大で３４ビットの物理アドレス記憶が利用可能である。ベース物理アドレスは、メモリ動作に対するターゲットとしての役割を果たし、ならびにボールト、バンク、及びＤＲＡＭアドレスビットを含むことができる。アドレス拡張キューブＩＤ（ＣＵＢ）フィールドは、メモリワードを支援するメモリが存在するＨＭＣデバイスを示す。ディレクトリビットフィールドは、メモリワードの状態情報を、メモリワードがキャッシュラインであったかのように維持するためのメモリコヒーレンシビットをもたらす。メモリコヒーレンスディレクトリがＭＥＳＩコヒーレンスプロトコルを使用する場合、ディレクトリビットは、修正ビット、排他ビット、共有ビット、及び無効ビットを含む。キャッシュラインとしてデータワードにアクセスすることは、ベース物理アドレスにＣＵＢオフセットを加えたものと関連付けられたメモリワードにアクセスすることによって実行される。データエントリが８バイトを含む場合、単一の８ＧＢのＨＭＣデバイスは、１０億の同時ディレクトリエントリをサポートすることができる。
【００２７】
メモリコヒーレンシがこの方式で構成されるとともに、検索及び修正動作がＨＭＣ原子メモリ動作を使用してメモリ上で実行されることができる。ディレクトリの可変性（ｍｕｔａｂｉｌｉｔｙ）は、ディレクトリと相互作用するＨＭＣに特有のトランザクションプロトコルを使用している間に維持される。これは、メモリアクセスのタイプをより均一にさせる。
【００２８】
ディレクトリエントリへのアクセスは、原子要求を使用して実行されることができる。原子要求は、１６バイトのデータをＤＲＡＭ（要求アドレスフィールドによってアクセスされる）から読み込むこと、１６バイトのオペランド（要求パケットにも含まれる）の使用を通じてデータに関する動作を実行すること、次いで、結果をＤＲＡＭの同一の位置に再度書き込むことを含む。読み込み−更新−書き込みシーケンスは原始的に行われ、それは、原子要求の書き込みが完了するまで他の要求が同一のバンクにアクセスすることができないことを意味する。原子要求は、それらが１６バイトのデータペイロードを要求パケットに有する点で１６バイトの書き込み要求と同様であり、書き込み応答は、返却されても良く、または返却されなくても良い（要求がポストされた（ｐｏｓｔｅｄ）要求であるかポストされていない要求であるかに応じて）。原子動作から生じるデータは、応答コマ
ンドで返却されない。ディレクトリエントリへの修正は、例えば、ＨＭＣプロトコルのＡＤＤ即時要求コマンドなどの原子メモリ動作を使用して実行されることができる。ディレクトリエントリへの検索は、例えば、ターゲットの即値（ｉｍｍｅｄｉａｔｅ  ｖａｌｕｅ）がゼロであるＡＤＤ即時要求コマンドなどの原子メモリ動作を使用して実行されることができる。
【００２９】
図５は、ＨＭＣベースのメモリコヒーレンスディレクトリを含むようにＨＭＣデバイスで実装されるコンピュータシステム５００の実施例のブロック図を示す。システムは複数のホストプロセッサを含む。プロセッサは、ＳｏＣソケット５０２によって表される各プロセッサを有するＳｏＣとして実装されることができる。実施例は、４つのプロセッサを示すが、システムは他の数のプロセッサを含むように柔軟性を有する。
【００３０】
システムはまた、ホストプロセッサに対する分散共有メモリとして構成される複数のＨＭＣデバイスを含む。ＨＭＣデバイスの一部は、エンドポイントデバイスとして使用され、一部のＨＭＣデバイスは、ハブデバイスとして使用される。ハブデバイスは、システム内通信をもたらすパススルー通信能力をもたらし得る。
【００３１】
三次元で配置されたメモリダイを有するＨＭＣデバイスでメモリが実装されると考えると、共有メモリは、３Ｄメモリアクセスに対して構成される。ＨＭＣデバイス５０５のメモリダイのメモリの少なくとも一部は、メモリコヒーレンスディレクトリの少なくとも一部を含むようにマッピングされる。これは、従来のキャッシュコヒーレンスデータまたはメタデータが、メモリワードが存在するメモリに記憶されることを非明示的に示す。ＨＭＣデバイスの論理ベースダイは、例えば、プロセッサまたは別のＨＭＣデバイスなどの少なくとも１つの第２のデバイスによるＨＭＣデバイスメモリへの三次元（３Ｄ）アクセスを管理する少なくとも１つのメモリコントローラを含む。論理ベースダイはまた、複数のメモリダイのメモリに記憶されたデータに対するメモリコヒーレンスプロトコルを実装する論理回路を含む。
【００３２】
コヒーレンスディレクトリがＨＭＣデバイスに記憶されているので、ＨＭＣデバイス自体は、その自身のデータに対するホームノードとしての役割を果たすことができる。メモリコヒーレンス状態情報は、データとともに記憶されることができる。論理ベース層によって、データを別個のキャッシュに記憶することなく、メモリコヒーレンス状態情報がプロセッサ間で通信されることが可能になる。共有メモリに記憶されたデータは、本質的にキャッシュラインである。加えて、メモリコヒーレンスがＨＭＣデバイスによって実装されると考えると、メモリコヒーレンス状態情報を管理することと関連付けられた処理のオーバヘッドがプロセッサから取り除かれる。
【００３３】
前に説明されたように、マルチホスト・マルチＨＭＣシステムについて、ホストデバイスとＨＭＣデバイスとの間のＩ／Ｏ通信は、パケット化プロトコルを使用して実行される。メモリコヒーレンスプロトコルは、このＩ／Ｏプロトコルに含まれることができる。パケット化情報は、メモリコヒーレンス状態情報を含むことができる。一部の実施例では、メモリコヒーレンス状態情報は、図４の実施例にあるようにアドレス情報とともに含まれることができる。Ｉ／Ｏプロトコルとともにメモリコヒーレンスプロトコルを含むことは、両方の機能を統一した効率的な通信システムに組み合わせる。これは、ローカルメモリ要求及びシステムメモリ要求の両方での待ち時間を最小化し、ならびにローカル及びシステムインタフェースの間のプロトコルトランザクションを取り除く。
【００３４】
状態情報は、プロセッサがデータをメモリワードに安全に書き込むことができるか、メモリワードが現在有効なデータを保持しているかを判定し、及びメモリワードへの読み込みまたは書き込みが可能な状態にメモリワードがどのように遷移することができるかを判
定する。一部の実施例では、ＨＭＣデバイスの論理回路は、ＭＳＩキャッシュコヒーレンスプロトコルを実装し、メモリダイのメモリのワードに対する「修正」状態情報、「共有」状態情報、及び「無効」状態情報を判定し、ならびにメモリダイのメモリのワードと関連付けて状態情報を記憶する。或る変形例では、修正状態情報、共有状態情報、及び無効状態情報は、修正ビット、共有ビット、及び無効ビットそれぞれを含む。或る実施例では、ＨＭＣデバイスの論理回路は、排他状態情報を判定するＭＥＳＩキャッシュを実装する。或る実施例では、ＨＭＣデバイスの論理回路は、メモリダイのメモリのワードに対する所有権状態情報を判定するＭＯＳＩキャッシュを実装する。論理回路は、排他状態情報及び所有権状態情報のうちの一方または両方を、共有メモリデータのワードと関連付けて記憶する。いくつかの実施例では、ハブＨＭＣデバイスは、ルーティング情報をパケット化メッセージに追加する。ルーティング情報は、メモリコヒーレンス状態情報を判定するために使用されることができる（例えば、受信ＨＭＣデバイスによって）。
【００３５】
いくつかの実施例に従って、「チェックイン／チェックアウト」機構は、特定のメモリワードを更新することを望むプロセッサによって使用される。このケースでは、プロセッサは、メモリ位置Ｘへの排他アクセスを要求する。そのアクセスが、メモリワードが存在するＨＭＣデバイスによって許可されると、メモリワードは、「チェックアウト」としてマーク付けされることができる（デバイス上の小型連結テーブルにおいて、またはメモリにおける状態の追加ビットとして）。データがプロセッサによって再度チェックされるとき、ＨＭＣデバイスは、データが更新されることと推定する。よって、メモリワード自体はプロセッサによってライトバックされ（またはフラッシュされ）、メモリにおける空間は、追加の状態情報（例えば、メモリワードをチェックアウトしたデバイスを示す状態情報）を記憶するために再使用されることができる。メモリワードＸに対するさらなる要求は、情報の両方の部分（例えば、キャッシュラインがプロセッサＰによってチェックアウトされる状態情報）を組み合わせた応答をＨＭＣデバイスから受信することができる。次いで、ディレクトリベースのコヒーレンスプロトコルは、メモリコヒーレンス状態更新を使用することによって続行する（例えば、プロセッサＰは、メモリ内容をフラッシュするように依頼されることができる、など）。プロセッサＰは、新たなデータをホームノード（メモリワードのＨＭＣデバイス）に再度フラッシュするとき、メモリワードがチェックインされることができ、及び状態情報が消去されることができる。
【００３６】
いくつかの実施例では、ＨＭＣデバイスは、ターゲットメモリワードに対して特定の状態要求に応答する。例えば、ターゲットＨＭＣデバイスは、メモリワードへの排他アクセスの要求（例えば、排他状態に対する要求）をプロセッサから受信しても良い。ＨＭＣデバイスの論理回路は、メモリワードに対する状態情報の読み込みを開始しても良い。第２のデバイスが既にメモリワードの排他アクセス及び所有権を有していることを状態情報が示す場合、論理回路は、メモリワードを無効にし、及び所有デバイスからの無効の確認を待機しても良い。確認が受信されるとき、ＨＭＣデバイスは、元の要求デバイスに排他アクセスを付与しても良い。
【００３７】
図６は、図５に示された例示的なシステムなどのコンピュータシステムを動作させる方法６００のフロー図を示す。６０５では、コンピュータシステムの分散共有メモリへのアクセスが、例えば、ＨＭＣプロトコルなどによって管理される。共有メモリは、三次元アクセスに対して構成され、及び１つまたは複数のＨＭＣデバイスを含む。
【００３８】
６１０では、メモリコヒーレンス状態情報は、メモリコヒーレンスディレクトリとして分散共有メモリに記憶される。いくつかの実施例では、メモリコヒーレンスディレクトリは、コンピュータシステムの複数のＨＭＣデバイスにわたって分散される。
【００３９】
６１５では、パケット化情報は、コンピューティングシステムの複数のプロセッサと共
有メモリとの間で通信され、６２０では、メモリコヒーレンス状態情報は、通信されたパケット化情報とともに含まれる。いくつかの実施例では、６２０でのメモリコヒーレンス状態情報は、コンピュータシステムのプロセッサの間でポイントツーポイントで通信される。
【００４０】
本明細書で説明される例示的なシステム及び方法は、従来のマルチプロセッサ分散共有メモリシステムに対していくつかの利点をもたらす。ＨＭＣデバイスによってもたらされる高帯域幅は、高帯域幅メモリ及び高帯域幅システム相互接続をもたらす。システムアーキテクチャにおけるＨＭＣデバイスの分散は、ローカルメモリの間、及びＨＭＣデバイスと相互接続された他のシステムレベルメモリとの間で帯域幅及びシステム待ち時間の特性のバランスをとる。メモリコヒーレンスプロトコルをシステムＩ／Ｏプロトコルに組み込むことは、ローカルメモリとシステムレベルメモリとの間のメモリ要求の原子性を維持する１つの統一したプロトコルをもたらす。統一したプロトコルは、ローカルメモリアクセスとシステムレベルメモリアクセスとの間のプロトコル変換を削減または取り除くことによって、ならびにローカルメモリアクセス及びシステムレベルメモリアクセスの両方に対する効率的なＨＭＣパケットの仕様を使用することによって待ち時間を最小化する。ＳｏＣ設計は、メモリコヒーレンスディレクトリの管理の負担を取り除く（ｏｆｆｌｏａｄｉｎｇ）ことによって、及びＳｏＣによるコヒーレンスディレクトリの検索を簡易化することによって簡易化される。
【００４１】
特定の実施形態が本明細書で示され、及び説明されてきたが、同一の目的、構造、または機能を達成するいずれかの配置が示される特定の実施形態に対して置き換えられても良いことを当業者は認識するであろう。本出願が、本明細書で説明された発明の例示的な実施形態のいずれかの適合または変形をカバーすることが意図される。本発明は、特許請求の範囲、及びそれと同等物の全範囲によってのみ限定されることが意図される。
【図１】
2020021495.tif 000003
【図２】
2020021495.tif 000004
【図３】
2020021495.tif 000005
【図４】
2020021495.tif 000006
【図５】
2020021495.tif 000007
【図６】
2020021495.tif 000008
【手続補正書】
【提出日】令和1年10月17日(2019.10.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のホストプロセッサと、
前記ホストプロセッサに対する分散共有メモリとして構成された複数の積層メモリデバイスであって、入力ｓ／出力（Ｉ／Ｏ）情報が、パケット化Ｉ／Ｏプロトコルを用いて、前記複数のホストプロセッサ及び前記複数の積層メモリデバイスの間で通信される、複数の積層メモリデバイスと、
を備えるコンピューティングシステムであって、
各積層メモリデバイスは、
第２のメモリダイの上部に配置された少なくとも第１のメモリダイを含む複数の集積回路メモリダイであって、メモリコヒーレンス情報がデータと共に前記分散共有メモリ内に格納される、複数の集積回路メモリダイと、
少なくとも１つの別個のデバイスによる前記複数の集積回路メモリダイのメモリへのアクセスを管理するように構成された少なくとも１つのメモリコントローラと、論理回路とを含む論理ベースダイと、
を含み、
前記論理回路は、
前記分散共有メモリ内に格納されたデータに対するメモリコヒーレンス状態情報を決定し、かつ、前記メモリコヒーレンス状態情報を前記データと共に前記分散共有メモリ内に格納することと、
前記パケット化Ｉ／Ｏプロトコルに含まれるメモリコヒーレンスプロトコルを用いて、前記ホストプロセッサと前記分散共有メモリとの間でのメモリコヒーレンス状態情報の通信を管理することであって、前記メモリコヒーレンスプロトコルは、前記分散共有メモリ内に格納された前記メモリコヒーレンス状態情報にアクセスするためのチェックアウト／チェックイン機構を含む、ことと、
前記パケット化Ｉ／Ｏプロトコルを用いて受信されたアドレス拡張を用いて、前記チェックアウト／チェックイン機構に従って受信されたメモリワードのアドレスを再マッピングすることによって、前記格納されたメモリコヒーレンス状態情報へのアクセスを許可することと、
を行うように構成される、コンピューティングシステム。
【請求項２】
前記集積回路メモリダイは、コンピューティングシステムのための共有メモリとしてマッピングされ、各積層メモリデバイスの前記論理回路は、原子メモリ動作を用いて、前記パケット化Ｉ／Ｏプロトコルの一部として前記メモリコヒーレンスプロトコルを実行するように構成される、請求項１に記載のシステム。
【請求項３】
各積層メモリデバイスの前記論理回路は、パケット化情報を、前記集積回路メモリダイにアクセスし且つ前記パケット化情報にメモリコヒーレンス状態情報を含めるために使用される前記パケット化Ｉ／Ｏプロトコルの一部として通信するように構成される、請求項１に記載のシステム。
【請求項４】
各積層メモリデバイスの前記論理回路は、アドレス情報を前記パケット化情報の一部として通信し、かつ、前記アドレス情報にメモリコヒーレンス状態情報を含めるように構成される、請求項１に記載のシステム。
【請求項５】
各積層メモリデバイスの前記論理回路は、前記集積回路メモリダイのメモリのワードに対する、修正された状態情報、共有された状態情報、及び無効な状態情報を決定し、かつ、これらの状態情報を前記集積回路メモリダイのメモリの前記ワードに関連付けて格納するように構成される、請求項１に記載のシステム。
【請求項６】
各積層メモリデバイスの前記論理回路は、前記集積回路メモリダイのメモリのワードに対する、排他状態情報及び所有権状態情報のうちの少なくとも一方を決定し、かつ、これらの状態情報を共有メモリデータの前記ワードに関連付けて格納するように構成される、請求項１に記載のシステム。
【請求項７】
ハブ積層メモリデバイスとして構成された少なくとも１つの積層メモリデバイスを含み、前記ハブ積層メモリデバイスの論理回路が、パケット化メッセージにルーティング情報を追加し、また、受信する積層メモリデバイスの前記論理回路が、前記ルーティング情報を用いてメモリコヒーレンス状態情報を決定する、請求項１に記載のシステム。
【請求項８】
各積層メモリデバイスの前記論理回路は、メモリワードへの排他アクセスの要求を受信すると、前記積層メモリデバイスから、前記メモリワードの所有権を有するプロセッサへ、要求パケットを送信するように構成される、請求項１に記載のシステム。
【請求項９】
各積層メモリデバイスの前記論理ベースダイの前記メモリコントローラは、少なくとも１つのプロセッサによる、及び、他の積層メモリデバイスによる、前記集積回路メモリダイのメモリへの３Ｄアクセスを管理するように構成される、請求項１に記載のシステム。
【請求項１０】
各積層メモリデバイスの前記集積回路メモリダイは、複数のボールトとして配置されたメモリを含み、前記論理ベースダイは、前記集積回路メモリダイの各ボールトに対するメモリコントローラを含む、請求項１に記載のシステム。
【請求項１１】
前記複数のホストプロセッサのプロセッサは、システムオンチップ（ＳｏＣ）プロセッサである、請求項１に記載のシステム。
【請求項１２】
第２のメモリダイの上部に配置された少なくとも１つの第１のメモリダイを含む複数の集積回路メモリダイと、
複数のホストプロセッサ及び少なくとも１つの他の積層メモリデバイスによる、分散共有メモリの一部としての前記複数の集積回路メモリダイのメモリへのアクセスを管理するように構成された少なくとも１つのメモリコントローラと、論理回路とを含む論理ベースダイと、
を含む積層メモリデバイスであって、
前記論理回路は、
データに対するメモリコヒーレンス状態情報を決定し、かつ、前記メモリコヒーレンス状態情報を前記データと共に前記分散共有メモリの前記複数の集積回路メモリダイ内に格納することと、
メモリコヒーレンスプロトコルを含むパケット化入力／出力（Ｉ／Ｏ）プロトコルを用いて、前記ホストプロセッサと前記少なくとも１つの他の積層メモリデバイスとの間での情報の通信を管理することであって、前記メモリコヒーレンスプロトコルは、前記複数の集積回路メモリダイ内の前記メモリコヒーレンス状態情報にアクセスするためのチェックアウト／チェックイン機構を含む、ことと、
前記パケット化Ｉ／Ｏプロトコルを用いて受信されたアドレス拡張を用いて、前記チェックアウト／チェックイン機構に従って受信されたメモリワードのアドレスを再マッピングすることによって、前記格納されたメモリコヒーレンス状態情報へのアクセスを許可することと、
を行うように構成される、積層メモリデバイス。
【請求項１３】
前記論理ベースダイの前記論理回路は、原子メモリ動作を用いて前記情報の通信を管理し、かつ、前記原子メモリ動作を用いて前記メモリコヒーレンスプロトコルを実行するように構成される、請求項１２に記載の積層メモリデバイス。
【請求項１４】
前記論理ベースダイの前記論理回路は、アドレス情報を前記Ｉ／Ｏプロトコルの一部として通信し、かつ、前記アドレス情報に前記メモリコヒーレンス状態情報を含めるように構成される、請求項１２に記載の積層メモリデバイス。
【請求項１５】
前記論理ベースダイの前記論理回路は、前記集積回路メモリダイのメモリのワードに対する、修正された状態情報、共有された状態情報、及び無効な状態情報を決定し、かつ、これらの状態情報を前記集積回路メモリダイのメモリの前記ワードに関連付けて格納するように構成される、請求項１２に記載の積層メモリデバイス。
【請求項１６】
前記論理ベースダイの前記論理回路は、前記集積回路メモリダイのメモリのワードに対する、排他状態情報及び所有権状態情報のうちの少なくとも一方を決定し、かつ、これらの状態情報を共有メモリデータの前記ワードに関連付けて格納するように構成される、請求項１２に記載の積層メモリデバイス。
【請求項１７】
前記論理ベースダイの前記メモリコントローラは、前記複数のホストプロセッサ及び前記少なくとも１つの他の積層メモリデバイスによる３Ｄアクセスを管理するように構成される、請求項１２に記載の積層メモリデバイス。
【請求項１８】
前記複数の集積回路メモリダイは、複数のボールトとして配置されたメモリを含み、前記論理ベースダイは、前記集積回路メモリダイの各ボールトに対するメモリコントローラを含む、請求項１２に記載の積層メモリデバイス。
【請求項１９】
コンピューティングシステムを動作させる方法であって、
前記コンピューティングシステムの分散共有メモリへのアクセスを管理することであって、前記分散共有メモリは、３次元アクセス用に構成された複数の積層メモリデバイスを含む、ことと、
メモリコヒーレンスディレクトリとしての前記分散共有メモリ内にメモリコヒーレンス状態情報を格納することであって、メモリコヒーレンス状態情報は、前記分散共有メモリの前記積層メモリデバイスの論理回路によって決定され、かつ、前記分散共有メモリ内にデータと共に格納される、ことと、
メモリコヒーレンスプロトコルを含む入力／出力（Ｉ／Ｏ）プロトコルを用いて、前記コンピューティングシステムにおける複数のプロセッサと前記分散共有メモリとの間でパケット化情報を通信することと、
前記メモリコヒーレンス状態情報を、前記Ｉ／Ｏプロトコル内の前記通信されるパケット化情報に含め、かつ、前記Ｉ／Ｏプロトコルを用いて前記分散共有メモリ内のデータ及び前記メモリコヒーレンス状態情報にアクセスすることであって、前記Ｉ／Ｏプロトコルは、前記分散共有メモリ内に格納された前記メモリコヒーレンス状態情報にアクセスするためのチェックアウト／チェックイン機構を含み、該アクセスは、前記パケット化Ｉ／Ｏプロトコルを用いて受信されたアドレス拡張を用いて、前記チェックアウト／チェックイン機構に従って受信されたメモリワードのアドレスを前記分散共有メモリに再マッピングすることによって行われる、ことと、
を含む方法。
【請求項２０】
メモリコヒーレンス状態情報を前記通信されるパケット化情報に含めることは、前記メモリコヒーレンス状態情報を前記パケット化情報のアドレスフィールドに組み込むことを含む、請求項１９に記載の方法。
【請求項２１】
前記通信されるパケット化情報を用いてメモリコヒーレンスプロトコルを実行することを含み、前記メモリコヒーレンスディレクトリのメモリコヒーレンス状態情報は、前記メモリコヒーレンスプロトコルを用いて前記分散共有メモリによって修正される、請求項１９に記載の方法。
【請求項２２】
前記分散共有メモリ内にメモリコヒーレンス状態情報を格納することは、前記メモリコヒーレンス状態情報を共有メモリデータワードと共に格納することを含む、請求項１９に記載の方法。
【請求項２３】
前記分散共有メモリ内にメモリコヒーレンス状態情報を格納することは、修正ビット、共有ビット、及び無効ビットを、共有メモリデータワードと共に格納することを含む、請求項１９に記載の方法。
【請求項２４】
前記分散共有メモリ内にメモリコヒーレンス状態情報を格納することは、排他情報及び所有権情報のうちの少なくとも一方を共有メモリデータワードと共に格納することを含む、請求項１９に記載の方法。
【請求項２５】
前記分散共有メモリに対する少なくとも１つのメモリコントローラを含む論理ベース層を用いて、前記メモリコヒーレンス状態情報を修正することを含む、請求項１９に記載の方法。
【請求項２６】
原子メモリ動作を用いて前記メモリコヒーレンス状態情報を修正することを含む、請求項１９に記載の方法。
【請求項２７】
前記複数のプロセッサのうちの１つのプロセッサによって、ターゲット積層メモリデバイスのメモリワードの特定の状態を要求することと、前記ターゲット積層メモリデバイスから前記複数のプロセッサのうちの１つ以上のプロセッサへ応答を送信することと、を含む、請求項１９に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
本発明の一態様は、複数のホストプロセッサと、前記ホストプロセッサに対する分散共有メモリとして構成された複数の積層メモリデバイスであって、入力／出力（Ｉ／Ｏ）情報が、パケット化Ｉ／Ｏプロトコルを用いて、前記複数のホストプロセッサ及び前記複数の積層メモリデバイスの間で通信される、複数の積層メモリデバイスと、を備えるコンピューティングシステムであって、各積層メモリデバイスは、第２のメモリダイの上部に配置された少なくとも第１のメモリダイを含む複数の集積回路メモリダイであって、メモリコヒーレンス情報がデータと共に前記分散共有メモリ内に格納される、複数の集積回路メモリダイと、少なくとも１つの別個のデバイスによる前記複数の集積回路メモリダイのメモリへのアクセスを管理するように構成された少なくとも１つのメモリコントローラと、論理回路とを含む論理ベースダイと、を含み、前記論理回路は、前記分散共有メモリ内に格納されたデータに対するメモリコヒーレンス状態情報を決定し、かつ、前記メモリコヒーレンス状態情報を前記データと共に前記分散共有メモリ内に格納することと、前記パケット化Ｉ／Ｏプロトコルに含まれるメモリコヒーレンスプロトコルを用いて、前記ホストプロセッサと前記分散共有メモリとの間でのメモリコヒーレンス状態情報の通信を管理することであって、前記メモリコヒーレンスプロトコルは、前記分散共有メモリ内に格納された前記メモリコヒーレンス状態情報にアクセスするためのチェックアウト／チェックイン機構を含む、ことと、前記パケット化Ｉ／Ｏプロトコルを用いて受信されたアドレス拡張を用いて、前記チェックアウト／チェックイン機構に従って受信されたメモリワードのアドレスを再マッピングすることによって、前記格納されたメモリコヒーレンス状態情報へのアクセスを許可することと、を行うように構成される。