JP2015232879A - データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応 - Google Patents

データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応 Download PDF

Info

Publication number
JP2015232879A
JP2015232879A JP2015108470A JP2015108470A JP2015232879A JP 2015232879 A JP2015232879 A JP 2015232879A JP 2015108470 A JP2015108470 A JP 2015108470A JP 2015108470 A JP2015108470 A JP 2015108470A JP 2015232879 A JP2015232879 A JP 2015232879A
Authority
JP
Japan
Prior art keywords
memory
access
write
data processing
allocation policy
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
JP2015108470A
Other languages
English (en)
Other versions
JP6514569B2 (ja
Inventor
ジョハー カウザー
Johar Kauser
ジョハー カウザー
ジョン ペントン アントニー
John Penton Antony
ジョン ペントン アントニー
ヒューズ ゼミアン
Hughes Zemian
ヒューズ ゼミアン
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2015232879A publication Critical patent/JP2015232879A/ja
Application granted granted Critical
Publication of JP6514569B2 publication Critical patent/JP6514569B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】メモリ・アクセス・バッファによってバッファリング及び処理されるメモリの書き込みアクセス要求を発行するデータ処理装置を提供する。
【解決手段】キャッシュ・ユニットは、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、アクセスされたデータ項目をキャッシュするように構成される。メモリ・トランザクションは、バッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、対応する書き込み動作によって書き込みされるよう制約される。バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、及びキャッシュ・ユニットが非書き込み割り当てポリシーで動作するように構成される場合、引き続き書き込み割り当てポリシーで動作させる。
【選択図】図3

Description

本発明は、データ処理装置に関する。より詳細には、本発明は、データ処理装置内のキャッシュ・ユニットの使用の適応に関する。
データ処理装置内のプロセッサ・ユニットに関連するキャッシュ・ユニットであって、プロセッサ・ユニットによってメモリ内でアクセスされたデータ項目のローカル・コピーを格納して、それらのデータ項目へのアクセスが再び要求された場合、代わりにキャッシュに格納されたローカル・コピーにアクセスすることによって、メモリに格納されたデータ項目へのアクセスに付随する遅れを大幅に回避できるように構成されているキャッシュ・ユニットを提供することが知られている。キャッシュされたデータ項目へのそのような後のアクセスが行われた場合、及びこのアクセスが、書き込みアクセス(write access)である場合、そのコピーがキャッシュ内で更新され、書き戻し(write−back)構成内でそのように(「ダーティ(dirty)」)マーク付けされてもよく、又はシステムは、キャッシュ内のデータ項目への変更がメモリ内の元の記憶場所にすぐに伝搬される、書き込みスルー(write−through)構成を有してもよい。
この文脈では、キャッシュ・ユニットは、書き込み誤りが発生した場合、すなわち、プロセッサ・ユニットが、キャッシュ・ユニット内で現在キャッシュされていないメモリにデータ項目を書き込みしようとする場合、その行動を決定するアロケーション・ポリシー(割り当て方針、allocation policy)を有することが知られている。たとえば、データ項目の記憶装置の信頼性が重要な要因であるデータ処理装置では、書き込み誤りが発生した場合、データ項目は、そのデータ項目のコピーがやはりキャッシュ内に引き込まれることなしにターゲット・メモリに書き込まれる、「非書き込み割り当て(no−write allocate)」ポリシーが使用されてよい。さらに、そのようなキャッシュ・アロケーション・ポリシーは、データ項目をキャッシュにポピュレートする(populate)ことが、一般的にメモリからキャッシュ・ライン全体を取り出すことを含み、また、それに付随するさらなるバス・アクティビティを回避することが好ましいと決定され得るので、さらに好ましい場合がある。
第1の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス及びデータ項目を指定する書き込みアクセス要求(write access request)を発行するように構成されたプロセッサ・ユニットと、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、プロセッサ・ユニットによる後続のアクセスのために、メモリから、アクセスされたデータ項目のローカル・コピーを格納するように構成されたキャッシュ・ユニットと、メモリ・トランザクション・トリガ条件が満たされるまで、プロセッサ・ユニットによって発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、1つ又は複数のバッファリングされた書き込みアクセス要求を実行することを備える、メモリに関するメモリ・トランザクションを開始させるように構成されたメモリ・アクセス・バッファとを備えるデータ処理装置であって、メモリ・トランザクションが、1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作(write operation)によって書き込まれる書き込み動作を実行するよう制約され、データ処理装置が、バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ(undersize)条件を識別するように構成され、キャッシュ・ユニットが、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納されず、またアクセス・アンダーサイズ条件が満たされる非書き込み割り当てポリシーとして、アロケーション・ポリシーで動作するように構成される場合、データ処理装置が、キャッシュ・ユニットに、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納される書き込み割り当てポリシー(write allocate policy)として、引き続きアロケーション・ポリシーで動作させるように構成される、データ処理装置を提供する。
本発明は、特定の状況下では、キャッシュ・ユニットの非書き込み割り当てポリシーが、キャッシュ・ユニットの動作にとって最も望ましい構成ではない場合があることを認識する。具体的には、本発明の発明者は、書き込まれるべきメモリ・アドレスが所定の範囲のメモリ・アドレス内にある場合は、その所定の範囲内のすべてのメモリ・アドレスが書き込み動作によって書き込みされなければならないという制約が存在する書き込み動作を備えるメモリ・トランザクションが実行されるべきである場合に、そのような状況が発生し得ることを識別した。言い換えれば、この所定の範囲のメモリ・アドレス内の任意のメモリ・アドレスに書き込みアクセスが行われると、その所定の範囲内のすべてのメモリ・アドレスが書き込み動作で書き込みされなければならない。メモリ・トランザクションへのこの種類の制約は、いくつかの異なる理由で存在し得る。たとえば、メモリに格納されたデータ項目(メモリ・トランザクションの目標)が、それらとともに、関連付けられるエラー訂正コードを格納している場合があり、エラー訂正メカニズムの構成は、格納されたエラー訂正コードが、関連付けられるメモリ・アドレスの範囲を有するいくつかのデータ項目にそれぞれ関連するというものである。したがって、そのグループ内の任意のデータ項目が更新される場合(書き込みアクセスによって)、グループに関連して格納されたエラー訂正コードを正確に更新するために、グループ全体が再び書き込まれる必要がある。別の実例では、メモリ・トランザクションへのこの制約は、たとえそのようなブロック内の個々のデータ項目がそれら自体のメモリ・アドレスを有していても、データ項目のグループだけがブロックとしてともに書き込まれることを可能にする、メモリ自体のハードウェア構成に起因する場合がある。
本技法によれば、データ処理装置は、プロセッサ・ユニットによって発行された書き込みアクセス要求を、これらの1つ又は複数の書き込みアクセス要求がメモリ・トランザクションによって実施される前に一時的に保持(バッファリング)する、メモリ・アクセス・バッファを提供される。このメモリ・トランザクションは、1つ又は複数の所定の条件が満たされることによってトリガされ(メモリ・トランザクション・トリガ条件)、その条件は、たとえば、タイムアウト又はバッファがその全容量に到達することでよい。このバッファリングは、複数の書き込みアクセス要求が結合して、それと組み合わせて、たとえそれぞれの個々の書き込みアクセス要求が、それ自体はその範囲全体をカバーしていなくても、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを指定する機会を提供する。この文脈では、本発明の発明者は、メモリ・アクセス・バッファによってバッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合(本明細書では、アクセス・アンダーサイズ条件と呼ばれる)、これは、キャッシュ・ユニットのアロケーション・ポリシーを適応することが有益である状況を表すと確証した。具体的には、現在、キャッシュ・ユニットが、メモリ内でアクセスされたデータ項目のキャッシングが発生せず、またアクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーに従って動作している場合、本技法に従って、データ処理装置は、キャッシュ・ユニットに、アクセスされたデータ項目がキャッシュ・ユニット内でキャッシュされる書き込み割り当てポリシーを使用して引き続き動作させる。
したがって、メモリ・トランザクションが、複数の所定の範囲のメモリ・アドレスの一部にのみ書き込み動作を実行しようとする書き込みアクセス要求を備える状況では、現在、キャッシュ・ユニットが、アクセスされたデータ項目のローカル・コピーはキャッシュ・ユニットに格納されていないと定義する、キャッシュ・アロケーション・ポリシー(非書き込みアロケーション・ポリシー)で動作している場合、データ処理装置は、キャッシュ・アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納される書き込み割り当てポリシーに切り替えるように構成される。そのような構成は、書き込みアロケーション・ポリシーを実装するための、キャッシュへのアロケーション(ライン・フィル動作(line−fill operation)による)が、一般的に、メモリ・トランザクションを仲介するシステム・バスにさらなる負荷をもたらすという事実に関わらず、有益であると決定されている。しかしながら、アクセス・アンダーサイズ条件が満たされると、指定された複数の所定の範囲のメモリ・アドレスに読み出し(read)(アクセス・アンダーサイズ条件による)及び書き込み動作を実行するための、すでに実行されているはすのバス・トランザクションによる、システム・バスへの負荷をさらに著しく増加せずに、関連するデータ項目のキャッシングの利益を得ることができることが分かっている。
いくつかの実施例では、キャッシュ・ユニットは、後続のアクセスによってアクセスされたデータ項目のローカル・コピーの修正が、メモリ内の対応するオリジナル・データ項目の修正も生じさせる、書き込みスルーモードで動作するように構成されている。キャッシュ・ユニットの書き込みスルー構成は、これがメモリアップ・ツー・デート内のデータを保持する方法(すなわち、書き戻し構成の場合、「ダーティな」データはキャッシュ内に保持されない)のために、好ましい場合がある。本技法は、書き込みスルーモードで動作するように構成されたキャッシュ・ユニットの文脈において、この構成ではキャッシュの利用の信頼性が一般的に低下し、さらなるキャッシュ・アロケーションが大幅な追加のバス・トランザクション・コストなしに達成され得るので、特定の適用を見出だす場合があり、これは特に価値がある。
いくつかの実施例では、メモリ・アクセス・バッファは、メモリ・アクセス・トランザクションが実行されるべき1つ又は複数のバッファリングされた書き込みアクセス要求が、少なくとも1つの所定の範囲のメモリ・アドレス内にすべてのメモリ・アドレスを備えるとは限らない、少なくとも1つの所定の範囲のメモリ・アドレス内のメモリ・アドレスを指定する場合、メモリ・アクセス・トランザクションに、少なくとも1つの所定の範囲のメモリ・アドレスによって表示される少なくとも1つの拡張されたデータ項目を取り出すステップと、バッファリングされた書き込みアクセス要求において指定された1つ又は複数のデータ項目を、取り出された少なくとも1つの拡張されたデータ項目に統合させるステップと、修正された少なくとも1つの拡張されたデータ項目をメモリに書き戻しするステップとを備えさせるように構成されている。
したがって、メモリ・トランザクションは、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる方法で書き込み動作を実行するよう制約されるという事実によって、バッファリングされた書き込みアクセス要求が、所与の所定の範囲のメモリ・アドレスの一部だけを指定すると、メモリ・トランザクション要求は読み出し−修正−書き込み(read−modify−write)動作として実行され得る。この読み出し−修正−書き込み動作は、メモリからの所定の範囲のメモリ・アドレスによって指定された「完全な(full)」データ項目をメモリから読み出しするステップと、書き込みアクセス要求が関連する、その一部を修正するステップ(バッファリングされた書き込みアクセス要求で指定された1つ又は複数のデータ項目を「完全な」データ項目に統合することによって)と、そのように修正された「完全な」データ項目を再びメモリに書き戻しするステップとを備える。そのような実施例では、バッファリングされた書き込みアクセス要求が、読み出し動作、具体的には、所定の範囲のメモリ・アドレスのすべてに対応するデータを取り出す読み出し動作を備えるメモリ・アクセス・トランザクションをもたらすという事実は、アクセス・アンダーサイズ条件が満たされる場合(すなわち、少なくとも2つの所定の範囲のメモリ・アドレスが、バッファリングされた書き込みアクセス要求によって部分的に書き込まれる場合)、ライン・フィル動作のために要求されたデータのほとんど(又はすべて)がすでにメモリから取り出されているので、このアロケーションが実行されるべき重要なさらなるバッファ・アクセス・トランザクションを生じさせることなしに、キャッシュ・アロケーションが生じ得る(すなわち、取り出された拡張されたデータ項目に対応するデータ項目をキャッシュにポピュレートする)ことを意味する。
いくつかの実施例では、データ処理装置は、キャッシュ・ユニットに、書き込み割り当てポリシーとして引き続きアロケーション・ポリシーで動作させた後で、及びメモリ・トランザクション・トリガ条件が満たされた場合、メモリ・アクセス・トランザクションが実行されるべき、バッファリングされた書き込みアクセス要求が、指定されたメモリ・アドレスがある少なくとも1つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定すると、アクセス・フル・サイズ条件(access full−size condition)を識別するように構成され、アクセス・フル・サイズ条件が満たされると、メモリ・アクセス・バッファは、キャッシュ・ユニットに、非書き込み割り当てポリシーとしてアロケーション・ポリシーでの動作に切り替えさせるように構成されている。
したがって、アクセス・アンダーサイズ条件の識別、及び書き込み割り当てポリシーに従って操作するためのキャッシュ・ユニットの切り替えに続いて、正しい状況下で、非書き込みアロケーション・ポリシーに従って動作するようにキャッシュ・ユニットをスイッチ・バックすることが有益であることが認識される。そのような状況は、本明細書では、指定されたメモリ・アドレスが属する少なくとも1つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定するメモリ・アクセス・トランザクションが実行される必要がある場合、満たされていると認識される。言い換えれば、メモリ・アクセス・トランザクション内の所定の範囲のメモリ・アドレスのうちの少なくとも1つが、バッファリングされた書き込みアクセス要求によって「完全にアクセスされる(fully accessed)」、すなわち、それらのバッファリングされた書き込みアクセス要求が、その所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスに書き込みするのは、この時である。この場合、このメモリ・トランザクションは、比較的単純な方法、たとえば、データの連続ブロックが、1つ又は複数の所定の範囲のメモリ・アドレスに書き込みされてよく、比較的シンプルなバス・トランザクションだけを必要とする方法で実行され得ることが認識され、書き込み割り当てポリシーに従ってキャッシュ・ユニットを動作することは、場合によってはさらなるバス・トランザクションを招く場合があり、したがって、キャッシュ・ユニットを非書き込み割り当てポリシーに切り替えることによって、バス・トランザクションの全体的な数を減少させることができる。
いくつかの実施例では、キャッシュ・ユニットは、まず非書き込み割り当てポリシーとしてアロケーション・ポリシーで動作するように構成されている。キャッシュ・ユニットは、いくつかの異なる方法で構成され得ることが認識され、これらは指定されたハードウェア又はソフトウェアのいずれかであるが、キャッシュ・ユニットが動作しているアロケーション・ポリシーがハードウェア構成の一部である場合、プロセッサ・ユニットへの処理負荷は減少される。したがって、非書き込み割り当てポリシーで動作するために、まずキャッシュ・ユニットを、そのようなハードウェア構成の一部として構成することが有益であってよい。
メモリ・トランザクションがブロックとして書き込みするよう制約される、所定の範囲のメモリ・アドレスは、データ項目がメモリに格納される方法の様々な異なる態様に対応し得る。しかしながら、一実施例では、データ項目は、関連付けられるエラー訂正コードを有するメモリに格納され、所定の範囲のメモリ・アドレスは、関連付けられるエラー訂正コードを更新するためにメモリから読み出される必要があるユニット・データ項目サイズによって決定される。したがって、そのような実施例では、エラー訂正コードは、所定の範囲のメモリ・アドレスに格納されたデータ項目を参照して生成されてよく、したがって、所定の範囲のメモリ・アドレス内の任意のデータ項目が更新されると、そのデータ項目のブロック全体の関連付けられるエラー訂正コードも同様に更新される必要がある。
対応するエラー訂正コードの計算は、データ処理装置内でいくつかの異なる方法で行うことができ、たとえば、これは、基本的にメモリ自体の機能であってもよく、データ処理装置の機能であってもよい。一実施例では、データ処理装置は、メモリ・トランザクションに含めるための更新されたエラー訂正コード値を決定するように構成されたエラー訂正コード決定ユニットをさらに備える。したがって、バッファリングされた書き込みアクセス要求がメモリ・トランザクションとして実行されるべきである場合、エラー訂正コード決定ユニットは、バッファリングされた書き込みアクセス要求で指定されたデータ項目に関連してメモリに書き込みされ得る、対応するエラー訂正コード値を提供することができる。いくつかの実施例では、メモリ・アクセス・バッファは、エラー訂正コード決定ユニットを備える。
いくつかの実施例では、所定の範囲のメモリ・アドレスは、メモリに関するメモリ・トランザクションのユニット・データ・サイズによって決定される。したがって、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスに書き込みするメモリ・トランザクションの制約は、メモリ自体の機能に起因する場合があり、たとえば、メモリは、書き込みトランザクション(write transaction)においてともにアクセスされる必要があるメモリ・アドレスの最小グループがあるように構成され得る。
メモリ・アクセス・バッファは、様々な方法で構成されてよいが、一実施例では、メモリ・アクセス・バッファはアクセス・スロットを備え、アクセス・スロットは、プロセッサ・ユニットによって発行された書き込みアクセス要求を、アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してバッファリングするように構成される。したがって、特定のメモリ・アドレスとアクセス・スロットとの関連によって、メモリ・アクセス・バッファが、通常は、それらの書き込みアクセス要求が関連するデータ項目の密接な空間相関のおかげで、単一のメモリ・トランザクション内でともに有効に実行され得る書き込みアクセス要求を蓄積することが可能になる。言い換えれば、アクセス・スロットは、メモリ・アドレス、及びそのメモリ・アドレスに関連する書き込みアクセス要求を格納して、(すなわち、メモリ・アドレスで、又はそのメモリ・アドレスからのスロットのサイズによって表されるオフセット内で)次いで、実行される前に、そのアクセス・スロット内に蓄積され得る。
書き込みアクセス要求のためにアクセス・スロットがバッファリングすることができるデータ項目のサイズは異なってよいが、一実施例では、アクセス・スロットは、キャッシュ・ライン・サイズ未満のサイズを有するように構成される。言い換えれば、アクセス・スロットのサイズは、(最大数の)バッファリングされたデータ項目が、キャッシュ・ユニット内のキャッシュ・ライン・サイズ未満である、結合されたサイズを有するようなサイズでよい。キャッシュ・ユニット内のキャッシュ・ライン・サイズは、一般的に、特定のデータ項目がキャッシュ・ユニット内でキャッシュされるべきである場合(ライン・フィル動作によって)、キャッシュ・ユニットがメモリから取り出される、データの単位を表すと認識される。したがって、アクセス・スロットのサイズと比較することによって、キャッシュ・ユニットのライン・フィル動作は、それをサポートするために、実行される必要があるバス・トランザクションに関して重要な動作を表し、したがって、キャッシュ・ユニットを、書き込み割り当てポリシーに従って動作するように切り替えることは、原則として著しいさらなるバス・トランザクションの発生をもたらす点に留意されたい。しかしながら、データ処理装置が、キャッシュ・ユニットを書き込み割り当てポリシーに従って動作するように切り替えるように構成される本技法の文脈では、アクセス・アンダーサイズ条件が満たされる場合、そのような著しいさらなるバス・トランザクション負担は生じない。
メモリ・アクセス・バッファはアクセス・スロットを1つだけ備え得るが、いくつかの実施例では、メモリ・アクセス・バッファは、複数のアクセス・スロットを備え、各アクセス・スロットは、そのアクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してプロセッサ・ユニットによって発行された書き込みアクセス要求をバッファリングするように構成される。言い換えれば、各アクセス・スロットは、メモリ・アドレス、及びそのメモリ・アドレスに関連する書き込みアクセス要求を格納して、(すなわち、メモリ・アドレスで、又はそのメモリ・アドレスからのスロットのサイズによって表されるオフセット内で)次いで、実行される前に、そのアクセス・スロット内に蓄積され得る。
アクセス・アンダーサイズ条件は、1つだけのアクセス・スロットに関して識別され得るが、いくつかの実施例では、データ処理装置は、複数のアクセス・スロットでバッファリングされた複数の書き込みアクセス要求に関してアクセス・アンダーサイズ条件を識別するように構成される。
データ処理装置は、単一のメモリ・トランザクションに関して、又は複数のメモリ・トランザクションに関してアクセス・アンダーサイズ条件を識別するように構成され得る。一実施例では、データ処理装置は、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らないバッファリングされた書き込みアクセス要求が、単一のメモリ・トランザクションにおいて実行されると、アクセス・アンダーサイズ条件を識別するように構成される。
いくつかの実施例では、メモリ・アクセス・バッファは、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らないバッファリングされた書き込みアクセス要求が、互いからの所定の分離未満で実行される別々のメモリ・トランザクションにおいて実行されると、アクセス・アンダーサイズ条件を識別するように構成される。
この所定の分離はいくつかの形式を取ることができ、たとえば、別々のメモリ・トランザクションのタイミング分離、又は一連のメモリ・トランザクションにおける通常の分離によって定義される。
一実施例では、別々のメモリ・トランザクションは、互いに連続して(back−to−back)実行される。言い換えれば、これらの別々のメモリ・トランザクションは、それらの間にさらなるメモリ・トランザクションが実行されることなしに実行される。
アクセス・アンダーサイズ条件は、データ処理装置のいくつかの異なる構成要素によって識別することができ、同様に、キャッシュ・ユニットに、データ処理装置のいくつかの異なる構成要素によるアクセス・アンダーサイズ条件に応じて、アロケーション・ポリシーを変更させることができるが、一実施例では、メモリ・アクセス・バッファは、アクセス・アンダーサイズ条件を識別するように構成され、メモリ・アクセス・バッファは、キャッシュ・ユニットに、アクセス・アンダーサイズ条件に応じてアロケーション・ポリシーを変更させるように構成される。
本発明の第2の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行するステップと、アロケーション・ポリシーに応じて、後続のアクセスのために、メモリからアクセスされたデータ項目のローカル・コピーを格納するステップと、メモリ・トランザクション・トリガ条件が満たされるまで、発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、1つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、メモリに関するメモリ・トランザクションを開始させるステップであって、メモリ・トランザクションが、1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる書き込み動作を実行するように制約されるステップと、バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するステップと、アロケーション・ポリシーが、アクセスされたデータ項目のローカル・コピーが格納されず、アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーが格納される書き込み割り当てポリシーに変更させるステップとを備える、データ処理の方法を提供する。
本発明の第3の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行するための手段と、アロケーション・ポリシーに応じて、後続のアクセスのために、メモリからアクセスされたデータ項目のローカル・コピーを格納するための手段と、メモリ・トランザクション・トリガ条件が満たされるまで、発行するための手段によって発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、1つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、メモリに関するメモリ・トランザクションを開始させるための手段であって、メモリ・トランザクションが、1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる書き込み動作を実行するように制約される、手段と、バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するための手段と、アロケーション・ポリシーが、アクセスされたデータ項目のローカル・コピーが格納されず、アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーが格納される書き込み割り当てポリシーに変更させるための手段とを備える、データ処理装置を提供する。
本発明を、例示のためだけに、添付の図面に示される本発明の実施例を参照してさらに説明する。
一実施例における、データ処理装置を概略的に示す図である。 一実施例における、データ処理装置を概略的に示す図である。 一実施例における、ストア・バッファ、及びキャッシュ・アロケーション・ポリシーにおける結果として生じる変更の例示的内容を概略的に示す図である。 一実施例における、ハード・ドライブ・メモリに接続されたデータ処理装置を概略的に示す図である。 一実施例における、NANDフラッシュ・メモリに接続されたデータ処理装置を概略的に示す図である。 一実施例の方法において行われる一連のステップを概略的に示す図である。 一実施例の方法において行われる一連のステップを概略的に示す図である。
図1は、一実施例における、データ処理装置10を概略的に示している。データ処理装置内のプロセッサ・ユニット12は、メモリ14内の指定されたメモリ・アドレスにデータ項目を書き込みすることを含む、データ処理作業を実行するように構成されている。プロセッサ・ユニット12は、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行することによって、データ項目を、メモリ14内の指定されたメモリ・アドレスに書き込みさせる。プロセッサ・ユニット12によって発行された書き込みアクセス要求は、ストア・バッファ16によって受信される。ストア・バッファ16は、書き込みアクセス要求がメモリ・トランザクションとして実行される前に、それらの書き込みアクセス要求を一時的にバッファリングする、いくつかのアクセス・スロット22を備える。ストア・バッファ16からのメモリ・トランザクションは、メモリ14へのシステム・バス(図示せず)を介して、バス・インターフェース・ユニット18を介して進む。データ処理装置は、プロセッサ・ユニットがそのデータ処理作業の一部として現在使用しているデータ項目のローカル・コピーを格納するように構成されたキャッシュ20も備え、したがって、メモリ14からこれらのデータ項目を取り出すことに付随する遅れを大幅に回避することができる。プロセッサ・ユニット12によるキャッシュ20の内容へのアクセスは、ストア・バッファ16によって仲介され、したがって、プロセッサ12によって発行された書き込みアクセス要求がストア・バッファ16によって受信されると、指定されたデータ項目が現在キャッシュ内に格納されているかどうかを決定するためにキャッシュ・ルックアップが開始される。キャッシュ20はいくつかのキャッシュ・ライン24を備え、キャッシュに格納されたデータ項目26は、一般的に、所与のキャッシュ・ライン24の比較的小さい割合だけを占める。
データ処理装置10は、デフォルトで、キャッシュ・ユニット20が非書き込み割り当てポリシーで動作するように構成されており、上述のキャッシュ・ルックアップが行われてキャッシュ・ミスが発生すると、プロセッサ12からストア・バッファ16によって受信された書き込みアクセス要求に応答して、データ項目がキャッシュ20に格納されず、メモリ14に直接書き込まれることを意味する。これは、同じデータ項目への後続のアクセスがプロセッサ・ユニット12によって行われた場合、より高速なアクセスのためにキャッシュで利用可能ではないことを意味するが、このデータ項目をキャッシュに格納することは、メモリ14から、データのキャッシュ・ライン全体の価値を取り出すことを備えるライン・フィル動作を含むので、バス・システムにより軽い負荷がかけられる。それにもかかわらず、本技法によるデータ処理装置10は、プロセッサ・ユニット12からストア・バッファ16によって受信された書き込みアクセス要求の性質に応じて、そのキャッシュ・アロケーション・ポリシーを動的に適応させるように構成される。以下の図面を参照してより詳細に説明されるように、これらの書き込みアクセス要求は監視され、適切な環境下で、キャッシュ・アロケーション・ポリシーは、データ項目のローカル・コピーがキャッシュ・ユニットに格納される、書き込み割り当てポリシーに切り替えられる。ストア・バッファ16によって受信される書き込みアクセス要求の監視は、いくつかの方法で実装されてよく、一般的に、図1に示されるアクセス・モニタ28を設けることによって示される。このアクセス・モニタ28は、ストア・バッファ16に関連付けられているものとして示されているが、この関連付けは機能的なものであり、アクセス・モニタ28はデータ処理装置10の別の構成要素を表すこともでき、又は、図2を参照して後述される実施例の場合は、アクセス・モニタ28はそれ自体がストア・バッファ16の一部であってもよいことが認識されるべきである。
図2は、一実施例におけるデータ処理装置の構成をより詳細に、概略的に示している。データ処理装置は図2でコア30によって表されており、それは(「複数のコア」32によって示されるように)いくつかのプロセッサ・コアのうちの1つであり、それぞれはコア30と同じ方法で構成されている。コア30は、実行ユニット34、ストア・バッファ36、キャッシュ38、及び(その周囲に)バス・インターフェース・ユニット40を備える。図1に示される実施例を参照して上述したように、図2のストア・バッファ36は、データ項目が指定されたメモリ・アドレスに書き込まれるべきである場合、実行ユニット34によって発行された書き込みアクセス要求を管理するために提供される。バス・インターフェース・ユニット40は、コア30とシステム・バス42との間にインターフェースを提供し、これは、この例では、英国、ケンブリッジのARM Ltdによって提供されるAXIバスである。やはりシステム・バス42に結合されているのはメモリ44であり、この例では、コア30に関連して提供される低遅れRAMであり、このメモリでは、データが比較的迅速にアクセスされ得る(システム内のメモリの他の例と比較して)。低遅れRAM44の記憶場所はバイト・アドレス指定可能であり、すなわち、データがバイト・レベルの粒度でメモリ44に格納され、したがって、データの個々のバイトがメモリ内でアドレス指定され得る(したがって、書き込み及び読み出しされ得る)。しかしながら、さらに、メモリ44は、32ビットのデータ・チャンク(すなわち、4バイトのブロック)に関連してエラー訂正コード(ECC:error correction code)を格納する。データに関連するこのECCの格納は、冗長性のレベル、ひいてはそのデータの保護を提供し、したがって格納されたデータ項目にエラーが発生すると(たとえば、粒子の衝突のために)、エラーがあまり広範囲ではない限り、検出及び/又は補正することができる。
メモリ44内のデータに関連するECCの格納は、ストア・バッファ36による書き込みアクセス要求の管理の結果も有し、その中で、実行ユニット34からストア・バッファ36によって受信される書き込みアクセス要求は、メモリ44内のわずか1つのバイトを指定することができるが、4バイト(32ビット)「チャンク」のデータに関連するECCの格納は、サブ・チャンク(すなわち、32ビットのチャンク内のすべての4バイトより少ない)を指定する書き込みアクセス要求は、それにもかかわらず、ECCはチャンク全体に関して決定されなければならないので、32ビットのチャンクのすべてを書き込みするメモリ・トランザクションによって実装されなければならないことを意味する。
ストア・バッファ36の全体的な制御は、制御ユニット46によって維持される。ストア・バッファ36は4つのアクセス・スロット48を備え、そのそれぞれは、ステート・マシン50に基づいて動作して、そのアクセス・スロットに割り当てられた書き込みアクセス要求のために指定されたアドレス52を保持するように構成されている。各アクセス・スロットは、最大で4つの32ビットのデータ・チャンクを保持することができる。実行ユニット34からストア・バッファ36によって受信される書き込みアクセス要求は、制御ユニット46によって管理され、具体的には、その書き込みアクセス要求に関連付けられるメモリ・アドレスに応じて、各受信された書き込みアクセス要求をアクセス・スロット48のうちの1つに割り当てる。アクセス・スロットのうちの1つにすでに格納されているメモリ・アドレスを指定する書き込みアクセス要求が受信されると、又は、少なくとも受信されたアドレスが、アクセス・スロットに格納されたアドレスによって表される範囲、及びアクセス・スロットが保持できる128ビット(4×32ビット)データ範囲内にある場合、後続の書き込みアクセス要求は、そのアクセス・スロットに蓄積され得る。任意のアクセス・スロットの現在の内容に関連しないメモリ・アドレスを指定する書き込みアクセス要求が受信されると、新しい書き込みアクセス要求がフリーのアクセス・スロットに割り当てられるか、又は、アクセス・スロットがフリーになるまでバッファリングされなければならない。したがって、各アクセス・スロットは、128ビットのデータ範囲(4チャンク)に関連する書き込みアクセス要求を蓄積するために役立つ。ストア・バッファ36内のアクセス・スロットは、メモリ・トランザクション・トリガ条件が満たされるまで書き込みアクセス要求の蓄積を継続し、その時点で、ストア・バッファ36は、メモリ44にアクセスするために、そのアクセス・スロットの内容を、バス・インターフェース・ユニット40及びシステム・バス42を介してメモリ・トランザクションとして実施させる。制御ユニット46は、各32ビット(4バイト)のデータのチャンクに関連してメモリ44に格納されたエラー訂正コード(ECC)を計算するように構成されたECC計算ユニット54も備える。そのような各データのチャンクに関連するECCの格納、及び具体的には、ECCは32ビット・チャンク(各個々のバイトとは反対に)に関して決定されるという事実は、ストア・バッファが実行する書き込みトランザクションは、完全な32ビット・チャンク全体に関していなければならず、チャンクの一部(サブ・チャンク)だけに関して実行することはできないことを意味する。その結果、メモリ・トランザクション・トリガ条件が満たされ、アクセス・スロットの内容が、この内容をメモリ44に書き込みするためにメモリ・トランザクションとして実施される状況では、そのアクセス・スロット内の4つの32ビット・チャンクのうちのいずれかが、部分的にのみ満たされる場合(すなわち、チャンク内のすべての4バイト未満が、書き込まれるよう指定される)、このメモリ・トランザクションは、読み出し−修正−書き込みトランザクションとして実行され、対応するチャンクがまずメモリ44から読み出しされ、書き込まれるべき新しいサブ・チャンクが、メモリから読み出しされたチャンクに統合され、新しいECCがECC計算ユニット54によって決定され、次いで、関連付けられる更新されたECCを有する完全なチャンクがメモリ44に書き込まれる。反対に、アクセス・スロットの内容が、そのアクセス・スロットの内容がメモリ・トランザクションとして書き出される時に唯一の完全なデータのチャンクである場合、このメモリ・トランザクションは、指定されたチャンク(ユニット54によって計算された、関連付けられるECCを有する)がメモリ44に書き込まれる、直接書き込みトランザクションとして実装され得る。
ストア・バッファ36の動作の全体的な管理の一部として、制御ユニット46は、実行されているメモリ・アクセスを監視する(及び、図1に示されるアクセス・モニタ28の役割を担う)。書き込みアクセス要求が、実行ユニット34、並びに上述のアクセス・スロット48の使用の管理から受信されると、制御ユニット46は、書き込みアクセス要求で指定されたデータ項目が、キャッシュ38のキャッシュ・ラインに現在格納されているかどうかを決定するために、キャッシュ38内で、キャッシュ・ルックアップを実行させる。キャッシュ38は、キャッシュの動作を制御する制御ユニット56を備える。データ項目がキャッシュ38に現在格納されていない場合(キャッシュ・ミス)、デフォルトで、コア30が、キャッシュ38のキャッシュ・ラインにこのデータをポピュレートせずに、指定されたデータ項目をメモリ44に書き込みするように構成される。言い換えれば、一般的に、キャッシュ38は、非書き込みアロケーション・ポリシーに従って動作するように構成されている。この構成は、一般的に、指定されたデータ項目を含む64バイトのキャッシュ・ライン全体をポピュレートするためにライン・フィル動作を実行することに関連付けられるさらなるバス・トランザクションを回避するので、低遅れRAM44に関連するコア30の動作にとって好ましい。この方法でバス・トランザクションの数を減らすことは、低遅れ(すなわち、高速の)RAMを、コア30のデータ記憶場所として使用することをサポートし、したがって、保留中のバス・トランザクションのキューのために実行ユニット34が機能停止する可能性を下げる。
ストア・バッファ36の制御ユニット46は、書き込みアクセス要求、及びより具体的には、ストア・バッファ36の所与のアクセス・スロット48における書き込みアクセス要求の蓄積に起因するメモリ・トランザクションの「占有」を監視するようにさらに構成される。制御ユニット46は、複数のサブ・チャンク・データ項目が指定されるメモリ・トランザクションが行われる時の状況を識別するように構成される。言い換えれば、所与のアクセス・スロットで指定され得る4つの32ビット・チャンクのうちの複数が、実際には、そのチャンクの一部だけが書き込まれるよう指定する場合、制御ユニット46は、これを「アクセス・アンダーサイズ条件」として識別する。アクセス・アンダーサイズ条件が制御ユニット46によって識別されると、キャッシュ38(及び、具体的には、その制御ユニット56)に、キャッシュ・ユニットが現在非書き込み割り当てポリシーで動作している場合、キャッシュ・ユニットは書き込み割り当てポリシーでの動作に切り替えられるべきであるとシグナリングする。書き込み割り当てポリシーでキャッシュを動作することは、キャッシュに対応するデータ項目をポピュレートするためにライン・フィル動作がさらに行われることを意味するが、複数のサブ・チャンク・書き込み動作が実行される場合、対応するライン・フィル動作は、そうではない場合よりも負担が軽いことが分かっているので、ストア・バッファ36の制御ユニット46の動作のこの構成は価値があると判断される。これは、これらのサブ・チャンク書き込み動作が、ストア・バッファ36による読み出し−修正−書き込み動作として処理され、したがって具体的には、これらのデータ項目に関する読み出しトランザクションはすでに実行されており、この文脈では、これらのデータ項目をキャッシュ38内で引き続き利用可能にする利益は、これらのサブ・チャンク・データ項目をキャッシュにポピュレートするために、関連するキャッシュ・ラインの残りの部分を取り出すことのさらなる負担を上回るという事実によるものである。
ストア・バッファ36の制御ユニット46は、単一のアクセス・スロット内の複数のサブ・チャンク・データ項目を識別するだけでなく、複数のアクセス・スロット48内のバッファリングされた書き込みアクセス要求が、サブ・チャンク・データ項目を指定する場合、アクセス・アンダーサイズ条件も識別できるように構成される。異なるアクセス・スロットから生じる多くのトランザクションが次々に行われる場合があるので、制御ユニット46は、ストア・バッファ36によって開始された最近のメモリ・トランザクションの記録、及び、アクセス・スロットごとのそれらのメモリ・トランザクションが、少なくとも1つのサブ・チャンク・データ項目を備えるかどうかを維持するように特に構成された履歴ストレージ58を備えている。したがって、制御ユニット46は、2つの異なるアクセス・スロット48から生じる2つのトランザクションが行われ、それぞれがサブ・チャンク・データ項目を備え、メモリ・トランザクションが連続する場合、すなわち、さらなるメモリ・トランザクションによって分離されない場合、アクセス・アンダーサイズ条件を識別するように構成されている。
ストア・バッファ36は、各コアに関連して提供されるキャッシュ・ユニット38間のキャッシュ・コヒーレンシを維持するために、データ処理システム内のさらなるコア32の他のストア・バッファと通信するようにさらに構成される。これは、当業者が精通している方法であり、本明細書では、簡潔にするためにこの通信のさらなる詳細は省略される。
図3は、ストア・バッファ36の制御ユニット46が、キャッシュ・ユニット38にアロケーション・ポリシーを変更させる2つの状況に対応する、ストア・バッファ36の2つのアクセス・スロットの内容を概略的に示している。図3の上部は、2つのアクセス・スロット(WBUF0及びWBUF1)が、それぞれ個々に複数のサブ・チャンク書き込みを備える状況を概略的に示しており、実際には、図示された例では、各アクセス・スロットで利用可能な4つの32ビット・チャンクのそれぞれは、チャンクごとに実行されるべきである単一のバイト・サブ・チャンク書き込みに対応する単一の有効なバイトによってのみポピュレートされている。したがって、ストア・バッファ36の制御ユニット46は、これらが連続して行われると仮定すると、アクセス・スロットのアクセス・アンダーサイズ条件を個別に、又は、実際には、各アクセス・スロットによって開始されたメモリ・トランザクションのアクセス・アンダーサイズ条件を識別する。その結果、制御ユニット46は、キャッシュ・ユニット38に、引き続き書き込みアロケーション・ポリシーで動作させる(すでにそのように行っていない場合)。図3は、ストア・バッファ36の制御ユニット46が、キャッシュ・ユニット38に、書き込み割り当てポリシーによる動作から、非書き込みアロケーション・ポリシーでの動作に切り替えさせる状況をさらに示している。これは、制御ユニット46が、アクセス・スロットの内容に基づいて実行されるべきメモリ・トランザクションが、完全なチャンク書き込みだけを備える、すなわち、実行されるべきサブ・チャンク書き込みがないと識別する場合に生じる。図3の下部は、WBUF0とWBUF1の両方のアクセス・スロットの完全なチャンク書き込み構成を示している。
上述の実施例では、メモリへの書き込みトランザクションは4バイトのデータのチャンクに関して行われなければならないという制約は、メモリ44内の各32ビット・チャンクに関連して格納されたECCのためである。しかしながら、本技法はそのようなECCベースの構成に決して限定されず、また、ストア・バッファのアクセス・スロットから開始された書き込みトランザクションは、データ項目のブロック(すなわち、複数の個々のアドレス指定可能な記憶場所に広がる、対応するメモリ・アドレスを有するグループ)に関して行われなければならないという制約は、様々なシステム構成の特徴に起因する場合があるということを理解することは重要である。図4A及び図4Bは、この場合の2つのデータ処理システムを概略的に示している。図4Aに示される実例では、データ処理装置10(及び、したがって図1に関して上述のように構成される)は、ハード・ドライブ60として組み込まれたメモリにアクセスする。このハード・ドライブ60の構成は、ハード・ドライブ60によって受信されたアクセス要求が512バイトのセクタ62内のデータにアクセスするよう制約されるというものであり、書き込みアクセス要求が512バイト未満のセクタに関連して実行ユニット12によって発行される場合、それでも「完全な」512バイトの書き込み動作が実行されなければならないことを意味する。同様に、図4Bは、別の実施例を概略的に示しており、データ処理装置10によるメモリ・アクセスがNANDフラッシュ・メモリ64へのアクセスであるこの例では、データは2048バイト・ページ66に書き込みされなければならないという制約が存在する。
図5A及び図5Bは、一実施例の方法による、データ処理装置内で行われる一連のステップを概略的に示している。ステップ100で、指定されたデータ項目を指定されたメモリ・アドレスに書き込みしようとする書き込みアクセス要求が、プロセッサによって発行される。この書き込みアクセス要求は、ストア・バッファによって受信され、次いで、ステップ102で、ストア・バッファの利用可能なアクセス・スロット内に一時的にバッファリングされる。ストア・バッファは、キャッシュ・ルックアップ手順を開始させて、ステップ104で、キャッシュ・ヒットが発生したかどうかが決定される。キャッシュ・ヒットが発生した場合、フローは、指定されたデータ項目を含むキャッシュ・エントリが修正されて、ストア・バッファが、この修正をメモリに書き込みスルーするために書き込みアクセス要求の処理を継続する、ステップ106を介して進む。その後、又はステップ104でキャッシュ・ミスが発生した場合、ステップ108で、このアクセス・スロットのためにメモリ・トランザクション・トリガ条件が満たされるかどうかが決定される。言い換えれば、ストア・バッファが、このアクセス・スロットが排出されるべきかどうかを決定する。当業者によって、この条件は、当業者が精通しているいくつかの理由で満たされ得ることが認識されるので、本明細書では、簡潔にするためにさらなる説明は省略される。メモリ・トランザクション・トリガ条件が満たされない場合、フローはストア・バッファが待機するステップ110に進み、ステップ112で、プロセッサから別の新しい書き込みアクセス要求が受信されたかどうかが決定される。そのような新しい書き込みアクセス要求が受信されない場合、及びメモリ・トランザクション・トリガ条件が満たされない場合、フローはステップ108、ステップ110、ステップ112のループを巡回する。プロセッサから別の新しい書き込みアクセス要求が受信されると、フローはステップ102に進み、この新しい書き込みアクセス要求が、ストア・バッファの利用可能なスロット内にバッファリングされる。具体的には、新しい書き込みアクセス要求が、ストア・バッファ内のすでにバッファリングされた書き込みアクセス要求に十分に近いメモリ・アドレスに関連する場合、新しい書き込みアクセス要求は、そのアクセス・スロットに格納された、以前に受信された書き込みアクセス要求から、適切なオフセットで、同じアクセス・スロット内にバッファリングされる。
ステップ108で、メモリ・トランザクション・トリガ条件がアクセス・スロットのために満たされたことが一旦決定されると、次いでステップ114で、メモリ・トランザクションが複数の完全ではないチャンク(non−full−chunk)・アクセスを備えるかどうかが決定される。完全ではないチャンク・アクセスを備えない場合、フローはステップ116に進み、必要なメモリ・トランザクションにサブ・チャンク・アクセスが1つだけあるかどうかが決定される。そうではない場合、すなわち、必要なメモリ・トランザクションは完全なチャンク・書き込みアクセスだけを備える場合、ステップ118で、書き込みメモリ・トランザクションが実行されて、キャッシュ・ユニットが非書き込みアロケーション・ポリシーに切り替えられる(すでにこのポリシーに従って動作していない場合)。その後、フローはステップ110に戻り、上述のように、プロセッサからの新しい書き込みアクセス要求が処理される。
ステップ114に戻ると、ここで、メモリ・トランザクションに複数の完全ではないチャンク・アクセスがあると決定されると、次いでステップ120で、必要なメモリ・トランザクションが、指定された複数の完全ではないチャンクを備える完全なデータのチャンクがまずメモリから読み出しされ、バッファリングされた書き込みアクセス要求内の指定されたデータ項目が、メモリから取り出されたデータの完全なチャンクに統合され、またこれらの4つのチャンクに関連付けられるECCが更新され、したがって修正された完全なデータのチャンクがメモリに書き戻しされる、読み出し−修正−書き込み動作として実行される。その後、ステップ122で、現在のキャッシュ・アロケーション・ポリシーが、非書き込みアロケートかどうかが決定される。この場合、次いでステップ124で、キャッシュ・ユニットがアロケーション・ポリシーを書き込みアロケートに切り替えられ、上述のように、フローはステップ110を介して進む。代替で、ステップ122で、キャッシュ・アロケーション・ポリシーが非書き込みアロケートではない(すなわち、すでに書き込みアロケートである)と決定されると、フローはステップ110に直接進む。
次にステップ116に戻ると、メモリ・トランザクションに、指定されたサブ・チャンク・アクセスが1つだけあると決定されると、フローはステップ126に進み、メモリ・トランザクションは、1つの指定されたサブ・チャンクに対応する完全なチャンクがまずメモリから読み出しされ、指定されたデータ項目が、完全なチャンクに統合され、完全なチャンクに対応するECCが決定され、したがって修正された完全なチャンクがメモリに書き戻しされる、読み出し−修正−書き込み動作として実行される。その後、ステップ128で、他のアクセス・スロットによって開始されたものを含む、ストア・バッファによって実行された以前のメモリ・トランザクションに(少なくとも)1つのサブ・チャンク・アクセスがあったかどうかが決定される。少なくとも1つのサブ・チャンク・アクセスがなかった場合、フローは直接ステップ110に進む。しかしながら、少なくとも1つのサブ・チャンク・アクセスがあった場合、フローは、キャッシュ・アロケーションを必要に応じて書き込みアロケートに切り替えるために、上述のように、ステップ122、及び場合によってはステップ124を介して進む。
全体的に要約すると、プロセッサ・ユニットが、メモリ・アクセス・バッファによってバッファリング及び処理されるメモリの書き込みアクセス要求を発行するように構成される、データ処理装置及びデータを処理する方法が開示される。キャッシュ・ユニットは、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、アクセスされたデータ項目をキャッシュするように構成される。メモリ・トランザクションは、バッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、対応する書き込み動作によって書き込みされなければならないように実行されるよう制約される。バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、及びキャッシュ・ユニットが非書き込み割り当てポリシーで動作するように構成される場合、データ処理装置は、キャッシュ・ユニットに、引き続き書き込み割り当てポリシーで動作させるように構成される。
本明細書では特定の実施例を説明してきたが、本発明はそれに限定されず、それへの多くの修正及び追加が本発明の範囲内で行われてよいことが理解されよう。たとえば、以下の従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなしに独立請求項の特徴を伴って実施され得る。
10 データ処理装置
12 プロセッサ・ユニット
12 プロセッサ
14 メモリ
16 ストア・バッファ
18 バス・インターフェース・ユニット
20 キャッシュ
22 アクセス・スロット
24 キャッシュ・ライン
26 データ項目
28 アクセス・モニタ
30 コア
32 複数のコア
34 実行ユニット
36 ストア・バッファ
38 キャッシュ・ユニット
38 キャッシュ
40 バス・インターフェース・ユニット
42 システム・バス
44 メモリ
46 制御ユニット
48 アクセス・スロット
50 ステート・マシン
52 指定されたアドレス
54 ECC計算ユニット
56 制御ユニット
58 履歴ストレージ
60 ハード・ドライブ
62 512バイトのセクタ
64 NANDフラッシュ・メモリ
66 2048バイト・ページ

Claims (19)

  1. データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス及び前記データ項目を指定する書き込みアクセス要求を発行するように構成されたプロセッサ・ユニットと、
    キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、前記プロセッサ・ユニットによる後続のアクセスのために、前記メモリから、アクセスされたデータ項目のローカル・コピーを格納するように構成された前記キャッシュ・ユニットと、
    メモリ・トランザクション・トリガ条件が満たされるまで、前記プロセッサ・ユニットによって発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記1つ又は複数のバッファリングされた書き込みアクセス要求を実行する、前記メモリに関するメモリ・トランザクションを開始させるように構成されたメモリ・アクセス・バッファとを備えるデータ処理装置であって、
    前記メモリ・トランザクションが、前記1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するよう制約され、
    前記データ処理装置が、前記バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するように構成され、
    前記キャッシュ・ユニットが、前記アクセスされたデータ項目の前記ローカル・コピーが前記キャッシュ・ユニットに格納されず、また前記アクセス・アンダーサイズ条件が満たされる非書き込み割り当てポリシーとして、前記アロケーション・ポリシーで動作するように構成される場合、データ処理装置が、前記キャッシュ・ユニットに、前記アクセスされたデータ項目の前記ローカル・コピーが前記キャッシュ・ユニットに格納される書き込み割り当てポリシーとして、引き続き前記アロケーション・ポリシーで動作するように構成される、前記データ処理装置。
  2. 前記キャッシュ・ユニットが、前記後続のアクセスによって前記アクセスされたデータ項目の前記ローカル・コピーの修正が、前記メモリ内の対応するオリジナル・データ項目の修正も生じさせる、書き込みスルーモードで動作するように構成される、請求項1に記載のデータ処理装置。
  3. 前記メモリ・アクセス・バッファが、前記メモリ・アクセス・トランザクションが実行されるべき前記1つ又は複数のバッファリングされた書き込みアクセス要求が、少なくとも1つの所定の範囲のメモリ・アドレス内にすべてのメモリ・アドレスを備えるとは限らない前記少なくとも1つの所定の範囲のメモリ・アドレス内のメモリ・アドレスを指定する場合、前記メモリ・アクセス・トランザクションに、前記少なくとも1つの所定の範囲のメモリ・アドレスによって表示される少なくとも1つの拡張されたデータ項目を取り出すステップと、前記バッファリングされた書き込みアクセス要求において指定された前記1つ又は複数のデータ項目を、前記取り出された少なくとも1つの拡張されたデータ項目に統合させるステップと、前記修正された少なくとも1つの拡張されたデータ項目を前記メモリに書き戻しするステップとを備えさせるように構成される、請求項1又は2に記載のデータ処理装置。
  4. 前記キャッシュ・ユニットに、前記書き込み割り当てポリシーとして引き続き前記アロケーション・ポリシーで動作させた後で、及び前記メモリ・トランザクション・トリガ条件が満たされた場合、メモリ・アクセス・トランザクションが実行されるべき、前記バッファリングされた書き込みアクセス要求が、前記指定されたメモリ・アドレスがある少なくとも1つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定すると、アクセス・フル・サイズ条件を識別するように構成され、前記アクセス・フル・サイズ条件が満たされると、前記メモリ・アクセス・バッファが、前記キャッシュ・ユニットに、前記非書き込み割り当てポリシーとして前記アロケーション・ポリシーでの動作に切り替えさせるように構成される、請求項1から3までのいずれか一項に記載のデータ処理装置。
  5. 前記キャッシュ・ユニットが、まず前記非書き込み割り当てポリシーとして前記アロケーション・ポリシーで動作するように構成される、請求項1から4までのいずれか一項に記載のデータ処理装置。
  6. データ項目が、関連付けられるエラー訂正コードを有する前記メモリに格納され、前記所定の範囲のメモリ・アドレスが、前記関連付けられるエラー訂正コードを更新するために前記メモリから読み出される必要があるユニット・データ項目サイズによって決定される、請求項1から5までのいずれか一項に記載のデータ処理装置。
  7. 前記メモリ・トランザクションに含めるための更新されたエラー訂正コード値を決定するように構成されたエラー訂正コード決定ユニットをさらに備える、請求項6に記載のデータ処理装置。
  8. 前記メモリ・アクセス・バッファが、前記エラー訂正コード決定ユニットを備える、請求項7に記載のデータ処理装置。
  9. 前記所定の範囲のメモリ・アドレスが、前記メモリに関する前記メモリ・トランザクションのユニット・データ・サイズによって決定される、請求項1から5までのいずれか一項に記載のデータ処理装置。
  10. 前記メモリ・アクセス・バッファがアクセス・スロットを備え、前記アクセス・スロットが、前記プロセッサ・ユニットによって発行された書き込みアクセス要求を、前記アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してバッファリングするように構成される、請求項1から9までのいずれか一項に記載のデータ処理装置。
  11. 前記アクセス・スロットが、前記キャッシュ・ライン・サイズ未満のサイズを有するように構成される、請求項10に記載のデータ処理装置。
  12. 前記メモリ・アクセス・バッファが、複数のアクセス・スロットを備え、各アクセス・スロットは、前記アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関して前記プロセッサ・ユニットによって発行された書き込みアクセス要求をバッファリングするように構成される、請求項1から11までのいずれか一項に記載のデータ処理装置。
  13. 複数のアクセス・スロットでバッファリングされた前記複数の書き込みアクセス要求に関して前記アクセス・アンダーサイズ条件を識別するように構成される、請求項12に記載のデータ処理装置。
  14. 少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない前記バッファリングされた書き込みアクセス要求が、単一のメモリ・トランザクションにおいて実行されると、前記アクセス・アンダーサイズ条件を識別するように構成される、請求項1から13までのいずれか一項に記載のデータ処理装置。
  15. 前記メモリ・アクセス・バッファが、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない前記バッファリングされた書き込みアクセス要求が、互いからの所定の分離未満で実行される別々のメモリ・トランザクションにおいて実行されると、前記アクセス・アンダーサイズ条件を識別するように構成される、請求項12又は請求項13に記載のデータ処理装置。
  16. 前記別々のメモリ・トランザクションが、互いに連続して実行される、請求項15に記載のデータ処理装置。
  17. 前記メモリ・アクセス・バッファが、前記アクセス・アンダーサイズ条件を識別するように構成され、前記メモリ・アクセス・バッファが、前記キャッシュ・ユニットに、前記アクセス・アンダーサイズ条件に応じてアロケーション・ポリシーを変更させるように構成される、請求項1から16までのいずれか一項に記載のデータ処理装置。
  18. データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス、及び前記データ項目を指定する書き込みアクセス要求を発行するステップと、
    アロケーション・ポリシーに応じて、後続のアクセスのために、前記メモリからアクセスされたデータ項目のローカル・コピーを格納するステップと、
    メモリ・トランザクション・トリガ条件が満たされるまで、発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記1つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、前記メモリに関するメモリ・トランザクションを開始させるステップであって、前記メモリ・トランザクションが、前記1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するように制約される、ステップと、
    前記バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するステップと、
    前記アロケーション・ポリシーが、前記アクセスされたデータ項目の前記ローカル・コピーが格納されず、前記アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、前記アロケーション・ポリシーを、前記アクセスされたデータ項目の前記ローカル・コピーが格納される書き込み割り当てポリシーに変更させるステップと、を備える、データ処理の方法。
  19. データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス、及び前記データ項目を指定する書き込みアクセス要求を発行するための手段と、
    アロケーション・ポリシーに応じて、後続のアクセスのために、前記メモリからアクセスされたデータ項目のローカル・コピーを格納するための手段と、
    メモリ・トランザクション・トリガ条件が満たされるまで、発行するための前記手段によって発行された1つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記1つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、前記メモリに関するメモリ・トランザクションを開始させるための手段であって、前記メモリ・トランザクションが、前記1つ又は複数のバッファリングされた書き込みアクセス要求によって指定された1つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するように制約される、手段と、
    前記バッファリングされた書き込みアクセス要求が、少なくとも2つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するための手段と、
    前記アロケーション・ポリシーが、前記アクセスされたデータ項目の前記ローカル・コピーが格納されず、前記アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、前記アロケーション・ポリシーを、前記アクセスされたデータ項目の前記ローカル・コピーが格納される書き込み割り当てポリシーに変更させるための手段と、を備える、データ処理装置。
JP2015108470A 2014-06-05 2015-05-28 データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応 Active JP6514569B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1409963.4A GB2526849B (en) 2014-06-05 2014-06-05 Dynamic cache allocation policy adaptation in a data processing apparatus
GB1409963.4 2014-06-05

Publications (2)

Publication Number Publication Date
JP2015232879A true JP2015232879A (ja) 2015-12-24
JP6514569B2 JP6514569B2 (ja) 2019-05-15

Family

ID=51214749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015108470A Active JP6514569B2 (ja) 2014-06-05 2015-05-28 データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応

Country Status (4)

Country Link
US (1) US9836403B2 (ja)
JP (1) JP6514569B2 (ja)
CN (1) CN105159844B (ja)
GB (1) GB2526849B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019515377A (ja) * 2016-04-18 2019-06-06 アマゾン・テクノロジーズ・インコーポレーテッド 分散型データストアのバージョン化された階層型データ構造
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US11086531B2 (en) 2017-03-30 2021-08-10 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170255569A1 (en) * 2016-03-01 2017-09-07 Qualcomm Incorporated Write-allocation for a cache based on execute permissions
US10423446B2 (en) * 2016-11-28 2019-09-24 Arm Limited Data processing
US10866902B2 (en) * 2016-12-28 2020-12-15 Intel Corporation Memory aware reordered source
GB2562062B (en) * 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
US20190065373A1 (en) * 2017-08-30 2019-02-28 Micron Technology, Inc. Cache buffer
US11188234B2 (en) 2017-08-30 2021-11-30 Micron Technology, Inc. Cache line data
US20190095329A1 (en) * 2017-09-27 2019-03-28 Intel Corporation Dynamic page allocation in memory
US10534721B2 (en) 2017-10-23 2020-01-14 Advanced Micro Devices, Inc. Cache replacement policy based on non-cache buffers
KR102421149B1 (ko) 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200104601A (ko) 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102456173B1 (ko) * 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10409726B2 (en) 2017-10-30 2019-09-10 Micron Technology, Inc. Dynamic L2P cache
TWI681293B (zh) * 2018-01-10 2020-01-01 瑞昱半導體股份有限公司 暫存記憶體處理方法、暫存記憶體程式與記憶裝置
US10642521B2 (en) * 2018-05-11 2020-05-05 International Business Machines Corporation Scaling distributed queues in a distributed storage network
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
US10650889B1 (en) * 2018-12-14 2020-05-12 Samsung Electronics Co., Ltd. Energy efficient phase change random access memory cell array write via controller-side aggregation management
CN112559389A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 存储控制装置、处理装置、计算机系统和存储控制方法
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20210066631A (ko) 2019-11-28 2021-06-07 삼성전자주식회사 메모리에 데이터를 기입하기 위한 장치 및 방법
CN114616552A (zh) * 2019-11-29 2022-06-10 华为技术有限公司 缓存存储器和分配写操作的方法
TWI719745B (zh) * 2019-12-09 2021-02-21 瑞昱半導體股份有限公司 記憶體資料存取裝置及其方法
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11755476B2 (en) 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
CN114691571B (zh) * 2020-12-28 2024-05-28 上海寒武纪信息科技有限公司 数据处理方法、重排序缓存器及互联设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05502123A (ja) * 1989-09-11 1993-04-15 エルジー・セミコン・カンパニー・リミテッド キャッシュ/メインメモリのコンシステンシを維持するための装置及び方法
JPH07152650A (ja) * 1993-11-30 1995-06-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US20070079070A1 (en) * 2005-09-30 2007-04-05 Arm Limited Cache controller
JP2010086496A (ja) * 2008-10-03 2010-04-15 Nec Corp キャッシュメモリを備えるベクトル計算機システム、及びその動作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572660A (en) * 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
US7401177B2 (en) * 2004-04-19 2008-07-15 Sony Corporation Data storage device, data storage control apparatus, data storage control method, and data storage control program
KR101472967B1 (ko) * 2007-12-14 2014-12-16 삼성전자주식회사 라이트 백 동작을 수행하는 캐시 메모리, 이의 동작 방법, 및 이를 포함하는 시스템
JP5157424B2 (ja) * 2007-12-26 2013-03-06 富士通セミコンダクター株式会社 キャッシュメモリシステム及びキャッシュメモリの制御方法
US8949541B2 (en) * 2008-12-08 2015-02-03 Nvidia Corporation Techniques for evicting dirty data from a cache using a notification sorter and count thresholds
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
CN103150136B (zh) * 2013-03-25 2014-07-23 中国人民解放军国防科学技术大学 基于ssd的大容量缓存中的lru策略实现方法
US20160055095A1 (en) * 2013-03-28 2016-02-25 Hewlett-Packard Development Company, L.P. Storing data from cache lines to main memory based on memory addresses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05502123A (ja) * 1989-09-11 1993-04-15 エルジー・セミコン・カンパニー・リミテッド キャッシュ/メインメモリのコンシステンシを維持するための装置及び方法
JPH07152650A (ja) * 1993-11-30 1995-06-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US20070079070A1 (en) * 2005-09-30 2007-04-05 Arm Limited Cache controller
JP2010086496A (ja) * 2008-10-03 2010-04-15 Nec Corp キャッシュメモリを備えるベクトル計算機システム、及びその動作方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019515377A (ja) * 2016-04-18 2019-06-06 アマゾン・テクノロジーズ・インコーポレーテッド 分散型データストアのバージョン化された階層型データ構造
US11157517B2 (en) 2016-04-18 2021-10-26 Amazon Technologies, Inc. Versioned hierarchical data structures in a distributed data store
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US11086531B2 (en) 2017-03-30 2021-08-10 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures
US11308123B2 (en) 2017-03-30 2022-04-19 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US11550763B2 (en) 2017-03-30 2023-01-10 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US11860895B2 (en) 2017-03-30 2024-01-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures

Also Published As

Publication number Publication date
CN105159844A (zh) 2015-12-16
GB2526849B (en) 2021-04-14
JP6514569B2 (ja) 2019-05-15
US20150356019A1 (en) 2015-12-10
GB201409963D0 (en) 2014-07-16
CN105159844B (zh) 2020-06-09
US9836403B2 (en) 2017-12-05
GB2526849A (en) 2015-12-09

Similar Documents

Publication Publication Date Title
JP6514569B2 (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
US11803486B2 (en) Write merging on stores with different privilege levels
US20200264980A1 (en) Apparatus and method of handling caching of persistent data
US8495301B1 (en) System and method for scatter gather cache processing
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
US10331568B2 (en) Locking a cache line for write operations on a bus
JPS61156346A (ja) 記憶階層の先取り装置
US10157148B2 (en) Semiconductor device configured to control a wear leveling operation and operating method thereof
JP2017527023A (ja) 不揮発性メモリへの書き込み操作
US5920889A (en) Apparatus and method for write miss processing in a copy-back data cache with an allocating load buffer and a non-allocating store buffer
JP7376019B2 (ja) 命令キャッシュにおけるプリフェッチの強制終了及び再開
US9367467B2 (en) System and method for managing cache replacements
US11216379B2 (en) Fast cache loading with zero fill
US7234022B2 (en) Cache accumulator memory for performing operations on block operands
US20030115416A1 (en) Cache accumulator memory with an associativity mechanism
JPH02300960A (ja) データ事前取出し方法およびマルチプロセッサ・システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190313

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190412

R150 Certificate of patent or registration of utility model

Ref document number: 6514569

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