JP6022604B2 - マルチバンクキャッシュメモリ - Google Patents

マルチバンクキャッシュメモリ Download PDF

Info

Publication number
JP6022604B2
JP6022604B2 JP2014555583A JP2014555583A JP6022604B2 JP 6022604 B2 JP6022604 B2 JP 6022604B2 JP 2014555583 A JP2014555583 A JP 2014555583A JP 2014555583 A JP2014555583 A JP 2014555583A JP 6022604 B2 JP6022604 B2 JP 6022604B2
Authority
JP
Japan
Prior art keywords
cache memory
data
client
request
buffer
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.)
Expired - Fee Related
Application number
JP2014555583A
Other languages
English (en)
Other versions
JP2015505631A5 (ja
JP2015505631A (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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015505631A publication Critical patent/JP2015505631A/ja
Publication of JP2015505631A5 publication Critical patent/JP2015505631A5/ja
Application granted granted Critical
Publication of JP6022604B2 publication Critical patent/JP6022604B2/ja
Expired - Fee Related 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
    • 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
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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)

Description

[0001]本開示は、概して、コンピュータシステムに関し、さらに詳しくは、キャッシュメモリシステムに関する。
[0002]コンピュータシステムにおけるキャッシュメモリシステムは、典型的には、比較的小さいかつ低いレイテンシ(latency)メモリを提供する。このようなキャッシュメモリは、データへのアクセスの平均時間を減らすために、メインメモリに記憶されたデータのサブセット(subset)のコピーを記憶する。複数のクライアントが同時にキャッシュメモリシステムへのアクセスを試みるとき、コンフリクト(conflicts)が生じる可能性がある。
[0003]複数のクライアント間のコンフリクトを減らすための1つの技法は、複数のクライアントがそれぞれ同時にキャッシュメモリシステム内の異なるキャッシュメモリバンクにアクセスされうるように、キャッシュメモリシステムを、各々がキャッシュメモリシステム内のデータの一部を含む複数のキャッシュメモリバンクに分割することを含むことができ、それによってクライアント間のコンフリクトを減らし、キャッシュメモリシステムのスループットを向上させる。しかしながら、依然としてコンフリクトが高い割合で生じ得、それによってキャッシュメモリシステムのスループットを低下させる。
[0004]一般に、本開示は、複数のクライアントによってアクセス可能なマルチバンクキャッシュメモリシステム(multi-bank cache memory systems)のスループットを向上させるための技法を説明する。各々のメモリバンクにおいて各々のクライアントに関するバッファのセットを使用することにより、本開示の技法は、複数のクライアントが同時にキャッシュメモリシステムの同じメモリバンクに要求を送る(dispatch)ことを可能にでき、それによってクライアント間のコンフリクトを減らすことができる。さらに、本開示の技法は、クライアントによって送られたデータの要求が、キャッシュシステムのメモリバンク間で順序どおりでなく(out of order)サービスされる(be serviced)ことを可能にし、それによってメモリバンク間のバンクコンフリクトを減らし、マルチバンクキャッシュメモリシステムのスループットを向上させる。
[0005]一例においては、方法が、クライアントからのデータの要求を、第1のキャッシュメモリバンクのためにクライアントに関連付けられたペンディングバッファ(pending buffer)に記憶することを含むことができる。本方法は、データの要求の各々が、第2のキャッシュメモリバンクにおけるクライアントによるデータの要求の状態にかかわらず、第1のキャッシュメモリバンク内のキャッシュメモリによって満たされうるか否かを、判断することをさらに含むことができる。本方法は、クライアントによって要求されたキャッシュメモリからのデータを、第1のキャッシュメモリバンクのためにクライアントに関連付けられた読み出しデータバッファによって、ペンディングバッファにおけるデータの要求の受信の順序に従って記憶することをさらに含むことができる。
[0006]別の例では、システムが、複数のクライアントによってアクセス可能なキャッシュメモリシステムを含むことができ、このキャッシュメモリシステムは、複数のキャッシュメモリバンクを含み、これら複数のキャッシュメモリバンクの各々は、キャッシュメモリと、複数のクライアントのうちの或るクライアントからのデータの要求が、複数のキャッシュメモリバンクのうちの別のキャッシュメモリバンクにおけるクライアントによる要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断するように構成されたタグチェックユニットと、を含む。本システムは、複数のキャッシュメモリバンクのための複数のクライアントに関連付けられた複数のペンディングバッファをさらに含むことができ、これらペンディングバッファは、データの要求を複数のクライアントのうちの関連クライアントからの受信の順序にて記憶し、データの要求がキャッシュメモリによって満たされうるか否かの判断を保留する(pending)ように構成される。本システムは、複数のキャッシュメモリバンクのために複数のクライアントに関連付けられた複数の読み出しデータバッファをさらに含むことができ、これら読み出しデータバッファは、関連クライアントによって要求されたキャッシュメモリからのデータを、ペンディングバッファ内の関連クライアントに関連付けられたペンディングバッファによる受信の順序に従って記憶するように構成される。
[0007]別の例では、装置が、第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶するための手段を含むことができる。本装置は、データの要求の各々が、第2のキャッシュメモリバンクにおけるクライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断するための手段をさらに含むことができる。本装置は、第1のメモリバンクのためのクライアントによって要求されたキャッシュメモリからのデータを記憶するための手段をさらに含むことができる。
[0008]別の例では、装置が、1つ以上のプロセッサを含むことができる。この1つ以上のプロセッサは、第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶するように構成されうる。この1つ以上のプロセッサは、データの要求の各々が、第2のキャッシュメモリバンクにおけるクライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断するようにさらに構成されうる。この1つ以上のプロセッサは、第1のメモリバンクに関するクライアントによって要求されたキャッシュメモリからのデータを記憶するようにさらに構成されうる。
[0009]1または複数の例の詳細が、添付図面および以下の説明において述べられる。他の特徴、目的、および利点が、説明と図面から、および特許請求の範囲から明らかになるだろう。
[0010]図1は、本開示のいくつかの態様による、例示的なプロセッサと、例示的なキャッシュメモリシステムと、例示的なメインメモリとを含む例示的なコンピュータシステムを示すブロック図である。 [0011]図2は、本開示のいくつかの態様による、例示的なクライアントと、例示的なキャッシュメモリシステムとを含む例示的なコンピュータシステムを示すブロック図である。 [0012]図3は、本開示のいくつかの態様による、例示的なキャッシュメモリシステムにおけるデッドロックを解消するための例示的な技法を示すブロック図である。 [0013]図4は、本開示のいくつかの態様による、例示的なキャッシュメモリシステムにおいてデッドロックを解消するために使用される例示的なデータ構造を示す概念図である。 [0014]図5は、本開示のいくつかの態様による、複数のクライアントによってアクセス可能なマルチバンクキャッシュメモリシステムのスループットを向上させるための例示的な方法を示すフロー図である。
[0015]一般に、本開示は、複数のクライアントによってアクセス可能なマルチバンクキャッシュメモリシステムのスループットを向上させるための技法を説明する。マルチバンクキャッシュメモリシステムは、クライアントが同時にキャッシュメモリシステムの異なるキャッシュメモリバンクにアクセスできるようにすることで、キャッシュメモリシステムのクライアント間のコンフリクトを減らすことができるが、複数のクライアントが同時にキャッシュメモリシステムの同じキャッシュメモリバンクにアクセスしようと試みる場合に、クライアント間のコンフリクトが依然として生じうる。
[0016]各々のメモリバンクに関する各々のクライアントにバッファのセットを関連付けることによって、本開示の技法は、マルチバンクメモリバンクシステムの単一のメモリバンクが同時に複数のクライアントから要求を受け付けることを可能にし得、それによってクライアント間のコンフリクトを減らすことができる。さらに、本開示の技法は、クライアントによって送信されたデータの要求が、キャッシュシステムのメモリバンク間で順序どおりでなくサービスされることを可能することで、メモリバンク間のバンクコンフリクトを減らし、マルチバンクキャッシュメモリシステムのスループットを向上させることができる。シミュレーションにおいて、4つのキャッシュメモリバンクを含み、4つのクライアントをサービスするマルチバンクキャッシュメモリシステムは、本開示の技法を使用することによって、キャッシュメモリスループットをランダムアクセスにおいて43%から97%へと改善することができる。
[0017]マルチバンクキャッシュメモリシステムにアクセスするクライアントはそれぞれ、キャッシュメモリシステムの各々のキャッシュメモリバンクのためのペンディングバッファに関連付けられうる。キャッシュメモリシステム内の特定のキャッシュメモリバンクへとクライアントによって送られる要求は、この特定のキャッシュメモリバンクに関するクライアントに関連付けられたペンディングバッファに記憶されうる。複数のクライアントから同じキャッシュメモリバンクに送られた要求は、このキャッシュメモリバンクに関する各々のクライアントに関連付けられた別々のペンディングバッファに記憶されうる。
[0018]クライアントから単一のキャッシュメモリバンクに送られた要求は、クライアントからの受信の順序で処理されうる。要求を処理することは、リクエストをタグチェックすることを含むことができ、あるいはキャッシュメモリバンク内のキャッシュメモリが要求を満たすことができるか否かを他の方法で判断することを含むことができる。しかしながら、キャッシュシステムへとクライアントによって送られた要求は、全体としては、受信の順序に対して狂った順序で(out of order)処理されうる。例えば、クライアントは、第1のキャッシュメモリバンクへと第1の要求および第2の要求を順に送ることができ、その後に第2のキャッシュメモリバンクに第3の要求を送ることができる。第1のキャッシュメモリバンクにおいて第1の要求が第2の要求の前に処理されうるように、要求は単一のキャッシュメモリバンク内で順に処理されうるが、全体としては、第1の要求または第2の要求が第1のキャッシュメモリバンク内で処理される前に、第3の要求が第2のキャッシュメモリバンク内で処理されるように、要求が狂った順序で処理される可能性がある。
[0019]さらに、マルチバンクキャッシュメモリシステムにアクセスするクライアントはそれぞれ、キャッシュメモリシステムの各々のキャッシュメモリバンクのための読み出しデータバッファに関連付けられうる。クライアントによって要求されたデータは読み出され得、特定のキャッシュメモリバンクに関するクライアントに関連付けられた読み出しデータバッファに記憶されうる。複数のクライアントによって要求された同じキャッシュメモリバンク内のデータは、このキャッシュメモリバンクに関する各々のクライアントに関連付けられた別々の読み出しデータバッファに記憶されうる。
[0020]クライアントは、要求されたデータを読み出すために、キャッシュメモリバンクのための自身に関連する読み出しデータバッファを読み出すことができる。クライアントは、キャッシュメモリバンクの各々に要求が送られた順序のトラック(track)を保持することができ、この順序に基づいて、クライアントが、要求されたデータを、データに対応する要求が送られたのと同じ順序で受信することができるように、キャッシュメモリバンクの各々のための読み出しデータバッファから読み出しを行うことができる。
[0021]図1は、本開示のいくつかの態様による、例示的なプロセッサと、例示的なキャッシュメモリシステムと、例示的なメインメモリとを含む例示的なコンピュータシステムを示すブロック図である。図1に示されるとおり、コンピュータシステム100は、プロセッサ116と、キャッシュメモリシステム102と、メインメモリ108とを含むことができ、これらはすべて互いに動作可能に接続されうる。
[0022]プロセッサ116は、機能を実装し、さらに/あるいはコンピュータシステム100内で実行のための命令を処理するように、構成されてよい。プロセッサ116は、いくつかの例では、中央演算処理装置、グラフィックス処理システム内のグラフィックス処理ユニット、などのマイクロプロセッサであってよい。プロセッサ116は、クライアント106A〜106N(「クライアント106」)を含むことができる。クライアント106は、キャッシュメモリシステム102からデータを要求し、キャッシュメモリシステム102にデータを書き込み、キャッシュメモリシステム102からデータを受信するように構成されたプロセッサ116の任意のモジュールまたはコンポーネントを含むことができる。例えば、クライアント106は、グラフィックス処理ユニットのレンダリングパイプライン(rendering pipelines)または中央演算処理装置のインストラクションパイプライン(instruction pipelines)など、プロセッサ116のパイプラインを含むことができる。クライアント106は、いくつかの例では、プロセッサ116上で実行するように動作可能であるアプリケーションなどのソフトウェアであってもよい。いくつかの例では、コンピュータシステム100内の1つ以上のプロセッサ(プロセッサ116など)が、クライアント106およびキャッシュメモリシステム102のサブコンポーネント(sub-components)を含むクライアント106およびキャッシュメモリシステム102の動作を指揮(direct)および制御するように構成されてよい。
[0023]キャッシュメモリシステム102は、動作中にコンピュータシステム100内に情報を記憶でき、メインメモリ108のためのデータをキャッシュするように構成されてよく、キャッシュメモリシステム102が、メインメモリ108と比べてより高速なデータへのアクセスをクライアント106に提供できるように、メモリの階層(memory hierarchy)においてメインメモリ108よりもクライアント106に近くてよい。キャッシュメモリシステム102は、クライアント106にとってキャッシュメモリシステム102からのデータの読み出しがメインメモリ108と比べてより高速になりうるように、通常はメインメモリ108と比べてより高速なアクセス時間およびより低いレイテンシを有することができる。
[0024]キャッシュメモリシステム102は、キャッシュメモリバンク104A〜104N(「キャッシュメモリバンク104」)を含むことができる。キャッシュメモリバンク104は、スタティックランダムアクセスメモリ(static random access memory)(SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory)(DRAM)、SRAMとDRAMとの組み合わせ、あるいは任意の他の適切なランダムアクセスメモリを含むことができる。キャッシュメモリバンク104の各々は、メインメモリ108内の各アドレスが、キャッシュメモリバンク104のうちの1つに関連付けられうるように、メインメモリ108内のアドレスの一部のためのキャッシュとして機能(act)しうる。キャッシュメモリシステム102を複数のキャッシュメモリバンク104に分割することによって、クライアント106のうちの複数のクライアントが、並行してキャッシュメモリシステム102にアクセスすることができる。
[0025]キャッシュメモリバンク104の各々が、ペンディングバッファ110A〜110N(「ペンディングバッファ110」)を含むことができる。キャッシュメモリバンク104のうちの1つのキャッシュメモリバンク内のペンディングバッファ110の各々が、クライアント106のうちの各クライアントに関連付けられうるように、クライアント106のうちの各々のクライアントが、キャッシュメモリバンク104の各々の内のペンディングバッファ110のうちの或るペンディングバッファに関連付けられてよい。
[0026]キャッシュメモリバンク104の各々のキャッシュメモリバンクは、キャッシュメモリ112および読み出しデータバッファ114A〜114N(「読み出しデータバッファ114」)をさらに含むことができる。キャッシュメモリバンク104のうちの1つのキャッシュメモリバンク内の読み出しデータバッファ114の各々が、やはりクライアント106のうちの各々のクライアントに関連付けられうるように、クライアント106のうちの各クライアントが、キャッシュメモリバンク104の各々のための読み出しデータバッファ114のうちの或る読み出しデータバッファに関連付けられうる。
[0027]クライアント106のうちの或るクライアントが、キャッシュメモリバンク104のうちの1つに、データの要求を送信することができる。一例においては、データの要求はそれぞれ、メインメモリ108内のデータの位置を示すメモリアドレスを含むことができる。データの要求は、データの要求が満たされうるまで、ペンディングバッファ110のうちのクライアントに関連付けられたペンディングバッファにおいて待ち行列に入れられうる(be queued)。クライアント106は、キャッシュメモリ112がデータの要求を満たすことができるかどうかを判断すべくキャッシュメモリ112にアクセスするために、互いに調停を行う(arbitrate)ことができる。いくつかの例では、キャッシュメモリ112は、キャッシュメモリ112が要求されたデータを含む場合に、データの要求を満たしうる。キャッシュメモリ112がデータの要求を満たすことができない場合、データはメインメモリ108から読み出され得、キャッシュメモリ112内に記憶されうる。データの要求がキャッシュメモリ112またはメインメモリ108のいずれかによって満たされた後で、要求されたデータがクライアントに戻される準備ができるまで、キャッシュメモリバンクによってデータの要求が受信されたのと同じ順序で、読み出しデータバッファ114のうちのクライアントに関連付けられた読み出しデータバッファにおいて待ち行列に入れられうる。要求されたデータは、クライアントによってキャッシュメモリバンク104へデータの要求が送られたのと同じ順序で、キャッシュメモリバンク104によってクライアントに戻されうる。
[0028]図2は、本開示のいくつかの態様による、例示的なクライアント(図1に示したクライアント106のうちの1つなど)と、例示的なキャッシュメモリシステム(図1に示したキャッシュメモリシステム102など)とを含む例示的なコンピュータシステム(図1に示したコンピュータシステム100など)を説明するブロック図である。図2に示されるとおり、コンピュータシステム200は、クライアント220と、キャッシュメモリシステム202とを含むことができる。コンピュータシステム200は、グラフィックス処理システムを備えることができ、クライアント220は、グラフィックス処理システムのレンダリングパイプラインであってよい。
[0029]キャッシュメモリシステム202は、キャッシュメモリバンク204Aおよび204Bを含むことができる。キャッシュメモリシステム202が、2つのキャッシュメモリバンク204Aおよび204Bを含むものとして示されているが、本開示の技法は、任意の数のキャッシュメモリバンクを含むキャッシュメモリシステムを実装するために使用されうる。
[0030]クライアント220は、キャッシュメモリシステム202内の各々のキャッシュメモリバンクのための書き込みデータバッファに関連付けられうる。図示の例では、クライアント220は、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれてよい書き込みデータバッファ212Aおよび212Bに関連付けられうる。いくつかの例では、書き込みデータバッファ212Aおよび212Bが、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれなくてよいが、代わりにクライアント220またはコンピュータシステム200のどこかに含まれてよい。図2によって説明される例は、キャッシュメモリバンク204Aのための単一の書き込みデータバッファ212Aおよびキャッシュメモリバンク204Bのための単一の書き込みデータバッファ212Bを含むが、それぞれのキャッシュメモリバンク204Aおよび204Bはそれぞれ、キャッシュメモリシステム202にアクセスする各々のクライアントに関する書き込みデータバッファを含んでもよく、あるいはキャッシュメモリシステム202にアクセスする各々のクライアントに関する書き込みデータバッファに関連付けられてもよい。
[0031]書き込みデータバッファ212Aおよび212Bはそれぞれ、クライアント220からそれぞれのキャッシュメモリバンク204Aおよび204Bに送られた書き込み要求を、それぞれのキャッシュメモリバンク204Aおよび204Bへ送られた順序にて記憶して待ち行列に入れるように構成されうる。書き込み要求は、メモリ位置(memory location)の表示(indication)およびデータを含むことができ、書き込み要求に含まれるデータが書き込み要求に含まれるメモリ位置の表示に対応するキャッシュメモリ位置にてそれぞれのキャッシュメモリ210Aおよび210Bに書き込まれるまで、書き込みデータバッファ212Aおよび212Bによって記憶されてよい。
[0032]クライアント220は、キャッシュメモリシステム202内の各々のキャッシュメモリバンクのペンディングバッファに関連付けられうる。図示の例では、クライアント220は、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれてよいペンディングバッファ206Aおよび206Bに関連付けられうる。いくつかの例では、ペンディングバッファ206Aおよび206Bが、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれなくてよいが、代わりにクライアント220またはコンピュータシステム200のどこかに含まれてよい。図2によって説明される例は、キャッシュメモリバンク204Aのための単一のペンディングバッファ206Aおよびキャッシュメモリバンク204Bのための単一のペンディングバッファ206Bを含むが、それぞれのキャッシュメモリバンク204Aおよび204Bはそれぞれ、キャッシュメモリシステム202にアクセスする各々のクライアントに関するペンディングバッファを含んでもよく、あるいはキャッシュメモリシステム202にアクセスする各々のクライアントに関するペンディングバッファに関連付けられてもよい。
[0033]ペンディングバッファ206Aおよび206Bはそれぞれ、クライアント220からそれぞれのキャッシュメモリバンク204Aおよび204Bに送られたデータの要求を、それぞれのキャッシュメモリバンク204Aおよび204Bにおける受信の順序にて記憶して待ち行列に入れるように構成されうる。データの要求は、ペンディングバッファ206Aおよび206Bによって記憶され得、ペンディングバッファ206Aおよび206Bによって記憶されたデータの要求の各々がキャッシュメモリ210Aおよびキャッシュメモリ210Bによってそれぞれ満たされうるか否かの判断を保留する。いくつかの例では、要求されたデータがそれぞれのキャッシュメモリ210Aおよびキャッシュメモリ210B内に記憶されている場合に、キャッシュメモリ210Aおよびキャッシュメモリ210Bが、データの要求を満たしうる。
[0034]クライアント220は、デッドロック保護ユニット242にも関連付けられうる。デッドロック保護ユニット242は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実装され得、クライアント220に関連付けられたペンディングバッファ206Aおよび206Bの各々がクライアント220から追加のデータの要求を受け付けることができるか否かを、追加の要求を受け付けることがキャッシュメモリバンク204Aおよび204Bの間にデッドロックの状況を引き起こしうるか否かに少なくとも部分的に基づいて、判断するように構成されうる。デッドロック保護ユニット242などのデッドロック保護ユニットの詳細は、図3および図4に関してさらに詳しく後述される。
[0035]キャッシュメモリバンク204Aおよび204Bは、それぞれのタグチェックユニット208Aおよび208Bを含むことができる。タグチェックユニット208Aおよび208Bは、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実装され得、それぞれのペンディングバッファ206Aおよび206B内のデータの要求の各々がそれぞれのキャッシュメモリ210Aおよび210Bによって満たされうるか否かを判断するように構成されうる。典型的には、キャッシュ内の各々のキャッシュブロックは、タグによってラベル付けされ(be labeled)得、タグは、通常は、キャッシュブロックに対応する、メインメモリ内のアドレスのうちの部分を含むことができる。タグチェックユニット208Aおよび208Bは、メモリアドレスの少なくとも一部がそれぞれのキャッシュメモリ210Aおよび210B内のキャッシュブロックのタグと一致するかどうかを判断するために、データの要求に含まれるメモリアドレスの少なくとも一部を、それぞれのキャッシュメモリ210Aおよび210B内のキャッシュブロックのタグと比較しうる。メモリアドレスの少なくとも一部がキャッシュブロックのタグに一致する場合、要求されたデータは、キャッシュメモリのキャッシュブロックに位置付けられ(be located)うる。データの要求は、関連キャッシュメモリバンク内のキャッシュメモリによって満たされ得ない場合、キャッシュメモリは、要求されたデータをメインメモリ(図示されていない)に照会し(query)得、要求されたデータで自身を更新することができる。キャッシュメモリ210Aおよび210Bは、インストラクションキャッシュ、データキャッシュ、あるいはメインメモリ(図示されていない)と比べてより高速なデータへのアクセスをクライアント220に提供するためにアクセスの局所性(locality)を利用するように管理される(managed)任意の他のメモリまたは記憶装置であってよい。
[0036]それぞれのペンディングバッファ206Aおよび206B内に記憶されたデータの要求は、それぞれのタグチェックユニット208Aおよび208Bによって、単一のキャッシュメモリバンク内の要求が順にタグチェックされるように、先入れ先出しの方法で(in a first-in-first-out fashion)タグチェックされうる。単一のキャッシュメモリバンク内の要求は順にタグチェックされうるが、いくつかのキャッシュメモリバンク内で要求がタグチェックされる順序は、クライアント220によるキャッシュメモリシステム202への要求が送信される順序に対して、順序が狂う(out of order)可能性がある。例えば、クライアント220は、第1のデータの要求をキャッシュメモリバンク204Aに送ることができ、次いで第2のデータの要求をキャッシュメモリバンク204Bに送ることができる。しかしながら、キャッシュメモリバンク204B内のタグチェックユニット208Bが、タグチェックユニット208Aが第1のデータの要求をタグチェックすることができるよりも前に、第2のデータの要求をタグチェックすることができるかもしれない。このように、キャッシュメモリバンク204Aおよび204Bは、単一のキャッシュメモリバンクにおいては、クライアント200から送られた要求を受信の順序でタグチェックすることができるが、他のキャッシュメモリバンクにおけるクライアント200からの要求の状態にかかわらず、要求をキャッシュメモリシステム202内の他のキャッシュメモリバンクと比べて狂った順序でタグチェックする可能性がある。
[0037]クライアント220は、キャッシュメモリシステム202内の各々のキャッシュメモリバンクのリターンバッファにさらに関連付けられうる。いくつかの例では、リターンバッファが、キャッシュメモリによって満たされ得なかったデータの要求を、要求されたデータがメインメモリから取り出される(fetched)のを待つことができるように、バッファするために有用であってよい。図2によって示される例は、キャッシュメモリバンク204Aについて単一のリターンバッファ214Aおよびキャッシュメモリバンク204Bについて単一のリターンバッファ214Bを含むが、それぞれのキャッシュメモリバンク204Aおよび204Bはそれぞれ、キャッシュメモリシステム202にアクセスする各々のクライアントについてリターンバッファを含んでもよく、あるいはキャッシュメモリシステム202にアクセスする各々のクライアントについてリターンバッファに関連付けられてもよい。
[0038]図示の例では、クライアントは、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれてよいリターンバッファ214Aおよび214Bに関連付けられうる。リターンバッファ214Aおよび214Bはそれぞれ、クライアント220からのデータの要求を、それぞれのタグチェックユニット208Aおよび208Bがデータの要求がそれぞれのキャッシュメモリ210Aおよび210Bによって満たされうるか否かを判断した後で、記憶するように構成されうる。リターンバッファ214Aおよび214Bは、データの要求を、それぞれのキャッシュメモリバンク204Aおよび204Bによって受信されるのと同じ順序にて記憶して待ち行列に入れることができる。データの要求は、要求されたデータがキャッシュメモリ210Aおよび210Bからアクセスされうるまで、リターンバッファ214Aおよび214B内に残ることができる。
[0039]それぞれのリターンバッファ214Aおよび214B内に記憶されたデータの要求は、単一のキャッシュメモリバンクにおける要求が順にサービスされるように先入れ先出しの方法で、それぞれのキャッシュメモリ210Aおよび210Bによってサービスされうる。単一のキャッシュメモリバンク内の要求は順にサービスされうるが、いくつかのキャッシュメモリバンク内で要求がサービスされる順序は、クライアント220によってキャッシュメモリシステム202へ要求が送信された順序に対して、順序が狂う可能性がある。例えば、クライアント220は、第1のデータの要求をキャッシュメモリバンク204Aに送信することができ、次いで第2のデータの要求をキャッシュメモリバンク204Bに送信することができる。タグチェックユニット208Aが、第1のデータの要求がキャッシュメモリ210Aによって現時点において満たされ得ない旨を知らせることができる一方で、タグチェックユニット208Bが、第1のデータの要求がキャッシュメモリ210Bによって満たされうる旨を知らせることができる。この例では、キャッシュメモリバンク204Aが、第1のデータの要求によって要求されたデータがメインメモリから読み出されてキャッシュメモリ210Aに記憶されるまで数サイクルを待たなければならないと考えられるがゆえに、キャッシュメモリバンク204Bが、キャッシュメモリバンク204Aが第1の要求をサービスできるよりも前に、第2の要求をサービスできると考えられる。したがって、キャッシュメモリバンク204Aおよび204Bは、単一のキャッシュメモリバンク内では、クライアント200から送信された要求を受信の順序でサービスすることができるが、他のキャッシュメモリバンクにおけるクライアント200からの要求の状態にかかわらず、キャッシュメモリシステム202内の他のキャッシュメモリバンクと比べて狂った順序で要求をサービスする可能性がある。
[0040]キャッシュメモリシステム202にアクセスするクライアントはそれぞれ、キャッシュメモリシステム202内の各々のキャッシュメモリバンクのための読み出しデータバッファに関連付けられうる。図2によって示される例は、キャッシュメモリバンク204Aのための単一の読み出しデータバッファ218Aおよびキャッシュメモリバンク204Bのための単一の読み出しデータバッファ218Bを含むが、それぞれのキャッシュメモリバンク204Aおよび204Bはそれぞれ、キャッシュメモリシステム202にアクセスする各々のクライアントについて読み出しデータバッファを含んでもよく、あるいはキャッシュメモリシステム202にアクセスする各々のクライアントについて読み出しデータバッファに関連付けられてもよい。
[0041]図示の例では、クライアント220は、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれてよい読み出しデータバッファ218Aおよび218Bに関連付けられうる。いくつかの例では、読み出しデータバッファ218Aおよび218Bが、それぞれのキャッシュメモリバンク204Aおよび204Bに含まれなくてもよいが、代わりにクライアント220またはコンピュータシステム200のどこかに含まれてよい。読み出しデータバッファ218Aおよび218Bはそれぞれ、それぞれのキャッシュメモリ210Aおよび210Bからのデータの要求によって要求されたデータを、それぞれのペンディングバッファ206Aおよび206Bによるデータの要求の受信の順序に従って記憶して待ち行列に入れるように構成されうる。読み出しデータバッファ218Aおよび218B内に記憶されたデータは、クライアント220によってキャッシュメモリシステム202へデータの要求が送信されたのと同じ順序で、クライアント220に返されうる。
[0042]読み出しデータバッファ218Aおよび218Bは、クライアント200によって送信されたデータの要求によって要求されたデータをバッファすることにより、デッドロック保護ユニット242との協働においてデッドロック保護を提供することもできる。読み出しデータバッファ218Aおよび218Bなどの読み出しデータバッファによるデッドロック保護の詳細は、図3に関してさらに詳しく後述される。
[0043]クライアント220は、図1に示したクライアント106のうちの1つであってよい。クライアント220は、書き込み制御ユニット222、要求制御ユニット224、および読み出し制御ユニット226を含むことができる。書き込み制御ユニット222、要求制御ユニット224、および読み出し制御ユニット226の構成要素は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせを使用して実装されうる。図2によって示される例は、単一のクライアント220だけしか含んでいないが、コンピュータシステム200は、1つ以上のクライアントを含むことができ、キャッシュメモリシステム202は、1つ以上のクライアントによってアクセスされうる。
[0044]要求制御ユニット224は、要求バッファ232およびデマルチプレクサ234を含むことができ、キャッシュメモリシステム202にデータの要求を送信するように構成されてよい。要求バッファ232は、データの要求を記憶して待ち行列に入れることができ、要求バッファ232は、データの要求ならびにキャッシュメモリバンクの表示(メモリアドレスまたはバンクIDなど)を、デマルチプレクサ234に送信することができる。キャッシュメモリバンクの表示(indication)に基づき、デマルチプレクサ234は、データの要求を適切なキャッシュメモリバンクに送信することができる。さらに、要求バッファ232は、読み出し制御ユニット226に送信されるすべての要求についてキャッシュメモリバンクの表示を送信することができる。
[0045]書き込み制御ユニット222は、キャッシュメモリシステム202に書き込み要求を送信するように構成されうる。書き込み制御ユニット222は、書き込み指令バッファ228およびデマルチプレクサ230を含むことができる。書き込み指令バッファ228は、書き込み要求を受信の順序にて記憶して待ち行列に入れることができ、書き込み要求ならびにキャッシュメモリバンクの表示(メモリアドレスまたはバンクIDなど)を、デマルチプレクサ230に送信することができる。キャッシュメモリバンクの表示に基づき、デマルチプレクサ230は、書き込み要求を適切なキャッシュメモリバンクに送信することができる。
[0046]読み出し制御ユニット226は、クライアント220によって要求されたデータをキャッシュシステム202から読み出すように構成されうる。読み出し制御ユニット226は、読み出し指令バッファ236、整列ユニット(alignment unit)238、およびマルチプレクサ240を含むことができる。読み出し指令バッファ236は、クライアント220の要求制御ユニット224によって発せられるデータの要求の各々について、データの要求が送られるキャッシュメモリバンクの表示(メモリアドレスまたはバンクIDなど)を受信して待ち行列に入れることができる。表示に基づき、マルチプレクサ240が、要求されたデータがクライアント220によってデータの要求が送信されたのと同じ順序でクライアント220によって受信されるように、適切なキャッシュメモリバンクから読み出しを行うことができる。
[0047]コンピュータシステム200は、いくつかの例では、図1のプロセッサ116などの1つ以上のプロセッサを備えることができる。コンピュータシステム200における1つ以上のプロセッサは、クライアント220およびキャッシュメモリシステム202の動作を指揮および制御するように構成されうる。したがって、コンピュータシステム220における1つ以上のプロセッサは、書き込み制御ユニット222、要求制御ユニット224、読み出し制御ユニット226、メモリバンク204Aおよび204B、ペンディングバッファ206Aおよび206B、タグチェックユニット208Aおよび208B、キャッシュメモリ210Aおよび210B、書き込みデータバッファ212Aおよび212B、リターンバッファ214Aおよび214B、ならびに読み出しデータバッファ218Aおよび218Bの動作を指揮および制御するように構成されうる。
[0048]図3が、例示的なキャッシュメモリシステムにおいてデッドロックを解消するための例示的な技術を説明するブロック図である。図3に示されるとおりのデッドロックを解消するための例示的な技法は、図1に示したコンピュータシステム100および図2に示したコンピュータシステム200における使用のために適用可能であってよい。図3に示されるとおり、コンピュータシステム300が、クライアント302Aおよび302B、ならびにキャッシュメモリシステム304を含むことができる。コンピュータシステム300は、グラフィックス処理システムを含むことができ、クライアント302Aおよび304Bは、グラフィックス処理システムのためのレンダリングパイプラインであってよい。いくつかの例では、コンピュータシステム300が、デッドロックの解消のための後述される例示的な技法を指揮および制御するように構成された1つ以上のプロセッサを含むことができる。
[0049]クライアント302Aが、要求320A、322A、324A、および326Aをこの順番でキャッシュメモリシステム304に順に送信することができ、クライアント304Bが、要求320B、322B、324B、および326Bをこの順番でキャッシュメモリシステム304に順に送信することができる。要求322Aおよび324Aは、クライアント302Aによってキャッシュメモリバンク306Aに送信されてよく、ペンディングバッファ308Aに記憶されてよい。要求320Aおよび326Aは、クライアント302Aによってキャッシュメモリバンク306Bに送信されてよく、ペンディングバッファ308Bに記憶されてよい。要求320Bおよび326Bは、クライアント302Bによってキャッシュメモリバンク306Aに送信されてよく、ペンディングバッファ310Aに記憶されてよい。要求322Bおよび324Bは、クライアント302Bによってキャッシュメモリバンク306Bに送信されてよく、ペンディングバッファ310Bに記憶されてよい。
[0050]図3に示した例においては、クライアント302Aおよび302Bによって送信される要求320A、320B、322A、322B、324A、324B、326A、および326Bの各々が、読み出し要求であってよく、キャッシュメモリ312Aおよび312Bの同じセットインデックスを対象とする(target)ことができる。キャッシュメモリ312Aおよび312Bはそれぞれ、2つのキャッシュラインスロットを含む2ウェイアソシアティブキャッシュ(two-way associative cache)であってよい。図3に示されるとおり、キャッシュメモリバンク306A内のキャッシュメモリ312Aが、クライアント302Aによって送信された要求324Aおよび322Aをサービスすることができ、キャッシュメモリ306B内のキャッシュメモリ312Bが、クライアント304Bによって送信された要求322Bおよび324Bをサービスすることができる。ペンディングバッファ308A、310A内に記憶された要求は、要求324Aおよび322Aがキャッシュメモリ312Aのキャッシュラインスロットをもはや占めなくなるまで、キャッシュメモリ312Aによってサービスされなくてもよい。同様に、ペンディングバッファ308Bおよび310B内に記憶された要求も、要求322Bおよび324Bがキャッシュメモリ312Bのキャッシュラインスロットをもはや占めなくなるまで、キャッシュメモリ312Bによってサービスされなくてもよい。
[0051]キャッシュメモリ312Aのキャッシュラインスロットを占めている要求324Aおよび322Aによって要求されたデータは、クライアント302Aに戻され得ない。なぜならば、要求322Aおよび324Aは、クライアント302Aによって要求320Aの後に送信されており、要求320Aによって要求されたデータが、未だクライアント302Aに戻されていないからである。さらに、キャッシュメモリ312Bのキャッシュラインスロットを占めている要求324Bおよび322Bによって要求されたデータは、クライアント302Bに戻され得ない。なぜならば、要求322Bおよび324Bは、クライアント302Bによって要求320Bの後に送信されており、要求320Bによって要求されたデータが、未だクライアント302Aに戻されていないからである。しかしながら、要求320Aは、要求322Bおよび324Bがキャッシュメモリ312Bのキャッシュラインスロットを占めているため、依然としてペンディングバッファ308Bにあり、キャッシュメモリ312Bによってサービスされるのを待っており、要求320Bは、要求322Aおよび324Aがキャッシュメモリ312Aのキャッシュラインスロットを占めているため、依然としてペンディングバッファ310Aにありうる。したがって、キャッシュメモリバンク306Aおよび306Bが、デッドロックの状態になりうる。
[0052]図2に示した読み出しデータバッファ218Aおよび218Bと同様の読み出しデータバッファ314A、316A、314B、および316Bは、キャッシュメモリ312Aおよび312Bのキャッシュラインスロットを解放する(free up)ためのデータバッファとして働くことによって、上述のデッドロックの状況に対して保護するように実装されうる。図3に示されるとおり、読み出しデータバッファ314Aおよび314Bは、クライアント302Aに関連付けられ得、読み出しデータバッファ316Aおよび316Bは、クライアント302Bに関連付けられうる。要求322Aおよび324Aによって要求されたデータは、要求320Aによって要求されたデータがクライアント302Aに戻されるまで、キャッシュメモリ312Aから読み出され得、読み出しデータバッファ314A内に記憶され得、要求322Bおよび324Bによって要求されたデータは、要求320Bによって要求されたデータがクライアント302Bに戻されるまで、キャッシュメモリ312Bから読み出され得、読み出しデータバッファ316B内に記憶されうる。この方法で、キャッシュメモリ312Aおよび312Bが、要求320A、320B、326A、および326Bをサービスし続けることができ、要求は、それらがそれぞれのクライアント302Aおよび302Bによって送信された順序でそれぞれのクライアント302Aおよび302Bに戻されうる。
[0053]図2のデッドロック保護ユニット242と同じように動作するデッドロック保護ユニット318Aおよび318Bは、それぞれのクライアント302Aおよび302Bに関連付けられうる。クライアント302Aに関連付けられたデッドロック保護ユニット318Aが、クライアント302Aに関連付けられたペンディングバッファ308Aおよび308Bがクライアント302Aから追加のデータの要求を受け付けることができるか否かを判断することができる。クライアント302Bに関連付けられたデッドロック保護ユニット318Bが、ペンディングバッファ310Aおよび310Bがクライアント302Bから追加のデータの要求を受け付けることができるか否かを判断することができる。
[0054]いくつかの例では、デッドロック保護ユニット318Aが、クライアント302によってキャッシュメモリバンク306Aに送信された順序の狂った要求のデータサイズの合計と、読み出しデータバッファ314Aのサイズとの比較に基づいて、ペンディングバッファ308Aがクライアント302から追加のデータの要求を受け付けることができるか否かを判断することができる。クライアント302によってキャッシュメモリバンク306Aに送信された順序の狂った要求は、クライアント302によってキャッシュメモリバンク306Aに送信された要求であって、先にクライアント302によって別のキャッシュメモリバンク(キャッシュメモリバンク306Bなど)に送信された要求と比べて異なる順序で処理される要求であってよい。
[0055]クライアント302によってキャッシュメモリバンク306Aに行われる要求は、クライアント302によってキャッシュメモリシステム304に送信されたいずれかの先行の要求がいずれかのメモリバンクにおけるタグチェックに合格していない場合に、順序の狂った要求であってよい。順序の狂った要求は、それ自身は、タグチェックに合格していても、合格していなくてもよい。クライアント302によってキャッシュメモリバンク306Aに行われたすべての順序の狂った要求のデータサイズの合計が、読み出しデータバッファ314Aのサイズ以上である場合、デッドロック保護ユニット318Aが、クライアント302によってキャッシュメモリバンク306Aに行われたすべての順序の狂った要求のデータサイズの合計が読み出しデータバッファ314Aのサイズよりも小さくなるまで、キャッシュメモリバンク306Aによるクライアント302から追加のデータの要求の受け付けを、阻止することができる。
[0056]図4が、本開示のいくつかの態様による例示的なキャッシュメモリシステムにおいてデッドロックの解消に使用される例示的なデータ構造を説明するブロック図である。図4に示されるとおり、データ構造400は、図3に示したデッドロック保護ユニット318Aおよび318Bなどのデッドロック保護ユニットによって、キャッシュメモリバンクが関連クライアントから追加のデータの要求を受け付けることができるか否かを判断するために使用されうる。データ構造400は、リングバッファ(ring buffer)であってよく、有効フラグ(valid flag)、キャッシュメモリバンクID、およびクライアントからの要求のデータサイズを順に記憶することができる。要求の有効フラグは、最初に要求がキャッシュメモリに送られたときに1に設定され得、ひとたび要求がタグチェックに合格したならばゼロに設定されうる。キャッシュメモリバンクIDは、要求が向けられるキャッシュメモリバンクを示すことができる。データサイズは、要求によって要求されるデータのサイズを示すことができる。
[0057]書き込みポインタおよび第1の有効ポインタはそれぞれ、データ構造400内の要求を指し示す。書き込みポインタは、クライアントによって新たな要求が送信されたときに上書きされる要求を指し示すことができる。典型的には、書き込みポインタは、リングバッファ400における最も古い項目を指し示すことができる。第1の有効ポインタは、1に設定された有効フラグを依然として有しており、すなわちタグチェックを依然として待っているリングバッファ400における最も古い要求を指すことができる。第1の有効ポインタは、1に設定された有効フラグを有する要求に遭遇するまでリングバッファ400を書き込みポインタから右側へと横切る(リングバッファ400内の最後の項目からリングバッファ400内の最初の項目への巡回(circling)を含む)ことによって発見されうる。
[0058]第1の有効ポインタによって指し示された要求と、書き込みポインタによって指し示された要求との間の要求(第1の有効ポインタによって指し示された要求を含む)は、順序の狂った要求と考えられうる。この例では、リングバッファ400のアドレス1〜6に含まれる要求は、順序の狂った要求と考えられうる。
[0059]クライアントによってキャッシュメモリバンクに送信されたすべての順序の狂った要求のデータサイズは、キャッシュメモリバンクがクライアントから追加の要求を受け付けることができるか否かを判断するために、合計されうる。図4に示されている例では、キャッシュメモリバンク0におけるすべての順序の狂った要求のデータサイズは、アドレス1の要求のデータサイズとアドレス5の要求のデータサイズとを足し合わせ、両者の合計のデータサイズを生成することによって計算されうる。したがって、キャッシュメモリバンク0においてクライアントに関連付けられた読み出しデータバッファのデータサイズが5よりも大きい場合、キャッシュメモリバンク0は、クライアントから追加の要求を受け付けることができる。
[0060]同様に、キャッシュメモリバンク1におけるすべての順序の狂った要求のデータサイズは、アドレス2、3、4、および6の要求のデータサイズを足し合わせ、8という合計のデータサイズを生成することによって計算されうる。したがって、キャッシュメモリバンク1においてクライアントに関連付けられた読み出しデータバッファのデータサイズが8よりも大きい場合、キャッシュメモリバンク1は、クライアントから追加の要求を受け付けることができる。
[0061]図5は、本開示のいくつかの態様による複数のクライアントによってアクセス可能なマルチバンクキャッシュメモリシステムのスループットを向上させるための例示的な方法を示すフロー図である。いくつかの例では、マルチバンクキャッシュメモリシステムが、図5に示した方法の動作を指揮および制御するように構成された1つ以上のプロセッサを含むことができる。いくつかの例では、本方法は、グラフィックス処理システムにおいて実行することができる。図5に示されるとおり、本方法は、クライアントからのデータの要求を、第1のキャッシュメモリバンクに関するクライアントに関連付けられたペンディングバッファに記憶することを含むことができる(502)。
[0062]本方法は、データの要求の各々が、クライアントによる第2のキャッシュメモリバンクにおけるデータの要求の状態にかかわらず、第1のキャッシュメモリバンク内でキャッシュメモリによって満たされうるか否かを、判断することをさらに含むことができる(504)。
[0063]本方法は、判断の後で、第1のキャッシュメモリバンクに関するクライアントに関連付けられたリターンバッファによって、クライアントからのデータの要求を記憶することをさらに含むことができる(506)。
[0064]本方法は、第1のキャッシュメモリバンクに関するクライアントに関連付けられた読み出しデータバッファによって、クライアントによって要求されたキャッシュメモリからのデータを、ペンディングバッファにおけるデータの要求の受信の順序に従って記憶することをさらに含むことができる(508)。
[0065]本方法は、第1のキャッシュメモリバンクに関するクライアントに関連付けられた書き込みデータバッファによって、キャッシュメモリにデータを書き込むためのクライアントからの書き込み要求を受信することをさらに含むことができる(510)。
[0066]本方法は、ペンディングバッファがクライアントから追加のデータの要求を受け付けることができるか否かを、追加の要求を受け付けることが第1のキャッシュメモリバンクと第2のメモリバンクとの間にデッドロックの状況を引き起こすか否かに少なくとも部分的に基づいて判断することをさらに含むことができる(512)。
[0067]本方法は、第1のキャッシュメモリバンクによって関連クライアントから受信されるすべての順序の狂ったデータの要求のデータサイズの合計が、読み出しデータバッファのサイズよりも小さい場合に、ペンディングバッファがクライアントから追加のデータの要求を受け付けることができると判断することをさらに含むことができる(514)。ペンディングバッファが追加のデータの要求を受け付けることができると判断することは、関連クライアントの要求ごとに有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファに、少なくとも部分的に基づく。
[0068]1つ以上の例では、上述の機能は、グラフィックス処理システムにおいて実装されうる。1つ以上の例では、上述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせにおいて実装されうる。ソフトウェアで実装される場合、これらの機能は、コンピュータ読取可能な媒体において、1つ以上の命令またはコードとして記憶または伝送されうる。コンピュータ読取可能な媒体は、或る場所から他の場所へのコンピュータプログラムの移動を容易にする任意の媒体を含むコンピュータデータ記憶媒体または通信媒体を含むことができる。データ記憶媒体は、本開示において記述された技法を実装するための命令群、コード、および/または、データ構造を取得するために1または複数のコンピュータまたは1または複数のプロセッサによってアクセスされうる任意の利用可能な媒体でありうる。これらに限られるわけではないが、例として、このようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望のプログラムコードを命令またはデータ構造の形態で運ぶまたは記憶するために使用され得、コンピュータによってアクセスされうる任意の他の媒体を備えることができる。また、何らかの接続も、コンピュータ読取可能な媒体と称することが妥当である。例えば、ソフトウェアが、ウェブサイト、サーバ、または他のリモートソース(remote source)から、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、あるいは赤外線、無線、およびマイクロ波などの無線技術を使用して伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、あるいは赤外線、無線、およびマイクロ波などの無線技術は、媒体の定義に含まれる。本明細書において使用されるとき、ディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu−ray(登録商標)ディスクを含み、ここでディスク(disk)が、通常はデータを磁気的に再生する一方で、ディスク(disc)は、データをレーザで光学的に再生する。上記の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
[0069]コードは、1つ以上のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、あるいは他の同等の集積または個別論理回路、などの1つ以上のプロセッサによって実行されてよい。したがって、用語「プロセッサ」は、本明細書において使用されるとき、上述の構造のいずれか、または本明細書に記載の技法の実装に適した任意の他の構造を指すことができる。さらに、いくつかの態様においては、本明細書に記載の機能が、エンコーディングおよびデコーディングのために構成され、あるいは一体型のコーデックに組み込まれた専用のハードウェアおよび/またはソフトウェアモジュール内で提供されてもよい。さらに、これら技法は、1または複数の回路または論理要素で完全に実装されうる。
[0070]本開示の技法は、ワイヤレスハンドセット(wireless handset)、集積回路(IC)、またはICのセット(すなわち、チップセット)を含む幅広くさまざまなデバイスまたは装置において実装されてよい。さまざまな構成要素、モジュール、またはユニットが、この開示において、開示の技法を実行するように構成されたデバイスの機能的な側面を強調するために説明されたが、必ずしも異なるハードウェア・ユニットによる実現が必要なわけではない。むしろ、前述されたように、さまざまなユニットは、適切なソフトウェアおよび/またはファームウェアと連携する、前述されたような1または複数のプロセッサを含む共通のハードウェア・ユニットの集合によって提供されうるか、コーデック・ハードウェア・ユニットに結合されうる。
[0071]さまざまな例が記載された。これらの例およびその他の例は、以下の特許請求の範囲の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]複数のクライアントによってアクセス可能なキャッシュメモリシステムであって、前記キャッシュメモリシステムが複数のキャッシュメモリバンクを含む、キャッシュメモリシステムと、
前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数のペンディングバッファと、
前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数の読み出しデータバッファと、
を備え、
前記複数のキャッシュメモリバンクの各々は、
キャッシュメモリと、
前記複数のクライアントのうちの或るクライアントからのデータの要求が、前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによる要求の状態にかかわらず、前記キャッシュメモリによって満たされうるか否かを判断するように構成されたタグチェックユニットと、
を含み、
前記ペンディングバッファは、データの要求を前記複数のクライアントのうちの関連クライアントからの受信の順序にて記憶し、前記データの要求が前記キャッシュメモリによって満たされうるか否かの判断を保留するように構成され、
前記読み出しデータバッファは、前記関連クライアントによって要求された前記キャッシュメモリからのデータを、前記ペンディングバッファ内の前記関連クライアントに関連付けられたペンディングバッファによる受信の前記順序に従って記憶するように構成されている、システム。
[2]前記複数のキャッシュメモリバンクの各々は、
前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数のバッファ
をさらに含み、
前記リターンバッファは、前記タグチェックユニットが、前記データの要求が前記キャッシュメモリによって満たされうるか否かを判断した後で、前記複数のクライアントのうちの関連クライアントからの前記データの要求を記憶するように構成されている、[1]に記載のシステム。
[3]前記複数のクライアントに関連付けられた複数のデッドロック保護ユニット
をさらに含み、
前記デッドロック保護ユニットは、前記ペンディングバッファ内の前記関連クライアントのためのペンディングバッファが前記関連クライアントからの追加のデータの要求を受け付けることができるか否かを、前記追加の要求を受け付けることが前記複数のキャッシュメモリバンクの間にデッドロックの状況を引き起こすか否かに少なくとも部分的に基づいて、判断するように構成されている、[1]に記載のシステム。
[4]前記関連クライアントのための前記ペンディングバッファは、前記関連クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計が、同じキャッシュメモリバンク内の前記読み出しデータバッファのサイズよりも小さい場合に、前記関連クライアントからの前記追加のデータの要求を受け付けることができる、[3]に記載のシステム。
[5]前記複数のデッドロック保護ユニットの各々は、前記関連クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファを含む、[4]に記載のシステム。
[6]前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数の書き込みデータバッファ
をさらに備え、
前記書き込みデータバッファは、前記キャッシュメモリにデータを書き込むために前記関連クライアントからの書き込み要求を受信するように構成されている、[1]に記載のシステム。
[7]前記キャッシュメモリは、前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記複数のバッファに記憶された前記データの要求をサービスするように構成されている、[2]に記載のシステム。
[8]クライアントからのデータの要求を、第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたペンディングバッファに記憶することと、
前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記第1のキャッシュメモリバンク内のキャッシュメモリによって満たされうるか否かを判断することと、
前記クライアントによって要求された前記キャッシュメモリからのデータを、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた読み出しデータバッファによって、前記ペンディングバッファにおける前記データの要求の受信の順序に従って記憶することと
を備える、方法。
[9]前記判断の後に、前記クライアントからの前記データの要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたリターンバッファによって記憶すること
をさらに備える、[8]に記載の方法。
[10]前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができるか否かを、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こすか否かに少なくとも部分的に基づいて判断すること
をさらに備える、[8]に記載の方法。
[11]前記第1のキャッシュメモリバンクによって前記クライアントから受信されたすべての順序の狂ったデータの要求のデータサイズの合計が、前記読み出しデータバッファのサイズよりも小さい場合に、前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができると判断すること
をさらに備える、[10]に記載の方法。
[12]前記ペンディングバッファが追加の要求を受け付けることができると判断することは、前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファに少なくとも部分的に基づく、[11]に記載の方法。
[13]前記キャッシュメモリにデータを書き込むために前記クライアントからの書き込み要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた書き込みデータバッファによって受信すること
をさらに備える、[8]に記載の方法。
[14]前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記リターンバッファに記憶された前記データの要求を前記キャッシュメモリによってサービスすること
をさらに備える、[9]に記載の方法。
[15]第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶するための手段と、
前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断するための手段と、
前記第1のメモリバンクに関する前記クライアントによって要求された前記キャッシュメモリからのデータを記憶するための手段と
を備える、装置。
[16]前記クライアントからの重要なデータの要求を記憶するための手段
をさらに備える、[15]に記載の装置。
[17]前記データの要求を受信するための手段が前記クライアントからの追加のデータの要求を受け付けることができるか否かを、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こすか否かに少なくとも部分的に基づいて判断するための手段
をさらに備える、[15]に記載の装置。
[18]前記データの要求を受信するための手段が前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断するための前記手段は、
前記クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計が、前記要求されたキャッシュメモリからのデータを記憶するための手段のサイズよりも小さい場合に、前記データの要求を受信するための手段が前記クライアントからの追加のデータの要求を受け付けることができると判断するための手段
を備える、[17]に記載の装置。
[19]前記データの要求を受信するための手段が前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断するための前記手段は、
前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファ
を含む、[18]に記載の装置。
[20]前記キャッシュメモリにデータを書き込むための前記クライアントからの書き込み要求を受信するための手段
をさらに備える、[15]に記載の装置。
[21]前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記重要な要求を記憶するための手段に記憶された前記データの要求を、前記キャッシュメモリによってサービスするための手段
をさらに備える、[16]に記載の装置。
[22]第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶し、
前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断し、
前記第1のメモリバンクに関する前記クライアントによって要求された前記キャッシュメモリからのデータを記憶する
ように構成された1つ以上のプロセッサを備える、装置。
[23]前記1つ以上のプロセッサは、
前記判断することの後で、前記クライアントからの前記データの要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたリターンバッファに記憶する
ようにさらに構成されている、[22]に記載の装置。
[24]前記1つ以上のプロセッサは、
前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができるか否かを、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こすか否かに少なくとも部分的に基づいて判断する
ようにさらに構成されている、[22]に記載の装置。
[25]前記1つ以上のプロセッサは、
前記第1のキャッシュメモリバンクによって前記クライアントから受信されるすべての順序の狂ったデータの要求のデータサイズの合計が、前記読み出しデータバッファのサイズよりも小さい場合に、前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができると判断する
ようにさらに構成されている、[24]に記載の装置。
[26]前記ペンディングバッファが追加の要求を受け付けることができると判断することが、前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファに少なくとも部分的に基づく、[25]に記載の装置。
[27]前記1つ以上のプロセッサは、
前記キャッシュメモリにデータを書き込むために前記クライアントからの書き込み要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた書き込みデータバッファによって受信する
ようにさらに構成されている、[22]に記載の装置。
[28]前記1つ以上のプロセッサは、
前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記リターンバッファに記憶された前記データの要求を、前記キャッシュメモリがサービスする
ようにさらに構成されている、[23]に記載の装置。

Claims (24)

  1. 複数のクライアントによってアクセス可能なキャッシュメモリシステムと、前記キャッシュメモリシステムは複数のキャッシュメモリバンクを含み、前記複数のキャッシュメモリバンクの各々のキャッシュメモリバンクは、
    キャッシュメモリと、
    前記複数のクライアントのうちの或るクライアントからのデータの要求が、前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによる要求の状態にかかわらず、前記キャッシュメモリによって満たされうるか否かを判断するように構成されたタグチェックユニットと、
    を含み、
    前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数のペンディングバッファと、前記ペンディングバッファは、データの要求を前記複数のクライアントのうちの関連クライアントからの受信の順序にて記憶し、前記データの要求が前記キャッシュメモリによって満たされうるか否かの判断を保留するように構成され、
    前記複数のクライアントに関連付けられた複数のデッドロック保護ユニットと、前記デッドロック保護ユニットは、前記ペンディングバッファ内の前記関連クライアントのための前記キャッシュメモリバンクに関するペンディングバッファが、前記関連クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計を、同じキャッシュメモリバンク内の読み出しデータバッファのサイズと比較することに少なくとも部分的に基づいて、前記関連クライアントからの追加のデータの要求を受け付けることができるか否かを判断するように構成され、前記デッドロック保護ユニットは、前記ペンディングバッファが前記追加のデータの要求を受け付けることができるか否かの前記判断に少なくとも部分的に基づいて、前記追加の要求を受け付けることが前記複数のキャッシュメモリバンクの間にデッドロックの状況を引き起こす場合に、前記ペンディングバッファが前記追加の要求を受け付けることを阻止するようにさらに構成され、
    前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数の読み出しデータバッファと、前記読み出しデータバッファは、前記関連クライアントによって要求された前記キャッシュメモリからのデータを、前記ペンディングバッファ内の前記関連クライアントに関連付けられたペンディングバッファによる受信の前記順序に従って記憶するように構成され、
    を備える、システム。
  2. 前記複数のキャッシュメモリバンクの各々は、
    前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数のリターンバッファ、前記リターンバッファは、前記タグチェックユニットが、前記データの要求が前記キャッシュメモリによって満たされうるか否かを判断した後で、前記複数のクライアントのうちの前記関連クライアントからの前記データの要求を記憶するように構成され、
    をさらに含む、請求項1に記載のシステム。
  3. 前記関連クライアントのための前記ペンディングバッファは、前記関連クライアントによるすべての順序の狂ったデータの要求のデータサイズの前記合計が、同じキャッシュメモリバンク内の前記読み出しデータバッファの前記サイズよりも小さい場合に、前記関連クライアントからの前記追加のデータの要求を受け付けることができる、請求項1に記載のシステム。
  4. 前記複数のデッドロック保護ユニットの各々は、前記関連クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファを含む、請求項3に記載のシステム。
  5. 前記複数のキャッシュメモリバンクに関する前記複数のクライアントに関連付けられた複数の書き込みデータバッファ、前記書き込みデータバッファは、前記キャッシュメモリにデータを書き込むために前記関連クライアントからの書き込み要求を受信するように構成され、
    をさらに備える、請求項1に記載のシステム。
  6. 前記キャッシュメモリは、前記複数のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記複数のバッファに記憶された前記データの要求をサービスするように構成されている、請求項2に記載のシステム。
  7. クライアントからのデータの要求を、第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたペンディングバッファに記憶することと、
    前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記第1のキャッシュメモリバンク内のキャッシュメモリによって満たされうるか否かを判断することと、
    前記クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計を、前記第1のキャッシュメモリバンク内の読み出しデータバッファのサイズと比較することに少なくとも部分的に基づいて、前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断することと、
    前記ペンディングバッファが前記追加のデータの要求を受け付けることができるか否かの前記判断に少なくとも部分的に基づいて、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こす場合に、前記ペンディングバッファが前記追加の要求を受け付けることを阻止することと、
    前記クライアントによって要求された前記キャッシュメモリからのデータを、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた前記読み出しデータバッファによって、前記ペンディングバッファにおける前記データの要求の受信の順序に従って記憶することと
    を備える、方法。
  8. 前記データの要求の各々が前記キャッシュメモリによって満たされうるか否かを判断した後に、前記クライアントからの前記データの要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたリターンバッファによって記憶すること
    をさらに備える、請求項7に記載の方法。
  9. 前記第1のキャッシュメモリバンクによって前記クライアントから受信されたすべての順序の狂ったデータの要求のデータサイズの前記合計が、前記読み出しデータバッファの前記サイズよりも小さい場合に、前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができると判断すること
    をさらに備える、請求項7に記載の方法。
  10. 前記ペンディングバッファが追加の要求を受け付けることができると判断することは、前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファに少なくとも部分的に基づく、請求項9に記載の方法。
  11. 前記キャッシュメモリにデータを書き込むために前記クライアントからの書き込み要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた書き込みデータバッファによって受信すること
    をさらに備える、請求項7に記載の方法。
  12. 前記第1および第2のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記リターンバッファに記憶された前記データの要求を前記キャッシュメモリによってサービスすること
    をさらに備える、請求項8に記載の方法。
  13. 第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶するための手段と、
    前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断するための手段と、
    前記データの要求を記憶するための手段が、前記クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計を、前記第1のキャッシュメモリバンク内の読み出しデータバッファのサイズと比較することに少なくとも部分的に基づいて、前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断するための手段と、
    前記データの要求を記憶するための手段が前記追加のデータの要求を受け付けることができるか否かの前記判断に少なくとも部分的に基づいて、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こす場合に、前記データの要求を記憶するための手段が前記追加の要求を受け付けることを阻止するための手段と、
    前記第1のキャッシュメモリバンクに関する前記クライアントによって要求された前記キャッシュメモリからのデータを記憶するための手段と、前記クライアントによって要求された前記キャッシュメモリからのデータを記憶するための手段は、前記読み出しデータバッファであり、
    を備える、装置。
  14. 前記クライアントからの、前記キャッシュメモリによって満たされ得なかったデータの要求を記憶するための手段
    をさらに備える、請求項13に記載の装置。
  15. 前記データの要求を記憶するための手段が前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断するための前記手段は、
    前記クライアントによるすべての順序の狂ったデータの要求のデータサイズの前記合計が、前記要求された前記キャッシュメモリからのデータを記憶するための手段の前記サイズよりも小さい場合に、前記データの要求を記憶するための手段が前記クライアントからの追加のデータの要求を受け付けることができると判断するための手段
    を備える、請求項13に記載の装置。
  16. 前記データの要求を受信するための手段が前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断するための前記手段は、
    前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファ
    を含む、請求項15に記載の装置。
  17. 前記キャッシュメモリにデータを書き込むための前記クライアントからの書き込み要求を受信するための手段
    をさらに備える、請求項13に記載の装置。
  18. 前記第1および第2のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記クライアントからの、前記キャッシュメモリによって満たされ得なかったデータの要求を記憶するための手段に記憶された前記データの要求を、前記キャッシュメモリによってサービスするための手段
    をさらに備える、請求項14に記載の装置。
  19. メモリと、
    前記メモリに接続され、
    第1のキャッシュメモリバンクに関するクライアントからのデータの要求を記憶し、
    前記データの要求の各々が、第2のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、キャッシュメモリによって満たされうるか否かを判断し、
    前記クライアントによるすべての順序の狂ったデータの要求のデータサイズの合計を、前記第1のキャッシュメモリバンク内の読み出しデータバッファのサイズと比較することに少なくとも部分的に基づいて、前記クライアントからの前記データの要求を記憶するペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができるか否かを判断し、
    前記ペンディングバッファが前記追加のデータの要求を受け付けることができるか否かの前記判断に少なくとも部分的に基づいて、前記追加の要求を受け付けることが前記第1のキャッシュメモリバンクと前記第2のキャッシュメモリバンクとの間にデッドロックの状況を引き起こす場合に、前記ペンディングバッファが前記追加の要求を受け付けることを阻止し、
    前記第1のキャッシュメモリバンクに関する前記クライアントによって要求された前記キャッシュメモリからのデータを記憶する
    ように構成された1つ以上のプロセッサと、
    を備える、装置。
  20. 前記1つ以上のプロセッサは、
    前記データの要求の各々が前記キャッシュメモリによって満たされうるか否かを判断した後で、前記クライアントからの前記データの要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられたリターンバッファに記憶する
    ようにさらに構成されている、請求項19に記載の装置。
  21. 前記1つ以上のプロセッサは、
    前記第1のキャッシュメモリバンクによって前記クライアントから受信されるすべての順序の狂ったデータの要求のデータサイズの前記合計が、前記読み出しデータバッファの前記サイズよりも小さい場合に、前記ペンディングバッファが前記クライアントからの追加のデータの要求を受け付けることができると判断する
    ようにさらに構成されている、請求項19に記載の装置。
  22. 前記ペンディングバッファが追加の要求を受け付けることができると判断することは、前記クライアントの要求について、有効フラグ、バンクID、およびデータサイズのうちの1つ以上を記憶するバッファに少なくとも部分的に基づく、請求項21に記載の装置。
  23. 前記1つ以上のプロセッサは、
    前記キャッシュメモリにデータを書き込むために前記クライアントからの書き込み要求を、前記第1のキャッシュメモリバンクに関する前記クライアントに関連付けられた書き込みデータバッファによって受信する
    ようにさらに構成されている、請求項19に記載の装置。
  24. 前記1つ以上のプロセッサは、
    前記第1および第2のキャッシュメモリバンク内の別のキャッシュメモリバンクにおける前記クライアントによるデータの要求の状態にかかわらず、前記リターンバッファに記憶された前記データの要求を、前記キャッシュメモリによってサービスする
    ようにさらに構成されている、請求項20に記載の装置。
JP2014555583A 2012-02-02 2013-01-23 マルチバンクキャッシュメモリ Expired - Fee Related JP6022604B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/364,901 US9274964B2 (en) 2012-02-02 2012-02-02 Multi-bank cache memory
US13/364,901 2012-02-02
PCT/US2013/022759 WO2013116060A1 (en) 2012-02-02 2013-01-23 Multi-bank cache memory

Publications (3)

Publication Number Publication Date
JP2015505631A JP2015505631A (ja) 2015-02-23
JP2015505631A5 JP2015505631A5 (ja) 2016-06-16
JP6022604B2 true JP6022604B2 (ja) 2016-11-09

Family

ID=47790485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014555583A Expired - Fee Related JP6022604B2 (ja) 2012-02-02 2013-01-23 マルチバンクキャッシュメモリ

Country Status (6)

Country Link
US (1) US9274964B2 (ja)
EP (1) EP2810172A1 (ja)
JP (1) JP6022604B2 (ja)
KR (1) KR101687883B1 (ja)
CN (1) CN104094242B (ja)
WO (1) WO2013116060A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394566B2 (en) * 2017-06-06 2019-08-27 International Business Machines Corporation Banked cache temporarily favoring selection of store requests from one of multiple store queues
KR20190037668A (ko) * 2017-09-29 2019-04-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11853216B2 (en) * 2021-08-16 2023-12-26 Micron Technology, Inc. High bandwidth gather cache

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3967247A (en) 1974-11-11 1976-06-29 Sperry Rand Corporation Storage interface unit
JPH05210640A (ja) 1992-01-31 1993-08-20 Hitachi Ltd マルチプロセッサシステム
US6745293B2 (en) 2000-08-21 2004-06-01 Texas Instruments Incorporated Level 2 smartcache architecture supporting simultaneous multiprocessor accesses
US20030163643A1 (en) * 2002-02-22 2003-08-28 Riedlinger Reid James Bank conflict determination
JP2004046643A (ja) * 2002-07-12 2004-02-12 Sony Corp キャッシュ装置および記憶手段選択方法
US7203775B2 (en) * 2003-01-07 2007-04-10 Hewlett-Packard Development Company, L.P. System and method for avoiding deadlock
US7219185B2 (en) 2004-04-22 2007-05-15 International Business Machines Corporation Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US7571284B1 (en) * 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US8560795B2 (en) * 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue
WO2007003370A2 (en) * 2005-06-30 2007-01-11 Interuniversitair Microelektronica Centrum Vzw A memory arrangement for multi-processor systems
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
US7600080B1 (en) 2006-09-22 2009-10-06 Intel Corporation Avoiding deadlocks in a multiprocessor system
KR20090110291A (ko) 2006-10-26 2009-10-21 인터랙틱 홀딩스 엘엘시 병렬 컴퓨팅시스템을 위한 네트워크 인터페이스 카드
US8521982B2 (en) * 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
US8661200B2 (en) * 2010-02-05 2014-02-25 Nokia Corporation Channel controller for multi-channel cache

Also Published As

Publication number Publication date
EP2810172A1 (en) 2014-12-10
CN104094242A (zh) 2014-10-08
US20130205091A1 (en) 2013-08-08
CN104094242B (zh) 2017-03-01
WO2013116060A1 (en) 2013-08-08
KR20140116966A (ko) 2014-10-06
US9274964B2 (en) 2016-03-01
KR101687883B1 (ko) 2016-12-28
JP2015505631A (ja) 2015-02-23

Similar Documents

Publication Publication Date Title
US11347649B2 (en) Victim cache with write miss merging
US8521982B2 (en) Load request scheduling in a cache hierarchy
US9110830B2 (en) Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US7047322B1 (en) System and method for performing conflict resolution and flow control in a multiprocessor system
US8200939B2 (en) Memory management unit in a microprocessor system
US7644221B1 (en) System interface unit
US8352682B2 (en) Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
KR20040045035A (ko) 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김
TW200915178A (en) Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US20110246688A1 (en) Memory arbitration to ensure low latency for high priority memory requests
US9164912B2 (en) Conflict resolution of cache store and fetch requests
CN111684427A (zh) 高速缓存控制感知的存储器控制器
US20060112238A1 (en) Techniques for pushing data to a processor cache
CN113826085A (zh) 处理器中的写入流
US7529876B2 (en) Tag allocation method
JP2020030822A (ja) インメモリコンピューティングのための大容量メモリシステム
JP6022604B2 (ja) マルチバンクキャッシュメモリ
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US20090144500A1 (en) Store performance in strongly ordered microprocessor architecture
US20080301376A1 (en) Method, Apparatus, and System Supporting Improved DMA Writes
US20070180157A1 (en) Method for cache hit under miss collision handling
US12066940B2 (en) Data reuse cache
US8205064B2 (en) Latency hiding for a memory management unit page table lookup
US20120054439A1 (en) Method and apparatus for allocating cache bandwidth to multiple processors
CN107408059B (zh) 共享多级库的跨级预取

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141016

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160420

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160420

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160816

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: 20160906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161005

R150 Certificate of patent or registration of utility model

Ref document number: 6022604

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees