JP2012533124A - ブロックベースの非透過的キャッシュ - Google Patents

ブロックベースの非透過的キャッシュ Download PDF

Info

Publication number
JP2012533124A
JP2012533124A JP2012519776A JP2012519776A JP2012533124A JP 2012533124 A JP2012533124 A JP 2012533124A JP 2012519776 A JP2012519776 A JP 2012519776A JP 2012519776 A JP2012519776 A JP 2012519776A JP 2012533124 A JP2012533124 A JP 2012533124A
Authority
JP
Japan
Prior art keywords
memory
transparent
block
control unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012519776A
Other languages
English (en)
Other versions
JP5528554B2 (ja
Inventor
ジェイムズ ワン
ゾンジャン チェン
ジェイムズ ビー ケラー
ティモシー ジェイ ミレット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2012533124A publication Critical patent/JP2012533124A/ja
Application granted granted Critical
Publication of JP5528554B2 publication Critical patent/JP5528554B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一実施形態において、非透過的メモリ及びコントロール回路を含む非透過的メモリユニットが提供される。コントロール回路は、非透過的メモリを非透過的メモリブロックのセットとして管理する。1つ以上のプロセッサ上で実行されるソフトウェアは、データを処理するために非透過的メモリブロックを要求する。コントロール回路は、第1ブロックを割り当て、その割り当てられたブロックのアドレス(又は他の指示)を返送して、ソフトウェアでブロックをアクセスできるようにする。又、コントロール回路は、非透過的メモリと、その非透過的メモリが結合されるメインメモリシステムとの間での自動的なデータ移動を与えることもできる。例えば、その自動的なデータ移動は、メインメモリシステムから、割り当てられたブロックへデータを充填させたり、或いは割り当てられたブロックの処理が完了した後に、割り当てられたブロックのデータをメインメモリシステムへフラッシュさせたりすることを含む。
【選択図】 図2

Description

本発明は、集積回路の分野に係り、より詳細には、オンチップメモリを伴う集積回路に係る。
種々の形式の集積回路がオンチップメモリを備えている。例えば、集積回路は、キャッシュを備えることができる。プロセッサを備えた集積回路は、オフチップメモリにも記憶されたデータのサブセットに短待ち時間でアクセスするために、しばしばキャッシュを備えている。一般的に、キャッシュは、つい最近使用されたデータを記憶するハードウェア管理メモリであり、キャッシュ管理ハードウェアが、プロセッサ(又は集積回路内の他のメモリ読み取り装置)によってアクセスされたデータのコピーをキャッシュに書き込む。変更されたデータは、キャッシュにおいて新しいデータに置き換えられ、そしてキャッシュ管理ハードウェアは、その変更されたデータをメインメモリに書き戻すことができる。あるケースにおいて、プロセッサは、キャッシュ管理ハードウェアの動作に作用するためのプリフェッチインストラクション及び他のキャッシュヒントを含み、そしてキャッシュ動作を防止するためにメモリにキャッシュ不能とマークできるが、一般的に、ソフトウェアでキャッシュ管理ハードウェアをコントロールすることはできない。
別の形式のオンチップメモリは、埋め込み型メモリ又は「ローカルメモリ」である。このようなメモリは、ソフトウェアコントロールのもとにある(即ち、ソフトウェアがメモリの読み取り及び書き込みを行い、従って、埋め込み型メモリにどのデータが記憶されるか直接コントロールする)。埋め込み型メモリは、外部メモリより待ち時間が短く、埋め込み型メモリに記憶されたデータが頻繁にアクセスされる場合には、外部メモリをアクセスする場合に比して、電力の節約を達成することができる。
一実施形態において、非透過的メモリ及びコントロール回路を含む非透過的メモリユニットが提供される。コントロール回路は、非透過的メモリを非透過的メモリブロックのセットとして管理する。1つ以上のプロセッサ上で実行されるソフトウェアは、データを処理するために非透過的メモリブロックを要求する。コントロール回路は、第1ブロックを割り当て、その割り当てられたブロックのアドレス(又は他の指示)を返送して、ソフトウェアでブロックをアクセスできるようにする。又、コントロール回路は、非透過的メモリと、その非透過的メモリが結合されるメインメモリシステムとの間での自動的なデータ移動を与えることもできる。例えば、その自動的なデータ移動は、メインメモリシステムから、割り当てられたブロックへデータを充填(filling)させたり、或いは割り当てられたブロックの処理が完了した後に、割り当てられたブロックのデータをメインメモリシステムへフラッシュ(flushing)させたりすることを含む。
ソフトウェアは、それがブロックを要求するとき、ある形式の要求を発する。その形式は、非透過的メモリユニットが自動的なデータ移動を与えるかどうかコントロールする。例えば、ある形式は、割り当てられたブロックへデータを自動的に充填することを指定する。別の形式は、処理が完了した後にデータを自動的にフラッシュすることを指定する。更に別の形式は、自動的充填及び自動的フラッシュの結合である。
以下、添付図面を参照して、本発明を詳細に説明する。
1つ以上の透過的/非透過的結合キャッシュを含むシステムの一実施形態を示すブロック図である。 透過的/非透過的結合キャッシュの一実施形態を示すブロック図である。 非透過的属性を含むページテーブルエントリーの一実施形態を示すブロック図である。 非透過的アドレス範囲を定義するプログラム可能なレジスタのブロック図である。 メモリ要求に応答する透過的/非透過的結合メモリの一実施形態の動作を示すフローチャートである。 透過的/非透過的結合メモリの非透過的部分を使用するコードの一実施形態の動作を示すフローチャートである。 メモリアドレススペースの一実施形態を示すブロック図である。 ブロック要求に応答するブロックベースの非透過的キャッシュの一実施形態の動作を示すフローチャートである。 ブロックベースの非透過的キャッシュの一実施形態における各ブロックの種々の状態及びそれら状態間の遷移を示すブロック図である。 非透過的メモリブロックを要求しそしてブロックのデータを処理するコードの一実施形態の動作を示すフローチャートである。 システムの一実施形態のブロック図である。 コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合に、そのユニット/回路/コンポーネントの解釈に関して35U.S.C.§112、第6節を引用しないことが明確に意図される。
透過的/非透過的結合キャッシュメモリ
一実施形態において、集積回路は、内部データメモリと、そのデータメモリ内の位置の少なくともサブセットに対応するタグのセットを記憶するように構成された関連タグメモリとを備えている。タグによりカバーされるデータメモリの部分は、透過的なキャッシュメモリとして使用される。透過的なメモリは、一般的に、ハードウェアにより管理され、従って、ソフトウェアは、透過的メモリの読み取り/書き込みを直接行わない。ソフトウェアの読み取り/書き込み(例えば、ロード又は記憶インストラクション)によってアドレスされたデータが透過的メモリに記憶される場合には、ハードウェアが、(読み取りのために)透過的メモリからデータを供給するか、又は(書き込みために)透過的メモリのデータを更新する。メモリ動作を完了するための待ち時間は減少できるが、ソフトウェアは、(外部のメインメモリシステムにおける完了とは対照的に)透過的メモリにおいてメモリ動作が完了したという他の指示を得ることはできない。別の見方をすれば、透過的なメモリは、メモリアドレススペース内のメモリアドレスへ別々にマップされず、むしろ、外部メモリからのデータのコピーを記憶し、外部メモリの位置は、関連メモリアドレスへマップされる。透過的メモリは、(例えば、タグメモリを経て)透過的メモリに記憶されたデータのアドレスへ一時的にマップされるが、それに対応するメインメモリの位置は、常に、各アドレスにもマップされる。又、ハードウェアは、コヒレンシーが実施される場合には)データのコヒレンシーも保証し、そしてデータが透過的メモリ内で変更され且つ透過的メモリからハードウェアにより除去される場合には、それに対応するメインメモリコピーを更新する。
タグによりカバーされないデータメモリの残り部分は、非透過的メモリとして使用される。ソフトウェアは、非透過的メモリをメモリアドレススペースの一部分へマップする。例えば、非透過的メモリへマップされるメモリアドレススペースの一部分に関連したメインメモリ位置は存在しない。或いは又、非透過的メモリへマップされるメモリアドレススペースの一部分に関連したメインメモリ位置が存在する場合には、それらの位置は、非透過的メモリに結合された要求者により発生される要求によってアクセスされない。従って、ソフトウェアは、非透過的メモリへマップされるメモリアドレススペースの一部分におけるアドレスに宛てられるロード/記憶インストラクションを使用して非透過的メモリの直接的な読み取り/書き込みを行うことができる。一実施形態では、ソフトウェアは、非透過的メモリのコンテンツを管理する。例えば、ソフトウェアは、記憶インストラクションで非透過的メモリのコンテンツを初期化するか、又は直接メモリアクセス(DMA)ユニットをプログラミングすることにより別のソースから非透過的メモリへデータを転送する。ソフトウェアは、同様に、コンテンツを読み取ってそれを他の位置へ書き込み(又はDMA転送を使用し)、非透過的メモリからデータを移動させる。ブロックベースの非透過的メモリについて以下に詳細に述べる別の実施形態では、非透過的メモリは、ソフトウェアからのブロック要求に応答して、非透過的メモリへ又は非透過的メモリからデータを自動的に移動するための関連ハードウェアを有する。
一実施形態において、透過的メモリのサイズは、プログラム可能である。従って、透過的メモリに割り当てられるデータメモリの量は、集積回路において経験されるワークロードに対して透過的メモリを最適化するように変更される。例えば、ワークロード(その「メモリフットプリント」)により動作されるデータセットの所与のサイズ、及び動作中にデータに対する所与のアクセスパターンについては、透過的メモリをあるサイズより増加しても、一般的に、性能の著しい増加には至らない。データセットへのアクセスに対するあるサイズにおけるヒット率は、更にサイズを増加してもヒット率が少量しか増加しないという充分に高いパーセンテージに到達する。従って、透過的部分のサイズをプログラミングすることにより、透過的メモリ専用のデータメモリの量が最適化され、メモリの残り部分は、非透過的メモリとして使用される。
一実施形態において、タグメモリは、透過的メモリがその最大サイズにプログラムされても、タグの容量がデータメモリの一部分しかカバーしないというものである。タグメモリは、多くの場合に、データメモリよりも記憶ビット当たり多くのスペースを占有し、従って、タグをデータメモリの一部分に制限すると、全体的な透過的/非透過的メモリのサイズが制限される。従って、ある実施形態では、半導体エリアの効率的な使用が達成される。或いは又、タグメモリは、タグの容量がデータメモリの各キャッシュブロックに対するものでもよい。このような実施形態では、全データメモリを透過的メモリに割り当てることができる。又、このような実施形態では、データメモリの非透過的部分に対応するタグメモリを使用して、対応ブロックの状態情報、対応ブロックがマップされるメモリアドレス、等を記憶することができる。更に別の態様では、必要に応じて、非透過的メモリ内のブロックに対応するアドレス及び状態情報を記憶するように個別のタグテーブルを実施することができる。
データメモリは、透過的及び非透過的メモリに割り当てられた部分を有するが、依然として単一のメモリアレイであり、そのアレイにアクセスするためのアドレスをデコードする単一のデコーダを伴う。透過的/非透過的への割り当てに基づき、デコーダは、透過的アクセスが透過的部分へデコードされることを保証するためにアドレスのデコードを変更することができる。非透過的部分は、非透過的アクセスが、非透過的部分へ自然にデコードされるアドレスを使用するように、ソフトウェアにより管理される。或いは又、デコーダは、非透過的アクセスのアドレスを非透過的部分へとデコードするように構成されてもよい。単一メモリの使用は、望ましい透過的及び非透過的機能を与えながら、スペースに関しても効率的である。
ある実施形態では、ハードウェアが透過的メモリにおいて取り扱うよりもソフトウェアが非透過的メモリにおいて取り扱う方が良好であるという幾つかの形式のワークロードが存在する。例えば、ハードウェアは、最近アクセスしたデータを透過的メモリに保持する。以前にアクセスしたデータの著しい再アクセスを伴わないデータセットの処理は、透過的メモリから有益でないが、ソフトウェアは、非透過的オンチップメモリを効率的に管理して、(平均で)データへの短待ち時間アクセスを与えることができる。頻繁に再アクセスされるデータでも、非透過的メモリは、時々、透過的メモリより効率的で及び/又はそれより良好な性能を発揮する。例えば、他のキャッシュ動作に影響/干渉せずに透過的キャッシュからアドレス範囲をフラッシュさせることが挑戦である一方、一実施形態では、非透過的メモリにおいてハードウェアを経てアドレス範囲をフラッシュすることができる。別の例では、キャッシュで実施される置き換えポリシーが特定ワークロードに適さず、ソフトウェアが非透過的メモリの割り当て及びそこからの立ち退きをコントロールするのを許すことで、非透過的メモリへのデータの記憶とワークロードとを一致させることができる。データのより多くの再アクセスを伴う他のアクセスパターンも、透過的メモリから有益である。
図1は、1つ以上の透過的/非透過的結合オンチップメモリを含むシステムの一実施形態を示すブロック図である。図1の実施形態において、このシステムは、1つ以上のグラフィック処理ユニット(GPU)10A−10Nと、それに対応するレベル2(L2)キャッシュ12A−12Nと、マルチコア管理ブロック(MCMB)14Aと、を備えている。MCMB14Aは、共有キャッシュメモリ16Aを備え、その一部分は、レベル3(L3)透過的キャッシュメモリであり、又、その一部分は、非透過的メモリである。又、MCMB14Aは、共有メモリ16Aに結合されたコントロールユニット18Aも備えている。MCMB14Aは、L2キャッシュ12A−12Nに結合され、これらは、各GPU10A−10Nに結合される。又、MCMB14Aは、メインメモリシステム20にも結合される。このシステムは、更に、1つ以上の中央処理ユニット(CPU)22A−22Mと、それに対応するレベル2(L2)キャッシュ24A−24Mと、マルチコア管理ブロック(MCMB)14Bと、を備えている。MCMB14Bは、共有キャッシュメモリ16Bを備え、その一部分は、レベル3(L3)透過的キャッシュメモリであり、又、その一部分は、非透過的メモリである。又、MCMB14Bは、共有メモリ16Bに結合されたコントロールユニット18Bも備えている。MCMB14Bは、L2キャッシュ24A−24Mに結合され、これらは、各CPU22A−22Mに結合される。又、MCMB14Bは、メインメモリシステム20にも結合される。参照番号及びそれに続く文字で表されるコンポーネントは、同じ参照番号及び異なる文字を有する他のコンポーネントと同様である(必ずしも同一ではないが)。同じ参照番号及び異なる文字を有するコンポーネントは、その参照番号のみによって全体的に表される(例えば、GPU10A−10Nは、GPU10として全体的に表される)。
一般的に、共有キャッシュメモリ16は、各々、1つ以上の要求ソースからメモリ要求を受信するように結合される。例えば、図1において、GPU10は、メモリ16Aの要求ソースであり、そしてCPU22は、メモリ16Bの要求ソースである。図1に示すように、メモリ要求は、他のコンポーネント(例えば、図1のL2キャッシュ各々12及び24)を通過して共有メモリに到達し、そしてそのメモリ要求がL2キャッシュ12又は24においてヒットする場合には、それらは、共有メモリには到達しない。GPU10及びCPU22は、ロード/記憶インストラクションの実行に応答して、インストラクションフェッチに応答して、及びアドレス変換のような付随的サポート動作に応答して、メモリ要求を発生するように構成される。この実施形態では、プロセッサが要求ソースとして使用されるが、メモリ要求を発生できるいかなる回路が使用されてもよい。
メモリ要求は、その要求を非透過的又は透過的と識別する非透過的属性を含む。例えば、非透過的属性は、セットされると、非透過的を、そしてクリアされると、透過的を指示するビットである。他の実施形態では、ビットのセット及びクリア状態の逆の意味が使用されてもよく、そして他の属性エンコーディングが使用されてもよい。
メモリ要求が非透過的として指示される場合には、キャッシュメモリ16は、アドレスをメモリの非透過的部分へとデコードするように構成される。識別された位置に記憶されたデータは、(要求が読み取りである場合は)メモリ要求に応答して付与されるか、又は(要求が書き込みである場合は)メモリ要求に応答して更新される。即ち、メモリ要求のアドレスは、タグの比較又はその他アドレスの適格性確認を行わずに、メモリを直接アドレスすることができる。他方、透過的メモリ要求は、メモリの透過的部分をアドレスするためにデコードされる。1つ又は複数の位置からのデータは、タグの一致が検出されそしてキャッシュにおいてキャッシュブロックが有効である場合しか、付与/更新されない。有効なタグ一致を検出することは、キャッシュヒットと称される(アドレスされたデータがキャッシュに記憶されている)。有効なタグ一致を検出しないことは、キャッシュミスと称される(アドレスされたデータがキャッシュに記憶されていない)。コントロールユニット18は、キャッシュミスに応答して、アドレスされたデータをキャッシュにコピーするために、キャッシュ充填を開始するように構成される。見つからないキャッシュブロックを記憶するためにキャッシュ内の位置が選択され、そしてその選択された位置に、有効な変更された(ダーティな)キャッシュブロックが記憶される場合には、コントロールユニット18は、その変更されたキャッシュブロックをメインメモリシステム20へ書き戻すように構成される。他方、メモリの非透過的部分におけるミスの概念は存在せず、従って、コントロールユニット18によって非透過的部分に対して開始されるキャッシュ充填は存在しない。
非透過的属性は、種々の形態で決定される。1つの実施形態では、非透過的属性は、バーチャルアドレスを、メモリアクセスに使用する物理的アドレスへと変換するのに使用されるページテーブルエントリーに含まれる。例えば、メインメモリシステム20に記憶されたページテーブル26は、ページテーブルにより変換される各ページに対する非透過的属性を含むページテーブルエントリーを含む。バーチャルアドレス変換をコントロールするソフトウェアは、非透過的属性を各ページに指定する。ソフトウェアは、CPU22A−22M、GPU10A−10N又はその両方において実行される。一実施形態において、ソフトウェアは、メインメモリシステム20をアクセスするのに使用されるメモリアドレススペース内の非透過的アドレス範囲を指定し、そしてその非透過的アドレス範囲は、メモリ16の非透過的部分へマップされる。非透過的アドレス範囲内のページへの変換は、非透過性を指示する非透過的属性を有し、そして他のページは、透過性を指示する非透過的属性を有する。他の実施形態では、非透過的属性を決定するための他のメカニズムが使用される。例えば、非透過的アドレス範囲は、メモリ要求経路(例えば、GPU10又は22におけるメモリ管理ユニット、プロセッサ10又は22におけるアドレス発生ユニット、メモリ16又はそのコントロールユニット18、等)においてアクセス可能な1つ以上のレジスタにプログラムされる。他の実施形態では、非透過的属性が、特定のインストラクションエンコーディング、等を経てインストラクションのオペランドとして指定される。
GPU10A−10Nは、グラフィック操作(例えば、画像をフレームバッファ、ピクセル操作、等へとレンダリングする)に対して最適化されるインストラクションセットアーキテクチャーを実施する。GPU10A−10Nは、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、順序ずれ、正しい順序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを実施する。GPU10A−10Nは、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。同様に、CPU22A−22Mは、汎用インストラクションセットアーキテクチャーを実施し、そして上述した可能性のいずれかを含むマイクロアーキテクチャーを実施する。GPU及びCPUは、インストラクションを実行するように構成された回路である規範的プロセッサである。プロセッサは、個別の集積回路、集積回路に一体化されたコア、等でよい。例えば、図1において、GPU10、L2キャッシュ12、及びMCMB14Aは、グラフィックチップに一体化され、そしてCPU22、L2キャッシュ24、及びMCMB14Bは、マルチコアCPUチップに一体化される。別の実施形態では、GPU10、CPU22、L2キャッシュ12及び24、及びMCMB14Aは、集積回路に一体化される。ある実施形態では、集積回路は、GPU/CPU及び関連回路と一体化される他のコンポーネントも含む。
GPU10及びCPU22は、L1キャッシュ(図示せず)を含み、従って、キャッシュ12及び24は、この実施形態では、L2キャッシュである。L2キャッシュは、任意のサイズ及び構成(例えば、セットアソシエーティブ、直接マップ、等)を有するものでよい。又、L2キャッシュは、任意のキャッシュブロックサイズ(例えば、32バイト又は64バイト、或いはそれ以上又はそれ以下)を実施するものでよい。キャッシュブロックサイズは、キャッシュにおける割り当て及び割り当て解除の単位である。
結合キャッシュメモリ16を含むのに加えて、MCMB14は、一般的に、対応するプロセッサとメインメモリシステム20との間の相互接続を与えることができる。キャッシュコヒレンシーが実施される場合には、MCMB14は、プローブを発生する役割を果たす(例えば、あるプロセッサからの要求は、他のプロセッサへのプローブを生じさせて、他のプロセッサのL1又はL2キャッシュに変更されたデータを得、キャッシュされたコピーを更新要求に対して無効にし、等々を行う)。MCMBは、互いに通信し及び/又はメインメモリシステム20のメモリコントロールと通信する。一実施形態において、メモリコントローラは、MCMB14と共にオンチップで実施されてもよく、及び/又は1つのMCMB14の一部分でもよい。
メインメモリシステム20は、任意の形式のメモリを含む。例えば、メモリは、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM(SDRAMのモバイルバージョン、例えば、mDDR3を含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等を含む。
図1のシステムの他の実施形態は、共有キャッシュメモリを1つだけ含む(例えば、メモリ16A/コントロールユニット18A又はメモリ16B/コントロールユニット18B)。更に別の実施形態は、CPU22A−22M及びGPU10A−10Nの両方に対してアクセス可能な共有メモリを有し、これは、上述したメモリ16/コントロールユニット18と同様である。
種々の実施形態における各コンポーネントの数は、変化し得ることに注意されたい。例えば、1つ以上のGPU10A−10Nが設けられてもよく、そして1つ以上のCPU22A−22Mが設けられてもよい。他の実施形態では、GPUが存在せず及び/又はCPUも存在しない。10N及び22Mで示されるように、あるプロセッサの数が他のプロセッサの数と異なってもよい。L2キャッシュ12及び24は、図1には、各プロセッサに関連して示されているが、他の実施形態では、プロセッサのサブセットにより共有されてもよい。他の実施形態では、L2キャッシュがなくてもよい。
図2は、メモリ16A及びコントロールユニット18Aの一実施形態のブロック図である。メモリ16B及びコントロールユニット18Bも同様である。ここに示す実施形態では、メモリ16Aは、デコーダ30A−30Bと、タグメモリ32と、データメモリ34と、比較器36とを備えている。コントロールユニット18Aは、描写レジスタ38を備えている。デコーダ30A−30Bは、メモリ要求のアドレス(図2のアドレス)、要求の非透過的属性(図2のNT)、及び要求の他の属性(図2の他の属性)を受け取るように結合される。コントロールユニット18Aは、非透過的属性を受け取るように結合され、そして種々の実施形態において、他の属性又は他の属性の幾つかも受け取ることができる。比較器は、非透過的属性、他の属性(又は他の属性の少なくとも幾つか)、及びアドレス(又はタグメモリ32からのタグと比較されるアドレスの少なくとも一部分)を受け取るように結合される。デコーダ30Aは、タグメモリ32及びコントロールユニット18Aに結合され、そしてデコーダ30Bは、データメモリ34及びコントロールユニット18Aに結合される。データメモリ34は、読み取りデータ出力をL2キャッシュ及びメインメモリシステムに与えると共に、L2キャッシュから書き込みデータを受け取るために、コントロールユニット18Aに結合される。タグメモリ32は、比較器36に結合され、この比較器は、データメモリ34及びコントロールユニット18Aに結合される。
デコーダ30A−30Bは、メモリ要求のアドレスをデコードして、各々、アクセスされるべきタグメモリ32及びデータメモリ34内のメモリ位置を選択するように構成される。タグメモリ32内の位置は、透過的メモリ要求に対するアドレスのタグ部分と比較されるべき1つ以上のタグを記憶する。その位置に記憶されるタグの数は、透過的キャッシュの構成に依存する。例えば、透過的キャッシュが直接マップ型である場合には、1つのタグが記憶される。透過的キャッシュがN路セットアソシエーティブである場合には、N個のタグが記憶される。タグは、有効ビットのような種々の状態と共に、タグメモリ32により比較器36へ出力される。比較器36は、タグをアドレスのタグ部分と比較し、そしてヒット又はミスをデータメモリ34及びコントロールユニット18Aへシグナリングする。キャッシュがN路セットアソシエーティブである場合には、比較器36は、ヒット路も識別する。データメモリ34は、ヒット路からデータを出力する(又は書き込みのためにヒット路へ書き込みデータを書き込む)。アドレスのタグ部分は、キャッシュブロック内のメモリ要求のオフセットを識別するビットを除外すると共に、位置を選択するためにデコーダ30A−30Bによりデコードされるインデックスビットも除外するアドレスの部分である。
比較器36は、非透過的属性を受け取り、そして非透過的メモリアクセスに対してヒットをシグナリングするのを禁止するように構成される。むしろ、データメモリ34は、非透過的メモリ要求に応答してデータメモリ34の非透過的部分における識別された位置にアクセスする。同様に、メモリ要求の他の属性も比較に影響する。例えば、他の属性は、キャッシュ不能な属性及び/又はキャッシュバイパス属性を含む。メモリアクセスがキャッシュ不能であるか、又はキャッシュがバイパスされる場合には、比較器36は、アクセスに対してヒットをアサートすることも禁止する。コントロールユニット18Aは、メモリ要求(図2のメインメモリシステムへの/からの)に対してメインメモリアクセスを開始するためにMCMB14Aの他の回路とインターフェイスする。或いは又、ある実施形態では、タグは、非コヒレントな部分に対して維持され、そして比較器36は、比較を行う。
デコーダ30Bは、アドレスをデコードし、そしてアクセスされるべき位置を選択するように同様に構成される。図2において水平の破線40で示されたように、データメモリ34は、透過的キャッシュ部分(図2の破線40より上)と、非透過的メモリ部分(図2の破線40より下)とに分割される。従って、非透過的メモリアドレスは、非透過的部分内の位置へとデコードされ、そして透過的メモリアドレスは、透過的部分内の位置へとデコードされる。一実施形態では、例えば、データメモリ34の透過的部分は、インデックスの最低数値へとマップされる。このような実施形態では、デコーダ30Bは、透過的メモリ要求に対して透過的部分へマップされる範囲の外側のインデックスのアドレスビットをマスクし、透過的メモリ要求アドレスが透過的部分へデコードされることを保証する。即ち、非透過的属性が透過性を指示する場合には、デコーダ30Bは、インデックスのより上位ビットを0に対してマスクし、インデックスを透過的部分へデコードするよう強制する。非透過的メモリ要求アドレスはマスクされず、従って、非透過的部分へデコードされる。一実施形態では、ソフトウェアが非透過的メモリアドレス範囲の割り当てをコントロールし、その範囲のアドレスが、透過的メモリ要求に対してマスクされたインデックスの部分に非ゼロのアドレスビットを有する(従って、通常のアドレスデコーディング以外の特定のロジックをデコーダ30Bにもたずに、非透過的メモリ要求アドレスが非透過的部分へデコードされる)ようにする。
例えば、データメモリ24は、4096個のアドレス可能なメモリ位置を含み、従って、データメモリのインデックスは、12個のアドレスビットを含む。これらメモリ位置の256個は、透過的キャッシュに割り当てられ、最下位の8個のアドレスビットは、透過的メモリ要求のためにデコードされ(最上位4ビットはマスクされ)、そして非透過的メモリアドレス範囲は、インデックスの最上位4ビットに非ゼロビットを含む。他の実施形態では、透過的及び非透過的アドレスが他の仕方でデータメモリ位置にマップされる。
一実施形態において、透過的キャッシュのサイズは、描写レジスタ38においてプログラム可能である。このような実施形態では、コントロールユニット18Aは、キャッシュのプログラムされるサイズに対して付加的なアドレスビットをマスクするようにデコーダ30A−30Bにマスキングコントロールを与える。前記例を続けると、透過的キャッシュが1/2サイズ(128個のメモリ位置)へプログラムされる場合には、1つの付加的な最上位ビット(即ち、最上位から5番目のビット)がマスクされる。又、デコーダ30Aは、この場合もインデックスをマスクし、キャッシュのプログラムされたサイズに一致するようにタグアクセスを減少させる。又、プログラムされる描写は、非透過的メモリのサイズを増加させることもできる。というのは、透過的キャッシュメモリに対して使用されない部分を非透過的メモリに対して使用できるからである。
他の実施形態では、デコーダ30A−30Bの異なる構成が使用される。例えば、不揮発性メモリの範囲は、ベースアドレスに自由に割り当てられ、そしてデコーダ30Bは、ベースアドレスを非透過的部分の第1位置へデコードし、ベースアドレス+第1位置のサイズを第2位置へデコードし、等々により、その範囲をデータメモリの非透過的部分へデコードする。又、別の実施形態では、透過的キャッシュ及び非透過的メモリをデータメモリ34内の位置へマップする異なるスキームを使用することもできる。
ある実施形態では、データメモリ34がバンク化される。例えば、64バイトのキャッシュブロックは、データメモリ34において8個の8バイトバンクにわたって記憶される。このような実施形態では、非透過的メモリは、キャッシュブロックより粒度が微細である。例えば、非透過的メモリアクセスは、前記例では、8バイトのようなバンクサイズにされる。
図2に示すように、データメモリ34は、単一のデコーダにより管理される単一メモリアレイである。即ち、デコーダは、アドレスをデコードしてワード線のセットを発生し、各ワード線は、データメモリ34を形成するメモリアレイ内の異なる位置を選択する。幾つかの位置は、透過的キャッシュメモリにためのキャッシュブロック記憶位置であり、そして他の位置は、非透過的メモリ位置である。
別の実施形態では、メモリの非透過的部分にもタグが付けられる。このような実施形態は、複数のアドレス範囲を非透過的アドレスと指定することができる。しかしながら、このような実施形態では、非透過的メモリのタグメモリは、ソフトウェアによって読み取り及び書き込みすることができ、ソフトウェアで非透過的部分のコンテンツを管理できるようにする。
図2は、メモリ16Aへの1つのアドレス入力を示しているが、他の実施形態では、2つ以上のアドレスをマルチポート構成でパラレルにサポートできることに注意されたい。各ポートには、30A−30Bと同様のデコーダを含むことができる。
図3は、ページテーブル26に記憶されるページテーブルエントリー50の一実施形態のブロック図である。ページテーブルエントリー50は、アドレス変換メカニズムの一部分として使用される。ある実施形態では、ハイアラーキー形態での複数のページテーブルアクセスを使用して、バーチャルアドレスを物理的アドレスへマップする。このような実施形態では、バーチャルアドレスタグ(VAタグ)は、必要とされない。他の実施形態では、ページテーブルエントリーをルックアップするのに使用されないバーチャルアドレスの部分が、エントリー50のバーチャルアドレスタグフィールドに対してマッチングが取られる。物理的ページ番号(PPN)フィールドは、物理的アドレスのページ部分(これは、バーチャルアドレスのオフセット部分と連結されて物理的アドレスを形成する)を記憶する。いかなるページサイズもサポートされる(例えば、4キロバイト、8キロバイト又はそれ以上、例えば、1−4メガバイト、或いはそれ以上)。ある実施形態では、2つ以上のページサイズがサポートされてもよい。又、ページテーブルエントリー50は、非透過的属性(NT)も含み、そして他の属性を含んでもよい(他の属性フィールド)。他の属性は、例えば、キャッシュ能力、ライトスルー又はライトバック、特権レベル要求、有効ビット、読み取り/書き込み許可、等を含む。
従って、エントリー50のようなページテーブルエントリーを使用して、ソフトウェアは、物理的アドレスの範囲を、NT属性を使用する非透過性として割り当てることができる。この範囲外の他のページは、透過性を指示するNT属性を有してもよい。
図4は、非透過的アドレス範囲でプログラムされるレジスタ52の一実施形態のブロック図である。このアドレス範囲は、いかなる形態で表現されてもよい。例えば、図4に示すように、アドレス範囲は、ベースアドレス及び限界として表される。又、範囲は、ベースアドレス及びサイズとして表されてもよいし、或いは範囲を定義する他の形態で表されてもよい。レジスタ52のようなレジスタは、メモリ要求の非透過的属性を決定するためにメモリ要求に対してアドレス発生及び変換(もし適用可能であれば)のいかなる点において使用されてもよい。例えば、プロセッサ内のメモリ管理ユニット(MMU)は、レジスタ52を備え、変換されたアドレスをベース及び限界フィールドと比較して、アドレスが非透過的アドレス範囲内にあるか又は非透過的アドレス範囲外であるか決定することができる。ある実施形態では、2つ以上のレジスタ52を含ませることにより、2つ以上のアドレス範囲を定義することができる。
図5は、メモリ16A/コントロールユニット18Aに与えられるメモリ要求に応答するメモリ16A/コントロールユニット18Aの一実施形態の動作を示すフローチャートである。理解を容易にするために、ブロックが特定の順序で示されているが、他の順序を使用してもよい。又、ブロックは、コントロールユニット18A内の組み合わせロジックによりパラレルに遂行されてもよい。ブロック、ブロックの組み合わせ及び/又は全体的なフローチャートは、複数のクロックサイクルにわたってパイプライン処理される。
要求の非透過的属性が透過的を指示する(判断ブロック54の「ノー」岐路)場合には、デコーダ30A−30Bは、アドレスがデータメモリ34の透過的部分へデコードされることを保証するためにメモリ要求のアドレスをマスクするように構成される(ブロック56)。非透過的属性が非透過的を指示する(判断ブロック54の「イエス」岐路)場合には、マスキングは生じない。いずれの場合にも、デコーダ30A−30Bは、アドレスをデコードし(ブロック58)、そしてタグメモリ32及びデータメモリ34内のメモリ位置を選択するように構成される。メモリ要求が透過的であり且つメモリ16Aの透過的部分においてミスがあった(判断ブロック60の「イエス」岐路)場合には、コントロールユニット18Aは、見つからないキャッシュブロックを得るためにキャッシュ充填を発生するように構成される(ブロック62)。コントロールユニット18Aは、キャッシュから立ち退かすためのブロックを選択するように構成され、その立ち退かされるブロックが変更される場合には、コントロールユニット18Aは、キャッシュブロックをメインメモリシステム20に書き戻すように構成される。メモリ要求がヒットであるか又は非透過的である(判断ブロック60の「ノー」岐路)場合には、データメモリ34のメモリ位置がアクセスされる。
メモリ要求が読み取りである(判断ブロック64の「イエス」岐路)場合には、メモリ16Aは、データメモリ34内のアクセスされた位置からデータを出力する(ブロック66)。さもなければ、メモリ要求は、書き込みであり(判断ブロック64の「ノー」岐路)、そしてメモリ16Aは、アクセスされた位置を書き込みデータで更新する(ブロック68)。
図6は、メモリ16AをコントロールするためにCPU22又はGPU10の一方又は両方により実行されるコントロールコードの一実施形態の動作を示すフローチャートである。メモリ16Bについても同様の動作が遂行される。コントロールコードは、実行されたときに、システムが図6に示す動作を実行するようにさせるインストラクションを含む。ブロックは、図6では特定の順序で示されているが、他の順序を使用してもよい。
コードは、メモリ16Aの透過的キャッシュ部分の望ましいサイズを決定する(ブロック70)。望ましいサイズは、最大サイズでもよいし又は最大サイズ未満でもよい。種々のファクタが決定に影響する。例えば、実行されるべきワークロードは、サイズに影響する。ワークロードが、大きなキャッシュサイズから利益を得る場合には(例えば、予想されるヒット率が高くなるために)、大きなキャッシュサイズが選択される。ワークロードが、大きなキャッシュから利益を得ない場合には(例えば、ワークロードが実行されるときにデータがあまり再使用されない)、小さなキャッシュサイズが使用される。コードは、コントロールユニット18A(例えば、描写レジスタ38)にサイズをプログラムする(ブロック72)。
選択された透過的キャッシュサイズ及びデータメモリ34のサイズに基づいて、コードは、ベースアドレス及び非透過的メモリのサイズを決定する(ブロック74)。例えば、1メガバイトのキャッシュサイズが選択された場合には、非透過的メモリ範囲のベースアドレスが1メガバイトの境界上にある。非透過的メモリのサイズは、透過的キャッシュのサイズよりデータメモリのサイズだけ小さい(例えば、データメモリが8メガバイトで、キャッシュサイズが1メガバイトである場合には、非透過的メモリは、1メガバイトの境界で始まって7メガバイトである)。コードは、実施形態に基づいて、非透過的メモリを識別するように構成レジスタ又はページテーブルエントリーをプログラムする(ブロック76)。コードは、非透過的メモリのコンテンツを管理する(ブロック78)。例えば、コードは、非透過的メモリを既知の値へ初期化するか、非透過的メモリと他のメモリ位置又は周辺機器との間でデータを移動するか、等々である。ある実施形態では、非透過的メモリと他のメモリ位置又は周辺機器との間のデータの移動は、ハードウェア回路で取り扱われる。
図7は、メモリアドレススペース80の一実施形態のブロック図である。メモリアドレススペースは、システムのメモリへマップされる数値のセットを含む。即ち、メモリアドレススペース80内の各数値は、システムのメモリ内の特定の記憶位置を独特に識別する。あるケースでは、メモリアドレススペース80の一部分が周辺装置(メモリマップ入力/出力(I/O))へマップされるが、メモリアドレススペースの残り部分はメモリ位置へマップされる。異なるアドレススペース(例えば、I/Oアドレススペース又は構成アドレススペース)のアドレスは、メモリアドレススペースのアドレスと同等ではない。
図7に示したように、メモリアドレススペース80の一部分は、メモリ16の非透過的部分へマップされる(参照番号82)。メモリアドレススペース内の非透過的範囲82の位置は、ソフトウェアにより決定され、そしてある実施形態では、透過的キャッシュ部分のサイズに基づいて特定境界を開始とする。メモリアドレススペース内の他のメモリアドレス(例えば、参照番号84で示す非透過的範囲82より下のアドレス、及び参照番号86で示す非透過的範囲82より上のアドレス)は、メインメモリシステム20へマップされる。範囲84及び86内のアドレスは、ページテーブルにキャッシュ記憶可能と指示される場合に、又はキャッシュ可能性を決定する他のメカニズム、例えば、CPU22又はGPU10にサポートされるメモリ形式領域レジスタを経て、メモリ16Aの透過的キャッシュ部分にキャッシュ記憶される資格がある。
図7において、メモリアドレススペース80内の数値アドレスがスペースの左側に示されている。従って、下位のメインメモリアドレス範囲84は、アドレス0で始まり、アドレスNへと延びる。アドレスNは、メモリ16Aの透過的キャッシュ部分のサイズの境界のアドレスである。従って、非透過的アドレス範囲は、アドレスN+1で始まって、アドレスN+Mへと延びる(但し、Mは、非透過的範囲のサイズである)。上位のメインメモリアドレス範囲は、N+M+1で始まって、N+M+Qへと延びる。従って、0とN+M+Qとの間のアドレスは、メインメモリシステム20又はメモリ16Aの非透過的部分内の特定のメモリ位置へとマップされる。アドレスN+M+Qは、システムにおいて考えられる最大アドレスであるか、N+M+Qより大きなアドレスは、アドレスを発生するインストラクションに欠陥を招くことがある。
ブロックベースの非透過的メモリ
メモリ16Aの非透過的部分は、GPU10の非透過的データセット(即ち、ソフトウェアがメモリ16A内の非透過的メモリへマップすることを希望するデータセット)を記憶するのに充分なものである。同様に、非透過的メモリ16Bは、CPU22の非透過的データセットを記憶するのに充分なものである。他の実施形態では、希望の非透過的データセットが非透過的メモリのサイズを越える。このような実施形態では、ソフトウェアは、非透過的メモリへ及び非透過的メモリからデータをかなり頻繁に転送する必要がある。データ移動を実行する上で助けとなるコントロールユニット18A(又は18B)の実施形態が意図される。
ある実施形態は、メモリ16Aの一部分が透過的キャッシュメモリにも割り当てられる図1の実施形態に関連して具現化される。しかしながら、他の実施形態は、同じメモリアレイの透過的キャッシュメモリと共有されない(が、非透過的メモリへメモリ要求を発生する要求リソースと共に依然オンチップである)非透過的メモリにおいて具現化される。
非透過的メモリアドレス範囲は、複数の非透過的メモリブロックに分割される。非透過的メモリブロックは、要求ソース(例えば、GPU10A−10N又はCPU22A−22M)により要求される非透過的メモリの(メモリアドレススペースが)隣接するブロックである。非透過的メモリブロックは、希望のサイズのものでよく、キャッシュブロックのサイズに関連する必要はない。例えば、非透過的メモリブロックは、システム内で実施されるアドレス変換メカニズムにおけるページのサイズでもよいし、又はページサイズの整数倍でもよい。他の実施形態は、必要に応じて、ページサイズより小さいサイズを使用してもよい。
以下の説明を簡単化するため、GPU10A−10Nは、要求ソースの一例として使用され、そしてメモリ16A及びコントロールユニット18Aの非透過的部分は、非透過的メモリの一例として使用される。しかしながら、他の実施形態は、CPU22A−22M及びメモリ16B/コントロールユニット16B(又はCPU及びGPU要求ソースに対する単一の共有メモリ)を含めて、他の要求ソース及び非透過的メモリを有する。
非透過的メモリに対して種々の読み取り及び書き込みを遂行するのに加えて、GPU10は、コントロールユニット18Aにブロック要求を送信するように構成される。ブロック要求は、ブロックのための使用モデルを識別し、そしてメインメモリアドレス(即ち、非透過的メモリへマップされないアドレス)も識別する。コントロールユニット18Aは、ブロック要求に応答して非透過的メモリブロックの1つを割り当てるように構成されると共に、ブロックに対するポインタ(例えば、非透過的メモリブロックのベースアドレス)を返送するように構成される。使用モデルに基づいて、コントロールユニット18Aは、メインメモリと割り当てられたブロックとの間でデータを自動的に移動する。例えば、コントロールユニット18Aは、メインメモリからのデータをその割り当てられたブロックへ自動的に充填するか、割り当てられたブロックでの終了をGPU10が指示した後に割り当てられたブロックからのデータをメインメモリに自動的にフラッシュするか、或いはその両方を行う。
ブロック要求は、任意の形態で公式化される。例えば、ブロック要求は、ブロック要求アドレスとして指定される定義されたアドレスへの記憶インストラクションと、それに続く、その同じアドレスへのロードインストラクションである。記憶インストラクションにより記憶されるデータは、割り当てられたブロックに対するデータのソース/行先であるメインメモリアドレスでよく、そして以下に述べる使用モデルの指示も含んでよい。ブロックアドレス(指定ブロックのベースアドレス)は、ロードインストラクションの結果として返送され、従って、GPUで実行されるソフトウェアは、ブロックアドレスを使用してブロックにアクセスすることができる。或いは又、ブロック要求を送信するためGPUインストラクションセットアーキテクチャーにおいて特定のインストラクションが定義されてもよい。ブロック要求を送信しそしてブロックアドレスを受信するメカニズムが使用されてもよい。
一実施形態において、非透過的メモリブロックに対して3つの使用モデル、即ちスタティックな読み取り、スタティックな書き込み、及びスタティックな読み取り/書き込み、が考えられる。他の実施形態では、必要に応じて、2つ以上の使用モデルのセットが定義される。スタティックな読み取り使用モデルは、ブロック要求がブロックで終了されたときに割り当てられたブロックからのデータをメインメモリに自動的にフラッシュすることを含む。従って、スタティックな読み取りブロックは、ブロック要求者がブロックの各バイトを書き込むことを意図した(又はブロックの非書き込みバイトのコンテンツが「ドントケア(don't care)」である)ブロック図である。スタティックな書き込み使用モデルは、メインメモリからのデータを自動的に充填することを含む。スタティックな読み取り/書き込みモデルは、自動的な充填及び自動的なフラッシュの両方を含む。
ブロック割り当て及び自動的データ移動を与えることによって、コントロールユニット18Aは、GPUで実行されるソフトウェアをデータ移動タスクから外すことができる。あるケースでは、ソフトウェアがロード/ストアインストラクションを使用してデータを移動する必要がないので、性能を改善することができる。
図8は、非透過的メモリブロックに対するブロック要求に応答するコントロールユニット18Aの一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が使用されてもよい。又、ブロックは、コントロールユニット18A内の組み合わせロジックでパラレルに遂行されてもよい。ブロック、ブロックの組み合わせ及び/又は全体的なフローチャートは、複数のクロックサイクルにわたってパイプライン処理される。
一実施形態において、所与の要求者のブロック要求は、その要求者が以前に割り当てられた非透過的メモリブロックで終了されるという指示でもある。以前の非透過的メモリブロックが要求者に割り当てられ(判断ブロック90の「イエス」岐路)、そして以前の非透過的メモリブロックがスタティックな読み取り形式である(判断ブロック92の「イエス」岐路)である場合には、コントロールユニット18Aは、以前の非透過的メモリブロックのフラッシュをスタートするように構成される(ブロック94)。コントロールユニット18Aは、非透過的メモリブロックの状態をフラッシュに切り換えるように構成される。以前の非透過的メモリブロックは、以前の非透過的メモリブロックが要求されたときに使用モデルがスタティック読み取り又はスタティック読み取り/書き込みと指示された場合にスタティック読み取り形式を有する。以前の非透過的メモリブロックがスタティックな読み取り形式でない場合には、コントロールユニット18Aは、非透過的メモリブロックの状態を利用可能へ切り換えるように構成される(ブロック96)。
他の実施形態では、明確なブロック完了コマンドがサポートされ、そして要求者は、ブロック完了コマンドをコントロールユニット18Aへ送信する。コントロールユニット18Aは、ブロック完了コマンドに応答して、ブロック92、94及び96に示された同じ処理を遂行するように構成される。
コントロールユニット18Aは、ブロック要求に応答して非透過的メモリブロックが割り当てに利用できるかどうか決定するように構成される(判断ブロック98)。利用できない場合には(判断ブロック98の「ノー」岐路)、コントロールユニット18Aは、非透過的メモリブロックが利用可能になるのを待機する(ブロック100)。或いは又、コントロールユニット18Aは、非透過的メモリブロックが割り当てに利用できない場合には、ブロック要求に応答して「ブロック利用不能」を返送するように構成される。「ブロック利用不能」応答は、ゼロブロックアドレスでもよいし、又はブロック内のオフセットであるブロックアドレスの最下位ビットで指示されてもよい。非透過的メモリブロックが利用可能であるか、又は待機後に利用可能になった場合には、コントロールユニット18Aは、非透過的メモリブロックを割り当てるように構成される(ブロック102)。又、コントロールユニット18Aは、ブロック要求において供給される対応するメインメモリアドレスを記録するように構成されてもよいし、その対応するメインメモリアドレスを、割り当てられたブロックと関連付けてもよい(ブロック104)。
ブロック要求がスタティックな書き込み形式を含む(例えば、使用モデルがスタティック書き込み又はスタティック読み取り/書き込みである−判断ブロック106の「イエス」岐路)場合には、コントロールユニット18Aは、対応するメインメモリアドレスからの割り当てられたブロックの充填を開始するように構成される(ブロック108)。コントロールユニット18Aは、割り当てられたブロックの状態を充填へ切り換えるように構成される(ブロック110)。ブロック要求がスタティックな書き込み形式を含まない(判断ブロック106の「ノー」岐路)場合には、コントロールユニット18Aは、ブロックの状態をアクティブへ切り換えるように構成される(ブロック112)。いずれにせよ、コントロールユニット18Aは、割り当てられたブロックのブロックアドレスを要求者へ返送するように構成される(ブロック114)。
図9は、非透過的メモリブロックに対してコントロールユニット18Aの一実施形態により具現化される状態マシンを示すブロック図である。図9の状態マシンは、各非透過的メモリブロックに対してパラレルに実施される。この状態マシンは、利用可能な状態130と、充填状態122と、アクティブな状態124と、フラッシュ状態126とを含む。図9に示す幾つかの遷移は、図8を参照して上述したものである。
非透過的メモリブロックが利用可能な状態120にある場合には、要求者からのブロック要求に応答して割り当てに利用できる。コントロールユニット18Aは、スタティックな書き込み形式(例えば、スタティックな書き込み又はスタティックな読み取り/書き込み使用モデル)を有するブロック要求に対してブロックを割り当てる場合に、ブロックの状態を利用可能な状態120から充填状態122へ切り換えるように構成される。一実施形態において、コントロールユニット18Aは、ブロックが充填状態122にある間にはブロックへのメモリ読み取り要求を停止又は拒絶するように構成される(コントロールユニット18Aによりブロックへデータがまだ書き込まれているので、要求者により供給される対応するメインメモリアドレスからデータを移動する)。充填状態122では、コントロールユニット18Aは、対応するメインメモリアドレス(及びその対応するメインメモリアドレスに隣接するアドレス)を読み取り、そして割り当てられたブロックへデータを書き込むように構成される。充填が完了すると、コントロールユニット18Aは、ブロックの状態を充填状態122からアクティブ状態124へ切り換えるように構成される。他方、コントロールユニット18Aは、スタティックな書き込み形式をもたないブロック要求に応答してブロックを割り当てる場合に、ブロックの状態を利用可能な状態からアクティブな状態124へ切り換える。
アクティブな状態124において、非透過的メモリブロックが要求者に割り当てられ、そして要求者は、必要に応じて、非透過的メモリブロックにアクセスする。要求者は、非透過的メモリブロック内のデータの処理を完了すると、それがブロックで終了されたことを指示する(例えば、上述したように、別のブロックを要求するか、又は明確なブロック完了コマンドを使用することにより)。要求者がブロックで実行しそしてそれがスタティックな読み取り形式(例えば、スタティックな読み取り又はスタティックな読み取り/書き込み使用モデル)でない場合には、コントロールユニット18Aは、ブロックの状態をアクティブな状態124から利用可能な状態120へ切り換える。ブロックがスタティックな読み取り形式である場合には、コントロールユニット18Aは、ブロックの状態をアクティブな状態124からフラッシュ状態126へ切り換えるように構成される。フラッシュ状態126において、コントロールユニット18Aは、ブロックからのデータをそれに対応するメインメモリアドレスに書き込むように構成される。フラッシュが完了すると、コントロールユニット18Aは、ブロックの状態をフラッシュ状態126から利用可能な状態120へ切り換えるように構成される。
図10は、非透過的メモリブロックを使用してデータを処理するためにGPU10において実行されるコードの一実施形態の動作を示すフローチャートである。このコードは、実行時に、図1のシステムが、図10に示す動作を実施するようにさせるインストラクションを含む。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が使用されてもよい。
このコードは、ブロック形式と、処理されるべきブロックのメインメモリアドレスとを決定する(ブロック130)。ブロック形式は、ブロックに対してコードを実行すべき処理に基づいている。例えば、コードがブロックに書き込むべき新たなデータを生成しようとする場合に、使用モデルは、スタティックな読み取りである。コードがブロックからデータを読み取ろうとするが、書き込もうとしない場合には、使用モデルは、スタティックな書き込みである。コードがブロックからデータを読み取りそしてデータを書き込もうとする場合には、使用モデルは、スタティックな読み取り/書き込みである。メインメモリアドレスは、処理されるべきデータの位置に基づいて決定される。例えば、GPU10は、メインメモリシステムのフレームバッファ内の画像のタイルを処理する。タイルは、全体的な画像のサブセクションである。GPUは、処理されるべき次のタイルを選択し、そしてメインメモリアドレスは、選択されたタイルのアドレスである。
コードは、非透過的メモリブロックを要求し(ブロック132)、そしてブロックアドレスを使用して、非透過的メモリブロックの処理を遂行する(ブロック134)。任意であるが、明確なブロック完了コマンドを含む実施形態では、コードは、ブロック完了コマンドを送信する(ブロック136)。メインメモリに処理されるべき付加的なブロックがある場合には(判断ブロック138の「イエス」岐路)、コードは、ブロック130へ戻り、次のブロックに対する処理を開始する。
ここでは、特定の機能がソフトウェア又はハードウェアで実施されるものとして説明されたが、ソフトウェア及びハードウェアで実施される機能は、実施形態ごとに変化し得ることに注意されたい。例えば、ソフトウェアは、非透過的メモリであると定義されるアドレス領域を割り当てることができ、そしてハードウェアは、非透過的メモリへ及び非透過的メモリからデータを移動するように構成される。
ある実施形態では、ハードウェア回路と、実行されているソフトウェアコードとの間の通信は、ブロック要求の形態であり、返送されるブロックのコンテンツを検査することに注意されたい。更に、この通信は、特定の通信を識別するための種々の属性を伴うロード/記憶コマンドの形態である。
システム及びコンピュータアクセス可能な記憶媒体
図11は、システム150の一実施形態のブロック図である。このシステム150は、図1に示されたシステムの別の実施形態である。ここに示す実施形態では、システム150は、1つ以上の周辺装置154及び外部メモリ158に結合された集積回路152の少なくとも1つのインスタンスを含む。集積回路152は、GPU10、CPU22、L2キャッシュ12及び24、MCMB14、メモリ16及びコントロールユニット18を含む。外部メモリ158は、メインメモリシステム20を含む。集積回路152へ供給電圧を供給すると共に、メモリ158及び/又は周辺装置154へ1つ以上の供給電圧を供給する電源156も設けられる。ある実施形態では、集積回路152の2つ以上のインスタンスが含まれる(そして2つ以上の外部メモリ158も含まれる)。
周辺装置154は、システム150の形式に基づいて望ましい回路を含む。例えば、一実施形態では、システム150は、移動装置(例えば、パーソナルデジタルアシスタント(PDA)、スマートホン、等)であり、そして周辺装置154は、WiFi、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺装置154は、RAM記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含めて、付加的な記憶装置も含む。周辺装置154は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。他の実施形態では、システム150は、任意の形式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等)でよい。
図12は、コンピュータアクセス可能な記憶媒体200のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び/又はデータをコンピュータに与えるために使用中にコンピュータによってアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク(固定又は除去可能な)、テープ、CD−ROM、又はDVD−ROM、CD−R、CD−RW、DVD−R、DVD−RWのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、同期ダイナミックRAM(SDRAM)、Rambus DRAM(RDRAM)、スタティックRAM(SRAM)、等)、ROM、フラッシュメモリ、又はユニバーサルシリアルバス(USB)インターフェイス、フラッシュメモリインターフェイス(FMI)、シリアル周辺インターフェイス(SPI)のような周辺インターフェイスを経てアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)、等を含む。記憶媒体は、マイクロエレクトロメカニカルシステム(MEMS)を含むと共に、ネットワーク及び/又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体を含む。図12のコンピュータアクセス可能な記憶媒体200は、図6及び/又は10を参照して上述したコードを含むコントロールコード202を記憶する。一般的に、コンピュータアクセス可能な記憶媒体200は、実行時に、図6及び10に示す動作の一部分又は全部を実施するインストラクションのセットを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体及び送信媒体、例えば、ワイヤード又はワイヤレス送信を含む。
前記開示が完全に明らかになると、種々の変更や修正が当業者に明らかであろう。そのような全ての変更や修正は、特許請求の範囲に包含されることが意図される。
10:グラフィック処理ユニット(GPU)
12:レベル2(L2)キャッシュ
14:マルチコア管理ブロック(MCMB)
16:共有キャッシュメモリ
18:コントロールユニット
20:メインメモリシステム
22:中央処理ユニット(CPU)
24:レベル2(L2)キャッシュ
26:ページテーブル
30:デコーダ
32:タグメモリ
34:データメモリ
36:比較器
38:描写レジスタ
50:ページテーブルエントリー
52:レジスタ

Claims (23)

  1. コントロールユニットは、これに結合された非透過的メモリのブロックに対する要求を受信し、前記コントロールユニットは、前記非透過的メモリを複数の非透過的メモリブロックとして管理し、前記非透過的メモリは、その非透過的メモリに関連した定義されたメモリアドレス範囲内のメモリアドレスを使用してソフトウェアにより直接アドレスされ、
    前記コントロールユニットは、前記要求に応答して、前記複数の非透過的ブロックの第1ブロックを割り当て、
    前記コントロールユニットは、前記定義されたメモリアドレス範囲内の第1ブロックの第1アドレスを要求者へ返送し、
    前記要求で指示された形式に応答して、前記コントロールユニットは、前記定義されたメモリアドレス範囲外の第2のメモリアドレスから前記第1ブロックへデータを自動的に移動し、前記第2メモリアドレスは、前記要求で指示されるものである、方法。
  2. 前記形式は、スタティックな書き込みである、請求項1に記載の方法。
  3. 前記コントロールユニットは、非透過的メモリのブロックに対する第2要求を受信し、その第2要求は、スタティックな読み取り形式を含み、
    前記コントロールユニットは、前記第2要求に応答して前記複数の非透過的ブロックの第2ブロックを割り当て、
    前記コントロールユニットは、前記定義されたメモリアドレス範囲内の第2ブロックの第3アドレスを要求者へ返送し、
    前記コントロールユニットは、前記形式がスタティックな読み取りであることに応答して前記第2要求で指示された第4のメモリアドレスから前記第2ブロックへデータを自動的に移動しない、請求項1又は2に記載の方法。
  4. 前記コントロールユニットは、要求者が前記第2ブロックで終了されることを決定し、
    前記コントロールユニットは、前記形式がスタティックな読み取りであることに応答して前記第2ブロック内のデータを前記第4のメモリアドレスへ自動的に書き込む、請求項3に記載の方法。
  5. 前記コントロールユニットは、要求者が前記第1ブロックで終了されることを決定し、
    前記コントロールユニットは、要求者により処理中にブロックが書き込まれるのに応答して前記第1ブロックブロック内のデータを前記第1ブロックに関連した第2のメモリアドレスに自動的に書き込む、請求項1から4のいずれかに記載の方法。
  6. 定義されたメモリアドレス範囲内のアドレスを使用してソフトウェアにより直接アドレスできる複数のメモリ位置を含む非透過的メモリと、
    前記非透過的メモリを複数の非透過的メモリブロックとして管理するように構成されたコントロールユニットと、
    を備え、前記コントロールユニットは、要求者からブロックの要求を受信するように結合され、前記コントロールユニットは、前記要求に応答して前記複数の非透過的メモリブロックの第1ブロックを割り当てるように構成され、更に、前記コントロールユニットは、前記要求と共に与えられる形式に応答して前記第1ブロックにデータを選択的に自動的に充填し且つ前記第1ブロックからデータをフラッシュする、ようにされた装置。
  7. 第1形式に応答して、前記コントロールユニットは、前記第1ブロックにデータを自動的に充填するように構成され、そして第2形式に応答して、前記コントロールユニットは、前記第1ブロックへデータを移動しないように構成される、請求項6に記載の装置。
  8. 前記第1形式は、スタティックな書き込み形式である、請求項7に記載の装置。
  9. 前記第2形式は、スタティックな読み取り形式である、請求項7に記載の装置。
  10. 前記要求は、規定のメモリアドレス範囲内にない第1メモリアドレスを含み、前記コントロールユニットは、その第1メモリアドレスに記憶されたデータを前記第1ブロックに充填するように構成される、請求項7から9のいずれかに記載の装置。
  11. 前記第2形式に応答し及び要求者が前記第1ブロックで終了されるのに応答して、前記コントロールユニットは、前記第1ブロックからメインメモリサブシステムへフラッシュデータを自動的に移動するように構成される、請求項7から10のいずれかに記載の装置。
  12. 前記要求は、規定のメモリアドレス範囲内にない第1メモリアドレスを含み、前記コントロールユニットは、前記第1ブロックからのデータを、前記第1メモリアドレスにより指示された位置へフラッシュするように構成される、請求項11に記載の装置。
  13. 前記コントロールユニットは、要求者がデータを変更するのに応答して前記第1ブロックからデータをフラッシュするように構成される、請求項11又は12に記載の装置。
  14. 前記非透過的メモリは、キャッシュとして使用される透過的メモリである第2部分も含むメモリアレイの一部分である、請求項6から13のいずれかに記載の装置。
  15. 前記第2部分に対応するキャッシュタグメモリを更に備え、そのキャッシュタグメモリは、前記第2部分に記憶できる複数のキャッシュブロックに対するタグを記憶するように構成される、請求項14に記載の装置。
  16. データを処理するために非透過的メモリのブロックを要求するよう構成された1つ以上のプロセッサと、
    メインメモリシステムと、
    請求項6から15のいずれかに記載の装置を含む非透過的メモリユニットと、
    を備え、前記非透過的メモリユニットは、要求を受け取るために前記1つ以上のプロセッサに結合されると共に、前記メインメモリシステムにも結合され、前記非透過的メモリは、その非透過的メモリ内のブロックを前記要求に割り当てるように構成され、更に、前記非透過的メモリユニットは、前記要求の形式に応答して前記非透過的メモリと前記メインメモリシステムとの間でデータを自動的に移動するように構成される、システム。
  17. 前記非透過的メモリへマップされるアドレス及び前記メインメモリシステムへマップされるアドレスは、同じメモリアドレススペースの一部分である、請求項16に記載のシステム。
  18. 前記非透過的メモリユニットは、前記非透過的メモリ内の第1要求に対して割り当てられたブロックの第1アドレスを、第1要求を開始したプロセッサへ返送するように構成され、前記第1アドレスは、前記非透過的メモリに指定されたメモリアドレス範囲内にある、請求項17に記載のシステム。
  19. 前記メインメモリシステムへマップされるメモリアドレスは、前記非透過的メモリに指定されたメモリアドレス範囲を除外する、請求項17又は18に記載のシステム。
  20. 前記第1要求は、前記非透過的メモリと前記メインメモリシステムとの間で移動するための第2アドレスを前記メインメモリシステムに含む、請求項18に記載のシステム。
  21. 前記第1要求の形式は、前記メインメモリシステムから前記第1ブロックへデータを移動すべきであることを指示し、前記非透過的メモリユニットは、その移動を遂行するように構成される、請求項20に記載のシステム。
  22. 前記第1要求の形式は、前記第1ブロックから前記メインメモリシステムへデータを移動すべきであることを指示し、前記非透過的メモリユニットは、その移動を遂行するように構成される、請求項20に記載のシステム。
  23. 前記1つ以上のプロセッサは、グラフィックプロセッサであり、前記システムでは、更に、1つ以上の汎用プロセッサが第2の非透過的メモリユニットに結合され、これが更に前記メインメモリシステムに結合される、請求項16から22のいずれかに記載のシステム。
JP2012519776A 2009-07-10 2010-07-09 ブロックベースの非透過的キャッシュ Active JP5528554B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/500,810 US8219758B2 (en) 2009-07-10 2009-07-10 Block-based non-transparent cache
US12/500,810 2009-07-10
PCT/US2010/041570 WO2011006096A2 (en) 2009-07-10 2010-07-09 Block-based non-transparent cache

Publications (2)

Publication Number Publication Date
JP2012533124A true JP2012533124A (ja) 2012-12-20
JP5528554B2 JP5528554B2 (ja) 2014-06-25

Family

ID=43428348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012519776A Active JP5528554B2 (ja) 2009-07-10 2010-07-09 ブロックベースの非透過的キャッシュ

Country Status (6)

Country Link
US (1) US8219758B2 (ja)
EP (1) EP2452265B1 (ja)
JP (1) JP5528554B2 (ja)
KR (1) KR101389256B1 (ja)
CN (1) CN102483719B (ja)
WO (1) WO2011006096A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014119003A1 (ja) * 2013-02-04 2014-08-07 株式会社 東芝 コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
JP2019046199A (ja) * 2017-09-01 2019-03-22 株式会社半導体エネルギー研究所 プロセッサ、および電子機器
US11577179B2 (en) 2013-06-11 2023-02-14 Waters Technologies Corporation Chromatographic columns and separation devices comprising a superficially porous material; and use thereof for supercritical fluid chromatography and other chromatography

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244981B2 (en) 2009-07-10 2012-08-14 Apple Inc. Combined transparent/non-transparent cache
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US10585801B2 (en) 2012-11-26 2020-03-10 Advanced Micro Devices, Inc. Prefetch kernels on a graphics processing unit
US10824342B2 (en) 2014-02-28 2020-11-03 Hewlett Packard Enterprise Development Lp Mapping mode shift between mapping modes that provides continuous application access to storage, wherein address range is remapped between said modes during data migration and said address range is also utilized bypass through instructions for direct access
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9477412B1 (en) 2014-12-09 2016-10-25 Parallel Machines Ltd. Systems and methods for automatically aggregating write requests
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9529622B1 (en) 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US9501420B2 (en) * 2014-10-22 2016-11-22 Netapp, Inc. Cache optimization technique for large working data sets
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
WO2016159930A1 (en) 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10684954B2 (en) 2015-04-02 2020-06-16 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
US9356602B1 (en) * 2015-05-14 2016-05-31 Xilinx, Inc. Management of memory resources in a programmable integrated circuit
KR20200053204A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
US20230094030A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Cache resizing based on processor workload

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172562A (ja) * 1998-12-10 2000-06-23 Nec Corp 情報処理装置
JP2001166990A (ja) * 1999-12-06 2001-06-22 Fujitsu Ltd 計算機とその制御方法
JP2003330795A (ja) * 2002-05-10 2003-11-21 Matsushita Electric Ind Co Ltd キャッシュメモリ制御装置
JP2004246889A (ja) * 2003-02-13 2004-09-02 Samsung Electronics Co Ltd シーケンシャルバッファを内蔵してdspのデータアクセス性能を向上させるコンピュータシステム及びそのコンピュータシステムのアクセス方法
JP2004355307A (ja) * 2003-05-29 2004-12-16 Hitachi Ltd 通信方法および情報処理装置
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913224A (en) * 1997-02-26 1999-06-15 Advanced Micro Devices, Inc. Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data
US6484237B1 (en) 1999-07-15 2002-11-19 Texas Instruments Incorporated Unified multilevel memory system architecture which supports both cache and addressable SRAM
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
JP2003044358A (ja) 2001-07-31 2003-02-14 Mitsubishi Electric Corp キャッシュメモリ制御装置
US7000077B2 (en) * 2002-03-14 2006-02-14 Intel Corporation Device/host coordinated prefetching storage system
US6986010B2 (en) * 2002-12-13 2006-01-10 Intel Corporation Cache lock mechanism with speculative allocation
JP2006092124A (ja) * 2004-09-22 2006-04-06 Fujitsu Ltd 記憶装置、記憶制御方法および記憶制御プログラム
US7318114B1 (en) 2004-10-29 2008-01-08 Sun Microsystems, Inc. System and method for dynamic memory interleaving and de-interleaving
US20100011165A1 (en) 2008-07-11 2010-01-14 Telefonaktiebolaget Lm Ericsson (Publ) Cache management systems and methods
US8244981B2 (en) * 2009-07-10 2012-08-14 Apple Inc. Combined transparent/non-transparent cache

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172562A (ja) * 1998-12-10 2000-06-23 Nec Corp 情報処理装置
JP2001166990A (ja) * 1999-12-06 2001-06-22 Fujitsu Ltd 計算機とその制御方法
JP2003330795A (ja) * 2002-05-10 2003-11-21 Matsushita Electric Ind Co Ltd キャッシュメモリ制御装置
JP2004246889A (ja) * 2003-02-13 2004-09-02 Samsung Electronics Co Ltd シーケンシャルバッファを内蔵してdspのデータアクセス性能を向上させるコンピュータシステム及びそのコンピュータシステムのアクセス方法
JP2004355307A (ja) * 2003-05-29 2004-12-16 Hitachi Ltd 通信方法および情報処理装置
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
WO2014119003A1 (ja) * 2013-02-04 2014-08-07 株式会社 東芝 コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法
JP2014149765A (ja) * 2013-02-04 2014-08-21 Toshiba Corp コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法
US11577179B2 (en) 2013-06-11 2023-02-14 Waters Technologies Corporation Chromatographic columns and separation devices comprising a superficially porous material; and use thereof for supercritical fluid chromatography and other chromatography
JP2019046199A (ja) * 2017-09-01 2019-03-22 株式会社半導体エネルギー研究所 プロセッサ、および電子機器

Also Published As

Publication number Publication date
EP2452265B1 (en) 2018-10-24
KR101389256B1 (ko) 2014-04-24
CN102483719B (zh) 2014-11-19
JP5528554B2 (ja) 2014-06-25
EP2452265A2 (en) 2012-05-16
KR20120037971A (ko) 2012-04-20
WO2011006096A2 (en) 2011-01-13
WO2011006096A3 (en) 2011-04-07
US8219758B2 (en) 2012-07-10
CN102483719A (zh) 2012-05-30
US20110010520A1 (en) 2011-01-13

Similar Documents

Publication Publication Date Title
US10776022B2 (en) Combined transparent/non-transparent cache
JP5528554B2 (ja) ブロックベースの非透過的キャッシュ
JP5580894B2 (ja) Tlbプリフェッチング
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
KR101636634B1 (ko) 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
US8392658B2 (en) Cache implementing multiple replacement policies
US7389402B2 (en) Microprocessor including a configurable translation lookaside buffer
US20140089602A1 (en) System cache with partial write valid states
US20140281248A1 (en) Read-write partitioning of cache memory
US20140075125A1 (en) System cache with cache hint control
US20180095884A1 (en) Mass storage cache in non volatile level of multi-level system memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140415

R150 Certificate of patent or registration of utility model

Ref document number: 5528554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250