JP2017527023A - 不揮発性メモリへの書き込み操作 - Google Patents

不揮発性メモリへの書き込み操作 Download PDF

Info

Publication number
JP2017527023A
JP2017527023A JP2017504748A JP2017504748A JP2017527023A JP 2017527023 A JP2017527023 A JP 2017527023A JP 2017504748 A JP2017504748 A JP 2017504748A JP 2017504748 A JP2017504748 A JP 2017504748A JP 2017527023 A JP2017527023 A JP 2017527023A
Authority
JP
Japan
Prior art keywords
memory
write
instruction
processor core
stored
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
JP2017504748A
Other languages
English (en)
Other versions
JP6684266B2 (ja
Inventor
ガッサン サイーディ、アリ
ガッサン サイーディ、アリ
ロイ グリセンスウェイト、リチャード
ロイ グリセンスウェイト、リチャード
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
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 エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2017527023A publication Critical patent/JP2017527023A/ja
Application granted granted Critical
Publication of JP6684266B2 publication Critical patent/JP6684266B2/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

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

Abstract

データを処理するための装置及びデータ処理の方法が提供される。本装置内のプロセッサ・コアは、データ項目を不揮発性メモリに書き込む書き込み操作を含む、命令シーケンスに応答してデータ処理操作を遂行する。ライトバック・キャッシュは、プロセッサ・コアによりメモリから取り出され、且つメモリに書き込まれるデータ項目のローカル・コピーを格納する。プロセッサ・コアにより始動される書き込み操作の表示を格納する記憶ユニットが提供され、プロセッサ・コアは、書き込み操作の対象であり、そのための表示が記憶ユニットに格納されるデータ項目のローカル・コピーをライトバック・キャッシュからメモリへとはき出しさせることにより終了命令に応答するように構成される。次いで、記憶ユニットに格納された書き込み操作の表示が、消去される。

Description

本開示は、データ処理装置に関する。より詳細には、本開示は、ライトバック・キャッシュを有するデータ処理装置に関する。
データ処理装置によってデータ処理操作されるデータ項目が格納される不揮発性メモリへのアクセスを、データ処理装置に提供することが知られている。不揮発性メモリであって、制御された再起動が原因であれ、又は予期しない事象が原因であれ、データ処理システムへの電力が中断され且つ復活された後、この不揮発性メモリの内容は、永続的である。
データ処理装置のプロセッサに関連したライトバック・キャッシュをデータ処理装置に提供することも知られており、ライトバック・キャッシュ内には、メモリから取り出され、メモリに書き出されるデータ項目のローカル・コピーが一時的に格納される。キャッシュはライトバック構成を有しているので、キャッシュ内に格納され、修正されるデータ項目は、必要な場合にのみ、例えばデータ項目を保持するキャッシュ・ラインがキャッシュから追い出されるため、メモリに書き出される。
しかしながら、ライトバック・キャッシュ及び不揮発性メモリへのアクセスの両者を提供することは、困難さを呈し得る。ライトバック・キャッシュ及び不揮発性メモリを備える装置を改善するための技術が、本明細書で説明される。
第1の構成例によれば、命令シーケンスに応答してデータ処理操作を遂行可能であり、データ処理操作が、メモリからデータを取り出す読み込み操作及びメモリにデータ項目を書き込む書き込み操作を含み、メモリが、不揮発性メモリである、プロセッサ・コアと、命令シーケンスを実行する場合にプロセッサ・コアによりメモリから取り出され、メモリに書き込まれるデータ項目のローカル・コピーを格納可能なライトバック・キャッシュと、プロセッサ・コアにより始動される書き込み操作の表示(indication)を格納可能な記憶ユニットとを備え、プロセッサ・コアが、プロセッサ・コアにより書き込み操作の対象であり、そのための表示が記憶ユニットに格納されるデータ項目のローカル・コピーをライトバック・キャッシュからメモリへとはき出させること、及び記憶ユニットに格納された書き込み操作の表示を消去すること、により命令シーケンス内の終了命令に応答可能である、データ処理のための装置が提供される。
第2の構成例によれば、命令シーケンスに応答してデータ処理操作を遂行するステップであって、データ処理操作が、メモリからデータ項目を取り出す読み込み操作、及びメモリにデータ項目を書き込む書き込み操作を含み、メモリが不揮発性メモリである、ステップと、命令シーケンスを実行する場合にメモリから取り出され、メモリに書き込まれるデータ項目のローカル・コピーをライトバック・キャッシュ内に格納するステップと、データ処理操作を遂行するステップにおいて始動された書き込み操作の表示を格納するステップと、書き込み操作の対象であり、そのための表示がローカル・コピーを格納するステップにおいて格納されたデータ項目のローカル・コピーを、ライトバック・キャッシュからメモリへとはき出させるステップ、及び表示を格納するステップにおいて、格納された書き込み操作の表示を消去するステップにより命令シーケンス内の終了命令に応答するステップと、を含むデータ処理の方法が提供される。
第3の構成例によれば、命令シーケンスに応答してデータ処理操作を遂行するための手段であって、データ処理操作が、データ項目をメモリから取り出す読み込み操作及びデータ項目をメモリに書き込む書き込み操作を含み、メモリが不揮発性メモリである、データ処理操作を遂行するための手段と、命令シーケンスを実行する場合に、メモリから取り出され、メモリに書き込まれるデータ項目のローカル・コピーを格納するための手段であって、メモリに関するライトバック構成を有する、格納するための手段と、データ処理操作を遂行するための手段により始動される書き込み操作の表示を格納するための手段と、書き込み操作の対象であり、そのための表示がローカル・コピーを格納するための手段により格納されたデータ項目のローカル・コピーを、ライトバック・キャッシュからメモリへとはき出させ、且つ表示を格納するための手段において格納された書き込み操作の表示を消去する、命令シーケンス内の終了命令に応答するための手段とを含む、データを処理するための装置が提供される。
さらに、本技術は、添付の図面に例示されるそれらの実施例を参照して、例としてのみ説明される。
一実施例におけるデータ処理装置を含むデータ処理システムを模式的に例示する図である。 一実施例において、データ処理装置が仮想対物理的アドレス変換を決定するために使用されるページ・テーブルを模式的に例示する図である。 一実施例のプロセッサ・コア内で提供されるFIFO記憶ユニットを模式的に例示する図である。 一実施例におけるレベル1キャッシュを模式的に例示する図である。 一実施例のデータ処理装置が実行することができる命令シーケンス例を示す図である。 一実施例における2つの命令の各々内の制御情報の符号化を示す図である。 一実施例のデータ処理装置内で行われる一連のステップを示す図である。 一実施例のデータ処理装置内で行われる一連のステップを示す図である。 一実施例のデータ処理装置内で行われる一連のステップを示す図である。 一実施例のデータ処理装置内で行われる一連のステップを示す図である。 一実施例におけるデータ処理装置内で採用される一連のステップを模式的に例示する図である。
少なくとも幾つかの実施例は、命令シーケンスに応答してデータ処理を遂行可能であるプロセッサ・コアを備えるデータを処理するための装置であって、データ処理操作が、メモリからデータ項目を取り出す読み込み操作及びメモリにデータ項目を書き込む書き込み操作を含み、メモリが、不揮発性メモリ、命令シーケンスを実行する場合にプロセッサ・コアによりメモリから取り出され、且つメモリに書き込まれるデータ項目のローカル・コピーを格納可能であるライトバック・キャッシュ、及びプロセッサ・コアにより始動される書き込み操作の表示を格納可能である記憶ユニットであり、プロセッサ・コアが、プロセッサ・コアによる書き込み操作の対象であり、そのための表示が記憶装置内に格納されるデータ項目のローカル・コピーをライトバック・キャッシュからメモリへとはき出しさせること、及び記憶ユニット内に格納された書き込み操作の表示を消去すること、により命令シーケンス内の終了命令に応答可能である、データを処理するための装置を提供する。
本技術は、不揮発性メモリからデータ項目を読み込み、且つ不揮発性メモリにこれらの(変更された)データ項目を書き込もうとするプロセッサ・コアによりもたらされる上記の課題に対処しており、不揮発性メモリへのデータ項目の書き込みはライトバック・キャッシュを介して仲介される。特に、本装置は、プロセッサ・コアにより不揮発性メモリに対して始動される書き込み操作の表示を格納可能である記憶ユニットを備える。この記憶ユニットの提供に関連して、プロセッサ・コアがデータ処理操作を遂行中にその操作に応答可能である命令が、命令の範囲内に追加され、この命令(「終了(END)命令」)に応答して、プロセッサ・コアは、プロセッサ・コアにより始動される書き込み操作に対応する表示が現在記憶ユニットに格納されている、ライトバック・キャッシュ内のこれらのエントリをライトバック・キャッシュから不揮発性メモリへとはき出させる。ライトバック・キャッシュから不揮発性メモリへのデータ項目の「はき出し(cleaning)」は、本明細書では、ライトバック・キャッシュに格納された当該データ項目の修正されたコピーが、不揮発性メモリに格納されている元のデータ項目を更新するために使用されることを意味するものと理解されたい。次いで、記憶ユニットの内容もまた消去される。従って、データ処理装置のプログラマが、(書き込み命令の実行により始動される)書き込み操作の特別な順序付けが不揮発性メモリに関連して行われることを保証したい場合、このことは、本装置が実行すべきデータ処理操作を定義するためにプログラマにより与えられる命令シーケンスへの終了命令の追加により実行され得る。
いくつかの実施例では、不揮発性メモリは、バイト・アドレス可能である。しかしながら、その他の形式のアドレス指定能力もまた考えられ、したがって、不揮発性メモリはワード・アドレス可能、キャッシュ・ライン・アドレス可能等であってもよい。
いくつかの実施例では、プロセッサ・コアはさらに、プロセッサ・コアにより始動される書き込み操作の表示を命令シーケンス内の開始命令後に記憶ユニットに格納させることが可能である。従って、システム・プログラマが書き込み操作の「書き込みセット」をカプセル化する(開始命令により先導され、終了命令により完結する)ことを可能とする、プロセッサ・コアが応答する、さらなる命令が、命令セットに追加され得る。次いで、ライトバック・キャッシュの操作という意味で、且つ(スケジューリング上の理由により、特定の命令が実行される順序を変更することができる)プロセッサ・コアの操作によってではなく、プログラマにより望まれた(他の書き込み操作に対してこの書き込みセットの)書き込み順序が、不揮発性メモリの内容において重視されることを保証することができる。
いくつかの実施例では、プロセッサ・コアは、メモリの所定の部分を特定する保留中の書き込み命令が開始命令により先行され、終了命令が後続する場合、メモリの所定の部分への書き込み操作のみを遂行することが可能である。同様に、いくつかの実施例では、プロセッサ・コアは、メモリの所定の部分を特定する保留中の書き込み命令が開始命令により先行されておらず、終了命令が後続しない場合、メモリの所定の部分への書き込み操作を防止可能である。このことは、プロセッサ・コアに対してアクセス可能とするメモリ・アドレス空間の特定の部分、例えば、不揮発性メモリにより提供される当該部分を、そこへ書き込もうとしている書き込み命令が開始命令により先行され、終了命令が後続しない限り、書き込むことができないように保護することを可能とする。このことは、このメモリ部分、例えば不揮発性メモリを、これを破損する「予期せぬ書き込み」(例えば、プログラム中のバグで引き起こされる)から保護する。
プロセッサ・コアは、終了命令(多分さらに開始命令)の存在が識別された場合に実行される命令シーケンス内のその他の命令を取り扱うために複数の方法が準備され得る。例えば、いくつかの実施例では、プロセッサ・コアは、命令シーケンス内の後続の開始命令を終了命令が完了するまで引き延ばす(stall)ことにより、命令シーケンス内の終了命令及び後続の開始命令に応答可能である。開始命令は、次の書き込みセットの開始を定義するためにプログラマに利用可能であり、従ってプロセッサ・コアが終了命令の後に後続の開始命令に遭遇した場合、終了命令が完了する(すなわち、プロセッサ・コアのパイプラインから排出される)まで後続の開始命令を引き延ばすことにより、先行する書き込みセットが処理されるまでこの次の書き込みセットが取り扱われないことを保証することができる。
いくつかの実施例では、プロセッサ・コアは、命令シーケンス内の後続のメモリ操作命令を終了命令が完了するまで引き延ばすことにより、命令シーケンス内の終了命令及び後続のメモリ動作命令に応答可能である。従って、(命令シーケンス内の1つ又は複数のメモリ操作命令に応答して行われることになる)1つ又は複数のメモリ操作は、これらが命令シーケンス内の終了命令に続く場合、引き延ばされることができ、従って、事前定義の終了命令が完了するまで、これらのメモリ操作の結果が不揮発性メモリに効果を及ぼすことができないことを保証し、終了命令で完了する書き込みセットに一層の保護レベルを提供する。
実際に、いくつかの実施例では、プロセッサ・コアは、命令シーケンス内の後続の命令を終了命令が完了するまで引き延ばすことにより、命令シーケンス内の終了命令及び後続の命令に応答可能である。従って、終了命令で完結する書き込みセットに対するさらなる保護レベルは、このように、命令シーケンス内の全ての後続の命令を、終了命令が完了するまで引き延ばし得ることで提供される。
プロセッサ・コアにより始動される不揮発性メモリへの書き込み操作の表示が格納される記憶ユニットは、複数の形式を取ることができ、いくつかの実施例では、記憶ユニットはファーストイン・ファーストアウト(FIFO)記憶ユニットである。このFIFO構造は、プロセッサ・コアによりアクセス可能でさえあれば、装置内の複数の異なる場所で提供され得るが、いくつかの実施例では、プロセッサ・コアは、ファーストイン・ファーストアウト記憶ユニットを備える。このことは、プロセッサ・コアによるFIFO構造へのアクセス及び保守を容易にする。
代替として、いくつかの実施例では、記憶ユニットは、ライトバック・キャッシュにより提供され、プロセッサ・コアにより始動される書き込み操作の表示は、ライトバック・キャッシュ内に格納されたキャッシュ・ラインに関連したマーカとして格納され、このマーカのうちの1つのマーカに関する設定は、キャッシュ・ラインのうちの1つのキャッシュ・ラインの少なくとも一部を形成するデータ項目のローカル・コピーがプロセッサ・コアによる書き込み操作の対象であるか否かを表示する。従って、マーカ(例えば、設定又は消去され得るビット)は、データ項目が当該キャッシュ・ライン内に格納される場合、ライトバック・キャッシュの各キャッシュ・ラインに格納されることがあり、このマーカに関する設定は、キャッシュ・ライン内の少なくとも1つのデータ項目がプロセッサ・コアによる不揮発性メモリへの書き込み操作の対象であることを表示する。このことは、これらのデータ項目を識別することに関連した複数の方法で、特に要求された情報の直接の可用性により(すなわち、装置内の別の構造を参照することなく)ライトバック・キャッシュの構成を容易にすることができる。
いくつかの実施例では、記憶ユニットは、プロセッサ・コアにより始動される書き込み操作の少なくとも部分的なメモリ・アドレスを表示として格納可能である。完全なメモリ・アドレスも、同様に十分格納され得るが、明らかに大きな記憶容量を必要とし、部分的なメモリ・アドレスは、このアドレスがライトバック・キャッシュのキャッシュ・ライン内の対応するエントリを識別することが可能でありさえすれば、十分である。
いくつかの実施例では、記憶ユニットに格納された表示は、書き込み操作に対応するデータ項目がライトバック・キャッシュに格納される少なくとも1つのキャッシュ・ブロックを示す。このことは、特に、同一のキャッシュ・ブロックへの書き込みの連携を容易にすることができ、このことで、先行する書き込み操作が既にキャッシュ内の同一のキャッシュ・ブロックに関連した記憶ユニットに書き込んでいる場合、ライトバック・キャッシュからの不揮発性メモリへのはき出しが、一般にキャッシュ・ブロックベースで起き、且つ先行する書き込み操作のために格納された表示が、後続の書き込み操作のはき出しもまた起きることを保証することから、その後の記憶ユニットへの書き込み操作の追加の表示を格納する必要はない。
いくつかの実施例では、プロセッサ・コアはさらに、仮想対物理メモリ・アドレス・マッピングを決定するためにページ・テーブルを参照可能であり、ページ・テーブル内の各エントリは、当該エントリが所定のメモリ・アドレス空間に対応するか否かを表示するためのフラグを含み、プロセッサ・コアは、プロセッサ・コアにより始動される所定のメモリ・アドレス空間に対する書き込み操作の表示を記憶ユニットに格納させることが可能である。プロセッサ・コアは、単に不揮発性メモリだけではなくさらなるメモリ・デバイスにアクセスすることができ、次いで、ページ・テーブルに格納された付加的情報が、不揮発性メモリにより提供される完全なアクセス可能アドレス空間の領域を識別し、プロセッサ・コアが、記憶ユニットのみに不揮発性メモリへの書き込み操作に関連した情報を移すことを可能とすることができる。
個別のシステム要件に応じて、ライトバック・キャッシュ内に格納されたデータ項目のローカル・コピーの不揮発性メモリへのはき出しに関する異なるレベルの確実性が要求され得る。従って、いくつかの実施例では、プロセッサ・コアは、メモリ内のコントローラが、ライトバック・キャッシュからはき出されたデータ項目のローカル・コピーをメモリへコミット(commit)するためのコマンドの受領を確認するまで、終了命令に後続する全ての命令を引き延ばすための開始命令内の符号化に応答可能である。従って、開始命令及び終了命令によりカプセル化された書き込みセットは、キャッシュされたデータ項目をメモリにコミットするためのコマンドの受信確認のおかげで、不揮発性メモリのメモリ・コントローラにより既に取り扱われていることを保証され得る。
しかしながら、いくつかのアプリケーションにとっては、実際に、書き込みセットが不揮発性メモリ内で持続的となっていることを知ることが重要であり、従って、いくつかの実施例では、プロセッサ・コアは、メモリ内のコントローラが、ライトバック・キャッシュからメモリへはき出されたデータ項目のローカル・コピーがメモリにコミットされていることを表示するまで、終了命令に後続する全ての命令を引き延ばすように開始命令内の符号化に応答可能である。従って、終了命令に後続する全ての命令は、最終的に、ライトバック・キャッシュ内にキャッシュされた対応するデータ項目が実際に不揮発性メモリにコミットされたことを(不揮発性メモリ・コントローラからの表示のおかげで)知らされるまで、引き延ばさせられ得る。
終了命令へのプロセッサ・コアの応答に加えて、不揮発性メモリに格納されたデータ項目に関連したライトバック・キャッシュ内にキャッシュされたデータ項目のはき出しもまた、別な時に行うことができ、いくつかの実施例では、本装置はさらに、はき出し(clean)条件に応答して、プロセッサ・コアによる少なくとも1つの書き込み操作の対象であり、そのための表示が記憶ユニットに格納されている、ライトバック・キャッシュに格納されたローカル・コピーのうちの少なくとも1つのローカル・コピーをライトバック・キャッシュからメモリにはき出させ、記憶ユニットに格納された少なくとも1つの書き込み操作の少なくとも1つの対応する表示を消去可能である。従って、(少なくとも部分的な)ライトバック・キャッシュの内容をライトバック・キャッシュから不揮発性メモリへはき出させる1つ又は複数のはき出し(clean)条件が定義され得る。
いくつかの実施例では、はき出し条件は、記憶ユニットが一杯になると満足される。記憶ユニットが一杯になると、その中にはそれ以上の表示を格納することができず、従って、このことが、はき出しを発生させる好都合な状況となる。この状況では、不揮発性メモリへはき出されるべき記憶ユニット内の対応するエントリを有する、ライトバック・キャッシュに格納された全てのデータ項目にとって一般的なことであるが、記憶ユニット容量の一部分のみが解放される、部分的なはき出しもまた考えられる。
いくつかの実施例では、はき出し条件は、ライトバック・キャッシュに格納されたローカル・コピーがメモリに追い出される(evicted)場合に満足される。無論、当該ローカル・コピーのメモリへの追い出しは、本来、当該ローカル・コピーのはき出しを引き起こすが、本技術によれば、記憶ユニット内の対応するエントリのみがこの追い出されたローカル・コピーへの対応を消去されことになるか、又はライトバック・キャッシュに格納されている全てのデータ項目が不揮発性メモリへとはき出され、記憶ユニットの全ての内容が消去される、完全はき出しもまた予想される。
いくつかの実施例では、はき出し条件は、ライトバック・キャッシュに格納されたローカル・コピーがコヒーレンス機構によりスヌープ(snoop)される場合に満足され、そのための表示が記憶ユニットに格納される。キャッシュ・コヒーレンス機構によるこのようなスヌープ(すなわち、装置が属するデータ処理システム内の別のキャッシュにより始動される)は、複数の方法で取り扱われ得るが、ライトバック・キャッシュに格納されたローカル・コピーのはき出しは、スヌープに対して比較的単純な応答がなされることを可能とし、データ項目が現在最新であることを表示する。
いくつかの実施例では、ライトバック・キャッシュは、ライトバック・キャッシュに格納されたキャッシュ・ラインに関連付けられたクリーン・オン・スヌープ・マーカを格納可能であり、クリーン・オン・スヌープ・マーカの設定は、対応する表示が記憶ユニットに格納されていることを示す。対応する表示が格納されていること、すなわち、このキャッシュ・ラインが、最後には不揮発性メモリへとはき出される必要がある少なくとも1つのデータ項目を含むこと、及びこのエントリが、スヌープされた場合はき出されるべきことを示す、これらのクリーン・オン・スヌープ・マーカは、ライトバック・キャッシュが、対応する表示が記憶ユニットに格納されているか否かを決定するために記憶ユニットをさらに参照することなく、キャッシュ・コヒーレンス機構によりなされるスヌープに直接応答することを可能とする。記憶ユニットの性質及び構成に応じて、このことは、別な方法で、例えば、記憶ユニットが内容アドレス可能(content addressable:連想可能)であることを要求しても、又は記憶ユニットを通じて反復検索を要求してもよい。
しかしながら、いくつかの実施例では、記憶ユニットは、特定の表示(すなわち、ライトバック・キャッシュに格納された特定のデータ項目に関連している)が現在記憶ユニットに格納されているか否かの決定を容易にすることができる、内容アドレス可能(連想)記憶ユニットである。
少なくともいくつかの実施例は、命令シーケンスに応答してデータ処理操作を遂行するステップであって、データ処理操作が、メモリからデータ項目を取り出す読み込み操作及びメモリにデータ項目を書き込む書き込み操作を含み、メモリが不揮発性メモリである、データ処理操作を遂行するステップと、命令シーケンスを実行する場合にメモリから取り出され、且つメモリに書き込まれるデータ項目のローカル・コピーをライトバック・キャッシュに格納するステップと、データ処理操作を遂行するステップにおいて始動された書き込み操作の表示を格納するステップと、書き込み操作の対象であり、そのための表示がローカル・コピーを格納するステップにおいて格納されたデータ項目のローカル・コピーをライトバック・キャッシュからメモリへはき出させること、及び表示を格納するステップにおいて格納された書き込み操作の表示を消去すること、により命令シーケンス内の終了命令に応答するステップと、を含むデータ処理の方法を提供する。
少なくともいくつかの実施例は、命令シーケンスに応答してデータ処理操作を遂行する手段であって、データ処理操作が、メモリからデータ項目を取り出す読み込み操作及びメモリにデータ項目を書き込む書き込み操作を含み、メモリが不揮発性メモリである、データ処理操作を遂行する手段と、命令シーケンスを実行する場合にメモリから取り出され、且つメモリに書き込まれるデータ項目のローカル・コピーを格納するための手段であって、格納するための手段がメモリに関連したライトバック構成を有する、格納手段と、データ処理操作を遂行するための手段により始動される書き込み操作の表示を格納する手段と、書き込み操作の対象であり、そのための表示がローカル・コピーを格納する手段により格納された、データ項目のローカル・コピーをライトバック・キャッシュからメモリへはき出させ、且つ表示を格納するための手段において格納された書き込み操作の表示を消去する、命令シーケンス内の終了命令に応答するための手段と、を含むデータ処理のための装置を提供する。
図1は、システム・バス14を介してDRAMメモリ16及び不揮発性バイト・アドレス可能メモリ18に結合されたCPU12を備える、データ処理システム10を模式的に例示する。DRAMメモリ16は、DRAMコントローラ20及びDRAM記憶装置22を備える。同様に、不揮発性メモリ18は、不揮発性メモリ・コントローラ24及び不揮発性記憶装置26を備える。
本例示的実施例で、システム・オン・チップ・デバイスの一部を形成する、CPU12は、プロセッサ・コア30及び2階層のキャッシュ、すなわち、レベル1(L1)キャッシュ32及びレベル2(L2)キャッシュ34を備える。コア30それ自身は、本明細書では4つのステージのみが純粋に例示の簡単化及び分かりやすさのために示される実行パイプライン36、すなわち、フェッチ/デコード/イシュー(issue)・ステージ38、2つの実行ステージ40、42及びコミット・ステージ44を備える。また、コア30内には、FIFOコントローラ48及びFIFO記憶装置50自身を備えるFIFO記憶ユニット46が提供される。コア・パイプライン36のフェッチ/デコード/イシュー・ステージ38は、コア30がメモリ(例えば、DRAM16又は不揮発性メモリ18いずれか)から取り出した命令シーケンス内の命令、特に、本技術を参照すると、不揮発性バイト・アドレス可能(NVBA)メモリ18へデータ項目を書き込もうとするこれらの書き込み命令を識別するように構成される。これらの書き込みのために、フェッチ/デコード/イシュー・ステージ38は、この書き込み命令が遂行されることを求めている書き込み操作を表示するエントリが、FIFO記憶装置50に格納されるべきであることを、FIFO46の制御ユニット38に信号伝達する。この実施例では、このことは、当該書き込み命令により特定されるメモリ・アドレスの一部に対応し、この部分は、L1キャッシュ32のキャッシュ・ライン内に作成される対応したエントリを一意に識別するために十分である。L1キャッシュ32は、ライトバック構成を有するように構成され、この構成にしたがって、L1キャッシュ32により格納された変更されたデータ項目が、当該データ項目が元々取り出されたメモリ内で直ちに更新されることはないが、暫くの間、L1キャッシュ32内に保持され得る。暫くの間とは、例えば、当該データ項目を保持するキャシュ・ラインが追い出される、又はこのデータ項目を「はき出す(clean)」ために明示的コマンドがL1キャッシュ32により受け取られる、又はL1キャッシュ32が該当データ項目をはき出すことにより応答するキャッシュ・コヒーレンス機構の一部としてのスヌープに対するL1キャッシュ32の応答を受信するまでである。
FIFO記憶ユニット46は、コア30内に提供されて、データ処理システム10が不揮発性メモリ18内の内容を、特に、電源故障又はシステム障害に対する可能性に直面した場合に、信頼できるように維持することを可能とする。不揮発性メモリ18は永続的である(DRAM16とは異なり)ことから、ここでは、プロセッサ・コア30が、不揮発性メモリ18に指示された一定の書き込みセットの全てが、別の書き込みセットが開始される以前に、不揮発性メモリ18に格納されたデータが、矛盾がない状態にあることを確実にするために、コミットされていることを知るためのソフトウェアに対する機構を有すると規定される。例えば、プロセッサ・コア30により実行されるプログラム命令シーケンス(ソフトウェア)が、リンク・リストへの追加に関係する場合、当該ブロックへのポインターが更新され、不揮発性メモリ18に書き戻される前に、リンク・リストの新しい要素を不揮発性メモリ18へ書き戻すことが必要である。DRAM16等の揮発性メモリに関しては、DRAMの内容が永続的ではないことから、プロセッサ・コア30により実行される障壁はこのような信頼性を保証できるが、不揮発性メモリ18の内容の場合、障壁は、これがコア・パイプライン36による命令/実行の一定の順序付けを保証するだけであることから、十分ではないことに注目されたい。対照的に、L1キャッシュ32及びL2キャッシュ34の動作がコア30に対して透過的であり、従って、不揮発性メモリ及び少なくとも1つのライトバック・キャッシュ(この実例ではL1キャッシュ32等)を扱う場合、障壁は、電源故障又はデータ処理システム10内の故障がそこに格納されているデータと矛盾する結果とならないように、不揮発性メモリ18の内容の永続的な状態が常に維持されることを保証することができない。
図2は、仮想メモリ・アドレス(プロセッサ・コア30に対して内部的に使用される)を物理メモリ・アドレス(DRAM16及び不揮発性メモリ18内で使用される)に変換するためにプロセッサ・コア30により使用されるページ・テーブルを示す。ページ・テーブル内の付加的なマーカ(図の中ではNVBAとラベルが付けられた、設定/非設定ビット)は、不揮発性メモリ18に対応するこれらのメモリ・アドレスを示す。不揮発性メモリ対応するアドレ変換についてのこのラベル付けは、命令シーケンス内で遭遇する書き込み命令が、不揮発性メモリへの書き込み操作を行わせる時点を、プロセッサ・コア30が識別することを可能とする。一般的には、プロセッサ・コア30は、次いで、この書き込み操作に対応してFIFO46内のエントリを事前設定するように構成されることができるが、本明細書で説明される特定の実施例では、プロセッサ・コア30のアーキテクチャは、書き込み操作が不揮発性としるされたメモリの領域に対して実行することを許可されるために、対応する書き込み命令もまた、nvba_begin命令(不揮発性メモリに関連した書き込みセットの開始を識別するために使用される)が先行し、nvba_end命令(不揮発性メモリに関連した書き込みセットの終了を識別するために使用される)が後続することができるようになっている。NVBAとして示されるメモリの全ての領域に関連した書き込み命令に遭遇するが、書き込み命令にnvba_begin命令が先行せず、nvba_end命令が後続しない場合、プロセッサ・コア30は、当該書き込み命令により特定された書き込み操作が実行されることを防止するように構成される。この取り決めは、他の状態にメモリを改悪する恐れのある予期せぬ書き込み(すなわち、プロセッサ・コア30が実行する命令シーケンス内のバグ)から不揮発性メモリを保護する。
しかしながら、不揮発性メモリに関連し、nvba_begin命令及びnvba_end命令によりはさまれている、書き込み命令に遭遇した場合、プロセッサ・コア30は、FIFO制御48及びL1キャッシュ32に対して、この書き込み命令に応答して実行されるべき書き込み操作の表示が、FIFO記憶装置50に追加されるべきであることを示す。FIFO記憶装置50の4つのエントリが現在書き込み操作A〜Dの表示で事前設定されている構成例内の、FIFO46が図3に示される。図に示されるように、これらの表示は、書き込み操作の目標メモリ・アドレス(又は、実際に単なる部分的なメモリ・アドレス、これらが、L1キャッシュ32内の対応するエントリを識別するのに十分である場合)を含むことができ、又は、替わりに、対応するエントリがL1キャッシュ32内でみつかる場所を示す、キャッシュ・ブロック・インジケータであっても良い。FIFO制御ユニット48は、FIFO46の全体的な制御を維持し、要求されるエントリの追加及びエントリの削除を管理する(個別に又はFIFOの全内容いずれか)。FIFO46が、L1キャッシュ内の特定のデータ項目がFIFO記憶装置50内の対応するエントリを有するか否かに関してL1キャッシュからの問い合わせに応答することを要求される場合、FIFO記憶装置50は、この機能を提供するために内容アドレス可能な方法で構成され得る。このような個別の問い合わせが受信され得る1つの実例は、L1キャッシュからのデータ項目の追い出しのためであり、この追い出しに応答して、FIFO制御48は、FIFO記憶装置50内の対応するエントリを除去させるように構成され得る。代替として、L1キャッシュからの内容問い合わせは、L1キャッシュにより受信されるスヌープ問い合わせに応答して図4を参照して以降に説明されるようにキャッシュ・コヒーレンス機構における関与の一環として受信されてもよく、FIFO46に対してこの内容アドレス可能メモリ構成を提供する必要性を回避し、従ってコア30への比較的小さな追加でFIFO46事前設定を容易にするために、L1キャッシュ自身は、対応するエントリが現在FIFO46内に保持されているか否かの表示を格納するように構成され得る。最終的に、図3に示すように、FIFO制御48はさらに、FIFO記憶装置50が完全に事前設定されてきているか(従って、さらにエントリが作成可能となっていない)否かを監視するように構成される。FIFO記憶装置50が完全に事前設定されている場合には、FIFO制御48はこの事実をL1キャッシュ32に信号伝達し、次いでL1キャッシュ内の対応するエントリを迅速に不揮発性メモリ18に書き戻させ、且つFIFO46の内容が消去される。
図4は、L1キャッシュ32のいくつかのより詳細を模式的に例示したもので、このライトバック・キャッシュがコントローラ60及び複数のキャシュ・ライン62を有することを示す。キャッシュ・コントローラ60は、データ項目及びコア30から受信される制御信号を監視し、制御信号は、パイプライン36及びFIFO制御48両者から受信される。キャッシュ・ライン62は、プロセッサ・コアによりそのデータ処理操作において使用されるデータ項目を格納するように構成され、各キャシュ・ラインはデータ項目それ自身及び関連したステータス・マーカ(通常の方法で、ダーティー(dirty)/有効等)両者を格納する。しかしながら、さらに、各キャシュ・ラインの1ビットは、本明細書では、キャシュ・ラインがNVBAメモリに対する書き込みデータ項目を含むことを示す、特別な目的のマーカ64として定義されることに注目されたい。このビットは、等価的に、クリーン・オン・スヌープ・マーカ(clean−on−snoop marker)として取り扱うことができ、キャシュ・ライン62の1つにおいてヒットする、スヌープが別のキャッシュ/CPUから受信された場合、マーカ64の存在は、当該キャシュ・ラインをNVBAメモリへはき出させる。実際に、より一般的には、マーカ64は、イベントが発生した場合にはき出されるべきラインを示すために使用され得る。このことは、このローカルなL1キャッシュ32がもはや当該ラインの内容を排他的に制御し得ないことを意味する、キャシュ・ラインの追い出しは、まさに、マーカ64がこのようにクリーン・オン・エビクト・マーカ(clean−on−evict marker)として見なされ得る、1つのこのような実例である。例示された構成では、キャッシュ・コントローラ60は、データ処理システム10のメモリ・システム内の他のキャッシュから受信されるスヌープを監視するように構成され、別のキャッシュからのスヌープが、マーカ64が、このキャシュ・ラインがNVBAメモリ内のデータ項目に関連することを示す、キャッシュ32のキャシュ・ライン62内に格納されたデータ項目に関連して受信された場合、キャッシュ・コントローラ60は、直ちに当該キャシュ・ラインを追い出させるように構成される。このイベントはまた、FIFO46内の全ての対応する内容が消去され得るようにFIFO制御48に信号伝達する。次いで、他のキャッシュからのスヌープへの応答は、スヌープされたデータ項目が有効であることを示すことができる。
図5は、図1に示されたプロセッサ・コア30により実行され得る命令シーケンス例を示す。シーケンスの最初の部分(ラベルA)は、不揮発性バイト・アドレス可能メモリ内に格納されていないデータ項目にアクセスする、読み込み、書き込み、及びデータ処理命令に関連した複数の命令を有する。その後に、読み込み、データ処理及び書き込み命令が、不揮発性バイト・アドレス可能メモリ18内に格納されているデータ項目に(少なくとも部分的には)関連する最初の領域(書き込みセット)の開始を定義するnvba_begin命令が続く。この最初の領域(書き込みセット)(ラベルB)は、nvba_end命令で完結する。その後に、不揮発性バイト・アドレス可能メモリに格納されているデータ項目に関連しない第2の命令セット(A)が続く。最後に、不揮発性書き込みアドレス可能メモリ18に格納されたデータ項目に(少なくとも部分的には)関連した読み込み、データ処理及び書き込み命令の第2の領域(書き込みセット)(B)は、第2のnvba_begin命令及び第2のnvba_end命令により定義される。nvba_begin及びnvba_end命令の事前設定は、アクセスされたデータ項目が、ライトバック・キャッシュによりアクセスがキャッシュされる不揮発性メモリに格納される場合にさえも、(互いに関連する)本技術が順序付けを維持することができる書き込みセットをプログラマが定義することを可能とする。
図6は、一実施例におけるnvba_begin及びnvba_end命令の符号化例を示す。各命令は、nvba_begin又はnvba_end命令いずれであるかをそれぞれ定義するオペコードを含む。さらに、各命令内の符号化空間は、本技術に関連した制御情報を提供するために使用される。nvba_begin命令は、クリーン・タイプを定義する制御情報を含む。クリーン・タイプは、L1キャッシュ32がNVBAメモリ18へ内容をはき出す場合に、不揮発性メモリ・コントローラ24から要求される応答のタイプを指定する。2つの応答のタイプの例が示される。第1の場合には、不揮発性メモリ・コントローラは、内容をはき出すためのコマンドが受信されたことを単に確認することができる。第2の場合には、不揮発性メモリ・コントローラは、クリーン・コマンドが実行されたこと、すなわち、内容が不揮発性メモリ内で更新されており、従って永続的であると保証されたことを確認することができる。nvba_end命令は、nvba_end命令が完了するまで、nvba_end命令に後続する命令がどのように取り扱われるかを定義する制御情報を含む。これらの後続する命令に何等の制限も課せられていない場合であっても、nvba_end命令が完了するまで引き延ばしを行わせることができる命令のタイプを示す、様々な制限レベル例が示される。図示のように、これらには、全ての後続のnvba_begin命令、全ての後続のNVBAメモリへの書き込み、全ての後続のメモリ操作、又は全ての後続の命令がある。従って、nvba_begin命令及びnvba_end命令によりカプセル化された書き込みセットへの保護の度合いを変化させながら実装することができる。
ここで、本技術を実装するために、一実施例のデータ処理装置内で実行される、又は代替的に、一実施例の方法内に見られる様々なステップの説明が続く。図7〜10は、本技術の様々な機能をサポートするデータ処理装置内で進行する動作及び監視の異なる態様を示す。例えば、図7は、NVBAメモリ18に関連した特定の命令を監視する一連のステップを模式的に例示する。フローは、データ処理装置が命令シーケンスを実行するステップ70において開始すると考えられ得る。ステップ72において、begin_nvba命令が先行もせず、end_nvba命令が後続してもいない、NVBAメモリに向かう書き込み命令に遭遇しているか否かを判断する。従って、これが肯定される場合、識別された(ステップ74)書き込み命令は、実行させられず、フローはステップ70に戻る。書き込み命令の不実行は、複数の形、例えば、単に命令を抑止する、処理障害を生成するなど、を取り得る。このように、書き込み命令がステップ72において識別されない場合、フローは直接ステップ70に戻る。
図8は、書き込みセットの順序付けをサポートするように実装された一連のステップを模式的に例示する。データ処理装置が命令シーケンスを実行するフローは、ステップ76において始まると考えられ得る。その後、ステップ78において、以前のnvba_end命令が未だ完了待ちであるにも関わらず、nvba_begin命令に遭遇したか否かを判断する。言い換えれば、前の書き込みセットが未だにデータ処理装置により処理されている過程にあるにも関わらず、命令シーケンス内の第2の書き込みセットの開始が発見された。この実施例では、これらの書き込みセットの順序付けを厳密に保証するために、このような条件がステップ78において満足される場合、フローは、ステップ80に進み、そこで新しいnvba_begin命令は先行するnvba_end命令が完了するまで引き延ばされる。その後、フローはステップ76に戻る。或いは、ステップ78において条件が満たされない場合、フローはまたステップ76に戻る。
図9は、L1キャッシュ32が関係するキャッシュ・コヒーレンス機構に関連した一連のステップを模式的に例示する。ステップ82は、データ処理装置により進行中の命令シーケンスの実行を表しており、そこでは、これらのステップのフローが先頭の開始と考えられ得る。ステップ84において、ライトバック・キャッシュ32内のエントリがメモリに追い出されることを選択されているか、又はキャッシュ・コヒーレンス機構によりスヌープされているか否かを判断する。これらの事象のいずれもが発生していない場合、フローは単純にスペック82に戻る。しかしながら、これらのいずれかが発生している場合、(ステップ86)L1キャッシュ32内の対応するエントリは、メモリへとはき出され、L1キャッシュ32は、FIFO46内の対応するエントリが消去されるべきであることをFIFO制御48に信号伝達する。
図10は、FIFO46自身の管理に関する。プロセッサ・コア30による命令シーケンスの実行(ステップ88)中に、ステップ90においてFIFO記憶装置50が満杯となるか否かが判断される。否定される場合、フローは単純にステップ88に戻る。しかしながら、FIFOが満杯となる場合には、フローはステップ92に進み、そこで、FIFO内の対応するエントリを有するライトバック・キャッシュ内の全てのエントリが(不揮発性メモリ18へと)はき出され、FIFO記憶装置50は片付けられる(cleared)。
図11は、一実施例の方法において実行される一連のステップを示す。データ処理装置による進行中の命令シーケンスの実行は、ステップ100により表される。その後、NVBAメモリに対する書き込みセットをカプセル化しているnvba_begin/nvba_end命令対に命令シーケンス内で遭遇したか否かが判断される。こうではない場合、フローはステップ100に戻る。このような書き込みセットが識別されると、ステップ104において、この書き込みセットに要求されているライトバック・キャッシュ・クリーンのタイプがnvba_begin命令から判断される。ステップ106において、nvba_end命令に後続する命令が取り扱われるべき方法がnvba_end命令から決定される。次いで(ステップ108)、実質的に書き込みセットを形成する命令が実行されることが可能であり、NVBAメモリへの書き込み操作を引き起こすように構成されるこれらの命令に対してFIFO46内のエントリが作成され、修正されたデータ項目がL1キャッシュ32内にキャッシュされる。nvba_end命令自身が実行されると(ステップ110)、FIFO46内にNVBAメモリ18に対応するエントリを有するL1キャッシュ32内のデータ項目のはき出しが始動され、FIFO46が片付けられる。次いで、ステップ114において、要求されたクリーン・タイプ(nvba_begin内で指定された)が完了したか、すなわち、NVBAメモリ・コントローラ24がクリーン・コマンドの受領を確認したか、又は(必要であれば)さらにクリーンの完了を確認したか否かが判断される。否定される場合、フローはステップ116を介してループし、そこでは、nvba_end命令に後続する(nvba_end命令内で指定されたタイプの)命令は引き延ばされる。はき出しが確認されると、フローはステップ100に戻る。
本発明の例示的実施例を添付の図面を参照して本明細書内で詳細に説明してきたが、本発明がこれらの正確な実施例に限定されないこと、及び、様々な変更、追加及び修正が添付の特許請求の範囲により定義される本発明の範囲及び精神を逸脱することなく当業者によりそれらの中に影響を及ぼし得ることを理解されたい。例えば、従属クレームの機能の様々な組み合わせが、本発明の範囲を逸脱することなく独立クレームの機能を用いて行うことができるであろう。

Claims (24)

  1. 命令シーケンスに応答してデータ処理操作を遂行可能であり、前記データ処理操作がメモリからデータ項目を取り出す読み込み操作及びデータ項目を前記メモリに書き込む書き込み操作を含み、前記メモリが不揮発性メモリである、プロセッサ・コアと、
    前記命令シーケンスを実行する場合に、前記プロセッサ・コアにより前記メモリから取り出され、前記メモリに書き込まれる前記データ項目のローカル・コピーを格納可能なライトバック・キャッシュと、
    前記プロセッサ・コアにより始動された前記書き込み操作の表示を格納可能な記憶ユニットと、を備えるデータを処理する装置であって、
    前記プロセッサ・コアが、
    前記プロセッサ・コアによる前記書き込み操作の対象であり、そのための表示が前記記憶ユニットに格納されるデータ項目の前記ローカル・コピーを前記ライトバック・キャッシュから前記メモリへとはき出させること、及び、
    前記記憶ユニットに格納された前記書き込み操作の前記表示を消去すること、
    により前記命令シーケンス内の終了命令に応答可能である、
    データを処理する装置。
  2. 前記不揮発性メモリがバイト・アドレス可能である、請求項1に記載の装置。
  3. 前記プロセッサ・コアがさらに、前記プロセッサ・コアにより始動される前記書き込み操作の前記表示を前記命令シーケンス内の開始命令の後に前記記憶ユニットに格納させることが可能である、請求項1又は2のいずれかに記載の装置。
  4. 前記メモリの所定の部分を指定する保留している書き込み命令に、前記開始命令が先行し、前記終了命令が後続する場合、前記プロセッサ・コアは、前記メモリの前記所定の部分への書き込み操作を遂行することのみが可能である、請求項3に記載の装置。
  5. 前記メモリの所定の部分を指定する保留している書き込み命令に前記開始命令が先行せず、前記終了命令が後続していない場合、前記プロセッサ・コアは、前記メモリの前記所定の部分への書き込み操作が遂行されることを防止可能である、請求項3に記載の装置。
  6. 前記プロセッサ・コアが、前記命令シーケンス内の前記終了命令及び後続の開始命令に対し、前記命令シーケンス内の前記後続する開始命令を、前記終了命令が完了するまで引き延ばすことにより応答可能である、請求項3に記載の装置。
  7. 前記プロセッサ・コアが、前記命令シーケンス内の前記終了命令及び後続のメモリ操作命令に対し、前記命令シーケンス内の前記後続のメモリ操作命令を、前記終了命令が完了するまで引き延ばすことにより応答可能である、請求項3に記載の装置。
  8. 前記プロセッサ・コアが、前記命令シーケンス内の前記終了命令及び後続の命令に対し、前記命令シーケンス内の前記後続の命令を、前記終了命令が完了するまで引き延ばすことにより応答可能である、請求項1から7までのいずれかに記載の装置。
  9. 前記記憶ユニットが、ファーストイン・ファーストアウト記憶ユニットである、請求項1から8までのいずれかに記載の装置。
  10. 前記プロセッサ・コアが前記ファーストイン・ファーストアウト記憶ユニットを備える、請求項9に記載の装置。
  11. 前記記憶ユニットがライトバック・キャッシュにより提供され、前記プロセッサ・コアにより始動される前記書き込み操作の前記表示が、前記ライトバック・キャッシュに格納されるキャッシュ・ラインに関連したマーカとして格納され、前記マーカのうちの1つのマ−カーに関する設定が、前記キャシュ・ラインのうちの1つのキャシュ・ラインの少なくとも一部を形成するデータ項目のローカル・コピーが前記プロセッサ・コアによる前記書き込み操作の前記対象であるか否かを示す、請求項1から8までのいずれかに記載の装置。
  12. 前記記憶ユニットが、前記プロセッサ・コアにより始動される前記書き込み操作の少なくとも部分的なメモリ・アドレスを、前記表示として格納可能である、請求項1から10までのいずれかに記載の装置。
  13. 前記記憶ユニットに格納された前記表示が、前記書き込み操作に対応するデータ項目が前記ライトバック・キャッシュに格納される少なくとも1つのキャッシュ・ブロックを示す、請求項1から10までのいずれかに記載の装置。
  14. 前記プロセッサ・コアがさらに、仮想対物理メモリ・アドレス・マッピングを決定するためにページ・テーブルを参照可能であり、前記ページ・テーブル内の各エントリが、前記エントリが所定のメモリ・アドレス空間に対応するか否かを示すフラグを含み、前記プロセッサ・コアが、前記プロセッサ・コアにより始動される前記所定のメモリ・アドレス空間への書き込み操作の表示を、前記記憶ユニットに格納させることが可能である、請求項1から13までのいずれかに記載の装置。
  15. 前記プロセッサ・コアが、前記開始命令内の符号化に応答して、前記メモリ内のコントローラが、前記ライトバック・キャッシュから前記メモリへはき出されたデータ項目の前記ローカル・コピーをコミットするためのコマンドの受領を確認するまで、前記終了命令に後続する全ての命令を引き延ばすことが可能である、請求項3、又は請求項3に従属する場合の請求項4から14までのいずれかに記載の装置。
  16. 前記プロセッサ・コアが、前記開始命令内の符号化に応答して、前記メモリ内のコントローラが、前記ライトバック・キャッシュから前記メモリにはき出されたデータ項目の前記ローカル・コピーが前記メモリにコミットされたことを示すまで、前記終了命令に後続する全ての命令を引き延ばすことが可能である、請求項3に記載、又は請求項3に従属する場合の請求項4から15までのいずれかに記載の装置。
  17. さらに、はき出し条件に応答して、前記プロセッサ・コアによる少なくとも1つの書き込み操作の前記対象であり、そのための表示が前記記憶ユニットに格納されている、前記ライトバック・キャッシュに格納された前記ローカル・コピーのうちの少なくとも1つのローカル・コピーを、前記ライトバック・キャッシュから前記メモリにはき出させ、前記記憶ユニットに格納された前記少なくとも1つの書き込み操作の少なくとも1つの対応する表示を消去可能である、請求項1から16までのいずれかに記載の装置。
  18. 前記はき出し条件が、前記記憶ユニットが満杯である場合に満足される、請求項17に記載の装置。
  19. 前記はき出し条件が、前記ライトバック・キャッシュに格納されたローカル・コピーが前記メモリに追い出される場合に満足される、請求項17に記載の装置。
  20. 前記はき出し条件が、前記ライトバック・キャッシュに格納されたローカル・コピーがキャッシュ・コヒーレンス機構によりスヌープされ、そのための表示が前記記憶ユニットに格納される場合に満足される、請求項17に記載の装置。
  21. 前記ライトバック・キャッシュが、前記ライトバック・キャッシュに格納されたキャシュ・ラインに関連したクリーン・オン・スヌープ・マーカを格納可能であり、クリーン・オン・スヌープ・マーカの設定が、対応する表示が前記記憶ユニットに格納されていることを示す、請求項20に記載の装置。
  22. 前記記憶ユニットが内容アドレス可能記憶ユニットである、請求項1から21までのいずれかに記載の装置。
  23. 命令シーケンスに応答してデータ処理操作を遂行するステップであって、前記データ処理操作がメモリからデータ項目を取り出す読み込み操作及びデータ項目を前記メモリに書き込む書き込み操作を含み、前記メモリが不揮発性メモリである、ステップと、
    前記命令シーケンスを実行する場合に、前記メモリから取り出され、前記メモリに書き込まれる前記データ項目のローカル・コピーをライトバック・キャッシュに格納するステップと、
    前記データ処理操作を遂行するステップにおいて始動された前記書き込み操作の表示を格納するステップと、
    前記書き込み操作の前記対象であり、そのための表示が前記ローカル・コピーを格納するステップにおいて格納されたデータ項目の前記ローカル・コピーを前記ライトバック・キャッシュから前記メモリへとはき出させるステップ、及び
    前記表示を格納するステップにおいて格納された前記書き込み操作の前記表示を消去するステップ、
    により命令シーケンス内の終了命令に応答するステップと、
    を含む、データを処理する方法。
  24. 命令シーケンスに応答してデータ処理操作を遂行するための手段であって、前記データ処理操作がデータ項目をメモリから取り出す読み込み操作及びデータ項目を前記メモリに書き込む書き込み操作を含み、前記メモリが不揮発性メモリである、データ処理操作を遂行するための手段と、
    前記命令シーケンスを実行する場合に、前記メモリから取り出され、前記メモリに書き込まれる前記データ項目のローカル・コピーを格納するための手段であって、前記メモリに関連したライトバック構成を有する、格納するための手段と、
    データ処理操作を遂行するための前記手段により始動された前記書き込み操作の表示を格納するための手段と、
    前記書き込み操作の前記対象であり、そのための表示が前記ローカル・コピーを格納するための前記手段により格納されたデータ項目の前記ローカル・コピーを前記ライトバック・キャッシュから前記メモリへとはき出させ、且つ、
    表示を格納するための前記手段において格納された前記書き込み操作の前記表示を消去する、
    前記命令シーケンス内の終了命令に応答するための手段と、
    を備える、データを処理するための装置。
JP2017504748A 2014-08-04 2015-06-23 不揮発性メモリへの書き込み操作 Active JP6684266B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1413772.3 2014-08-04
GB1413772.3A GB2529148B (en) 2014-08-04 2014-08-04 Write operations to non-volatile memory
PCT/GB2015/051823 WO2016020637A1 (en) 2014-08-04 2015-06-23 Write operations to non-volatile memory

Publications (2)

Publication Number Publication Date
JP2017527023A true JP2017527023A (ja) 2017-09-14
JP6684266B2 JP6684266B2 (ja) 2020-04-22

Family

ID=51587690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017504748A Active JP6684266B2 (ja) 2014-08-04 2015-06-23 不揮発性メモリへの書き込み操作

Country Status (8)

Country Link
US (1) US11429532B2 (ja)
EP (1) EP3177993B1 (ja)
JP (1) JP6684266B2 (ja)
KR (1) KR102409050B1 (ja)
CN (2) CN117033259A (ja)
GB (1) GB2529148B (ja)
IL (1) IL250300A0 (ja)
WO (1) WO2016020637A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111417934A (zh) * 2017-12-05 2020-07-14 Arm有限公司 用于处理写入操作的装置和方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2529148B (en) 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
KR101968474B1 (ko) * 2017-06-02 2019-04-15 주식회사 애포샤 플래시 캐시에서 트랜잭션 지원 방법 및 장치
US11397677B2 (en) * 2020-04-30 2022-07-26 Hewlett Packard Enterprise Development Lp System and method for tracking persistent flushes
US11416407B2 (en) * 2020-05-22 2022-08-16 Dell Products, L.P. Method and apparatus for cache slot allocation based on data origination location or final data destination location
US11928349B2 (en) * 2021-04-23 2024-03-12 Qualcomm Incorporated Access control configurations for shared memory
CN116737086B (zh) * 2023-08-14 2023-11-17 江苏云途半导体有限公司 一种嵌入式非易失性存储器读写方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271669A (ja) * 1994-03-28 1995-10-20 Nec Eng Ltd キャッシュメモリ制御回路
JPH10275112A (ja) * 1997-03-31 1998-10-13 Nec Corp キャッシュメモリシステム
JP2006091995A (ja) * 2004-09-21 2006-04-06 Toshiba Microelectronics Corp キャッシュメモリのライトバック装置
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5802582A (en) 1996-09-10 1998-09-01 International Business Machines Corporation Explicit coherence using split-phase controls
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US7089374B2 (en) * 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7360031B2 (en) 2005-06-29 2008-04-15 Intel Corporation Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7877549B1 (en) 2007-06-12 2011-01-25 Juniper Networks, Inc. Enforcement of cache coherency policies using process synchronization services
EP2332043B1 (en) * 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
CN101650972B (zh) * 2009-06-12 2013-05-29 东信和平科技股份有限公司 智能卡的非易失性存储器数据更新方法
GB2484088B (en) 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
US9208071B2 (en) * 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
CN103946811B (zh) * 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
US8935475B2 (en) 2012-03-30 2015-01-13 Ati Technologies Ulc Cache management for memory operations
US9092341B2 (en) * 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US9547594B2 (en) * 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
CN105339908B (zh) * 2013-07-26 2018-09-11 英特尔公司 用于支持持久存储器的方法和装置
US20150074336A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Memory system, controller and method of controlling memory system
WO2016018421A1 (en) * 2014-07-31 2016-02-04 Hewlett-Packard Development Company, L.P. Cache management for nonvolatile main memory
GB2529148B (en) 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
US10241911B2 (en) 2016-08-24 2019-03-26 Hewlett Packard Enterprise Development Lp Modification of multiple lines of cache chunk before invalidation of lines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271669A (ja) * 1994-03-28 1995-10-20 Nec Eng Ltd キャッシュメモリ制御回路
JPH10275112A (ja) * 1997-03-31 1998-10-13 Nec Corp キャッシュメモリシステム
JP2006091995A (ja) * 2004-09-21 2006-04-06 Toshiba Microelectronics Corp キャッシュメモリのライトバック装置
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111417934A (zh) * 2017-12-05 2020-07-14 Arm有限公司 用于处理写入操作的装置和方法
JP2021505994A (ja) * 2017-12-05 2021-02-18 エイアールエム リミテッド 書込み動作を処理するための装置及び方法
JP7320508B2 (ja) 2017-12-05 2023-08-03 アーム・リミテッド 書込み動作を処理するための装置及び方法

Also Published As

Publication number Publication date
KR102409050B1 (ko) 2022-06-15
GB201413772D0 (en) 2014-09-17
KR20170037999A (ko) 2017-04-05
US11429532B2 (en) 2022-08-30
WO2016020637A1 (en) 2016-02-11
EP3177993A1 (en) 2017-06-14
IL250300A0 (en) 2017-03-30
GB2529148B (en) 2020-05-27
EP3177993B1 (en) 2021-06-23
CN106663057A (zh) 2017-05-10
JP6684266B2 (ja) 2020-04-22
GB2529148A (en) 2016-02-17
US20170220478A1 (en) 2017-08-03
CN117033259A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
US20200264980A1 (en) Apparatus and method of handling caching of persistent data
JP6684266B2 (ja) 不揮発性メモリへの書き込み操作
JP6514569B2 (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
US10445238B1 (en) Robust transactional memory
US20080046657A1 (en) System and Method to Efficiently Prefetch and Batch Compiler-Assisted Software Cache Accesses
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
US9672161B2 (en) Configuring a cache management mechanism based on future accesses in a cache
US10331568B2 (en) Locking a cache line for write operations on a bus
CN106897230B (zh) 用于处理原子更新操作的装置和方法
JPH07146820A (ja) フラッシュメモリの制御方法及び、それを用いた情報処理装置
JPS61156346A (ja) 記憶階層の先取り装置
JPH06243039A (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US7657667B2 (en) Method to provide cache management commands for a DMA controller
US20120124291A1 (en) Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
JP5129023B2 (ja) キャッシュメモリ装置
US10635614B2 (en) Cooperative overlay
JP2006318471A (ja) データ処理におけるメモリキャッシング
US10169234B2 (en) Translation lookaside buffer purging with concurrent cache updates
US20230409472A1 (en) Snapshotting Pending Memory Writes Using Non-Volatile Memory
US6766427B1 (en) Method and apparatus for loading data from memory to a cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200327

R150 Certificate of patent or registration of utility model

Ref document number: 6684266

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