JP5447617B2 - フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法 - Google Patents

フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法 Download PDF

Info

Publication number
JP5447617B2
JP5447617B2 JP2012183364A JP2012183364A JP5447617B2 JP 5447617 B2 JP5447617 B2 JP 5447617B2 JP 2012183364 A JP2012183364 A JP 2012183364A JP 2012183364 A JP2012183364 A JP 2012183364A JP 5447617 B2 JP5447617 B2 JP 5447617B2
Authority
JP
Japan
Prior art keywords
flash memory
start reference
execution
time
busy
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
JP2012183364A
Other languages
English (en)
Other versions
JP2014041468A (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.)
TDK Corp
Original Assignee
TDK 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 TDK Corp filed Critical TDK Corp
Priority to JP2012183364A priority Critical patent/JP5447617B2/ja
Priority to US13/914,729 priority patent/US9146860B2/en
Publication of JP2014041468A publication Critical patent/JP2014041468A/ja
Application granted granted Critical
Publication of JP5447617B2 publication Critical patent/JP5447617B2/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/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明は、フラッシュメモリの制御に関する。
フラッシュメモリコントローラが、フラッシュメモリに対して、データの書込み(Program)や、イレース(Erase)等のコマンドを発行すると、フラッシュメモリは、データ書込みや、イレース等のコマンドに対応する動作を実行し、その間Busy状態となる。近年、フラッシュメモリの容量が増加しているために、コマンドに対応する処理の時間が長くなってきており、フラッシュメモリがBusy状態となる時間(Busy時間)が長時間化している。特に、データの書込みや、イレースの場合においては、msのオーダーでBusy状態となっている。
フラッシュメモリコントローラは、フラッシュメモリがBusy状態でなくなった場合に、別のデータの書込みや、イレース等のコマンドを発行して、フラッシュメモリに動作を実行させるようにする。このため、フラッシュメモリコントローラは、フラッシュメモリがBusy状態でないことを検出する必要がある。
フラッシュメモリのBusy状態を検出する方法としては、例えば、(1)フラッシュメモリの外部ピン(FRDYピン)から出力されるFRDY信号に基づいて、フラッシュメモリがBusy状態でなくなったことを検出する方法や、(2)フラッシュメモリに対して、ステータスコマンドを発行し、ステータスリードを逐次行うことにより、フラッシュメモリから送信されるステータスデータ中のBusyビットを参照してフラッシュメモリがBusy状態であるか否かを検出する方法がある。
例えば、特許文献1には、Busy状態を検出するためにフラッシュメモリの書込み又は消去の終了確認を行う技術が開示されている。
特開2011−22778号公報
例えば、上記(1)の方法では、フラッシュメモリコントローラに、FRDY信号を検出するためのピンを用意する必要があり、例えば、フラッシュメモリコントローラで、複数のフラッシュメモリを制御する場合には、多数のピンを用意しなければならないという問題がある。また、上記(2)の方法では、フラッシュメモリの状態を取得するステータスリードを、例えばポーリングにより複数回繰り返す必要があり、消費電力が大きくなってしまうという問題がある。特に、データ書込みや、イレースを実行している際には、その実行時間が長いので、無駄な消費電力がより大きくなるという問題がある。
本発明の目的は、フラッシュメモリコントローラに必要なピン数を抑えつつ、消費電力を低減することのできる技術を提供することにある。
第1の観点に従うフラッシュメモリコントローラは、フラッシュメモリに対してデータの書込み及び消去を行うフラッシュメモリコントローラであって、
前記フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔を記憶するポーリング間隔記憶部と、
前記ポーリング間隔記憶部に、前記ポーリング間隔を設定する設定部と、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理部と
を有する。
第2の観点に従うフラッシュメモリコントローラは、第1の観点において、
前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部と、
前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定部と、
前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定部と
を更に有し、
前記ポーリング処理部は、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始する。
第3の観点に従うフラッシュメモリコントローラは、第2の観点において、
前記フラッシュメモリは、MLC(Multi Level Cell)型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
前記開始基準設定部は、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する
第4の観点に従うフラッシュメモリコントローラは、第2の観点又は第3の観点において、
前記フラッシュメモリは複数個あり、
前記開始基準記憶部は、前記フラッシュメモリ毎に存在し、自分に対応する前記フラッシュメモリについての前記実行時間を開始基準時間情報として記憶し、
前記ポーリング処理部は、複数の開始基準記憶部のうちの前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対応する開始基準記憶部から、開始基準時間情報を取得し、当該開始基準時間情報に基づいて、前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対する前記取得信号の出力を開始する。
第5の観点に従うフラッシュメモリコントローラでは、第1乃至第4のいずれか1つの観点において、
前記フラッシュメモリは複数個あり、
前記ポーリング間隔記憶部は、前記複数のフラッシュメモリに共通である。
第6の観点に従うフラッシュメモリコントローラでは、第2乃至第5のいずれか1つの観点において、
前記測定部は、前記開始基準時間情報を設定又は変更する場合に、前記フラッシュメモリについて前記実行時間を測定し、前記開始基準時間情報を設定又は変更しない場合には、前記フラッシュメモリについて前記実行時間を測定しない。
第7の観点に従うフラッシュメモリシステムは、
第1乃至第6のいずずれか1つの観点に従うフラッシュメモリコントローラと、
前記フラッシュメモリコントローラに接続されたフラッシュメモリと
を有する。
第8の観点に従うフラッシュメモリ制御方法は、
フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔をポーリング間隔記憶部に設定し、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力する。
書込み又は消去の実行が終了したか否かを示す情報をフラッシュメモリから取得するための取得信号を出力させるポーリング間隔を設定しておき、そのポーリング間隔に従って、取得信号を出力させることができる。このため、フラッシュメモリコントローラに接続されたフラッシュメモリに応じて適切なポーリング間隔を設定することができ、消費電力を低減させるようにすることができる。
図1は、実施形態に係るフラッシュメモリ(FM)システムの構成例を示す。 図2は、ホストシステムが認識する論理アドレス空間とメモリセルアレイ内の物理アドレス空間との間の対応関係の一例を示す。 図3は、実施形態に係るフラッシュメモリシステムの詳細な構成例を示す。 図4は、実施形態に係るプログラム実行時Busy時間設定処理の流れを示す。 図5は、実施形態に係るイレース実行時Busy時間設定処理の流れを示す。 図6は、実施形態に係るプログラム実行時処理の流れを示す。 図7は、実施形態に係るポーリング間隔を説明する図である。 図8は、実施形態に係るBusy時間を説明する図である。 図9は、従来例に係るポーリング間隔を説明する図である。
以下、本発明に係る実施形態を説明する。なお、図面では、フラッシュメモリを「FM」と略記し、論理ブロックを「LB」と略記し、論理ページを「LP」と略記し、物理ブロックを「PB」と略記し、物理ページを「PP」と略記することがある。
図1は、実施形態に係るFMシステムの構成例を示す。
FMシステム100は、ホストシステム200からアクセス可能に接続される。FMシステム100は、FMコントローラ102と、FM群105とを有する。FM群105は、1以上のFM40を含む。FMコントローラ102は、ホストシステム200からFM40へのアクセスを制御する。
FM40は、不揮発性のメモリセルアレイ134と、レジスタ(以下、FMレジスタ)132とを有する。FMレジスタ132は、FMコントローラ102とメモリセルアレイ134との間で入出力されるデータを一時的に記憶するためのものである。
メモリセルアレイ134は、例えば、NAND型である。メモリセルアレイ134は、例えば、MLC(Multi Level Cell)型である。メモリセルアレイ134は、少なくとも1つのFMチップで構成されており、複数の物理ブロックを有する。各物理ブロックは、複数の物理ページを有する。ここで、NAND型のメモリセルアレイ134においては、データの書込み/読出しの単位(データの書込み/読出しの時に一度に入出力され得る記憶領域)は、ページ(物理ページ)単位であり、データの消去の単位は、ブロック(物理ブロック)単位である。この実施形態では、FMレジスタ132の記憶容量は、書込み/読出しの単位である1個の物理ページ分の記憶容量に等しく設定されている。
図2は、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係の一例を示す。
図2の右側の部分には、メモリセルアレイ134内の多数の物理ページ(1個の物理ブロックの部分のみを抜粋)が例示されている。この右側部分に示されるように、各物理ページは、複数個(典型的には2のべき乗数に相当する個数)の物理セクタを有する。本実施形態では、物理ページは、例えば8個の物理セクタを有する。物理セクタは1セクタ(512バイト)のデータが記憶される領域である。各物理セクタには1個の付加情報領域が割り当てられている。また、各物理ページは、1個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの1個の論理ページ(図2の左側に示す論理アドレス空間中で、#0、#1、#2、…という各論理ページ番号(LPN)が付与された記憶領域)が、FMコントローラ102によって関連づけられ得る。このように各物理ページに1個の論理ページが関係付けられてもよいし、1個の論理ページに対して複数個の物理ページが関連付けられてもよい。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号(ECC)は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報(例えば、論理ページ番号(LPN))及びその他の管理及び/又は制御用の情報が格納される。
再び図1を参照する。FMレジスタ132は、上述した1個の物理ページの構成に適合した構成を有する。すなわち、FMレジスタ132は、1個の物理ページ内の8個の物理セクタと8個の付加情報領域にそれぞれ格納されるユーザデータとECCをそれぞれ保持するための8個のセクタ領域と8個のECC領域のセットを有する。
さて、上述したように、NAND型のFM40では、データの書込みと読出しは物理ページを単位として行われる。FM40にデータが書込まれる場合には、まず、メモリコントローラ102からFM40内のFMレジスタ132に、書込み先の1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が書込まれ、その後に、FMレジスタ132からメモリセルアレイ134内の書込み先の物理ページにそのデータが書込まれる。逆に、FM40からデータが読出される場合には、まず、メモリセルアレイ134内の読出し元の物理ページからFMレジスタ132へその1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が読出され、その後に、FMレジスタ132からメモリコントローラ102へそのデータが読出される。
FMコントローラ102は、ホストI/F50と、FM I/F60と、レジスタ群113と、バッファ群115と、メモリ110と、マイクロプロセッサ(以下、CPU)112とを有する。
ホストI/F50は、ホストシステム200に接続される通信インタフェースデバイスである。ホストI/F50が、ホストシステム200からコマンド(例えば書込みコマンド及び読出しコマンド)を受信する。
FM I/F60は、FM群105(1以上のFM40)に接続される通信インタフェースデバイスである。FM I/F60を通じて、書き込み対象データがFM40に書込まれたり、FM40から読出されたデータが受信されバッファに格納されたりする。
レジスタ群113は、1以上のレジスタである。レジスタ群113におけるレジスタとしては、例えば、ホストシステム200からのコマンド(例えば書込みコマンド及び読出しコマンド)で指定されているLBAが設定されるLBAレジスタ、ホストシステム200からのコマンドが書込まれるコマンドレジスタ、ホストシステム200にとっての書込み対象又は読出し対象のデータ(ユーザデータ)が書き込まれるデータレジスタ、及びFM40からステータスデータを読出すステータスリードのポーリング間隔が設定されるポーリング間隔設定レジスタ114(図3参照)がある。
シーケンサ群116は、1以上のシーケンサ117(図3参照)を含む。シーケンサ群116におけるシーケンサ117の一例は後述する。
メモリ110は、FM40の制御又は管理のための情報を記憶する。例えば、その情報は、FM40毎の管理テーブルを含む。管理テーブルは、そのテーブルに対応するFM40について、どの物理領域(例えば物理ブロック或いは物理ページ)がどの論理領域(例えば論理ブロック或いは論理ページ)に割り当たっているかを表す情報と、物理ページの属性(例えば、正物理ページか副物理ページか)を表す情報と、どの物理ブロックが不良ブロックであるかを表す情報とを含んでよい。また、メモリ110は、CPU112で実行されるコンピュータプログラム(例えばファームウェア)を記憶してよい。
CPU112は、FMコントローラ102の動作を制御する。
以下では、新しい書込み要求を受信したときにFMコントローラ102のCPU112が行う制御について、より詳細に説明する。この説明に当たり、まず、図2を参照して、本実施形態における、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を説明する。
図2の左側の部分には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたLBAによって識別される。そして、複数個(本実施形態では8個)の論理セクタが集合して、1個の論理ページを構成する。さらに、複数個(本実施形態では64個)の論理ページが集合して、1個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたLBN(論理ブロック番号)によって識別される。また、各論理ブロック内では、複数個(例えば64個)の論理ページが、各論理ページに付与された論理ページ番号(LPN)によって識別される。
図2の右側の部分には、メモリセルアレイ134内の物理アドレス空間が(1個の物理ブロックの部分のみ抜粋して)示されている。物理アドレス空間では、複数個(本実施形態では64個)の物理ページが集合して、1個の物理ブロックを構成する。図2では図示省略されているが、メモリセルアレイ134内には複数個(論理ブロックの総数より多い)の物理ブロックが存在し、それらの物理ブロックは、各物理ブロックに付与された物理ブロックアドレス(PBA)により識別される。そして、各物理ブロック内では、複数個(例えば64個)の物理ページが、各物理ページに付与された物理ページ番号(PPN)によって識別される。各物理ページは、既に説明したように、複数個(本実施形態では8個)の物理セクタで構成され、更に、物理セクタに関連付けられた8個の付加情報領域と1個のページ情報領域とを有する。
図2に示されるように、メモリセルアレイ134内の各物理ブロック(例えば、PBA#0の論理ブロック)に対して、いずれか1個の論理ブロック(例えば、LBN#0の論理ブロック)が、FMコントローラ102のCPU112によって関係付けられる。そして、各物理ブロック64内の各物理ページ(例えば、PPN#7〜PPN#12の各物理ページ)に対して、その物理ブロックに関係付けられた論理ブロック中いずれか1個の論理ページ(例えば、LPN#0〜LPN#5の各論理ページ)が、CPU112によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報(例えば、LPN)が記述される。
ところで、メモリセルアレイ134内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム200からの書き込み要求に対応して、論理ページに対して1個の物理ページ(どの論理ページとも関連付けられていない物理ページ)が関連付けられ、その物理ページに対するデータ書き込みが行われる。
図3は、実施形態に係るフラッシュメモリシステムの詳細な構成例を示す。なお、図3においては、一部の構成については図示を省略している。
FMコントローラ102は、設定部の一例としてのCPU112と、ポーリング間隔記憶部の一例としてのポーリング間隔設定レジスタ114と、1以上のシーケンサ117とを含む。シーケンサ117は、ポーリング処理部及び開始基準設定部の一例である。FMコントローラ102には、複数のFM40が並列的に接続された部分FM群41が複数接続されている。FM00〜FM0x(xは、任意の整数)は、同一の部分FM群41に属し、同様に、FM10〜FM1x、FM20〜FM2x、・・・、FMx0〜FMxxのそれぞれが同一の部分FM群41に属している。
ポーリング間隔設定レジスタ114は、ポーリング間隔を記憶する。ポーリング間隔とは、ステータスを含むステータスデータを取得するため(ステータスリードするため)にステータスリード信号(取得信号)をFM40に出力するタイミングの間隔である。ポーリング間隔は、CPU112が所定の条件に基づいて設定するようにしてもよいし、CPU112がFMシステム100の外部からの指示(例えばホストシステム200からの指示)に基づいて設定するようにしてもよい。
ポーリング間隔は、リードBusy時間長(リードコマンドをFMに発行してからBusy解除までにかかる時間)、特に、リードBusy時間長のうちの最大値であるリードBusy最長時間長に基づく間隔(例えばリードBusy最長時間長の1/2)で良い。リードBusy時間長は、プログラムにかかるBusy時間長と消去にかかるBusy時間長に比べると短い。このようなリードBusy時間長に基づくポーリング間隔でステータスリード信号が出力されるようになっていれば、ステータスリード信号を定期的に出力することに伴う消費電力の低減と、Busy解除の検出とを両立することができる。
また、本実施形態では、ポーリング間隔は、FMシステム100における全てのFM40に対して共通となっている。具体的には、例えば、ポーリング間隔設定レジスタ114は、全てのFM40(全てのシーケンサ117)に共通である。これは、本実施形態では、FMシステム100における各FM40に適したポ−リング間隔が大きく異なることがなく、FM40毎のポーリング間隔を記憶するためにレジスタのサイズを大きくすることを防止するためである。
各シーケンサ117は、いずれかの部分FM群41を担当して、当該部分FM群41に属するFM40に対する各種処理を実行する。本実施形態では、シーケンサ0は、FM00〜FM0xの部分FM群41を担当し、シーケンサ1は、FM10〜FM1xの部分FM群41を担当し、シーケンサ2は、FM20〜FM2xの部分FM群41を担当し、シーケンサ3は、FM30〜FM3xの部分FM群41を担当し、シーケンサxは、FMx0〜FMxxの部分FM群41を担当する。
シーケンサ117は、担当する部分FM群41のFM40の数に対応する数のレジスタ201と、1つのBusyカウンタ202とを含む。レジスタ201は、開始基準記憶部の一例であり、部分FM群41のいずれか1つのFM40に対する、Busy状態を確認するためのステータスリードの実行を開始させる時間を特定する開始基準時間情報を記憶する。本実施形態では、開始基準時間情報は、例えば、対象とするFM40によるデータ書込み又はイレースに要する実行時間である。本実施形態では、シーケンサ117は、例えば、データ書込み又はイレースの実行を開始してから、この実行時間が経過した後に、ステータスリードの実行を開始させるようにしている。
Busyカウンタ202は、データ書込み又はイレースの実行時間や、ステータスリードの実行を開始させる時間等をカウントする。ここで、シーケンサ117の機能(主に、Busyカウンタ202の機能)により、測定部が構成される。
次に、実施形態に係るFMシステム100で行われる処理について説明する。
図4は、実施形態に係るプログラム実行時Busy時間設定処理の流れを示す。
プログラム実行時Busy時間設定処理は、例えば、シーケンサ117におけるデータ書込み(プログラム)の対象となるFM40に対応するレジスタ201が初期値である場合、すなわち、レジスタ201にBusy時間がまだ設定されていない場合や、レジスタ201に設定されているBusy時間を変更する場合に、実行される。なお、プログラムの対象となるFM40に対応するレジスタ201に、イレース実行時Busy時間設定処理(図5参照)によりBusy時間が設定されている場合であっても、このプログラム実行時Busy時間設定処理を行うようにしても良く、この場合には、プログラム実行時のBusy時間と、イレース実行時のBusy時間とをレジスタ201に格納するようにしてもよい。
シーケンサ117は、CPU112から書き込み開始命令を受け、書込み対象データを入力すると(S11)、書込み対象データの格納先となるFM40に対して、プログラム実行コマンドを発行する(S12)。なお、この処理を行うシーケンサ117は、書込み対象データの格納先となるFM40を担当するシーケンサ117である。次に、シーケンサ117は、Busyカウンタ202を起動する(S13)。これにより、Busyカウンタ202は、プログラム実行コマンドを発行してからの経過時間をカウントすることとなる。
次に、シーケンサ117は、ポーリング間隔設定レジスタ114に格納されているポーリング間隔が経過したか否かを判定し(S14)、経過していない場合(S14:No)、処理をステップS14に進める。一方、そのポーリング間隔が経過した場合(S14:Yes)、シーケンサ117は、FM40に対して、ステータスリード信号を送信し、FM40から取得したステータスデータのbusyビットを参照し、FM40のBusy状態が終了したか否かを判定することにより、Busy解除されているか否かを判定する(S15)。この結果、Busy解除されていない場合(S15:No)、シーケンサ117は、S14の処理に戻る。
一方、Busy解除されている場合(S15:Yes)、シーケンサ117は、Busyカウンタ202によるカウントを停止し(S16)、FM40がSLC型(Single Level cell)のFMであるか否かを判定する(S17)。
この結果、FM40がSLC型のFMでない場合(S17:No)、シーケンサ117は、プログラム対象のページが、MLC型のFM40におけるページペアの内の、プログラムの実行時間が短い方(すなわち、Busy状態が短い方)のページであるか否かを判定する(S18)。ここで、MLC型のFM40においては、1つのメモリセルが複数ビットの情報を格納することができ、複数ビットの記憶領域を提供することができる。このMLC型のFM40では、1つのメモリセルが提供する複数ビットの記憶領域が別々のページの記憶領域として用いられ、結果として、同一のメモリセル群の記憶領域が、複数のページに割当てられる。ここで、ページペアとは、このように、同一のメモリセル群が記憶領域として割り当てられている複数のページ群のことを言う。MLC型のFM40では、このように、1つのメモリセルに複数ビットの情報を格納するようにしているので、メモリセルのいずれのビットに書き込むかによって処理の実行時間が異なり、結果として、ページペアによってプログラムの実行時間が異なることとなる。
S18における、プログラム対象のページが、ページペアの中の実行時間が短い方のページであるか否かの判定は、例えば、プログラム対象の物理ページ番号に基づいて判定することができる。例えば、各ページペアについて、実行時間が短い方のページがより小さい物理ページ番号が割り振られている場合には、プログラム対象のページが、ページペアにおいて物理ページ番号が小さいページであるか否かが判定される。
この結果、Busy状態が短いページである場合(S18:Yes)、シーケンサ117は、Busyカウンタ202の停止時の時間、すなわち、ページに対するプログラムにおける実行時間(Busy時間)を、書込み対象のFM40に対応するレジスタ201に格納し(S19)、プログラム実行時Busy時間設定処理を終了する。一方、Busy状態が短いページでない場合(S18:No)、プログラム実行時Busy時間設定処理を終了する。ここで、Busy状態が短いページである場合にのみ、Busy時間をレジスタ201に格納するのは、以下に示す理由からである。すなわち、以降において、このレジスタ201のBusy時間が経過した後から、シーケンスリードを開始するようにする。このため、もし仮に、Busy状態が長いページについてのBusy時間を設定してしまうと、Busy状態が短いページにプログラムを実行する場合においては、このBusy時間が経過するよりも前に、FM40が既にBusy状態でなくなってしまい、FM40が処理可能であるにもかかわらず、他の処理ができないといった無駄な時間を生じさせ、レスポンスを低下させてしまう状況が発生してしまう。これに対して、Busy状態が短いページのBusy時間をレジスタ201に設定しておくと、このような状況の発生を適切に防止することができる。
一方、FM40がSLC型のFMである場合(S17:Yes)、シーケンサ117は、Busyカウンタ202の停止時の時間、すなわち、ページに対するプログラムにおける実行時間(Busy時間)を、書込み対象のFM40に対応するレジスタ201に格納し(S19)、プログラム実行時Busy時間設定処理を終了する。
図5は、実施形態に係るイレース実行時Busy時間設定処理の流れを示す。
イレース実行時Busy時間設定処理は、例えば、シーケンサ117におけるイレースの対象となるFM40に対応するレジスタ201が初期値である場合、すなわち、Busy時間がまだ設定されていない場合や、レジスタ201に設定されているBusy時間を変更する場合に、実行される。なお、イレースの対象となるFM40に対応するレジスタ201に、プログラム実行時Busy時間設定処理(図4参照)によりBusy時間が設定されている場合であっても、このイレース実行時Busy時間設定処理を行うようにしてもよく、この場合には、プログラム実行時のBusy時間と、イレース実行時のBusy時間とをレジスタ201に格納するようにしてもよい。
シーケンサ117は、CPU112から或るFM40の物理ブロックに対するイレースの指示を受け付けると、イレース対象の物理ブロックを有するFM40に対して、イレース実行コマンドを発行する(S21)。なお、この処理を行うシーケンサ117は、イレース対象のブロックを有するFM40を担当するシーケンサ117である。次に、シーケンサ117は、Busyカウンタ202を起動する(S22)。これにより、Busyカウンタ202は、イレース実行コマンドを発行してからの経過時間をカウントすることとなる。
次に、シーケンサ117は、ポーリング間隔設定レジスタ114に格納されているポーリング間隔が経過したか否かを判定し(S23)、経過していない場合(S23:No)、ステップS23の処理を再度行う。一方、そのポーリング間隔が経過した場合(S23:Yes)、シーケンサ117は、FM40に対して、ステータスリード信号を送信し、FM40から取得したステータスデータのbusyビットを参照し、FM40のBusy状態が終了したか否かを判定することにより、Busy解除されているか否かを判定する(S24)。この結果、Busy解除されていない場合(S24:No)、シーケンサ117は、S23の処理に戻る。
一方、Busy解除されている場合(S24:Yes)、シーケンサ117は、Busyカウンタ202によるカウントを停止し(S25)、Busyカウンタ202の停止時の時間、すなわち、イレースにおける実行時間(Busy時間)を、イレース対象のFM40に対応するレジスタ201に格納し(S26)、イレース実行時Busy時間設定処理を終了する。この処理により、レジスタ201には、このFM40においてイレースを実行する際の実行時間が格納されることとなる。
図6は、実施形態に係るプログラム実行時処理の流れを示す。
プログラム実行時処理は、図4又は図5によって、すでにレジスタ201にBusy時間が格納されている場合において、データ書込みを行う際の処理である。
シーケンサ117は、CPU112から書き込み開始命令を受け、書込み対象データを入力すると(S31)、書込み対象データの格納先となるFM40に対して、プログラム実行コマンドを発行する(S32)。なお、この処理を行うシーケンサ117は、書込み対象データの格納先となるFM40を担当するシーケンサ117である。
次に、シーケンサ117は、書込み対象データの書込み先となるFM40に対応するレジスタ201からBusy時間を取得し、当該Busy時間をカウント値の初期値として、Busyカウンタ202を起動する(S33)。なお、レジスタ201に、プログラム実行時のBusy時間と、イレース実行時のBusy時間とがある場合には、シーケンサ117は、プログラム実行時のBusy時間を取得する。この処理により、Busyカウンタ202は、例えば、設定されたBusy時間に対応するカウント値を経過時間に応じて減らしていく。
次に、シーケンサ117は、Busyカウンタ202のカウント値が所定値(例えば、0又は、0に近い値)になるまで処理を待つ(S34)。したがって、FM40がBusy状態であると推定できる時間においては、シーケンサ117は、FM40の状態を確認するためのステータスリードを実行しない。したがって、この間において、ステータスリードの無駄なポーリングが実行されず、無駄な電力消費を防止できる。また、例えば、図4に示すプログラム実行時Busy時間設定処理で設定されたBusy時間を用いている場合には、Busy時間がMLC型のFM40のページペアの中のBusy状態が短いページに対応するBusy時間であるので、プログラム対象のページが、Busy状態が短いページであっても、FM40のBusy状態が終わったにもかかわらず、FMコントローラ102側が認識していないような状態を適切に防止でき、レスポンスを低下させることがない。
その後、Busyカウンタ202のカウント値が所定値になった場合には、シーケンサ117は、所定の時点(例えば、当該ステップを最初に実行する場合には、所定値になった時点、以降においては、直前のポーリング間隔が経過した時点)からポーリング間隔設定レジスタ114に格納されているポーリング間隔が経過したか否かを判定し(S35)、経過していない場合(S35:No)、ステップS35の処理を再度行う。
一方、そのポーリング間隔が経過した場合(S35:Yes)、シーケンサ117は、FM40に対して、ステータスリード信号を送信し、FM40から取得したステータスデータのbusyビットを参照し、FM40のBusy状態が終了したか否かを判定することにより、Busy解除されているか否かを判定する(S36)。この結果、Busy解除されていない場合(S36:No)、シーケンサ117は、S35の処理に戻る。
一方、Busy解除されている場合(S36:Yes)、シーケンサ117は、Busyカウンタ202によるカウントを停止し、CPU112に、書込み先のFM40がBusy状態ではない旨の通知、及びプログラム実行時処理の終了を通知する。これにより、CPU112は、書込み先のFM40のBusy解除を行い、当該FM40に対する各種処理を実行させることができるようになる。
次に、イレース実行時処理の流れを示す。なお、図6に示すプログラム実行時処理との違いについて、図6を参照して説明する。
イレース実行時処理は、図4又は図5によって、すでにレジスタ201にBusy時間が格納されている場合において、イレースを実行する際の処理である。
イレース実行時処理では、シーケンサ117は、CPU112から或るFM40の物理ブロックに対するイレースの指示を受け付けると、S31及びS32に代えて、イレース対象の物理ブロックを有するFM40に対して、イレース実行コマンドを発行する。なお、この処理を行うシーケンサ117は、イレース対象の物理ブロックを有するFM40を担当するシーケンサ117である。
次に、シーケンサ117は、S33において、イレース対象の物理ブロックを有するFM40に対応するレジスタ201からBusy時間を取得し、当該Busy時間をカウント値の初期値として、Busyカウンタ202を起動する。なお、レジスタ201に、プログラム実行時のBusy時間と、イレース実行時のBusy時間とがある場合には、シーケンサ117は、イレース実行時のBusy時間を取得する。S34以降の処理は、プログラム実行時処理とほぼ同様である。イレース実行時処理においても、シーケンサ117は、FM40がBusy状態であると推定できる時間においては、FM40の状態を確認するためのステータスリードを実行しない。したがって、無駄な電力消費を防止できる。
図7は、実施形態に係るポーリング間隔を説明する図である。図9は、従来例に係るポーリング間隔を説明する図である。
図7は、シーケンサ117と、FM40との間で送受信される各種信号の状態を示している。シーケンサ117と、FM40との間で送受信される信号としては、コマンドラッチイネーブル信号(FCLE)、アドレスラッチイネーブル信号(FALE)、ライトイネーブル信号(FWEN)、リードイネーブル信号(FREN)、データストローブ信号(FDQS)、データバス信号(FDATA)、及びBusy信号(FRDY)がある。なお、Busy信号については、本実施形態においては、シーケンサ117と、FM40との間でやり取りを行わなくてもよい。
FCLEは、シーケンサ117がコマンドをFM40に送信する際に、所定の状態(例えば、ハイ)とされる。FALEは、FM40に対してアドレスを出力する際に、所定の状態(例えば、ハイ)とされる。FWENは、FM40への書込みを行う際に、所定の状態(例えば、ロー)とされる。FRENは、FM40から読出しを行う際に、所定の状態(例えば、ロー)とされる。本実施形態では、FRENは、DDR(Double Data Rate)転送の時にFM40のステータスリードを行う際に立ち上がり、立下りとされる。このトグル信号がステータスリード信号である。FDQSは、DDR転送の時にデータを送受信するための信号である。本実施形態では、FDQSはステータスリードデータの受信に使用される。FDATAは、データを送受信するための信号である。FDATAには、FM40に対するステータスリードを行った際に、FM40からシーケンサ117に送信されるステータスデータが含まれる。FRDYは、FM40がBusy状態であるか否かを示す信号であり、例えば、Busy状態の場合には、所定の状態(例えば、ロー)とされる。
従来においては、図9のFRENに示すように、FMコントローラにおいて固定的に決められたポーリング間隔に従って、ステータスリード信号Rが送信されて、ステータスリードが行われる。これに対して、本実施形態によると、図7のFRENに示すように、ステータスリード信号Rを送信するポーリング間隔は、ポーリング間隔設定レジスタ114に設定されているポーリング間隔となる。ポーリング間隔設定レジスタ114には、CPU112によりポーリング間隔を設定することができる。したがって、FMシステム100に備えられているFM40の性能等に応じて、適切なポーリング間隔を設定することができる。このため、例えば、ステータスリード信号Rのポーリング間隔を従来よりも長く設定することもでき、消費電力を低減することもできる。なお、図7及び図9は、イレースを実行する際の信号を示しているが、プログラムを実行する際には、図7及び図9のDATAのイレースコマンド(Erase)をプログラムコマンドに入れ替えればよく、他の信号については、これら図と同様である。
図8は、実施形態に係るBusy時間を説明する図である。
図8は、シーケンサ117と、FM40との間で送信される各種信号の状態を示している。なお、各種信号については、図7において説明したとおりである。
本実施形態においては、シーケンサ117からFM40にステータスコマンド(Status)を送信して、ステータスリード信号Rの出力を開始する。本実施形態では、図8のFDATAに示すように、ステータスコマンドを送信するタイミングを、FM40に対応するレジスタ201に格納されているBusy時間が終了する直後とし、その後、FRENに示すように、ステータスリード信号Rを送信し、ステータスリードを開始する。
このBusy時間は、各FM40におけるイレース処理(又はプログラム処理)の実行時間を測定したものであり、FRDYが示すBusy状態と略同じ時間となっている。したがって、FM40がBusy状態となっている時間において、ステータスリード信号Rが出力されることを低減することができ、消費電力を低減することができる。なお、図8は、イレースを実行する際の信号を示しているが、プログラムを実行する際には、図8のDATAのイレースコマンド(Erase)をプログラムコマンドに入れ替えればよく、他の信号については、同図と同様である。
以上、実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
100:フラッシュメモリシステム、102:メモリコントローラ、104:フラッシュメモリ

Claims (6)

  1. フラッシュメモリに対してデータの書き込み及び消去を行うフラッシュメモリコントローラであって、
    前記フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔を記憶するポーリング間隔記憶部と、
    前記ポーリング間隔記憶部に、前記ポーリング間隔を設定する設定部と、
    前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理部と、
    前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部と、
    前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定部と、
    前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定部と
    を更に有し、
    前記ポーリング処理部は、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始し、
    前記フラッシュメモリは、MLC(Multi Level Cell)型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
    前記開始基準設定部は、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する、
    フラッシュメモリコントローラ。
  2. 前記フラッシュメモリは複数個あり、
    前記開始基準記憶部は、前記フラッシュメモリ毎に存在し、自分に対応する前記フラッシュメモリについての前記実行時間を開始基準時間情報として記憶し、
    前記ポーリング処理部は、複数の開始基準記憶部のうちの前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対応する開始基準記憶部から、開始基準時間情報を取得し、当該開始基準時間情報に基づいて、前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対する前記取得信号の出力を開始する、
    請求項記載のフラッシュメモリコントローラ。
  3. 前記フラッシュメモリは複数個あり、
    前記ポーリング間隔記憶部は、前記複数のフラッシュメモリに共通である、
    請求項1又は2に記載のフラッシュメモリコントローラ。
  4. 前記測定部は、前記開始基準時間情報を設定又は変更する場合に、前記フラッシュメモリについて前記実行時間を測定し、前記開始基準時間情報を設定又は変更しない場合には、前記フラッシュメモリについて前記実行時間を測定しない、
    請求項乃至のいずれか一項に記載のフラッシュメモリコントローラ。
  5. 請求項1乃至のうちのいずれか一項に記載のフラッシュメモリコントローラと、
    前記フラッシュメモリコントローラに接続されたフラッシュメモリと
    を有するフラッシュメモリシステム。
  6. フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔をポーリング間隔記憶部に設定する設定ステップと
    前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理ステップと
    前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定ステップと、
    前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部に、前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定ステップと
    を有し、
    前記ポーリング処理ステップでは、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始し、
    前記フラッシュメモリは、MLC(Multi Level Cell)型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
    前記開始基準設定ステップでは、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する、
    フラッシュメモリ制御方法。
JP2012183364A 2012-08-22 2012-08-22 フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法 Active JP5447617B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012183364A JP5447617B2 (ja) 2012-08-22 2012-08-22 フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法
US13/914,729 US9146860B2 (en) 2012-08-22 2013-06-11 Flash memory controller, flash memory system, and flash memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012183364A JP5447617B2 (ja) 2012-08-22 2012-08-22 フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2014041468A JP2014041468A (ja) 2014-03-06
JP5447617B2 true JP5447617B2 (ja) 2014-03-19

Family

ID=50149071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012183364A Active JP5447617B2 (ja) 2012-08-22 2012-08-22 フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法

Country Status (2)

Country Link
US (1) US9146860B2 (ja)
JP (1) JP5447617B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105652707B (zh) * 2015-12-14 2019-04-19 重庆川仪自动化股份有限公司 一种信号采集方法、装置及系统
KR102498668B1 (ko) * 2017-05-17 2023-02-09 삼성전자주식회사 플래시-인지 힙 메모리 관리 방법 및 호스트 장치
JP7458740B2 (ja) 2019-10-21 2024-04-01 キオクシア株式会社 メモリシステム及び制御方法
JP2021111259A (ja) 2020-01-15 2021-08-02 キオクシア株式会社 メモリシステムとその制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3582692B2 (ja) 1998-01-22 2004-10-27 日本ビクター株式会社 フラッシュメモリの書き込み方法
JP2007172129A (ja) 2005-12-20 2007-07-05 Sony Corp 不揮発性メモリアクセス制御装置および不揮発性メモリ制御システム
US8904082B1 (en) * 2008-03-25 2014-12-02 Cadence Design Systems, Inc. Operation based polling in a memory system
JP2011022778A (ja) 2009-07-15 2011-02-03 Yokogawa Electric Corp フラッシュメモリ処理装置及びフラッシュメモリのポーリング方法

Also Published As

Publication number Publication date
US20140059274A1 (en) 2014-02-27
US9146860B2 (en) 2015-09-29
JP2014041468A (ja) 2014-03-06

Similar Documents

Publication Publication Date Title
US8296507B2 (en) Memory management and writing method and rewritable non-volatile memory controller and storage system using the same
US9268687B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US9280460B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
TWI592865B (zh) 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器
US8392649B2 (en) Memory storage device, controller, and method for responding to host write commands triggering data movement
US9176865B2 (en) Data writing method, memory controller, and memory storage device
EP3568768A1 (en) Directed sanitization of memory
US10409525B2 (en) Memory management method, memory control circuit unit and memory storage device
KR102299186B1 (ko) 자동화된 동적 워드 라인 시작 전압을 위한 장치 및 방법
US9304900B2 (en) Data reading method, memory controller, and memory storage device
US10628257B2 (en) Memory management method and storage controller
US20240061620A1 (en) Memory system and information processing system
US9442834B2 (en) Data management method, memory controller and memory storage device
US9460004B2 (en) Memory erasing method, memory controller, and memory storage apparatus
US10620874B2 (en) Memory management method, memory control circuit unit and memory storage apparatus
US8667348B2 (en) Data writing method for non-volatile memory module and memory controller and memory storage apparatus using the same
TW201947402A (zh) 記憶體管理方法以及儲存控制器
US20130332653A1 (en) Memory management method, and memory controller and memory storage device using the same
JP5447617B2 (ja) フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法
CN111078146B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
US9312011B1 (en) Data writing method, memory storage device and memory control circuit unit
US9152348B2 (en) Data transmitting method, memory controller and data transmitting system
JP2021163512A (ja) メモリシステムおよび情報処理システム
KR20190047391A (ko) 블록 주소 없이 액세스되는 불휘발성 메모리 장치 및 그 동작 방법
US10579306B1 (en) Memory management method and storage controller

Legal Events

Date Code Title Description
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: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

R150 Certificate of patent or registration of utility model

Ref document number: 5447617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150