JP2010026584A - メモリコントローラおよび不揮発性記憶装置 - Google Patents

メモリコントローラおよび不揮発性記憶装置 Download PDF

Info

Publication number
JP2010026584A
JP2010026584A JP2008183830A JP2008183830A JP2010026584A JP 2010026584 A JP2010026584 A JP 2010026584A JP 2008183830 A JP2008183830 A JP 2008183830A JP 2008183830 A JP2008183830 A JP 2008183830A JP 2010026584 A JP2010026584 A JP 2010026584A
Authority
JP
Japan
Prior art keywords
memory
buffer
data
host
sector
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
JP2008183830A
Other languages
English (en)
Inventor
Toshiyuki Honda
利行 本多
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.)
Panasonic Corp
Original Assignee
Panasonic 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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2008183830A priority Critical patent/JP2010026584A/ja
Publication of JP2010026584A publication Critical patent/JP2010026584A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】小さな容量のデータ、特に読み出し・書き込み単位よりも小さな容量のデータを良好に読み出すことができるメモリコトローラを提供する。
【解決手段】ホストとのデータの入出力を制御するホストインタフェースと、前記メモリとのデータの入出力を制御するメモリインタフェースと、2以上のセクターからなるページ単位のデータを記憶可能な揮発性メモリの複数からなるバッファと、前記バッファのそれぞれの揮発性メモリを前記ホストインタフェースに接続するか、前記メモリインタフェースに接続するかを制御するバッファ制御部と、を備えたメモリコントローラであって、前記バッファ制御部は、前記メモリから揮発性メモリへの前記セクター単位のデータの転送が終了した時に、前記ホストへの読み出しデータがなければ、前記揮発性メモリの接続を前記ホストインタフェースに切り替える。
【選択図】図4

Description

本発明は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置、および、不揮発性メモリを制御するメモリコントローラに関する。
近年、半導体の不揮発性メモリであるフラッシュメモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そして半導体プロセスの進化に伴いメモリカード容量が増加し、ビット単価は低下していることから、データファイルや静止画等の小容量の記録から、より大容量が必要となる動画記録へとその用途は広がっている。
このように大容量化は、不揮発性メモリの市場を拡げる要素ではあるが、容量が大きくなると共に、読み出し・書き込み単位が大きくなっている。より大容量のリッチなコンテンツをストレスなく取り扱うためには読み出し・書き込み性能を向上させる必要があり、その読み出し・書き込み性能を向上させるために、読み出し・書き込み単位を大きくしているためである。
それによって従来は容易に取り扱うことができた小さな容量のデータ、特に読み出し・書き込み単位よりも小さな容量のデータを取り扱う際の性能が低下することになっている。
書き込み単位が大きなフラッシュメモリについて、特許文献1には、書き込み単位を複数のバンクで構成して、バンク毎に対応するバッファメモリを設けることにより、転送時間を削減し、高速化する方法が開示されている。こういったバッファメモリの分割を行わない場合の、一般的な不揮発性記憶装置の構成と読み出しの動作について説明する。
○従来の構成
図12は、従来の不揮発性記憶装置の一実施形態であるメモリカードとホストの構成を示すブロック図である。不揮発性記憶装置であるメモリカード1201は、コントローラ1202と不揮発性メモリであるフラッシュメモリ103からなる。ホスト104ではメモリカード1201に対してデータの読み出し・書き込みを行う。データの読み出し・書き込みの最小単位はセクター(512バイト)である。ホスト104は、電源線・接地線やクロック線・コマンド線・データ線を介してメモリカード1201と接続される。メモリカード1201はホスト104から着脱可能であっても、着脱出来ない構成でもよい。
MPU1205は、コントローラ1202の内部にありコントローラ1202全体を制御する。ホストI/F1206は、ホスト104からのメモリカード制御コマンドを受け取り、ホスト104に対してレスポンスを返すと共に読み出し・書き込みのデータの転送を行う。フラッシュメモリI/F1207は、フラッシュメモリ103に対してフラッシュメモリ制御コマンドを発行すると共に、フラッシュメモリ103に対してデータの読み出し・書き込みを行う。ここでのフラッシュメモリ103は、例えばNANDタイプのフラッシュメモリであり、汎用的なインタフェースとしてのフラッシュメモリ制御コマンドで読み出し・書き込み・消去の動作を行う。
バッファメモリ1208では、ホスト104からフラッシュメモリ103間のデータをコントローラ1202内部で一時的に保持する。バッファメモリ1208については図13で説明する。ECC1209は、バッファメモリ1208とフラッシュメモリI/F1207双方に接続され、バッファメモリ1208からフラッシュメモリ103にデータを書き込みする際に、データとともにフラッシュメモリ103に書き込むECC符号を生成する。またさらに、フラッシュメモリ103からバッファメモリ1208にデータを読み出しする際に、データとともにフラッシュメモリから読み出したECC符号を使用して誤りを検出し、バッファメモリ1208に転送されたデータを訂正する。
図13は、図12のバッファメモリ1208の内部の構成を示した図である。バッファメモリ1208には容量がそれぞれ4KBの2面の揮発性メモリであるバッファA1301とバッファB1302がある。ホスト104が取り扱うデータの単位をセクター(512バイト)とすると、バッファA1301およびバッファB1302にはそれぞれ8セクター分のデータが格納できることになる。それぞれのセクターのデータの格納は、そのアドレスに対応するオフセットをつけてバッファA1301またはバッファB1302に格納する。具体的には、バッファA1301およびバッファB1302の先頭の512バイトにはセクタードレスの下位3ビットが0のセクターが格納され、次の512バイトにはセクタードレスの下位3ビットが1のセクターが格納され、以降同様に割り当てて、最後の512バイトにはセクタードレスの下位3ビットが7のセクターを格納される。
バッファA1301とバッファB1302は、セレクタ1303を介してホストI/F1206につながる。また同様にバッファA1301とバッファB1302は、セレクタ1304とセレクタ1305を介してフラッシュメモリI/F1207またはECC1209につながる。ホストI/F1206側をフロントエンド側、フラッシュメモリI/F1207およびECC1209側をバックエンド側として、バッファA1301およびバッファB1302はそれぞれ異なる接続先と接続される。つまり、バッファA1301がフロントエンドと接続されているときにはバッファB1302がバックエンド側と接続され、バッファA1301がバックエンド側と接続されているときにはバッファB1302がフロントエンド側と接続される。この接続を切り替えることを「バッファをトグルする」と表現する。バッファをトグルすると、バッファA1301またはバッファB1302からみると接続先のフロントエンドとバックエンドが切り替わり、フロントエンドまたはバックエンドからみると接続先のメモリがバッファA1301とバッファB1302とで切り替わる。1306は制御回路でありバッファメモリ1208内のバッファのトグルを含む動作の制御を行う。
図3は、不揮発性メモリであるフラッシュメモリ103の内部のメモリの構成を示した図である。フラッシュメモリ103は複数の物理ブロック301からなる。物理ブロック301はフラッシュメモリ103におけるデータの消去単位である。一般的には1024〜4096個程度の物理ブロックがフラッシュメモリ103に含まれる。物理ブロック301はそれぞれ複数の物理ページ302からなる。物理ページ302はフラッシュメモリ103におけるデータの書き込み単位であり、かつ読み出し単位でもある。一般的には32〜128ページの物理ページが物理ブロックに含まれる。物理ページ302の容量はデータを格納する用途の4Kバイトと、データに付随する管理データやデータに対応するECC符号を格納するための領域とからなる約4Kバイトの容量を持つ。フラッシュメモリ103はこの物理ページ単位でコントローラ1202とのデータの読み出し・書き込みを行う。つまり4Kバイト単位でデータの書き込みが行われる。ホスト104が4Kバイト以下のデータの書き込みを行う場合でも、コントローラ1202はフラッシュメモリ103にデータを書き込むためには4Kバイトのデータを準備する必要がある。そのためには、コントローラ1202内部に4Kバイトの揮発性メモリを持ち、フラッシュメモリ103から読み出したデータとホスト104から転送されるデータを合わせてフラッシュメモリ103に書き込む。この4Kバイトの揮発性メモリがバッファA1301およびバッファB1302のことである。
○従来の動作
図14に従来の不揮発性記憶装置からデータを読み出す際のタイミングチャートを示す。図14は、誤り訂正が発生しない場合の、従来の概念を理解するための簡単なタイミングチャートである。図14において“フラッシュからの読み出し”はフラッシュメモリ103からコントローラ1202への読み出しデータの転送を示す。“バッファAへのアクセス”はバッファA1301へのフラッシュメモリI/F1207からのデータの書き込み転送と、バッファA1301からホストI/F1206へのデータの読み出し転送(ハッチングで表記)を示す。“バッファBへのアクセス”はバッファB1302へのフラッシュメモリI/F1207からのデータの書き込み転送と、バッファB1302からホストI/F1206へのデータの読み出し転送(ハッチングで表記)を示す。“ホストへの出力”はホストI/F1206からホスト104へのデータの出力転送を示す。“バッファのトグルタイミング”は制御回路1306によるセレクタ1303,1304を切り替えてのバッファA1301とバッファB1302の接続状態を切り替えるタイミングを示す。
図14に示されるタイミングチャートの前にホスト104からメモリカード1201にデータの読み出しコマンドが発行される。ここでは簡単のためにセクター0からの読み出しコマンドが発行されたとする。MPU1205は、読み出しコマンドを理解して、セクター0からのデータが格納されたフラッシュメモリ103の物理アドレスを決定し、フラッシュメモリ103に対して読み出しコマンドを発行する。フラッシュメモリ103はコントローラ1202からの読み出しコマンドに対応して対応する物理アドレスの物理ページ302からデータを読み出してコントローラ1202に対してデータの転送を開始する。図14のタイミングチャートはここからのタイミングを示している。なお、最初の状態としてバッファA1301はフラッシュメモリI/F1207側に、バッファB1302はホストI/F106側と接続されているとする。
まず時間t1401にフラッシュメモリ103からフラッシュメモリI/F1207を介してバッファA1301にセクター0から順にデータの転送が開始される。時間t1402までの間にセクター0からセクター7のデータの転送が終了する。これでバッファA1301にはセクター0からセクター7までの8セクター分のデータが格納されたことになる。時間t1402では制御回路1306はバッファのトグルを行う。これによりセクター0〜7のデータが格納されたバッファA1301はホストI/F1206側と接続され、バッファB1302はフラッシュメモリI/F1207側と接続される。時間t1402からは、フラッシュメモリ103から読み出したデータはフラッシュメモリI/F1207を介してバッファB1302に転送される。時間t1402から時間t1403までの時間でセクター8からセクター15のデータが転送される。また時間t1402からは、ホスト104に対してバッファA1301のデータがホストI/F1206を介して出力される。ここで注目したいのはフラッシュメモリ103からのデータの読み出しが開始される時間t1401から、ホスト104に対するデータの出力が開始されるタイミングt1402までは、フラッシュメモリI/F1207を介した8セクター分のデータの転送時間を必要とすることである。つまり最初のセクターが出力されるまでの時間が長いということである。
時間t1404で、ホストI/F1206に接続されたバッファA1301には格納されたセクター0〜セクター7のデータホスト104への読み出し転送は終了する。フラッシュメモリ103からバッファB1302へのセクター8〜セクター15までのデータの転送は既に時間t1403までに完了している。そこで制御回路1306はバッファのトグルを行う。この結果、バッファA1301はフラッシュメモリI/F1207側と、セクター8〜セクター15のデータが格納されたバッファB1302はホストI/F1206側と接続される。以降同様に、8セクター単位でバッファA1301とバッファB1302をトグルしながらフラッシュメモリ103からホスト104にデータを読み出す。
以上、図14のタイミングチャートで特に説明をしていないがコントローラ1202はフラッシュメモリ103に対してセクター0に続く連続データを読み出すために適宜フラッシュメモリ103に対して読み出しコマンドを発行する必要がある。
図15、図16、図7に、図14で示したタイミングチャートを実現するための制御回路1306における処理のフローチャートを示す。制御回路1306内部は主に3つの機能部分からなる。“対ホストI/Fフロー”と“対フラッシュメモリI/Fフロー”と“バッファトグルフロー”である。図15は“対ホストI/Fフロー”を示したフローチャートである。
(a)最初にデータの書き込みや読み出しが行われる前は状態1501ではスタンバイ状態をとる。ホスト104からメモリカード1201への読み出しコマンドを受けて、状態1502へと遷移する。
(b)状態1502はトグル許可状態である。“バッファトグルフロー”部に対してトグルを許可する。そして状態1503に遷移する。
(c)状態1503はバッファ待ちの状態である。
(d)判定1504でバッファがトグルされたかどうかを判定し、トグルされれば状態1505に遷移し、トグルされていなければ状態1503に戻る。
ホスト104からメモリカードに読み出しコマンドが発行されると状態1501から状態1503までは直ぐに遷移する。図14の時間t1401では既に状態1503の状態である。
ここで“対ホストI/Fフロー”の説明を中断し、図16の“対フラッシュメモリI/Fフロー”の説明を行う。
(a)最初にデータの書き込みや読み出しが行われる前は状態1601ではスタンバイ状態をとる。ホスト104からメモリカード1201への読み出しコマンドを受けて、状態1602へと遷移する。
(b)状態1602は転送許可状態である。フラッシュメモリI/F1207からのデータの転送を許可する。そして状態1603に遷移する。
(c)状態1603は転送待ち状態である。フラッシュメモリI/F1207からのデータの転送が完了するのを待つ。
(d)判定1604でページ単位の転送が終了したかどうかを判定し、終了していなければ状態1603に戻り、終了していれば判定1605に遷移する。ページ単位の終了までの期間が図14の時間t1401〜t1402の期間に相当する。時間t1402はちょうどページ単位の転送が終了するタイミングであり、判定1604でページ単位の転送が終了したと判定し状態1605へと遷移する。
(e)状態1605はトグル許可状態である。“バッファトグルフロー”部に対してトグルを許可する。そして状態1606に遷移する。
(f)状態1606はバッファ待ちの状態である。
(g)判定1607でバッファがトグルされたかどうかを判定し、トグルされれば状態1602に遷移し、トグルされていなければ状態1606に戻る。
このように時間t1402で“対ホストI/Fフロー”も“対フラッシュメモリI/Fフロー”もバッファ待ちの状態になる。ここで、“対フラッシュメモリI/Fフロー”の説明を中断し、図7の“バッファトグルフロー”の説明を行う。
(a)最初にデータの書き込みや読み出しが行われる前は状態701ではスタンバイ状態をとる。ホスト104からメモリカード1201への読み出しコマンドを受けて、状態702へと遷移する。
(b)状態702はトグル許可待ち状態である。
(c)“対ホストI/Fフロー”および“対フラッシュメモリI/Fフロー”双方がトグル許可したかどうかを判定703で判定し、双方とも許可していれば状態704に遷移し、どちらか一方でも許可していなければ状態702へ戻る。図15および図16で説明したように“対ホストI/Fフロー”も“対フラッシュメモリI/Fフロー”も時間t1402ではトグル許可をしているので、時間t1402で状態704へと遷移する。
(d)状態704ではバッファをトグルする。つまりバッファA1301とバッファB1302の接続状態を切り替える。そして状態702のトグル許可待ち状態に遷移する。なお、状態704でバッファをトグルすることによって“対ホストI/Fフロー”および“対フラッシュメモリI/Fフロー”でトグル許可を行ったという情報を一旦リセットされる。つまり2回目以降の判定703で行われるトグル許可されたかどうかの判定はその前の状態704でのバッファのトグル以降に許可されたかどうかを判定する。
以上、図15,図16、図7を用いて説明した制御回路1306のフローチャートを使用して、誤り訂正が発生する場合の動作の説明を行う。誤り訂正がある場合のタイミングチャートを図17に示す。
図17において“バッファAへのアクセス”“バッファBへのアクセス”“ホストへの出力”は図14と同様の意味を示す。“ECC検出回路”はECC1209において誤りを検出する機能部分が動作している期間を示し、フラッシュメモリ103からデータおよびECC符号を読み出す際に動作する。“ECC誤り位置演算回路”はECC1209において誤りの発生したアドレスを演算する期間を示す。“ECC訂正回路”はECC1209がフラッシュメモリ103から読み出したデータが格納されたバッファメモリ1208に対して誤りの訂正を行う期間を示す。“ホスト側制御ステート”は図15で説明した“対ホストI/Fフロー”の状態を、“フラッシュ側制御ステート”は図16で説明した“対フラッシュメモリI/Fフロー”の状態を示す。
最初に時間t1700にホスト104からメモリカード1201にデータの読み出しコマンドが発行される。ここでは簡単のためにセクター0からの読み出しコマンドが発行されたとする。“対ホストI/Fフロー”は図15で説明したように時間t1700に状態1502でトグル許可を行った後、状態1503でバッファ待ちの状態になる。“対フラッシュメモリI/Fフロー”は、状態1603の転送待ちの状態である。MPU1205は読み出しコマンドを理解して、セクター0からのデータが格納されたフラッシュメモリ103の物理アドレスを決定し、フラッシュメモリ103に対して読み出しコマンドを発行する。フラッシュメモリ103はコントローラ1202からの読み出しコマンドに対応して対応する物理アドレスの物理ページ302からデータを読み出してコントローラ1202に対してデータの転送を開始する。なお、最初の状態としてバッファA1301はフラッシュメモリI/F1207側と、バッファB1302はホストI/F1206側と接続されているとする。
時間t1701ではフラッシュメモリ103からフラッシュメモリI/F1207を介してバッファA1301にセクター0から順にデータが転送される。この時、ECC1209で、誤りの検出と誤り位置の演算と誤りの訂正を順番に行うと処理時間が長くなるので、平行してパイプライン方式で処理する。具体的には、誤りの検出と平行して誤り位置の演算を行いその後に、誤り訂正を行う。つまり誤り位置の演算を行うときには平行して1セクター後の誤りの検出が行われる。図17より分かるようにセクター0の誤り位置の演算とセクター1の誤りの検出は平行して行われる。またバッファに着目したときに、誤り訂正のためのECC1209からバッファメモリ1208へのアクセスはデータ転送後に1セクター前の誤り訂正が行われる。図17より分かるようにフラッシュメモリ103からセクター1のデータを転送した後にセクター0の誤り訂正を行う。このようにして、誤り訂正を行いつつデータの転送を行う。時間t1701から時間t1702の間にセクター0〜セクター7のデータの転送および誤り訂正が終了する。“対フラッシュメモリI/Fフロー”は判定1604を経て状態1605へと遷移する。状態1605はでトグル許可を行う。従って時間t1702では“バッファトグルフロー”は状態704でバッファのトグルを行い、バッファA1301とバッファB1302の接続状態を切り替える。“対ホストI/Fフロー”は状態1505でセクター指定転送許可としてホストI/F1206に対してセクター0のデータの転送を許可し、状態1506で転送待ち状態となる。“対フラッシュメモリI/Fフロー”は状態1602でフラッシュメモリI/F1207に転送許可を行い、状態1603で転送待ち状態になる。
時間t1702からはバッファA1301のセクター0からセクター7のデータはホストI/F1206を経由してホスト104に出力される。ここで注目したいのはフラッシュメモリ103からのデータの読み出しが開始される時間t1701から、ホスト104に対するデータの出力が開始されるタイミングt1702までは、フラッシュメモリI/F1207を介した8セクター分のデータの転送時間と誤りを訂正する時間と1セクター分の誤り位置を演算する時間を要することである。つまり最初のセクターが出力されるまでの時間が長いということである。
以上説明してきた構成および方法に特許文献1で示されたバッファの分割を適用することにより、最初のセクターの出力を速くすることは可能である。例えばバッファメモリ1208の内部の構成として図18に示すように1セクター単位の揮発性メモリを複数備えることで実現できる。
しかしながら、大きな容量の揮発性メモリを複数の小さな容量の揮発性メモリで置き換えた場合にはデメリットがある。例えばコントローラを1つの半導体チップに集積している場合にはチップ面積の増加および、検査項目の増加につながる。チップ面積の増加も検査項目の増加もコストの増加につながる。揮発性メモリはメモリセルアレイと周辺回路からなるが、メモリ容量が倍になっても周辺回路は倍にはならない。逆にメモリ容量を半分にしても周辺回路は半分にならない。従って、大きな容量の揮発性メモリを、その和が等しくなるように複数個の小さな容量の揮発性メモリで置き換えると相対的に周辺回路の占める割合が大きくなり、チップ面積が増加する。また、別の観点で考えると、ひとつの揮発性メモリを複数個の揮発性メモリで置き換えるという行為はI/Fである入出力信号の数を増やすことに他ならない。入出力信号の数の増加は信号配線の増加につながり、やはりチップ面積の増加につながる。
図19と図20に、図13と図18に対応するメモリの構成における半導体チップ上のレイアウトの概念図を示す。図19は、4Kバイトの揮発性メモリが2つとセレクタからなる構成で、揮発性メモリの総容量は8Kバイトである。図20は、512バイトのメモリが16個とセレクタからなる構成で、図19と同じく揮発性メモリの総容量は8Kバイトである。図19と図20ともに配線を斜線の網掛けパターンで、メモリの周辺回路をハッチングパターンで表記している。メモリセルアレイは512Bと書いた白の四角で表記している。図19における4Kバイトの揮発性メモリのメモリセルアレイは4Kバイトのメモリセルアレイであるが、図20との比較のために512バイト単位の集合として表現している。総容量は8Kバイトで同じであるが、メモリの周辺回路部分や配線部分が、より小さな容量のメモリで構成した(図20)ほうが面積が増えていることがわかる。
つまり、半導体チップのコストアップを許容出来ない場合において特許文献1に示されるバッファの分割を適用できない。
また、別の考え方として特許文献2に示されるように小サイズのバッファメモリ2個でのみバッファメモリを構成する手法もあるが、このようにフラッシュメモリの書き込みサイズ未満の容量のバッファメモリしか備えない場合には別の課題が発生する。フラッシュメモリの書き込みサイズのデータのコピーを行うためには、例えばメモリカード外部などに書き込みサイズに相当するバッファを備える必要がある。
特開2003−85034号公報 特開2002−288034号公報 特表2007−528079号公報
以上述べてきたように、不揮発性メモリの大容量化に伴い、従来は容易に取り扱うことができた小さな容量のデータ、特に読み出し・書き込み単位よりも小さな容量のデータを読み出す際の性能が低下することになる。
本発明の目的は、小さな容量のデータ、特に読み出し・書き込み単位よりも小さな容量のデータを良好に読み出すことができるメモリコントローラを提供することである。
本発明に係るメモリコントローラは、ホストからのデータの読み出し要求に対して、メモリから対応するデータを読み出して前記ホストに固定容量のセクター単位で転送し、
前記ホストとのデータの入出力を制御するホストインタフェースと、前記メモリとのデータの入出力を制御するメモリインタフェースと、2以上のセクターからなるページ単位のデータを記憶可能な複数の揮発性メモリからなるバッファと、前記バッファのそれぞれの揮発性メモリを前記ホストインタフェースに接続するか、前記メモリインタフェースに接続するかを制御するバッファ制御部と、を備え、
前記ホストインタフェースに接続した前記バッファの前記揮発性メモリを第1の揮発性メモリとし、前記メモリインタフェースに接続した前記バッファの前記揮発性メモリを第2の揮発性メモリとして、
前記バッファ制御部は、前記メモリから前記第2の揮発性メモリへの前記セクター単位のデータの転送が終了した時に、前記第1の揮発性メモリに前記ホストへの読み出しデータがない場合に、前記第2の揮発性メモリの接続を前記ホストインタフェースに切り替える。
また、本発明の不揮発性記憶装置は、本発明のメモリコントローラと不揮発性メモリとからなる。
本発明のメモリコントローラによれば、小さな容量のデータのメモリからホストへの読み出し転送の開始を速く行うことができる。
以下、添付の図面を参照し、本発明の実施形態について説明する。
○本発明の構成
図1は、本発明の不揮発性記憶装置の一実施形態であるメモリカードとホストの構成を示すブロック図である。不揮発性記憶装置であるメモリカード101は、コントローラ102と不揮発性メモリであるフラッシュメモリ103からなる。ホスト104では、メモリカード101に対してデータの読み出し・書き込みを行う。データの読み出し・書き込みの最小単位はセクター(512バイト)である。ホスト104は、電源線・接地線やクロック線・コマンド線・データ線を介してメモリカード101と接続される。メモリカード101はホスト104から着脱可能であっても、着脱出来ない構成でもよい。
コントローラ102の内部にありコントローラ102全体を制御するのはMPU105である。ホストI/F106はホスト104からのメモリカード制御コマンドを受け取りホスト104に対してレスポンスを返すと共に読み出し・書き込みのデータの転送を行う。フラッシュメモリI/F107はフラッシュメモリ103に対してフラッシュメモリ制御コマンドを発行すると共にフラッシュメモリ103に対してデータの読み出し・書き込みを行うメモリI/Fである。ここでのフラッシュメモリ103は例えばNANDタイプのフラッシュメモリであり、汎用的なインタフェースとしてのフラッシュメモリ制御コマンドで読み出し・書き込み・消去の動作を行うことが出来る。
バッファメモリ108によってホスト104からフラッシュメモリ103間のデータをコントローラ102内部で一時的に保持する。バッファメモリ108については図2で詳しく説明する。ECC109は、バッファメモリ108とフラッシュメモリI/F107双方に接続され、バッファメモリ108からフラッシュメモリ103にデータを書き込みする際に、データとともにフラッシュメモリ103に書き込むECC符号を生成する。またさらに、フラッシュメモリ103からバッファメモリ108にデータを読み出しする際に、データとともにフラッシュメモリから読み出したECC符号を使用して誤りを検出し、バッファメモリ108に転送されたデータを訂正する。
図2は、図1のバッファメモリ108の内部の構成を示した図である。バッファメモリ108には容量がそれぞれ4KBの2面の揮発性メモリであるバッファA201とバッファB202がある。ホスト104が取り扱うデータの単位をセクター(512バイト)とすると、バッファA201およびバッファB202にはそれぞれ8セクター分のデータが格納できる。それぞれのセクターのデータの格納は、そのアドレスに対応するオフセットをつけてバッファA201またはバッファB202に格納する。具体的には、バッファA201およびバッファB202の先頭の512バイトにはセクタードレスの下位3ビットが0のセクターが格納され、次の512バイトにはセクタードレスの下位3ビットが1のセクターが格納され、以降同様に割り当てて、最後の512バイトにはセクタードレスの下位3ビットが7のセクターを格納する。
バッファA201とバッファB202は、セレクタ203を介してホストI/F106につながる。また同様にバッファA201とバッファB202は、セレクタ204とセレクタ205を介してフラッシュメモリI/F107またはECC109につながる。ホストI/F106側をフロントエンド側、フラッシュメモリI/F107およびECC109側をバックエンド側として、バッファA201およびバッファB202はそれぞれ異なる接続先と接続される。つまり、バッファA201がフロントエンドと接続されているときにはバッファB202がバックエンド側と接続され、バッファA201がバックエンド側と接続されているときにはバッファB202がフロントエンド側と接続される。この接続を切り替えることを「バッファをトグルする」と表現する。バッファをトグルすると、バッファA201またはバッファB202からみると接続先のフロントエンドとバックエンドが切り替わり、フロントエンドまたはバックエンドからみると接続先のメモリがバッファA201とバッファB202とで切り替わる。
制御回路206では、バッファメモリ108内のバッファのトグルを含む動作のバッファ制御を行う。セクター情報格納部207では、バッファA201およびバッファB202に格納されたセクターのアドレス情報を格納する。データ出力状況認識部208では、ホストI/F106からホスト104に出力されるデータのアドレス情報を認識する。
図3は、不揮発性メモリであるフラッシュメモリ103の内部のメモリの構成を示した図である。フラッシュメモリ103は複数の物理ブロック301からなる。物理ブロック301はフラッシュメモリ103におけるデータの消去単位である。一般的には1024〜4096個程度の物理ブロックがフラッシュメモリ103に含まれる。物理ブロック301はそれぞれ複数の物理ページ302からなる。物理ページ302はフラッシュメモリ103におけるデータの書き込み単位であり、かつ読み出し単位でもある。一般的には32〜128ページの物理ページが物理ブロックに含まれる。物理ページ302の容量は、データを格納する用途の4Kバイトと、データに付随する管理データやデータに対応するECC符号を格納するための領域とからなる約4Kバイトの容量を持つ。フラッシュメモリ103は、この物理ページ単位でコントローラ102とのデータの読み出し・書き込みを行う。つまり4Kバイト単位でデータの書き込みが行われる。ホスト104が4Kバイト以下のデータの書き込みを行う場合でも、コントローラ102はフラッシュメモリ103にデータを書き込むためには4Kバイトのデータを準備する必要がある。そのためには、コントローラ102内部に4Kバイトの揮発性メモリを持ち、フラッシュメモリ103から読み出したデータとホスト104から転送されるデータを合わせてフラッシュメモリ103に書き込む。この4Kバイトの揮発性メモリがバッファA201およびバッファB202のことである。
○本発明の動作
図4に本発明の不揮発性記憶装置からデータを読み出す際のタイミングチャートを示す。図4は誤り訂正が発生しない場合の、本発明の概念を理解するための簡単なタイミングチャートである。図4において“フラッシュからの読み出し”はフラッシュメモリ103からコントローラ102への読み出しデータの転送を示す。“バッファAへのアクセス”はバッファA201へのフラッシュメモリI/F107からのデータの書き込み転送と、バッファA201からホストI/F106へのデータの読み出し転送(ハッチングで表記)を示す。“バッファBへのアクセス”はバッファB202へのフラッシュメモリI/F107からのデータの書き込み転送と、バッファB202からホストI/F106へのデータの読み出し転送(ハッチングで表記)を示す。“ホストへの出力”はホストI/F106からホスト104へのデータの出力転送を示す。“バッファのトグルタイミング”は制御回路206によるセレクタ203,204を切り替えてのバッファA201とバッファB202の接続状態を切り替えるタイミングを示す。
図4に示されるタイミングチャートの前に、ホスト104からメモリカード101にデータの読み出しコマンドが発行される。ここでは簡単のためにセクター0からの読み出しコマンドが発行されたとする。MPU105は読み出しコマンドを理解して、セクター0からのデータが格納されたフラッシュメモリ103の物理アドレスを決定し、フラッシュメモリ103に対して読み出しコマンドを発行する。フラッシュメモリ103はコントローラ102からの読み出しコマンドに対応して対応する物理アドレスの物理ページ302からデータを読み出してコントローラ102に対してデータの転送を開始する。図4のタイミングチャートはここからのタイミングを示している。なお、最初の状態としてバッファA201はフラッシュメモリI/F107側に、バッファB202はホストI/F106側と接続されているとする。
まず、時間t401ではフラッシュメモリ103からフラッシュメモリI/F107を介してバッファA201にセクター0のデータが転送される。時間t401から時間t402の間にセクター0のデータの転送が終了する。時間t402はフラッシュメモリI/F107からのデータの転送におけるセクター境界のタイミングであるが、この時にホスト104がデータの転送待ち状態にあればバッファのトグルを行う。ホスト104がデータの転送待ちにあるかどうかはホスト104とホストI/F106とセレクタ203によって接続されているバッファ(今はバッファB202)にホスト104が未読み出しのデータが残っているかどうかで判定する。もちろん最初なのでホストへの未読み出しのデータはバッファB202には存在しない。従って時間t402ではバッファのトグルが行われる。これによりセクター0のデータが格納されたバッファA201は、ホストI/F106側と接続され、バッファB202はフラッシュメモリI/F107側と接続される。時間t402からは、フラッシュメモリ103から読み出したデータはフラッシュメモリI/F107を介してバッファB202に転送される。時間t402から時間t404までの時間でセクター1とセクター2のデータが転送される。また時間t402からは、ホスト104に対してバッファA201のデータがホストI/F106を介して出力される。ここで注目したいのはフラッシュメモリ103からのデータの読み出しが開始される時間t401から、ホスト104に対するデータの出力が開始されるタイミングt402までは、フラッシュメモリI/F107を介した1セクター分のデータの転送時間しかかからないことである。
時間t404では、これもフラッシュメモリI/F107からのデータ転送におけるセクター境界のタイミングである。この時にホストI/F106に接続されたバッファA201には格納されたセクター0のデータは既に時間t403までに転送を完了しており、ホスト104に対する未読み出しのデータは存在しないので制御回路206はバッファのトグルを行う。この結果、ホスト104へのデータの出力が完了したバッファA201はフラッシュメモリI/F107側と接続され、セクター1とセクター2のデータが格納されたバッファB202はホストI/F106側と接続される。時間t404からは、フラッシュメモリ103から読み出したデータはフラッシュメモリI/F107を介してバッファA201に転送される。時間t404から時間t405までの時間でセクター3からセクター5のデータが転送される。また時間t404からは、ホスト104に対してバッファB202のデータがホストI/F106を介して出力される。時間t404から時間t405までの時間でセクター1とセクター2のデータがホスト104に出力される。
時間t405はこれまでの同様にバッファのトグルを行うタイミングに相当するので制御回路206はバッファのトグルを行う。時間t406ではフラッシュメモリI/F107からセクター7までのデータの転送を完了する。セクター7のデータの転送はバッファB202の最後の512バイトに転送されるので、ここでバッファB202へのデータの書き込み転送は一旦終了する。つまり、バッファB202(またはバッファA201)の中に同時にセクタードレスの下位3ビットを除くアドレスが異なるアドレスのセクターのデータは格納しないように制御する。セクター8の下位3ビットを除くとアドレスは1であり、セクター7の下位3ビットを除いたアドレスである0とは異なるので、既にセクター7データが格納されたバッファB202にはセクター8のデータは書き込まれない。
時間t407で、バッファA201に格納されたセクター3〜5のデータのホストI/F106への出力は完了し、バッファのトグルが行われる。そして時間t407以降は従来と同様のバッファの制御である、バッファサイズである4Kバイト(8セクター)単位のバッファの切り替えを行う。
読み出しの最初のページのみ、本発明のバッファの切り替えを行い、以降は従来のバッファの切り替えを行うのは、本発明の効果が最初のページでより顕著であるが、以降はその効果が小さくなるので、より制御が容易な従来の手法を適用するためである。
なお、このバッファ切り替えの制御を切り替えるタイミングは特に先頭ページに限る必要が無く、最初は本発明で説明した制御フローを用いて、その後従来の制御フローに切り替えるのであれば、先頭ページに限る必要は無く、先頭を含む複数ページであっても構わない。
なお、図4のタイミングチャートで特に説明をしていないが、コントローラ102はフラッシュメモリ103に対してセクター0に続く連続データを読み出すために適宜フラッシュメモリ103に対して読み出しコマンドを発行する必要がある。
図5〜図7に図4で示したタイミングチャートを実現するための制御回路206における処理のフローチャートを示す。制御回路206内部は、主に3つの機能部分、すなわち“対ホストI/Fフロー”と“対フラッシュメモリI/Fフロー”と“バッファトグルフロー”からなる。図5は“対ホストI/Fフロー”を示したフローチャートである。
(a)最初にデータの書き込みや読み出しが行われる前は状態501ではスタンバイ状態をとる。
(b)ホスト104からメモリカード101への読み出しコマンドを受けて、状態502へと遷移する。状態502はトグル許可状態である。“バッファトグルフロー”部に対してトグルを許可する。そして状態503に遷移する。
(c)状態503はバッファ待ちの状態である。
(d)判定504でバッファがトグルされたかどうかを判定し、トグルされれば状態505に遷移し、トグルされていなければ状態503に戻る。ホスト104からメモリカードに読み出しコマンドが発行されると状態501から状態503までは直ぐに遷移する。図4の時間t401では既に状態503の状態である。
ここで“対ホストI/Fフロー”の説明を中断し、図6の“対フラッシュメモリI/Fフロー”の説明を行う。
(a)最初にデータの書き込みや読み出しが行われる前は状態601ではスタンバイ状態をとる。
(b)ホスト104からメモリカード101への読み出しコマンドを受けて、状態602へと遷移する。状態602は転送許可状態である。フラッシュメモリI/F107からのデータの転送を許可する。
(c)そして状態603に遷移する。状態603は転送待ち状態である。フラッシュメモリI/F107からのデータの転送が完了するのを待つ。
(d)判定604でセクター単位の転送が終了したかどうかを判定し、終了していなければ状態603に戻り、終了していれば判定605に遷移する。セクター単位の終了までの期間が図4の時間t401〜t402の期間に相当する。時間t402はちょうどセクター0の転送が終了するタイミングであり判定604でセクター単位の転送が終了したと判定し判定605へと遷移する。
(e)判定605では直前に転送を完了したセクターがバッファの境界にあるかどうかの判定を行う。これは直前に転送を行ったデータがバッファの最後のセクターであるかどうか、つまりセクタードレスの下位3ビットが7かどうかを判定する。最後のセクターであれば状態610に遷移する。最後のセクターでなければ(時間t402ではセクター0の転送終了後なので最後のセクターではない)判定606に遷移する。
(f)判定606では、直前の転送セクターが先頭ページに含まれるセクターかどうかと、ホスト側のバッファが待ち状態であるかどうかを判定する。ここでの先頭ページとは先頭の物理ページである4Kバイト(8セクター)に含まれているデータであるかどうかということであり、読み出しの先頭のセクターと下位3ビットを除いたセクタードレスが同一かどうかで判定する。これは図4で説明した先頭ページのみ、新しいバッファ切り替えフローを適用するという判定基準に相当する。先頭ページではないかホスト側がバッファ待ちでなければ状態602に遷移する。時間t402では“対ホストI/Fフロー”はまだ状態503にありバッファ待ち状態なので、状態607へと遷移する。
(g)状態607ではECC109に直前に転送し他セクターの訂正指示を行う。そして状態608へと遷移する。この際に直前に転送したセクターに誤りが無ければECC109は訂正指示を受けた後に直ぐに終了する。
(h)状態608は訂正終了待ちの状態であり、ECC109の訂正処理が完了するのを待つ。
(i)判定609でECC109の訂正処理が完了したかどうかを判定し、完了していなければ状態608に戻り、完了していれば状態610に遷移する。誤りがない場合にはECC109の処理は直ぐに終了するので、この場合も判定609で訂正処理が完了と判定し、状態610に遷移する。
図4では誤りがない場合のタイミングチャートを示しているので時間t402では状態603から判定604、判定605、判定606、状態607、状態608、判定609を経て直ぐに状態610に遷移する。
(j)状態610ではセクター情報を取得してセクター情報格納部207に格納する。
図4では時間t402でバッファA201にセクター0のデータのみが格納されているので、バッファA201にセクター0が格納されているという情報をセクター情報格納部207に格納する。このセクター情報取得はバッファがトグルされた後に、ホストI/F106に対してどのセクターに対応するデータが出力可能なのかを示すために必要な情報である。そして状態611に遷移する。
(k)状態611はトグル許可状態である。“バッファトグルフロー”部に対してトグルを許可する。そして状態612に遷移する。
(l)状態612はバッファ待ちの状態である。判定613でバッファがトグルされたかどうかを判定し、トグルされれば状態602に遷移し、トグルされていなければ状態612に戻る。
このように時間t402で“対ホストI/Fフロー”も“対フラッシュメモリI/Fフロー”もバッファ待ちの状態503,612になる。ここで、“対フラッシュメモリI/Fフロー”の説明を中断し、図7の“バッファトグルフロー”の説明を行う。
(a)最初にデータの書き込みや読み出しが行われる前は状態701ではスタンバイ状態をとる。ホスト104からメモリカード101への読み出しコマンドを受けて、状態702へと遷移する。
(b)状態702はトグル許可待ち状態である。
(c)“対ホストI/Fフロー”および“対フラッシュメモリI/Fフロー”双方がトグル許可したかどうかを判定703で判定し、双方とも許可していれば状態704に遷移し、どちらか一方でも許可していなければ状態702へ戻る。図5および図6で説明したように“対ホストI/Fフロー”も“対フラッシュメモリI/Fフロー”も時間t402ではトグル許可をしているので、時間t402で状態704へと遷移する。
(d)状態704ではバッファをトグルする。つまりバッファA201とバッファB202の接続状態を切り替える。そして状態702のトグル許可待ち状態に遷移する。なお、状態704でバッファとトグルすることによって“対ホストI/Fフロー”および“対フラッシュメモリI/Fフロー”でトグル許可を行ったという情報を一旦リセットされる。つまり2回目以降の判定703で行われるトグル許可されたかどうかの判定はその前の状態704でのバッファのトグル以降に許可されたかどうかを判定する。
以上、図5〜7を用いて説明した制御回路206のフローチャートを使用して、誤り訂正が発生する場合の動作の説明を行う。誤り訂正がある場合のタイミングチャートを図8に示す。
図8において“バッファAへのアクセス”“バッファBへのアクセス”“ホストへの出力”は図4と同様の意味を示す。“ECC検出回路”はECC109において誤りを検出する機能部分が動作している期間を示し、フラッシュメモリ103からデータおよびECC符号を読み出す際に動作する。“ECC誤り位置演算回路”はECC109において誤りの発生したアドレスを演算する期間を示す。“ECC訂正回路”はECC109がフラッシュメモリ103から読み出したデータが格納されたバッファメモリ108に対して誤りの訂正を行う期間を示す。“ホスト側制御ステート”は図5で説明した“対ホストI/Fフロー”の状態を、“フラッシュ側制御ステート”は図6で説明した“対フラッシュメモリI/Fフロー”の状態を示す。
最初に時間t800にホスト104からメモリカード101にデータの読み出しコマンドが発行される。ここでは簡単のためにセクター0からの読み出しコマンドが発行されたとする。“対ホストI/Fフロー”は図5で説明したように時間t800に状態502でトグル許可を行った後、状態503でバッファ待ちの状態になる。“対フラッシュメモリI/Fフロー”は、状態603の転送待ちの状態である。MPU105は読み出しコマンドを理解して、セクター0からのデータが格納されたフラッシュメモリ103の物理アドレスを決定し、フラッシュメモリ103に対して読み出しコマンドを発行する。フラッシュメモリ103はコントローラ102からの読み出しコマンドに対応して対応する物理アドレスの物理ページ302からデータを読み出してコントローラ102に対してデータの転送を開始する。なお、最初の状態としてバッファA201はフラッシュメモリI/F107側と接続され、バッファB202はホストI/F106側と接続されているとする。
時間t801ではフラッシュメモリ103からフラッシュメモリI/F107を介してバッファA201にセクター0のデータが転送される。時間t801から時間t802の間にセクター0のデータの転送が終了する。時間t802ではフラッシュメモリI/F107からセクター単位のデータの転送が終了する。セクター単位の転送終了時かつ、バッファの最終セクターでも無く、先頭ページで、ホスト側がバッファ待ち状態なので“対フラッシュメモリI/Fフロー”は判定604、判定605、判定606を経て状態607へと遷移する。状態607で制御回路206からECC109に訂正指示がでるのを受けて時間t802から時間t803の期間にECC109が誤り位置の演算を行い、時間t803から時間t804の期間にECC109はバッファA201に格納されたセクター0のデータにある誤りを訂正する。またこの時間t802から時間t804の期間は“対フラッシュメモリI/Fフロー”は訂正待ちの状態608をとる。時間t804でECC109による訂正が終了したことを受けて、“対フラッシュメモリI/Fフロー”は、状態610でセクター情報格納部207に、バッファA201にセクター0のデータが書き込まれているという情報を格納し、状態611でトグル許可を行う。従って時間t804では“バッファトグルフロー”は、状態704でバッファのトグルを行い、バッファA201とバッファB202の接続状態を切り替える。“対ホストI/Fフロー”は状態505でセクター指定転送許可として、ホストI/F106に対してセクター0のデータの転送を許可し、状態506で転送待ち状態となる。“対フラッシュメモリI/Fフロー”は状態602でフラッシュメモリI/F107に転送許可を行い、状態603で転送待ち状態になる。
時間t804からはバッファA201のセクター0のデータはホストI/F106を経由してホスト104に出力される。ここで注目したいのは、フラッシュメモリ103からのデータの読み出しが開始される時間t801から、ホスト104に対するデータの出力が開始されるタイミングt804までは、フラッシュメモリI/F107を介した1セクター分のデータの転送時間と、誤り位置を演算する時間と、誤りを訂正する時間と、しかかからないことである。
以降説明を省略するが、基本的な手順は図4のタイミングチャートに対して、実際に使用するために必要となる誤り訂正の処理を加えたものである。
○本発明の別の動作
従来との比較において注意した点から分かるように、本発明では最初のセクターの読み出しまでの時間を高速化することができる。逆に本発明は連続したセクタードレスからなる大きな容量のデータを読み出す際において相対的に効果は小さくなる。しかしながら、不揮発性記憶装置を取り扱うホスト自身が備える揮発性メモリの容量の制限等がある。そのため、大きな容量のデータを読み出す際に複数回の少ないセクターの読み出しに分割して読み出すホストも少なくはない。特許文献3にはそういったホストの読み出しシーケンスに対応するためにバッファメモリをキャッシュとして使用することで、性能を向上させる方法が示されている。しかし、不揮発性記憶装置内に大きな容量の揮発性メモリを備える必要がある。
本発明では制御回路206における処理のフローを切り替えることによって、最初のセクターだけを、速く出力することも可能である。そうすることで単一セクターからなるセクタードレスが連続する読み出しにおいて性能を向上させることができる。先頭セクターのみを高速に出力するための制御回路206の“対フラッシュメモリI/Fフロー”を図9に示す。
図9は、図6のフローチャートと比較して、判定606が判定906に置き換わっている点で相違する。判定606では、先頭ページかつ、ホストがバッファ待ちであることを判定していたが、判定906では、先頭セクターであるかどうかを判定している。なお、先頭セクターの時にはホストは先頭セクター以前にデータの出力を行わないためバッファ待ち状態であることが保障される。図9の“対フラッシュメモリI/Fフロー”を適用した場合のタイミングチャートを図10に示す。ここでもやはり、フラッシュメモリ103からのデータの読み出しが開始される時間t1001から、ホスト104に対するデータの出力が開始されるタイミングt1004までは、フラッシュメモリI/F107を介した1セクター分のデータの転送時間と、誤り位置を演算する時間と、誤りを訂正する時間と、しかかからない。
また、ここまではホストからメモリカードへの読み出しコマンドがセクター数を指定しない読み出しコマンドを前提とした動作であった。ホストはメモリカードに対して読み出し開始時に発行する読み出しコマンドと、必要なセクター数を読み出した後に発行する停止コマンドを使用してデータの読み出しを行う。この場合メモリカード内部のコントローラはホストが読み出しを行うセクター数が分からないために最終アドレスのセクターまでデータが読み出されることを前提に動作を開始する必要がある。しかし、ホストがメモリカードに対して読み出しセクター数指定読み出しコマンドを発行することで、メモリカード内部のコントローラの動作をより最適に行うことが出来る。
例えばホストがセクター0とセクター1の2セクターしか読み出さない場合を考える。ホストが読み出しセクター数を指定することなく読み出しコマンドを発行した場合には図8のタイミングチャートのようになる。ただし、時間t808でホストは必要なセクターの読み出しを終えて停止コマンドを発行することになる。それに対してホストが読み出しセクター数指定読み出しコマンドを発行する場合のタイミングチャートを図12に示す。セクター2のデータをフラッシュメモリから読み出し転送する必要がないので、セクター1の誤り訂正の処理が図8に比べては速く行うことが可能である。その結果ホストへのデータの読み出しを高速に行うことが出来る。
なお、本発明を説明するためにバッファメモリ内に揮発性メモリが2面ある構成で説明を行った。しかし、メモリは揮発性である必要はなく、また2面である必要もない。本発明の効果はバッファメモリの接続状態の切り替えを、メモリにデータが埋まってから行うのではなく、ホストへのデータの出力状況と、フラッシュメモリから読み出されたデータの状況から適切にバッファを切り替えることにより高速化を図るものである。またそういった考えから本発明の効果は読み出しに限定されるものではなく、書き込みにおいても適用可能であることは容易に想到可能である。
本発明は、不揮発性半導体装置の書き込みの高速化技術に適用でき、特に、今後書き込み単位が増大していく大容量の不揮発性メモリを使用して不揮発性記憶装置の書き込み性能向上に有用である。
本発明の不揮発性記憶装置のブロック図 本発明の不揮発性記憶装置内のバッファメモリのブロック図 本発明の不揮発性記憶装置内のフラッシュメモリのブロック図 本発明の不揮発性記憶装置の動作を示すタイミングチャート 本発明の不揮発性記憶装置のバッファメモリのホスト側制御フローチャート 本発明の不揮発性記憶装置のバッファメモリのフラッシュメモリ側制御フローチャート 本発明の不揮発性記憶装置のバッファメモリのトグル制御フローチャート 本発明の不揮発性記憶装置の動作を示すタイミングチャート 本発明の不揮発性記憶装置のバッファメモリのフラッシュメモリ側制御フロ 本発明の不揮発性記憶装置の動作を示すタイミングチャート 本発明の不揮発性記憶装置の動作を示すタイミングチャート 従来の不揮発性記憶装置のブロック図 従来の不揮発性記憶装置内のバッファメモリのブロック図 従来の不揮発性記憶装置の動作を示すタイミングチャート 従来の不揮発性記憶装置のバッファメモリのホスト側制御フローチャート 従来の不揮発性記憶装置のバッファメモリのフラッシュメモリ側制御フローチャート 従来の不揮発性記憶装置の動作を示すタイミングチャート 従来の不揮発性記憶装置内のバッファメモリのブロック図 小サイズの揮発性メモリで構成したバッファメモリのレイアウト 大サイズの揮発性メモリで構成したバッファメモリのレイアウト
符号の説明
101 メモリカード
102 コントローラ
103 フラッシュメモリ
104 ホスト
105 MPU
106 ホストI/F
107 フラッシュメモリI/F
108 バッファメモリ
109 ECC
201 バッファA
202 バッファB
203 セレクタ
204 セレクタ
205 セレクタ
206 制御回路
207 セクター情報格納部
208 データ出力情報認識部
301 物理ブロック
302 物理ページ
1201 メモリカード
1202 コントローラ
1205 MPU
1206 ホストI/F
1207 フラッシュメモリI/F
1208 バッファメモリ
1209 ECC
1301 バッファA
1302 バッファB
1303 セレクタ
1304 セレクタ
1305 セレクタ
1306 制御回路

Claims (7)

  1. ホストからのデータの読み出し要求に対して、メモリから対応するデータを読み出して前記ホストに固定容量のセクター単位で転送すると共に、前記ホストからのデータの書き込み要求に対して前記メモリに対応するデータを書き込み転送するメモリコントローラであって、
    前記ホストとのデータの入出力を制御するホストインタフェースと、
    前記メモリとのデータの入出力を制御するメモリインタフェースと、
    2以上のセクターからなるページ単位のデータを記憶可能な複数の揮発性メモリからなるバッファと、
    前記バッファのそれぞれの揮発性メモリを前記ホストインタフェースに接続するか、前記メモリインタフェースに接続するかを制御するバッファ制御部と、
    を備え、
    前記ホストインタフェースに接続した前記バッファの前記揮発性メモリを第1の揮発性メモリとし、前記メモリインタフェースに接続した前記バッファの前記揮発性メモリを第2の揮発性メモリとして、
    前記バッファ制御部は、前記メモリから前記第2の揮発性メモリへの前記セクター単位のデータの転送が終了した時に、前記第1の揮発性メモリに前記ホストへの読み出しデータがない場合に、前記第2の揮発性メモリの接続を前記ホストインタフェースに切り替えることを特徴とするメモリコントローラ。
  2. 前記バッファ制御部は、前記ホストからの読み出し要求に対する最初のページ以降のセクターのデータを前記メモリから読み出す際に、前記メモリから前記第2の揮発性メモリへの前記ページ単位のデータの転送が終了した時に、その時点において、前記ホストインタフェースに接続した前記バッファの前記揮発性メモリを第1の揮発性メモリとし、前記メモリインタフェースに接続した前記バッファの前記揮発性メモリを第2の揮発性メモリとして、前記第2の揮発性メモリの接続を前記ホストインタフェースに切り替えることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記バッファ制御部は、前記ホストからの読み出し要求に対する最初のセクター以降のセクターのデータを前記メモリから読み出す際に、前記メモリから前記第2の揮発性メモリへの前記ページ単位のデータの転送が終了した時に、その時点において、前記ホストインタフェースに接続した前記バッファの前記揮発性メモリを第1の揮発性メモリとし、前記メモリインタフェースに接続した前記バッファの前記揮発性メモリを第2の揮発性メモリとして、前記第2の揮発性メモリの接続を前記ホストインタフェースに切り替えることを特徴とする請求項1に記載のメモリコントローラ。
  4. 前記メモリコントローラは、さらに前記ホストからのデータの書き込み要求に対して前記メモリに対応するデータを書き込み転送し、
    前記バッファ制御部は、前記ホストから前記第1の揮発性メモリへの前記セクター単位のデータの転送が終了した時に、その時点において、前記ホストインタフェースに接続した前記バッファの前記揮発性メモリを第1の揮発性メモリとし、前記メモリインタフェースに接続した前記バッファの前記揮発性メモリを第2の揮発性メモリとして、前記第2の揮発性メモリに前記メモリへの書き込みデータがない場合に、前記第1の揮発性メモリの接続を前記メモリインタフェースに切り替えることを特徴とする請求項1に記載のメモリコントローラ。
  5. 前記バッファの前記揮発性メモリの数が2個であることを特徴とする請求項1に記載のメモリコントローラ。
  6. 前記バッファの前記第1の揮発性メモリと前記第2の揮発性メモリは、一方が前記ホストインタフェースと接続している場合は、他方が前記メモリインタフェースに接続しており、
    前記バッファ制御部によって、前記第1の揮発性メモリと前記第2の揮発性メモリの接続先を前記ホストインタフェースと前記メモリインタフェースとの間でトグルさせることを特徴とする請求項1に記載のメモリコントローラ。
  7. 不揮発性メモリと、
    請求項1から6のいずれか一項に記載のメモリコントローラと、
    を備えた不揮発性記憶装置。
JP2008183830A 2008-07-15 2008-07-15 メモリコントローラおよび不揮発性記憶装置 Pending JP2010026584A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008183830A JP2010026584A (ja) 2008-07-15 2008-07-15 メモリコントローラおよび不揮発性記憶装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008183830A JP2010026584A (ja) 2008-07-15 2008-07-15 メモリコントローラおよび不揮発性記憶装置

Publications (1)

Publication Number Publication Date
JP2010026584A true JP2010026584A (ja) 2010-02-04

Family

ID=41732392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008183830A Pending JP2010026584A (ja) 2008-07-15 2008-07-15 メモリコントローラおよび不揮発性記憶装置

Country Status (1)

Country Link
JP (1) JP2010026584A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011248846A (ja) * 2010-05-31 2011-12-08 Mitsubishi Electric Corp メモリ装置及び信号処理装置
JP2014123328A (ja) * 2012-12-21 2014-07-03 Mega Chips Corp 半導体記憶装置及びコンピュータシステム
JP2014182626A (ja) * 2013-03-19 2014-09-29 Axell Corp メモリ格納情報読出し方法及びメモリインターフェース
JP2015060587A (ja) * 2013-09-18 2015-03-30 瑞▲いー▼半導體股▲ふん▼有限公司 メモリカードアクセス装置、その制御方法及びメモリカードアクセスシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011248846A (ja) * 2010-05-31 2011-12-08 Mitsubishi Electric Corp メモリ装置及び信号処理装置
JP2014123328A (ja) * 2012-12-21 2014-07-03 Mega Chips Corp 半導体記憶装置及びコンピュータシステム
JP2014182626A (ja) * 2013-03-19 2014-09-29 Axell Corp メモリ格納情報読出し方法及びメモリインターフェース
JP2015060587A (ja) * 2013-09-18 2015-03-30 瑞▲いー▼半導體股▲ふん▼有限公司 メモリカードアクセス装置、その制御方法及びメモリカードアクセスシステム

Similar Documents

Publication Publication Date Title
KR101425957B1 (ko) 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
US8606987B2 (en) Data writing method for flash memory and controller using the same
KR101626084B1 (ko) 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법
US8904086B2 (en) Flash memory storage system and controller and data writing method thereof
JP2017224379A (ja) 内部ecc処理を有するnand型フラッシュメモリおよびその動作方法
JP5090819B2 (ja) メモリーカード及び該データ格納方法
US11630766B2 (en) Memory system and operating method thereof
US9176865B2 (en) Data writing method, memory controller, and memory storage device
KR101431205B1 (ko) 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법
US9304900B2 (en) Data reading method, memory controller, and memory storage device
US8429494B2 (en) Nonvolatile random access memory and nonvolatile memory system
JP5914148B2 (ja) Ssd(ソリッドステートドライブ)装置
TW202009695A (zh) 資料儲存裝置及其共享控制器中記憶體的方法
TWI611410B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US20150161042A1 (en) Memory management method, memory controlling circuit unit, and memory storage device
TWI523030B (zh) 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置
JP2007058940A (ja) 記憶装置、ファイル記憶装置、およびコンピュータシステム
JP2010026584A (ja) メモリコントローラおよび不揮発性記憶装置
US20070047308A1 (en) Memory controller, flash memory system and control method for flash memory
JP2006338083A (ja) メモリコントローラ
US20220310172A1 (en) Optimized Threshold Translation From Serialized Pipeline
JP3747213B1 (ja) シーケンシャルromインターフェース対応nand型フラッシュメモリーデバイス及びそのコントローラ
US9652378B2 (en) Writing method, memory controller and memory storage device
JP2011118922A (ja) 半導体記憶装置の読出し・書き込み方法
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory