JP2019160364A - メモリシステム及びメモリ制御方法 - Google Patents

メモリシステム及びメモリ制御方法 Download PDF

Info

Publication number
JP2019160364A
JP2019160364A JP2018044283A JP2018044283A JP2019160364A JP 2019160364 A JP2019160364 A JP 2019160364A JP 2018044283 A JP2018044283 A JP 2018044283A JP 2018044283 A JP2018044283 A JP 2018044283A JP 2019160364 A JP2019160364 A JP 2019160364A
Authority
JP
Japan
Prior art keywords
access
read
history
progress
read process
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.)
Pending
Application number
JP2018044283A
Other languages
English (en)
Inventor
渡辺 幸治
Koji Watanabe
幸治 渡辺
岩崎 清隆
Kiyotaka Iwasaki
清隆 岩崎
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 Information Systems Japan Corp
Kioxia Corp
Original Assignee
Toshiba Information Systems Japan Corp
Toshiba Memory 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 Information Systems Japan Corp, Toshiba Memory Corp filed Critical Toshiba Information Systems Japan Corp
Priority to JP2018044283A priority Critical patent/JP2019160364A/ja
Priority to US16/128,228 priority patent/US10929061B2/en
Publication of JP2019160364A publication Critical patent/JP2019160364A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】データの消失を回避するためのリード動作を高速かつ効率的に実行できるメモリシステムを提供する。【解決手段】メモリシステムは、データを記憶する不揮発性メモリと、不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路とを備える。コントローラ回路は、不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対する読出し処理を実行するアクセスの履歴を管理する第1の処理を実行し、アクセスの履歴に基づいて、読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第2の処理を実行する。【選択図】図2

Description

本発明の実施形態は、メモリシステム及びメモリ制御方法に関する。
近年、大容量のストレージとして、ソリッドステート・ドライブ(solid-state drive、以下SSDと表記)を代表とする、3次元構造のNANDフラッシュメモリを使用したメモリシステムが注目されている。
特開2013−69183号公報 特許第5740296号公報 特開2010−266962号公報 特許第5378255号公報 特開2012−69224号公報 米国特許第9443866号明細書
NANDフラッシュメモリでは、データリテンション(data retention)を要因として、メモリセルから時間経過とともにデータを失っていく事態を回避するためのリード動作が必要である。そこで、当該リード動作を高速かつ効率的に実行できるメモリシステムを実現することが求められる。
本実施形態のメモリシステムは、データを記憶する不揮発性メモリと、前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路とを備えた構成である。前記コントローラ回路は、前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対する読出し処理を実行するアクセスの履歴を管理する第1の処理を実行し、前記アクセスの履歴に基づいて、前記読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第2の処理を実行する。
実施形態に関するメモリシステムの構成を示すブロック図。 実施形態に関するコマンドスケジューラ及び周辺回路の構成を示すブロック図。 実施形態に関するアクセス履歴管理テーブルの一例を示す図。 実施形態に関するアクセス履歴管理テーブルの読出履歴の更新を説明するための図。 実施形態に関するアクセス履歴管理テーブルの消去履歴の更新を説明するための図。 実施形態に関するバックグラウンドリード処理を実行する際のアクセス方法を説明するための図。 実施形態に関するアクセス頻度管理を説明するための図。 実施形態に関するアクセスの動作状態を説明するための図。 実施形態に関するSSDコントローラの動作を説明するためのフローチャート。 実施形態に関するアクセスでの物理アドレスを算出する方法を説明するための図。 変形例に関するコマンドスケジューラ及び周辺回路の構成を示すブロック図。
以下図面を参照して、実施形態を説明する。
[メモリシステムの構成]
図1は、本実施形態のメモリシステムとして、ソリッドステート・ドライブ(solid-state drive: SSD)1の構成を示すブロック図である。図1に示すように、SSD1は、例えばコンピュータであるホスト2から転送されたデータをNANDフラッシュメモリ12(12-1〜12-n)に記憶し、かつ、NANDフラッシュメモリ12(12-1〜12-n)から読み出したデータをホスト2に転送する。
SSD1は、SSDコントローラ10、バッファメモリ11、及びNANDフラッシュメモリ(NAND-type flash memory)12を有する。バッファメモリ11は、NANDフラッシュメモリ12に対する書き込みデータや読み出しデータ等のデータを一時的に格納する。なお、バッファメモリ11としては、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはMRAM(magnetoresistive random access memory)などの不揮発性メモリでも良い。
NANDフラッシュメモリ12は、不揮発性メモリ(nonvolatile memory)であり、複数のメモリチップ12-1〜12-nを有する。各メモリチップ12-1〜12-nはそれぞれ、複数の物理ブロックを含む。物理ブロックは、NANDフラッシュメモリ12内で独立してデータの消去が可能な最小の記憶領域単位である。なお、後述するように、本実施形態では、メモリチップ及び物理ブロックの通し番号として、論理ブロック番号(logical block ID)を適用する。
SSDコントローラ10は、例えばSoC(System on a chip)として構成される回路であり、プロセッサ(CPU)13、ホストインターフェース(I/F)コントローラ14、バッファコントローラ15、FTL(Flash Translation Layer)コントローラ16、NANDコントローラ17、コマンドディスパッチャ(Command Dispatcher)18、及びコマンドスケジューラ(Command Scheduler)19を含む。
プロセッサ13は、メインコントローラを構成し、バッファコントローラ15やNANDコントローラ17の制御、及び、後述するように、本実施形態に関するバックグラウンド(background)リード処理(以下、BGリード処理と表記する場合がある)の制御を実行する。また、プロセッサ13は、例えば、パトロール(patrol)処理、リフレッシュ(refresh)処理、コンパクション(compaction)処理等を実行する。なお、コンパクション処理は、ガベージ・コレクション(garbage collection)処理に相当する。
なお、本実施形態のBGリード処理は、ホストアクセスや、パトロール処理、リフレッシュ処理、コンパクション処理等の他のアクセスとは異なり、メモリセルに対する電圧印加があればよく、NANDフラッシュメモリ12からSSDコントローラ10に対するデータの読み出しは不要である。このため、BGリード処理を実行する特定のリードコマンドを設定することで、リード処理時間の短縮化を図ることができる。従って、BGリード処理を高速に行うことが可能であるため、結果的にホストアクセスの応答を阻害する確率を低下させることが可能となる。
ホストインターフェース14は、SSD1とホスト2との間で、データ、コマンド、及びアドレスの転送を制御する。ホストインターフェース14は、例えば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(PCI Express)(登録商標)等の通信インターフェースをサポートする。バッファコントローラ15は、プロセッサ13の制御下で、バッファメモリ11の動作を制御する。FTLコントローラ16は、ホストから指定された論理アドレスと、NANDフラッシュメモリ12の物理アドレスの変換等を実行する。
NANDコントローラ17は、NANDフラッシュメモリ12の複数のメモリチップ12-1〜12-nに対応する複数のNANDコントローラ17-1〜17-nを含み、メモリチップ12-1〜12-nに対してデータを同時並列に読み出し又は書き込むことができる。NANDコントローラ17は、プロセッサ13の制御に基づいて、ホスト2に対するデータの読み出し処理及び書き込み処理以外に、ホスト2からのコマンドとは無関係に、前述のBGリード処理によるデータの読み出しを実行する。また、NANDコントローラ17は、ホスト2からのコマンドとは無関係に、前述のパトロール処理、リフレッシュ処理、またはコンパクション処理に伴うデータの読み出し処理及び書き込み処理を実行する。
コマンドディスパッチャ18は、NANDコントローラ17に対して、各種のコマンドを割り当てる回路である。コマンドスケジューラ19は、本実施形態に関するBGリード処理のコマンドを含むNANDコントローラ17が実行するコマンドのスケジュールを管理する回路である。
なお、SSDコントローラ10は、プロセッサ13の制御下において、NANDコントローラ17によりNANDフラッシュメモリ12から読み出されたデータの誤り検出及び誤り訂正を実行するECC回路13Aを含む。本実施形態では、後述するように、ECC回路13Aは、BGリード処理を除いて、例えばパトロール処理の実行の際に機能する。
[コマンドスケジューラ及び周辺回路の構成]
図2は、コマンドスケジューラ19及び周辺回路の構成を示すブロック図である。周辺回路とは、NANDコントローラ17及びコマンドディスパッチャ18である。
図2に示すように、NANDコントローラ17は、コマンド調停部170を含み、コマンドディスパッチャ18により割り当てられるコマンドを実行し、NANDフラッシュメモリ12に対するデータの読み出し処理、プログラム(書き込み)処理を制御する。
コマンドディスパッチャ18は、ホスト2からのコマンドに基づいたホストデータアクセスを指示するコマンド180、コンパクションアクセスを指示するコマンド181、及びシステムデータアクセスを指示するコマンド182をNANDコントローラ17に割り当てる。ここで、コマンド182は、例えば論理/物理アドレス変換等の情報であるシステムデータのアクセスを指示する。コンパクションアクセス及びシステムデータアクセスはいずれも、NANDフラッシュメモリ12の内部データの再配置を目的とするアクセスである。ここで、コマンド181,182は、ホスト2からのコマンドとは無関係に、SSD1が自発的に生成するコマンドである。
コマンドスケジューラ19は、アクセス履歴管理部20及びアクセス頻度管理部22を含む。アクセス履歴管理部20は、後述するアクセス履歴管理テーブル21を保存・管理する。アクセス頻度管理部22は、アクセス履歴管理テーブルの読み出し部23、アクセス履歴管理テーブルの書込み部24、進捗管理部25、タイマ26、アクセスコマンド生成部27、優先度通知部28、及びアクセスコマンド解釈部29を含む。
アクセス履歴管理テーブルの読み出し部23は、アクセス履歴管理部20により保存されているアクセス履歴管理テーブル21からの情報の読み出しを実行する。アクセス履歴管理テーブルの書込み部24は、アクセス履歴管理テーブル21に対して情報の書き込み(更新)を実行する。アクセス履歴管理テーブルの書込み部24は、アクセスコマンド解釈部29のアクセスコマンド解釈結果を使用して書込みデータを生成する。
進捗管理部25は、後述するように、本実施形態に関する、NANDフラッシュメモリ12の全記憶領域(データの未記憶領域を除く)から、所定の制限時間(タイムリミット)内にデータを読み出すアクセス(BGリード処理)の進捗状況を管理する。進捗管理部25は、アクセス履歴管理テーブル21から読み出された情報及びタイマ26からの時間情報に基づいて、BGリード処理によるアクセスの進捗状況及び時間の進捗を管理する。
アクセスコマンド生成部27は、進捗管理部25の進捗結果に基づいて、BGリード処理を伴うアクセスコマンドを生成する。また、アクセスコマンド生成部27は、アクセス先の情報(論理ブロック番号)などを決定する。
優先度通知部28は、進捗管理部25の進捗結果に基づいて、BGリード処理を伴うアクセスコマンドの優先度(例えば優先度1位)をコマンド調停部170に通知する。コマンド調停部170は、優先度通知部28からの優先度に基づいて、BGリード処理を伴うアクセスコマンドを、例えば優先度1位のコマンドとしてコマンド調停を行う。ここで、優先度通知部28からの優先度は、BGリード処理を伴うアクセスコマンドの実行、及びその実行完了時にクリアされる。
アクセスコマンド解釈部29は、コマンド調停部170によるコマンド調停後に決定したコマンドを解釈する。アクセスコマンド解釈部29は、コマンドの解釈結果から、アクセスに伴って実行する読み出し処理、プログラム処理、消去処理の情報を取得する。
[SSDコントローラの動作]
本実施形態は、データリテンションの悪化等を要因として、NANDフラッシュメモリ12のメモリセルから時間経過とともにデータを失っていく事態を回避するためのBGリード処理の制御に関する。例えば、3次元構造のNANDフラッシュメモリでは、メモリセルを選択する行選択線であって、1物理ブロックのワード線WLから数分間に1回のリードが無い場合、そのメモリセルのデータを失っていく事態となる場合がある。ここで、一定時間内にメモリセルからデータを読み出すことで、データリテンションの悪化を防げる場合がある。そこで、SSD1では、データリテンションの改善を目的とするBGリード処理を実行する必要がある。
本実施形態は、タイムリミット(例えば数分間の制限時間内)までに、NANDフラッシュメモリ12の全記憶領域(データの未記憶領域を除く)からデータを読み出すBGリード処理を完了させる。ここで、SSD1では、ホスト2からのアクセス(指定のデータを読み出す)の実行優先度が高いため、BGリード処理を伴うアクセスの実行優先度との調整が必要である。そこで、本実施形態は、各アクセスの実行優先度を変化させて、ホストアクセスの応答を必要以上に低下させることなく、BGリード処理を制限時間内に完了させるスケジュール機能を、コマンドスケジューラ19により実現する。
以下、図3から図10を参照して、本実施形態のSSDコントローラ10の動作を説明する。図3は、アクセス履歴管理テーブル21の一例を示す図である。図4は、アクセス履歴管理テーブル21の読出履歴31の更新を説明するための図である。図5は、アクセス履歴管理テーブルの消去履歴32の更新を説明するための図である。図6は、BGリード処理を実行する際のアクセス方法を説明するための図である。図7は、アクセス頻度管理を説明するための図である。図8は、アクセスの動作状態を説明するための図。図9は、SSDコントローラ10の動作を説明するためのフローチャートである。図10は、アクセスでの物理アドレスを算出する方法を説明するための図である。
図3に示すように、アクセス履歴管理テーブル21は、アクセス対象の記憶領域を管理するために論理ブロック(Block)番号30、読出履歴31、消去履歴32の各フィールドを有するテーブル情報である。本実施形態では、NANDフラッシュメモリ12に対するBGリード処理のアクセス対象範囲の物理アドレスは、例えば、2個のチップ(2chip:chip#0,#1)及び3個の物理ブロック(3block:block#0-#2)から構成される。論理ブロック番号30のフィールドは、各記憶領域を特定する2chip/3blockの物理アドレスに対応する論理ブロック番号(通し番号:#0-#5)が設定される。
読出履歴31のフィールドは、読出履歴として、論理ブロック番号(#0-#5)の各記憶領域から、タイムリミットまでに読出し動作が実行されたか否かを示すフラグ情報(0/1)が設定される。即ち、読出し動作が実行された場合には、読出履歴31として、フラグ情報(1)がセットされる。一方、消去履歴32のフィールドは、消去履歴として、論理ブロック番号(#0-#5)の各記憶領域から、データが消去されたか否かを示すフラグ情報(0/1)が設定される。ここで、電源オン直後には、前回の電源オフの状態(例えば消去済みのフラグ情報(1))が引き継がれる。
コマンドスケジューラ19は、アクセス履歴管理テーブル21において、読出履歴31及び消去履歴32のいずれにも、フラグ情報(0)が設定されている場合には、該当する論理ブロック番号(#0-#5)の記憶領域をBGリード処理の対象とする。具体的には、アクセスコマンド生成部27は、BGリード処理を伴うアクセスコマンド(アクセス先の論理ブロック番号を含む)を生成し、NANDコントローラ17に出力する。
図9のフローチャートを参照して、SSDコントローラ10の処理手順を説明する。
図9に示すように、本実施形態では、SSDコントローラ10は、ホスト2からのコマンドに応じたホストアクセスを実行しない場合には(S1のNO)、BGリード処理を実行する(S2)。なお、SSDコントローラ10は、ホストアクセスとは無関係なアクセスとして、パトロール処理、リフレッシュ処理、またはコンパクション処理を実行する場合もある。但し、本実施形態は、ホストアクセスとは無関係なアクセスとして、BGリード処理ついて説明し、パトロール処理、リフレッシュ処理、コンパクション処理等については説明を省略する。
NANDコントローラ17は、CPU13からの入力情報(アクセス対象範囲情報)から、実際にアクセスする、NANDフラッシュメモリ12の物理的なチップ(chip)を決定し、BGリード処理として当該チップからデータの読出しを実行する。本実施形態では、NANDフラッシュメモリ12の構成に基づいて、アクセス対象範囲情報は、例えば、チップ数として2チップ(chip#0,chip#1)、及びチップ毎にブロック数として3ブロック(block#0-#2)となる。
図6に示すように、NANDコントローラ17は、先頭の論理ブロック番号(#0)に対応する物理アドレス(chip#0/block#0)から順次読出し、BGリード処理を実行する(図3を参照)。この際、NANDコントローラ17は、アクセス数のカウントに基づいて、アクセス対象の物理アドレス(2chip/3block)を算出する。図10を参照して、当該物理アドレスの算出方法を説明する。図10に示すように、カウント値(0〜5)が論理ブロックアドレスとなる。このカウント値から、物理アドレスを求めるには、「カウント値/block数」の演算を実行し、当該演算結果である商がchip番号(chip#0/#1)になる。また、当該演算結果である余りがblock番号(block#0/#1)になる。なお、カウント値が、「chip数×block数」より大きい値になったときは、カウンタを初期状態(0)にリセットする。
前述したように、NANDコントローラ17は、コマンドスケジューラ19に含まれるアクセスコマンド生成部27から出力される、アクセスコマンド(アクセス先の論理ブロック番号を含む)に応じて、BGリード処理を実行する。コマンドスケジューラ19は、読み出し部23により、アクセス履歴管理テーブル21を参照し、該当する論理ブロック番号の履歴を読み出す。
コマンドスケジューラ19は、進捗管理部25により、該当する論理ブロック番号(例えば、#0)の読出し履歴31及び消去履歴32としてフラグ情報(0)が設定されている場合に、BGリード処理を実行するためのアクセスコマンドをNANDコントローラ17に出力する。これにより、NANDコントローラ17は、当該アクセスコマンドを実行し、論理ブロック番号(#0)の記憶領域に対して読出し動作を実行する。
一方、コマンドスケジューラ19は、該当する論理ブロック番号(#0)の読出し履歴31としてフラグ情報(1)が設定されている場合には、既に読出し動作が実行されているため、BGリード処理をスキップ(skip)する。従って、NANDコントローラ17は、当該論理ブロック番号(#0)の記憶領域に対しては、読出し動作を実行しない。また、該当する論理ブロック番号(#0)の消去履歴32としてフラグ情報(1)が設定されている場合には、データが記憶されていないため、NANDコントローラ17は、当該論理ブロック番号(#0)の記憶領域に対しては、読出し動作を実行しない。
コマンドスケジューラ19は、プログラム部24により、BGリード処理の実行時には、アクセス履歴管理テーブル21の該当する論理ブロック番号(#0)の読出し履歴31として、フラグ情報(1)をセットする。プログラム部24は、アクセスコマンド解釈部29のアクセスコマンド解釈結果(読出し動作)を使用してプログラムデータ(1)を生成する。即ち、図4に示すように、アクセス履歴管理テーブル21の論理ブロック番号(#0)の読出し履歴31は、フラグ情報(0)からフラグ情報(1)に更新される(41A)。
ここで、コマンドスケジューラ19は、当該BGリード処理に伴うアクセス以外の例えばホストアクセスの要因による読出し動作の実行時においても、該当する論理ブロック番号(例えば#2)の読出し履歴31として、フラグ情報(1)をセットする。即ち、図4に示すように、アクセス履歴管理テーブル21の論理ブロック番号(#2)の読出し履歴31は、フラグ情報(0)からフラグ情報(1)に更新される(41B)。
なお、コマンドスケジューラ19は、当該BGリード処理に伴うアクセス以外の要因による消去動作の実行時においては、該当する論理ブロック番号(例えば#2)の消去履歴32として、フラグ情報(1)をセットする。即ち、図5に示すように、アクセス履歴管理テーブル21の論理ブロック番号(#2)の消去履歴32は、フラグ情報(0)からフラグ情報(1)に更新される(50)。
図9に戻って、コマンドスケジューラ19は、タイムリミットまでに、アクセス対象範囲である論理ブロック番号(#0-#5)の各記憶領域から読出し動作が完了した時に(S3のYES)、アクセス履歴管理テーブル21の読出し履歴31を一括してクリア(0にセット)する。なお、コマンドスケジューラ19は、消去履歴32については、NANDコントローラ17によりNANDフラッシュメモリ12に対してデータの書き込み動作(プログラム)が実行されたときに、該当する論理ブロック番号に対応する消去履歴32をクリア(0にセット)する。
図8は、アクセスの動作状態を示す図である。ここで、後述する期間84,85は、時間軸上において、BGリード処理の制限時間(タイムリミット)までの時間進捗率(0%、50%、100%)を示す範囲に相当する。即ち、期間84の読出し動作の完了時点(83)は、タイムリミットから時間進捗率50%以内であることを意味する。また、期間85の読出し動作の完了時点(83)は、タイムリミットから、時間進捗率100%に近い時点であることを意味する。
図8に示すように、電源がONしてから、ホストアクセスが無い期間84であれば、前述したように、SSDコントローラ10は、BGリード処理82を優先的に実行する(図9のS1,S2を参照)。即ち、NANDコントローラ17は、優先度通知部28からの優先度に基づいて、BGリード処理を伴うアクセスコマンドを優先度1位のコマンドとして実行する。
コマンドスケジューラ19は、タイムリミットまでに、アクセス対象範囲である論理ブロック番号(#0-#5)の読出し動作の完了時点(83)までBGリード処理82を継続する。BGリード処理を伴うアクセスコマンドに対する優先度通知部28からの優先度1位は、当該アクセスコマンドの実行完了(83)でクリアされる。
ここで、コマンドスケジューラ19のアクセス頻度管理部22は、進捗管理部25によりBGリード処理によるアクセスの進捗状況を管理する。即ち、進捗管理部25は、アクセス履歴管理テーブル21を使用したアクセスの進捗、及びタイマ26を使用した時間の進捗を管理する。
アクセス頻度管理部22は、入力情報として、前述したアクセス対象範囲情報(2チップ(Chip0,Chip1)、3ブロック(Block0-Block2))、BGリード処理の制限時間(タイムリミット)を示す時間情報、アクセス履歴管理テーブル21の最新のポインタ、及びBGリード処理の経過時間を入力する。
具体的には、図7に示すように、進捗管理部25は、アクセス履歴管理テーブル21から情報を読み出す際の最新のポインタ70により、BGリード処理によるアクセスの進捗を認識できる。また、進捗管理部25は、アクセス履歴管理テーブル21から読み出す情報により、読出履歴31と消去履歴32のいずれかが「1」であれば、アクセスが進捗していると認識できる。進捗管理部25は、所定の計算式「進捗率=ポインタ値/(アクセス対象範囲=ブロック数3×チップ数2)×100」を使用して、例えば、ポインタ値が例えば「3」で、アクセス対象範囲が「6」の場合には、進捗率「50%」を算出できる。
一方、進捗管理部25は、時間の進捗は、所定の計算式「進捗率=BGリード処理の経過時間/制限時間(タイムリミット)×100」を使用して、例えば、アクセス開始からの経過時間(例えば36秒)をタイマ26から求めて、タイムリミットが「3分間」の場合には、進捗率「20%」を算出できる。
図9に戻って、SSDコントローラ10は、ホスト2からのコマンドに応じたホストアクセスを行う場合には(S1のYES)、ホストコマンド処理に移行する(S4)。即ち、図8に示すように、BGリード処理82の実行中に、ホストアクセス81を実行すべき期間85が発生した場合である。
SSDコントローラ10は、BGリード処理82の実行時に、ホスト2からのコマンドに応じたホストアクセス81を優先的に実行する(図9のS1,S2を参照)。即ち、NANDコントローラ17は、コマンドディスパッチャ18により割り当てられるホストデータアクセスを指示するコマンド180を、優先度1位のコマンドとして実行する。これにより、NANDコントローラ17は、ホストコマンド180により指定される、NANDフラッシュメモリ12の論理ブロックに対するデータの読み出し処理や、書き込み(プログラム)処理を実行する。この時、優先度通知部28からの優先度1位は、BGリード処理82のコマンド実行によりクリアされている。
ここで、コマンドスケジューラ19のアクセス頻度管理部22は、進捗管理部25によりBGリード処理によるアクセスの進捗状況を管理している(S5)。即ち、前述したように、進捗管理部25は、アクセス履歴管理テーブル21を使用してBGリード処理によるアクセスの進捗を監視し、また、当該アクセスの開始からの経過時間からタイムリミットまでの時間の進捗を監視している。
進捗管理部25は、アクセスの進捗及び時間の進捗の各進捗状況から、BGリード処理が遅れており、特に、タイムリミットまで余裕がない場合(S6のNO)、その旨を示す進捗結果を優先度通知部28に出力する。
優先度通知部28は、進捗管理部25からの当該進捗結果に基づいて、NANDコントローラ17のコマンド調停部170にBGリード処理を伴うアクセスコマンドの優先度として優先度1位を通知する。これにより、NANDコントローラ17は、ホストアクセス81を中断し、アクセス頻度管理部22のアクセスコマンド生成部27からのBGリード処理を伴うアクセスコマンドを優先的に実行する(S7)。当然ながら、進捗状況に余裕がある場合には(S6のYES)、SSDコントローラ10は、ホストアクセス81を継続する(S4)。
図8に示すように、ホストアクセス81を実行すべき期間85において、BGリード処理82の進捗状況に応じて、ホストアクセス81を中断(アクセスブロック80)し、BGリード処理82を優先的に実行する。
図9に戻って、SSDコントローラ10は、進捗管理部25の進捗状況に基づいて、ホストアクセス81とBGリード処理82の実行優先度を変化させて(切替えて)、BGリード処理82の完了時点(83)まで繰り返す(S8)。
以上のように本実施形態によれば、制限時間(タイムリミット)内に実行すべきBGリード処理の進捗状況を管理(監視)し、当該進捗状況に基づいて、BGリード処理によるアクセスとホストアクセスの実行優先度を変化させることにより、各アクセスをバランスよく実行できる。
従って、BGリード処理の進捗状況に余裕があれば、ホストアクセスを優先的に実行できるため、ホストアクセスの応答を必要以上に低下させることはない。また、BGリード処理の進捗状況に余裕がない場合には、BGリード処理を優先的に実行できるため、タイムリミット内にBGリード処理を完了させることができる。これにより、例えば、3次元構造のNANDフラッシュメモリに適用した場合に、タイムリミット内にリード処理を完了できるため、メモリセルから時間経過とともにデータを失っていく事態を確実に回避できる。
さらに、本実施形態によれば、BGリード処理の進捗状況を、アクセス履歴管理テーブル21を使用することで、BGリード処理のアクセス履歴31,32を確実に認識することができる。このため、不要なBGリード処理を回避し、結果的にBGリード処理を効率的に行うことが可能となる。これにより、結果的に実行すべきBGリード処理の総量を減少できるため、ホストアクセスの応答を阻害する確率を低下させることが可能となる。
即ち、BGリード処理のアクセス以外の他のアクセス(ホストアクセス等)を含むリード処理が実行された記憶領域、又は消去によるデータの未記憶領域に対しては、BGリード処理は不要である。本実施形態のBGリード処理は、データが記憶されている記憶領域のみからリードする。即ち、消去された記憶領域またはプログラムされていない記憶領域は、BGリード処理によるアクセス対象から除く。
ここで、本実施形態のコマンドスケジューラ19は、BGリード処理を実行する予定のアクセス対象に対するホストアクセスがある場合、該当アクセス対象に対するBGリード処理を完了と判断してもよい。即ち、ホストアクセスによるリード処理によりBGリード処理と同様の効果(メモリセルから時間経過とともにデータを失っていく事態の回避)が得られるため、BGリード処理を完了したと見なして中止できる。パトロール処理等のリード処理のアクセス対象についても、同様にBGリード処理を完了と判断してもよい。
さらに、本実施形態のBGリード処理は、ホストアクセスや、パトロール処理、リフレッシュ処理、コンパクション処理等の他のアクセスとは異なり、メモリセルに対する電圧印加があればよいので、BGリード処理を実行する特定のリードコマンドを設定することで、リード処理時間の短縮化を図ることができる。従って、BGリード処理を高速に行うことが可能であるため、結果的にホストアクセスの応答を阻害する確率を低下させることが可能となる。
具体例としては、例えば、ワード線WLにリードアクセスするが、NANDフラッシュメモリ12からSSDコントローラ10にデータを出力しない機能や、当該リードコマンドを中断する機能を含むリードコマンドを設定する。また、チップイネーブル(CE)を同時に複数制御して、複数のチップから同じブロックをアクセスする機能を含むリードコマンドを設定する。
なお、本実施形態のBGリード処理によるアクセス以外の他のアクセスとしては、ホストアクセス以外に、例えば、パトロール処理、リフレッシュ処理、コンパクション処理等のアクセスにも適用可能である。ここで、パトロール処理、リフレッシュ処理、コンパクション処理等に含まれるリード処理は、ホスト2からのコマンドとは関係しないコマンドによる、SSD1の自発的な動作である。
一方、本実施形態のBGリード処理も、ホスト2からのコマンドとは関係しないコマンドによる、SSD1の自発的な動作であるが、前述したように、パトロール処理、リフレッシュ処理、コンパクション処理等に含まれるリード処理とは異なる。具体的には、例えば、パトロール処理は、リード処理により読み出したデータを使用して、プロセッサ13の制御下でのECC回路13Aにより記憶状態の検査(ベリファイ)及び誤り訂正を実行する処理を含む。他のリフレッシュ処理やコンパクション処理についても、リード処理により読み出したデータを使用する。これに対して、本実施形態のBGリード処理は、データリテンションの改善を目的とするため、前述したように、リード出力データを使用しなくても良い。
[変形例]
図11は、変形例に関するコマンドスケジューラ19及び周辺回路の構成を示すブロック図である。以下、本変形例の構成を説明する。なお、本変形例の構成は、図2に示す本実施形態の構成と同様の部分については、同一符号を付して説明を省略する。
本変形例は、コマンドスケジューラ19において、アクセスコマンド生成部27は、進捗管理部25の進捗結果に基づいて、BGリード処理を伴うアクセスコマンドを生成する場合に、優先度通知部28から出力される優先度を含むアクセスコマンドを生成する。
コマンドディスパッチャ18は、アクセスコマンド生成部27からのアクセスコマンドを優先コマンド183として保持し、NANDコントローラ17に割り当てる。なお、コマンドディスパッチャ18は、ホストデータアクセスを指示するコマンド180、コンパクションアクセスを指示するコマンド181、及びシステムデータアクセスを指示するコマンド182のそれぞれをNANDコントローラ17に割り当てる。
NANDコントローラ17は、コマンド調停部170及びコマンドキュー171を含み、コマンド調停部170により優先度を調停されたコマンド172をコマンドキュー171にセットする。コマンドキュー171にセットされた各コマンド172は、コマンド情報と共に、優先度情報を含む。
コマンド調停部170は、例えばラウンドロビン(round robin)方式でコマンド調停処理を実行し、優先コマンド183を優先度1位のコマンドとして調停する。同様にして、コマンド調停部170は、ホストコマンド180、コマンド181、及びコマンド182のそれぞれを、優先度2位、優先度3位、優先度4位のコマンドとして調停する。
NANDコントローラ17は、コマンド実行時に、コマンドキュー171をサーチして、優先度情報から優先度の高い順にコマンドを発行する。アクセスコマンド解釈部29は、コマンドキュー171から発行されるコマンドを解釈し、当該コマンドの解釈結果からアクセスに伴って実行する読み出し処理、プログラム処理、消去処理の情報を取得する。
以上のような本変形例の構成であれば、NANDコントローラ17は、コマンド実行時に、優先度情報により設定された優先度(例えば優先度1位)で、BGリード処理を伴うアクセスコマンドを実行する。従って、当該アクセスコマンドの実行完了時に、優先度1位をクリアするような処理は不要である。
なお、本変形例においても、前述したような本実施形態と同様の効果を得ることができる。即ち、BGリード処理によるアクセスとホストアクセスの実行優先度を変化させることにより、各アクセスをバランスよく実行できる。従って、BGリード処理の進捗状況に基づいて、ホストアクセスを優先的に実行して、ホストアクセスの応答を必要以上に低下させない。また、BGリード処理を優先的に実行して、タイムリミット内にBGリード処理を完了させることができる。また、BGリード処理を効率的、かつ高速に行うことが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…SSD、2…ホスト、10…SSDコントローラ、11…バッファメモリ、
12(12-1〜12-n)…NANDフラッシュメモリ、
13…プロセッサ(CPU)、14…ホストインターフェース(I/F)コントローラ、
15…バッファコントローラ、16…FTLコントローラ、
17(17-1〜17-n)…NANDコントローラ、
18…コマンドディスパッチャ、19…コマンドスケジューラ、
20…アクセス履歴管理部、21…アクセス頻度管理部、
23…アクセス履歴管理テーブルの読み出し部、
24…アクセス履歴管理テーブルのプログラム部、25…進捗管理部、26…タイマ、
27…アクセスコマンド生成部、28…優先度通知部、
29…アクセスコマンド解釈部。

Claims (20)

  1. データを記憶する不揮発性メモリと、
    前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路と、を具備し、
    前記コントローラ回路は、
    前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対するアクセスの履歴を管理する第1の処理を実行し、
    前記アクセスの履歴に基づいて、前記全記憶領域に対する読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第2の処理を実行する、
    メモリシステム。
  2. 前記コントローラ回路は、
    前記第1の処理として、前記アクセス対象範囲を示すアドレス情報に対応付けて、前記アクセスの履歴を更新し、
    前記アクセスの進捗状況に基づいて、アドレス情報毎に必要な読出し処理を実行する、請求項1に記載のメモリシステム。
  3. 前記アクセスの履歴は、前記アドレス情報毎に、読出し処理が完了したことを示す読出し履歴情報、及び消去処理の履歴を示す消去履歴情報を含み、
    前記コントローラ回路は、
    前記第1の処理として、読出し処理の実行時に前記読出し履歴情報を更新し、消去処理の実行時に前記消去履歴情報を更新する、
    請求項2に記載のメモリシステム。
  4. 前記コントローラ回路は、
    前記必要な読出し処理として、前記読出し履歴情報が記録されていないアドレス情報に対する読出し処理を実行し、
    前記読出し履歴情報又は前記消去履歴情報が記録されているアドレス情報に対する読出し処理を実行しない、請求項3に記載のメモリシステム。
  5. 前記コントローラ回路は、
    前記第1の処理として、前記読出し処理の完了時に、前記アドレス情報毎に記録された前記読出し履歴情報をクリアする、請求項3に記載のメモリシステム。
  6. 前記コントローラ回路は、
    前記読出し処理として、前記アクセスの履歴に基づいて前記不揮発性メモリの前記全記憶領域に対する第1の読出し処理、及び前記アクセスとは異なる他のアクセスに関する第2の読出し処理を含み、
    前記第1の処理として、前記第1の読出し処理又は前記第2の読出し処理の実行時に、前記アクセスの履歴を更新する、請求項1に記載のメモリシステム。
  7. 前記コントローラ回路は、
    前記第1の読出し処理として、データリテンションの悪化を防止する機能を実現するための特定のリード処理を実行する、請求項6に記載のメモリシステム。
  8. 前記コントローラ回路は、
    前記第2の処理として、前記全記憶領域に対するデータの読み出し処理の進捗、及び前記読み出し処理が完了するまでの時間の進捗を含む、前記アクセスの進捗状況を管理する、請求項1に記載のメモリシステム。
  9. 前記コントローラ回路は、
    前記時間の進捗に基づいて、所定のタイムリミットまでに前記読み出し処理を完了させるために、前記読み出し処理を実行する優先度を、前記アクセスとは異なる他のアクセスの実行より高くする、請求項8に記載のメモリシステム。
  10. 前記コントローラ回路は、
    前記アクセスの進捗状況に基づいて、前記アクセスの履歴を参照し、前記アクセス対象範囲の全記憶領域に対して読出し処理を順次実行する際に、既に読出し処理が実行された記憶領域及びデータが消去された記憶領域に対する読出し処理を省略する、請求項1に記載のメモリシステム。
  11. データを記憶する不揮発性メモリ、及び前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路を含むメモリシステムに適用するメモリ制御方法であって、
    前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対するアクセスの履歴を管理する第1の処理と、
    前記アクセスの履歴に基づいて、前記全記憶領域に対する読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第2の処理と、
    を実行するメモリ制御方法。
  12. 前記第1の処理として、前記アクセス対象範囲を示すアドレス情報に対応付けて、前記アクセスの履歴を更新し、
    前記アクセスの進捗状況に基づいて、アドレス情報毎に必要な読出し処理を実行する、請求項11に記載のメモリ制御方法。
  13. 前記アクセスの履歴は、前記アドレス情報毎に、読出し処理が完了したことを示す読出し履歴情報、及び消去処理の履歴を示す消去履歴情報を含み、
    前記第1の処理として、読出し処理の実行時に前記読出し履歴情報を更新し、消去処理の実行時に前記消去履歴情報を更新する、
    請求項12に記載のメモリ制御方法。
  14. 前記必要な読出し処理として、前記読出し履歴情報が記録されていないアドレス情報に対する読出し処理を実行し、
    前記読出し履歴情報又は前記消去履歴情報が記録されているアドレス情報に対する読出し処理を実行しない、請求項13に記載のメモリ制御方法。
  15. 前記第1の処理として、前記読出し処理の完了時に、前記アドレス情報毎に記録された前記読出し履歴情報をクリアする、請求項13に記載のメモリ制御方法。
  16. 前記読出し処理として、前記アクセスの履歴に基づいて前記不揮発性メモリの前記全記憶領域に対する第1の読出し処理、及び前記アクセスとは異なる他のアクセスに関する第2の読出し処理を含み、
    前記第1の処理として、前記第1の読出し処理又は前記第2の読出し処理の実行時に、前記アクセスの履歴を更新する、請求項11に記載のメモリ制御方法。
  17. 前記第1の読出し処理として、前記データリテンションの悪化を防止する機能を実現するための特定のリード処理を実行する、請求項16に記載のメモリ制御方法。
  18. 前記第2の処理として、前記全記憶領域に対するデータの読み出し処理の進捗、及び前記読み出し処理が完了するまでの時間の進捗を含む、前記アクセスの進捗状況を管理する、請求項11に記載のメモリ制御方法。
  19. 前記時間の進捗に基づいて、所定のタイムリミットまでに前記読み出し処理を完了させるために、前記読み出し処理を実行する優先度を、前記アクセスとは異なる他のアクセスの実行より高くする、請求項18に記載のメモリ制御方法。
  20. 前記アクセスの進捗状況に基づいて、前記アクセスの履歴を参照し、前記アクセス対象範囲の全記憶領域に対して読出し処理を順次実行する際に、既に読出し処理が実行された記憶領域及びデータが消去された記憶領域に対する読出し処理を省略する、請求項11に記載のメモリ制御方法。
JP2018044283A 2018-03-12 2018-03-12 メモリシステム及びメモリ制御方法 Pending JP2019160364A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018044283A JP2019160364A (ja) 2018-03-12 2018-03-12 メモリシステム及びメモリ制御方法
US16/128,228 US10929061B2 (en) 2018-03-12 2018-09-11 Memory system and memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018044283A JP2019160364A (ja) 2018-03-12 2018-03-12 メモリシステム及びメモリ制御方法

Publications (1)

Publication Number Publication Date
JP2019160364A true JP2019160364A (ja) 2019-09-19

Family

ID=67842577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018044283A Pending JP2019160364A (ja) 2018-03-12 2018-03-12 メモリシステム及びメモリ制御方法

Country Status (2)

Country Link
US (1) US10929061B2 (ja)
JP (1) JP2019160364A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021140311A (ja) 2020-03-03 2021-09-16 キオクシア株式会社 メモリシステム
US11194643B1 (en) * 2020-06-03 2021-12-07 Micron Technology, Inc. Access operation status signaling for memory systems
JP7408520B2 (ja) 2020-09-18 2024-01-05 キオクシア株式会社 メモリシステム
TWI769080B (zh) * 2021-09-17 2022-06-21 瑞昱半導體股份有限公司 用於同步動態隨機存取記憶體之控制模組及其控制方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010266962A (ja) 2009-05-12 2010-11-25 Toshiba Storage Device Corp 記憶装置、その制御方法及びその記憶装置を備える電子装置
JP5378255B2 (ja) 2010-02-02 2013-12-25 株式会社東芝 不揮発性半導体記憶装置および不揮発性半導体記憶装置の駆動方法
JP2012069224A (ja) 2010-09-24 2012-04-05 Toshiba Corp 不揮発性半導体記憶装置
WO2012039511A1 (en) 2010-09-24 2012-03-29 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
JP2013069183A (ja) 2011-09-26 2013-04-18 Toshiba Corp コントローラおよびメモリシステム
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
US9400745B2 (en) * 2013-11-06 2016-07-26 International Business Machines Corporation Physical address management in solid state memory
JP2016171451A (ja) * 2015-03-12 2016-09-23 株式会社東芝 通信装置
US9443866B1 (en) 2015-03-24 2016-09-13 Sandisk Technologies Llc Mid-tunneling dielectric band gap modification for enhanced data retention in a three-dimensional semiconductor device
US10877688B2 (en) * 2016-08-01 2020-12-29 Apple Inc. System for managing memory devices
US10331360B2 (en) * 2016-09-29 2019-06-25 Intel Corporation Scalable bandwidth non-volatile memory
KR20180097026A (ko) * 2017-02-22 2018-08-30 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 그것을 포함하는 데이터 저장 장치 및 데이터 저장 장치의 동작 방법
US10637511B2 (en) * 2017-12-18 2020-04-28 Western Digital Technologies, Inc Dynamic multi-stage decoding
US10872009B2 (en) * 2018-02-08 2020-12-22 Micron Technology, Inc. Mitigating a voltage condition of a memory cell in a memory sub-system
US10789124B2 (en) * 2018-09-28 2020-09-29 Intel Corporation Techniques to a set voltage level for a data access

Also Published As

Publication number Publication date
US10929061B2 (en) 2021-02-23
US20190278517A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
US10303371B2 (en) Data storage device that stabilizes write latency
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
US9652156B2 (en) Host read command return reordering based on time estimation of flash read command completion
US8090899B1 (en) Solid state drive power safe wear-leveling
JP4829365B1 (ja) データ記憶装置及びデータ書き込み方法
JP2019160364A (ja) メモリシステム及びメモリ制御方法
TWI662418B (zh) Information processing device and memory access method
US8930614B2 (en) Data storage apparatus and method for compaction processing
JP5847940B2 (ja) 半導体装置
JP2020155182A (ja) メモリシステム及び不揮発性メモリ
JP2012203443A (ja) メモリシステムおよびメモリシステムの制御方法
US10324833B2 (en) Memory controller, data storage device, and memory control method
KR20190057779A (ko) 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치
JP5492156B2 (ja) 情報処理装置およびキャッシュ方法
US9721669B2 (en) Data protection method, memory control circuit unit and memory storage apparatus
US9978448B2 (en) Memory controller, storage device, information processing system, and memory controlling method
JP2013222435A (ja) 半導体記憶装置及びその制御方法
US20150220394A1 (en) Memory system and method of controlling memory system
JP5579135B2 (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
JP5820078B2 (ja) 記憶装置システム
US9304906B2 (en) Memory system, controller and control method of memory
US10459658B2 (en) Hybrid data storage device with embedded command queuing
JP2023169664A (ja) メモリシステムおよび制御方法
JP2013196646A (ja) メモリ制御装置、データ記憶装置及びメモリ制御方法
JP4837121B1 (ja) データ記憶装置及びデータ書き込み方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180903