JP2008084184A - メモリコントローラ - Google Patents
メモリコントローラ Download PDFInfo
- Publication number
- JP2008084184A JP2008084184A JP2006265629A JP2006265629A JP2008084184A JP 2008084184 A JP2008084184 A JP 2008084184A JP 2006265629 A JP2006265629 A JP 2006265629A JP 2006265629 A JP2006265629 A JP 2006265629A JP 2008084184 A JP2008084184 A JP 2008084184A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- memory
- entry
- subdirectory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
【課題】サブディレクトリエントリ更新時においても高速アクセスが可能なメモリコントローラを提供すること。
【解決手段】半導体メモリ11を制御するメモリコントローラ12であって、ホスト機器2に接続可能とされ、前記ホスト機器2からデータ及びアドレスを受信するホストインタフェース20と、前記アドレスを保持可能な保持回路25と、前記データから上位ディレクトリを示す情報を検出し、検出された場合には前記アドレスを前記保持回路25に保持させる制御回路22〜24とを具備し、前記制御回路22〜24は、前記保持回路25に保持される前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、当該データを同一の前記メモリブロックに順次書き込む。
【選択図】 図3
【解決手段】半導体メモリ11を制御するメモリコントローラ12であって、ホスト機器2に接続可能とされ、前記ホスト機器2からデータ及びアドレスを受信するホストインタフェース20と、前記アドレスを保持可能な保持回路25と、前記データから上位ディレクトリを示す情報を検出し、検出された場合には前記アドレスを前記保持回路25に保持させる制御回路22〜24とを具備し、前記制御回路22〜24は、前記保持回路25に保持される前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、当該データを同一の前記メモリブロックに順次書き込む。
【選択図】 図3
Description
この発明は、メモリコントローラに関する。例えば、不揮発性の半導体メモリチップの動作を制御するメモリコントローラに関する。
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリが広く使用されている。
NAND型フラッシュメモリでは、データを管理する方式としてFAT(File Allocation System)ファイルシステムが広く用いられている。上記FATファイルシステムによれば、NAND型フラッシュメモリにはルートディレクトリの情報を保持するルートディレクトリエントリが設けられる。ルートディレクトリエントリには、ルートディレクトリにあるファイルやサブディレクトリの情報が格納されている。従って、ルートディレクトリエントリは頻繁に更新され、且つ比較的データサイズが小さい。
この点、NAND型フラッシュメモリにおいては、データは複数のメモリセルにつき一括して消去される。この消去単位を、以下メモリブロックと呼ぶ。そしてNAND型フラッシュメモリではその特性上、データを上書きすることができない。そこで、ルートディレクトリエントリが更新される際には、キャッシュとして用いる別のメモリブロックを用意し、更新される度にこのメモリブロックにルートディレクトリエントリを追記する方法が提案されている(例えば特許文献1参照)。
本方法であると、ルートディレクトリエントリの更新時におけるメモリブロック間でのデータの移動を低減出来、高速アクセスが可能となる。しかしながら、アドレスが固定されていないサブディレクトリエントリの更新時の対応が困難であるという問題があった。
特開2006−018471号公報
この発明は、サブディレクトリエントリ更新時においても高速アクセスが可能なメモリコントローラを提供する。
この発明の一態様に係るメモリコントローラは、各々がデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリを制御するカードコントローラであって、ホスト機器に接続可能とされ、前記ホスト機器からデータ及び該データを書き込むべきアドレスを受信するホストインタフェースと、前記ホストインタフェースで受信された前記アドレスを保持可能な保持回路と、前記ホストインタフェースで受信された前記データから当該データの上位ディレクトリを示す情報を検出し、検出された場合には、該データを書き込むべき前記アドレスを前記保持回路に保持させる制御回路とを具備し、前記制御回路は、前記保持回路に保持された前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、同一の前記メモリブロックに当該データを順次書き込む。
本発明によれば、サブディレクトリエントリ更新時においても高速アクセスが可能なメモリコントローラを提供出来る。
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
[第1の実施形態]
この発明の第1の実施形態に係るメモリコントローラについて、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
この発明の第1の実施形態に係るメモリコントローラについて、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
図示するようにメモリシステムは、メモリカード1及びホスト機器2を備えている。ホスト機器2は、バスインタフェース14を介して接続されるメモリカード1に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
メモリカード1は、ホスト機器2とバスインタフェース14を介して情報の授受を行う。メモリカード1は、NAND型フラッシュメモリチップ(単にNAND型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある)11、フラッシュメモリチップ11を制御するカードコントローラ12、および複数の信号ピン(第1ピン乃至第9ピン)13を備えている。
複数の信号ピン13は、カードコントローラ12と電気的に接続されている。複数の信号ピン13における第1ピン乃至第9ピンに対する信号の割り当ては、例えば図2に示すようになっている。図2は、第1ピン乃至第9ピンと、それらに割り当てられた信号とを示す表である。
データ0乃至データ3は、第7ピン、第8ピン、第9ピン、および第1ピンにそれぞれ割り当てられている。第1ピンは、また、カード検出信号に対しても割り当てられている。さらに、第2ピンはコマンドに割り当てられ、第3ピンおよび第6ピンは接地電位Vssに、第4ピンは電源電位Vddに、第5ピンはクロック信号に割り当てられている。
また、メモリカード1は、ホスト機器2に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器2に設けられたホストコントローラ(図示せず)は、これら第1ピン乃至第9ピンを介してメモリカード1内のカードコントローラ12と各種信号およびデータを通信する。例えば、メモリカード1にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第2ピンを介してカードコントローラ12にシリアルな信号として送出する。このとき、カードコントローラ12は、第5ピンに供給されているクロック信号に応答して、第2ピンに与えられる書き込みコマンドを取り込む。
ここで、前述したように、書き込みコマンドは、第2ピンのみを利用してカードコントローラ12にシリアルに入力される。コマンドの入力に割り当てられている第2ピンは、図2に示すように、データ3用の第1ピンと接地電位Vss用の第3ピンとの間に配置されている。複数の信号ピン13とそれに対するバスインタフェース14は、ホスト機器2内のホストコントローラとメモリカード1とが通信するのに使用される。
これに対し、フラッシュメモリ11とカードコントローラ12との間の通信は、NAND型フラッシュメモリ用のインタフェースによって行われる。したがって、ここでは図示しないが、フラッシュメモリ11とカードコントローラ12とは例えば8ビットの入出力(I/O)線により接続されている。
例えば、カードコントローラ12がフラッシュメモリ11にデータを書き込む際には、カードコントローラ12は、これらI/O線を介してデータ入力コマンド80H、カラムアドレス、ページアドレス、データ、およびプログラムコマンド10Hをフラッシュメモリ11に順次入力する。ここで、コマンド80Hの“H”は16進数を示すものであり、実際には“10000000”という8ビットの信号が、8ビットのI/O線にパラレルに与えられる。つまり、このNAND型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
また、NAND型フラッシュメモリ用のインタフェースでは、フラッシュメモリ11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器2内のホストコントローラとメモリカード1とが通信するインタフェースと、フラッシュメモリ11とカードコントローラ12とが通信するインタフェースとは異なる。
次に、図1に示すメモリカード1の備えるカードコントローラの内部構成について図3を用いて説明する。図3はカードコントローラ12のブロック図である。
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。カードコントローラ12は、ホストインタフェースモジュール20、命令・アドレス検出部21、サブディレクトリエントリ検出部22、パターン記憶部23、MPU(Micro processing unit)24、アドレス保存部25、データバッファ26、フラッシュコントローラ27、ROM(Read-only memory)28、及びRAM(Random access memory)29を有する。
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。すなわち、データの書き込み時には書き込み命令、書き込みアドレス、及び書き込みデータをホスト機器2から受け取る。そして書き込み命令及びアドレスを命令・アドレス検出部21へ出力し、書き込みデータをサブディレクトリエントリ検出部22へ出力する。
命令・アドレス検出部21は、ホストインタフェースモジュール20から書き込み命令及びアドレスを受け取る。そして書き込み命令をMPU24へ出力する。また命令・アドレス検出部21は、アドレスを確認することにより、書き込み命令がルートディレクトリエントリの更新であるか否かを判定する。ルートディレクトリエントリについては後述する。
サブディレクトリエントリ検出部22は、ホストインタフェースモジュール20から書き込みデータを受け取る。そして、パターン記憶部23に保持されているパターンを用いて、書き込みデータがサブディレクトリエントリであるか否かを検出する。パターン及びサブディレクトリエントリについては後述する。そして書き込みデータをデータバッファ26へ出力する。
MPU24は、メモリカード1全体の動作を制御する。MPU24は、例えばメモリカード1が電源供給を受けたときに、ROM28に格納されているファームウェア(制御プログラム)をRAM29上に読み出して所定の処理を実行することにより、各種のテーブルをRAM29上に作成する。またMPU24は、命令・アドレス検出部21から前述の書き込み命令、及び読み出し命令や消去命令を受け取り、フラッシュメモリ11に対して所定の処理を実行したり、バッファ26を通じたデータ転送処理を制御したりする。
ROM28は、MPU24により制御される制御プログラムなどを格納する。RAM29は、MPU24の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。フラッシュコントローラ27は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
バッファ26は、ホスト機器2から送られてくる書き込みデータをフラッシュメモリ11へ書き込む際に、一定量のデータ(例えば、1ページ分)を一時的に記憶したり、フラッシュメモリ11から読み出されるデータをホスト機器2へ送り出す際に、一定量のデータを一時的に記憶したりする。
次に、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4はNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30及びページバッファ31を備えている。
メモリセルアレイ30は、複数のメモリセルブロックBLK0〜BLKn(nは2以上の自然数)を含んでいる。なお以下ではメモリセルブロックBLK0〜BLKnを単純にメモリブロックBLKと呼ぶことがある。また、データの消去はメモリブロックBLK単位で行われる。すなわち、同一メモリセルブロックBLK内のデータは一括して消去される。メモリセルブロックBLKの各々は、複数のメモリセルMCを備えている。各メモリセルは、フローティングゲートとコントロールゲートとを含む積層ゲートを備えたMOSトランジスタである。またメモリセルブロックBLK内には、複数のワード線WL0、WL1、…(以下ワード線WLと呼ぶ)と、ワード線WLに直交するビット線BL0、BL1、…(以下ビット線BLと呼ぶ)とが設けられている。そして、同一行にあるメモリセルMCは同一のワード線に共通接続されている。また、同一列にあるメモリセルMCは、複数のメモリセル単位でビット線BLに共通接続されている。なお、データの書き込み及び読み出しは複数のメモリセルの集合毎に行われ、このメモリセルの集合を1ページと呼ぶ。なお、読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。図4の例であると、フラッシュメモリ11の各ページは、2112バイト(512バイト分のデータ記憶部×4+10バイト分の冗長部×4+24バイト分の管理データ記憶部)を有しており、各メモリブロックBLKは例えば128ページを含んでいる。
ページバッファ31は、フラッシュメモリ11へのデータ入出力を行い、データを一時的に保持する。ページバッファ31が保持可能なデータサイズは、各メモリブロックBLKのページサイズと同じく2112バイト(2048バイト+64バイト)である。データ書き込みなどの際、ページバッファ11は、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。なお、以下では説明の簡単化のために、冗長部及び管理データ記憶部については省略し、1ページのデータサイズが2048バイトであるとして説明を行う。
次に、上記フラッシュメモリ11において、データが書き込まれる領域の構成について図5を用いて説明する。図5は、フラッシュメモリ11の備えるメモリセルアレイ30のメモリ空間を示す概念図である。図示するようにメモリ空間は、おおまかにはユーザデータ領域40及び管理領域41に分けられる。
ユーザデータ領域40は、ユーザによって書き込まれる正味のデータを格納する領域である。
管理領域41は、フラッシュメモリ11に記録されているファイル(データ)を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル(データ)を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、メモリにおけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。図5では一例としてFAT(File Allocation Table)ファイルシステムについて示している。
管理領域41は、例えばブート領域42、パーティション情報領域43、ルートディレクトリエントリ44、FAT1(45)、及びFAT2(46)を含んでいる。ブート領域42は、例えばブート情報を記憶する。パーティション情報領域43はパーティション情報を記憶する。FAT1及びFAT2は、データがいずれのクラスタに記憶されているかを記憶する。ルートディレクトリエントリ44は、ルートディレクトリの情報を記憶する。そして、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、FAT1、FAT2に示されたどのクラスタがファイルの先頭クラスタであるかを記憶する。
ユーザデータ領域40は、クラスタと呼ばれる複数の領域を含んでいる。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データが書き込まれるクラスタは連続しない場合がある。すなわち、1つのデータが場所的に離れたクラスタに書き込まれる。この際に、データがどのクラスタに分割されて書き込まれたかを管理するための管理データが、FAT1、FAT2に記憶される。
一例として、フラッシュメモリ11におけるディレクトリ構造が図6に示すようであったとする。図6はディレクトリツリーを示す概念図である。図中において、“<”と“>”で区切ったものはディレクトリを示す。図示するように、ルートディレクトリにはサブディレクトリ“AAA”と、2つのテキストファイル“FILE1.txt”、“FILE2.txt”が含まれる。またサブディレクトリ“AAA”にはサブディレクトリ“BBB”と、2つの画像ファイル“FILE1A.jpg”、“FILE1B.jpg”が含まれる。更にサブディレクトリ“BBB”には、2つの画像ファイル“FILE1B.jpg”、“FILE2B.jpg”が含まれる。
上記のディレクトリ構成におけるルートディレクトリエントリ44の内容について図7を用いて説明する。図7はルートディレクトリエントリ44の構成を示す概念図である。ルートディレクトリエントリ44は、各々が32バイトの複数のエントリを備える。そして各エントリが、ルートディレクトリに含まれるファイルまたはサブディレクトリに関する情報を保持する。各エントリは、32バイトの先頭バイト位置から順に、ファイルまたはサブディレクトリの名前(8バイト)、拡張子(3バイト)、属性(1バイト)、予約(10バイト)、記録時刻(1バイト)、記録日(1バイト)、先頭クラスタ(2バイト)、及びファイルサイズ(4バイト)を保持する。属性とは、例えばディレクトリであるかファイルであるか、読み取り専用ファイルであるか否か、隠しファイルであるか否か、システムファイルであるか否か、等を示す情報である。予約を示す10バイトのデータは、先頭の2バイトは“0x0000”である。なおデータについて先頭に付加した“0x”は、当該データが16進数であることを示す。先頭クラスタとは、そのサブディレクトリのサブディレクトリエントリやファイルが格納される先頭クラスタを示す。通常、クラスタサイズは16kバイトである。例えばファイル“FILE1.txt”が40kBであったとすると、そのサイズはクラスタサイズよりも大きい。従ってファイルはクラスタ単位のサイズに分割され、空きクラスタに記憶される。つまり、3つのクラスタを使用してファイルが書き込まれる。クラスタは連続している必要がないため、例えばクラスタ5、クラスタ6、クラスタ8を使用してファイルが記憶される。この際の先頭クラスタ5が、ルートディレクトリエントリ44に保持される。なお、ファイルがどのクラスタに分割して記憶されたかを管理しているのがFAT1、FAT2である。FAT1、FAT2には、同一のデータが記憶されており、一方のFATに欠陥が生じた場合、他方のFATを用いてデータの修復が可能とされている。FAT1、FAT2は、ファイルに割り当てられたクラスタの情報を記憶しており、クラスタのリンクの関係を記憶している。FAT1、FAT2に記憶された情報をトレースすることにより、元のファイルへと復元することができる。
つまり、分割されたファイル“FILE1.txt”の40kBうち、前半の16kバイトがクラスタ5に記憶され、次の16kBがクラスタ6に記憶され、後半の8kバイトがクラスタ8に記憶されるため、FAT1、FAT2には、クラスタ5の次にクラスタ6、8がリンクされることを示す情報が記憶される。3つのクラスタに分割されたファイルを読み出す際、FAT1、FAT2に記憶されたこれらの情報をチェイン接続することにより、ファイルが元に復元される。
このようなファイルシステムを使用したフラッシュメモリ11は、データを書き込む際、書き込みデータ以外に、ルートディレクトリエントリ44の情報やFATなどの管理情報も一緒に更新する必要がある。
次にサブディレクトリエントリについて説明する。ルートディレクトリにサブディレクトリ“AAA”が作成され、サブディレクトリ“AAA”の下にサブディレクトリ“BBB”が作成されると、これらのサブディレクトリ内の情報を示すサブディレクトリエントリが作成される。図8はフラッシュメモリ11のアドレス空間を示す概念図であり、ルートディレクトリエントリとサブディレクトリエントリとに着目した図である。
図示するように、上記のルートディレクトリエントリ44は管理領域41内の所定の領域に記録される。つまり、ルートディレクトリエントリ44が保持される領域のアドレスA(ROOT)は初めから決まっており、その値は既知である。これに対してサブディレクトリエントリは、データ領域40におけるいずれかの空き領域に記録される。すなわち、“AAA”及び“BBB”に関するサブディレクトリエントリ47、48のアドレスA(AAA)、A(BBB)は予め決まっているわけでは無く、サブディレクトリエントリ47、48作成時に決定される。
一例として、サブディレクトリ“AAA”に関するサブディレクトリエントリ47の構成について図9を用いて説明する。図9はサブディレクトリエントリ47の構成を示す概念図である。図示するように、サブディレクトリエントリ47もルートディレクトリエントリ44と同じく、サブディレクトリ“AAA”内にあるディレクトリやファイルの情報を保持する。すなわち、各々が32バイトの複数のエントリを備える。そして各エントリは、32バイトの先頭バイト位置から順に、ファイルまたはサブディレクトリの名前(8バイト)、拡張子(3バイト)、属性(1バイト)、予約(10バイト)、記録時刻(1バイト)、記録日時(1バイト)、先頭クラスタ(2バイト)、及びファイルサイズ(4バイト)を保持する。
但し、サブディレクトリエントリがルートディレクトリエントリ44と異なるのは、当該サブディレクトリに含まれるディレクトリやファイルの情報の前に、上位ディレクトリ情報が1つのエントリを使って記録されている点である。図9の例であると、エントリ0の最初の11バイトを用いて上位ディレクトリ情報が保持される。上位ディレクトリ情報についても、属性、予約、記録時刻、記録日が保持される。そしてその下のエントリ1〜3に、それぞれディレクトリ“BBB”、及びファイル“FILE1A.jpg”、“FILE1B.jpg”についての情報が保持される。これらの内容は、ルートディレクトリエントリ44と同様である。
サブディレクトリエントリ47の具体的な構成例について図10を用いて説明する。図10はサブディレクトリエントリ47の模式図であり、各エントリとバイト位置におけるデータについて示している。データの各値は16進数2桁で示されている。なお、図10における値と、図9における具体的な名前や時間などは、必ずしも一致しているわけでは無い。
図示するように、エントリ0における0〜10バイトの位置には、“0x2E2E202020202020202020”なる値が保持されている。これが上位ディレクトリ情報であり、この値はいずれのサブディレクトリについても同じである。前述のパターン記憶部23が保持するパターンとは、この“0x2E2E202020202020202020”なる値である。これに対してエントリ1〜3における0〜10バイトの位置には、ファイル名と拡張子とが保持される。なおディレクトリには拡張子が無いので、エントリ1の8〜10バイトの位置には“0x000000”なる値が保持される。またエントリ0〜3の11バイトの位置には、それぞれ属性を示す値が保持されている。図10の例であると、属性はディレクトリであるかファイルであるかを示す値が保持され、ディレクトリである場合には“0x10”が、ファイルである場合には“0x20”が保持される。
つまり、サブディレクトリエントリにおいては、ルートディレクトリエントリと異なり、いずれかのエントリにおける0〜10バイトの位置に、ファイル(ディレクトリ)名と拡張子の代わりに、上位ディレクトリ情報が保持される。この上位ディレクトリ情報は、当該ディレクトリよりも上位にディレクトリがあることを意味している。従って、ルートディレクトリ直下のディレクトリ<AAA>の上位ディレクトリ情報も、サブディレクトリ直下のディレクトリ<BBB>の上位ディレクトリ情報も、共に同じく“0x2E2E202020202020202020”である。勿論、ファイルシステムによっては、上位ディレクトリ情報を示すデータの値が“0x2E2E202020202020202020”で無い場合があっても良い。つまり、この値そのものは特に限定されるものでは無く、サブディレクトリエントリ内に、当該ディレクトリよりも上位にディレクトリがあることを示す情報がありさえすれば良い。
次に、上記構成のカードコントローラ12におけるデータの書き込み動作について、特にルートディレクトリエントリ及びサブディレクトリエントリの更新時に着目しつつ説明する。図11はデータの書き込み動作についてのフローチャートである。
図示するように、まずホストインタフェースモジュール20がホスト機器2から書き込み命令を書き込みデータ及びアドレスと共に受け取る(ステップS10)。するとホストインタフェースモジュール20は、書き込み命令及びアドレスを命令・アドレス検出部21へ出力し、書き込みデータをサブディレクトリエントリ検出部22へ出力する。
次に、命令・アドレス検出部21が、ルートディレクトリエントリ44のアドレスA(ROOT)と、受信したアドレスとを比較する(ステップS11)。前述の通り、アドレスA(ROOT)は既知の値であり、その値を命令・アドレス検出部21は保持する。そして、比較結果と書き込み命令とをMPU24へ出力する。またサブディレクトリエントリ検出部22は、パターン記憶部23から上位ディレクトリ情報を示すパターン(“0x2E2E202020202020202020”)を読み出す。そしてホストインタフェースモジュール20から受信した書き込みデータ内において、上位ディレクトリ情報を示すパターンが含まれているか否かを検索する(ステップS12)。そして検索結果をMPU24へ出力すると共に、書き込みデータをデータバッファ26へ出力する。
ステップS11においてアドレスが一致した場合(ステップS13、YES)、MPU24は、当該書き込みデータはルートディレクトリエントリであり、ルートディレクトリエントリの更新命令が与えられたものと判断する(ステップS14)。そしてMPU24はデータバッファ26及びフラッシュコントローラ27に対して、受信したアドレスに対応する領域に、ホスト機器2から与えられたデータを書き込むよう命令する(ステップS15)。
またステップS11においてアドレスが一致せず(ステップS13、NO)、且つステップS12において上位ディレクトリ情報が含まれないと判断された場合(ステップS16、NO)、MPU24は、当該書き込みデータはルートディレクトリでもサブディレクトリエントリでも無く、通常のデータファイルであると判断する。従ってステップS15に進む。
他方、サブディレクトリエントリ検出部22における検索の結果、上位ディレクトリ情報が発見された場合には(ステップS16、YES)、MPU24は、当該書き込みデータがサブディレクトリエントリであると判断する(ステップS17)。そしてMPU24は、命令・アドレス検出部21から受信した当該アドレスをアドレス保存部25に保持させる(ステップS18)。そしてメモリセルアレイ30におけるいずれかの消去済みメモリブロックをキャッシュブロックとして確保し、確保したキャッシュブロックに当該データを書き込む(ステップS19)。そして以後、同一のアドレスに書き込みアクセスがあった場合には、ステップS19で確保したキャッシュブロックにデータを追記する(ステップS20)。
同一のアドレスに書き込みアクセスであるか否かは、命令・アドレス検出部21またはMPU24において、ホスト機器2から受信したアドレスと、アドレス保存部25に保持されるアドレスとを比較して、一致するか否かによって判断出来る。
上記動作について図12を用いて説明する。図12は、サブディレクトリ“AAA”に関するサブディレクトリエントリ47の更新時の様子を示し模式図であり、メモリ空間とメモリブロックを示している。図7で説明したように、サブディレクトリエントリ47の先頭クラスタはクラスタ5である。このアドレスがA(AAA)であり、メモリブロックBLK2の領域に対応していたとする。
まず、ホスト機器からアドレスA(AAA)に対する書き込みアクセスが為される(ステップS10、図12の(1))。この書き込みアクセスはサブディレクトリエントリ47の更新命令であるが、アクセスがあった時点ではそのことをカードコントローラ12は認識していない。そこでカードコントローラ12は、当該書き込みアクセスに関するアドレスの確認と、データ内部の検索を行う(ステップS11、S12)。すると、図10におけるエントリ0の0〜10バイトの位置に上位ディレクトリ情報が見つかる(ステップS16、YES)。そこでMPU24は、メモリブロックBLK2とは別に、消去済みメモリブロックBLK20をキャッシュとして確保し、このメモリブロックBLK20へデータを書き込む(ステップS19、図12の(2))。そしてMPU24は、アドレスA(AAA)に保持されるデータはサブディレクトリエントリであることを把握する。そして以後、アドレスA(AAA)に対して書き込みアクセスがあった場合には、メモリブロックBLK20に対してデータを追記する(ステップS20、図12の(3)、(4))。
上記のように、本実施形態に係るメモリシステムであると、サブディレクトリエントリ更新時においても高速アクセスが可能となる。本効果について、以下詳細に説明する。
NAND型フラッシュメモリでは、同じファイルやフォルダを更新する場合、対応するディレクトリエントリへの書き込みアドレスは変わらない。このため、同じアドレスのデータを上書きする必要がある。しかしNAND型フラッシュメモリは、書き込み済みのページに対して上書きができない。上書きする際には、あらかじめ消去を行わなければならない。そして消去は、メモリブロック単位でしか行うことができない。そのため、データを更新する際には、消去メモリブロックに対して更新データを新規に書き込むと共に、更新前のデータが保持されているメモリブロックにおける他のデータを、消去メモリブロックにコピーする必要がある(これをデータの引っ越しと呼ぶ)。そのため、メモリブロックサイズよりもデータ量の小さいデータの更新が発生した際でも、消去メモリブロックに対してメモリブロック単位でデータを書き込まなければならない。すなわち、データサイズがいくら小さくとも、データの引っ越しが必要な場合にはデータの移動量が大きくなる。その結果、書き込み速度が低下し、メモリカード1に対する高速アクセスが困難となる。
そこで、データ量の小さい書き込みを行う際には、本来書き込むべきメモリブロックとは別のメモリブロックをキャッシュとして使用する。本方法であると、あるデータについて更新があった場合には、キャッシュとして使用するメモリブロックにデータを追記していく。つまり、あるデータが更新される度に、キャッシュとして確保されたメモリブロックにページ単位で次々に書き込まれていく。そして、例えばキャッシュとして使用するメモリブロックが一杯になった時点など、あるタイミングで最新の更新データのみにつき引っ越しを行う。これにより、データの引っ越し回数を低減出来る。
特に、更新が頻繁で且つデータサイズが小さいものとして、ルートディレクトリエントリやサブディレクトリエントリが挙げられる。これらが更新された場合には、キャッシュを設けることが望ましい。この点、ルートディレクトリエントリが保持される領域のアドレスは固定である。従って背景技術でも説明したように、書き込みアクセスがあった場合には、そのアドレスからルートディレクトリエントリであるか否かを判断することが出来る。しかし前述の通り、サブディレクトリエントリについてはアドレスは固定でなく、サブディレクトリが作成される度に、適宜、空きクラスタにサブディレクトリエントリが作成される。従って、アドレスからはサブディレクトリエントリであるか否かは判断出来ない。
そこで本実施形態では、サブディレクトリエントリの構成に着目して、データ中に上位ディレクトリ情報が含まれるか否かによって、サブディレクトリエントリか否かを判断している。より具体的には、図10に示すような書き込みデータの内部を検索し、上位ディレクトリ情報である“0x2E2E202020202020202020”なる値の有無を調べている。ここで一例としてJPEG(Joint Photographic Experts Group)形式の画像ファイルと、ブート領域内のデータ構成を図13及び図14にそれぞれ示す。図示するように、画像ファイル及びブート領域内には、上位ディレクトリ情報である“0x2E2E202020202020202020”なる値は含まれない。勿論、データによっては上位ディレクトリ情報と同じ値を含む可能性はあるが、その確率は非常に低い。従って、“0x2E2E202020202020202020”なる値が含まれるデータは、ほぼサブディレクトリエントリであると考えて良い。
以上のように、本実施形態に係る方法であると、ルートディレクトリエントリだけでなくサブディレクトリエントリも効果的に検出することが出来る。従って、検出された際に当該データのためにキャッシュを用意することで、データの書き込み速度を向上出来、メモリカード1に対する高速アクセスを可能とする。
図15は、サブディレクトリエントリ検出部22の一構成例を示す回路図である。図示するようにサブディレクトリエントリ検出部22は、8個のフリップフロップ50−0〜50−7、排他的論理和ゲート(以下EXORゲートと呼ぶ)51−0〜51−7、インバータ52−0〜52−7、及びANDゲート53を備えている。フリップフロップ50−7には、ホストインタフェースモジュール20からデータが2進数により1ビットずつ入力される。そしてフリップフロップ50−i(iは0〜6の自然数)には、フリップフロップ50−(i+1)のデータが転送される。図15では、データ“0x2E”=“00101110”が入力された様子を示している。
EXNORゲート51−0〜51−7はそれぞれ、フリップフロップ50−0〜51−7の出力と、検出すべき値(“H”レベルまたは“L”レベル)との排他的論理和演算を行う。つまり2つの入力が一致したときに“L”レベルを出力し、異なるときには“H”レベルを出力する。図15の例では“0x2E”を検出する場合について示している。従ってEXORゲート51−0、51−1、51−3、51−7にはノードLから“L”レベルが与えられ、その他のEXORゲート51−2、51−4〜51−6にはノードHから“H”レベルが与えられる。インバータ52−0〜52−7はそれぞれ、EXORゲート51−0〜51−7の出力を反転する。ANDゲート53はインバータ52−0〜52−7の出力の論理積演算を行う。
上記構成であると、フリップフロップ50−0〜50−7に入力された16進数2桁(=2進数8桁)のデータが、所定の値であるか否かを判定出来る。所定の値である場合には、ANDゲート53の出力が“H”レベルとなる。“0x2E2E202020202020202020”を検出する際には、まず図15の時点で“0x2E”であるか否かを判定する。引き続き、書き込みデータのうちの次の2進数8桁の値をフリップフロップ50−0〜50−7に転送して、“0x2E”であるか否かを判定する。次に、書き込みデータのうちの次の2進数8桁の値をフリップフロップ50−0〜50−7に転送すると共に、EXNORゲート51−0〜51−7にノードL、ノードHからそれぞれ“L”、“L”、“H”、“L” 、“L” 、“L” 、“L” 、“L”レベルを入力する。これにより、入力データが“0x20”であるか否かを判定する。そしてこれを9回繰り返す。上記11回の判定にて、全てANDゲート53の出力が“H”レベルとなれば、“0x2E2E202020202020202020”なる値がホスト機器から与えられたことが分かる。
[第2の実施形態]
次に、この発明の第2の実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第1の実施形態とは異なる方法によってサブディレクトリエントリを検出する方法に関する。従って、サブディレクトリエントリの検出方法以外は上記第1の実施形態と同じであるので、その点についての説明は省略する。図16は、本実施形態に係るメモリシステムにおける、データの書き込み方法のフローチャートである。
次に、この発明の第2の実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第1の実施形態とは異なる方法によってサブディレクトリエントリを検出する方法に関する。従って、サブディレクトリエントリの検出方法以外は上記第1の実施形態と同じであるので、その点についての説明は省略する。図16は、本実施形態に係るメモリシステムにおける、データの書き込み方法のフローチャートである。
図示するように、まず第1の実施形態と同様に、ホストインタフェースモジュール20がホスト機器2から書き込み命令を書き込みデータ及びアドレスと共に受け取る(ステップS10)。するとホストインタフェースモジュール20は、書き込み命令及びアドレスを命令・アドレス検出部21へ出力し、書き込みデータをサブディレクトリエントリ検出部22へ出力する。
次に、命令・アドレス検出部21が、ルートディレクトリエントリ44のアドレスA(ROOT)と受信したアドレスとを比較し(ステップS11)、比較結果と書き込み命令とをMPU24へ出力する。またサブディレクトリエントリ検出部22は、ホストインタフェースモジュール20から受信した書き込みデータ内において、属性を示す値の周期性の有無を検索する(ステップS30)。そして検索結果をMPU24へ出力すると共に、書き込みデータをデータバッファ26へ出力する。
ステップS11においてアドレスが一致した場合(ステップS13、YES)には、ステップS14に進む。逆にステップS11においてアドレスが一致せず(ステップS13、NO)、且つステップS30において周期性が検出されない場合(ステップS31、NO)、MPU24は、当該書き込みデータはルートディレクトリでもサブディレクトリエントリでも無く、通常のデータファイルであると判断する。従ってステップS15に進む。
他方、サブディレクトリエントリ検出部22における検索の結果、属性を示す値の周期性が発見された場合には(ステップS31、YES)、MPU24は、当該書き込みデータがサブディレクトリエントリであると判断する(ステップS17)。そしてMPU24は、命令・アドレス検出部21から受信した当該アドレスをアドレス保存部25に保持させる。以下、第1の実施形態と同様に、ステップS19以降の処理を行う。
本実施形態によっても、上記第1の実施形態と同様にサブディレクトリエントリを検出出来、高速アクセスを実現出来る。この点につき図17を用いて説明する。図17はサブディレクトリエントリ47の模式図であり、図10と同じデータ構造のサブディレクトリエントリを示している。図10と同様、各値は16進数2桁で示されている。
第1の実施形態では、エントリ0における0〜10バイトの位置の値に着目した。そして0〜10バイトの位置の値が“0x2E2E202020202020202020”であれば、当該データはサブディレクトリエントリであると判定した。
これに対して本実施形態では、各エントリ0〜3における11バイトの位置に着目する。11バイトの位置における値は、第1の実施形態で説明した通り属性を示す。このことはどのエントリでも同じである。図17の例であると、属性を示す値として“0x10”と“0x20”が使用されている。これはディレクトリであるかファイルであるかを示している。勿論、この他にも読み取り専用であるか、隠しファイルであるか等を示す場合には別の値が用いられる。しかし、属性として使用される値は非常に限られている。従って、この属性として使用される値が一定間隔、すなわち32バイト周期で繰り返されていれば、当該データはサブディレクトリエントリであると判断出来る。
図17の場合には、“0x10”と“0x20”とが32バイト周期で繰り返されている。勿論、11バイトの位置以外であっても“10”、“20”の値が使用されている。しかし11バイト以外の位置におけるこれらの値が周期性を有することは稀である。従って、本実施形態に係る手法であっても効果的にサブディレクトリエントリを検出出来る。
なお、本実施形態では各エントリにおける11バイトの位置の値によりサブディレクトリエントリであるか否かを判定している。しかし、例えば予約を示す値により同様の判定を行っても良い。本例について図18を用いて説明する。図18はサブディレクトリエントリ47の模式図であり、図10と同じデータ構造のサブディレクトリエントリを示している。図10と同様、各値は16進数2桁で示されている。
図示するように、各エントリ0〜3における12〜21バイトの位置は予約を示す。そしてそのうちの先頭2バイト、すなわち12〜13バイトの位置は、FATファイルシステムでは通常“0x0000”である。つまり、データ内には32バイト周期で“0x0000”なる値が含まれる。よって、この値を検出することによってサブディレクトリエントリの検出を行っても良い。
また、図17の方法と図18の方法とを組み合わせても良い。つまり、各エントリにおける11〜13バイトの位置における値は“属性を示す値”+“0x0000”であるので、この値が32バイト周期で繰り返されているか否かによって判定を行っても良い。
[第3の実施形態]
次に、この発明の第3の実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第1、第2の実施形態とは異なる手法によりサブディレクトリエントリを検出する方法に関する。従って、サブディレクトリエントリの検出方法以外は上記第1の実施形態と同じであるので、その点についての説明は省略する。図19は、本実施形態に係るメモリシステムにおける、データの書き込み方法のフローチャートである。なお、カードコントローラ12の構成としては、図3においてサブディレクトリエントリ検出部22及びパターン記憶部23を廃することが出来る。
次に、この発明の第3の実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第1、第2の実施形態とは異なる手法によりサブディレクトリエントリを検出する方法に関する。従って、サブディレクトリエントリの検出方法以外は上記第1の実施形態と同じであるので、その点についての説明は省略する。図19は、本実施形態に係るメモリシステムにおける、データの書き込み方法のフローチャートである。なお、カードコントローラ12の構成としては、図3においてサブディレクトリエントリ検出部22及びパターン記憶部23を廃することが出来る。
図示するように、まずカードコントローラ12のMPU24は、フラッシュメモリ11の管理領域41におけるルートディレクトリエントリ44を読み出す(ステップS40)。そして、フラッシュメモリ11におけるディレクトリ構造を把握し、サブディレクトリエントリのアドレスを把握する(ステップS41)。すなわち、ルートディレクトリエントリ44からルートディレクトリにディレクトリ“AAA”と、ファイル“FILE1.txt”、“FILE2.txt”が存在することが分かる。またディレクトリ“AAA”のスタートクラスタ番号から、“AAA”に関するサブディレクトリエントリ47のアドレスA(AAA)を算出することが出来る。そして算出したアドレスにアクセスしてサブディレクトリエントリ47を参照する。これにより、サブディレクトリ“AAA”にはディレクトリ“BBB”と、ファイル“FILE1A.jpg”、“FILE2A.jpg”が存在することが分かる。またディレクトリ“BBB”のスタートクラスタ番号から、“BBB”に関するサブディレクトリエントリ48のアドレスA(BBB)を算出することが出来る。そして算出したアドレスにアクセスしてサブディレクトリエントリ48を参照する。これにより、サブディレクトリ“BBB”にはファイル“FILE1B.jpg”、“FILE2B.jpg”が存在することが分かる。すなわち、MPU24は図6に示すディレクトリ構造を把握し、且つディレクトリ“AAA”、“BBB”に関するサブディレクトリエントリ47、48のアドレスを把握する。そして把握したアドレスをアドレス保存部25に保持させる(ステップS42)。
次に、ホストインタフェースモジュール20がホスト機器2から書き込み命令を書き込みデータ及びアドレスと共に受け取る(ステップS43)。するとホストインタフェースモジュール20は、書き込み命令及びアドレスを命令・アドレス検出部21へ出力し、書き込みデータをデータバッファ26へ出力する。
次に、命令・アドレス検出部21が、ルートディレクトリエントリ44のアドレスA(ROOT)と、受信したアドレスとを比較する(ステップS44)。そして、比較結果と書き込み命令とをMPU24へ出力する。
ステップS44においてアドレスが一致した場合(ステップS45、YES)、MPU24は、当該書き込みデータはルートディレクトリエントリであり、ルートディレクトリエントリの更新命令が与えられたものと判断する(ステップS46)。そしてMPU24はデータバッファ26及びフラッシュコントローラ27に対して、受信したアドレスに対応する領域に、ホスト機器2から与えられたデータを書き込むよう命令する(ステップS47)。
他方、ステップS44においてアドレスが一致しなかった場合(ステップS45、NO)、MPU24はアドレス保存部25に保持されるサブディレクトリエントリのアドレスと、受信したアドレスとを比較する(ステップS48)。
ステップS48においてアドレスが一致しなかった場合には(ステップS49、NO)、MPU24は、当該書き込みデータはルートディレクトリでもサブディレクトリエントリでも無く、通常のデータファイルであると判断する。従ってステップS47に進む。逆に、ステップS48においてアドレスが一致した場合(ステップS49、YES)、MPU24は、当該書き込みデータがサブディレクトリエントリであると判断する(ステップS50)。従ってMPU24は、当該アドレスにつき、メモリセルアレイ30におけるいずれかの消去済みメモリブロックをキャッシュブロックとして確保する(ステップS51)。そしてMPU24は、ステップS51にて確保したキャッシュブロックに当該データを書き込む(ステップS52)。そして以後、同一のアドレスに書き込みアクセスがあった場合には、ステップS19で確保したキャッシュブロックにデータを追記する(ステップS53)。
本実施形態に係る方法によってもサブディレクトリエントリを検出することが出来、第1の実施形態で説明した効果が得られる。
以上のように、この発明の第1乃至第3の実施形態に係るカードコントローラによれば、ルートディレクトリエントリのみならず、サブディレクトリエントリを検索することが出来る。従って、サブディレクトリエントリにつき効果的にキャッシュブロックを設けることが出来、メモリカード1への高速アクセスが可能となる。
なお上記第1の実施形態においては、上位ディレクトリ情報として“0x2E2E202020202020202020”を検索する場合を例に挙げて説明した。しかし、必ずしもこの11バイトの値全てを検索する必要は無く、例えば先頭の“0x2E2E”のみや、または“0x2E2E2020”のみを検索しても良い。この場合、検索精度は低下するが、一定程度の効果が得られる。また上位ディレクトリ情報の値が“0x2E2E202020202020202020”である場合について説明した。しかしこの値はFATファイルシステムにおける一例に過ぎず、別のファイルシステムなどでは異なる値である可能性もあるが、同様の手法を採用出来る。すなわち、書き込みデータの内容を参照することで、上位ディレクトリの存在を検出する手法であれば、どのような値を検出するかについては限定されない。
また上記第1の実施形態では、例えば図9に示すように上位ディレクトリ情報は最初のエントリ0に保持されている場合を例に説明した。しかし最初のエントリである必要は無い。通常、FATファイルシステムでは、最初のエントリにはカレントディレクトリ情報が保持され、次のエントリに上位ディレクトリ情報が保持されることが通常だからである。
更に上記第1乃至第3の実施形態において、書き込みデータがルートディレクトリエントリであった場合にも、消去済みメモリブロックのいずれかをキャッシュブロックとして使用することが望ましい。
また、上記第1、第2の実施形態では、サブディレクトリエントリの検出をサブディレクトリエントリ検出部22で行っている。しかし、サブディレクトリエントリの検出は、MPU24においてソフトウェアを用いて行っても良い。ルートディレクトリエントリの検出も同様である。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
1…メモリカード、2…ホスト機器、11…NAND型フラッシュメモリ、12…カードコントローラ、13…信号ピン、20…ホストインタフェースモジュール、21…命令・アドレス検出部、23…サブディレクトリ検出部、24…MPU、25…アドレス保存部、26…データバッファ、27…フラッシュコントローラ、28…ROM、29…RAM、30…メモリセルアレイ、31…ページバッファ、40…ユーザデータ領域、41…管理領域、42…ブート領域、43…パーティション情報、44…ルートディレクトリエントリ、45、46…FAT、47、48…サブディレクトリエントリ、50−0〜50−7…フリップフロップ、51−0〜51−7…EXORゲート、52−0〜52−7…インバータ、53…ANDゲート
Claims (5)
- 各々がデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリを制御するメモリコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器からデータ及び該データを書き込むべきアドレスを受信するホストインタフェースと、
前記ホストインタフェースで受信された前記アドレスを保持可能な保持回路と、
前記ホストインタフェースで受信された前記データから当該データの上位ディレクトリを示す情報を検出し、検出された場合には、該データを書き込むべき前記アドレスを前記保持回路に保持させる制御回路と
を具備し、前記制御回路は、前記保持回路に保持された前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、同一の前記メモリブロックに当該データを順次書き込む
ことを特徴とするメモリコントローラ。 - 前記制御回路は、前記上位ディレクトリを示す情報の値を保持する上位ディレクトリ情報保持部と、
前記上位ディレクトリ情報保持部において保持される値が前記データに含まれているか否かによって、前記データにおける前記上位ディレクトリを示す情報の有無を検出する検出部と、
前記検出部において前記上位ディレクトリを示す情報が検出された際に、前記データを前記保持回路に保持させる制御部と
を備えることを特徴とする請求項1記載のメモリコントローラ。 - 各々がデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリを制御するメモリコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器からデータ及び該データを書き込むべきアドレスを受信するホストインタフェースと、
前記ホストインタフェースで受信された前記アドレスを保持可能な保持回路と、
前記ホストインタフェースで受信された前記データ中において、所定の値が一定間隔で繰り返し含まれているか否かを検出し、含まれている場合には、該データを書き込むべき前記アドレスを前記保持回路に保持させる制御回路と
を具備し、前記所定の値とは、前記データがサブディレクトリエントリである場合に、当該サブディレクトリエントリに含まれるエントリがディレクトリであるかファイルであるかを示す値であり、
前記制御回路は、前記保持回路に保持された前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、同一の前記メモリブロックに当該データを順次書き込む
ことを特徴とするメモリコントローラ。 - 各々がデータを保持可能な複数の不揮発性のメモリセルを含むメモリブロックを複数備え、且つ前記メモリブロック単位でデータが消去される半導体メモリを制御するメモリコントローラであって、
ホスト機器に接続可能とされ、前記ホスト機器からデータ及び該データを書き込むべきアドレスを受信するホストインタフェースと、
前記半導体メモリからルートディレクトリエントリを読み出し、該半導体メモリに含まれるサブディレクトリエントリのアドレスを算出する制御回路と、
前記制御回路で算出された前記サブディレクトリエントリのアドレスを保持する保持回路と
を具備し、前記制御回路は、前記保持回路に保持された前記アドレスと同一アドレスに対して書き込みアクセスが為された際には、同一の前記メモリブロックに当該データを順次書き込む
ことを特徴とするメモリコントローラ。 - 前記制御回路は、前記データ中に前記上位ディレクトリを示す情報が検出された場合には、いずれかの前記メモリブロックを新たに確保し、確保した該メモリブロックに前記データを書き込む
ことを特徴とする請求項1または2記載のメモリコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006265629A JP2008084184A (ja) | 2006-09-28 | 2006-09-28 | メモリコントローラ |
US11/863,766 US20080294837A1 (en) | 2006-09-28 | 2007-09-28 | Memory controller for controlling a non-volatile semiconductor memory and memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006265629A JP2008084184A (ja) | 2006-09-28 | 2006-09-28 | メモリコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008084184A true JP2008084184A (ja) | 2008-04-10 |
Family
ID=39354968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006265629A Pending JP2008084184A (ja) | 2006-09-28 | 2006-09-28 | メモリコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080294837A1 (ja) |
JP (1) | JP2008084184A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI384488B (zh) * | 2007-12-24 | 2013-02-01 | Skymedi Corp | Nonvolatile storage device and its data writing method |
TWI413984B (zh) | 2008-10-16 | 2013-11-01 | Silicon Motion Inc | 快閃記憶體裝置以及資料更新方法 |
TWI467579B (zh) * | 2011-01-14 | 2015-01-01 | Mstar Semiconductor Inc | 電子裝置及其記憶體控制方法以及相關電腦可讀取儲存媒體 |
KR20160097657A (ko) * | 2015-02-09 | 2016-08-18 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 그리고 그것의 동작 방법 |
US9720834B2 (en) * | 2015-12-11 | 2017-08-01 | Oracle International Corporation | Power saving for reverse directory |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047352A (en) * | 1996-10-29 | 2000-04-04 | Micron Technology, Inc. | Memory system, method and predecoding circuit operable in different modes for selectively accessing multiple blocks of memory cells for simultaneous writing or erasure |
JP2005190288A (ja) * | 2003-12-26 | 2005-07-14 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP4157501B2 (ja) * | 2004-06-30 | 2008-10-01 | 株式会社東芝 | 記憶装置 |
JP4713867B2 (ja) * | 2004-09-22 | 2011-06-29 | 株式会社東芝 | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 |
-
2006
- 2006-09-28 JP JP2006265629A patent/JP2008084184A/ja active Pending
-
2007
- 2007-09-28 US US11/863,766 patent/US20080294837A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080294837A1 (en) | 2008-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5002201B2 (ja) | メモリシステム | |
US10783071B2 (en) | Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block | |
JP4633802B2 (ja) | 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 | |
JP4524309B2 (ja) | フラッシュメモリ用のメモリコントローラ | |
US6711663B2 (en) | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof | |
US8386698B2 (en) | Data accessing method for flash memory and storage system and controller using the same | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
KR960004738B1 (ko) | 불휘발성 반도체 메모리 장치 | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US20070214309A1 (en) | Nonvolatile storage device and data writing method thereof | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US20080098161A1 (en) | Memory device and control method thereof | |
US10740013B2 (en) | Non-volatile data-storage device with spare block pools using a block clearing method | |
US20080244211A1 (en) | Memory device and controller | |
JP2008033788A (ja) | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 | |
EP2309392A1 (en) | Memory system | |
US7051251B2 (en) | Method for storing data in a write-once memory array using a write-many file system | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
JP2005085011A (ja) | 不揮発性メモリ制御装置 | |
US9870826B2 (en) | Memory apparatus and data access method thereof by using multiple memories for lifetime extension | |
KR100914646B1 (ko) | 멀티-플레인 구조의 플래시 메모리 관리 방법 | |
JP2008084184A (ja) | メモリコントローラ | |
JP4235646B2 (ja) | メモリコントローラおよびフラッシュメモリシステム | |
TW202024924A (zh) | 資料儲存裝置與資料處理方法 | |
US20050204115A1 (en) | Semiconductor memory device, memory controller and data recording method |