米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社東芝

発明の名称 メモリカードとその制御方法
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−11872(P2007−11872A)
公開日 平成19年1月18日(2007.1.18)
出願番号 特願2005−193958(P2005−193958)
出願日 平成17年7月1日(2005.7.1)
代理人 【識別番号】100058479
【弁理士】
【氏名又は名称】鈴江 武彦
発明者 大嶋 貴志
要約 課題
集中管理ブロックにエラーがある場合、システムを確実に起動することが困難であった。

解決手段
メモリ3は、管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有する。制御部8は、起動時にメモリ3内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、メモリ内の複数のブロックから管理情報を検索し、この検索された管理情報をメモリの集中管理ブロックに書き込む。
特許請求の範囲
【請求項1】
管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有するメモリと、
起動時に前記メモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数の前記ブロックから前記管理情報を検索し、この検索された管理情報を前記メモリの前記集中管理ブロックに書き込む制御部と
を具備することを特徴とするメモリカード。
【請求項2】
起動時にメモリ内の集中管理ブロックを検出し、
この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数のブロックから管理情報を検索し、
検索された前記管理情報を前記メモリの前記集中管理ブロックに書き込む
ことを特徴とするメモリカードの制御方法。
【請求項3】
前記集中管理ブロックは、前記ブロックが正常か否かを示す第1の情報を含むことを特徴とする請求項1又は2に記載のメモリカード又はメモリカードの制御方法。
【請求項4】
前記制約時間は、前記メモリの全ブロックをスキャンするに必要な時間の半分以上に設定され、前記制御部は、集中管理ブロックがエラーを含む場合、前記メモリの半分のブロックをスキャンすることを特徴とする請求項1又は2に記載のメモリカード又はメモリカードの制御方法。
【請求項5】
前記制約時間は、前記メモリの全ブロックをスキャンするに必要な時間の半分以下に設定され、前記制御部は、集中管理ブロックがエラーを含む場合、前記メモリの全ブロック数の半分以下のブロックをスキャンすることを特徴とする請求項1又は2に記載のメモリカード又はメモリカードの制御方法。
発明の詳細な説明
【技術分野】
【0001】
本発明は、例えばNANDフラッシュメモリを用いたメモリカードとその起動時の制御方法に関する。
【背景技術】
【0002】
NANDフラッシュメモリを使用するシステムは、システム起動時にメモリ内の各ブロックのデータをスキャンし、エラーを有するブロック(以下、バッドブロックと称す)であるか否か、空きブロックであるか否か、書かれているデータの論理ブロックアドレスは何か、といった情報を得る必要がある。しかし、近時、メモリ内にこれらの情報を集中的に管理する集中管理ブロックを設け、この集中管理ブロックにメモリ内の全ブロックの各種情報を一括して書き込んでおく手法が考えられている(例えば特許文献1参照)。
【0003】
この集中管理ブロックを設けることにより、起動時に集中管理ブロックを検出し、この集中管理ブロックのデータを読み出すことにより、メモリ内の全ブロックをスキャンすることなくメモリ全体の情報を得ることが可能となる。
【0004】
しかしながら、集中管理ブロックの読み出し時に訂正不可能なエラーが発生し、集中管理ブロックの情報が読み出せなかった場合、システムを起動することが不可能となってしまう。この場合、殆どのブロックが正常であるにも拘らず、メモリカードを使用することが困難となるため、ユーザにとって非常に不都合である。
【特許文献1】特開平9−198884号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、集中管理ブロックにエラーがある場合においても、システムを確実に起動することが可能なメモリカードとその制御方法を提供する。
【課題を解決するための手段】
【0006】
本発明のメモリカードの態様は、管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有するメモリと、起動時に前記メモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数の前記ブロックから前記管理情報を検索し、この検索された管理情報を前記メモリの前記集中管理ブロックに書き込む制御部とを具備することを特徴とする。
【0007】
本発明のメモリカードの制御方法の態様は、起動時にメモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数のブロックから管理情報を検索し、検索された前記管理情報を前記メモリの前記集中管理ブロックに書き込むことを特徴とする。
【発明の効果】
【0008】
本発明によれば、集中管理ブロックにエラーがある場合においても、システムを確実に起動することが可能なメモリカードとその制御方法を提供できる。
【発明を実施するための最良の形態】
【0009】
以下、本発明の実施の形態について、図面を参照して説明する。
【0010】
図2は、本発明の実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【0011】
メモリカード1は、PCB(Printed Circuit Board)基板2と、このPCB(Printed Circuit Board)基板2上に配置されたNAND型フラッシュメモリ3及びコントローラ4とにより構成されている。コントローラ4は、CPU(Central Processing Unit)8やROM(Read-Only Memory)9などの機能ブロックを有している。各デバイスの詳細については後述する。なお、NAND型フラッシュメモリ3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、1つのメモリセルに1ビットより多い情報(例えば2ビット)を記憶する多値メモリであっても良い。また、図2は、PCB基板2上にNAND型フラッシュメモリ3及びコントローラ4が配置された場合を示しているが、NAND型フラッシュメモリ3及びコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されても良い。
【0012】
以下の説明において使用する用語「論理ブロックアドレス」、「物理ブロックアドレス」は、それぞれブロック自体の論理アドレス,物理アドレスを意味する。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示している。
【0013】
図3は、ホストと上記メモリカードとを含む構成を示すブロック図である。図3において、図2と同一部分には同一符号を付している。
【0014】
ホスト機器(以下、ホストと称す)20は、接続されるメモリカードをアクセスするためのハードウェア及びソフトウェア(システム)を備えている。このホスト20は、メモリカード内部の物理状態(何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか)を管理し、メモリカード内のフラッシュメモリを直接制御する。
【0015】
また、ホスト20は、消去時の消去ブロックサイズが16kByteに定められているNAND型フラッシュメモリを使用することを前提とし、16kByte単位で論理・物理アドレスの割当を行い、多くの場合、論理アドレス16kByte分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う(該当するコマンドを発行する)。
【0016】
メモリカード1は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。このメモリカード1は、前述したようにNAND型フラッシュメモリ3及びコントローラ4を有している。
【0017】
NAND型フラッシュメモリ3は、消去時のブロックサイズ(消去ブロックサイズ)が例えば256kByteに定められた不揮発性メモリであり、例えば16kByte単位でデータの書き込み・読み出しを行うようになっている。このNAND型フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。即ち、NAND型フラッシュメモリ3のデザインルールは、0.1μm未満となっている。
【0018】
コントローラ4は、前述したCPU8及びROM9のほかに、メモリインタフェース部5、ホストインタフェース部6、バッファ7、及びRAM(Random Access Memory)10を搭載している。
【0019】
メモリインタフェース部5は、コントローラ4とNAND型フラッシュメモリ3との間のインタフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインタフェース処理を行う。
【0020】
バッファ7は、ホスト20から送られてくるデータをNAND型フラッシュメモリ3へ書き込む際に、一定量のデータ(例えば1ページ分)を一時的に記憶したり、NAND型フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に、一定量のデータを一時的に記憶したりする。
【0021】
CPU8は、メモリカード1全体の動作を司るものである。このCPU8は、例えばメモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(制御プログラム)をRAM10上にロードして所定の処理を実行する。すなわち、CPU8は、各種のテーブルをRAM10上に作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてNAND型フラッシュメモリ3上の該当領域をアクセスしたり、バッファ7を通じてデータ転送処理を制御したりする。
【0022】
ROM9は、CPU8により使用される制御プログラムなどを格納するメモリである。RAM10は、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。
【0023】
図4は、ホスト20が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ(即ち、メモリカード1内のNAND型フラッシュメモリ3)との、データ配置の違いを示している。
ホスト20が想定しているフラッシュメモリにおいて、各ページは528Byte(512Byte分のデータ記憶部+16Byte分の冗長部)を有しており、32ページ分が1つの消去単位(即ち、16kByte+0.5kByte(ここで、kは1024))となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【0024】
一方、実際に使用するフラッシュメモリ3において、各ページは2112Byte(例えば512Byte分のデータ記憶部×4+10Byte分の冗長部×4+24Byte分の管理データ記憶部)を有しており、128ページ分が1つの消去単位(即ち、256kByte+8kByte)となる。以下では、このようなフラッシュメモリ3を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を16kByteと呼び、大ブロックカードの消去単位を256kByteと呼ぶ。
【0025】
また、ホスト20が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ3とは、それぞれフラッシュメモリに対してデータを入出力するためのページバッファを備えている。ホスト20が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、528Byte(512Byte+16Byte)である。一方、実際に使用するフラッシュメモリ3に備えられるページバッファの記憶容量は、2112Byte(2048Byte+64Byte)である。データ書き込みなどの際において、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
【0026】
図4に示す例は、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズの16倍である場合を示している。しかし、本実施形態はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【0027】
大ブロックカードを実用上有効な製品とするためには、図4に示したフラッシュメモリ3の記憶容量は1Gビット以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gビットである場合、256kByteブロック(消去単位)の数は、512個となる。
【0028】
また、図4においては消去単位が256kByteブロックである場合を例示しているが、消去単位が例えば128kByteブロックとなるように構築することも実用上有効である。この場合、128kByteブロックの数は、1024個となる。
【0029】
また、図4に示す例は、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示している。しかし、本実施形態はこれに限定されるものではなく、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
【0030】
図5は、ホスト20側システム及びメモリカード1(大ブロックカード)の各コミュニケーション階層を示す図である。
【0031】
ホスト20側のシステムは、アプリケーションソフト21、ファイルシステム22、ドライバソフト23、及び小ブロックカード物理アクセス層24を有する。一方、メモリカード1(大ブロックカード)は、小ブロックカード物理アクセス層11、小ブロックカード物理・小ブロックカード論理変換層12、小ブロックカード論理・大ブロックカード物理変換層13、及び大ブロックカード物理アクセス層14を有する。
【0032】
例えばホスト20側のアプリケーションソフト21がファイルの書き込みをファイルシステム22に要求すると、ファイルシステム22は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバソフト23に指示する。これを受けて、ドライバソフト23は、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック毎のシーケンシャルな書き込みを実現する。この際、ドライバソフト23は、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層24を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
【0033】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、(1)コマンド、(2)ページアドレス(ロウアドレス)、(3)カラムアドレス、(4)データ、(5)プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
【0034】
大ブロックカード側における小ブロックカード物理アクセス層11は、ホスト20から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【0035】
小ブロックカード物理・小ブロックカード論理変換層12は、データ読み出しなどの際に小ブロックカードの物理ブロックアドレス(16kByteブロック分に対応)から小ブロックカードの論理ブロックアドレス(16kByteブロック分に対応)への変換処理を行うための第1のテーブルを有している。変換層12は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第1のテーブルに反映させる。物理ブロックアドレスに関しても、上記第1のテーブルに反映させる。
【0036】
小ブロックカード論理・大ブロックカード物理変換層13は、データ読み出しなどの際に小ブロックカードの論理ブロックアドレス(シーケンシャルな16kByteブロック×16個分に対応)から大ブロックカードの物理ブロックアドレス(256kByte物理ブロック分に対応)への変換処理を行うための第2のテーブルを有している。変換層12は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第2のテーブルに反映させる。
【0037】
大ブロックカード物理アクセス層14は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ3内部のデータ配置を決定し、256kByte物理ブロック内において2kByte(1ページ)単位でシーケンシャルに16kByte分のデータを書き込む。また、大ブロックカード物理アクセス層14は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ3内部における管理データ領域内の所定の領域に格納する。
【0038】
このようにホスト20は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側は、小ブロックカードの物理ブロックアドレスに対応するデータがどの256kByte物理ブロックの中に存在するかが分かるように管理する。具体的には、16kByteブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した256kByteブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの256kByte物理ブロックに格納されているかが分かるように管理する。
【0039】
図6は、ホスト20側から送られてくるコマンドのフォーマットを示す図である。ホスト20側から送られてくるコマンドのパケットは、図6(a)に示すように、コマンド種別情報(ここでは「書き込み」)、アドレス(物理ブロックアドレス)、データ(コンテンツなどの実データ及び付随データ(512Byte+16Byte))といった各種情報を含んでいる。
このようなフォーマットのパケットにおいては、図6(b)に示されるように、付随データ16Byte中の所定の位置に小ブロックカードの「論理ブロックアドレス」(アクセス対象となる16kByteブロックに対応する論理アドレス)が配置されている。大ブロックカードは、コマンド種別情報、物理ブロックアドレス、データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読み出しコマンドの場合には付加されない。
【0040】
図7は、ホスト20側が想定しているブロック書き込み操作と、メモリカード1(大ブロックカード)側が実際に行う書き込み処理とを、対比して示す図である。
ホスト20側(同図の左側)では、小ブロックカードの論理アドレスに基づく16kByteブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる16kByteブロック単位のランダムな書き込み操作を行う。
【0041】
一方、大ブロックカード側(同図の右側)では、ホスト20側から書き込みコマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック単位のデータをフラッシュメモリ3内にシーケンシャルに書き込む。
【0042】
前述のように、ホスト20は、小ブロックの物理アドレスによる16Byte単位のランダムな書き込み操作を行う。このようなランダムな書き込み操作では、一般に、大ブロック(256kByte)の一部のみを書き換えるための処理が多発する。NAND型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作(以下、「巻き添えデータコピー」と称す)を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大する。そこで、本実施形態では、ホスト20側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書き込みの発生を低減し、オーバーヘッドの増大を抑制している。
【0043】
図8は、大ブロックカード内のNAND型フラッシュメモリ3のブロックフォーマット(消去単位である256kByte物理ブロック分)の一例を示している。
【0044】
大ブロックカードでは、消去単位である256kByte物理ブロックの中に、ホスト20側が管理する単位である16kByteに相当するデータを書き込むためのブロック(以下、ホスト管理ブロックと称す)が16個分含まれている。データ書き込みの際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【0045】
各ホスト管理ブロックは、8個のページで構成される。各ページは、512Byteデータ領域を4個分含むとともに、各データ領域に対応する10ByteECC領域を含んでいる。また、ページ中の最後の512Byteデータ領域(4番目の512Byteデータ領域)の後には、24Byte管理データ領域も設けられる。このため、ページ中の最後の10ByteECC領域は、4番目の512Byteデータ領域と24Byte管理データ領域の両方に対応する構成となっている。
【0046】
消去単位である256kByte物理ブロックに含まれる128個の24Byte管理データ領域のうち、例えば最後の24Byte管理データ領域には、ホスト20側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納されるようになっている。これらのアドレス情報は、図5で説明した小ブロックカード物理・小ブロックカード論理変換層12が有する第1のテーブルと、小ブロックカード論理・大ブロックカード物理変換層13が有する第2のテーブルとを作成する際に使用される。
【0047】
図9は、図8とは異なるブロックフォーマットの例を示す図である。
図9に示すブロックフォーマットは、図8のブロックフォーマットに比べると、各ページにおけるECC0,ECC1,ECC2の領域の配置位置が異なる。ただし、各ページにおけるユーザデータの記憶容量は、図8に示すブロックフォーマットと図9に示すブロックフォーマットとでは同じである。即ち、図8に示すブロックフォーマットは、各ページに2048Byte(512Byte+512Byte+512Byte+512Byte)の記憶領域が設けられており、図9に示すブロックフォーマットは、各ページに2048Byte(518Byte+518Byte+518Byte+494Byte)の記憶領域が設けられている。以下では、図9に示すブロックフォーマットを採用した場合を前提にして説明する。
【0048】
図10は、本実施形態のメモリカード1に対してホスト20が書き込みを行う際の、当該メモリカード1のI/OピンとR/Bピンとの信号の例を示すタイミングチャートである。
【0049】
ホスト20は、メモリカードが16kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えばメモリカードに対する書き込みの際、ホスト20は、シリアルデータインプットコマンド80H(Hは16進を示す)をI/Oピン1〜8へ入力する。次に、ホスト20は、カラムアドレスC/AおよびページアドレスP/Aを、I/Oピン1〜8へ入力する。なお、ここでカラムアドレスC/AおよびページアドレスP/Aは、ホスト20がメモリカード1に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【0050】
さらに、ホスト20は、書き込みデータを、I/Oピン1〜8の個々に対し、528回入力する。具体的には、ホスト20はライトイネーブルピンへの入力信号を528回クロッキングしながら、それぞれのI/Oピンに対し528ビット(全てのI/Oピン合計で528バイト)のデータを順次シフトインする。データのシフトインが完了すると、ホスト20は、プログラムコマンド10HをI/Oピン1〜8へ入力する。これに応答してメモリカードは、そのR/Bピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にR/Bピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【0051】
しかしながら、図10におけるR/Bピンの状態は、あくまでもホスト20に対してメモリカード1がどのような状態かを示すものである。つまり、図10において、プログラムコマンド10Hの入力に応答して、R/Bピンがビジー状態(つまりロウレベルを出力)を示したとしても、内部でNAND型フラッシュメモリ3に対する書き込み動作(つまり、ページバッファからメモリセルアレイへのデータ転送)が実際に行われているとは限らない。また、R/Bピンがレディ状態に復帰したとしても、内部でNAND型フラッシュメモリ3に対する書き込み動作が実際に完了しているとは限らない。
【0052】
図11は、本実施形態のメモリカード1内のNAND型フラッシュメモリ3に対して、当該メモリカード1内のコントローラ4が書き込みを行う際の、NAND型フラッシュメモリ3のI/OピンとR/Bピンとの信号の例を示すタイミングチャートである。
【0053】
コントローラ4は、NAND型フラッシュメモリ3が256kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、NAND型フラッシュメモリ3に対する書き込みの際、コントローラ4は、シリアルデータインプットコマンド80HをI/Oピン1〜8へ入力する。次に、コントローラ4は、カラムアドレスC/AおよびページアドレスP/Aを、I/Oピン1〜8へ入力する。なお、ここでカラムアドレスC/AおよびページアドレスP/Aは、コントローラ4がNAND型フラッシュメモリ3に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図10におけるカラムアドレスC/AおよびページアドレスP/Aとは必ずしも一致していない。
【0054】
さらに、コントローラ4は、書き込みデータを、I/Oピン1〜8の個々に対し、2112回入力する。具体的には、コントローラ4は、ライトイネーブルピンへの入力信号を2112回クロッキングしながら、それぞれのI/Oピンに対し2112ビット(全てのI/Oピン合計で2112バイト)のデータを順次シフトインする。データのシフトインが完了すると、コントローラ4は、プログラムコマンド10HをI/Oピン1〜8へ入力する。これに応答してメモリカードは、そのR/Bピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にR/Bピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図11におけるR/Bピンの状態は、コントローラ4に対してNAND型フラッシュメモリ3が実際にどのような状態かを示している。
【0055】
なお、上記図10および図11は、カラムアドレスC/AおよびページアドレスP/Aの入力をそれぞれ1つのサイクルで示しているが、メモリカード1の容量またはNAND型フラッシュメモリ3の容量に応じて、適宜2サイクル以上になる場合もある。
【0056】
上記図10および図11から分かるように、メモリカードがビジー状態でいられる時間には制約がある。このため、その間にデータ書き込みを行い、所定期間後には当該メモリカードがレディ状態になったことをホスト側に示さなければならない。
【0057】
以下の説明では、ホスト20が想定しているフラッシュメモリにおける物理ブロックアドレス,論理ブロックアドレスをそれぞれ「xPBA」、「xLBA」と略称し、フラッシュメモリ3における物理ブロックアドレスを「PBA」と略称するものとする。
【0058】
本実施形態では、ホスト20が想定しているフラッシュメモリのデータ記憶領域を複数のゾーンに分け、各ゾーンに番号を付与して管理する。具体的には、物理ブロックアドレスxPBA1〜1023に対応する1024個のブロック群をZone0、物理ブロックアドレスxPBA1024〜2047に対応する1024個のブロック群をZone1、物理ブロックアドレスxPBA2048〜3071に対応する1024個のブロック群をZone2、…のように定義し、各ゾーンに1000個のxLBAを対応付ける。なお、物理ブロックアドレスxPBA0には、当該メモリカード1に関するCIS(Card Information Structure)(後述)を記憶するブロックを対応させる。
【0059】
図12(a)(b)は、フラッシュメモリ3上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示している。
【0060】
図12(a)に示すデータブロック(1物理ブロック分)は、図9にも示したように、128個のデータページで構成される。このようなデータブロックは、フラッシュメモリ3上に複数個存在し、ユーザデータ(ユーザが読み書きすることが可能な文書、静止画、動画などのデータ)を記憶するために使用される。なお、個々のデータブロックにおける例えば最終データページ中の所定領域には、当該データブロックのPBAに対応するxPBA及びxLBAの情報が記憶されており、アドレス変換テーブルを作成する際に利用される。
【0061】
一方、図12(b)に示す集中管理ブロック(1物理ブロック分)は、1つのCIS(Card Information Structure)ページ及び複数の管理ページ0,1,2,3,…で構成される。この集中管理ブロックは、当該フラッシュメモリ3上に1個のみ存在する。この集中管理ブロックは、フラッシュメモリ3に関する種々な管理情報(基本的にはユーザが自由に読み書きすることができず、フラッシュメモリ3の起動時などにホストやコントローラが使用する情報)を一括して記憶する特別なブロックであり、全物理領域の中でもロバスト性(robustness)が最も高い領域に設けられる。即ち、集中管理ブロックは、全物理領域の中でも最もECCエラー数の少ない領域に設けられる。
【0062】
集中管理ブロック中のCISページは、例えばフラッシュメモリ3が所定のメモリカードの物理フォーマット仕様に沿ってフォーマッティングされているか否かを見分けるために使用されるページである。管理ページ0,1,2,3,…は、個々のデータブロックがそれぞれ属しているゾーンの番号(Zone No.)や個々のデータブロックのエラーに関するステータス(status)を記憶するページである。この管理ページは、テーブル作成対象ゾーンとして予め指定されているゾーンに該当するデータブロック群のPBAを知得するために使用され、アドレス変換テーブルを作成する際に利用される。
【0063】
図13は、図12中に示される集中管理ブロックのフォーマットの一例を示している。図14は、図13中に示される主要な情報に関する説明をまとめたものである。また、図15は、図14中に示された管理ページ0における各カラムのフォーマットの一例を示している。以下、図13〜図15を参照して、CISページ及び管理ページ0,1,2,3,…の詳細を説明する。
【0064】
図13中のCISページには、「CIS」、「CIS−PBA」、「識別番号」、「ID」、「空きBLK」、「ECC」、「Mode」、「Max PBA」、「Max PPA」、「1034B」、「4B」等で表された種々な領域がある。領域「CIS」は、ホスト20に読ませるべきカード情報構造データ(CISデータ)を記憶する領域である。領域「CIS−PBA」は、ホスト20側から見た、CISデータの格納位置を示す物理アドレス(xPBA)を記憶する領域である(ホスト20がCISデータの書き換えを行った場合に対応できるようにするため、当該物理アドレスが記憶される)。領域「識別番号」は、メモリカード1の識別番号を記憶する領域である。領域「ID」は、当該ページに書かれているデータの種類及びバッドブロック属性を記憶する領域である。領域「空きBLK」は、データが消去済みである空きブロックのPBAを記憶する領域である。領域「ECC」は、カラムアドレス0−517の情報に対応するECC、カラムアドレス528−1045の情報に対応するECC、及びカラムアドレス1056−2101の情報に対応するECCを記憶する領域である。領域「Mode」、「Max PBA」、「Max PPA」、「1034B」、「4B」は、デバック時に使用される各種の情報を記憶する領域である(ここでは詳細な説明を省略する)。
【0065】
一方、図13中の管理ページ0,1,2,3,…には、「Assign & Status」、「ID」、「ECC」、「19B」、「4B」等で表された複数の領域がある。領域「Assign & Status」は、データブロック毎に、当該データブロックにアサインされているゾーンの番号(Zone No.)及び当該データブロックにECCエラーが何個存在するかを示すステータス(Status)を記憶する領域である。領域「ID」は、当該ページに書かれているデータの種類及びバッドブロック属性を記憶する領域である。領域「ECC」は、カラムアドレス0−517の情報に対応するECC、カラムアドレス528−1045の情報に対応するECC、カラムアドレス1056−1573の情報に対応するECC、及びカラムアドレス1584−2101の情報に対応するECCを記憶する領域である。領域「19B」及び「4B」は、空き領域(未使用領域)である。
【0066】
例えば全管理ページ0,1,2,3,…のうちの管理ページ0に着目すると、図15に示すように、管理ページ0を構成する個々のカラムCol.0, Col.1, Col.2,…には、個々のデータブロックを識別するPBA0, PBA1, PBA2, …に対応する領域が設けられ、各領域(1Byte分)には上述したゾーン番号(Zone No.)(7bitのうちの上記6bit)及びステータス(Status)(2bit)の組合せが記憶されている。
【0067】
ところで、前述したように、集中管理ブロックの読み出し時に訂正不可能なエラーが発生し、集中管理ブロックの情報が読み出せなかった場合、集中管理ブロックを作成し直す必要がある。このため、メモリ内の各種情報を得るために、メモリ内の全ブロックをスキャンする必要がある。しかし、システムの起動時に制約時間が設けられているシステムがあり、スキャン時間がこの制約時間よりも長い場合、システムを起動することができなくなるという問題が発生する。
【0068】
例えば1ページの大きさが(2048+64)Byteで、1ブロックが128ページであり、全部で8192ブロックからなるNANDフラッシュメモリを使用するシステムを考える。このシステムは集中管理ブロックにメモリ全体の空きブロックの位置を示す情報を書き込んでいるとすると、この管理情報の読み出しが不可能となってしまった場合、8192ブロック全てをスキャンして空きブロックであるかどうかをチェックする必要がある。1ブロックのスキャンに要する時間を100μsとすると、全ブロックをスキャンするために約820msの時間がかかることになる。
【0069】
仮に、このシステムの起動時に設定された制約時間が500ms以内であるとすると、この制約時間内に全てのブロックの管理情報を読み出すことは困難である。したがって、管理情報の読み出しが不可能となった時点でシステムを起動することが不可能となってしまう。この場合、殆どのブロックが正常であるにも拘らず、メモリカードを使用することが困難となる。
【0070】
そこで、本実施形態においては、図1に示すような動作により、管理ブロックを再構築することにより、システムの起動を可能としている。図1は、例えばメモリカード1のコントローラ4の動作を示している。
【0071】
以下、図1を参照してメモリカードの起動時の動作について説明する。
【0072】
図3に示すように、メモリカード1がホスト20に装着され、ホスト20によりメモリカード1が起動されると(S11)、フラッシュメモリ3内の集中管理ブロックが検出される(S12)。この集中管理ブロックの検出は、例えば次のように行なわれる。
【0073】
図16に示すように、製品出荷時、フラッシュメモリ3の記憶領域は、複数のエリアArea0〜3にプリフォーマットされている。1つのエリアは、例えば1024個のブロックを含んでいる。各エリアは、集中管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロック(以下、「マーキングブロック」と称す)を有している。即ち、各エリアには、1つのマーキングブロックが設けられている。例えば、特定ページ(page0)を構成する全てのカラムの値が“0”である場合、当該特定ページが属しているエリアには集中管理ブロックは存在せず、カラムの値が“1”となっているものが一つでもある場合、当該特定ページが属しているエリアには集中管理ブロックが存在することを表すように定義されている。図16に示す例の場合、Area1に集中管理ブロックが存在する。
【0074】
コントローラ4は、集中管理ブロックを検索するとき、各エリアに含まれるマーキングブロックを探し、そのマーキングブロック中に含まれる特定ページを参照することによって、集中管理ブロック検索する。
【0075】
集中管理ブロックが検出されると、集中管理ブロック内の情報が読み出される(S13)。この読み出し時に例えばECCエラーなど、訂正不可能なエラーが発生したかどうかが判断される(S14)。この結果、エラーが発生した場合、集中管理ブロックが再構築される。すなわち、フラッシュメモリ3の各ブロックがスキャンされ、各ブロックから管理情報が読み出される。この読み出された管理情報は、例えば図3に示すバッファ7に保持される。この動作は、フラッシュメモリ3内のブロック数が例えば8192個である場合、その半分の4096個分繰り返される(S15)。このようにして、フラッシュメモリ3内の前半のブロックから管理情報が検索されると、バッファ7内に保持された管理情報がフラッシュメモリ3の集中管理ブロックに書き込まれる(S16)。
【0076】
この後、フラッシュメモリ3内の残りの4096ブロックをスキャンし、これらブロックから管理情報を読み出す(S17)。この読み出された管理情報はバッファ7内に保持される。後半の4096ブロックから管理情報が読み出されると、バッファ7内の管理情報がフラッシュメモリ3の集中管理ブロックに書き込まれる(S18)。
【0077】
ところで、後半の4096ブロックのスキャン中にシステムに設定された制約時間に達すると起動不可能となる。この後、システムを再度起動すると(S11)、集中管理ブロックが検索され(S12)、集中管理情報が読み出される(S13)。この後、読み出しエラーが発生したかどうかが判別される(S14)。この場合、上記前半4096ブロックのデータは集中管理ブロックに既に記録され、この記録は正常に終了している。このため、ECCエラーは生じていない。したがって、制御がステップS19に移行され、集中管理ブロックに全ブロックの管理情報が記録されているかどうかが判別される。この場合、全部ロックの半分のブロックの管理情報のみが記録されているため、制御が前記ステップS17に移行され、残りの4096ブロックがスキャンされ、管理情報が検索される。この検索された管理情報は、バッファ17に記憶され、検索が終了すると、バッファ17に保持された管理情報がフラッシュメモリ3の集中管理ブロックに書き込まれる(S18)。後半のスキャンは、全ブロックの半分のブロックをスキャンすればよい。このため、システムに設定された制約時間の範囲内で、後半の管理情報を検索することができる。したがって、後半のスキャンの間にタイムアウトすることを回避できる。
【0078】
具体的には、1ブロックのスキャンに要する時間が例えば100μsであり、このシステムの起動時に設定された制約時間が例えば500msであるとした場合、8192個のブロックの半分の4096個のブロックをスキャンするために必要な時間は約410msである。したがって、前半のブロックスキャン及び後半のブロックスキャンは、制約時間内で終了する。このため、タイムアウトを回避できる。
【0079】
このようにして、検索した管理情報を集中管理ブロックに書き込み、集中管理ブロックを再構築した状態においてシステムを起動することができる(S20)。
【0080】
尚、上記実施形態において、ブロックスキャンは、システムに設定された制約時間より若干短く、前半、後半とも全ブロック数の半数の4096ブロックとした。しかし、これに限定されるものではなく、1ブロックのスキャンに要する時間や、システム起動時の制約時間に応じて、スキャン対象のブロック数を少なくしてもよい。例えば制約時間がメモリ3の全ブロック数の半分以下のブロック数をスキャンするに必要な時間に設定されている場合、1回のスキャンで、管理情報を読み出し可能なブロック数は、4096個以下となる。したがって、メモリ3の全ブロックをスキャンするための回数が増加するため、正常に起動するまでの再起動回数が増えることとなるが、再起動不能となることを回避できる。
【0081】
上記実施形態によれば、システムの起動時に集中管理情報の読み出しが不可能となってしまった場合、システムに設定された制約時間内で、フラッシュメモリ3のブロックをスキャンして管理情報を読み出し、読み出した管理情報を集中管理ブロックに書き込んでいる。このため、集中管理情報の読み出しが不可能となってしまった場合においても、何度かシステムを再起動して各ブロックの管理情報を検索し、集中管理ブロックに書き込むことにより、集中管理情報を復旧でき、システムの再起動不能を回避することができる。
【0082】
尚、本発明は、上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【0083】
【図1】実施形態に係る動作を示すフローチャート。
【図2】本発明の実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図3】ホストと図2に示すメモリカードとを含む構成を示すブロック図。
【図4】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとの関係を示す図。
【図5】ホスト側システムとメモリカードの各コミュニケーション階層を示す図。
【図6】図6(a)(b)は、ホスト側から送られてくるコマンドのフォーマットを示す図。
【図7】ホスト側が想定しているブロック書き込み操作と、メモリカード側が実際に行う書き込み処理とを対比して示す図。
【図8】大ブロックカード内のNAND型フラッシュメモリのブロックフォーマットの一例を示す図。
【図9】図8とは異なるブロックフォーマットの例を示す図。
【図10】本実施形態のメモリカードに対してホストが書き込みを行う際の信号の例を示すタイミングチャート。
【図11】本実施形態のメモリカード内のフラッシュメモリに対して、当該メモリカード内のコントローラが書き込みを行う際の信号の例を示すタイミングチャート。
【図12】図12(a)(b)は、フラッシュメモリ上のデータブロック及び集中管理ブロックの概略構成を示す図。
【図13】図12(b)に示す集中管理ブロックのフォーマットの一例を示す図。
【図14】図13に示す主要な情報に関する説明を示す図。
【図15】図14中に示す管理ページ0における各カラムのフォーマットの一例を示す図。
【図16】集中管理ブロックの位置を示す図。
【符号の説明】
【0084】
1…メモリカード、3…NAND型フラッシュメモリ、4…コントローラ、7…バッファ、8…CPU、20…ホスト。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013