JP5323030B2 - メモリ装置及びメモリ制御方法 - Google Patents

メモリ装置及びメモリ制御方法 Download PDF

Info

Publication number
JP5323030B2
JP5323030B2 JP2010268482A JP2010268482A JP5323030B2 JP 5323030 B2 JP5323030 B2 JP 5323030B2 JP 2010268482 A JP2010268482 A JP 2010268482A JP 2010268482 A JP2010268482 A JP 2010268482A JP 5323030 B2 JP5323030 B2 JP 5323030B2
Authority
JP
Japan
Prior art keywords
data
address
unit
read
memory
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.)
Active
Application number
JP2010268482A
Other languages
English (en)
Other versions
JP2012118797A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010268482A priority Critical patent/JP5323030B2/ja
Priority to US13/278,973 priority patent/US8856468B2/en
Publication of JP2012118797A publication Critical patent/JP2012118797A/ja
Application granted granted Critical
Publication of JP5323030B2 publication Critical patent/JP5323030B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

本実施形態は、例えばSSD(Solid State Drive)に適用されるメモリ装置及びメモリ制御方法に関する。
近時、ハードディスクの代替としてSSDが開発されている。このメモリ装置は、記憶媒体としてNANDフラッシュメモリが用いられ、論理アドレスを物理アドレスへと変換するアドレス変換方式、及び追記書き込み方式が採用されている。さらに、このメモリ装置は、空きスペースを削減し、容量を節約するため、書き込みデータの移動処理が行われる。データの移動処理と、論理アドレスが同一であるユーザデータの書き込みとが並列して行われる場合、アドレス変換テーブルに記録された最新データの位置が失われてしまう。これを回避するため、このような場合、ユーザデータの書き込みが待たされる。
特開2001−184254号公報
本実施形態は、ユーザデータの書き込み処理速度を向上することが可能なメモリ装置及びメモリ制御方法を提供しようとするものである。
実施形態のメモリ装置は、メモリ部と、論理アドレスと、この論理アドレスに対応され、前記メモリ部の物理アドレスを推定するための中間アドレスを記憶する第1の記憶部と、前記中間アドレスと、この中間アドレスに対応する前記物理アドレスを記憶する第2の記憶部と、前記メモリ部内に書き込まれたデータを移動処理するデータ移動処理部と、前記データ移動処理部により、前記メモリ部に書き込まれた前記データが読み出された時、前記データに対応した論理アドレスと、前記第1の記憶部の前記論理アドレスと対応する中間アドレス、及び前記データの読み出しが成功したかどうかを示すフラグ記憶される第3の記憶部と、を具備し、前記データ移動処理部によるデータの移動処理において、前記第3の記憶部に記憶された前記フラグが前記データの読み出し成功を示す場合、前記第3の記憶部に記憶された前記中間アドレスと前記データに対応した論理アドレスに従って求められた前記第1の記憶部に記憶された中間アドレスとを比較し、前記データの移動処理中に前記メモリ部の同一論理アドレスに対して、書き込みが行われたかどうかを判定し、これら中間アドレスが不一致である場合、書き込みが行われているとして、前記データの移動処理を無効化させる制御手段とを具備することを特徴とする。
本実施形態に係るメモリ装置を概略的に示す構成図。 図1に示す一部の構成を示す概略的に示す構成図。 図2に示すアドレス解決部の動作を示すフローチャート。 図2に示すテーブル更新部の動作を示すフローチャート。 本実施形態に係るデータ移動処理の動作を概略的に示す図。 本実施形態の動作を比較するために示すものであり、図2に示す一部の構成を示す図。 図6Aと異なる動作状態を示す図。 図6Bと異なる動作状態を示す図。 図6Cと異なる動作状態を示す図。 本実施形態の動作を示すものであり、図2に示す一部の構成を示す図。 図7Aと異なる動作状態を示す図。 図7Bと異なる動作状態を示す図。 本実施形態の図7A乃至図7Cと異なる動作を示すものであり、図2に示す一部の構成を示す図。 図8Aと異なる動作状態を示す図。 図8Bと異なる動作状態を示す図。 図8Cと異なる動作状態を示す図。 本実施形態の図7A乃至図7C、図8A乃至図8Dと異なる動作を示すものであり、図2に示す一部の構成を示す図。 図9Aと異なる動作状態を示す図。 図9Bと異なる動作状態を示す図。 図9Cと異なる動作状態を示す図。
以下、実施の形態について、図面を参照して説明する。
図1は、本実施形態に係るメモリシステムの概略構成を示している。このメモリシステム11は、フロントエンド12、バックエンド13、CPU14、CPU15、コマンド系バス(以下、コマンドバスと称す)16、データ系バス(以下、データバスと称す)17、データバッファ18、NANDチャネル19、NANDフラッシュメモリ20、SAS(Serial Attached SCSI)21により構成されている。
フロントエンド12は、CPU14により制御され、データの書き込み時、SAS21を介してホスト機器22からコマンド、データ、アドレスを受け、データバス17を介してデータをデータバッファ18に供給し、コマンドバス16を介してコマンド及びアドレスをCPU14に供給する。また、データの読み出し時、NANDフラッシュメモリ20から読み出され、NANDチャネル19、バックエンド13、データバス17を介してデータバッファ18に保持されたデータを、SAS21を介してホスト機器22に転送する。
バックエンド13は、CPU15により制御される。このバックエンド13は、例えばコマンドキューを有し、CPU15からコマンドバス16を介してコマンドキューにコマンドを受ける。データの書き込み時、データバス17を介してデータバッファ18からデータを受け、NANDチャネル19を介してNANDフラッシュメモリ20にデータを転送する。また、データの読み出し時、NANDフラッシュメモリ20から読み出されたデータを、NANDチャネル19を介して受け、データバス17を介してデータバッファ18に転送する。このバックエンド13は、後述するように、アドレス解決部、データ書き込み部、テーブル更新部、及びスコアボード等を有し、NANDフラッシュメモリ20のアドレス、データ、及び各種プロトコルを管理する。
データバッファ18は、例えばRAM(Random Access Memory)により構成され、データバス17を介してフロントエンド12、及びバックエンド13から供給されたデータを記憶するとともに、後述するアドレスの変換テーブルを記憶する。
NANDフラッシュメモリ20は、複数のメモリセルがマトリクス状に配置されたメモリ部としてのメモリセルアレイを有し、論理アドレスを物理アドレスに変換するアドレス変換方式と、ページ単位にデータを空き領域に順次書き込む追記書き込み方式が用いられている。さらに、NANDフラッシュメモリ20は、書き込まれたデータを空き領域に移動し、無駄な空き領域を削減するデータ移動処理を備えている。
図2は、上記データバッファ18、バックエンド13、CPU15、NANDフラッシュメモリ20(800)の概略的な機能を示している。
データバッファ18は、第1、第2の記憶部としての変換テーブル600、700を有している。NANDフラッシュメモリ20の物理メモリ全体は、所定数のページ(例えば数千ページ)毎に論理アドレスが設定されている。これら論理アドレスの一部が中間アドレスとともに変換テーブル600に記憶される。この中間アドレスは、物理アドレスを推定するためのアドレスである。この変換テーブル600は全てのエントリを使い切った場合、CPU15に要求が出され、空白のエントリにより構成された新たな変換テーブル600がCPU15によりデータバッファ18内に用意される。
また、変換テーブル700は、NANDフラッシュメモリ20の物理メモリに対応して割り付けられた中間アドレスを物理アドレスとともに記憶する。この変換テーブル700も、変換テーブル600と同様に、中間アドレスを使い切った場合、CPU15に要求が出され、新たな変換テーブル700がCPU15によりデータバッファ18内に用意される。
バックエンド13は、例えばアドレス解決部300、データ書き込み部400、テーブル更新部500、及びスコアボード100を含んでいる。
アドレス解決部300は、CPU15から書き込みコマンドが供給された場合、変換テーブル600、700を用いて、書き込みコマンドとともに供給された論理アドレスを中間アドレスから物理アドレスに変換する。
データ書込み読出し部400は、アドレス解決部300及びテーブル更新部500に接続され、物理メモリ800(NANDフラッシュメモリ20)に対してデータの書込み、及び読出しを制御する。すなわち、データ書込み読出し部400は、書き込みコマンドに従って、アドレス解決部300により割り当てられた物理アドレスに従って、データバッファ18に保持されたデータを物理メモリ800に書き込む。また、読出しコマンドに従って、物理メモリ800からデータを読み出す。データ書込み読出し部400は、物理メモリ800に対するデータの書き込みが成功したか否かを示す信号、及びデータの読出しが成功したか否かを示す信号を出力する。
テーブル更新部500は、データ書込み読出し部400、変換テーブル600、700、スコアボード100に接続され、データの書き込み、読み出し時、変換テーブル600、700を検索し、データの書き込み時、必要なアドレスを更新する。また、データの読み出し時、スコアボード100の内容を更新する。
スコアボード100は、論理アドレス110に対応して中間アドレス120を記憶するとともに、最新データの読出しが成功したかどうかを示す最新データ読出し成功フラグ130を記憶する。
データ移動処理部200は、既に書き込まれたデータを読み出し、この読み出されたデータを新たに割り付けられた領域に書き込む処理を行う。例えば記憶領域(ブロック)に記憶されたデータの一部のみを書き換える場合、書き換える新データを消去済みの新ブロックに書き込み、書き換えられない残りのデータを旧ブロックから読み出し、新ブロックに書き込む必要がある。データ移動処理部200は、このようなデータの移動処理を実行する。
図3は、上記アドレス解決部300の動作を具体的に示している。アドレス解決部300は、例えばユーザデータの書き込み時において、CPU15から発行されたコマンドを受け、データの移動処理において、テーブル更新部500から発行されたコマンドを受ける。
アドレス解決部300は、コマンドが供給されると、コマンドの種別を判別する(S11)。この判別の結果、供給されたコマンドが書き込みコマンドである場合、変換テーブル700が参照され、コマンドの投入順序に従って、変換テーブル700に予め設定された中間アドレス、及び物理アドレスがコマンドに割り当てられる(S12)。
また、判別の結果、供給されたコマンドが読み出しコマンドである場合、コマンドに付されたアドレスの種別が論理アドレスであるか、物理アドレスであるかが判別される(S13)。この結果、物理アドレスであると判別された場合、アドレス解決をせずに終了される。
一方、論理アドレスであると判別された場合、コマンドに付加された論理アドレスと一致する論理アドレスが、変換テーブル600から検索され、この論理アドレスに対応する中間アドレスが読み出される(S14)。次いで、読み出された中間アドレスと一致する中間アドレスが、変換テーブル700から検索され、この検索された中間アドレスに対応する物理アドレスが読み出される。この物理アドレスは、入力されたコマンドに割り当てられる(S15)。
図4は、テーブル更新部500の動作を具体的に示している。後述するように、データ書込み読出し部400により、データの書き込み、又は読み出し処理が終了した場合、データ書込み読出し部400から書き込みが成功したか否かを示す信号、又は読み出しが成功したか否かを示す信号が出力される。テーブル更新部500は、これらの信号に従って動作する。
テーブル更新部500は、先ず、現在供給されているコマンドの種別を判別する。すなわち、コマンドがデータの移動処理であるか否かを判別する(S21)。この判別の結果、データ移動処理ではない場合、供給されたコマンドが読み出しコマンドであるか書き込みコマンドであるかを判別する(S22)。この結果、コマンドが読み出しコマンドである場合、CPU15に処理の終了が通知される(S25)。
また、判別の結果、供給されたコマンドが書き込みコマンドである場合、データ書込み読出し部400から供給される書き込みが成功したか否かを示す信号が判別される(S23)。この結果、書き込みが失敗したものである場合、CPU15に処理の終了が通知される(S25)。また、書き込みが成功している場合、書き込み変換テーブル600の対応する論理アドレスのエントリに書き込みに使用した中間アドレスを登録する(S24)。この後、CPU15に処理の終了が通知される(S25)。
一方、前記ステップS21において、供給されたコマンドがデータ移動処理のコマンドであると判別された場合、コマンドが書き込みコマンドであるか読み出しコマンドであるかが判別される(S26)。
この結果、供給されたコマンドが読み出しコマンドであると判別された場合、変換テーブル600より物理メモリ800から読み出した論理アドレスに従って最新の中間アドレスが求められる(S27)。この後、変換テーブル700より、変換テーブル600より求めた最新の中間アドレスに従って、最新の物理アドレスが求められる(S28)。次いで、変換テーブル700から求めた最新の物理アドレスとコマンドに付加された物理アドレスとが比較され、両物理アドレスが一致している場合、最新データの読み出しに成功したと判定され、両物理アドレスが不一致である場合、最新データの読み出しに失敗したと判定される(S29)。この後、論理アドレス、最新の中間アドレス、及び最新の読み出し成功フラグがスコアボード100に登録される(S30)。最新データの読み出しに成功したと判定された場合、スコアボード100の最新データ読み出し成功フラグ130が“1”に設定され、失敗したと判定された場合、最新データ読み出し成功フラグ130が“0”に設定される。この後、アドレス解決部300へ書き込みコマンドが供給される(S31)。
一方、ステップS26において、書き込みコマンドであると判別された場合、データ書込み読出し部400において、書き込みコマンドに応じた書き込み動作が行われた後、書込み読出し部400から供給される書き込みが成功したか否かを示す信号が判別される(S32)。この結果、書き込みが失敗している場合、CPU15へ処理の終了が通知される(S25)。
また、書き込みが成功している場合、変換テーブル600より、書き込みコマンドに付加された論理アドレスに従って、最新の中間アドレスが求められる(S33)。この後、スコアボード100より、書き込みコマンドに付加された論理アドレスに従って、読み出し時の中間アドレス及び最新の読み出し成功フラグが検索される(S34)。次に、この検索された最新の読出し成功フラグが“0”であるか“1”であるかが判定される。この結果、フラグが“0”である場合、CPU15へ処理の終了が通知される(S35)。
また、フラグが“1”である場合、変換テーブル600より検索された最新の中間アドレスとスコアボード100の中間アドレスが比較される(S36)。この比較の結果、これらが一致している場合、ステップS24において、変換テーブル600の対応する論理アドレスのエントリに書き込みに使用した中間アドレスが登録される(S24)。一方、比較の結果、両中間アドレスが不一致である場合、CPU15へ処理の終了が通知される(S25)。
図5は、図2に示すCPU15、アドレス変換部300、データ書込み読出し部400、テーブル更新部500の概略的な動作シーケンスを示すものであり、図3において図1、図2と同一部分には同一符号を付している。図3を参照して、図2の動作について概略的に説明する。
例えばユーザデータの書き込み処理において、先ず、CPU15からアドレス解決部300に、書き込みコマンドが投入される(S41)。この書き込みコマンドには、論理アドレスが付加されている。アドレス解決部300は、予め与えられた変換テーブル700から物理アドレスを得る。この物理アドレスを書き込みコマンドに割り付ける(S42)。この物理アドレスが付与された書き込みコマンドは、アドレス解決部300から書き込み部400に供給される(S43)。
データ書込み読出し部400により、物理メモリ800(NANDフラッシュメモリ20)の該当する物理アドレスにデータが書き込まれる(S44)。このとき、書き込みコマンドに付加された論理アドレスが付随情報としてデータと共に物理メモリ800に書き込まれる。
この後、データ書込み読出し部400から書き込みが成功したか否かがテーブル更新部500に通知される(S45)。このテーブル更新部500は、データ書込み読出し部400から書き込みが成功した旨の通知が有った場合、変換テーブル600を更新する(S46)。すなわち、変換テーブル600の論理アドレスに対応して中間アドレスが記録される。変換テーブル600の更新が完了した場合、テーブル更新部500からUPU15に終了通知が送られる(S47)。
一方、データ移動処理は、データの読み出し、及びデータの書き込み処理を含んでいる。データの読み出し処理は、ユーザによるデータ読み出し処理と類似する。しかし、ユーザによるデータ読み出し処理は、論理アドレスが使用されるが、データ移動処理におけるデータ読み出し処理は、物理アドレスが用いられる。
データ移動処理において、CPU15から物理読み出しコマンドが出力される場合、物理読み出しコマンドは、論理アドレスを用いる場合のようにアドレス解決部300において、アドレス解決を行わず、データ書込み読出し部400に供給される(S51、S52)。データ書込み読出し部400は、物理アドレスにより直接、物理メモリ800からデータを読み出す(S53)。この読み出し動作の後、データ書込み読出し部400から読み出しが、成功したか否かを示す信号が出力される(S54)。テーブル更新部500は、データ書込み読出し部400から読み出しが成功したか否かを示す信号が供給されると、この信号に従って、スコアボード100の最新データ読み出し成功フラグ130を設定する(S55)。
この後、テーブル更新部500は、読み出したデータを書き込むべく、書き込みコマンドを発生し、アドレス解決部300に供給する(S56)。すなわち、テーブル更新部500は、アドレス解決部300に書き込みコマンドを供給する。アドレス解決部300は、変換テーブル700を参照し、供給された書き込みコマンドに、空きブロックに対応する物理アドレスを割り当て(S57)、この物理アドレスと書き込みコマンドをデータ書込み読出し部400に供給する(S58)。
データ書込み読出し部400は、アドレス解決部300から供給された書き込みコマンドに従って、物理メモリ800に、上記読み出されたデータを書き込む(S59)。この後、データ書込み読出し部400は、書き込みが成功したか否かを示す信号を出力する(S60)。テーブル更新部500は、データ書込み読出し部400から書き込みが成功したことを示す信号を受けると、スコアボード100を確認するとともに、変換テーブル600を更新する(S61)。すなわち、スコアボード100の最新データ読み出し成功フラグが成功を示す場合、及び変換テーブル600が更新される。この後、データ更新部500は、終了通知をCPU15に供給する(S62)。
図6A乃至図6Dは、本実施形態を使用しない場合を示す比較例である。この比較例は、データ移動処理中にユーザ書き込みが行われて最新データ位置が矛盾する場合における変換テーブル600、700、及び物理メモリ800の状態を示している。
このメモリ装置において、データ移動処理は、物理読み出しコマンドで最新のデータを物理メモリ800から読み出し、その後、論理書き込みコマンドにより新たな中間アドレス・物理アドレスにデータが移動される。
図6A(ステップ1)は、データ移動対象となる論理アドレス=201のデータが書き込まれた直後の状態を示している。データは物理メモリ800の物理アドレス=213に書き込まれ、それに対応する中間アドレス=202が変換テーブル600の論理アドレス=201のエントリに登録される。また、物理メモリ800の物理アドレス=213に対応して、論理アドレス=201が書き込まれる。
図6B(ステップ2)は、データ移動処理の一部として、直前に書き込まれた物理アドレス=213のデータを、物理読み出しコマンド210により読み出す場合を示している。このデータは論理アドレス=201のデータとしては、この時点において最新のものである。
図6C(ステップ3)は、ステップ2で使用した論理アドレス=201への新たなユーザ書き込みコマンドが実行された場合を示している。この場合、新たなデータは物理メモリ800の物理アドレス=233に書き込まれたものとする。このため、変換テーブル600の論理アドレス=201のエントリに新たな中間アドレス=232が登録される。この時点において、物理アドレス=213のデータは旧いデータとなる。したがって、ステップ2で読み出したデータも旧いデータとなる。
図6D(ステップ4)は、データ移動処理の一部として、ステップ2で読み出した旧いデータを論理書き込みコマンドにより物理アドレス=223に書き込む場合を示している。本実施形態を使用しない場合、前述した手順に基づき、変換テーブル600が物理アドレス=223に対応する中間アドレス=222に更新される。この結果、変換テーブル600の論理アドレス=201のエントリは、最新データではなく旧いデータを指すことになる。このため、最新データ位置の情報が失われる。
したがって、本実施形態を適用しない場合、上記現象を避けるため、データ移動処理を行っている最中は、同一論理アドレスへのユーザ書き込みコマンドを禁止する必要がある。このため、ユーザ書き込みコマンドの処理速度が低下することとなる。
これに対して、図7A乃至図7Dは、本実施形態におけるデータ移動処理を具体的に示すものであり、データ移動処理に伴う変換テーブル600、700、物理メモリ800、及びスコアボード100の状態を示している。
図7A(ステップ1)は、移動対象のデータが、ユーザの書き込みコマンドにより書き込まれた状態を示している。すなわち、データ移動対象となる論理アドレス=201のデータが書き込まれた直後の状態を示している。データは物理メモリ800の物理アドレス=213に書き込まれ、それに対応する中間アドレス=202が変換テーブル600の論理アドレス=201のエントリに登録される。また、物理メモリ800の物理アドレス=213に対応して、論理アドレス=201が書き込まれる。
次に、図7B(ステップ2)は、データ移動処理の一部としての物理読み出しコマンド210が実行された後の状態を示している。物理読み出しコマンド210に従って、物理メモリ800の物理アドレス=213からデータが読み出された後、物理メモリ800上の論理アドレス=201に基づき、変換テーブル600が検索され、中間アドレス=202が求められる(図4、S27)。次いで、中間アドレス=202に基づき、変換テーブル700が検索され、物理アドレス=213が求められる(図4、S28)。変換テーブル600、700を経由して求めた物理アドレス=213と、読み出しコマンド210実行時の物理アドレス=213が等しいため、最新データの読み出しが成功したと判定される(図4、S29)。最後にスコアボード100に、論理アドレス110=201、中間アドレス120=202、最新読み出し成功フラグ130=1が登録される(図4、S30)。
図7C(ステップ3)は、データ移動処理の一部である論理書き込みコマンド220の実行後の状態を示している。すなわち、テーブル更新部500から供給された論理書き込みコマンド220に従って、物理メモリ800の物理アドレス223に書き込みが実行された後、変換テーブル600を更新する前に次の判断が行われる。
先ず、変換テーブル600が論理アドレス=201で検索され、直前に登録された中間アドレス=202が求められる(図4、S33)。次に、スコアボード100が論理アドレス=201で検索され、そこに登録された中間アドレス=202と最新読み出し成功フラグが求められる(図4、S34)。この後、最新読み出し成功フラグ130が判断される(図4、S35)。この場合、最新読み出し成功フラグ130は、“1”であるため、スコアボード100から読み出された中間アドレス120=202と変換テーブル600から求めた中間アドレス=202が比較される(図4、S36)。これらの値は等しいため、物理読み出しコマンド210が実行された後、論理書き込みコマンド220が実行されるまでに、ユーザによる書き込みコマンドが実行されていないことが分かる。また、最新読み出し成功フラグが“1”であるため、物理読み出しコマンド210の実行前にも、ユーザによる書き込みコマンドの割り込みが無いことを確認出来る。
これらが確認された後、変換テーブル600の論理アドレス=201のエントリが中間アドレス=202から222に更新される。したがって、論理アドレス=201に対応する最新データの位置が物理アドレス223により示される(図4、S24)。
図8A乃至図8Dは、本実施形態を使用した場合において、データ移動処理の論理書き込みコマンドの前に、ユーザ書き込みが行われたことを、スコアボード100を用いて検出する場合を示している。
すなわち、図8B(ステップ2)に示すデータ移動処理の物理読み出しコマンド210の実行と、図8D(ステップ4)に示す論理書き込みコマンド220との間の、図8C(ステップ3)において、ユーザ書き込みコマンドが実行される。
図8A(ステップ1)、図8B(ステップ2)は、図7A、図7Bと同様である。図8C(ステップ3)は、論理アドレス201に対してユーザ書き込みコマンドが実行され、変換テーブル600の論理アドレス=201のエントリが、中間アドレス=232に更新され、図8B(ステップ2)で、物理メモリ800から読み出した物理アドレス=213のデータが旧くなった状態を示している。
図8D(ステップ4)は、データ移動処理の一部である論理書き込みコマンド220の実行後の状態である。この場合、論理書き込みコマンド220に従って、変換テーブル600から論理アドレス=201に対応する最新の中間アドレス=232が求められる(図4、S33)。次いで、スコアボード100より、論理アドレス110=201に従って中間アドレス120=202、及び最新読み出し成功フラグ130=1が求められる(図4、S34)。
次に、最新読み出し成功フラグが判定される(図4、S35)。この場合、最新読み出し成功フラグ130は“1”であるため、変換テーブル600から求めた中間アドレス=232とスコアボード100から求めた中間アドレス=202とが比較される(図4、S36)。この比較の結果、これらは不一致であるため、物理読み出しコマンド210実行後、論理書き込みコマンド220の実行までにユーザ書き込みコマンドが行われたことが検出される。この不一致が検出された場合、論理書き込みコマンド220で書き込んだデータは図8B(ステップ2)の旧いものであるため、論理書き込みコマンド220に従った処理は、変換テーブル600を更新せず、CPU15に終了を通知する(図4、S25)。したがって、論理書き込みコマンド220が無効化される。すなわち、データ移動処理が無効化される。
論理アドレス=201に対応する最新データは、図8C(ステップ3)で書き込んだ中間アドレス=232、物理アドレス=233のものであることが、変換テーブル600、変換テーブル700から求められる。したがって、最新データの位置を正しく管理することができる。
図9A乃至図9Dは、本実施形態を使用した場合において、データ移動処理の物理読み出しコマンドの前に、ユーザ書き込みが行われたことを、スコアボードを用いて検出する場合を示している。
図9A(ステップ1)は、図8Aと同様である。
図9B(ステップ2)は、図9C(ステップ3)で使用する物理アドレスをソフトウェアが計算した後、ユーザ書き込みコマンドが実行された状態を示している。最新データが物理メモリ800の物理アドレス=233に書き込まれ、変換テーブル600の論理アドレス=201のエントリには、変換テーブル700から求められた中間アドレス=232が登録される。
図9C(ステップ3)は、データ移動処理の一部である物理読み出しコマンド210が実行された後の状態を示している。物理読み出しコマンド210のデータ位置算出は、ス図9B(ステップ2)よりも前にソフトウェアによって行われたものであり、現時点において最新ではない物理アドレス=213のデータが読み出される。図8B(ステップ2)と同様に、物理メモリ800上の論理アドレス=201に従って、変換テーブル600が検索され、中間アドレス=232が求められる(図4、S27)。この求められた中間アドレス=232に従って変換テーブル700が検索され、物理アドレス=233が求められる(図4、S28)。変換テーブル600、700を経由して求めた物理アドレス=233と、物理読み出しコマンドに付加された物理アドレス=213とが比較される。しかし、これら中間アドレスは一致しないため、最新のデータの読み出しに失敗したことが分かる。このため、最新読み出し成功フラグは“0”と判定される(図4、S29)。この後、スコアボード100に、論理アドレス110=201、中間アドレス120=232、最新読み出し成功フラグ130=0が登録される(図4、S30)。
図9D(ステップ4)は、データ移動処理の一部である論理書き込みコマンド220の実行後の状態を示している。テーブル更新部500からの論理書き込みコマンド220に従って、変換テーブル600から求めた直前の登録中間アドレス=232(図4、S33)と、スコアボード100に記録された中間アドレス120=232と、最新読み出し成功フラグが読み出される(図4、S34)。この後、最新読み出し成功フラグが“0”であることが判別される(図4、S35)。これにより、物理読み出しコマンド210の実行前にユーザ書き込みコマンドの割り込みがあったことが検出される。これが検出された場合、論理書き込みコマンド220で書き込んだデータは、図9C(ステップ3)において書き込まれた旧いデータである。このため、論理書き込みコマンド220に従った処理は、変換テーブル600を更新せず、CPU15に終了を通知する(図4、S25)。したがって、論理書き込みコマンド220が無効化される。すなわち、データ移動処理が無効化される。
論理アドレス=201に対応する最新データは、図9B(ステップ2)で書き込んだ中間アドレス=232、物理アドレス=233のものであることが、変換テーブル600、変換テーブル700から求められる。したがって、最新データ位置を正しく管理することができる。
上記実施形態によれば、スコアボード100を設け、このスコアボード100に論理アドレス110に対応して中間アドレス120、及び最新データ読み出し成功フラグ130を登録している。このため、データ移動処理において、物理読み出しコマンド実行後の論理書き込みコマンドにおいて、スコアボード100に登録された中間アドレス及び最新読み出し成功フラグ130を確認することにより、物理読み出しコマンドが実行された後、論理書き込みコマンドが実行されるまでにユーザによる書き込みコマンドが実行されたかどうかを確認できる。このため、データ移動処理を行っている最中においても同一論理アドレスへのユーザ書き込みコマンドを禁止する必要がない。したがって、ユーザ書き込みコマンドの処理速度が低下することを防止できる。
さらに、最新読み出し成功フラグが“0”である場合、物理読み出しコマンド210の実行前に、ユーザによる書き込みコマンドの割り込みがあったことを確認できる。この場合、データ移動処理を行った場合、変換テーブル600を更新しないため、最新のデータ位置を正しく管理することが可能である。
尚、スコアボード100の最新読み出し成功フラグ130は、物理読み出しコマンド210に従って設定したが、これに限定されるものではなく、例えばユーザ書き込みコマンドに従って設定してもよい。
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
12…フロントエンド、13…バックエンド、14、15…CPU、18…データバッファ、20…NANDフラッシュメモリ、100…スコアボード、200…データ移動処理部、300…アドレス解決部、400…データ書込み読出し部、500…テーブル更新部、600、700…変換テーブル、800…物理メモリ(NANDフラッシュメモリ)。

Claims (5)

  1. メモリ部と、
    論理アドレスと、この論理アドレスに対応され、前記メモリ部の物理アドレスを推定するための中間アドレスを記憶する第1の記憶部と、
    前記中間アドレスと、この中間アドレスに対応する前記物理アドレスを記憶する第2の記憶部と、
    前記メモリ部内に書き込まれたデータを移動処理するデータ移動処理部と、
    前記データ移動処理部により、前記メモリ部に書き込まれた前記データが読み出された時、前記データに対応した論理アドレスと、前記第1の記憶部の前記論理アドレスと対応する中間アドレス、及び前記データの読み出しが成功したかどうかを示すフラグ記憶される第3の記憶部と、
    を具備し、
    前記データ移動処理部によるデータの移動処理において、前記第3の記憶部に記憶された前記フラグが前記データの読み出し成功を示す場合、前記第3の記憶部に記憶された前記中間アドレスと前記データに対応した論理アドレスに従って求められた前記第1の記憶部に記憶された中間アドレスとを比較し、前記データの移動処理中に前記メモリ部の同一論理アドレスに対して、書き込みが行われたかどうかを判定し、これら中間アドレスが不一致である場合、書き込みが行われているとして、前記データの移動処理を無効化させる制御手段と
    を具備することを特徴とするメモリ装置。
  2. 前記第1、第2、第3の記憶部に接続され、前記第1、第2、第3の記憶部の内容を更新する更新部をさらに具備する請求項1記載のメモリ装置。
  3. 前記更新部は、前記データ移動処理部によるデータの移動処理において、前記メモリ部から前記データの読み出しに成功した場合、前記第3の記憶部に成功したことを示すフラグを設定することを特徴とする請求項2記載のメモリ装置。
  4. 前記更新部は、前記データ移動処理部によるデータの移動処理において、前記メモリ部から前記データの読み出しに失敗した場合、前記第3の記憶部に失敗したことを示すフラグを設定することを特徴とする請求項2記載のメモリ装置。
  5. メモリ部内のデータを移動する移動処理において、読み出しコマンドに従って前記メモリ部の第1の物理アドレスにより、前記メモリ部から書き込まれたデータを読み出し、
    前記移動処理により、前記メモリ部に書き込まれた前記データが読み出された時、前記データに対応した論理アドレスと、前記第1の記憶部の前記論理アドレスと対応する中間アドレス、及び前記データの読み出しが成功したかどうかを示すフラグを第3の記憶部に設定し、
    書き込みコマンドに従って前記読み出された前記データを第2の物理アドレスにより前記メモリ部に書き込み、
    前記第3の記憶部に記憶された前記フラグが前記データの読み出し成功を示す場合、前記第3の記憶部に記憶された前記中間アドレスと前記データに対応した論理アドレスに従って求められた前記第1の記憶部に記憶された中間アドレスとを比較し、前記データの移動処理中に前記メモリ部の同一論理アドレスに対して、書き込みが行われたかどうかを判定し、これら中間アドレスが不一致である場合、書き込みが行われているとして、前記データの移動処理を無効化させる
    ことを特徴とするメモリ制御方法。
JP2010268482A 2010-12-01 2010-12-01 メモリ装置及びメモリ制御方法 Active JP5323030B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010268482A JP5323030B2 (ja) 2010-12-01 2010-12-01 メモリ装置及びメモリ制御方法
US13/278,973 US8856468B2 (en) 2010-12-01 2011-10-21 Memory device capable of improving write processing speed and memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010268482A JP5323030B2 (ja) 2010-12-01 2010-12-01 メモリ装置及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2012118797A JP2012118797A (ja) 2012-06-21
JP5323030B2 true JP5323030B2 (ja) 2013-10-23

Family

ID=46162120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010268482A Active JP5323030B2 (ja) 2010-12-01 2010-12-01 メモリ装置及びメモリ制御方法

Country Status (2)

Country Link
US (1) US8856468B2 (ja)
JP (1) JP5323030B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6180271B2 (ja) * 2013-10-09 2017-08-16 日本放送協会 映像記録装置及び映像記録方法
CN105353989B (zh) * 2015-11-19 2018-12-28 华为技术有限公司 存储数据访问方法及相关的控制器、设备、主机和系统
KR20200143871A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 스토리지를 포함하는 전자 장치 및 그의 스토리지 이용 방법
JP2021033849A (ja) * 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6375948A (ja) 1986-09-19 1988-04-06 Fujitsu Ltd ガ−ベジコレクシヨン制御方式
JPS6393055A (ja) 1986-10-07 1988-04-23 Fujitsu Ltd 実時間型ガ−ベジコレクシヨン支援装置
EP0649583B1 (en) * 1992-04-06 1997-02-12 Nortel Networks Corporation Method for atm switch core interface
JP4333676B2 (ja) * 1997-11-21 2009-09-16 オムロン株式会社 プログラム制御装置、プログラム制御方法、およびプログラム記録媒体
JP4173642B2 (ja) * 1999-02-22 2008-10-29 株式会社ルネサステクノロジ メモリカードのデータ書き込み方法
JP2001184254A (ja) * 1999-12-27 2001-07-06 Nec Corp ガーベージコレクション機能を有する情報処理装置およびその方法ならびに記録媒体
JP2001265750A (ja) * 2000-03-17 2001-09-28 Omron Corp メモリ制御装置
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value

Also Published As

Publication number Publication date
US20120140561A1 (en) 2012-06-07
JP2012118797A (ja) 2012-06-21
US8856468B2 (en) 2014-10-07

Similar Documents

Publication Publication Date Title
KR102395360B1 (ko) 비휘발성 데이터 저장장치 내부에서 원자적으로 복수의 기록 트랜잭션을 수행하는 장치 제어기 및 방법
US8762661B2 (en) System and method of managing metadata
US9323659B2 (en) Cache management including solid state device virtualization
JP4828816B2 (ja) メモリカード、半導体装置、及びメモリカードの制御方法
JP5983019B2 (ja) 制御装置、記憶装置、記憶制御方法
US8510502B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
JP5377182B2 (ja) 制御装置
TWI406127B (zh) 更新使用者資料的方法
JP2009187062A (ja) 情報処理装置、該情報処理装置で行われるデータ記憶を制御する制御部およびデータ記憶の制御方法
JP4561168B2 (ja) データ処理システムおよび方法並びにその処理プログラム
JP5323030B2 (ja) メモリ装置及びメモリ制御方法
US8335901B2 (en) Information processing apparatus and data restoration method
US20180165172A1 (en) Data Storage Device and Data Maintenance Method Thereof
KR20170002848A (ko) 가비지 컬렉션 저널링 장치 및 방법
WO2018139223A1 (ja) 情報処理装置,制御プログラムおよび情報処理方法
JP4292225B2 (ja) 情報記録装置および情報記録方法
JP5541194B2 (ja) フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置
US20070143554A1 (en) Controller, copy control method, and computer product
CN103389943A (zh) 控制装置、存储装置及存储控制方法
JP2010191672A (ja) データ記憶システム
CN111752475B (zh) 在存储服务器中进行数据存取管理的方法与装置
US20210303212A1 (en) Data processing method and memory controller utilizing the same
WO2016175762A1 (en) Storage cache management
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
TWI850721B (zh) 記憶體內日誌

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130225

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130606

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130716

R151 Written notification of patent or utility model registration

Ref document number: 5323030

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130403

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350