(57)【特許請求の範囲】
【請求項１】
コントロールユニットは、これに結合された非透過的メモリのブロックに対する要求を受信し、前記コントロールユニットは、前記非透過的メモリを複数の非透過的メモリブロックとして管理し、前記非透過的メモリは、その非透過的メモリに関連した定義されたメモリアドレス範囲内のメモリアドレスを使用してソフトウェアにより直接アドレスされ、
前記コントロールユニットは、前記要求に応答して、前記非透過的メモリにある前記複数の非透過的ブロックの第１ブロックを割り当て、
前記コントロールユニットは、前記要求に応答して、前記第１ブロックの第１アドレスを要求者へ通知し、当該第１アドレスは前記定義されたメモリアドレス範囲内にあり、
前記要求で指示された形式に応答して、前記コントロールユニットは、メインメモリシステムの第２のメモリアドレスのデータを前記非透過的ブロックの第１ブロックへ自動的に移動することであって、前記第２メモリアドレスは、前記要求で指示され、且つ、前記定義されたメモリアドレス範囲外のものである、方法。
【請求項２】
前記形式は、スタティックな書き込みである、請求項１に記載の方法。
【請求項３】
前記コントロールユニットは、非透過的メモリのブロックに対する第２要求を受信し、その第２要求は、スタティックな読み取り形式を含み、
前記コントロールユニットは、前記第２要求に応答して前記複数の非透過的ブロックの第２ブロックを割り当て、
前記コントロールユニットは、前記第２要求に応答して前記定義されたメモリアドレス範囲内の第２ブロックの第３アドレスを要求者へ返送し、
前記コントロールユニットは、前記形式がスタティックな読み取りであることに応答して前記第２要求で指示された第４のメモリアドレスから前記第２ブロックへデータを自動的に移動しない、請求項１に記載の方法。
【請求項４】
前記コントロールユニットは、要求者が前記第２ブロックで終了されることを決定し、
前記コントロールユニットは、前記形式がスタティックな読み取りであることに応答して前記第２ブロック内のデータを前記第４のメモリアドレスへ自動的に書き込む、請求項３に記載の方法。
【請求項５】
前記コントロールユニットは、要求者が前記第１ブロックで終了されることを決定し、
前記コントロールユニットは、要求者により処理中にブロックが書き込まれるのに応答して前記第１ブロック内のデータを前記第１ブロックに関連した第２のメモリアドレスに自動的に書き込む、請求項１に記載の方法。
【請求項６】
定義されたメモリアドレス範囲内のアドレスを使用してソフトウェアにより直接アドレスできる複数のメモリ位置を含む非透過的メモリと、
前記非透過的メモリを複数の非透過的メモリブロックとして管理するように構成されたコントロールユニットと、
を備え、前記コントロールユニットは、要求者からブロックの要求を受信するように結合され、前記コントロールユニットは、前記要求に応答して前記非透過的メモリにある前記複数の非透過的メモリブロックの第１ブロックを割り当てるように構成され、更に、前記コントロールユニットは、前記要求と共に与えられる形式に応答してメインメモリシステムの第２のメモリアドレスのデータを前記非透過的メモリブロックの第１ブロックに選択的に自動的に充填し又は前記メインメモリシステムの第２のメモリアドレスに対して前記第１ブロックからのデータをフラッシュし、そして前記コントロールユニットは、前記要求に応答して前記定義されたメモリアドレス範囲内の前記第１ブロックの第１アドレスを要求者に通知するように構成される、装置。
【請求項７】
第１形式に応答して、前記コントロールユニットは、前記第１ブロックにデータを自動的に充填するように構成され、そして第２形式に応答して、前記コントロールユニットは、前記第１ブロックへデータを移動しないように構成される、請求項６に記載の装置。
【請求項８】
前記第１形式は、スタティックな書き込み形式である、請求項７に記載の装置。
【請求項９】
前記第２形式は、スタティックな読み取り形式である、請求項７に記載の装置。
【請求項１０】
前記要求は、規定のメモリアドレス範囲内にない第１メモリアドレスを含み、前記コントロールユニットは、その第１メモリアドレスに記憶されたデータを前記第１ブロックに充填するように構成される、請求項７に記載の装置。
【請求項１１】
前記第２形式に応答し及び要求者が前記第１ブロックで終了されるのに応答して、前記コントロールユニットは、前記第１ブロックからメインメモリサブシステムへフラッシュデータを自動的に移動するように構成される、請求項７に記載の装置。
【請求項１２】
前記要求は、規定のメモリアドレス範囲内にない第１メモリアドレスを含み、前記コントロールユニットは、前記第１ブロックからのデータを、前記第１メモリアドレスにより指示された位置へフラッシュするように構成される、請求項１１に記載の装置。
【請求項１３】
前記コントロールユニットは、要求者がデータを変更するのに応答して前記第１ブロックからデータをフラッシュするように構成される、請求項１１に記載の装置。
【請求項１４】
前記非透過的メモリは、キャッシュとして使用される透過的メモリである第２部分も含むメモリアレイの一部分である、請求項６に記載の装置。
【請求項１５】
前記第２部分に対応するキャッシュタグメモリを更に備え、そのキャッシュタグメモリは、前記第２部分に記憶できる複数のキャッシュブロックに対するタグを記憶するように構成される、請求項１４に記載の装置。
【請求項１６】
データを処理するために非透過的メモリのブロックを要求するよう構成された１つ以上のプロセッサと、
メインメモリシステムと、
要求を受け取るために前記１つ以上のプロセッサに結合されると共に、前記メインメモリシステムにも結合された非透過的メモリユニットと、
を備え、前記非透過的メモリは、その非透過的メモリ内のブロックを前記要求に割り当てるように構成され、更に、前記非透過的メモリユニットは、前記要求の形式に応答して前記非透過的メモリと前記メインメモリシステムとの間でデータを自動的に移動するように構成され、前記非透過的メモリユニットは、前記非透過的メモリ内の第１要求に対して割り当てられたブロックの第１アドレスを、第１要求を開始したプロセッサへ返送するように構成され、前記第１アドレスは、前記非透過的メモリに指定されたメモリアドレス範囲内にある、システム。
【請求項１７】
前記非透過的メモリへマップされるアドレス及び前記メインメモリシステムへマップされるアドレスは、同じメモリアドレススペースの一部分である、請求項１６に記載のシステム。
【請求項１８】
前記第１要求は、前記非透過的メモリと前記メインメモリシステムとの間で移動するための第２アドレスを前記メインメモリシステムに含む、請求項１６に記載のシステム。
【請求項１９】
前記第１要求の形式は、前記メインメモリシステムから前記第１ブロックへデータを移動すべきであることを指示し、前記非透過的メモリユニットは、その移動を遂行するように構成される、請求項１８に記載のシステム。
【請求項２０】
前記第１要求の形式は、前記第１ブロックから前記メインメモリシステムへデータを移動すべきであることを指示し、前記非透過的メモリユニットは、その移動を遂行するように構成される、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に係り、より詳細には、オンチップメモリを伴う集積回路に係る。
【背景技術】
【０００２】
種々の形式の集積回路がオンチップメモリを備えている。例えば、集積回路は、キャッシュを備えることができる。プロセッサを備えた集積回路は、オフチップメモリにも記憶されたデータのサブセットに短待ち時間でアクセスするために、しばしばキャッシュを備えている。一般的に、キャッシュは、つい最近使用されたデータを記憶するハードウェア管理メモリであり、キャッシュ管理ハードウェアが、プロセッサ（又は集積回路内の他のメモリ読み取り装置）によってアクセスされたデータのコピーをキャッシュに書き込む。変更されたデータは、キャッシュにおいて新しいデータに置き換えられ、そしてキャッシュ管理ハードウェアは、その変更されたデータをメインメモリに書き戻すことができる。あるケースにおいて、プロセッサは、キャッシュ管理ハードウェアの動作に作用するためのプリフェッチインストラクション及び他のキャッシュヒントを含み、そしてキャッシュ動作を防止するためにメモリにキャッシュ不能とマークできるが、一般的に、ソフトウェアでキャッシュ管理ハードウェアをコントロールすることはできない。
【０００３】
別の形式のオンチップメモリは、埋め込み型メモリ又は「ローカルメモリ」である。このようなメモリは、ソフトウェアコントロールのもとにある（即ち、ソフトウェアがメモリの読み取り及び書き込みを行い、従って、埋め込み型メモリにどのデータが記憶されるか直接コントロールする）。埋め込み型メモリは、外部メモリより待ち時間が短く、埋め込み型メモリに記憶されたデータが頻繁にアクセスされる場合には、外部メモリをアクセスする場合に比して、電力の節約を達成することができる。
【発明の概要】
【０００４】
一実施形態において、非透過的メモリ及びコントロール回路を含む非透過的メモリユニットが提供される。コントロール回路は、非透過的メモリを非透過的メモリブロックのセットとして管理する。１つ以上のプロセッサ上で実行されるソフトウェアは、データを処理するために非透過的メモリブロックを要求する。コントロール回路は、第１ブロックを割り当て、その割り当てられたブロックのアドレス（又は他の指示）を返送して、ソフトウェアでブロックをアクセスできるようにする。又、コントロール回路は、非透過的メモリと、その非透過的メモリが結合されるメインメモリシステムとの間での自動的なデータ移動を与えることもできる。例えば、その自動的なデータ移動は、メインメモリシステムから、割り当てられたブロックへデータを充填(filling)させたり、或いは割り当てられたブロックの処理が完了した後に、割り当てられたブロックのデータをメインメモリシステムへフラッシュ(flushing)させたりすることを含む。
【０００５】
ソフトウェアは、それがブロックを要求するとき、ある形式の要求を発する。その形式は、非透過的メモリユニットが自動的なデータ移動を与えるかどうかコントロールする。例えば、ある形式は、割り当てられたブロックへデータを自動的に充填することを指定する。別の形式は、処理が完了した後にデータを自動的にフラッシュすることを指定する。更に別の形式は、自動的充填及び自動的フラッシュの結合である。
【０００６】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００７】
【図１】１つ以上の透過的／非透過的結合キャッシュを含むシステムの一実施形態を示すブロック図である。
【図２】透過的／非透過的結合キャッシュの一実施形態を示すブロック図である。
【図３】非透過的属性を含むページテーブルエントリーの一実施形態を示すブロック図である。
【図４】非透過的アドレス範囲を定義するプログラム可能なレジスタのブロック図である。
【図５】メモリ要求に応答する透過的／非透過的結合メモリの一実施形態の動作を示すフローチャートである。
【図６】透過的／非透過的結合メモリの非透過的部分を使用するコードの一実施形態の動作を示すフローチャートである。
【図７】メモリアドレススペースの一実施形態を示すブロック図である。
【図８】ブロック要求に応答するブロックベースの非透過的キャッシュの一実施形態の動作を示すフローチャートである。
【図９】ブロックベースの非透過的キャッシュの一実施形態における各ブロックの種々の状態及びそれら状態間の遷移を示すブロック図である。
【図１０】非透過的メモリブロックを要求しそしてブロックのデータを処理するコードの一実施形態の動作を示すフローチャートである。
【図１１】システムの一実施形態のブロック図である。
【図１２】コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味（即ち、〜の潜在性があるという意味）で使用されるもので、強制の意味（即ち、〜しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【０００９】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを表現する場合に、そのユニット／回路／コンポーネントの解釈に関して３５Ｕ.Ｓ.Ｃ.§１１２、第６節を引用しないことが明確に意図される。
【００１０】
透過的／非透過的結合キャッシュメモリ
一実施形態において、集積回路は、内部データメモリと、そのデータメモリ内の位置の少なくともサブセットに対応するタグのセットを記憶するように構成された関連タグメモリとを備えている。タグによりカバーされるデータメモリの部分は、透過的なキャッシュメモリとして使用される。透過的なメモリは、一般的に、ハードウェアにより管理され、従って、ソフトウェアは、透過的メモリの読み取り／書き込みを直接行わない。ソフトウェアの読み取り／書き込み（例えば、ロード又は記憶インストラクション）によってアドレスされたデータが透過的メモリに記憶される場合には、ハードウェアが、（読み取りのために）透過的メモリからデータを供給するか、又は（書き込みために）透過的メモリのデータを更新する。メモリ動作を完了するための待ち時間は減少できるが、ソフトウェアは、（外部のメインメモリシステムにおける完了とは対照的に）透過的メモリにおいてメモリ動作が完了したという他の指示を得ることはできない。別の見方をすれば、透過的なメモリは、メモリアドレススペース内のメモリアドレスへ別々にマップされず、むしろ、外部メモリからのデータのコピーを記憶し、外部メモリの位置は、関連メモリアドレスへマップされる。透過的メモリは、（例えば、タグメモリを経て）透過的メモリに記憶されたデータのアドレスへ一時的にマップされるが、それに対応するメインメモリの位置は、常に、各アドレスにもマップされる。又、ハードウェアは、コヒレンシーが実施される場合には）データのコヒレンシーも保証し、そしてデータが透過的メモリ内で変更され且つ透過的メモリからハードウェアにより除去される場合には、それに対応するメインメモリコピーを更新する。
【００１１】
タグによりカバーされないデータメモリの残り部分は、非透過的メモリとして使用される。ソフトウェアは、非透過的メモリをメモリアドレススペースの一部分へマップする。例えば、非透過的メモリへマップされるメモリアドレススペースの一部分に関連したメインメモリ位置は存在しない。或いは又、非透過的メモリへマップされるメモリアドレススペースの一部分に関連したメインメモリ位置が存在する場合には、それらの位置は、非透過的メモリに結合された要求者により発生される要求によってアクセスされない。従って、ソフトウェアは、非透過的メモリへマップされるメモリアドレススペースの一部分におけるアドレスに宛てられるロード／記憶インストラクションを使用して非透過的メモリの直接的な読み取り／書き込みを行うことができる。一実施形態では、ソフトウェアは、非透過的メモリのコンテンツを管理する。例えば、ソフトウェアは、記憶インストラクションで非透過的メモリのコンテンツを初期化するか、又は直接メモリアクセス（ＤＭＡ）ユニットをプログラミングすることにより別のソースから非透過的メモリへデータを転送する。ソフトウェアは、同様に、コンテンツを読み取ってそれを他の位置へ書き込み（又はＤＭＡ転送を使用し）、非透過的メモリからデータを移動させる。ブロックベースの非透過的メモリについて以下に詳細に述べる別の実施形態では、非透過的メモリは、ソフトウェアからのブロック要求に応答して、非透過的メモリへ又は非透過的メモリからデータを自動的に移動するための関連ハードウェアを有する。
【００１２】
一実施形態において、透過的メモリのサイズは、プログラム可能である。従って、透過的メモリに割り当てられるデータメモリの量は、集積回路において経験されるワークロードに対して透過的メモリを最適化するように変更される。例えば、ワークロード（その「メモリフットプリント」）により動作されるデータセットの所与のサイズ、及び動作中にデータに対する所与のアクセスパターンについては、透過的メモリをあるサイズより増加しても、一般的に、性能の著しい増加には至らない。データセットへのアクセスに対するあるサイズにおけるヒット率は、更にサイズを増加してもヒット率が少量しか増加しないという充分に高いパーセンテージに到達する。従って、透過的部分のサイズをプログラミングすることにより、透過的メモリ専用のデータメモリの量が最適化され、メモリの残り部分は、非透過的メモリとして使用される。
【００１３】
一実施形態において、タグメモリは、透過的メモリがその最大サイズにプログラムされても、タグの容量がデータメモリの一部分しかカバーしないというものである。タグメモリは、多くの場合に、データメモリよりも記憶ビット当たり多くのスペースを占有し、従って、タグをデータメモリの一部分に制限すると、全体的な透過的／非透過的メモリのサイズが制限される。従って、ある実施形態では、半導体エリアの効率的な使用が達成される。或いは又、タグメモリは、タグの容量がデータメモリの各キャッシュブロックに対するものでもよい。このような実施形態では、全データメモリを透過的メモリに割り当てることができる。又、このような実施形態では、データメモリの非透過的部分に対応するタグメモリを使用して、対応ブロックの状態情報、対応ブロックがマップされるメモリアドレス、等を記憶することができる。更に別の態様では、必要に応じて、非透過的メモリ内のブロックに対応するアドレス及び状態情報を記憶するように個別のタグテーブルを実施することができる。
【００１４】
データメモリは、透過的及び非透過的メモリに割り当てられた部分を有するが、依然として単一のメモリアレイであり、そのアレイにアクセスするためのアドレスをデコードする単一のデコーダを伴う。透過的／非透過的への割り当てに基づき、デコーダは、透過的アクセスが透過的部分へデコードされることを保証するためにアドレスのデコードを変更することができる。非透過的部分は、非透過的アクセスが、非透過的部分へ自然にデコードされるアドレスを使用するように、ソフトウェアにより管理される。或いは又、デコーダは、非透過的アクセスのアドレスを非透過的部分へとデコードするように構成されてもよい。単一メモリの使用は、望ましい透過的及び非透過的機能を与えながら、スペースに関しても効率的である。
【００１５】
ある実施形態では、ハードウェアが透過的メモリにおいて取り扱うよりもソフトウェアが非透過的メモリにおいて取り扱う方が良好であるという幾つかの形式のワークロードが存在する。例えば、ハードウェアは、最近アクセスしたデータを透過的メモリに保持する。以前にアクセスしたデータの著しい再アクセスを伴わないデータセットの処理は、透過的メモリから有益でないが、ソフトウェアは、非透過的オンチップメモリを効率的に管理して、（平均で）データへの短待ち時間アクセスを与えることができる。頻繁に再アクセスされるデータでも、非透過的メモリは、時々、透過的メモリより効率的で及び／又はそれより良好な性能を発揮する。例えば、他のキャッシュ動作に影響／干渉せずに透過的キャッシュからアドレス範囲をフラッシュさせることが挑戦である一方、一実施形態では、非透過的メモリにおいてハードウェアを経てアドレス範囲をフラッシュすることができる。別の例では、キャッシュで実施される置き換えポリシーが特定ワークロードに適さず、ソフトウェアが非透過的メモリの割り当て及びそこからの立ち退きをコントロールするのを許すことで、非透過的メモリへのデータの記憶とワークロードとを一致させることができる。データのより多くの再アクセスを伴う他のアクセスパターンも、透過的メモリから有益である。
【００１６】
図１は、１つ以上の透過的／非透過的結合オンチップメモリを含むシステムの一実施形態を示すブロック図である。図１の実施形態において、このシステムは、１つ以上のグラフィック処理ユニット（ＧＰＵ）１０Ａ−１０Ｎと、それに対応するレベル２（Ｌ２）キャッシュ１２Ａ−１２Ｎと、マルチコア管理ブロック（ＭＣＭＢ）１４Ａと、を備えている。ＭＣＭＢ１４Ａは、共有キャッシュメモリ１６Ａを備え、その一部分は、レベル３（Ｌ３）透過的キャッシュメモリであり、又、その一部分は、非透過的メモリである。又、ＭＣＭＢ１４Ａは、共有メモリ１６Ａに結合されたコントロールユニット１８Ａも備えている。ＭＣＭＢ１４Ａは、Ｌ２キャッシュ１２Ａ−１２Ｎに結合され、これらは、各ＧＰＵ１０Ａ−１０Ｎに結合される。又、ＭＣＭＢ１４Ａは、メインメモリシステム２０にも結合される。このシステムは、更に、１つ以上の中央処理ユニット（ＣＰＵ）２２Ａ−２２Ｍと、それに対応するレベル２（Ｌ２）キャッシュ２４Ａ−２４Ｍと、マルチコア管理ブロック（ＭＣＭＢ）１４Ｂと、を備えている。ＭＣＭＢ１４Ｂは、共有キャッシュメモリ１６Ｂを備え、その一部分は、レベル３（Ｌ３）透過的キャッシュメモリであり、又、その一部分は、非透過的メモリである。又、ＭＣＭＢ１４Ｂは、共有メモリ１６Ｂに結合されたコントロールユニット１８Ｂも備えている。ＭＣＭＢ１４Ｂは、Ｌ２キャッシュ２４Ａ−２４Ｍに結合され、これらは、各ＣＰＵ２２Ａ−２２Ｍに結合される。又、ＭＣＭＢ１４Ｂは、メインメモリシステム２０にも結合される。参照番号及びそれに続く文字で表されるコンポーネントは、同じ参照番号及び異なる文字を有する他のコンポーネントと同様である（必ずしも同一ではないが）。同じ参照番号及び異なる文字を有するコンポーネントは、その参照番号のみによって全体的に表される（例えば、ＧＰＵ１０Ａ−１０Ｎは、ＧＰＵ１０として全体的に表される）。
【００１７】
一般的に、共有キャッシュメモリ１６は、各々、１つ以上の要求ソースからメモリ要求を受信するように結合される。例えば、図１において、ＧＰＵ１０は、メモリ１６Ａの要求ソースであり、そしてＣＰＵ２２は、メモリ１６Ｂの要求ソースである。図１に示すように、メモリ要求は、他のコンポーネント（例えば、図１のＬ２キャッシュ各々１２及び２４）を通過して共有メモリに到達し、そしてそのメモリ要求がＬ２キャッシュ１２又は２４においてヒットする場合には、それらは、共有メモリには到達しない。ＧＰＵ１０及びＣＰＵ２２は、ロード／記憶インストラクションの実行に応答して、インストラクションフェッチに応答して、及びアドレス変換のような付随的サポート動作に応答して、メモリ要求を発生するように構成される。この実施形態では、プロセッサが要求ソースとして使用されるが、メモリ要求を発生できるいかなる回路が使用されてもよい。
【００１８】
メモリ要求は、その要求を非透過的又は透過的と識別する非透過的属性を含む。例えば、非透過的属性は、セットされると、非透過的を、そしてクリアされると、透過的を指示するビットである。他の実施形態では、ビットのセット及びクリア状態の逆の意味が使用されてもよく、そして他の属性エンコーディングが使用されてもよい。
【００１９】
メモリ要求が非透過的として指示される場合には、キャッシュメモリ１６は、アドレスをメモリの非透過的部分へとデコードするように構成される。識別された位置に記憶されたデータは、（要求が読み取りである場合は）メモリ要求に応答して付与されるか、又は（要求が書き込みである場合は）メモリ要求に応答して更新される。即ち、メモリ要求のアドレスは、タグの比較又はその他アドレスの適格性確認を行わずに、メモリを直接アドレスすることができる。他方、透過的メモリ要求は、メモリの透過的部分をアドレスするためにデコードされる。１つ又は複数の位置からのデータは、タグの一致が検出されそしてキャッシュにおいてキャッシュブロックが有効である場合しか、付与／更新されない。有効なタグ一致を検出することは、キャッシュヒットと称される（アドレスされたデータがキャッシュに記憶されている）。有効なタグ一致を検出しないことは、キャッシュミスと称される（アドレスされたデータがキャッシュに記憶されていない）。コントロールユニット１８は、キャッシュミスに応答して、アドレスされたデータをキャッシュにコピーするために、キャッシュ充填を開始するように構成される。見つからないキャッシュブロックを記憶するためにキャッシュ内の位置が選択され、そしてその選択された位置に、有効な変更された（ダーティな）キャッシュブロックが記憶される場合には、コントロールユニット１８は、その変更されたキャッシュブロックをメインメモリシステム２０へ書き戻すように構成される。他方、メモリの非透過的部分におけるミスの概念は存在せず、従って、コントロールユニット１８によって非透過的部分に対して開始されるキャッシュ充填は存在しない。
【００２０】
非透過的属性は、種々の形態で決定される。１つの実施形態では、非透過的属性は、バーチャルアドレスを、メモリアクセスに使用する物理的アドレスへと変換するのに使用されるページテーブルエントリーに含まれる。例えば、メインメモリシステム２０に記憶されたページテーブル２６は、ページテーブルにより変換される各ページに対する非透過的属性を含むページテーブルエントリーを含む。バーチャルアドレス変換をコントロールするソフトウェアは、非透過的属性を各ページに指定する。ソフトウェアは、ＣＰＵ２２Ａ−２２Ｍ、ＧＰＵ１０Ａ−１０Ｎ又はその両方において実行される。一実施形態において、ソフトウェアは、メインメモリシステム２０をアクセスするのに使用されるメモリアドレススペース内の非透過的アドレス範囲を指定し、そしてその非透過的アドレス範囲は、メモリ１６の非透過的部分へマップされる。非透過的アドレス範囲内のページへの変換は、非透過性を指示する非透過的属性を有し、そして他のページは、透過性を指示する非透過的属性を有する。他の実施形態では、非透過的属性を決定するための他のメカニズムが使用される。例えば、非透過的アドレス範囲は、メモリ要求経路（例えば、ＧＰＵ１０又は２２におけるメモリ管理ユニット、プロセッサ１０又は２２におけるアドレス発生ユニット、メモリ１６又はそのコントロールユニット１８、等）においてアクセス可能な１つ以上のレジスタにプログラムされる。他の実施形態では、非透過的属性が、特定のインストラクションエンコーディング、等を経てインストラクションのオペランドとして指定される。
【００２１】
ＧＰＵ１０Ａ−１０Ｎは、グラフィック操作（例えば、画像をフレームバッファ、ピクセル操作、等へとレンダリングする）に対して最適化されるインストラクションセットアーキテクチャーを実施する。ＧＰＵ１０Ａ−１０Ｎは、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、順序ずれ、正しい順序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを実施する。ＧＰＵ１０Ａ−１０Ｎは、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。同様に、ＣＰＵ２２Ａ−２２Ｍは、汎用インストラクションセットアーキテクチャーを実施し、そして上述した可能性のいずれかを含むマイクロアーキテクチャーを実施する。ＧＰＵ及びＣＰＵは、インストラクションを実行するように構成された回路である規範的プロセッサである。プロセッサは、個別の集積回路、集積回路に一体化されたコア、等でよい。例えば、図１において、ＧＰＵ１０、Ｌ２キャッシュ１２、及びＭＣＭＢ１４Ａは、グラフィックチップに一体化され、そしてＣＰＵ２２、Ｌ２キャッシュ２４、及びＭＣＭＢ１４Ｂは、マルチコアＣＰＵチップに一体化される。別の実施形態では、ＧＰＵ１０、ＣＰＵ２２、Ｌ２キャッシュ１２及び２４、及びＭＣＭＢ１４Ａは、集積回路に一体化される。ある実施形態では、集積回路は、ＧＰＵ／ＣＰＵ及び関連回路と一体化される他のコンポーネントも含む。
【００２２】
ＧＰＵ１０及びＣＰＵ２２は、Ｌ１キャッシュ（図示せず）を含み、従って、キャッシュ１２及び２４は、この実施形態では、Ｌ２キャッシュである。Ｌ２キャッシュは、任意のサイズ及び構成（例えば、セットアソシエーティブ、直接マップ、等）を有するものでよい。又、Ｌ２キャッシュは、任意のキャッシュブロックサイズ（例えば、３２バイト又は６４バイト、或いはそれ以上又はそれ以下）を実施するものでよい。キャッシュブロックサイズは、キャッシュにおける割り当て及び割り当て解除の単位である。
【００２３】
結合キャッシュメモリ１６を含むのに加えて、ＭＣＭＢ１４は、一般的に、対応するプロセッサとメインメモリシステム２０との間の相互接続を与えることができる。キャッシュコヒレンシーが実施される場合には、ＭＣＭＢ１４は、プローブを発生する役割を果たす（例えば、あるプロセッサからの要求は、他のプロセッサへのプローブを生じさせて、他のプロセッサのＬ１又はＬ２キャッシュに変更されたデータを得、キャッシュされたコピーを更新要求に対して無効にし、等々を行う）。ＭＣＭＢは、互いに通信し及び／又はメインメモリシステム２０のメモリコントロールと通信する。一実施形態において、メモリコントローラは、ＭＣＭＢ１４と共にオンチップで実施されてもよく、及び／又は１つのＭＣＭＢ１４の一部分でもよい。
【００２４】
メインメモリシステム２０は、任意の形式のメモリを含む。例えば、メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、等）ＳＤＲＡＭ（ＳＤＲＡＭのモバイルバージョン、例えば、ｍＤＤＲ３を含む）、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等を含む。
【００２５】
図１のシステムの他の実施形態は、共有キャッシュメモリを１つだけ含む（例えば、メモリ１６Ａ／コントロールユニット１８Ａ又はメモリ１６Ｂ／コントロールユニット１８Ｂ）。更に別の実施形態は、ＣＰＵ２２Ａ−２２Ｍ及びＧＰＵ１０Ａ−１０Ｎの両方に対してアクセス可能な共有メモリを有し、これは、上述したメモリ１６／コントロールユニット１８と同様である。
【００２６】
種々の実施形態における各コンポーネントの数は、変化し得ることに注意されたい。例えば、１つ以上のＧＰＵ１０Ａ−１０Ｎが設けられてもよく、そして１つ以上のＣＰＵ２２Ａ−２２Ｍが設けられてもよい。他の実施形態では、ＧＰＵが存在せず及び／又はＣＰＵも存在しない。１０Ｎ及び２２Ｍで示されるように、あるプロセッサの数が他のプロセッサの数と異なってもよい。Ｌ２キャッシュ１２及び２４は、図１には、各プロセッサに関連して示されているが、他の実施形態では、プロセッサのサブセットにより共有されてもよい。他の実施形態では、Ｌ２キャッシュがなくてもよい。
【００２７】
図２は、メモリ１６Ａ及びコントロールユニット１８Ａの一実施形態のブロック図である。メモリ１６Ｂ及びコントロールユニット１８Ｂも同様である。ここに示す実施形態では、メモリ１６Ａは、デコーダ３０Ａ−３０Ｂと、タグメモリ３２と、データメモリ３４と、比較器３６とを備えている。コントロールユニット１８Ａは、描写レジスタ３８を備えている。デコーダ３０Ａ−３０Ｂは、メモリ要求のアドレス（図２のアドレス）、要求の非透過的属性（図２のＮＴ）、及び要求の他の属性（図２の他の属性）を受け取るように結合される。コントロールユニット１８Ａは、非透過的属性を受け取るように結合され、そして種々の実施形態において、他の属性又は他の属性の幾つかも受け取ることができる。比較器は、非透過的属性、他の属性（又は他の属性の少なくとも幾つか）、及びアドレス（又はタグメモリ３２からのタグと比較されるアドレスの少なくとも一部分）を受け取るように結合される。デコーダ３０Ａは、タグメモリ３２及びコントロールユニット１８Ａに結合され、そしてデコーダ３０Ｂは、データメモリ３４及びコントロールユニット１８Ａに結合される。データメモリ３４は、読み取りデータ出力をＬ２キャッシュ及びメインメモリシステムに与えると共に、Ｌ２キャッシュから書き込みデータを受け取るために、コントロールユニット１８Ａに結合される。タグメモリ３２は、比較器３６に結合され、この比較器は、データメモリ３４及びコントロールユニット１８Ａに結合される。
【００２８】
デコーダ３０Ａ−３０Ｂは、メモリ要求のアドレスをデコードして、各々、アクセスされるべきタグメモリ３２及びデータメモリ３４内のメモリ位置を選択するように構成される。タグメモリ３２内の位置は、透過的メモリ要求に対するアドレスのタグ部分と比較されるべき１つ以上のタグを記憶する。その位置に記憶されるタグの数は、透過的キャッシュの構成に依存する。例えば、透過的キャッシュが直接マップ型である場合には、１つのタグが記憶される。透過的キャッシュがＮ路セットアソシエーティブである場合には、Ｎ個のタグが記憶される。タグは、有効ビットのような種々の状態と共に、タグメモリ３２により比較器３６へ出力される。比較器３６は、タグをアドレスのタグ部分と比較し、そしてヒット又はミスをデータメモリ３４及びコントロールユニット１８Ａへシグナリングする。キャッシュがＮ路セットアソシエーティブである場合には、比較器３６は、ヒット路も識別する。データメモリ３４は、ヒット路からデータを出力する（又は書き込みのためにヒット路へ書き込みデータを書き込む）。アドレスのタグ部分は、キャッシュブロック内のメモリ要求のオフセットを識別するビットを除外すると共に、位置を選択するためにデコーダ３０Ａ−３０Ｂによりデコードされるインデックスビットも除外するアドレスの部分である。
【００２９】
比較器３６は、非透過的属性を受け取り、そして非透過的メモリアクセスに対してヒットをシグナリングするのを禁止するように構成される。むしろ、データメモリ３４は、非透過的メモリ要求に応答してデータメモリ３４の非透過的部分における識別された位置にアクセスする。同様に、メモリ要求の他の属性も比較に影響する。例えば、他の属性は、キャッシュ不能な属性及び／又はキャッシュバイパス属性を含む。メモリアクセスがキャッシュ不能であるか、又はキャッシュがバイパスされる場合には、比較器３６は、アクセスに対してヒットをアサートすることも禁止する。コントロールユニット１８Ａは、メモリ要求（図２のメインメモリシステムへの／からの）に対してメインメモリアクセスを開始するためにＭＣＭＢ１４Ａの他の回路とインターフェイスする。或いは又、ある実施形態では、タグは、非コヒレントな部分に対して維持され、そして比較器３６は、比較を行う。
【００３０】
デコーダ３０Ｂは、アドレスをデコードし、そしてアクセスされるべき位置を選択するように同様に構成される。図２において水平の破線４０で示されたように、データメモリ３４は、透過的キャッシュ部分（図２の破線４０より上）と、非透過的メモリ部分（図２の破線４０より下）とに分割される。従って、非透過的メモリアドレスは、非透過的部分内の位置へとデコードされ、そして透過的メモリアドレスは、透過的部分内の位置へとデコードされる。一実施形態では、例えば、データメモリ３４の透過的部分は、インデックスの最低数値へとマップされる。このような実施形態では、デコーダ３０Ｂは、透過的メモリ要求に対して透過的部分へマップされる範囲の外側のインデックスのアドレスビットをマスクし、透過的メモリ要求アドレスが透過的部分へデコードされることを保証する。即ち、非透過的属性が透過性を指示する場合には、デコーダ３０Ｂは、インデックスのより上位ビットを０に対してマスクし、インデックスを透過的部分へデコードするよう強制する。非透過的メモリ要求アドレスはマスクされず、従って、非透過的部分へデコードされる。一実施形態では、ソフトウェアが非透過的メモリアドレス範囲の割り当てをコントロールし、その範囲のアドレスが、透過的メモリ要求に対してマスクされたインデックスの部分に非ゼロのアドレスビットを有する（従って、通常のアドレスデコーディング以外の特定のロジックをデコーダ３０Ｂにもたずに、非透過的メモリ要求アドレスが非透過的部分へデコードされる）ようにする。
【００３１】
例えば、データメモリ２４は、４０９６個のアドレス可能なメモリ位置を含み、従って、データメモリのインデックスは、１２個のアドレスビットを含む。これらメモリ位置の２５６個は、透過的キャッシュに割り当てられ、最下位の８個のアドレスビットは、透過的メモリ要求のためにデコードされ（最上位４ビットはマスクされ）、そして非透過的メモリアドレス範囲は、インデックスの最上位４ビットに非ゼロビットを含む。他の実施形態では、透過的及び非透過的アドレスが他の仕方でデータメモリ位置にマップされる。
【００３２】
一実施形態において、透過的キャッシュのサイズは、描写レジスタ３８においてプログラム可能である。このような実施形態では、コントロールユニット１８Ａは、キャッシュのプログラムされるサイズに対して付加的なアドレスビットをマスクするようにデコーダ３０Ａ−３０Ｂにマスキングコントロールを与える。前記例を続けると、透過的キャッシュが１／２サイズ（１２８個のメモリ位置）へプログラムされる場合には、１つの付加的な最上位ビット（即ち、最上位から５番目のビット）がマスクされる。又、デコーダ３０Ａは、この場合もインデックスをマスクし、キャッシュのプログラムされたサイズに一致するようにタグアクセスを減少させる。又、プログラムされる描写は、非透過的メモリのサイズを増加させることもできる。というのは、透過的キャッシュメモリに対して使用されない部分を非透過的メモリに対して使用できるからである。
【００３３】
他の実施形態では、デコーダ３０Ａ−３０Ｂの異なる構成が使用される。例えば、不揮発性メモリの範囲は、ベースアドレスに自由に割り当てられ、そしてデコーダ３０Ｂは、ベースアドレスを非透過的部分の第１位置へデコードし、ベースアドレス＋第１位置のサイズを第２位置へデコードし、等々により、その範囲をデータメモリの非透過的部分へデコードする。又、別の実施形態では、透過的キャッシュ及び非透過的メモリをデータメモリ３４内の位置へマップする異なるスキームを使用することもできる。
【００３４】
ある実施形態では、データメモリ３４がバンク化される。例えば、６４バイトのキャッシュブロックは、データメモリ３４において８個の８バイトバンクにわたって記憶される。このような実施形態では、非透過的メモリは、キャッシュブロックより粒度が微細である。例えば、非透過的メモリアクセスは、前記例では、８バイトのようなバンクサイズにされる。
【００３５】
図２に示すように、データメモリ３４は、単一のデコーダにより管理される単一メモリアレイである。即ち、デコーダは、アドレスをデコードしてワード線のセットを発生し、各ワード線は、データメモリ３４を形成するメモリアレイ内の異なる位置を選択する。幾つかの位置は、透過的キャッシュメモリにためのキャッシュブロック記憶位置であり、そして他の位置は、非透過的メモリ位置である。
【００３６】
別の実施形態では、メモリの非透過的部分にもタグが付けられる。このような実施形態は、複数のアドレス範囲を非透過的アドレスと指定することができる。しかしながら、このような実施形態では、非透過的メモリのタグメモリは、ソフトウェアによって読み取り及び書き込みすることができ、ソフトウェアで非透過的部分のコンテンツを管理できるようにする。
【００３７】
図２は、メモリ１６Ａへの１つのアドレス入力を示しているが、他の実施形態では、２つ以上のアドレスをマルチポート構成でパラレルにサポートできることに注意されたい。各ポートには、３０Ａ−３０Ｂと同様のデコーダを含むことができる。
【００３８】
図３は、ページテーブル２６に記憶されるページテーブルエントリー５０の一実施形態のブロック図である。ページテーブルエントリー５０は、アドレス変換メカニズムの一部分として使用される。ある実施形態では、ハイアラーキー形態での複数のページテーブルアクセスを使用して、バーチャルアドレスを物理的アドレスへマップする。このような実施形態では、バーチャルアドレスタグ（ＶＡタグ）は、必要とされない。他の実施形態では、ページテーブルエントリーをルックアップするのに使用されないバーチャルアドレスの部分が、エントリー５０のバーチャルアドレスタグフィールドに対してマッチングが取られる。物理的ページ番号（ＰＰＮ）フィールドは、物理的アドレスのページ部分（これは、バーチャルアドレスのオフセット部分と連結されて物理的アドレスを形成する）を記憶する。いかなるページサイズもサポートされる（例えば、４キロバイト、８キロバイト又はそれ以上、例えば、１−４メガバイト、或いはそれ以上）。ある実施形態では、２つ以上のページサイズがサポートされてもよい。又、ページテーブルエントリー５０は、非透過的属性（ＮＴ）も含み、そして他の属性を含んでもよい（他の属性フィールド）。他の属性は、例えば、キャッシュ能力、ライトスルー又はライトバック、特権レベル要求、有効ビット、読み取り／書き込み許可、等を含む。
【００３９】
従って、エントリー５０のようなページテーブルエントリーを使用して、ソフトウェアは、物理的アドレスの範囲を、ＮＴ属性を使用する非透過性として割り当てることができる。この範囲外の他のページは、透過性を指示するＮＴ属性を有してもよい。
【００４０】
図４は、非透過的アドレス範囲でプログラムされるレジスタ５２の一実施形態のブロック図である。このアドレス範囲は、いかなる形態で表現されてもよい。例えば、図４に示すように、アドレス範囲は、ベースアドレス及び限界として表される。又、範囲は、ベースアドレス及びサイズとして表されてもよいし、或いは範囲を定義する他の形態で表されてもよい。レジスタ５２のようなレジスタは、メモリ要求の非透過的属性を決定するためにメモリ要求に対してアドレス発生及び変換（もし適用可能であれば）のいかなる点において使用されてもよい。例えば、プロセッサ内のメモリ管理ユニット（ＭＭＵ）は、レジスタ５２を備え、変換されたアドレスをベース及び限界フィールドと比較して、アドレスが非透過的アドレス範囲内にあるか又は非透過的アドレス範囲外であるか決定することができる。ある実施形態では、２つ以上のレジスタ５２を含ませることにより、２つ以上のアドレス範囲を定義することができる。
【００４１】
図５は、メモリ１６Ａ／コントロールユニット１８Ａに与えられるメモリ要求に応答するメモリ１６Ａ／コントロールユニット１８Ａの一実施形態の動作を示すフローチャートである。理解を容易にするために、ブロックが特定の順序で示されているが、他の順序を使用してもよい。又、ブロックは、コントロールユニット１８Ａ内の組み合わせロジックによりパラレルに遂行されてもよい。ブロック、ブロックの組み合わせ及び／又は全体的なフローチャートは、複数のクロックサイクルにわたってパイプライン処理される。
【００４２】
要求の非透過的属性が透過的を指示する（判断ブロック５４の「ノー」岐路）場合には、デコーダ３０Ａ−３０Ｂは、アドレスがデータメモリ３４の透過的部分へデコードされることを保証するためにメモリ要求のアドレスをマスクするように構成される（ブロック５６）。非透過的属性が非透過的を指示する（判断ブロック５４の「イエス」岐路）場合には、マスキングは生じない。いずれの場合にも、デコーダ３０Ａ−３０Ｂは、アドレスをデコードし（ブロック５８）、そしてタグメモリ３２及びデータメモリ３４内のメモリ位置を選択するように構成される。メモリ要求が透過的であり且つメモリ１６Ａの透過的部分においてミスがあった（判断ブロック６０の「イエス」岐路）場合には、コントロールユニット１８Ａは、見つからないキャッシュブロックを得るためにキャッシュ充填を発生するように構成される（ブロック６２）。コントロールユニット１８Ａは、キャッシュから立ち退かすためのブロックを選択するように構成され、その立ち退かされるブロックが変更される場合には、コントロールユニット１８Ａは、キャッシュブロックをメインメモリシステム２０に書き戻すように構成される。メモリ要求がヒットであるか又は非透過的である（判断ブロック６０の「ノー」岐路）場合には、データメモリ３４のメモリ位置がアクセスされる。
【００４３】
メモリ要求が読み取りである（判断ブロック６４の「イエス」岐路）場合には、メモリ１６Ａは、データメモリ３４内のアクセスされた位置からデータを出力する（ブロック６６）。さもなければ、メモリ要求は、書き込みであり（判断ブロック６４の「ノー」岐路）、そしてメモリ１６Ａは、アクセスされた位置を書き込みデータで更新する（ブロック６８）。
【００４４】
図６は、メモリ１６ＡをコントロールするためにＣＰＵ２２又はＧＰＵ１０の一方又は両方により実行されるコントロールコードの一実施形態の動作を示すフローチャートである。メモリ１６Ｂについても同様の動作が遂行される。コントロールコードは、実行されたときに、システムが図６に示す動作を実行するようにさせるインストラクションを含む。ブロックは、図６では特定の順序で示されているが、他の順序を使用してもよい。
【００４５】
コードは、メモリ１６Ａの透過的キャッシュ部分の望ましいサイズを決定する（ブロック７０）。望ましいサイズは、最大サイズでもよいし又は最大サイズ未満でもよい。種々のファクタが決定に影響する。例えば、実行されるべきワークロードは、サイズに影響する。ワークロードが、大きなキャッシュサイズから利益を得る場合には（例えば、予想されるヒット率が高くなるために）、大きなキャッシュサイズが選択される。ワークロードが、大きなキャッシュから利益を得ない場合には（例えば、ワークロードが実行されるときにデータがあまり再使用されない）、小さなキャッシュサイズが使用される。コードは、コントロールユニット１８Ａ（例えば、描写レジスタ３８）にサイズをプログラムする（ブロック７２）。
【００４６】
選択された透過的キャッシュサイズ及びデータメモリ３４のサイズに基づいて、コードは、ベースアドレス及び非透過的メモリのサイズを決定する（ブロック７４）。例えば、１メガバイトのキャッシュサイズが選択された場合には、非透過的メモリ範囲のベースアドレスが１メガバイトの境界上にある。非透過的メモリのサイズは、透過的キャッシュのサイズよりデータメモリのサイズだけ小さい（例えば、データメモリが８メガバイトで、キャッシュサイズが１メガバイトである場合には、非透過的メモリは、１メガバイトの境界で始まって７メガバイトである）。コードは、実施形態に基づいて、非透過的メモリを識別するように構成レジスタ又はページテーブルエントリーをプログラムする（ブロック７６）。コードは、非透過的メモリのコンテンツを管理する（ブロック７８）。例えば、コードは、非透過的メモリを既知の値へ初期化するか、非透過的メモリと他のメモリ位置又は周辺機器との間でデータを移動するか、等々である。ある実施形態では、非透過的メモリと他のメモリ位置又は周辺機器との間のデータの移動は、ハードウェア回路で取り扱われる。
【００４７】
図７は、メモリアドレススペース８０の一実施形態のブロック図である。メモリアドレススペースは、システムのメモリへマップされる数値のセットを含む。即ち、メモリアドレススペース８０内の各数値は、システムのメモリ内の特定の記憶位置を独特に識別する。あるケースでは、メモリアドレススペース８０の一部分が周辺装置（メモリマップ入力／出力（Ｉ／Ｏ））へマップされるが、メモリアドレススペースの残り部分はメモリ位置へマップされる。異なるアドレススペース（例えば、Ｉ／Ｏアドレススペース又は構成アドレススペース）のアドレスは、メモリアドレススペースのアドレスと同等ではない。
【００４８】
図７に示したように、メモリアドレススペース８０の一部分は、メモリ１６の非透過的部分へマップされる（参照番号８２）。メモリアドレススペース内の非透過的範囲８２の位置は、ソフトウェアにより決定され、そしてある実施形態では、透過的キャッシュ部分のサイズに基づいて特定境界を開始とする。メモリアドレススペース内の他のメモリアドレス（例えば、参照番号８４で示す非透過的範囲８２より下のアドレス、及び参照番号８６で示す非透過的範囲８２より上のアドレス）は、メインメモリシステム２０へマップされる。範囲８４及び８６内のアドレスは、ページテーブルにキャッシュ記憶可能と指示される場合に、又はキャッシュ可能性を決定する他のメカニズム、例えば、ＣＰＵ２２又はＧＰＵ１０にサポートされるメモリ形式領域レジスタを経て、メモリ１６Ａの透過的キャッシュ部分にキャッシュ記憶される資格がある。
【００４９】
図７において、メモリアドレススペース８０内の数値アドレスがスペースの左側に示されている。従って、下位のメインメモリアドレス範囲８４は、アドレス０で始まり、アドレスＮへと延びる。アドレスＮは、メモリ１６Ａの透過的キャッシュ部分のサイズの境界のアドレスである。従って、非透過的アドレス範囲は、アドレスＮ＋１で始まって、アドレスＮ＋Ｍへと延びる（但し、Ｍは、非透過的範囲のサイズである）。上位のメインメモリアドレス範囲は、Ｎ＋Ｍ＋１で始まって、Ｎ＋Ｍ＋Ｑへと延びる。従って、０とＮ＋Ｍ＋Ｑとの間のアドレスは、メインメモリシステム２０又はメモリ１６Ａの非透過的部分内の特定のメモリ位置へとマップされる。アドレスＮ＋Ｍ＋Ｑは、システムにおいて考えられる最大アドレスであるか、Ｎ＋Ｍ＋Ｑより大きなアドレスは、アドレスを発生するインストラクションに欠陥を招くことがある。
【００５０】
ブロックベースの非透過的メモリ
メモリ１６Ａの非透過的部分は、ＧＰＵ１０の非透過的データセット（即ち、ソフトウェアがメモリ１６Ａ内の非透過的メモリへマップすることを希望するデータセット）を記憶するのに充分なものである。同様に、非透過的メモリ１６Ｂは、ＣＰＵ２２の非透過的データセットを記憶するのに充分なものである。他の実施形態では、希望の非透過的データセットが非透過的メモリのサイズを越える。このような実施形態では、ソフトウェアは、非透過的メモリへ及び非透過的メモリからデータをかなり頻繁に転送する必要がある。データ移動を実行する上で助けとなるコントロールユニット１８Ａ（又は１８Ｂ）の実施形態が意図される。
【００５１】
ある実施形態は、メモリ１６Ａの一部分が透過的キャッシュメモリにも割り当てられる図１の実施形態に関連して具現化される。しかしながら、他の実施形態は、同じメモリアレイの透過的キャッシュメモリと共有されない（が、非透過的メモリへメモリ要求を発生する要求リソースと共に依然オンチップである）非透過的メモリにおいて具現化される。
【００５２】
非透過的メモリアドレス範囲は、複数の非透過的メモリブロックに分割される。非透過的メモリブロックは、要求ソース（例えば、ＧＰＵ１０Ａ−１０Ｎ又はＣＰＵ２２Ａ−２２Ｍ）により要求される非透過的メモリの（メモリアドレススペースが）隣接するブロックである。非透過的メモリブロックは、希望のサイズのものでよく、キャッシュブロックのサイズに関連する必要はない。例えば、非透過的メモリブロックは、システム内で実施されるアドレス変換メカニズムにおけるページのサイズでもよいし、又はページサイズの整数倍でもよい。他の実施形態は、必要に応じて、ページサイズより小さいサイズを使用してもよい。
【００５３】
以下の説明を簡単化するため、ＧＰＵ１０Ａ−１０Ｎは、要求ソースの一例として使用され、そしてメモリ１６Ａ及びコントロールユニット１８Ａの非透過的部分は、非透過的メモリの一例として使用される。しかしながら、他の実施形態は、ＣＰＵ２２Ａ−２２Ｍ及びメモリ１６Ｂ／コントロールユニット１６Ｂ（又はＣＰＵ及びＧＰＵ要求ソースに対する単一の共有メモリ）を含めて、他の要求ソース及び非透過的メモリを有する。
【００５４】
非透過的メモリに対して種々の読み取り及び書き込みを遂行するのに加えて、ＧＰＵ１０は、コントロールユニット１８Ａにブロック要求を送信するように構成される。ブロック要求は、ブロックのための使用モデルを識別し、そしてメインメモリアドレス（即ち、非透過的メモリへマップされないアドレス）も識別する。コントロールユニット１８Ａは、ブロック要求に応答して非透過的メモリブロックの１つを割り当てるように構成されると共に、ブロックに対するポインタ（例えば、非透過的メモリブロックのベースアドレス）を返送するように構成される。使用モデルに基づいて、コントロールユニット１８Ａは、メインメモリと割り当てられたブロックとの間でデータを自動的に移動する。例えば、コントロールユニット１８Ａは、メインメモリからのデータをその割り当てられたブロックへ自動的に充填するか、割り当てられたブロックでの終了をＧＰＵ１０が指示した後に割り当てられたブロックからのデータをメインメモリに自動的にフラッシュするか、或いはその両方を行う。
【００５５】
ブロック要求は、任意の形態で公式化される。例えば、ブロック要求は、ブロック要求アドレスとして指定される定義されたアドレスへの記憶インストラクションと、それに続く、その同じアドレスへのロードインストラクションである。記憶インストラクションにより記憶されるデータは、割り当てられたブロックに対するデータのソース／行先であるメインメモリアドレスでよく、そして以下に述べる使用モデルの指示も含んでよい。ブロックアドレス（指定ブロックのベースアドレス）は、ロードインストラクションの結果として返送され、従って、ＧＰＵで実行されるソフトウェアは、ブロックアドレスを使用してブロックにアクセスすることができる。或いは又、ブロック要求を送信するためＧＰＵインストラクションセットアーキテクチャーにおいて特定のインストラクションが定義されてもよい。ブロック要求を送信しそしてブロックアドレスを受信するメカニズムが使用されてもよい。
【００５６】
一実施形態において、非透過的メモリブロックに対して３つの使用モデル、即ちスタティックな読み取り、スタティックな書き込み、及びスタティックな読み取り／書き込み、が考えられる。他の実施形態では、必要に応じて、２つ以上の使用モデルのセットが定義される。スタティックな読み取り使用モデルは、ブロック要求がブロックで終了されたときに割り当てられたブロックからのデータをメインメモリに自動的にフラッシュすることを含む。従って、スタティックな読み取りブロックは、ブロック要求者がブロックの各バイトを書き込むことを意図した（又はブロックの非書き込みバイトのコンテンツが「ドントケア(don't care)」である）ブロック図である。スタティックな書き込み使用モデルは、メインメモリからのデータを自動的に充填することを含む。スタティックな読み取り／書き込みモデルは、自動的な充填及び自動的なフラッシュの両方を含む。
【００５７】
ブロック割り当て及び自動的データ移動を与えることによって、コントロールユニット１８Ａは、ＧＰＵで実行されるソフトウェアをデータ移動タスクから外すことができる。あるケースでは、ソフトウェアがロード／ストアインストラクションを使用してデータを移動する必要がないので、性能を改善することができる。
【００５８】
図８は、非透過的メモリブロックに対するブロック要求に応答するコントロールユニット１８Ａの一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が使用されてもよい。又、ブロックは、コントロールユニット１８Ａ内の組み合わせロジックでパラレルに遂行されてもよい。ブロック、ブロックの組み合わせ及び／又は全体的なフローチャートは、複数のクロックサイクルにわたってパイプライン処理される。
【００５９】
一実施形態において、所与の要求者のブロック要求は、その要求者が以前に割り当てられた非透過的メモリブロックで終了されるという指示でもある。以前の非透過的メモリブロックが要求者に割り当てられ（判断ブロック９０の「イエス」岐路）、そして以前の非透過的メモリブロックがスタティックな読み取り形式である（判断ブロック９２の「イエス」岐路）である場合には、コントロールユニット１８Ａは、以前の非透過的メモリブロックのフラッシュをスタートするように構成される（ブロック９４）。コントロールユニット１８Ａは、非透過的メモリブロックの状態をフラッシュに切り換えるように構成される。以前の非透過的メモリブロックは、以前の非透過的メモリブロックが要求されたときに使用モデルがスタティック読み取り又はスタティック読み取り／書き込みと指示された場合にスタティック読み取り形式を有する。以前の非透過的メモリブロックがスタティックな読み取り形式でない場合には、コントロールユニット１８Ａは、非透過的メモリブロックの状態を利用可能へ切り換えるように構成される（ブロック９６）。
【００６０】
他の実施形態では、明確なブロック完了コマンドがサポートされ、そして要求者は、ブロック完了コマンドをコントロールユニット１８Ａへ送信する。コントロールユニット１８Ａは、ブロック完了コマンドに応答して、ブロック９２、９４及び９６に示された同じ処理を遂行するように構成される。
【００６１】
コントロールユニット１８Ａは、ブロック要求に応答して非透過的メモリブロックが割り当てに利用できるかどうか決定するように構成される（判断ブロック９８）。利用できない場合には（判断ブロック９８の「ノー」岐路）、コントロールユニット１８Ａは、非透過的メモリブロックが利用可能になるのを待機する（ブロック１００）。或いは又、コントロールユニット１８Ａは、非透過的メモリブロックが割り当てに利用できない場合には、ブロック要求に応答して「ブロック利用不能」を返送するように構成される。「ブロック利用不能」応答は、ゼロブロックアドレスでもよいし、又はブロック内のオフセットであるブロックアドレスの最下位ビットで指示されてもよい。非透過的メモリブロックが利用可能であるか、又は待機後に利用可能になった場合には、コントロールユニット１８Ａは、非透過的メモリブロックを割り当てるように構成される（ブロック１０２）。又、コントロールユニット１８Ａは、ブロック要求において供給される対応するメインメモリアドレスを記録するように構成されてもよいし、その対応するメインメモリアドレスを、割り当てられたブロックと関連付けてもよい（ブロック１０４）。
【００６２】
ブロック要求がスタティックな書き込み形式を含む（例えば、使用モデルがスタティック書き込み又はスタティック読み取り／書き込みである−判断ブロック１０６の「イエス」岐路）場合には、コントロールユニット１８Ａは、対応するメインメモリアドレスからの割り当てられたブロックの充填を開始するように構成される（ブロック１０８）。コントロールユニット１８Ａは、割り当てられたブロックの状態を充填へ切り換えるように構成される（ブロック１１０）。ブロック要求がスタティックな書き込み形式を含まない（判断ブロック１０６の「ノー」岐路）場合には、コントロールユニット１８Ａは、ブロックの状態をアクティブへ切り換えるように構成される（ブロック１１２）。いずれにせよ、コントロールユニット１８Ａは、割り当てられたブロックのブロックアドレスを要求者へ返送するように構成される（ブロック１１４）。
【００６３】
図９は、非透過的メモリブロックに対してコントロールユニット１８Ａの一実施形態により具現化される状態マシンを示すブロック図である。図９の状態マシンは、各非透過的メモリブロックに対してパラレルに実施される。この状態マシンは、利用可能な状態１３０と、充填状態１２２と、アクティブな状態１２４と、フラッシュ状態１２６とを含む。図９に示す幾つかの遷移は、図８を参照して上述したものである。
【００６４】
非透過的メモリブロックが利用可能な状態１２０にある場合には、要求者からのブロック要求に応答して割り当てに利用できる。コントロールユニット１８Ａは、スタティックな書き込み形式（例えば、スタティックな書き込み又はスタティックな読み取り／書き込み使用モデル）を有するブロック要求に対してブロックを割り当てる場合に、ブロックの状態を利用可能な状態１２０から充填状態１２２へ切り換えるように構成される。一実施形態において、コントロールユニット１８Ａは、ブロックが充填状態１２２にある間にはブロックへのメモリ読み取り要求を停止又は拒絶するように構成される（コントロールユニット１８Ａによりブロックへデータがまだ書き込まれているので、要求者により供給される対応するメインメモリアドレスからデータを移動する）。充填状態１２２では、コントロールユニット１８Ａは、対応するメインメモリアドレス（及びその対応するメインメモリアドレスに隣接するアドレス）を読み取り、そして割り当てられたブロックへデータを書き込むように構成される。充填が完了すると、コントロールユニット１８Ａは、ブロックの状態を充填状態１２２からアクティブ状態１２４へ切り換えるように構成される。他方、コントロールユニット１８Ａは、スタティックな書き込み形式をもたないブロック要求に応答してブロックを割り当てる場合に、ブロックの状態を利用可能な状態からアクティブな状態１２４へ切り換える。
【００６５】
アクティブな状態１２４において、非透過的メモリブロックが要求者に割り当てられ、そして要求者は、必要に応じて、非透過的メモリブロックにアクセスする。要求者は、非透過的メモリブロック内のデータの処理を完了すると、それがブロックで終了されたことを指示する（例えば、上述したように、別のブロックを要求するか、又は明確なブロック完了コマンドを使用することにより）。要求者がブロックで実行しそしてそれがスタティックな読み取り形式（例えば、スタティックな読み取り又はスタティックな読み取り／書き込み使用モデル）でない場合には、コントロールユニット１８Ａは、ブロックの状態をアクティブな状態１２４から利用可能な状態１２０へ切り換える。ブロックがスタティックな読み取り形式である場合には、コントロールユニット１８Ａは、ブロックの状態をアクティブな状態１２４からフラッシュ状態１２６へ切り換えるように構成される。フラッシュ状態１２６において、コントロールユニット１８Ａは、ブロックからのデータをそれに対応するメインメモリアドレスに書き込むように構成される。フラッシュが完了すると、コントロールユニット１８Ａは、ブロックの状態をフラッシュ状態１２６から利用可能な状態１２０へ切り換えるように構成される。
【００６６】
図１０は、非透過的メモリブロックを使用してデータを処理するためにＧＰＵ１０において実行されるコードの一実施形態の動作を示すフローチャートである。このコードは、実行時に、図１のシステムが、図１０に示す動作を実施するようにさせるインストラクションを含む。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が使用されてもよい。
【００６７】
このコードは、ブロック形式と、処理されるべきブロックのメインメモリアドレスとを決定する（ブロック１３０）。ブロック形式は、ブロックに対してコードを実行すべき処理に基づいている。例えば、コードがブロックに書き込むべき新たなデータを生成しようとする場合に、使用モデルは、スタティックな読み取りである。コードがブロックからデータを読み取ろうとするが、書き込もうとしない場合には、使用モデルは、スタティックな書き込みである。コードがブロックからデータを読み取りそしてデータを書き込もうとする場合には、使用モデルは、スタティックな読み取り／書き込みである。メインメモリアドレスは、処理されるべきデータの位置に基づいて決定される。例えば、ＧＰＵ１０は、メインメモリシステムのフレームバッファ内の画像のタイルを処理する。タイルは、全体的な画像のサブセクションである。ＧＰＵは、処理されるべき次のタイルを選択し、そしてメインメモリアドレスは、選択されたタイルのアドレスである。
【００６８】
コードは、非透過的メモリブロックを要求し（ブロック１３２）、そしてブロックアドレスを使用して、非透過的メモリブロックの処理を遂行する（ブロック１３４）。任意であるが、明確なブロック完了コマンドを含む実施形態では、コードは、ブロック完了コマンドを送信する（ブロック１３６）。メインメモリに処理されるべき付加的なブロックがある場合には（判断ブロック１３８の「イエス」岐路）、コードは、ブロック１３０へ戻り、次のブロックに対する処理を開始する。
【００６９】
ここでは、特定の機能がソフトウェア又はハードウェアで実施されるものとして説明されたが、ソフトウェア及びハードウェアで実施される機能は、実施形態ごとに変化し得ることに注意されたい。例えば、ソフトウェアは、非透過的メモリであると定義されるアドレス領域を割り当てることができ、そしてハードウェアは、非透過的メモリへ及び非透過的メモリからデータを移動するように構成される。
【００７０】
ある実施形態では、ハードウェア回路と、実行されているソフトウェアコードとの間の通信は、ブロック要求の形態であり、返送されるブロックのコンテンツを検査することに注意されたい。更に、この通信は、特定の通信を識別するための種々の属性を伴うロード／記憶コマンドの形態である。
【００７１】
システム及びコンピュータアクセス可能な記憶媒体
図１１は、システム１５０の一実施形態のブロック図である。このシステム１５０は、図１に示されたシステムの別の実施形態である。ここに示す実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１５８に結合された集積回路１５２の少なくとも１つのインスタンスを含む。集積回路１５２は、ＧＰＵ１０、ＣＰＵ２２、Ｌ２キャッシュ１２及び２４、ＭＣＭＢ１４、メモリ１６及びコントロールユニット１８を含む。外部メモリ１５８は、メインメモリシステム２０を含む。集積回路１５２へ供給電圧を供給すると共に、メモリ１５８及び／又は周辺装置１５４へ１つ以上の供給電圧を供給する電源１５６も設けられる。ある実施形態では、集積回路１５２の２つ以上のインスタンスが含まれる（そして２つ以上の外部メモリ１５８も含まれる）。
【００７２】
周辺装置１５４は、システム１５０の形式に基づいて望ましい回路を含む。例えば、一実施形態では、システム１５０は、移動装置（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、スマートホン、等）であり、そして周辺装置１５４は、ＷｉＦｉ、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺装置１５４は、ＲＡＭ記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含めて、付加的な記憶装置も含む。周辺装置１５４は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。他の実施形態では、システム１５０は、任意の形式のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等）でよい。
【００７３】
図１２は、コンピュータアクセス可能な記憶媒体２００のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び／又はデータをコンピュータに与えるために使用中にコンピュータによってアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク（固定又は除去可能な）、テープ、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、ＲＡＭ（例えば、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等）、ＲＯＭ、フラッシュメモリ、又はユニバーサルシリアルバス（ＵＳＢ）インターフェイス、フラッシュメモリインターフェイス（ＦＭＩ）、シリアル周辺インターフェイス（ＳＰＩ）のような周辺インターフェイスを経てアクセス可能な不揮発性メモリ（例えば、フラッシュメモリ）、等を含む。記憶媒体は、マイクロエレクトロメカニカルシステム（ＭＥＭＳ）を含むと共に、ネットワーク及び／又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体を含む。図１２のコンピュータアクセス可能な記憶媒体２００は、図６及び／又は１０を参照して上述したコードを含むコントロールコード２０２を記憶する。一般的に、コンピュータアクセス可能な記憶媒体２００は、実行時に、図６及び１０に示す動作の一部分又は全部を実施するインストラクションのセットを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体及び送信媒体、例えば、ワイヤード又はワイヤレス送信を含む。
【００７４】
前記開示が完全に明らかになると、種々の変更や修正が当業者に明らかであろう。そのような全ての変更や修正は、特許請求の範囲に包含されることが意図される。
【符号の説明】
【００７５】
１０：グラフィック処理ユニット（ＧＰＵ）
１２：レベル２（Ｌ２）キャッシュ
１４：マルチコア管理ブロック（ＭＣＭＢ）
１６：共有キャッシュメモリ
１８：コントロールユニット
２０：メインメモリシステム
２２：中央処理ユニット（ＣＰＵ）
２４：レベル２（Ｌ２）キャッシュ
２６：ページテーブル
３０：デコーダ
３２：タグメモリ
３４：データメモリ
３６：比較器
３８：描写レジスタ
５０：ページテーブルエントリー
５２：レジスタ
【図１】
0005528554.tif 000002
【図２】
0005528554.tif 000003
【図３】
0005528554.tif 000004
【図４】
0005528554.tif 000005
【図５】
0005528554.tif 000006
【図６】
0005528554.tif 000007
【図７】
0005528554.tif 000008
【図８】
0005528554.tif 000009
【図９】
0005528554.tif 000010
【図１０】
0005528554.tif 000011
【図１１】
0005528554.tif 000012
【図１２】
0005528554.tif 000013