(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6707605
(24)【登録日】2020年5月22日
(45)【発行日】2020年6月10日
(54)【発明の名称】異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
(51)【国際特許分類】
G06F 12/0815 20160101AFI20200601BHJP
G06F 12/084 20160101ALI20200601BHJP
G06F 12/0897 20160101ALI20200601BHJP
G06F 15/78 20060101ALI20200601BHJP
G06F 15/167 20060101ALI20200601BHJP
【FI】
G06F12/0815
G06F12/084
G06F12/0897
G06F15/78 530
G06F15/167 610A
【請求項の数】35
【全頁数】15
(21)【出願番号】特願2018-190049(P2018-190049)
(22)【出願日】2018年10月5日
(62)【分割の表示】特願2016-28904(P2016-28904)の分割
【原出願日】2009年3月27日
(65)【公開番号】特開2019-12563(P2019-12563A)
(43)【公開日】2019年1月24日
【審査請求日】2018年10月5日
(31)【優先権主張番号】12/057,601
(32)【優先日】2008年3月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】オッフェン,ゼーヴ
(72)【発明者】
【氏名】ベルコヴィッツ,アリエル
(72)【発明者】
【氏名】ピアッツァ,トマス,エー.
(72)【発明者】
【氏名】ファレル,ロバート,エル.
(72)【発明者】
【氏名】コーカー,アルトゥグ
(72)【発明者】
【氏名】カーン,オペル
【審査官】
後藤 彰
(56)【参考文献】
【文献】
米国特許第06801207(US,B1)
【文献】
特開2007−257637(JP,A)
【文献】
特開2006−216012(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0815
G06F 12/084
G06F 12/0897
G06F 15/167
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
第一の処理アーキテクチャーを有する複数のコアと;
前記コアのうちの少なくとも一つによって使用可能なキャッシュ・コヒーレンス・ドメイン内のキャッシュ階層において構成された第一レベル・キャッシュ、第二レベル・キャッシュおよび第三レベル・キャッシュであって、前記キャッシュ階層の少なくとも一つのキャッシュは、第二の処理アーキテクチャーを有する一つまたは複数の機能回路と共有される情報を記憶する、キャッシュと;
前記複数のコアのうちの一つまたは複数を前記一つまたは複数の機能回路に結合する少なくとも一つの相互接続と;
前記キャッシュ・コヒーレンス・ドメイン内の少なくとも一つのキャッシュと、前記一つまたは複数の機能回路の少なくとも一つのキャッシュとの間のコヒーレンスを維持する論理とを有するプロセッサであって、
前記論理は、前記キャッシュ階層を使うことができる少なくとも一つのコアによって提供される前記情報を、該情報を前記一つまたは複数の機能回路の前記少なくとも一つのキャッシュにとってアクセス可能にするよう転送し;
前記論理は、前記一つまたは複数の機能回路のうちの少なくとも一つによって生成または修正された第一の情報を、該第一の情報を前記キャッシュ階層の少なくとも一つのキャッシュにとってアクセス可能にするよう転送する、
プロセッサ。
【請求項2】
前記複数のコアは第一のダイ上に形成され、前記一つまたは複数の機能回路は第二のダイ上に形成される、請求項1記載のプロセッサ。
【請求項3】
前記少なくとも一つの相互接続はPCIエクスプレス(PCIe)通信インターフェースを含む、請求項1記載のプロセッサ。
【請求項4】
前記一つまたは複数の機能回路は:グラフィック処理機能、メモリ制御機能、周辺機器制御機能、オーディオ機能、ビデオ機能、ディスク制御機能および/またはデジタル信号処理機能のうちの一つまたは複数を実行する、請求項1記載のプロセッサ。
【請求項5】
前記機能回路のうちの少なくとも一つはグラフィック処理回路を含む、請求項1記載のプロセッサ。
【請求項6】
前記論理はスヌープ動作を処理することによってコヒーレンスの前記維持を行なう、請求項1記載のプロセッサ。
【請求項7】
前記スヌープ動作は、前記コアによってまたは前記機能回路によって開始される、請求項6記載のプロセッサ。
【請求項8】
請求項1ないし7のうちいずれか一項記載のプロセッサを含む複数のプロセッサと;
メモリ・インターフェース回路を通じて前記複数のプロセッサのうちの一つまたは複数に結合されたシステム・メモリと:
前記複数のプロセッサのうちの少なくとも二つを結合する第一の相互接続回路とを有する、
システム。
【請求項9】
前記プロセッサのうちの少なくとも一つに結合された少なくとも一つの記憶装置をさらに有する、
請求項8記載のシステム。
【請求項10】
前記プロセッサのうちの少なくとも一つに結合された少なくとも一つの通信装置をさらに有する、請求項8記載のシステム。
【請求項11】
前記システム・メモリが動的ランダム・アクセス・メモリ(DRAM)を含む、請求項8記載のシステム。
【請求項12】
前記第一の相互接続回路がポイントツーポイント(P2P)相互接続を含む、請求項8記載のシステム。
【請求項13】
前記第一の相互接続回路がリング相互接続を含む、請求項8記載のシステム。
【請求項14】
請求項1ないし7のうちいずれか一項記載のプロセッサと;
前記コアのうちの一つまたは複数をシステム・メモリに通信上結合するメモリ・インターフェース回路とを有する、
システム。
【請求項15】
前記コアのうちの少なくとも一つに結合された少なくとも一つの記憶装置をさらに有する、
請求項14記載のシステム。
【請求項16】
前記コアのうちの少なくとも一つに結合された少なくとも一つの通信装置をさらに有する、請求項14記載のシステム。
【請求項17】
前記システム・メモリが動的ランダム・アクセス・メモリ(DRAM)を含む、請求項14記載のシステム。
【請求項18】
請求項1ないし7のうちいずれか一項記載のプロセッサを含む複数のプロセッサと;
前記コアのうちの一つまたは複数をシステム・メモリに通信上結合するメモリ・インターフェース回路と;
前記複数のプロセッサのうちの少なくとも二つを結合する第一の相互接続回路とを有するシステムであって、
前記第一の相互接続回路がポイントツーポイント(P2P)相互接続を含む、
システム。
【請求項19】
請求項1ないし7のうちいずれか一項記載のプロセッサを含む複数のプロセッサと;
前記コアのうちの一つまたは複数をシステム・メモリに通信上結合するメモリ・インターフェース回路と;
前記複数のプロセッサのうちの少なくとも二つを結合する第一の相互接続回路とを有するシステムであって、
前記第一の相互接続回路がリング相互接続を含む、
システム。
【請求項20】
第一の処理アーキテクチャーを有する複数のコアと;
前記コアのうちの少なくとも一つによって使用可能なキャッシュ・コヒーレンス・ドメイン内のキャッシュ階層において構成された第一レベル・キャッシュ、第二レベル・キャッシュおよび第三レベル・キャッシュであって、前記キャッシュ階層の少なくとも一つのキャッシュは、第二の処理アーキテクチャーを有する一つまたは複数の機能回路と共有される情報を記憶する、キャッシュと;
前記複数のコアのうちの一つまたは複数を前記一つまたは複数の機能回路に結合する手段と;
前記キャッシュ・コヒーレンス・ドメイン内の少なくとも一つのキャッシュと、前記一つまたは複数の機能回路の少なくとも一つのキャッシュとの間のコヒーレンスを維持する手段と;
前記キャッシュ階層を使うことができる少なくとも一つのコアによって提供される前記情報を、該情報を前記一つまたは複数の機能回路の前記少なくとも一つのキャッシュにとってアクセス可能にするよう転送する手段と;
前記一つまたは複数の機能回路のうちの少なくとも一つによって生成または修正された第一の情報を、該第一の情報を前記キャッシュ階層の少なくとも一つのキャッシュにとってアクセス可能にするよう転送する手段とを有する、
プロセッサ。
【請求項21】
前記複数のコアは第一のダイ上に形成され、前記一つまたは複数の機能回路は第二のダイ上に形成される、請求項20記載のプロセッサ。
【請求項22】
前記少なくとも一つの相互接続はPCIエクスプレス(PCIe)通信インターフェースを含む、請求項20記載のプロセッサ。
【請求項23】
前記一つまたは複数の機能回路は:グラフィック処理機能、メモリ制御機能、周辺機器制御機能、オーディオ機能、ビデオ機能、ディスク制御機能および/またはデジタル信号処理機能のうちの一つまたは複数を実行する、請求項20記載のプロセッサ。
【請求項24】
前記機能回路のうちの少なくとも一つはグラフィック処理回路を含む、請求項20記載のプロセッサ。
【請求項25】
前記コヒーレンスを維持する手段はスヌープ動作を処理することによってコヒーレンスの前記維持を行なう、請求項20記載のプロセッサ。
【請求項26】
前記スヌープ動作は、前記コアによってまたは前記機能回路によって開始される、請求項25記載のプロセッサ。
【請求項27】
請求項20ないし26のうちいずれか一項記載のプロセッサを含む複数のプロセッサと;
メモリ・インターフェース回路を通じて前記複数のプロセッサのうちの一つまたは複数に結合されたシステム・メモリと:
前記複数のプロセッサのうちの少なくとも二つを結合する第一の相互接続回路とを有する、
システム。
【請求項28】
請求項20ないし26のうちいずれか一項記載のプロセッサと;
前記コアのうちの一つまたは複数をシステム・メモリに通信上結合するメモリ・インターフェース回路とを有する、
システム。
【請求項29】
第一の処理アーキテクチャーを有する一つまたは複数のコアによってアクセス可能なキャッシュ階層の少なくとも一つのキャッシュに情報を記憶する段階であって、前記情報は、第二の処理アーキテクチャーを有する一つまたは複数の機能回路と共有されるものであり、前記キャッシュ階層は前記コアのうちの少なくとも一つによって使用可能なキャッシュ・コヒーレンス・ドメイン内の第一レベル・キャッシュ、第二レベル・キャッシュおよび第三レベル・キャッシュを含む、段階と;
少なくとも一つの相互接続を通じて前記複数のコアのうちの一つまたは複数を前記一つまたは複数の機能回路に結合する段階と;
前記キャッシュ・コヒーレンス・ドメイン内の少なくとも一つのキャッシュと、前記一つまたは複数の機能回路の少なくとも一つのキャッシュとの間のコヒーレンスを維持する段階と;
前記キャッシュ階層内の少なくとも一つのコアによって提供される情報を、該情報を前記機能回路のうちの前記一つまたは複数の機能回路の前記少なくとも一つのキャッシュにとってアクセス可能にするよう転送する段階と;
前記機能回路のうちの前記一つまたは複数の機能回路によって生成または修正された情報を、該情報を前記キャッシュ階層の少なくとも一つのキャッシュにとってアクセス可能にするよう転送する段階とを含む、
方法。
【請求項30】
前記複数のコアは第一のダイ上に形成されており、前記一つまたは複数の機能回路は第二のダイ上に形成されている、請求項29記載の方法。
【請求項31】
前記少なくとも一つの相互接続はPCIエクスプレス(PCIe)通信インターフェースを含む、請求項29記載の方法。
【請求項32】
前記一つまたは複数の機能回路は:グラフィック処理機能、メモリ制御機能、周辺機器制御機能、オーディオ機能、ビデオ機能、ディスク制御機能および/またはデジタル信号処理機能のうちの一つまたは複数を実行するものである、請求項29記載の方法。
【請求項33】
前記機能回路のうちの少なくとも一つはグラフィック処理回路を含む、請求項29記載の方法。
【請求項34】
コヒーレンスの前記維持を行なうことは、スヌープ動作を処理することを含む、請求項29記載の方法。
【請求項35】
前記スヌープ動作は、前記コアによってまたは前記機能回路によって開始される、請求項34記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概括的には情報処理の分野に関する。より特定的には、本発明の実施形態は少なくとも二つの異なるキャッシュ・コヒーレンス・ドメイン(cache coherency domain)において動作するエージェント間でキャッシュ・コヒーレンスを可能にする技法に関する。
【背景技術】
【0002】
コンピューティング・プラットフォームおよびマイクロプロセッサにますます多くの機能が組み込まれるにつれ、異なる機能ユニットの間での情報共有が増す傾向がある。たとえば、グラフィックまたは他のスループット論理を、一つまたは複数のホスト中央処理ユニット(CPU)または「コア」と同じコンピューティング・プラットフォーム、パッケージまたは集積回路に組み込むことは、それら一つまたは複数のコアとグラフィック論理〔グラフィクス・ロジック〕との間で情報を共有することを望ましくすることがありうる。いくつかの従来技術の事例では、異なる機能ユニットが同じシステム、パッケージまたはダイに組み込まれる場合、一つまたは複数のコアによってアクセスされる(記憶されるまたは読まれる)情報は、グラフィック論理のような他の機能ユニットとは異なるキャッシュ・コヒーレンス・ドメイン内にある対応するキャッシュ階層(たとえばレベル1、中間レベル、レベル2キャッシュ)において維持される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
異なるキャッシュ・アドレスの間で異なるコヒーレンス・ドメインにおいて、あるいは異なるキャッシュ・コヒーレンス・ドメインに従ってデータを維持することは、より多くのキャッシュ・メモリが使用されることを要求しうる。このことは、システム・コストおよび電力消費を増大させうる。さらに、異なる機能ユニットの間で情報が共有される状況において、異なる対応するキャッシュ階層ドメインを維持すると、異なる機能ユニットの間で情報を共有するためには、各機能ユニットはDRAMのようなメイン・メモリ・ソースにアクセスしなければならなくする。DRAMのようなメイン・メモリ・ソースは典型的にはキャッシュのような他のメモリ構造よりもアクセス速度の面でより低速である。したがって、異なる機能ユニットの間で情報を共有するためにメイン・メモリに頼ることは、機能ユニットおよび/またはシステムのパフォーマンスを劣化させることがありうる。
【課題を解決するための手段】
【0004】
本発明の課題は請求項記載の手段によって解決される。
【0005】
本発明の実施形態は限定ではなく例として付属の図面において図示される。同様の参照符号は同様の要素を指す。
【図面の簡単な説明】
【0006】
【
図1】本発明の少なくとも一つの実施形態が使用されうるシステムのブロック図である。
【
図2】本発明の少なくとも一つの実施形態が使用されうるプロセッサを示す図である。
【
図3】本発明の少なくとも一つの実施形態が使用されうる共有バス・コンピュータ・システムのブロック図である。
【
図4】本発明の少なくとも一つの実施形態が使用されうるポイントツーポイント相互接続コンピュータ・システムのブロック図である。
【
図5】ある実施形態で使用されうる動作を示す流れ図である。
【発明を実施するための形態】
【0007】
本発明の実施形態はコンピュータ・システムおよび情報処理に関する。より特定的には、本発明の実施形態は、少なくとも一つの中央処理ユニット(CPU)が、別の処理論理(たとえばグラフィック処理論理)によってアクセスまたは生成される情報への可視性を得る、よってそのような情報とのあるレベルのコヒーレンスを得ることを許容する技法に関する。そのような別の処理論理は、前記少なくとも一つのCPUとは異なるコヒーレンス・ドメインにおいて動作してもよい。いくつかの実施形態では、一つまたは複数のCPUは「最終レベル・キャッシュ(last level cache)」(LLC)または「レベル2」(L2)キャッシュのようなあるレベルのキャッシュを、一つまたは複数の処理論理(たとえばグラフィック論理)と共有し、該一つまたは複数の処理論理は前記一つまたは複数のCPUとは異なるコヒーレンス・プロトコルを実装するあるいはそうでなければ異なるコヒーレンス・ドメイン内で動作するのでもよい。ある実施形態では、CPUおよびグラフィック論理は同じダイ、パッケージまたはシステム内に組み込まれ、CPUはグラフィック論理のキャッシュ・コヒーレンス階層における少なくとも一つのレベルのキャッシュならびに前記グラフィック論理がやはりアクセスしうるLLCへのアクセスを有しうる。これによりCPUとグラフィック論理との間でDRAMのようなメイン・メモリ・ソースにアクセスすることなく情報が共有できる。
【0008】
図1は、少なくとも一つの実施形態が使用されうるシステムを示している。
図1において、少なくとも一つのCPU 101および少なくとも一つのグラフィック論理(graphics logic)105が同じダイ、パッケージまたはシステム内に統合されている。さらに、ある実施形態では、CPUおよびグラフィック論理はそれぞれのキャッシュ階層と通信する。該キャッシュ階層は第一レベル・キャッシュまたは「レベル1」(L1)キャッシュ103、104、中間レベル(mid-level)・キャッシュ107、108および最終レベル・キャッシュ(LLC)または「レベル2」(L2)キャッシュ110を含みうる。ある実施形態では、各L1および中間レベル・キャッシュは異なる論理構造である。一方、LLCは同じ情報を記憶しうる構成された一つのキャッシュであり、したがってCPUのL1およびMLCならびにグラフィック論理のMLCのそれぞれに記憶された情報を含む。ある実施形態では、LLCは、グラフィック論理がそのL1キャッシュ104の内容をそのMLC 108に移動またはコピーすることによって、グラフィック論理のL1キャッシュを含むこともできる。ここで、MLC 108はCPUコヒーレンス制御動作に関してLLCとのコヒーレンスを維持する。グラフィックL1キャッシュ104(これはグラフィック・コヒーレンス・ドメイン111内にある)とグラフィックMLC(これはCPUコヒーレンス・ドメイン109内にある)との間で情報をコピーまたは移動することによって、CPUコヒーレンス・ドメイン109(これはある実施形態では、CPU 101、L1キャッシュ103、MLC 107およびLLC 110を含む)とグラフィック・コヒーレンス・ドメイン111(これはある実施形態ではグラフィック論理105およびグラフィックL1キャッシュ104を含む)との間で情報が共有できる。
【0009】
いくつかの実施形態では、グラフィック論理によって仮想的にアドレッシングされうるグラフィックL1キャッシュ104に記憶された情報が、グラフィック画像のレンダリングに関連するさまざまなイベントの発生に応答してグラフィックMLC 108に移動またはコピーされる。ある実施形態では、グラフィックL1キャッシュ104からMLC 108への情報の移動/コピーは、グラフィック・ドライバまたは他の何らかの論理もしくはソフトウェア・プログラムによって管理および実行される。グラフィックL1キャッシュ104内の情報をMLC 108に移動またはコピーさせるイベント後には、その情報はCPUコヒーレンス・ドメイン内にあり、ある実施形態では物理アドレスを使って、あるいはCPUによって使用される他のアドレッシング方式(たとえば仮想アドレス)を使って、CPUによってアドレッシングおよびアクセスされうる。
【0010】
CPUおよびグラフィック・コヒーレンス・ドメインに加えて、
図1のシステムは表示装置(たとえばモニタ)115をも含む。この表示装置は、CPUコヒーレンス・ドメインおよびグラフィック・コヒーレンス・ドメインに関して非コヒーレントである独自のコヒーレンス・ドメイン113内にあってもよい。ある実施形態では、表示装置115は、CPUまたはグラフィック論理のキャッシュ階層内のキャッシュと直接ではなく、メイン・システム・メモリ120と通信してもよい。
【0011】
ある実施形態では、グラフィック論理105は、システム・メモリ120に頼ることなく、CPUによってLLC 110内に記憶された情報にアクセスしてCPUのL1(103)およびCPUのMLC(107)内の情報をのぞき見することによって、CPUによって利用可能または修正可能な情報にアクセスをもちうる。さらに、ある実施形態では、CPUは、LLC 110やシステム・メモリ120に頼ることなく、グラフィック論理の中間レベル・キャッシュ107に記憶されている情報にアクセスするまたは「のぞき見」してもよい。ある実施形態では、CPUやグラフィック装置がキャッシュ階層へのアクセスに比べてかなりの時間がかかるメイン・システム・メモリへのアクセスを行う必要なく、CPUコヒーレンス・ドメインとグラフィック論理コヒーレンス・ドメインとの間で情報が共有されてもよい。さらに、ある実施形態では、それぞれのCPUまたはグラフィック・キャッシュ・コヒーレンス・プロトコルを著しく変えたり影響したりすることなく、CPUコヒーレンス・ドメインとグラフィック論理コヒーレンス・ドメインとの間で情報が共有されうる。
【0012】
ある実施形態では、グラフィック論理は、そのキャッシュ・コヒーレンス・ドメイン(111)内のデータにアクセスするために仮想アドレスを生成する。しかしながら、グラフィック論理によって読まれるだけである、または他の仕方でグラフィック論理によって「所有されている」もの(「R/Oキャッシュ」)のような、グラフィック・コヒーレンス・ドメイン内のキャッシュの一部は、仮想タグを使うだけでもよい。一方、グラフィック論理によって読み書きされるもの(「R//Wキャッシュ」)のようなグラフィック・コヒーレンス・ドメイン内の他のキャッシュは、仮想および物理的アドレッシングの両方をサポートするために仮想タグおよび物理的タグの両方を使用しうる。ある実施形態では、キャッシュ・ミスがあった場合、キャッシュ階層へのグラフィック論理のアクセスは仮想アドレスから物理アドレスに変換される。それにより、システム・メモリ内の適正な物理アドレスが生成できる。
【0013】
CPUコヒーレンス・ドメインでは少なくとも二つの規則が適用される。第一に、キャッシュ・コヒーレンス規則は、位置ごとのアクセス順序付けが互いにシーケンシャルに整合的(sequentially consistent)であることを要求してもよい。シーケンシャルに整合的なアクセスは、あるキャッシュ位置にアクセスするすべての動作についてグローバルな、順序に従った(in-order)可視性を要求する。第二に、CPU順序付け規則は典型的には、単一のプロセッサによる諸書き込みはすべてのプロセッサによって同じであると観察される(observed)ことを要求するが、異なるプロセッサからの諸書き込みは異なる順序で観察されてもよい。しかしながら、プロセッサは、実行の順序において、自らの諸書き込みを遵守しなければならない。
【0014】
グラフィック・キャッシュ・コヒーレンス・ドメインは、ホストCPUのキャッシュ・コヒーレンス・ドメインとはいくつかの点で異なることがある。一つには、グラフィック・キャッシュ・ドメインでは、コヒーレンスは画像レンダリング・プロセスにおけるいくつかの点においてのみ保証されうる。一方、典型的なCPUキャッシュ・ドメインにおけるコヒーレンスは継続的に維持される。さらに、グラフィック・コヒーレンス・ドメイン・キャッシュは典型的には仮想的にアドレッシングされ、のぞき見はされないので、L1または中間レベル・キャッシュ(MLC)内に記憶された情報がLLC内に含まれることは保証されない。したがって、LLCからあるラインが追い出されるとき、それより低レベルのキャッシュは更新されないことがありうる。補償するために、グラフィック論理は、無効‐修正(invalid-to-modified)(「ItoM」)トランザクションを使用してもよい。全ライン追い出しのためにはこれらの追い出しライトバック・トランザクション、部分ライン追い出しのためにはリード・フォー・オウナーシップ(RFO: read-for-ownership)トランザクションを実行するためである。最後に、グラフィック装置は典型的には、順序外のアンコア(un-core)ファブリック(fabric)に接続された非投機的(non-speculative)な順序外(out-of-order)機械である。グラフィック論理は典型的には、キャッシュ階層またはメモリに対してアクセスを発した後ではアクセスを並べ替えることはできないので、従属アクセス(dependent accesses)は、発される前に、その先行者がグローバルに観察されていたことを確かめる必要がある。
【0015】
本発明の実施形態は、グラフィック・キャッシュ・コヒーレンス・ドメインとCPUキャッシュ・コヒーレンス・ドメインとの間でメイン・システム・メモリへのアクセスに頼ることなくデータが共有されることを許容しつつ、両ドメイン間の相違を考慮に入れる。ある実施形態では、CPUキャッシュ・コヒーレンス規則は、グラフィック論理の中間レベル・キャッシュ、LLCおよびメイン・メモリを含むいかなる物理的にアドレッシングされる構造にも適用される。CPUドメインとグラフィック・ドメインとの間のコヒーレンス境界横断アクセスのために、CPUはグラフィックMLCをのぞき見してもよい。グラフィックMLCはCPUコヒーレンス・ドメインにおけるのと同じように振る舞うであろう。さらに、本発明の実施形態は、グラフィックL1およびMLCに記憶されているデータをLLC内に含めることを許容する。それにより、グラフィック論理は、メイン・システム・メモリに頼ることなく、LLCを利用しうる。ある実施形態では、グラフィックL1からのデータは、レンダリング・イベントに応答してグラフィック装置がL1データをそのMLCにコピーまたは移動することによって、LLC内に含められる。それによりグラフィックL1データをCPUコヒーレンス・ドメイン内に入れ、それがLLC内に包まれることを保証する。するとグラフィック論理はのちに、この情報がグラフィックL1やMLC内に見出されなかった場合、LLCからこの情報にアクセスできる。
【0016】
図2は、本発明の少なくとも一つの実施形態が使用されうるプロセッサを示している。特に、
図2は、一つまたは複数の中央処理ユニット(CPU)205および210ならびに少なくとも一つの非CPU機能ユニット207および213を有するプロセッサ200を示している。
図2にはまた、機能ユニット207および213によって実行されない他の動作を実行しうる少なくとも一つの他の非CPU機能ユニット215が示されている。ある実施形態では、機能ユニット207、213および215は、グラフィック処理、メモリ制御およびオーディオ、ビデオ、ディスク制御、デジタル信号処理等のような周辺機器制御といった機能を含みうる。いくつかの実施形態では、プロセッサ200はまた、I/O制御のような
図2に示されていない他の論理をも含んでいてもよい。ある実施形態では、マルチプロセッサ・システムにおける各プロセッサまたはマルチコア・プロセッサにおける各プロセッサ・コアが、一つまたは複数のCPUと一つまたは複数のグラフィック論理との間の情報共有を可能にするために論理219を含むまたは他の形でそのような論理219と関連付けられていてもよい。
【0017】
いくつかの実施形態において、プロセッサ200は汎用CPUであってもよい。他の実施形態では、プロセッサは、汎用CPU集積回路およびグラフィック固有ハードウェアもしくは他の並列計算ハードウェアの両方を含みうるシステム内でグラフィック固有機能を実行できる汎用CPUまたはハードウェアのいずれかであってもよい。汎用計算がグラフィック・エンジン、テクスチャ・サンプルなどのような並列計算ハードウェアとますます統合されるにつれ、論理219はますます多用途かつ位置独立になる。結果として、論理219はハードウェア/ソフトウェアまたはその任意の組み合わせを含むことができ、プロセッサ200の任意の部分の中または外に位置されまたは統合されることができる。
【0018】
ある実施形態では、論理219は、CPUやグラフィック論理のキャッシュ・コヒーレンス規則を著しく修正することなくCPUがグラフィックMLCをのぞき見できるようにする論理を含む。さらに、論理219は、グラフィック・デバイスが、まずメイン・メモリに頼ることなく、LLC内の情報にアクセスすることを許容する論理を含みうる。さらに、論理219は、グラフィックL1キャッシュ内に記憶されている情報が今やグラフィックMLC内に存在するときCPUに通知し、それによりCPUが該情報をのぞき見しうるようにするのを助けてもよい。
【0019】
図3は、本発明のある実施形態が使用されうる共有バス・コンピュータ・システムを示している。マイクロプロセッサ301〜315は、一つまたは複数のCPU(323、327、333、337、343、347、353、357)、グラフィック装置(307、317、327、337)、メモリ・コントローラ(325、335、345、355)、I/O制御またはPCIもしくはPCIeコントローラ(320、330、340、350)のような他の機能ユニットといったさまざまな機能ユニットを含みうる。
図3のシステムは、マイクロプロセッサを周辺機器制御装置360とインターフェースをもたせるためにI/Oコントローラ365をも含んでいてもよい。
【0020】
ある実施形態では、システムは、CPUやグラフィック論理のキャッシュ・コヒーレンス規則を著しく修正することなくCPUがグラフィックMLCをのぞき見できるようにする論理319を含む。さらに、論理319は、グラフィック・デバイスが、まずメイン・メモリに頼ることなく、LLC内の情報にアクセスすることを許容する論理を含みうる。さらに、論理219は、グラフィックL1キャッシュ内に記憶されている情報が今やグラフィックMLC内に存在するときCPUに通知し、それによりCPUが該情報をのぞき見しうるようにするのを助けてもよい。
【0021】
いくつかの実施形態では、
図3に示される要素の一部または全部がマイクロプロセッサに含められていてもよく、直接メモリ・インターフェース(DMI: direct memory interface)、PCIエクスプレス・グラフィクス(PEG:PCI express graphics)相互接続などのような他の相互接続を含んでいてもよい。構成に関わりなく、本発明の実施形態は、
図3のシステムのいかなる部分に含まれ、あるいは他の仕方で関連付けられてもよい。
図3のシステムは、メイン・メモリ(図示せず)をも含んでいてもよい。メイン・メモリは、動的ランダム・アクセス・メモリ(DRAM)、ハードディスク・ドライブ(HDD)またはネットワーク・インターフェースを介して当該コンピュータ・システムからリモートに位置されるメモリ・ソースといった、さまざまな記憶装置および技術を含むさまざまなメモリ構造を含みうる。
図3のシステム内のキャッシュ・メモリは、プロセッサ内またはプロセッサの近傍に、たとえばプロセッサのローカル・バス上に位置されうる。
【0022】
さらに、キャッシュ・メモリは、六トランジスタ(6T)セルまたは同じくらいもしくはより高速なアクセス速度の他のメモリ・セルといった比較的高速なメモリ・セルを含んでいてもよい。
【0023】
図3に示される共有バス・コンピュータ・システムに加えて、ポイントツーポイント(P2P: point-to-point)相互接続システムおよびリング相互接続システムを含め、他のシステム構成が本発明のさまざまな実施形態と一緒に使用されてもよい。たとえば
図4のP2Pシステムがいくつかのプロセッサを含んでいてもよい。そのうち二つのプロセッサ470、480だけが例として図示されている。プロセッサ470、480はそれぞれ、メモリ42、44と接続するローカルなメモリ・コントローラ・ハブ(MCH)472、482を含みうる。プロセッサ470、480は、PtPインターフェース回路478、488を使ってポイントツーポイント(PtP)インターフェース450を介してデータを交換しうる。プロセッサ470、480はそれぞれ、ポイントツーポイント・インターフェース回路476、494、486、498を使って個々のPtPインターフェース452、454を介してチップセット490とデータを交換しうる。チップセット490はまた、高性能〔ハイ・パフォーマンス〕グラフィック・インターフェース439を介して高性能グラフィック回路438とデータを交換してもよい。本発明の実施形態は、任意の数の処理コアを有する任意のプロセッサ内に、あるいは
図4の各PtPバス・エージェント内に位置していてよい。
【0024】
ある実施形態では、
図4は、CPUやグラフィック論理のキャッシュ・コヒーレンス規則を著しく修正することなくCPUがグラフィックMLCをのぞき見できるようにする論理419を含む。さらに、論理419は、グラフィック・デバイスが、まずメイン・メモリに頼ることなく、LLC内の情報にアクセスすることを許容する論理を含みうる。さらに、論理219は、グラフィックL1キャッシュ内に記憶されている情報が今やグラフィックMLC内に存在するときCPUに通知し、それによりCPUが該情報をのぞき見しうるようにするのを助けてもよい。
【0025】
図5は、本発明の少なくとも一つの実施形態との関連で使用されうる動作の流れ図を示している。動作501では、グラフィック装置はそのL1キャッシュに記憶されている情報をCPUコヒーレンス・ドメイン内のMLCにコピーまたは移動させ、動作505で、CPUによって要求された情報についてグラフィック論理のMLCにCPUからスヌープ〔のぞき見〕が発される。動作510において要求された情報がグラフィック論理のMLC内に存在していなければ、スヌープは動作515において、該情報を求めてLLCに進みうる。該情報が動作520においてLLCに存在していなければ、動作525においてアクセスはメイン・メモリに進む。ある実施形態では、CPUはMLCをのぞき見するために物理アドレスを使用しうる。というのも、MLCは、グラフィック論理によって使用される仮想アドレス・タグに加えて物理アドレス・タグを含むからである。さらに、ある実施形態ではグラフィック論理はLLC内に情報を記憶しこれにアクセスしうるので、CPUによって要求された情報はMLCではなくLLC内にあってもよい。
【0026】
少なくとも一つの実施形態の一つまたは複数の側面は、プロセッサ内のさまざまな論理を表す機械可読媒体上に記憶された表現データによって実装されてもよい。そのデータは、機械によって読み込まれたとき、該機械に、本稿に記載された技法を実行する論理を作成させる。「IPコア」として知られるそのような表現は、具体的な機械可読媒体(「テープ」)上に記憶されてもよく、実際に論理またはプロセッサをなす作成機械中にロードすべくさまざまな顧客または製造施設に供給されてもよい。
【0027】
このように、マイクロアーキテクチャ上のメモリ領域アクセスの行き先を決定する方法および装置が記載されてきた。上記の記述は例示的であることが意図されており、制限するものではないことは理解しておくべきである。上記の記述を読み、理解すれば、当業者には他の多くの実施形態が明白となるであろう。したがって、本発明の範囲は付属の請求項を参照して、そのような請求項が資格を有する等価物の全範囲をもつものとして、決定されるべきである。
【0028】
いくつかの態様を記載しておく。
〔態様1〕
グラフィック論理コヒーレンス・ドメイン内の第一のキャッシュおよび第二のキャッシュと、
物理アドレスを使って前記第一のキャッシュ内に記憶された情報にアクセスする、前記グラフィック論理とは異なるコヒーレンス・ドメインにある中央処理ユニット(CPU)とを有する装置であって、
前記第一のキャッシュは前記第二のキャッシュに対しキャッシュ階層において異なるレベルにある、装置。
〔態様2〕
前記グラフィック論理が前記第二のキャッシュ内に情報を記憶する、態様1記載の装置。
〔態様3〕
前記第二のキャッシュが最終レベル・キャッシュ(LLC)であり、前記グラフィック論理コヒーレンス・ドメイン内の前記第二のキャッシュより低いレベルの各キャッシュに記憶されている情報を含む、態様2記載の装置。
〔態様4〕
前記第一のキャッシュが中間レベル・キャッシュ(MLC)である、態様1記載の装置。
〔態様5〕
前記CPUのキャッシュ・コヒーレンス・ドメインに対応する第三および第四のキャッシュをさらに有する態様1記載の装置であって、前記第三のキャッシュがレベル1(L1)キャッシュであり、前記第四のキャッシュが中間レベル・キャッシュ(MLC)である、態様1記載の装置。
〔態様6〕
前記グラフィック論理のコヒーレンス・ドメインに対応するL1キャッシュをさらに含む、態様5記載の装置。
〔態様7〕
CPUレベル1(L1)キャッシュ、CPU中間レベル・キャッシュ(MLC)および最終レベル・キャッシュ(LLC)を含むCPUキャッシュ階層に対応する中央処理ユニット(CPU)を含み、グラフィックL1キャッシュ、グラフィックMLCおよびグラフィックLLCに対応するグラフィック論理を含むマイクロプロセッサであって、前記CPUキャッシュ階層は前記グラフィック論理のキャッシュ階層の一部分と異なるコヒーレンス・ドメインにあり、前記CPUは前記グラフィックMLCをのぞき見する、マイクロプロセッサと、
前記CPUキャッシュ階層および前記グラフィック・キャッシュ階層内に含まれる情報を記憶するシステム・メモリとを有するシステム。
〔態様8〕
前記LLCがCPUおよびグラフィックのL1キャッシュおよびMLCに記憶されている情報を含む、態様7記載のシステム。
〔態様9〕
前記グラフィック論理が、要求された情報を求めて前記システム・メモリにアクセスする前に、情報を求めて前記LLCにアクセスする、態様8記載のシステム。
〔態様10〕
さらに表示装置を有する、態様7記載のシステム。
〔態様11〕
前記表示装置が前記CPUおよび前記グラフィック論理とは異なるコヒーレンス・ドメインにある、態様10記載のシステム。
〔態様12〕
前記CPUおよび前記グラフィック・プロセッサが同じダイ内に含まれている、態様7記載のシステム。
〔態様13〕
グラフィック・レベル1(L1)キャッシュからのデータをグラフィック・コヒーレンス・ドメインのグラフィック中間レベル・キャッシュ(MLC)に記憶する段階と;
中央処理ユニット(CPU)から前記グラフィック中間レベル・キャッシュにスヌープを発する段階であって、前記CPUは前記グラフィック・コヒーレンス・ドメインとは異なるコヒーレンス・ドメインにある、段階と;
前記スヌープの結果がミスであった場合、より高レベルのキャッシュにアクセスする段階であって、前記グラフィックL1キャッシュに記憶されている情報は前記より高レベルのキャッシュに含まれる、段階と;
前記より高レベルのキャッシュへのアクセスの結果がミスであった場合、システム・メモリにアクセスする段階とを含む、
方法。
〔態様14〕
前記より高レベルのキャッシュが前記グラフィック・キャッシュを含む最終レベル・キャッシュ(LLC)である、態様13記載の方法。
〔態様15〕
前記グラフィックL1キャッシュが第一のコヒーレンス・ドメイン内にあり、前記グラフィックMLCが第二のコヒーレンス・ドメイン内にある、態様14記載の方法。
〔態様16〕
態様15記載の方法であって、さらに前記CPUのキャッシュ・コヒーレンス・ドメインに対応する第三および第四のキャッシュにアクセスする段階を含み、前記第三のキャッシュはレベル1(L1)キャッシュであり、前記第四のキャッシュは中間レベル・キャッシュ(MLC)である、方法。
〔態様17〕
前記グラフィックL1キャッシュが前記グラフィック論理のコヒーレンス・ドメインに対応する、態様16記載の方法。
〔態様18〕
表示装置から読み取り要求を前記システム・メモリに対して発する段階をさらに含む、態様17記載の方法。
〔態様19〕
CPUキャッシュ・コヒーレンス・ドメインに対応する中央処理ユニット(CPU)と;
第一の、CPUキャッシュ・コヒーレンス・ドメインとは異なるGPUキャッシュ・コヒーレンス・ドメインに対応するグラフィック処理ユニット(GPU)とを有するプロセッサであって、前記CPUキャッシュ・コヒーレンス・ドメインおよび前記GPUキャッシュ・コヒーレンス・ドメインは、システム・メモリにアクセスすることなく、前記CPUおよびGPUのキャッシュ・コヒーレンス・ドメイン内に記憶された情報を共有する、
プロセッサ。
〔態様20〕
前記CPUキャッシュ・コヒーレンス・ドメインが第一のレベル1(L1)キャッシュおよび第一の中間レベル・キャッシュ(MLC)を含む、態様19記載のプロセッサ。
〔態様21〕
前記GPUキャッシュ・コヒーレンス・ドメインが第二のL1キャッシュおよび第二のMLCを含む、態様20記載のプロセッサ。
〔態様22〕
前記CPUキャッシュ・コヒーレンス・ドメインおよび前記GPUキャッシュ・コヒーレンス・ドメインが、第一および第二のMLC内に記憶されているすべての情報を記憶する最終レベル・キャッシュ(LLC)を含む、態様21記載のプロセッサ。
〔態様23〕
前記CPUが前記第二のMLCをのぞき見し、前記GPUが前記第一のMLCをのぞき見する、態様19記載のプロセッサ。
〔態様24〕
前記第一のMLCが、グラフィック・レンダリング・イベントに応答して前記第一のL1キャッシュに記憶されている情報を記憶する、態様23記載のプロセッサ。
〔態様25〕
前記第一のL1キャッシュからの情報を前記第一のMLCに記憶することが、その情報を前記CPUキャッシュ・コヒーレンス・ドメインに対して利用可能にする、態様24記載のプロセッサ。