(57)【要約】送信のためにアドレスを圧縮する方法及び装置は、第１デバイスにおいて、第２デバイス上のメモリ位置に対するメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第１部分が、第１デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第１部分がキャッシュに記憶されていない場合に、メモリアドレスの第１部分がキャッシュに記憶され、メモリアドレスの全体と、第１部分の記憶に関する情報と、が第２デバイスに送信される。メモリアドレスの第１部分がキャッシュに記憶されている場合に、メモリアドレスの第２部分のみと、アドレスの第１部分が記憶されているキャッシュのウェイを示す識別子と、が第２デバイスに送信される。【選択図】図２
2019525354.tif 000002
【特許請求の範囲】
【請求項１】
第１デバイスから第２デバイスへリンクを介して送信するためにアドレスを圧縮する方法であって、
前記第１デバイスにおいて、前記第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することと、
前記メモリアドレスの第１部分が前記第１デバイスに配置されたキャッシュに記憶されているかどうかを判別することと、
前記メモリアドレスの第１部分が前記第１デバイスに配置されたキャッシュに記憶されていない場合に、前記メモリアドレスの第１部分を前記第１デバイスの前記キャッシュに記憶し、前記メモリアドレス全体と、前記第１部分の記憶に関する情報と、を前記第２デバイスに送信することと、
前記メモリアドレスの第１部分が前記第１デバイスに配置されたキャッシュに記憶されている場合に、前記メモリアドレスの第２部分のみと、前記メモリアドレスの第１部分が記憶されている前記第１デバイスの前記キャッシュのウェイを示す識別子と、を前記第２デバイスに送信することと、を含む、
方法。
【請求項２】
前記第２デバイスが、前記第１部分の記憶に関する情報を受信すると、前記第１部分の記憶に関する情報を、前記第２デバイスに配置されたキャッシュに記憶することをさらに含む、
請求項１の方法。
【請求項３】
前記第２デバイスが、前記メモリアドレスの第２部分と、前記メモリアドレスの第１部分が記憶されている前記第１デバイスの前記キャッシュのウェイを示す識別子と、を受信すると、
前記識別子に基づいて、前記第２デバイスに配置されたキャッシュから前記メモリアドレスの第１部分を読み出すことと、
前記メモリアドレス全体を再構成することと、をさらに含む、
請求項２の方法。
【請求項４】
前記再構成することは、前記第１部分と前記第２部分とを連結することを含む、
請求項３の方法。
【請求項５】
前記第１部分は、前記メモリアドレス全体の上位ビットを含むタグである、
請求項１の方法。
【請求項６】
前記タグを、前記第１デバイスに配置された前記キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
請求項５の方法。
【請求項７】
前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
請求項６の方法。
【請求項８】
前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
請求項７の方法。
【請求項９】
１つ以上のインデックス行が、特定のソースに関連付けられている、
請求項８の方法。
【請求項１０】
前記ソースは、プロセッサ、又は、前記第１デバイスの入出力（Ｉ／Ｏ）デバイスのうち何れかを含む、
請求項９の方法。
【請求項１１】
インデックス行が、複数のウェイ列に関連付けられている、
請求項１０の方法。
【請求項１２】
トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち１つ以上を含む、
請求項１１の方法。
【請求項１３】
前記Ｉ／Ｏデバイスに関連する特定の行インデックスが、読み出し要求又は書き込み要求のうち１つ以上のトランザクションに関連付けられている、
請求項１０の方法。
【請求項１４】
第１リンクコントローラと、
前記第１リンクコントローラに動作可能に接続された第１キャッシュと、を備える装置であって、
前記第１リンクコントローラは、
第２装置上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されているかどうかを判別し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されていない場合に、前記メモリアドレスの第１部分を前記第１キャッシュに記憶し、前記メモリアドレス全体と、前記第１部分の記憶に関する情報と、を前記第２装置に送信し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されている場合に、前記メモリアドレスの第２部分のみと、前記メモリアドレスの第１部分が記憶されている前記第１キャッシュのウェイを示す識別子と、を前記第２装置に送信する、
装置。
【請求項１５】
前記第１部分は、前記メモリアドレス全体の上位ビットを含むタグである、
請求項１４の装置。
【請求項１６】
前記タグを、前記第１キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
請求項１５の装置。
【請求項１７】
前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
請求項１６の装置。
【請求項１８】
前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
請求項１７の装置。
【請求項１９】
１つ以上のインデックス行が、特定のソースに関連付けられている、
請求項１８の装置。
【請求項２０】
インデックス行が、複数のウェイ列に関連付けられている、
請求項１９の装置。
【請求項２１】
プロセッサをさらに備える、
請求項１４の装置。
【請求項２２】
前記プロセッサは、前記トランザクションを生成した前記ソースである、
請求項２１の装置。
【請求項２３】
トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち１つ以上を含む、
請求項２２の装置。
【請求項２４】
入出力（Ｉ／Ｏ）デバイスをさらに備える、
請求項１４の装置。
【請求項２５】
前記Ｉ／Ｏデバイスは、前記トランザクションを生成した前記ソースである、
請求項２４の装置。
【請求項２６】
前記Ｉ／Ｏデバイスに関連する特定の行インデックスが、読み出し要求又は書き込み要求のうち１つ以上のトランザクションに関連付けられている、
請求項２５の装置。
【請求項２７】
前記第１リンクコントローラは、メモリアドレスの第１部分の記憶に関する情報を前記第２装置から受信すると、前記第１部分の記憶に関する情報を前記第１キャッシュに記憶する、
請求項１４の装置。
【請求項２８】
前記第１リンクコントローラは、前記メモリアドレスの第２部分と、前記メモリアドレスの第１部分が記憶されている前記第２装置のキャッシュのウェイを示す識別子と、を受信すると、
前記識別子に基づいて、前記第１キャッシュから前記メモリアドレスの第１部分を取り出し、
前記メモリアドレス全体を再構成する、
請求項２７の装置。
【請求項２９】
前記再構成することは、前記第１部分と前記第２部分とを連結することを含む、
請求項２８の装置。
【請求項３０】
コンピューティングデバイスによって実行されると、コンピューティングデバイスに動作を実行させる命令を記憶するコンピュータ可読記憶媒体であって、
前記動作は、
前記コンピューティングデバイスにおいて、第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することと、
前記メモリアドレスの第１部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されているかどうかを判別することと、
前記メモリアドレスの第１部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されていない場合に、前記メモリアドレスの第１部分を前記コンピューティングデバイスの前記キャッシュに記憶し、前記メモリアドレス全体と、前記第１部分の記憶に関する情報と、を前記第２デバイスに送信することと、
前記メモリアドレスの第１部分が前記コンピューティングデバイスに配置されたキャッシュに記憶されている場合に、前記メモリアドレスの第２部分のみと、前記メモリアドレスの第１部分が記憶されている前記コンピューティングデバイスの前記キャッシュのウェイを示す識別子と、を前記第２デバイスに送信することと、を含む、
コンピュータ可読記憶媒体。
【請求項３１】
前記第２デバイスが、前記第１部分の記憶に関する情報を受信すると、前記第１部分の記憶に関する情報を、前記第２デバイスに配置されたキャッシュに記憶することをさらに含む、
請求項３０のコンピュータ可読記憶媒体。
【請求項３２】
前記第２のデバイスが、前記メモリアドレスの第２部分と、前記メモリアドレスの第１部分が記憶されている前記コンピューティングデバイスの前記キャッシュのウェイを示す識別子と、を受信すると、
前記識別子に基づいて、前記第２デバイスに配置されたキャッシュから前記メモリアドレスの第１部分を読み出すことと、
前記メモリアドレス全体を再構成することと、をさらに含む、
請求項３１のコンピュータ可読記憶媒体。
【請求項３３】
前記再構成することは、前記第１部分と前記第２部分とを連結することを含む、
請求項３２のコンピュータ可読記憶媒体。
【請求項３４】
前記第１部分は、前記メモリアドレス全体の上位ビットを含むタグである、
請求項３０のコンピュータ可読記憶媒体。
【請求項３５】
前記タグを、前記コンピューティングデバイスに配置された前記キャッシュのテーブル内の場所であって、前記トランザクションを生成した前記ソースに関連付けられた場所に記憶することをさらに含む、
請求項３４のコンピュータ可読記憶媒体。
【請求項３６】
前記タグが記憶されているウェイに関連するテーブルに前記タグを記憶することをさらに含む、
請求項３５のコンピュータ可読記憶媒体。
【請求項３７】
前記タグは、前記テーブル内の行に記憶されており、前記行は、前記テーブル内の前記タグの記憶場所を示すインデックスによって識別されており、前記タグは、前記タグが記憶されているウェイに関連する列に記憶される、
請求項３６のコンピュータ可読記憶媒体。
【請求項３８】
１つ以上のインデックス行が、特定のソースに関連付けられている、
請求項３７のコンピュータ可読記憶媒体。
【請求項３９】
前記ソースは、プロセッサ、又は、前記第１デバイスの入出力（Ｉ／Ｏ）デバイスのうち何れかを含む、
請求項３８のコンピュータ可読記憶媒体。
【請求項４０】
インデックス行が、複数のウェイ列に関連付けられている、
請求項３９のコンピュータ可読記憶媒体。
【請求項４１】
トランザクションタイプが、プログラム実行スレッド、読み出し要求、書き込み要求のうち１つ以上を含む、
請求項４０のコンピュータ可読記憶媒体。
【請求項４２】
前記Ｉ／Ｏデバイスに関連付する特定の行インデックスが、読み出し要求又は書き込み要求のうち１つ以上のトランザクションに関連付けられている、
請求項３９のコンピュータ可読記憶媒体。
【請求項４３】
第１リンクコントローラと、第１キャッシュと、第１プロセッサと、第１入出力（Ｉ／Ｏ）デバイスと、を含む第１デバイスと、
第２リンクコントローラと、第２キャッシュと、第２プロセッサと、第２入出力（Ｉ／Ｏ）デバイスと、を含む第２デバイスと、を備えるシステムであって、
前記第１リンクコントローラは、
前記第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションを、前記第１プロセッサ又は前記第１Ｉ／Ｏデバイスから受信し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されているかどうかを判別し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されていない場合に、前記メモリアドレスの第１部分を前記第１キャッシュに記憶し、前記メモリアドレス全体と、前記第１部分の記憶に関する情報と、を前記第２デバイスに送信し、
前記メモリアドレスの第１部分が前記第１キャッシュに記憶されている場合に、前記メモリアドレスの第２部分のみと、前記メモリアドレスの第１部分が記憶されている前記第１キャッシュのウェイを示す識別子と、を前記第２デバイスに送信し、
前記第２リンクコントローラは、
前記第１部分の記憶に関する情報を受信すると、前記第１部分の記憶に関する情報を前記第２キャッシュに記憶し、又は、
前記メモリアドレスの第２部分と、前記アドレスの第１部分が記憶されている前記第１キャッシュのウェイを示す識別子と、を受信すると、
前記第２デバイスに配置された前記第２キャッシュから前記メモリアドレスの第１部分を前記識別子に基づいて取り出し、
前記メモリアドレス全体を再構成する、
システム。
【請求項４４】
前記再構成することは、前記第１部分と前記第２部分とを連結することを含む、
請求項４３のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１６年８月１７日に出願された米国仮特許出願第６２／３７６，０９６号及び２０１６年１１月８日に出願された米国特許出願第１５／３４５，６３９号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
【背景技術】
【０００２】
チップ（例えば、プロセッサ）間のリンクは、制御情報及びデータを同じワイヤのセットを介して送信する。例えば、グローバルメモリインターコネクト（ＧＭＩ）リンクでは、送信される各リンクパケットは１２８Ｂ幅である。リンクを介した典型的な要求送信は、トランザクションを完了するために、「要求」コマンドと、「応答」コマンドと、「確認」（ＡＣＫ）コマンドと、を含む。これら３つのコマンドは制御パケットであり、オーバーヘッドとみなされる。システム内の一般的なキャッシュラインは６４Ｂである。したがって、リンクを介して６４Ｂのデータを送信するためには、４つのリンクパケットと、コマンドパケットを送信するための他の３つのリンクパケットとを要する。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【０００４】
【図１】１つ以上の開示された例を実施することができる例示的なデバイスのブロック図である。
【図２】例示的な複数ダイシステムのブロック図である。
【図３】アドレスを圧縮するための例示的な方法のフロー図である。
【図４】インデックス及びウェイの例示的なテーブルである。
【発明を実施するための形態】
【０００５】
プロセッサダイ間のリンク帯域幅は、利用可能な帯域幅が狭く、且つ、制御情報及びデータを同じワイヤのセットを介して送信するオーバーヘッドのために、貴重なリソースである。リンク（例えば、ＧＭＩ／ＧＯＰ／ＨＴ／ＰＣＩｅ）帯域幅を節約するために、高度の局所性を示すアドレスストリームを圧縮することができる。本方法は、本明細書でより詳細に説明されるが、送信側リンクコントローラ（例えば、リンクインタフェースモジュール）は、要求ストリーム（本明細書の文脈では、特定のプロセッサ（例えば、中央処理装置（ＣＰＵ））、スレッド又は入出力（Ｉ／Ｏ）ストリームを指す）毎に送信された直近の最大アドレスビットを保持する。後続の要求アドレスの上位ビットが同じストリームからの保存された直近の要求の上位ビットと一致すると、要求パケットが、アドレス圧縮されているものとしてマークされ、上位ビットは、パックされたＧＭＩパケットに含まれない。受信側リンクコントローラは、アドレス圧縮要求の受信に応じて、同じストリームの直近の要求について上位アドレスビットのローカルに保持されたコピーを取り出すことによって、完全な要求アドレスを再生成する。
【０００６】
例えば、アドレスを圧縮する方法が本明細書に開示されている。この方法は、第１デバイスにおいて、第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第１部分が、第１デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第１部分が、第１デバイスに配置されたキャッシュに記憶されていない場合に、メモリアドレスの第１部分が第１デバイスのキャッシュに記憶され、非圧縮メモリアドレス全体と、第１部分の記憶に関する情報と、が第２デバイスに送信される。メモリアドレスの第１部分が第１デバイスに配置されたキャッシュに記憶されている場合に、メモリアドレスの第２部分のみを含む圧縮メモリアドレスと、アドレスの第１部分が記憶されている第１デバイスのキャッシュのウェイを示す識別子と、が第２デバイスに送信される。
【０００７】
図１は、１つ以上の開示された実施形態を実施することができる例示的なデバイス１００のブロック図である。デバイス１００は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含むことができる。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージ１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４をオプションで含むことができる。
【０００８】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含むことができ、各プロセッサコアはＣＰＵ又はＧＰＵとすることができる。メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２とは別に配置されてもよい。メモリ１０４は、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）若しくはキャッシュ等の揮発性又は不揮発性メモリを含むことができる。
【０００９】
ストレージ１０６は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含むことができる。入力デバイス１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含むことができる。出力デバイス１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含むことができる。
【００１０】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信することを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信することを可能にする。入力ドライバ１１２及び出力ドライバ１１４は、オプションのコンポーネントであり、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４が存在しない場合であっても同様に動作することに留意されたい。
【００１１】
図２は、マルチダイ装置２００の一例を示すブロック図である。ダイ装置２００は、１つ以上のダイ２１０（例えば、ダイ１  ２１０１、ダイ２  ２１０２及びダイ３  ２１０３で示されている）を含む。各ダイ２１０は、リンクコントローラ２１１と、リンクアドレスキャッシュ２１２と、Ｉ／Ｏデバイス２１３と、プロセッサ２１４と、を含む。キャッシュ２１２は、図１で上述したメモリ１０４と実質的に同様のものとすることができる。Ｉ／Ｏデバイスは、図１の上記の要素１０８，１１０，１１２，１１４を含むことができ、プロセッサ２１４は、図１の上記のプロセッサ１０２と実質的に同様のものとすることができる。リンクコントローラ２１１は、ダイ２１０間の通信を制御する。例えば、図２に示すように、ダイ２  ２１０２は、ダイ１  ２１０１及びダイ３  ２１０３と通信する。したがって、各ダイ２１０のペアに対するリンクコントローラ２１１は、これら２つのダイ間の通信リンクを制御する。各ダイ２１０内のリンクコントローラ２１１は、同じダイ２１０内のキャッシュ２１２、Ｉ／Ｏデバイス２１３及びプロセッサ２１４と通信して、アドレスを圧縮するための以下に説明する方法の実行をサポートする。
【００１２】
図３は、アドレスを圧縮するための方法の一例３００を示すフロー図である。ステップ３１０において、トランザクションがソースによって生成され、トランザクションは、トランザクションを生成したソースとは異なるダイ２１０に記憶されているメモリアドレス位置を含む。例えば、図２に戻って参照すると、ダイ１  ２１０１のプロセッサ２１４上で実行されているスレッドは、ダイ２  ２１０２上のメモリに配置されているメモリアドレスを含むトランザクションを生成する。すなわち、ダイ１  ２１０１のプロセッサ２１４上で実行されているスレッドは、ダイ２  ２１０２上に位置するＤＲＡＭへの読み出し又は書き込みを生成するか、実行中にダイ２  ２１０２上に位置するアドレスへのコードフェッチを必要とする。或いは、ダイ１  ２１０１のＩ／Ｏデバイス２１３は、ダイ２  ２１０２上に位置する入出力トランザクション（例えば、読み出し又は書き込み）に関するアドレスを生成する。アドレスが、ダイ３  ２１０３又は存在する他のダイに配置されている場合もある。
【００１３】
トランザクションが（例えば、ダイ１  ２１０１上のソースによって）生成されると、ダイ１  ２１０１のリンクコントローラ２１１は、インデックスを形成し、ローカルキャッシュ２１２内の一致についてタグ部分を比較する（ステップ３２０）。タグ部分は、生成されたトランザクション内のメモリアドレスの上位ビットを指し、圧縮されていない１２８ビット幅のメモリアドレスでは、例えば２８ビット幅である。
【００１４】
インデックスは、例えば、各ストリームを一意に識別する情報に基づいて形成される。これには、何れのＣＰＵ、コア、スレッド又はＩ／Ｏデバイスがアドレスを生成したかを識別する情報が含まれる。また、アドレスビット、仮想チャネルインジケータ、読み出し／書き込みインジケータ、又は、他の何らかの情報の組み合せを使用して、特定のソース（例えば、スレッド又はＩ／Ｏストリーム）からのトランザクションを、キャッシュ内の特定のインデックスにマッピングすることができる。したがって、各ストリームは、無関係のストリームがキャッシュ内のアドレスを絶えず置き換えて効率を低下させないように、特定のインデックスにマッピングされる。
【００１５】
場合によっては、ＣＰＵ等の同じデバイス、又は、スレッドを生成するデバイス等が、複数のアドレスストリームを生成することがある。生成されたトランザクションは、１つ以上のアドレスストリームを介してメモリを読み出し、異なるアドレスストリームを介して１つ以上の異なるメモリ領域に書き込み、別のアドレスストリームを使用してコードをフェッチする、インターリーブトランザクションを含むことができる。ストリームを生成するプロセスによって利用されるストリームの数に厳しい制限はない。
【００１６】
したがって、各キャッシュインデックスは、キャッシュが直近の４つの異なるアドレスストリーム（すなわち、上位ビット）を含むのを可能にする複数（例えば、この場合には４つ）の結合方法を含むことができる。Ｉ／Ｏデバイスは、さらに多くのアドレスストリームをインターリーブすることができる。したがって、有用なアドレスが時期尚早に上書きされるのを避けるようにより多くのインデックスに亘ってアドレスストリームを分配するために、Ｉ／Ｏソース毎に複数のインデックスが割り当てられる。この場合、関連するアドレスを異なるエントリにマッピングするために、いくつかのアドレスビットが使用される。また、読み出しと書き込みとは独立したアドレスストリームであるため、読み出し及び書き込みは、異なるエントリにマッピングされる。なお、受信側リンクコントローラは、新たなアドレスを記憶するためのエントリ、又は、パケットを圧縮解除する場合にアドレスが読み出されるためのエントリを見つけることができるように、同じ情報を使用可能にし、同じアルゴリズムを使用して特定のトランザクションに対するキャッシュインデックスを生成する必要がある。ステップ３３０において、タグがローカルキャッシュに記憶されているタグと一致するかどうかが判別される。例えば、ダイ１  ２１０１のリンクコントローラ２１１は、タグが、ダイ１  ２１０１のキャッシュメモリ２１２に記憶されているタグと一致するかどうかをチェックする。ステップ３３０において一致しない場合、タグは、ローカルキャッシュメモリの特定のウェイに記憶され、アドレス全体と、使用されるウェイに関する情報と、を含む非圧縮パケットが受信側リンクコントローラに送信される（ステップ３４０）。
【００１７】
したがって、アドレス情報は、送信側によって示されるキャッシュの特定のウェイに記憶される。例えば、アドレスを含まない（例えば、有効とマークされていない）任意のウェイが選択される。全てのウェイが有効である場合、１つのウェイが（例えば、ランダムに）選択される。別の例では、最長未使用時間（used least recently）のエントリ（割り当てられたか、パケット圧縮に使用されたか）が追跡され、置き換えられる。例えば、ダイ１  ２１０１のリンクコントローラ２１１が、アドレスのタグが、ダイ１  ２１０１のキャッシュメモリ２１２（すなわち、ダイ１  ２１０１のローカルキャッシュメモリ）に記憶されているタグと一致しないアドレスを含むトランザクションを受信した場合、ダイ１  ２１０１のリンクコントローラ２１１は、タグと、当該タグがダイ１  ２１０１のキャッシュメモリ２１２内のテーブルに記憶されるウェイと、を示すインデックスを記憶する。ウェイは、タグが記憶される方法（way）を示し、アドレスを生成したソースからのトランザクションのタイプ（例えば、プロセッサからの命令フェッチ、読み出し要求又は書き込み要求）を示すことができる。
【００１８】
図４は、キャッシュメモリに記憶することができるインデックス及びウェイの例示的なテーブル４００を示す図である。テーブル４００は、行０〜４０に対応する複数のインデックス４１０（４１００，４１０１，４１０２，…，４１０３９，４１０４０と示されている）を含む。４０のインデックスが示されているが、テーブルは、必要に応じてより多くの又はより少ないインデックスを含むことができる。また、テーブル４００には、４つのウェイ４２０（４２０１，…，４２０４と示されている）が存在する。必要に応じてより多くの又はより少ないウェイを記憶することができることに留意されたい。また、テーブル４００は、トランザクションのソースに応じてさらに分離することができる。例えば、図４に示すように、行０〜３１は、ＣＰＵ上で実行されているスレッドによって生成されたＣＰＵトランザクションに対応している。行３２〜３５は、Ｉ／Ｏ読み出しトランザクションに対応しており、行３６〜４０は、Ｉ／Ｏ書き込みトランザクションに対応している。タグは、インデックス行（すなわち、４１０）及びウェイ列（すなわち、４２０）に対応するセルに記憶される。
【００１９】
したがって、ステップ３４０に戻って参照すると、ステップ３３０において、ダイ１  ２１０１のリンクコントローラ２１１は、一致するタグをローカルメモリ内で見つけられない場合に、インデックスを形成し、タグをテーブル４００のウェイに記憶する。例えば、トランザクションがプロセッサ２１４上で実行されているスレッドから受信された場合、タグを、インデックス０、ウェイ０（すなわち、行４１００、列４２０１）に記憶することができる。キャッシュメモリが一杯になると、新たなインデックスを保存する前に先ずインデックスを削除する必要があることに留意されたい。したがって、テーブル４００が一杯であるというケースが存在する場合、ダイ１  ２１０１のリンクコントローラ２１１は、削除するインデックスを選択し、新たに生成されたアドレスタグ及びウェイを、そのインデックス行に記憶する。例えば、置き換えられるインデックス内の任意のウェイが選択されるが、各インデックスは、インデックス生成アルゴリズムを介して特定のソースに関連付けられており、これにより、特定のトランザクションが１つのインデックスにマッピングされ、当該インデックスのみが、これにマッピングされた任意のトランザクションからアクセスされ得る。
【００２０】
或いは、送信側リンクコントローラは、トランザクションの特定のソースに関連するインデックスを追跡し、そのソースに対して記憶されているインデックスを削除する。例えば、トランザクションがプロセッサスレッド「５」から受信された場合、ダイ１  ２１０１上のリンクコントローラは、何れのインデックスがスレッド５に関連付けられているかを調べ、これらのインデックスのうち１つのインデックスを削除し、新たなトランザクションに対して形成された新たなインデックスを記憶する。他の選択肢として、最長未使用時間のアドレスが識別され、そのインデックスが削除される。
【００２１】
タグが記憶されると、ダイ１  ２１０１のリンクコントローラ２１１は、アドレス全体と、記憶されたウェイに関する情報と、を含む非圧縮パケットをダイ２  ２１０２のリンクコントローラに送信する。記憶されたタグ及びウェイに関する情報は、パケットのヘッダに追加される２ビットの形式であって、例えばウェイを識別する２ビットの形式である。つまり、アドレスキャッシュが現在のアドレスを割り当てる必要があることを示すために１ビットが送信され、現在のトランザクションがマッピングされている単一のインデックスに関連する４つのウェイのうち何れのウェイに書き込むかを示す２ビットが送信される。インデックスは、圧縮されていないトランザクションの内容から派生する。衝突を回避するために、ダイ１  ２１０１上の送信側リンクコントローラは、現在のトランザクションアドレスをダイ２  ２１０２上のリンクコントローラに送信する前にそのキャッシュ上で更新／照合されるのと同じ順序で、同じインデックスにアクセスする全てのトランザクションを送信する。そうでない場合、そのインデックスに関連する第１トランザクションが処理される前に同じインデックスが後続のトランザクションによって変更されると、受信側リンクコントローラは、送信された第１トランザクションに関連するタグ及びウェイの正しい場所を記憶しないか、調べない。
【００２２】
ステップ３５０において、受信側リンクコントローラ（すなわち、ダイ２  ２１０２上のリンクコントローラ）は、処理のためのアドレス全体と、記憶されたウェイに関する情報と、を受信し、タグを、ダイ２  ２１０２上に配置されたキャッシュメモリ内の対応するテーブル４００に記憶する。
【００２３】
ここで、タグが、ローカルキャッシュメモリ内のタグ及びウェイと一致するか判別するステップ３３０を再度参照すると、ダイ１  ２１０１のリンクコントローラは、圧縮パケットと、タグが記憶されているウェイを識別するポインタビットとを、ダイ２  ２１０２上の受信側リンクコントローラに送信する（ステップ３６０）。例えば、ダイ１  ２１０１のリンクコントローラ２１１は、ダイ１  ２１０１のキャッシュメモリ２１２のテーブル４００に記憶されているタグと一致するタグを有するアドレスを含むトランザクションを受信する。
【００２４】
この例の場合、ダイ１  ２１０１のリンクコントローラ２１１は、アドレスから上位ビット（すなわち、タグ）を除去し、アドレスの下位ビット部分のみと、タグが記憶されるテーブル４００内のウェイを示す２ビットポインタと、をダイ２  ２１０２上の受信側リンクコントローラに送信する。受信側リンクコントローラ（すなわち、この例ではダイ２  ２１０２のリンクコントローラ）は、ウェイ情報を読み出し、ダイ２  ２１０２のキャッシュメモリ内のテーブル４００からタグビットにアクセスして、処理のために非圧縮パケット全体を再生成する（ステップ３７０）。
【００２５】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、グラフィックスプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（このような命令は、コンピュータ可読媒体に記憶することが可能である）の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００２６】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体が含まれる。
【００２７】
また、上述した方法又はフロー図は、２つのダイ（例えばダイ１  ２１０１及びダイ２  ２１０２）間の通信に関して説明されているが、通信は任意のダイ間でも起こり得る。
【００２８】
装置が本明細書に開示される。装置は、第１リンクコントローラと、第１リンクコントローラに動作可能に接続された第１キャッシュと、を含む。第１リンクコントローラは、第２装置上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信する。第１リンクコントローラは、メモリアドレスの第１部分が第１キャッシュに記憶されているかどうかを判別する。メモリアドレスの第１部分が第１キャッシュに記憶されていない場合に、第１リンクコントローラは、メモリアドレスの第１部分を第１キャッシュに記憶し、非圧縮メモリアドレス全体と、第１部分の記憶に関する情報と、を第２装置に送信する。メモリアドレスの第１部分が第１キャッシュに記憶されている場合に、第１リンクコントローラは、メモリアドレスの第２部分のみを含む圧縮メモリアドレスと、メモリアドレスの第１部分が記憶されている第１キャッシュのウェイを示す識別子と、を第２装置に送信する。
【００２９】
コンピューティングデバイスによって実行されると、コンピューティングデバイスに動作を実行させる命令を記憶する非一時的なコンピュータ可読記憶媒体が本明細書に開示される。動作は、第１デバイスにおいて、第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信することを含む。メモリアドレスの第１部分が、第１デバイスに配置されたキャッシュに記憶されているかどうかが判別される。メモリアドレスの第１部分が、第１デバイスに配置されたキャッシュに記憶されていない場合に、メモリアドレスの第１部分が第１デバイスのキャッシュに記憶され、非圧縮メモリアドレス全体と、第１部分の記憶に関する情報と、が第２デバイスに送信される。メモリアドレスの第１部分が第１デバイスに配置されたキャッシュに記憶されている場合に、メモリアドレスの第２部分のみを含む圧縮メモリアドレスと、メモリアドレスの第１部分が記憶されている第１デバイスのキャッシュのウェイを示す識別子と、が第２デバイスに送信される。
【００３０】
システムが本明細書に開示される。システムは、第１リンクコントローラと、第１キャッシュと、第１プロセッサと、第１入出力（Ｉ／Ｏ）デバイスと、を含む第１デバイスと、第２リンクコントローラと、第２キャッシュと、第２プロセッサと、第２Ｉ／Ｏデバイスと、を含む第２デバイスと、を備える。第１リンクコントローラは、第２デバイス上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションを、第１プロセッサ又は第１Ｉ／Ｏデバイスから受信する。第１リンクコントローラは、メモリアドレスの第１部分が第１キャッシュに記憶されているかどうかを判別する。メモリアドレスの第１部分が第１キャッシュに記憶されていない場合に、第１リンクコントローラは、メモリアドレスの第１部分を第１キャッシュに記憶し、非圧縮メモリアドレス全体と、第１部分の記憶に関する情報と、を第２デバイスに送信する。メモリアドレスの第１部分が第１キャッシュに記憶されている場合に、第１リンクコントローラは、メモリアドレスの第２部分のみを含む圧縮メモリアドレスと、メモリアドレスの第１部分が記憶されている第１キャッシュのウェイを示す識別子と、を第２デバイスに送信する。第２リンクコントローラは、第１部分の記憶に関する情報を受信すると、第１部分の記憶に関する情報を第２キャッシュに記憶する。第２リンクコントローラは、圧縮メモリアドレスと、メモリアドレスの第１部分が記憶されている第１キャッシュのウェイを示す識別子と、を受信すると、第２デバイスに配置された第２キャッシュからメモリアドレスの第１部分を識別子に基づいて取り出し、非圧縮メモリアドレスの全体を再構成（reassemble）する。
【００３１】
いくつかの例では、第２デバイスは、第１部分の記憶に関する情報を受信すると、第１部分の記憶に関する情報を、第２デバイスに配置されたキャッシュに記憶する。いくつかの例では、第２デバイスは、圧縮メモリアドレスと、アドレスの第１部分が記憶されている第１デバイスのキャッシュのウェイを示す識別子と、を受信すると、第２デバイスに配置されたキャッシュからメモリアドレスの第１部分を識別子に基づいて取り出し、非圧縮メモリアドレスの全体を再構成する。いくつかの例では、再構成することは、第１部分と第２部分とを連結（attach）することを含む。
【００３２】
いくつかの例では、第１部分は、非圧縮メモリアドレスの上位ビットを含むタグである。いくつかの例では、タグは、第１デバイスに配置されたキャッシュのテーブル内の場所であって、トランザクションを生成したソースに関連付けられた場所に記憶される。いくつかの例では、タグは、タグが記憶されているウェイに関連するテーブルに記憶されている。いくつかの例では、タグは、タグが記憶されているテーブルインデックスで識別されるテーブル内の行に記憶されており、タグが記憶されているウェイに関連する、当該行に対応する列にも記憶されている。いくつかの例では、１つ以上のインデックス行が特定のソースに関連付けられている。
【００３３】
いくつかの例では、ソースは、第１デバイスのプロセッサ又は入出力（Ｉ／Ｏ）デバイスを含む。いくつかの例では、インデックス行は、複数のウェイ列に関連付けられている。いくつかの例では、トランザクションタイプは、プログラム実行スレッド、読み出し要求、書き込み要求のうち１つ以上を含む。いくつかの例では、Ｉ／Ｏデバイスに関連する特定の行インデックスは、読み出し要求又は書き込み要求に関連付けられている。
【００３４】
装置が本明細書に開示される。装置は、第１リンクコントローラと、第１リンクコントローラに動作可能に接続された第１キャッシュと、を含む。第１リンクコントローラは、第２装置上のメモリ位置に対するメモリアドレスの要求であって、第１部分と第２部分とを含むメモリアドレスの要求を含むトランザクションをソースから受信する。第１リンクコントローラは、メモリアドレスの第１部分が第１キャッシュに記憶されているかどうかを判別する。メモリアドレスの第１部分が第１キャッシュに記憶されていない場合に、第１リンクコントローラは、メモリアドレスの第１部分を第１キャッシュに記憶し、非圧縮メモリアドレス全体と、第１部分の記憶に関する情報と、を第２装置に送信する。メモリアドレスの第１部分が第１キャッシュに記憶されている場合に、第１リンクコントローラは、メモリアドレスの第２部分のみを含む圧縮メモリアドレスと、メモリアドレスの第１部分が記憶されている第１キャッシュのウェイを示す識別子と、を第２装置に送信する。
【図１】
2019525354.tif 000003
【図２】
2019525354.tif 000004
【図３】
2019525354.tif 000005
【図４】
2019525354.tif 000006
【国際調査報告】
2019525354.tif 000007
2019525354.tif 000008