(58)【調査した分野】(Int.Cl.,DB名)
前記オンダイの相互接続部は、前記垂直積層されたダイのセットのうち複数のダイを相互接続するシリコン貫通ビア(TSV)を含む、請求項3に記載の電子アセンブリ。
前記垂直積層されたダイのセットは、前記サブセットのうち第1のダイと、前記サブセットのうち第2のダイと、を含み、前記第1のダイは、前記ルーティングロジックの第1の部分を実装しており、前記第2のダイは、前記ルーティングロジックの第2の部分を実装している、請求項2に記載の電子アセンブリ。
前記複数のダイは、第1のダイと第2のダイとを含み、前記第1のダイは、前記サブセット内に含まれており、前記ルーティングロジックを実装しており、前記第2のダイは、前記ルーティングロジックを有しておらず、前記第1のダイおよび第2のダイは、前記インターポーザの1つ以上の金属層の配線を含むポイントツーポイントリンクを介して結合されている、請求項1に記載の電子アセンブリ。
複数のダイのうち第1のダイから前記複数のダイのうち第2のダイへ第1のリンクを介して第1のパケットを送信することであって、前記複数のダイは、インターポーザの金属層を介してマルチホップネットワーク内で接続されており、前記第1のリンクは前記インターポーザの1つ以上の金属層を実装する、ことと、
前記第2のダイのルーティングロジックを用いて、前記第1のパケット用のルーティングパス内の次のホップとして第3のダイを決定することと、
前記第2のダイから前記第3のダイへ第2のリンクを介して前記第1のパケットを送信することであって、前記第2のリンクは前記インターポーザの1つ以上の金属層を実装する、ことと、を含む、方法。
【発明を実施するための形態】
【0005】
異なる図面における同一の符号は、類似または同一の項目を示している。
【0006】
図1〜6は、マルチホップ通信ネットワークを利用する処理システム、または、他の電子アセンブリにおける改善された処理効率およびより低いコストのための例示的な技術を示す図である。電子アセンブリは、インターポーザに配設された、水平積層されたダイをさらに含んでもよい。電子アセンブリは、垂直積層されたダイをさらに含んでもよい。積層ダイは、メモリデバイスと、処理デバイスと、処理サポートロジックと、を含んでもよい。いくつかの実施形態では、マルチホップ通信ネットワークは、リンクパーティション(link partition)と、ルータパーティション(router partition)と、に分割(partitioned)されている。リンクパーティションは、水平積層されたダイ用のインターポーザの金属層内に少なくとも部分的に実装されている。また、リンクパーティションは、単一のダイ内のダイ内相互接続部によって、かつ、垂直積層されたダイのセットを接続するダイ間相互接続部によって、部分的に実装されてもよい。いくつかの実施形態では、マルチホップネットワークは、リング、メッシュ、トーラス、ファットツリー、および、k変数n立方体等のような様々な従来のネットワークトポロジの何れかで実装されてもよい。他の実施形態では、マルチホップネットワークは、任意のルータおよびリンクが処理システムの必要性によって決定されるように相互接続された「不規則な」トポロジを実装してもよい。ルータパーティションは、インターポーザに配設されたダイのいくつかまたは全てに実装されており、リンクパーティションの相互接続部を介して処理システムの構成要素間でパケットをルーティングする機能をサポートするロジック(logic)を備えている。ルータパーティションは、固定ルーティングを実装してもよいし、プログラム可能なルーティングテーブルまたは構成可能な論理ブロックを用いて構成可能であってもよい。記載されたネットワーク分割は、インターポーザ内のロジックの欠如にかかわらず、水平積層された処理システム内のマルチホップネットワークの実装形態を容易にする。同様に、マルチホップネットワークは、より少ない数のインターポーザ金属層、および、より短いインターポーザトレースを用いてダイを相互接続することを可能にし、積層されたダイの数が増加するにつれてネットワーク拡張性を改善する。
【0007】
図1は、いくつかの実施形態による、ルータパーティションおよびリンクパーティションを備えるマルチホップネットワークを利用する、ダイ積層された処理システム100を示す図である。処理システム100は、ノートブックまたはタブレットコンピュータや、デスクトップコンピュータや、サーバや、ネットワークルータや、スイッチまたはハブや、コンピューティング対応の携帯電話や、携帯情報端末などを含む様々なコンピューティングシステムの何れかを含むことができる。例示的な処理システム100は、インターポーザ102の表面に配設された複数の水平積層ダイ104,105,106,107を含む。ダイ107は、ダイ111,112,113をさらに含む垂直ダイスタック110の最下位層である。
【0008】
図示されたダイ104〜107,111〜113は、例えば、中央処理装置(CPU)、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)などの、任意の様々なプロセッサコアおよびこれらの組み合わせを含むことができる。また、図示されたダイは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、読み取り専用メモリ(ROM)、フラッシュメモリ強誘電体RAM(F−RAM)、磁気抵抗RAM(MRAM)などのメモリアーキテクチャを含むがこれらに限定されない、任意の様々なストレージデバイスを実装することができる。さらに、図示されたダイ104〜107,124〜127は、例えば、ノースブリッジおよびサウスブリッジ機能、入力/出力コントローラ、ネットワークインターフェースなどの、任意の周辺デバイスを含むことができる。また、処理システム100は、ディスプレイコンポーネントに対する1つ以上の外部インターフェースや、ストレージデバイスや、入力デバイス(例えば、マウスまたはキーボード)などの、
図1に示されない様々な他の構成要素を含むことができる。
【0009】
いくつかの実施形態では、垂直ダイスタック110は、積層ダイ111〜113が例えばDRAM、SRAM、ROM等のメモリ回路を実装しており、ダイ107が積層ダイ111〜113のメモリ回路にアクセスするためのハードワイヤードロジックや、後述するルーティングロジックを実装する、積層されたメモリデバイスを備えている。垂直ダイスタック110は、様々な3D集積回路製造プロセスのうち何れかを用いて製造されてもよい。1つの手法では、ダイ107,111〜113の各々は、アクティブデバイスと、アクティブ表面に形成された1つ以上のメタルルーティング層とを有する別個の基板(例えば、バルクシリコン)として実装されている。この手法では、ダイのマトリクスを含むウェハが製造され、薄くされることと、TSVがバルクシリコンによってエッチングされることとを含む、ウェハオンウェハプロセスを有し得る。次に、複数のウェハは、図示された層構成(例えば、3つのメモリ層用のメモリ回路を備える4つのウェハと、論理層用の論理ダイを備えるウェハと、のスタック)を実現するように積層され、整列され、次いで、熱圧着によって接合される。結果として得られる、積層されたウェハのセットは、個々の3DのICデバイスを分離するように単一化される。
【0010】
ダイオンダイプロセスでは、対応する層を実装するウェハは、最初に単一化される。次いで、ダイは、3DのICデバイスを製造するように別々に積層および接合される。ダイオンウェハ手法では、1つ以上の層のウェハは、1つ以上の層のダイを生成するように単一化されており、これらのダイは、別のウェハの対応するダイ面積に整列および結合され、別のウェハは、個々の3DのICデバイスを製造するために単一化される。別個のウェハ上にダイ107,124〜127を製造する1つの利点は、論理層(ダイ107)を製造するために、メモリダイ(ダイ111〜113)の製造プロセスとは異なる製造プロセスを使用することが可能になることである。したがって、改善された性能、および、より低い電力消費を提供する製造プロセスは、ダイ107を製造する(したがって、ルーティングロジック127用のより高速でより低い電力インターフェースロジックおよび回路を提供する)のに使用され得る。一方、改善されたセル密度、および、改善された漏洩制御を提供する製造プロセスは、メモリ層(ダイ124〜126)を製造する(したがって、積層メモリ用のより高密度でより低い漏洩ビットセルを提供する)のに使用され得る。
【0011】
別の手法では、層107,111〜113は、単一基板が使用され、例えばイオン遮断プロセス等の層転写プロセスを用いて各ダイ層が先行のダイ層に形成される、モノリシック3D製造プロセスを用いて製造される。また、積層されたメモリデバイスは、技術の組み合わせを用いて製造され得る。例えば、論理層(ダイ107)は、モノリシック3D技術を用いて製造されてもよく、メモリ層(ダイ111〜113)は、ダイオンダイまたはウェハオンウェハ技術(逆も同様)を用いて製造されてもよい。結果として得られた論理層スタックおよびメモリ層スタックは、ともに結合され、次いで、インターポーザ基板に結合され得る。
【0012】
動作中、水平積層されたダイ104〜107間のダイ間通信は、トレース、ビア、および、インターポーザ102の1つ以上の金属層から形成された他の相互接続部を用いて行われる。従来のシステムでは、インターポーザ102内の相互接続部から形成された、2つのダイ間のポイントツーポイントリンクは、2つのダイが互いに通信するために必要とされる。上述したように、従来の手法では、ルーティングを実現するために、インターポーザ内の過剰な数の金属層、および、過度に長い相互接続部のうち、1つもしくは両方をもたらす。このような問題を減少または取り除くために、いくつかの実施形態では、処理システム100は、水平積層されたダイ104〜107のうち1つ以上のダイのルーティングロジックによって形成されたルータパーティションと、水平積層されたダイ104〜107を接続するインターポーザ102のデバイス間相互接続部、および、垂直積層されたダイ107,111〜113を接続するダイ間相互接続部によって形成されたリンクパーティションと、から構成されたマルチホップネットワーク101を実装している。ルータパーティションは、リンクパーティションを形成するダイ間相互接続部とダイ内相互接続部とにわたって、1つ以上のホップ上でパケットをルーティングするルーティング判断を行うために使用されるダイの論理(logic)および他の回路を備える。リンクパーティションは、1つのダイの送信/受信回路を別のダイの送信/受信回路(「ダイ間相互接続部」)に結合する導体を含む。これらのダイ間相互接続部は、パッド、ピン、ピンインターフェース、金属層、貫通穴、および、インターポーザ102上のビアまたは垂直積層されたダイ間のTSVなどの、導電体を含むことができる。また、このようなダイ間相互接続部は、光導体、または、導電体および光導体の両方の組み合わせを含むことができる。リンクパーティションは、例えば、トレース、ビア、貫通孔、パッド、はんだバンプなどを含む導体等のように、同じダイ(「ダイ内相互接続部」)上の送信/受信回路のセットを結合する導体をさらに含むことができる。
【0013】
説明のために、例示的な処理システム100では、水平積層されたダイ104〜107は、ダイ104がリンク116を介してダイ105に接続されており、ダイ105がリンク117を介してダイ106に接続されており、ダイ106がリンク118を介してダイ107に接続されており、ダイ107がリンク119を介してダイ104に接続されている、リングネットワーク内のインターポーザ102上に配列されている。リンク116〜119は、インターポーザ102の1つ以上の金属層内に実装されている。さらに、処理システム100の図示されたリンクパーティションは、複数のTSV122、または、垂直積層されたダイ107,111〜113を相互接続する他の導体によって形成されたリンク120を含む。他の実施形態では、リンクパーティションは、
図3を参照して以下に詳細に説明するように、特定のダイ上に位置するデバイスを相互接続するオンダイインクを含んでもよい。
【0014】
いくつかの実施形態では、リンク116〜119は、メッセージデータがシリアル通信プロセスを用いてリンク116〜119にわたって送信される、シングルエンドまたは差動シリアルデータリンクとして実装されている。このプロセスでは、メッセージデータは、個々の金属トレース、ビア、貫通孔、ワイヤ、および、リンク116〜119を構成する他の導体にわたって、1ビットずつ送信される。他の実施形態では、リンク116〜119は、複数のメッセージデータビットが複数の金属トレース、ワイヤ、ビア、または、リンク116〜119を構成する他の導体にわたって同時に送信される並列通信プロセスを用いて、これらのリンクにわたってメッセージデータが送信される並列データリンクとして実装される。
【0015】
図示した例では、水平積層されたダイ104〜107の各々は、対応するルーティングロジック(ルーティングロジック124,125,126,127としてそれぞれ識別される)を含む。ルーティングロジック124〜127は、マルチホップネットワーク101を流れるメッセージパケットを、ともに管理およびルーティングする。これを実現するために、各ダイのルーティングロジックは、ルーティングロジックを実装するダイに接続されたネットワークリンクと関連してメッセージデータをルーティングするために1つ以上の従来または独自のマルチホップルーティングを実装するロジックおよび制御機能を含む。説明のために、ルーティングロジック124は、リンク116,119に接続されており、ルーティングロジック125は、リンク116,117に接続されており、ルーティングロジック126は、リンク117,118に接続されており、ルーティングロジック127は、リンク118,119,120に接続されている。いくつかまたは全てのルーティングロジックは、例えば、CPU、GPU、DSP、メモリコントローラなどのように、対応するダイ上に実装された機能デバイスにローカルに接続され得る。したがって、ルーティングロジック124〜127は、同じダイ上のデバイスと、インターポーザ102上に水平に配設され、または、垂直積層された、他のダイ上のルータもしくは他のロジックと、に接続されている。
【0016】
ルーティングロジック124〜127の各々は、このルーティング機能をサポートするロジックおよび他の回路を含み、かかるロジックは、例えば、データ入力および出力バッファと、クロスバースイッチと、スケジューリングロジックと、管理および制御ロジックと、ルーティングテーブル用のストレージと、構成ロジックと、を含む。ルーティングロジック124〜127によって実装されたルーティングロジックは、固定ルーティングを実装してもよいし、プログラム可能なルーティングテーブルまたは構成可能な論理ブロックを用いて、構成可能であってよい。ルーティングロジックの例示的な実装形態は、
図4を参照してより詳細に説明される。
【0017】
図1では、ルーティングロジック127が、垂直ダイスタック110用のインターポーザ102に隣接して配設されたダイ107上に実装されているという例示的な実装形態を示しているが、他の実施形態では、ルーティングロジック127は、垂直ダイスタックのうち別のダイ上(例えば、ダイ111上)に実装されてもよい。すなわち、インターポーザ102と、垂直ダイスタック110用のルーティングロジック127を実装するダイとの間に1つ以上のダイが配設されてもよい。さらに、
図1では、ルーティングロジック127が、単一のダイ上に実装されているという例示的な実装形態を示しているが、他の実装形態では、ルーティングロジック127は、垂直ダイスタック110内の複数のダイにわたって分散されてもよい。例えば、クロスバースイッチおよび関連した制御ロジックなどのルーティングロジック127の一部が1つのダイに実装され、1つ以上のルーティングテーブルなどのルーティングロジック127の他の部分が垂直ダイスタック110の別のダイに実装されてもよい。この場合、垂直ダイスタック110をマルチホップネットワーク101に接続するリンクパーティションは、垂直ダイスタック110内のダイを接続する複数のTSV122を含む。いくつかの実施形態では、ルーティングロジック127を実装する垂直ダイスタック110のダイは、ルーティングロジック127専用である。他の実施形態では、ルーティングロジック127を実装する垂直ダイスタック110のダイは、非ルーティングのハードコードされたロジックまたは他のデバイス(例えば、CPU、GPU、キャッシュ、メモリなど)を実装することができる。
【0018】
以下の例示的なメッセージトラフィックは、処理システム100の分割されたマルチホップネットワーク101の使用を示している。この例のために、ダイ104〜106は、プロセッサコアを実装し、垂直ダイスタック110は、ダイ111〜113が積層されたDRAMメモリデバイスであり、ダイ107がDRAMメモリコントローラを実装する、積層されたメモリデバイスである。DRAMメモリコントローラは、TSV122を介して積層されたメモリデバイスに接続されている。メモリコントローラは、1つ以上のプロセッサコアからのメモリアクセス要求に応じて、積層されたDRAMメモリデバイスの記憶セル回路に記憶されたデータへのメモリアクセスを実行するように動作する。かかる要求の例としては、従来のメモリ読み込みおよび書き込み動作ならびにメタデータ管理動作が挙げられる。かかるメタデータ管理動作の例としては、アドレス変換動作、データセキュリティまたはデータ整合性動作(例えば、チェックサムもしくはエラー補正コードの計算または認証)、ガーベジコレクション動作、メモリ使用量プロファイリング、メモリロギングなどが挙げられるが、これらに限定されない。
【0019】
メモリ書き込み要求を提供するプロセスの以下の説明は、処理システム100の分割されたマルチホップ通信ネットワークの例示的な動作を示している。動作の過程では、ダイ105のCPUは、関連したメモリアドレス、積層されたメモリデバイスに書き込まれるデータ、ならびに、書き込みおよびバイトマスクの長さ等の他の制御情報を含む、メモリ書き込み要求を生成する。この情報は、ダイ105のCPUからダイ107のメモリコントローラに送信されるパケットとしてフォーマットされる。メモリ書き込み要求を生成する場合に、CPUは、ルーティングロジック125(同じダイに存在することによって、CPU用のローカルルーティングロジックとなる)の入力バッファへの書き込み要求情報を、宛先ノードの指標とともに提供する。この例では、宛先ノードは、ダイ107上のメモリコントローラデバイスである。ルーティングロジック125は、パケットヘッダを検査し、宛先ノードを抽出する。次に、ルーティングロジック125は、メモリコントローラへのルートにおける次のノードを決定するように、テーブルルックアップを実行する。この例では、メモリコントローラへのルートにおける次のノードは、ダイ104のルーティングロジック124である。したがって、ダイ105のルーティングロジック125は、書き込み要求パケットを、ダイ105をダイ104に接続するためのリンク116に対応する出力バッファに配置する。次に、ダイ105のインターフェースロジックは、ダイ104の中間ノードへのメモリ書き込み要求を表すシグナル伝達を送信するためのリンク116を構成する導体に接続された物理インターフェース(PHY)を操作することによって、パケットを発行する。リンク116を構成する導体は、インターポーザ102の金属層およびダイ104,105をインターポーザ102の金属層に接続する金属コンタクト内に実装される。リンク116上の信号の送信は、ビットレーンごとに2対の導体に送信された2つの電気的な補完的信号を用いる従来の差動技術を用いて実装されてもよい。あるいは、ビットレーンごとに単一の導体を必要とし、且つ、同相電圧または接地に対して導体上の信号レベルを参照するシングルエンド技術によって実装されてもよい。
【0020】
ダイ104のPHYは、シグナル伝達を受信し、シグナル伝達によって表されたメモリ書き込み要求情報をバッファリングする。ダイ104のルーティングロジック124は、バッファリングされたパケットヘッダを検査して、宛先ノードを抽出する。ダイ104のローカルデバイスが最終宛先ではないので、ルーティングロジック124は、メモリコントローラへのルートにおける次のノードを決定するようにテーブルルックアップを実行する。この例では、このルート(パス)内の次のノードは、ダイ107のルータである。したがって、ダイ104のルーティングロジック124は、書き込み要求パケットを、ダイ104をダイ107に接続するためのリンク119に対応する出力バッファ内に配置させる。次に、ダイ104のインターフェースロジックは、メモリ書き込み要求を表すシグナル伝達を送信するようにダイ107に接続されたリンク119を備える導体に接続された物理インターフェース(PHY)を操作することによって、パケットを発行する。
【0021】
ダイ107のPHYは、シグナル伝達を受信し、メモリ要求パケットをバッファリングする。ダイ107のルーティングロジック127は、パケットヘッダを検査して、宛先ノードを抽出する。この例では、宛先ノードは、メモリコントローラのノード識別と一致する。したがって、ルーティングロジック127は、書き込み要求を、ダイ107のメモリコントローラの入力バッファに配置する。メモリコントローラは、ダイ111〜113上の適切なDRAMセルにアクセスし、書き込みデータを、シグナル伝達されたアドレスによって示されたメモリの位置に記憶する。これにより、ダイ105のCPUによって開始された、要求されたメモリ書き込み動作を完了する。
【0022】
したがって、図示した上記の例のように、メッセージデータは、ダイ105,107間のポイントツーポイントリンクを必要とすることなく、ダイ105とダイ107と間で通信され得る。さらに、この同じマルチホップルーティング手法は、2つのダイ間のポイントツーポイントリンクなしに、ダイ104とダイ106との間の通信を可能にする。したがって、
図1の例におけるインターポーザ102は、従来の手法で必要とされる6つのダイ間のポイントツーポイントリンクではなく、4つのダイに対する4つのダイ間リンクをサポートすることのみを必要とする。サポートする2つのより少ないダイ間リンクにより、インターポーザ102は、より少ない金属層と、ダイ間でルーティングする、より短いまたは複雑ではないトレースと、を実装することができる。
【0023】
リングネットワーク配列が
図1に示されるが、処理システム100のダイは、メッシュ、トーラス、ツリー、n立方体など、または、これらの組み合わせを含む様々なネットワークトポロジの何れかで実装され得る。説明のために、ダイ104〜107は、ダイ104が、ダイ104,106,107の間で全てのメッセージデータをルーティングするためのハブとして機能を果たす、ハブアンドスポーク配列で実装され得る。
【0024】
図2は、いくつかの実施形態による、分割されたマルチホップネットワークを利用する別の例示的な処理システム200の平面
図203と断面
図213とを示す図である。図示の例では、処理システム200は、インターポーザ202に配設され、水平積層されたダイ204,205,206,207を含む。また、処理システム200は、ダイ205上に積層されたダイ210と、ダイ210上に積層されたダイ212と、を備える垂直ダイスタック208を含む。
【0025】
ダイ204〜207は、リンク216,217,218を備える分割されたマルチホップネットワーク201を介して相互接続されている。マルチホップネットワーク201は、垂直スタック208のダイ205,210,212を相互接続するTSV222から形成されたデバイス間リンクをさらに含む。断面
図213によって示されるように、ダイ間リンク216〜218の各々は、インターポーザ202の1つ以上の金属層であって、ダイ204〜207をインターポーザ202に接続する金属コンタクトにおいて実装され得る。
【0026】
図示の例では、リンク216がダイ204,205を接続し、リンク217がダイ205,206を接続し、リンク218がダイ206,207を接続し、リンク219がダイ205,207を接続している。さらに、この例では、リンク219は、ダイ205の特定のデバイスと、ダイ207の特定のデバイスとの間の通信に独占的に使用されるサイドバンドリンクである。すなわち、リンク216,217,218がマルチホップネットワーク201のリンクパーティションを形成し、リンク219は、このマルチホップネットワーク内に含まれない。したがって、ダイ204,207は、マルチホップネットワーク201内のリーフノードであるから、この例示的なネットワークトポロジでルーティングロジックを実装する必要がない。ダイ間のメッセージデータのルーティングを容易にするために、ダイ205は、ルーティングロジック214を実装しており、ダイ206は、ルーティングロジック215を実装している。
【0027】
以下の例示的なメッセージトラフィックは、処理システム200内の分割されたマルチホップネットワークの使用を示している。この例のために、ダイ204,205,212は、全体的なエネルギー消費を減少させるのに役立つ電力管理機能を制御する機能を実装するプロセッサコアを備えている。かかる電力管理機能の例としては、クロックスロットリング、動的電圧制御、CPUのスリープ状態などが挙げられる。これらの機能は、ネットワーク上で1つのデバイスから別のデバイスに伝達されたメッセージに応じて構成され、呼び出され、制御され得る。これらの電力管理機能は、システムの処理負荷および全体的な利用に応じて、電力およびシステム性能を動的な様式で交換するためにオペレーティングシステムのソフトウェア(OS)によって使用される。
【0028】
電力管理要求を提供する以下の例は、処理システム200内の分割された通信ネットワークの動作を説明するのに役立つ。動作の過程では、ダイ212のCPU上で動作するオペレーティングシステム(OS)のソフトウェアは、システム電力消費を減少させるためにダイ204のCPUを「スリープ」状態に移行すべきであると決定する。したがって、ダイ212のCPUは、スリープ状態の予期される長さなどのように、必要に応じて他の制御情報とともに関連した電力管理コマンド(スリープ)を含むスリープ要求を生成する。このスリープ要求は、ダイ212のCPUデバイスからダイ204のCPUデバイスに送信される情報のパケットとして実装される。スリープ要求を生成する際に、OSのソフトウェアは、スリープ情報パケットを、宛先ノードの指標とともに、ダイ212のインターフェースロジックに書き込む。次に、ダイ208のインターフェースロジックは、スリープ要求を表すシグナル伝達をダイ205のルーティングロジック214に送信するTSV222を備える導体に接続された物理インターフェース(PHY)を操作することによって、パケットを発行する。ルーティングロジック214は、パケットヘッダを検査して、宛先ノードを抽出する。ルーティングロジック214は、宛先ノードを用いてテーブルルックアップを実行して、宛先へのルートにおける次のノードを決定する。テーブルルックアップの結果として、ルーティングロジック214は、スリープ要求パケットを、ダイ204に実装されたデバイスにダイ205を接続するリンク216に対応する出力バッファに配置する。次に、ダイ205のインターフェースロジックは、スリープ要求を表すシグナル伝達をダイ204に送信するリンク216を構成する導体に接続された物理インターフェース(PHY)を操作することによって、スリープパケットを発行する。断面に示されるように、リンク216を構成する導体は、インターポーザ202の金属層内に実装される。ダイ204のPHYは、シグナル伝達を受信し、このシグナル伝達によって表されたスリープ要求情報をバッファリングする。ダイ204のインターフェースロジックは、スリープ要求を、CPUに利用可能な入力バッファに配置し、典型的には、メッセージが到着したCPUに通知する割り込みを生成する。ダイ204のCPUデバイスは、メッセージを読み込み、シグナル伝達されたコマンドによって要求されたスリープ機能を実行することにより、ダイ212に位置するCPUデバイスで動作するOSによって開始された、要求されたスリープ動作を完了する。
【0029】
図3は、いくつかの実施形態による、分割されたマルチホップネットワーク301を実装する別の例示的な処理システム300の平面図である。この例では、分割されたマルチホップネットワーク301は、ダイ間リンクとともにダイ内リンクの組み合わせを含むリンクパーティションを実装する。図示されたように、処理システム300は、インターポーザ302の表面に配設された水平積層ダイ304,305,306,307を備えている。各ダイは、ダイ304のデバイス308,309,310、ダイ305のデバイス311,312,313、ダイ306のデバイス314,315,316、および、ダイ307のデバイス317,318,319などのように、複数のデバイスを実装している。これらのデバイスとしては、CPU、GPU、DSP、メモリコントローラ、入力/出力コントローラ、ストレージデバイスなどが挙げられるが、これらに限定されない。
【0030】
分割されたマルチホップネットワーク301のルータパーティションは、ダイ304,305,306,307にそれぞれ位置するルーティングロジック320,321,322,323として実装されている。分割されたマルチホップネットワーク301のリンクパーティションは、図示されたリングネットワークトポロジにおけるルーティングロジック320〜323を相互接続するデバイス間リンク330,331,332,333等の複数のデバイス間リンクを含む。各リンクは、インターポーザ302の様々な金属層によって部分的に実装されている。分割されたマルチホップネットワーク301のリンクパーティションは、所定のダイの個々のデバイスを当該ダイのローカルなルーティングロジックに接続する複数のデバイス内通信リンクをさらに含む。例えば、デバイス内リンク334,335,336は、ルーティングロジック320を各デバイス308〜310に接続する。これらのデバイス内リンクは、ダイの様々な金属層内の導電性相互接続構造として実装されている。
【0031】
例示的な処理システム300は、同一の分割された通信ネットワーク内の2つの異なるネットワークトポロジの使用を示している。ダイ内の通信は、ルーティングロジックが、ダイのデバイス間、および、当該ダイのデバイスと他のダイのデバイスとの間の全てのメッセージをルーティングするハブとして役割を果たすハブアンドスポークネットワークトポロジ(またはポイントツーポイントトポロジ)を介して実現される。一方、ダイ間通信は、ルーティングロジック320〜323の各々がリング様式でリンク330〜333を介して隣接ダイに接続されるリングトポロジを介して実現される。
【0032】
以下の例示的なメッセージトラフィックは、処理システム300内のハイブリッドのダイ間/ダイ内の分割されたマルチホップネットワークの使用を示している。この例のために、ダイ304のデバイス308〜310およびダイ306のデバイス314〜316は、関連したメモリキャッシュを有するプロセッサコア(したがって、本明細書ではプロセッサコア308〜310および314〜316と称される)を実装している。プロセッサコアは、複数のキャッシュを有する複数のプロセッサシステム内にキャッシュコヒーレンシおよび一貫性を維持するのに役立つキャッシュ管理機能を実装している。かかるキャッシュ管理機能の例としては、別のCPUのキャッシュに存在する特定のキャッシュブロックの状態を修正するネットワークメッセージが挙げられる。
【0033】
動作の過程では、プロセスは、ダイ305のプロセッサコア313のキャッシュ内の特定のラインがメモリの一貫したビュー(view)を維持するために無効にされる必要がある、と決定する。キャッシュライン無効化要求は、無効にされる関連したメモリアドレスとともに関連したキャッシュ管理コマンド(無効にする)を含む。この情報は、プロセッサコア309からプロセッサコア313に送信される情報のパケットを含む。
【0034】
無効化要求を生成するときに、プロセッサコア309は、宛先ノードの指標とともに無効化要求パケットを生成し、無効化要求パケットを、リンク335に対応する出力バッファに配置する。リンク335は、ダイ304の様々な金属層内に実装されており、ダイのルーティングロジック320を接続する。ローカルなルーティングロジック320は、パケットヘッダを検査して、宛先ノードを抽出する。次に、ルーティングロジック320は、テーブルルックアップを実行して、プロセッサコア313へのルートにおける次のノードを決定する。この例では、このパス(ルート)における次のノードは、ダイ305のルーティングロジック321である。ダイ304のルーティングロジック320は、無効化要求パケットを、リンク331に対応する出力バッファに配置する。次に、ダイ304のインターフェースロジックは、キャッシュライン無効化要求を表すシグナル伝達をダイ305に送信するリンク331を構成する導体に接続された物理インターフェース(PHY)を操作することによって、パケットを発行する。
【0035】
ダイ305のPHYは、シグナル伝達を受信し、このシグナル伝達によって表された無効化要求情報をバッファリングする。ルーティングロジック321は、バッファリングされたパケットヘッダを検査して宛先ノードを抽出し、そのルーティングテーブル内で検索を実行する。ルーティングロジック321は、テーブルルックアップの結果として、宛先ノードであるプロセッサコア313がローカルデバイスである、と決定する。したがって、ルータは、デバイス内リンク336を介して、キャッシュライン無効化パケットをプロセッサコア313が利用可能なバッファに配置する。プロセッサコア313のロジックは、メッセージを読み込み、シグナル伝達されたコマンドによって要求されたキャッシュライン無効化機能を実行する。これにより、ダイ304に位置するプロセッサコアデバイス309によって開始された要求動作を完了する。
【0036】
図4は、いくつかの実施形態による、
図1〜3の例示的な処理システム内に実装されるルーティングロジックの例示的な実装形態を示す図である。図示された例では、ルーティングロジック400は、入力バッファ401と、クロスバースイッチ402と、出力バッファ403と、制御ロジック404と、1つ以上のルーティングテーブル406と、構成ブロック408と、を備える。入力バッファ401は、1つ以上の入力ポート410に接続されている。各入力ポート410は、対応するデバイス間またはデバイス内リンクに接続されており、入力バッファ401は、対応するデバイス間リンクを介して受信したメッセージデータをバッファリングするように構成されている。同様に、出力バッファ403は、1つ以上の出力ポート412に接続されている。各出力ポート412は、対応するデバイス間またはデバイス内リンクに接続されており、出力バッファ403は、対応するリンクのために、クロスバースイッチ402から受信したメッセージデータをバッファリングするように構成されている。クロスバースイッチ402は、制御ロジック404によって提供された制御シグナル伝達に基づいて、入力ポート410から出力ポート412に流れるパケットを交換するマルチプレクサを含む。制御ロジック404は、構成ブロック408によって指定された構成パラメータと、1つ以上のルーティングテーブル406で表されたルーティング情報とを用いて、入力ポートから出力ポートへの入力メッセージデータの特定のルーティングをもたらすように、クロスバースイッチ402を制御する。制御ロジック404は、入力メッセージヘッダを検査して、1つ以上のルーティングテーブル406で検索を実行して次のホップを決定し、クロスバースイッチを制御して、データを適切な出力ポート412に転送する。また、制御ロジック404は、仮想チャネルを管理し、構成ブロック408の構成情報によってアービトレーションおよびフィルタリングを実行し、アービトレーションおよびフィルタリングを実行しない場合には1つ以上のルーティングプロトコルの構成要素を実装している。
【0037】
いくつかの実施形態では、ルーティングテーブル406は、ルーティングロジック400を通過するパケットに対してルーティング情報を提供する。説明のために、ルーティングテーブル406は、複数の表項目420として実装されてもよく、各表項目420は、対応する宛先ノードアドレスと関連付けられており、宛先ノードアドレスを表すインデックスフィールド422と、ソースノードと宛先ノードとの間に設定されたルーティングパスによって次のノードのアドレスを指定する次のノードフィールド424と、を含む。また、表項目420は、代替ルート、パスの長さ、リンクエラー状態などのように、制御ロジックによって用いられる他のフィールドを含んでもよい。次のノードフィールド424は、マルチホップルートのための次のノードのアドレス、または、ローカルノードが最終宛先である場合には、ローカルノードに接続されたポートであってもよい。いくつかの実施形態では、テーブル406の表項目420は、予め設定されてもよいし、そうでなければ固定ルーティング方式を実装するために、固定されてもよい。説明のために、テーブル406は、ROM内に実装されてもよいし、ハードコードされたロジックとして実装されてもよい。
【0038】
他の実施形態では、テーブル406は、書き込み可能であってもよいし、そうでなければ様々なルートを実装するか、ダイの異なる数もしくは配列またはネットワークトポロジの再構成を可能にするようにプログラム可能であってもよい。説明のために、プログラム可能な実装形態では、テーブル406は、RAMまたはフラッシュメモリ内のレジスタファイルなどのように、様々な構成可能な記憶素子の何れかで実装されてもよい。これらの構成可能な要素および書き込み可能な表項目は、オペレーションシステム、ハイパーバイザ、基本入出力システム(BIOS)、ファームウェア、または、これらの組み合わせを含む多くの要素によって管理され得る。一例として、システム起動中、オペレーティングシステムは、既知の固定トポロジによって必要とされる必須のルートを達成するために構成可能な要素を書き込みことができる。他のシナリオでは、分割されたネットワークのトポロジは、物理システムの異なるバージョンと実装形態との間で異なる種々のルータおよび接続により、事前に知られなくてもよい。この場合、システムファームウェアまたはBIOSは、ルータおよび相互接続トポロジを検査して、実装されたネットワークトポロジを発見することができる。このように行なっても、システムBIOSまたはファームウェアは、必須のネットワークルーティングを達成するために各ルータ内に構成可能な要素およびテーブルを書き込む。いくつかのシナリオでは、ルーティング構成は、システム起動時に1回構成されるのではなく、動的に変更され得る。所定のリンクのエラーの検出または所定のルータ内のハードウェア障害に応じて、オペレーションシステム、ハイパーバイザまたはシステムBIOSは、かかる障害の周りをルーティングするように、ルータの構成可能な要素を再書き込みすることができる。また、オペレーティングシステムまたはハイパーバイザは、ネットワークおよびメモリ帯域幅保証などのサービス方針の品質を実装するために、ルータを再構成することができる。
【0039】
図4は、1つ以上のルーティングテーブル406がマルチホップネットワークのルータパーティションによって実装されるルーティングパスを指定するために使用される実装形態を示しているが、他の実装形態では、ルータパーティションは、ネットワークトポロジが既知のルーティングパスであって、製造時に固定されるルーティングパスを指定するために、ハードワイヤードロジックを使用することができる。
【0040】
図5は、いくつかの実施形態による、分割されたマルチホップネットワークを利用する処理システム内でマルチホップパケットルーティングを実行する例示的な方法500のフロー図である。説明しやすくするために、方法500は、
図4に示すルーティングロジック400に記述されている。
【0041】
ブロック502では、あるダイ(ソースダイ)におけるデバイスは、メッセージデータと、宛先デバイスまたは宛先ダイのうち1つまたは両方と関連付けられた宛先アドレスと、を含むパケットを生成することによって、別のダイ(宛先ダイ)上の宛先デバイスへのメッセージデータの送信を開始する。ソースダイがマルチホップネットワークの単一のリンクのみを含む場合には、パケットは、デフォルト設定でこの単一のリンクへの送信のために供給される。そうではなく、ソースダイがマルチホップネットワークの2つ以上のリンクを有する場合には、ブロック504では、ソースダイにおけるルーティングロジック400の制御ロジック404は、パケットヘッダを検査して、テーブル406内で検索を実行し、ルーティングパス内の次のホップを決定する。これにより、次のホップにつながるリンクに接続された出力ポート412を決定する。ブロック506では、制御ロジック404は、クロスバースイッチ402を制御して、決定された出力ポート412にパケットをルーティングする。このとき、パケットは、次のホップへの対応するリンクを介して送信される。
【0042】
ブロック508では、次のホップとして識別されたダイは、パケットを受信して、パケットの宛先アドレスを検査することによって、最終宛先であるかどうかを決定する。最終宛先が到着していない場合には、受信ダイにおけるルーティングロジック400は、ブロック504,506,508の処理を実行して、ルーティングパス内の次のホップを決定し、それに応じてパケットを、決定された次のホップにルーティングする。ブロック504〜508の処理は、パケットが最終宛先に到着するまで繰り返される。最終宛先が到着すると、ブロック510では、制御ロジック404は、クロスバースイッチ402を制御して、ローカルパケットトラフィック(すなわち、ローカルダイのデバイス向けのパケット)に使用される出力ポート412にパケットを向ける。このとき、パケットは、出力バッファ403からアンロードされ、宛先デバイスで処理される。
【0043】
いくつかの実施形態では、上述した装置および技術は、
図1〜3のICデバイス等の1つ以上の集積回路(IC)デバイス(集積回路パッケージまたはマイクロチップとも称される)を備えるシステム内に実装される。電子設計自動化(EDA)およびコンピュータ支援設計(CAD)のソフトウェアツールは、これらのICデバイスの設計および製造に使用され得る。これらの設計ツールは、典型的に、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、プロセスの少なくとも一部を実行して、回路を製造するために製造システムを設計または適合するように、1つ以上のICデバイスの回路を表すコードで動作するためにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、または、命令とデータとの組み合わせを含むことができる。設計ツールまたは製造ツールを表すソフトウェア命令は、典型的に、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体内に記憶されている。同様に、ICデバイスの設計または製造の1つ以上の段階を表すコードは、同一のコンピュータ可読記憶媒体または異なるコンピュータ可読記憶媒体内に記憶されており、そこからアクセスされ得る。
【0044】
コンピュータ可読記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために使用される間、コンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含むことができる。このような記憶媒体としては、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープもしくは磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)もしくはキャッシュ)、不揮発性メモリ(例えば、読み取り専用メモリ(ROM)もしくはフラッシュメモリ)、または、微小電気機械システム(MEMS)ベースの記憶媒体が挙げられ得るが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステム(例えば、システムRAMまたはROM)に組み込まれ、コンピューティングシステム(例えば、磁気ハードドライブ)に固定して取り付けられ、コンピューティングシステム(例えば、光ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に対して取り外し可能に取り付けられてもよいし、有線もしくは無線ネットワーク(例えば、ネットワークアクセス可能なストレージ(NAS))を介してコンピュータシステムに接続されてもよい。
【0045】
図6は、1つ以上の実施形態を実装するICデバイスの設計および製造のための例示的な方法600を示すフロー図である。上述したように、以下の処理の各々に対して生成されるコードは、対応する設計ツールまたは製造ツールによるアクセスおよび使用のために、コンピュータ可読記憶媒体内に記憶され、または具現化される。
【0046】
ブロック602では、ICデバイスの機能仕様が生成される。機能仕様(マイクロアーキテクチャ仕様(MAS)としばしば称される)は、C、C++、SystemC、SimulinkまたはMATLABを含む様々なプログラミング言語またはモデリング言語の何れかによって表され得る。
【0047】
ブロック604では、機能仕様は、ICデバイスのハードウェアを表すハードウェア記述コードを生成するために使用される。いくつかの実施形態では、ハードウェア記述コードは、少なくとも1つのハードウェア記述言語(HDL)を用いて表される。ハードウェア記述コードは、ICデバイスの回路の形式的記述および設計のための様々なコンピュータ言語、仕様言語またはモデリング言語の何れかを含む。生成されたHDLコードは、典型的に、ICデバイスの回路の動作や、回路の設計および組織化や、シミュレーションによるICデバイスの正常動作を検証する試験を表す。HDLの例としては、アナログHDL(AHDL)、Verilog HDL、システムVerilog HDL、および、VHDLが挙げられる。同期されたデジタル回路を実装するICデバイスでは、ハードウェア記述コードは、同期デジタル回路の動作の抽象的表現を提供するレジスタ転送レベル(RTL)コードを含むことができる。他のタイプの回路では、ハードウェア記述コードは、回路の動作の抽象的表現を提供する動作レベルコードを含むことができる。ハードウェア記述コードによって表されたHDLモデルは、典型的に、設計検証を通過するために1回以上のシミュレーションおよびデバッギングに供される。
【0048】
ハードウェア記述コードによって表された設計を検証した後に、ブロック606では、ハードウェア記述コードを合成して、ICデバイスの回路の初期の物理的実装形態を表すか、または定義するコードを生成するために、合成ツールが使用される。いくつかの実施形態では、合成ツールは、回路デバイスインスタンス(例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオードなど)およびネットを含む1つ以上のネットリスト、または、回路デバイスインスタンス間の接続を生成する。あるいは、ネットリストの全てまたは一部は、合成ツールを使用せずに手動で生成され得る。ハードウェア記述コードのように、ネットリストは、最終の1つ以上のネットリストのセットが生成される前に、1つ以上の試験および検証プロセスに供され得る。
【0049】
あるいは、回路図エディタツールは、ICデバイスの回路の概略図を描くために使用されてもよく、回路図入力ツールは、結果として得られた回路図をキャプチャして、回路図の構成要素および接続性を表す1つ以上のネットリスト(コンピュータ可読媒体に記憶される)を生成するために使用されてもよい。次に、キャプチャされた回路図は、試験および検証のための1回以上のシミュレーションに供され得る。
【0050】
ブロック608では、1つ以上のEDAツールは、ブロック606で生成されたネットリストを使用して、ICデバイスの回路の物理的レイアウトを表すコードを生成する。この処理は、例えば、ICデバイスの回路の各要素の位置を決定または固定するためにネットリストを用いる配置ツールを含むことができる。さらに、ルーティングツールは、ネットリストに従って回路素子を接続するのに必要とされるワイヤを追加およびルーティングする配置プロセスに構築する。結果として得られたコードは、ICデバイスの3次元モデルを表している。コードは、例えば、グラフィックデータベースシステムII(GDSII)形式などのデータベースファイル形式で表され得る。この形式でのデータは、典型的に、幾何学的形状や、テキストラベルや、階層形態での回路レイアウトに関する他の情報を表す。
【0051】
ブロック610では、物理的レイアウトコード(例えば、GDSIIコード)は、製造施設に提供される。製造施設は、物理的レイアウトコードを使用して、ICデバイスを製造するように製造施設(例えば、マスク作業による)の製造ツールを構成し、そうでなければそれを適合させる。すなわち、物理的レイアウトコードは、1つ以上のコンピュータシステムにプログラムされてもよく、全体的または部分的に、製造施設のツールの動作または製造施設で実行される製造動作を制御することができる。
【0052】
一般的な説明で上述した活動または要素の全てが必要ではなく、特定の活動またはデバイスの一部が必要とされなくてもよく、1つ以上のさらなる活動が実行され、または記載された要素に追加の要素が含まれてもよいことに留意されたい。さらに、活動が列挙される順序は、必ずしもそれらが実施される順序ではない。
【0053】
さらに、これらの概念は、特定の実施形態を参照して記載されている。しかしながら、当業者であれば、下記の特許請求の範囲に記載されるように本開示の範囲から逸脱することなく、様々な修正および変更が行われ得ることを理解する。したがって、本明細書および図は、限定的意味ではなく例示的意味において見なされるべきであり、すべてのこのような修正は、本開示の範囲内に含まれることが意図される。
【0054】
特定の実施形態に関して、便益、他の利点および問題に対する解決法が上述された。しかしながら、この便益、利点、問題に対する解決法、および、あらゆる便益、利点もしくは解決法を生じさせるか、またはより顕著にさせ得る任意の特徴は、任意または全ての特許請求の範囲の重大、必須または本質的な特徴と解釈されるべきではない。