JP4586469B2 - メモリ制御装置、メモリ制御方法、プログラム - Google Patents

メモリ制御装置、メモリ制御方法、プログラム Download PDF

Info

Publication number
JP4586469B2
JP4586469B2 JP2004268300A JP2004268300A JP4586469B2 JP 4586469 B2 JP4586469 B2 JP 4586469B2 JP 2004268300 A JP2004268300 A JP 2004268300A JP 2004268300 A JP2004268300 A JP 2004268300A JP 4586469 B2 JP4586469 B2 JP 4586469B2
Authority
JP
Japan
Prior art keywords
data
unit area
block
area
update
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.)
Expired - Fee Related
Application number
JP2004268300A
Other languages
English (en)
Other versions
JP2006085342A (ja
JP2006085342A5 (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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2004268300A priority Critical patent/JP4586469B2/ja
Priority to US11/220,040 priority patent/US8060684B2/en
Publication of JP2006085342A publication Critical patent/JP2006085342A/ja
Publication of JP2006085342A5 publication Critical patent/JP2006085342A5/ja
Application granted granted Critical
Publication of JP4586469B2 publication Critical patent/JP4586469B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Description

本発明は、例えばフラッシュメモリなどの不揮発性のメモリ素子に対するデータ書き込み/読み出しなどについての制御を行うメモリ制御装置、及びその方法と、このようなメモリ制御装置が実行すべきプログラムに関するものである。
近年、リムーバブルメディアとして、例えばフラッシュメモリなどの不揮発性の半導体記憶素子を備えて、各種のデータの書き込み/読み出しが可能とされた小型の記憶装置(半導体記憶装置)が知られている。
このような半導体記憶装置に備えられるフラッシュメモリは、特性として、データの上書きは不可であり、消去されている状態から書き込みを行うべきことが知られている。また、データの消去は、フラッシュメモリとしての記憶領域を所定サイズに分割したブロックといわれる物理的な記憶領域単位を最小単位として行われ、データの書き込みは、ブロックをさらに所定サイズに分割したページといわれる記憶領域単位を最小単位として行われる。そのうえで、フラッシュメモリは、消去の繰り返し回数に寿命がある。このために、データの書き込み(更新)は次のようにして行われる。
例えばユーザデータの書き込みとして更新を行うときには、更新対象のデータが書き込み済みとなっているブロックからデータを読み出して、この読み出したデータと更新のための追加データなどを利用して更新されたデータを生成する。そして、この段階で消去済みとなっている他の特定ブロックに対して、この更新されたデータを書き込むようにされる。そのうえで、上記更新対象のデータが書き込まれていたブロックについては、データを消去するようにされる。
つまり、データを更新するときには、更新前のデータが書き込まれていたブロックに再度書き込むことはせずに、他の消去状態にあるブロックを選択して書き込みを行うようにされる(ブロック交替処理)。これにより、1つのブロックに対してデータの消去/書き込みが集中しないようにして、フラッシュメモリ全体としての寿命をのばすことが可能となる。
そして、ファイルシステムとしては、上記したデータの更新に対応して、効率的にデータ管理が行われるように、ブロック管理のために論理アドレスと物理アドレスという概念を導入し、この論理アドレスと物理アドレスとを利用して、記憶装置に対するブロック単位でのデータの書き込み/読み出しを実行するようにされる。このために、ファイルシステムでは、フラッシュメモリに対するデータの書き込み状態を管理する管理情報として、上記論理アドレスと物理アドレスとの対応を示すテーブル(以降、論理−物理アドレス変換テーブル)を備えている。この論理−物理アドレス変換テーブルを参照することで、例えばファイルシステムの上位のFAT(File Allocation Table)については、これまでと同様の仕組みにより、フラッシュメモリにアクセスすることが可能となる。
先に説明したようにして、データの更新が行われた後には、実際のブロックに対するデータの書き込み/消去の結果が反映されるようにして、論理−物理アドレス変換テーブルの更新を行うようにされる。
特開2003−36209号公報
ところで、上記したフラッシュメモリに対するデータの更新などのデータ書き込み処理を実行している最中において、例えば、電源が遮断したり、ドライブから半導体記憶装置が取り外されるなどして、データの書き込み処理が中断されてしまう場合のあることは当然想定される。
このような場合、例えば、次の半導体記憶装置の起動時においては、実際のフラッシュメモリ上での物理的なデータの記憶状態と、上記論理−物理アドレス変換テーブルなどの管理情報の内容とに不整合が生じていることになる。このままでは、以降において、フラッシュメモリに対する正常なデータの管理、アクセスが保証できなくなる。
そこで、実際には、データ書き込み処理において、上記したようなデータの書き込み処理の中断の有無を、次回の起動時において判定できるようにするための所定の手順を含むようにされる。そして、次回の起動時においては、最後のデータ書き込み処理が中断されたか否かについての判定(中断判定)を行うようにされる。そして、中断判定の結果として、実際にデータ書き込み処理が中断されたことを判定したした場合には、例えばフラッシュメモリにおける実際のデータの書き込み状態を検証していって、管理情報を再構築するようにされる。
上記のようにして、半導体記憶装置の起動時においては、先ず、中断判定を行うようにされ、このためには、データ書き込み処理の実行時において、中断判定に対応した準備的処理手順(中断判定準備処理)が実行されることになる。
ここで、この中断判定準備処理としては、データ書き込み処理が実行されるごとに必ず行われるべきものとなるから、できるだけ効率的に行われることが求められる。
そこで本発明は上記した課題を考慮して、メモリ制御装置として次のように構成することとした。
つまり、データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手段を備える。
また、単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手段と、単位領域交替処理が終了した後において、情報生成手段により生成された領域特定情報を、メモリに対して物理的に書き込むための処理を実行する情報書込手段と、メモリに書き込まれているとされる領域特定情報により特定した消去単位領域を、上記データ更新手段が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手段とを備える。
また、最後の単位領域交替処理の開始から情報書込手段の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在のメモリに書き込まれている領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手段を備える。
また、データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順を実行するようにされる。
また、単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の消去単位領域を特定するための領域特定情報を生成する情報生成手順と、単位領域交替処理が終了した後において、情報生成手順により生成された領域特定情報をメモリに対して物理的に書き込むための処理を実行する情報書込手順と、メモリに書き込まれているとされる領域特定情報により特定した消去単位領域を、データ更新手順が実行する今回の単位領域交替処理において使用すべき書込対象消去単位領域として決定する領域決定手順を実行する。
また、最後の単位領域交替処理の開始から情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在のメモリに書き込まれている領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順とを実行するように構成することとした。
また、上記手順をメモリ制御装置に実行させるプログラムを構成することとした。
上記各構成によれば、データ消去の最小単位となる消去単位領域により分割される記憶領域を有するメモリに対するメモリ制御として、データ更新については、単位領域交替処理を伴って実行することができるようになっている。そのうえで、本発明においては、中断判定準備処理として、次回の単位領域交替処理において書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域(予約ブロック)を特定するための情報である領域特定情報を生成して、この領域特定情報をメモリに書き込んでおくこととしている。この領域特定情報のメモリへの書き込みは、上記単位領域交替処理としてのデータ更新が終了した後となるシーケンスで実行されるようになっている。
このような構成の場合において、例えば最後の単位領域交替処理から領域特定情報のメモリ書き込み処理までのシーケンスが正常に終了した場合、領域特定情報もメモリに対して正常に記録されることになる。このときにメモリに記録された領域特定情報の内容は、適正に、次回の単位領域交替処理において更新データの書き込みに使用されるべき消去済みの消去単位領域を特定するものであることになる。
これに対して、最後の単位領域交替処理から領域特定情報のメモリ書き込み処理までのシーケンスの間で中断が生じた場合には、メモリへの領域特定情報の書き込みが完了していないことで、例えば最後の単位領域交替処理において更新データを書き込んだ書込対象消去単位領域を特定する内容のままであることになる。しかしながら、単位領域交替処理が開始されてからの中断であるから、何らかのデータは、この書込対象消去単位領域に書き込まれた状態となっている。
このことから、中断判定手段(手順)としては、現在の領域特定情報により特定される消去単位領域について、消去済みであるか否かを判別することで、中断判定が行えることになる。
このようにして本発明における中断判定は、メモリに書き込んで記憶させた領域特定情報を利用するのであるが、この領域特定情報のメモリへの書き込みは、1回の単位領域交替処理に対応して1回のみしか行われないようになっている。
このようにして本発明としては、1回あたりの単位領域交替処理に対応する中断判定準備処理となるメモリへの情報の書き込み回数について、最小の1回としていることで、これを複数回行うものとした場合と比較して、メモリに対するデータ書き込み回数が削減されることになる。
これにより、或るデータサイズのデータの更新(書き込み)に要する時間は、メモリへのアクセス回数が少なくなる分、短縮されることになる。
また、上記した単位領域交替処理を行う目的が、消去回数により寿命が決まる特性のメモリの寿命の延長を目的とするものである場合には、メモリへの書き込み回数が少なくなることにより、上記した消去単位領域の消去頻度も低くなる。つまり、メモリの長寿命化を図ることも可能となる。
このようにして本発明では、中断判定準備処理について、メモリに対するデータ処理速度やメモリの寿命の点などに関して、効率化が図られているものである。
以下、本発明を実施するための最良の形態(以下、実施の形態ともいう)について説明していく。本実施の形態としては、半導体記憶素子としてフラッシュメモリを備える半導体記憶装置を例に挙げることとする。
この半導体記憶装置は、1つの独立したリムーバブルメディアとしての形態を採り、外形形状としては、例えば小型の板状となっている。
なお、以降の説明は次の順序で行う。

1.半導体記憶装置の構成。
2.フラッシュメモリの物理フォーマット。
3.物理アドレス及び論理アドレスの概念。
4.論理−物理アドレス変換テーブル。
5.BMAPの構造(第1例)。
6.BMAPの構造(第2例)。
7.SMAP。
8.データの書き込み(更新)処理手順。
8−1.ユーザデータの書き込み。
8−2.管理情報(SMAP、BMAP)の書き込み。
9.処理動作。
9−1.データ書込処理。
9−2.中断判定処理。
9−3.BMAP再構築処理。
10.他の中断判定のための構成。

1.半導体記憶装置の構成。

図1は、本実施の形態の半導体記憶装置1の内部構成例を示している。
この図に示すようにして、半導体記憶装置1は、フラッシュメモリ2、データ処理部3、及びホスト間通信処理部4を備えて成る。
フラッシュメモリ2は、周知のようにして、半導体による不揮発性の記憶素子の1つであり、この場合には、所定の記憶容量を有するものが備えられる。
データ処理部3は、半導体記憶装置1におけるデータ処理として、フラッシュメモリ2に対するデータの書き込み(消去)/読み出しについての制御、処理を実行する。このために、データ処理部3は、フラッシュメモリに記憶されている、データ書き込み/読み出しのための所要の情報により形成される管理情報を利用する。また、データ処理部3は、この管理情報についての更新などをはじめとする、管理情報についての管理も行うようにされる。また、データ処理部3は、ホストシステム10との通信を行うために通信処理部4に対する通信制御も実行する。
なお、データ処理部3としては、例えばCPU、ROM及びRAMなどを備えるマイクロコンピュータとして構成される。
通信処理部4は、ホストシステム10とデータ処理部3との間で、所定の通信方式による通信を行うためのハードウェアデバイスなどを備えて成る。
通信処理部4では、所定の通信方式によりホストシステム10から送信されてきたコマンド(レスポンス)、データなどの情報を受信、デコードし、半導体記憶装置1内部のデータ通信方式に従った形式のデータに変換してデータ処理部3に対して転送する。データ処理部3は、通信処理部4から転送されてきたコマンド、データなどを受信したのに応じて、コマンドに応答した処理や、フラッシュメモリ2へのデータ書き込みなどの処理を実行する。
また、例えばデータ処理部3が、コマンド(レスポンス)を送信したり、フラッシュメモリ2から読み出したデータをホストシステム10に転送する場合には、データ処理部3は、これらのコマンド、データなどを通信処理部4に転送して、ホストシステム10に対して送信するように指示を行う。これに応じて通信処理部4は、データ処理部3から転送されてきたコマンド、データを、ホストシステム10との通信方式に従った形式に変換してホストシステム10に送信する。
ホストシステム10は、例えば所定の機能を備える電子機器であり、リムーバブルメディアである半導体記憶装置1を装脱するためのスロット部位を備えている。そして、このスロットに装填された半導体記憶装置1に対して、データの書き込み/読み出しを行うことが可能とされている。
この場合のホストシステム10がどのような機器であるのかについては、ここでは特に限定されるべきものではないが、例えばパーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオレコーダ、携帯電話などを挙げることができる。例えばデジタルスチルカメラを例にとると、撮影操作に応じて生成された写真としての画像データを半導体記憶装置1に対して転送して、フラッシュメモリ2に記憶させるようにする。また、例えば半導体記憶装置1(フラッシュメモリ2)から写真の画像データを読み出して取り込み、液晶ディスプレイパネルなどの表示部に表示出力させることなどが行われる。

2.フラッシュメモリの物理フォーマット。

続いて、図2を参照して、フラッシュメモリ2の物理フォーマットについて説明する。 フラッシュメモリとしての記憶領域全体は、図2(a)に示すようにして、先ず、所定の固定長によるセグメント単位で分割される。
また、1セグメントは、図2(b)に示すようにして、所定の固定長によるブロック(消去単位領域)0〜nにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
本実施の形態に対応するフォーマットでは、原則として、1セグメントは512ブロックにより分割されて成る。この場合、図2(b)に示される最終のブロック番号nは511となる。また、図2(a)において示されるセグメント0〜Mで表されるM+1個のセグメントは、それぞれ512ブロックごとの単位で分割されることになる。
この図2(a)にはフラッシュメモリの領域に対応してブロックアドレス(物理アドレス)が示されている。このブロックアドレスとセグメント0〜Mの対応としては、セグメント0がブロックアドレス0〜511となり、セグメント1がブロックアドレス512〜1023、セグメント2がブロックアドレス1024〜1535となる。つまり、セグメント番号が1つ増加するごとに、512ブロック分オフセットが与えられたブロックアドレスの値をとっていくことになる。
そして、1つのフラッシュメモリ内におけるデータ用セグメントの数(M)は1以上であることが規定されるが、これについてはフラッシュメモリの容量に応じて異なってくることになる。
また、図2(a)においては、セグメント0内の先頭においてシステム用セグメントが記されているが、これについては、後述する。
そして、図2(b)に示したブロックの各々は、図2(c)に示すようにして、ページ0〜mにより分割される。
1ページは固定長であり、図2(d)に示すように、所定サイズのデータ部と冗長部より成る。データ部にはデータを格納する領域であり、冗長部は、各種の所要の管理情報などが格納される領域となる。
データ書き込みについては、このページが最小単位となる。つまり、フラッシュメモリ2は、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。なお、ブロック内におけるページ数は、固定的に規定されているものではなく、例えばこれまでにおいては、16(m=15),32(m=31),64(m=63)などのページ数の構造とすることが行われている。

3.物理アドレス及び論理アドレスの概念。

上述したフラッシュメモリの物理フォーマットを踏まえたうえで、フラッシュメモリのファイル管理において定義される物理アドレスと論理アドレスの概念について、図3を参照して説明する。図3は、データの更新手順を示している。
図3(a)は、データ更新処理前の状態として、或るセグメント内から4つのブロックを抜き出して、これを模式的に示している。
フラッシュメモリにおいて物理的に存在する各ブロック(物理ブロック)に対しては物理アドレスが付される。この物理アドレスはメモリにおける物理ブロックの物理的な配列順に従って決まるもので、或る物理ブロックとこれに対応付けされた物理アドレスとの関係は不変となる。図2(a)において示されていたブロックアドレスは、この物理アドレスとなる。
ここでは、図3(a)に示す4つのブロックに対して、上から順に物理アドレスの値として、105,106,107,108が付されている。なお、実際の物理アドレスは例えば2バイトにより表現される。
ここで、図3(a)に示すように、物理アドレス105,106で示されるブロックがデータの記憶されている書込済ブロックで、物理アドレス107,108で示されるブロックがデータが消去(即ち、未記録領域である)された消去済ブロックとなっている状態であるとする。
そして、論理アドレスであるが、この論理アドレスは、ブロックに対して書き込まれたデータに付随するようにして割り振られるアドレスとされる。そして、この論理アドレスが、ファイルシステムとして、論理アドレス、物理アドレス管理層の上層に位置するとされる、FAT(File Allocation Table)ファイルシステムが利用するアドレスとされている。
図3(a)では、4つの各ブロックに対して、上から順に論理アドレスの値として、102,103,104,105が付されている状態が示されている。なお、論理アドレスも実際には2バイトにより表現されるものである。
ここで、上記図3(a)に示す状態から、例えば物理アドレス105に格納されているデータの更新として、内容の書き換え、追加、又は一部消去を行うとする。
このような場合、フラッシュメモリのファイルシステムでは、同じブロックに対して更新したデータを再度書き込むことはせずに、消去済ブロックに対してその更新したデータを書き込むようにされる。
つまり、例えば図3において処理1となる図3(a)から図3(b)の遷移として示すようにして、物理アドレス105のブロックに書き込まれていたデータについての更新データは、これまで未使用ブロックであった物理アドレス107で示されるブロックに書き込むようにされる。そして、物理アドレス105のブロックのデータについては消去するようにされる。
続いては、処理2として示すように、データ更新前(図3(a))の状態では物理アドレス105に対応していた論理アドレス102が、更新されたデータが書き込まれたブロックの物理アドレス107に対応するように、論理アドレスと物理アドレスとの対応関係についての変更を行う。これに伴って、データ更新前は物理アドレス107に対応していた論理アドレス104については、物理アドレス105に対応するように変更されている。
つまり、物理アドレスはブロックに対して固有に付されるアドレスであり、論理アドレスは、一旦ブロックに対して書き込まれたデータに付随するようにしてついて回る、ブロック単位の書き込みデータに固有となるアドレスであるとみることができる。
周知のようにして、フラッシュメモリとしての半導体素子には寿命があり、この寿命は、データの消去回数により示される。そこで、上記したようなデータの書き込み(更新)手順とすることで、或る同一の記憶領域(ブロック)に対して繰り返し集中的にアクセスされることが無くなり、フラッシュメモリの寿命を延ばすことが可能となる。
そして、この際に論理アドレスを上記処理2のようにして扱うことで、更新前と更新後のデータとで書き込まれるブロックの交替があるようにされても、FATは論理アドレスによりファイル管理を行っているために、FAT側からは同一のアドレスが見えることになり、以降のアクセスを適正に実行することができるものである。
なお、後述する論理−物理アドレス変換テーブル上での更新のための管理を簡略にすることなどを目的として、上記したようなデータ書き込み対象とするブロックの交替は、1セグメント内で完結するものとして規定されており、セグメント間で跨るようにしては行われない。

4.論理−物理アドレス変換テーブル。

上記図3に示したようにしてブロックの交替を伴ってデータの書き込みが行われることで、物理アドレスと論理アドレスの対応は変化する。従って、フラッシュメモリに対するデータの書き込み及び読み出しのためのアクセスを実現するには、物理アドレスと論理アドレスとの対応が示される論理−物理アドレス変換テーブルが必要となる。つまり、論理−物理アドレス変換テーブルをFATが参照することで、FATが指定した論理アドレスに対応する物理アドレスが特定され、この特定された物理アドレスにより示されるブロックにアクセスすることが可能になるものである。逆に言えば、論理−物理アドレス変換テーブルが無ければ、FATによるフラッシュメモリへのアクセスが不可能となる。
図4は、論理−物理アドレス変換テーブルの概念を示している。
この図に示すようにして、論理−物理アドレス変換テーブルとしては、例えば、先ず論理アドレスを昇順に整列させることことしている。そして、各論理アドレスごとに、対応させるべき物理アドレスを格納するようにしてテーブル情報を構築する。
なお、先に図3により説明したデータ書き込み時におけるブロックの変更はセグメントの範囲内で行われるので、上記図4に示した構造概念の論理−物理アドレス変換テーブルは、セグメントごとに設けられるものとなる。
図5は、フラッシュメモリ2において複数のセグメント(データ用セグメント)が設定されている場合の物理ブロック(物理アドレス)と、論理アドレスの割り当て例を示している。
この図においては、各512ブロックの容量のセグメント0〜3の4セグメントが設定された例が示されている。そのうえで、この場合において、フラッシュメモリにおいて先頭となるセグメント0については、物理ブロックのアドレス、つまり、物理アドレスとしては、0〜511までの範囲が割与えられることになる。また、次のセグメント1の物理アドレスは512〜1023の範囲が割与えられ、さらに、セグメント2は、1024〜1535、セグメント3は、1536〜2047の物理アドレス範囲が割り振られることになる。
このような物理アドレス範囲の割り当てに対して、論理アドレス範囲の割り当ては例えば次のようになる。つまり、この場合には、1セグメントあたりの論理アドレスとしては、490個を割り当てることとしている。そして、セグメント0には論理アドレス0〜489の範囲を割り当て、以降、セグメント1には論理アドレス490〜979、セグメント2には論理アドレス980〜1469、セグメント3には論理アドレス1470〜1959の範囲を割り当てる。
従って、セグメント0の論理−物理アドレス変換テーブルとしては、論理アドレス0〜489のそれぞれに対して、物理アドレス0〜511のいずれかを対応させることになる。
また、セグメント1の論理−物理アドレス変換テーブルは、論理アドレス490〜979のそれぞれに対して、物理アドレス512〜1023の何れかを対応させ、セグメント2の論理−物理アドレス変換テーブルは、論理アドレス980〜1469のそれぞれに対して、物理アドレス1024〜1535の何れかを対応させ、セグメント3の論理−物理アドレス変換テーブルは、論理アドレス1470〜1959のそれぞれに対して、物理アドレス1536〜2047の何れかを対応させることになる。
ところで、図5によると、1セグメントは物理的に512ブロックに分割されるのに対して、1セグメントあたりの論理アドレス数は490となっており物理ブロック数よりも22少ない。これは、1セグメント内において、例えば余剰ブロックといわれる通常のデータ書き込みには使用しない特殊用途のブロックが所定数存在することが規定されていることや、或るブロック数までのディフェクト(不良:使用不可領域)が許可されており、現実には、相当数の不良(ディフェクト)ブロックが存在することに依る。このことに基づいたうえで、フラッシュメモリ2の実際の仕様などを考慮すると、この場合においては、書き込み/消去が有効なブロックを管理するのに、1セグメントあたり、490ブロックを管理できるように構成しておけば充分であるとしているものである。なお、このセグメントごとの論理アドレス範囲数は適宜変更されてよいものであり、必ずしも、490に限定される必要はない。
また、論理−物理アドレス変換テーブルは、実際には、管理情報であるBMAPに対して格納されるものであり、その具体的な構造については、BMAPの構造とともに次に説明する。

5.BMAPの構造(第1例)。

フラッシュメモリにおいては、セグメントごとにブロック単位の管理を行うための管理情報として、BMAPといわれるテーブル情報を備えることとしている。このBMAP内に、論理−物理アドレス変換テーブルが含められる。そして、このBMAPは、フラッシュメモリ上のセグメントごとに、或るブロック内に対して書き込まれるようにして記憶される。
以下、このBMAPの構造について図6及び図7を参照して説明する。
なお、この説明にあたっても、単純に、フラッシュメモリについては、512ブロック単位のセグメントで分割した基本的なフォーマットをとっていることを前提とする。また、図6及び図7には、フラッシュメモリの記憶領域において物理的に先頭となるセグメント0に対応した場合の構造を示すこととする。
BMAP全体としては、図6(a)に示す構造を有する。
BMAPは、1ページ分の情報であり、従って、図2(d)にても説明したように、データ部と冗長部とから成るものとされる。そして、本実施の形態としては、図6(a)に示すようにして、データ部については2048バイト、冗長部については、64バイトであることとしている。つまり、この場合のページ単位は、2112バイトの固定長となる。
そして、この図6(a)に示すBMAPとしてのページ構造において、2048バイトのデータ部については、2バイト(16ビット)単位の列による構造をとることとする。従って、データ部としては、第0列〜第1023列までの1024列の2バイトの単位領域が配列されていることになる。
そして、論理−物理アドレス変換テーブルは、データ部の第0列〜第489列における、下位9ビットの領域を使用する。
この論理−物理アドレス変換テーブルとしての領域は、9ビットの単位領域が490個配列された構造となる。そして、この領域について、図6(b)に示すようにして第0列〜第489列の各列ごとに対応させて、論理アドレス0〜490を割り当てるものとする。そして、この9ビットの領域に対して、図6(c)に示すようにして、各論理アドレスに対応する物理アドレスを格納するようにされる。つまり、本実施の形態では、物理アドレスは9ビットにより表現される。
このようにして、実際の論理−物理アドレス変換テーブルの構造としても、図4にて説明したように、論理アドレスを昇順に整列させたうえで、これらの論理アドレスごとに物理アドレスを対応させる構造となっている。
また、BMAPにおいては、図6(a)に示すデータ部の第0列〜第511列における上位7ビットから成る領域により、図6(d)に示すようにして、物理ブロック管理情報をアロケーションテーブル形式で構築する。
この図6(d)に示す物理ブロック管理情報は、7ビットの単位領域が512個配列された構造となる。そして、これら512個の7ビットの単位領域について、第0列〜第511列ごとに対応させて、そのセグメント内のブロックの物理アドレス0〜511を割り当てるようにする。これにより、物理アドレス0〜511により示されるブロックごとについて、図6(e)に示すようにして、7ビットの情報領域(ブロック情報領域)が形成されたことになる。
そして、本実施の形態としては、この7ビットのブロック情報領域について、図6(e)に示すように、少なくとも、書込済みフラグと、不良フラグの領域を設けることを規定する。この場合、書込済みフラグ及び不良フラグは共に1ビットとされ、書込済みフラグを第1ビットに配置し、不良フラグを第2ビットに配置することとしている。もちろん、このフォーマットは一例であり、書込済みフラグ及び不良フラグのビット数及びブロック情報領域におけるビット位置などは変更されてよい。
書込済みフラグは、0、1の値により、現ブロック情報領域に対応する物理アドレスが示すブロックについてデータが書込済みの状態であるか、消去済みの状態であるかを示す。
不良フラグは、0、1の値により、現ブロック情報領域に対応する物理アドレスが示すブロックが、不良(ディフェクト)ブロックであるか否かを示す。
また、先に述べたように、フラッシュメモリに対するデータ書き込みの実行中に、電源の遮断や、半導体記憶装置がドライブから取り外されたなどの要因で、データの書き込みが中断されてしまった場合には、実際のブロックに対するデータの書き込み状態と、BMAP上での管理内容とに不整合が生じることになって、以降のデータ管理、アクセスなどが正常に行われなくなる可能性がある。
このような場合には、BMAPなどの管理情報の再構築を行うことで、以降の正常なデータ管理、アクセス等が可能となるのであるが、このためには、例えば半導体記憶装置1の起動時などにおいて、最後のデータ書き込み処理が中断されたか否かについての判定(中断判定)が行えるように構成する必要がある。
このために、本実施の形態としては、BMAPの構造において、図6(f)に示すようにして、予約ブロックアドレスを定義することとしている。
予約ブロックアドレスは、次回のデータ書き込み時にデータ書き込み対象とするブロックの物理アドレスを格納する領域とされ、ここでも、物理アドレスのビット数に対応させて9ビットのデータサイズを割り当てている。
また、この予約ブロックアドレスの格納位置としては、データ部における第490列以降における所定の列の下位9ビットとするようにされる。
あるいは、冗長部における所定の9ビットの領域を割与えるようにしてもよい。図においては、冗長部の先頭9ビットを割り当てるようにして記載されているが、実際の格納位置としては、冗長部に格納される他の情報との兼ね合いにより適切とされる9ビット範囲の領域が規定されればよい。
なお、予約ブロックアドレスの領域を、中断判定のためにどのようにして使用するのかについては後述する。
また、セグメント1以降のBMAPについては、図6(b)に示す9ビットの単位領域に対応付ける論理アドレスや、図6(d)に示す7ビットの単位領域に対応付ける物理アドレスは、図6に記載したセグメント0に対応するに対して、そのセグメントに応じて、オフセットを与えればよい。つまり、論理アドレスは490×M、物理アドレスは512×M(Mはセグメント番号に対応する自然数)によるオフセットを与えた(加算した)値とすることになる。つまり、図5に示した論理アドレス範囲、物理ブロック範囲による値となる。例えばセグメント0に続くセグメント1では、図6(b)に示す論理アドレスは、490〜979となり、図6(d)に示す物理アドレスは512〜1023となる。

6.BMAPの構造(第2例)。

BMAPの構造としては、上記図6に示したものに限定されるべきではない。そこで、BMAPの構造の他の例を図7に示しておく。
先ず、この図7(a)に示すBMAPとしてのページ構造において、データ部は、第0バイト〜第2047バイトまでの1バイト単位の列による構造としている。そのうえで、論理−物理アドレス変換テーブルは、データ部の第0バイト〜第551バイトまでの552バイトの領域を使用して、図2(b)に示すようにして構築する。
つまり、上記バイト0〜551までの552バイトの領域について、9ビット単位で区切っていくようにする。すると、この9ビット単位の領域を490個つくることができる。そして、これら490個の9ビット単位の領域について、先頭から論理アドレス0〜489をそれぞれ対応付ける。つまり、論理アドレス0〜489の昇順に従って、9ビットの領域が存在するようにしている。
そして、この9ビットの領域に対して、図7(c)に示すようにして、各論理アドレスに対応する物理アドレスを格納するようにされる。このようにして、図7に示す論理−物理アドレス変換テーブルの構造としても、論理アドレスを昇順に整列させたうえで、これらの論理アドレスごとに物理アドレスを対応させる構造となっているものである。
また、物理ブロック管理情報は、図7(d)(e)に示す不良ブロックビットマップと、書込済みブロックビットマップとにより、それぞれビットマップ形式の情報領域として形成することとしている。
図7(d)に示す不良ブロックビットマップは、図7(a)に示されるBMAPのデータ部における第552バイト〜第615バイトまでの64バイト(512ビット)の領域となる。
この不良ブロックビットマップを形成する512ビットに対しては、先頭のビット位置から順に、1ビットごとに、物理アドレス0〜511を対応させる。つまり、不良ブロックビットマップを形成する512ビットの先頭ビットから最終ビットまでの各ビットが、物理アドレス0〜511により示されるブロックに対応するようにされる。そして、各ビットに対して0,1を格納することで、そのビット位置に対応する物理アドレスが示すブロックが不良であるか否かを示すことになる。
また、図7(e)に示す書込済みブロックビットマップは、図7(a)に示されるBMAPのデータ部において、不良ブロックビットマップの領域に続く、第616バイト〜第679バイトまでの64バイト(512ビット)の領域となる。
このようにして512ビットとなる書込済みブロックビットマップとしても、先頭のビット位置から順に、1ビットごとに物理アドレス0〜511を対応させ、各ビットに対して0,1を格納することで、そのビット位置に対応する物理アドレスが示すブロックについて、データが書き込み済みの状態と消去済みの状態の何れであるのかを示すようにされる。
また、図7(f)に示す予約ブロックアドレスは、データ部における第680バイト以降の所定のバイト列において、所定のビット位置から始まる9ビットの領域として規定するようにされる。
あるいは、図6の場合と同様にして、冗長部における所定の9ビットの領域を割与えるようにする。
なお、図7のBMAPとしても、図6の場合と同様にして、図7(b)に示す9ビットの単位領域に対応付ける論理アドレス、図7(d)(e)に示す不良ブロックビットマップ及び書込済みブロックビットマップの512ビットに対応付ける物理アドレスは、そのセグメントに応じて、オフセットを与えた値とすればよい。
また、BMAPの構造は、上記図6及び図7に示したものに限定されるべきものではなく、例えば各セグメントのBMAPのアドレス、セグメント内の不良ブロック、書込済みブロック、及び予約ブロックアドレスなどについての管理が可能とされる構造であれば、適宜変更されてよいものである。

7.SMAP。

ここで、確認のために述べておくと、BMAPが格納されるブロックについても、ブロック単位でのデータ更新が必要となった場合には、例外なく、先に図3にて説明したブロックの交替が行われる。従って、セグメント内においてBMAPが格納されるブロックは不定である。
このために、ファイルシステムがBMAPを参照するなど、BMAPを利用するためには、BMAPを格納するブロックのアドレスを取得可能とするための仕組みを構成する必要があることになる。
BMAPのアドレスを取得する仕組みとして、先ず考えられるのは、各セグメントの物理ブロックを、例えば物理アドレス順に順次読み出していき、BMAPが格納されたページを探索していくという手順を実行することである。BMAPとなるページの冗長部には、現ページがBMAPであることを示す情報を格納すべきこととしているので、BMAPの所在は、この情報を参照することで認識できる。
しかしながら、このような手順では、BMAPの格納位置がセグメント内において後ろ側に位置するほど探索時間が長くなるという不都合が生じる。
そこで、本実施の形態としては、BMAPを管理するための管理情報である、システム管理情報(SMAP)を設けることとする。
このSMAPを設けるのにあたって、本実施の形態としては、先ず、フラッシュメモリ上のセグメントとして、所定容量のシステム用セグメントを定義し、例えば図2(a)に示すようにして、このシステム用セグメントの領域を、フラッシュメモリにおける先頭領域に対して割り当てるようにする。
そして、このシステム用セグメント内に対してSMAPを格納するようにされる。なお、後述するようにして、本実施の形態において規定するSMAPは、1ページ単位のデータとなる。
なお、本実施の形態のようにしてシステム用セグメントを規定した場合、他の通常のセグメントについてはデータ用セグメントともいうことにして、システム用セグメントと区別する。
ここで、上記システム用セグメントの容量は、ブロックアドレス0〜71までの72ブロック分となっており、原則として規定されるセグメントの容量である512ブロックに対して相当に少ないが、これは次のような理由による。
先ず、SMAPについても、BMAPと同様にして、ブロック単位での更新が必要となったときにはブロック交替が行われるので、システム用セグメント内においてSMAPを格納するブロックは不定である。
BMAPについては、後述する説明から分かるようにSMAPを参照することでBMAPのアドレスが特定されるので、検索時間が高速で安定したものとなる。しかしながら、BMAPの上層の管理情報となるSMAPについては、例えば起動時などにおいて、ブロック単位での読み出しを行って検索していく必要がある。この場合において、システム用セグメントについても原則通りに、512ブロックにより形成したとすると、SMAPの格納位置によっては、検索に多くの時間を要することとなってしまう。
そこで、本実施の形態のようにして、システム用セグメントとしては、512ブロックよりも少ない適切なブロック数を設定することとすれば、SMAPの検索時間としては短縮されることになる。
なお、ここでは、システム用セグメントを72ブロック分としているが、これはあくまでも一例である。システム用セグメントについては、上記した検索時間のほかに、システム用セグメントに格納すべき情報量と、これらの情報の更新頻度と、消去回数制限(寿命)とのバランス、その他考慮して、適切なブロック数を規定すればよい。
また、図2(a)に示すようにして、72ブロックによるシステム用セグメントを設けた場合においては、データ用セグメントとして物理的に最初に配置されるデータ用セグメント0については、ブロックアドレス72〜511までの440ブロックとなる。
つまり、システム用セグメントは、本来は、フラッシュメモリ2において物理的に先頭となる、ブロックアドレス0〜511までの512ブロック分のデータ用セグメント0から、前半72ブロックを割り当てて形成するものとしている。なお、残るデータ用セグメント1〜Mについては、原則通り512ブロック単位となる。
本実施の形態が対応するフラッシュメモリ全体は、セグメント容量が512ブロック単位であることに応じて、512ブロック×n(nは自然数)に相当する記憶容量とすることが通常である。そこで、上記のようにして、システム用セグメントとデータ用セグメント0とによって512ブロックのサイズとすることで、フラッシュメモリ全体において、システム用セグメント及びデータ用セグメントが効率よく収まるようにしている。
なお、このようにして512バイト単位の領域を、システム用セグメントとデータ用セグメント0とで分割した場合、例えばセグメント0のBMAPとしては、これに応じて、図6又は図7に示すBMAPの管理形態について変更することになる。例として、図6の場合であれば、図6(d)に示される物理ブロック管理情報は7ビットの情報領域を全て用いるのではなく、例えば物理アドレス72〜511までの領域を使用するようにされる。また、論理アドレスの範囲も、例えば72〜489までの範囲を使用するなど、0〜489より小さな範囲を設定することができる。
そして、システム用セグメントに格納されるSMAPは、例えば図8に示す構造を有する。
図8(a)に示すようにして、SMAPとしてもBMAPと同様にして1ページ分の情報とされ、例えば2048バイトのデータ部と64バイトの冗長部とを有する。そして、この図8(a)に示すSMAPとしてのページ構造において、データ部は、第0バイト〜第2047バイトまでの1バイト単位の列による構造としている。
そして、データ部の第0バイトから、必要なデータ容量に応じたバイト位置までの領域を、図8(b)に示すBMAP物理アドレステーブルとして使用する。
図8(b)に示されるBMAP物理アドレステーブルは、32ビット単位の列を、セグメント(データ用セグメント)数Mにより集めて配列するようにして形成される。そして、この32ビット単位の列ごとに、上位から順に、セグメント0〜Mまでのセグメント番号を割り当てるようにされる。つまり、これらの32ビットの単位の列の各々は、セグメントに対応付けられている。そして、図8(c)に示すようにして、32ビットの単位の列に対しては、対応付けられた番号のセグメントにおいてBMAPが格納されているブロックの物理アドレスを格納するようにされる。
このような構造を有するBMAP物理アドレステーブルを参照することで、例えばファイルシステムとしては、物理アドレスにより、各セグメント(データ用セグメント)においてBMAPが格納されるブロックを特定することが可能となる。
また、この場合のSMAPにおいては、システム用セグメントを成す物理アドレス0〜72の72ブロックについて管理する物理ブロック管理情報が設けられる。この場合の物理ブロック管理情報としては、図8(d)に示す不良ブロックビットマップと、図8(e)に示す書込済みブロックビットマップとの、2つのビットマップ形式の情報領域を設けることとしている。
図8(d)に示す不良ブロックビットマップは、図8(a)に示されるBMAPのデータ部において、BMAP物理アドレスに続く9バイト(72ビット)の領域となる。
この不良ブロックビットマップを形成する72ビットに対しては、先頭のビット位置から順に、1ビットごとに、物理アドレス0〜71を対応させる。つまり、不良ブロックビットマップを形成する72ビットの先頭ビットから最終ビットまでの各ビットが、物理アドレス0〜72により示される物理ブロックに対応するようにされる。そして、各ビットに対して0,1を格納することで、そのビット位置に対応する物理アドレスが示すブロックが不良であるか否かを示すようにされる。
また、図8(e)に示す書込済みブロックビットマップは、図8(a)に示されるBMAPのデータ部において、不良ブロックビットマップの領域に続く9バイト(72ビット)の領域となる。
このようにして512ビットとなる書込済みブロックビットマップとしても、先頭のビット位置から順に、1ビットごとに物理アドレス0〜71を対応させ、各ビットに対して0,1を格納することで、そのビット位置に対応する物理アドレスが示すブロックについて、データが書き込み済みの状態であるか否かを示すようにされる。
なお、システム管理情報テーブルとしては、各セグメントのBMAPを管理するためのものとされるので、予約ブロックアドレスを設ける必要はない。
また、このSMAPの構造としても、BMAPと同様にして、図示したものに限定されるべきものではなく、例えば各セグメントのBMAPのアドレス、システム用セグメント内の不良ブロック、及び書込済みブロックなどが管理可能とされる構造であれば、適宜変更されてよい。

8.データの書き込み(更新)処理手順。
8−1.ユーザデータの書き込み。

また、本実施の形態では、上記したSMAP、BMAPなどのページ単位の管理情報と、ユーザデータとしてのデータとで、異なるデータ書き込み(更新)の処理手順をとるようにされる。
先ず、ユーザデータの書き込み処理としては、先に図3により説明したブロック交替を伴ったものとなるのであるが、この書き込み処理についての具体的な手順例を図9により説明する。
図9(a)〜(d)の左側には、更新対象となるデータが書込済みになっているブロック(更新対象ブロック)が示されている。また、同じ図9(a)〜(d)の右側には、更新データを実際に書き込むものとして消去済みブロックのうちから新規に選択されたブロック(新規ブロック(書込対象ブロック))が示されている。
ここで、図9(a)は、更新処理前において、新規ブロックが決定された状態例を模式的に示している。ここでの更新対象ブロックとして示すように、更新前のデータとしては、Page0、Page1、Page nの3つのページ位置のデータから成るものとされる。また、この段階では、新規ブロックは消去済みの状態となっている。なお、上記更新前のデータを形成するPage1は、あくまでもPage0及びPage n以外の、更新前データを成すページ位置としての一例を示しているものであり、実際には、他のページのうちで、更新対象のページ以外の位置のページも更新前のデータ要素となり得るものである。
この状態から更新処理を実行したとすると、先ず、図9(b)に示すようにして、更新対象ブロックから、Page0、Page1のページ位置のデータを、新規ブロックにコピーするようにして書き込みを行う。このとき、更新対象ブロックのPage0、Page1のページ位置のデータは、新規ブロックに対しても、Page0、Page1のページ位置に対してそれぞれ書き込むようにされる。これらPage0、Page1のページ位置のデータは、次に説明する新規書込データを書き込むべきページ位置に対して前となるページ位置のデータ(前ページデータ)である。
そして、上記のようにして前ページデータを新規ブロックに対して書き込んだ後においては、図9(c)のPage a,Page bのページ位置のデータとして示すようにして、新規に追加して書き込むべきページデータである新規書込データを、Page1より下位の所要のページ位置に対して書き込むようにされる。
上記のようにして、新規書込データを書き込んだ後は、この新規書込データを書き込んだページ位置より下位のページ位置にコピーすべきページデータを、更新対象ブロックから新規ブロックにコピーするようにして書き込む。つまり、図9(d)に示すようにして、更新対象ブロックの最後のページ位置となるPage nのデータを、新規ブロックのPage nの位置に対して書き込むようにされる。
このような更新の手順は、新規ブロックに対する更新データの書き込み順としては、ページ番号の若いものから適宜順に行っているものとみることができる。従って、例えば実際の更新前のデータと新規書き込みデータの状態によっては、更新対象ブロックから新規ブロックへのページデータのコピー手順と、新規ブロックへの新規書込データの書き込み手順とが所要回数繰り返されることになるものである。
そして、図9の場合には、新規ブロックが図9(d)に示す状態となった段階で、新規ブロックに対する更新データの書き込みが完了したことになる。そして、この図9には示していないが、更新データの書き込みが終了した後の所定のタイミングで、図9の左側に示されている更新対象ブロックに書き込まれているデータについての消去が行われる。つまり、データ書き込みに伴うブロック交替が行われる。
上記のようにしてブロック交替が行われるのに応じては、図6又は図7に示したBMAPの内容についての更新が行われることになる。先ず、新規ブロックに対して更新データが書き込まれるのに応じて、論理−物理アドレス変換テーブル(図6(b)、図7(b))において、この更新データに対応する論理アドレスに対応する物理アドレスが、上記新規アドレスを示すようにして内容が変更される。
また、今回のブロック交替によって、上記更新対象ブロックについては、書込済みの状態から消去済みの状態に変化し、上記新規ブロックについては、消去済みの状態から書込済みの状態に変化したので、これに応じて、物理ブロック管理情報についても更新を行うようにされる。
図6の場合であれば、上記更新対象ブロックを示す物理アドレスのブロック情報領域(図6(e))の書込済みフラグについて、書込済みを示す値から消去済みを示す値に書き換えを行う。また、上記新規ブロックを示す物理アドレスのブロック情報領域の書込済みフラグについては、消去済みを示す値から書込済みを示す値に書き換えを行う。
また、図7の場合であれば、図7(e)に示す書込済ブロックビットマップを書き換えることになる。つまり、上記更新対象ブロックを示す物理アドレスのビット位置については、書込済みから消去済みを示すビット値に変更し、上記新規ブロックを示す物理アドレスのビット位置については、消去済みから書込済みを示す値に変更する。
また、本実施の形態としては、ブロック交替に伴い、図6(f)、図7(f)に示す予約ブロックアドレスについても変更すべきことになるのであるが、このことについては後述する。

8−2.管理情報(SMAP、BMAP)の書き込み。

続いては、SMAP、BMAPなどの管理情報の書き込み(更新)処理手順について、図10を参照して説明する。
これまでにも述べてきたように、フラッシュメモリは、データの消去単位はブロック単位であるが、書き込み単位はページ単位である。また、先に図6、図7、図8により説明しているように、SMAP、BMAPは1ページ単位のデータとしている。このことをふまえて、図10について説明する。また、図10の説明にあたっては、BMAPを更新する場合を例に挙げることとする。SMAPに関しても、ブロックに対する更新処理の手順そのものは、BMAPと同様である。
図10(a)には、更新前のブロックのデータ書き込み状態として、Page0,Page1の各ページ位置に対してデータが書き込み済みとされた状態が示される。これらのPage0,Page1のページ位置に書き込まれたデータは、それぞれ1つのBMAPとしての内容を有しており、このブロック内においては、Page0に書き込まれたデータが最も過去のBMAPとなっている。そして、次のページ位置であるPage1に書き込まれたデータがPage0のBMAPを交信した内容を有するBMAPとされ、この場合には、このPage1のBMAPが最新で有効なものとなっている。
そして、例えばユーザデータの更新が行われてブロック交替が行われることなどに応じて、BMAPを更新すべきときには、図10(b)に示すようにして、更新した内容のBMAPを、Page1に続く、Page2に対して新規に書き込んで記憶させる。
つまり、本実施の形態におけるBMAPの更新にあたっては、1つのブロックに対して、ページ番号の昇順に従って、順次、更新されたBMAPを1ページ単位で追記して埋めていくようにして書き込みを行っていくようにされる。このようにして更新を行っていくことによっては、例えばブロック内のページ数分の回数によるBMAPの書き込みを行った段階で、ブロックにおける全ページが書込済みの状態となる。この状態において、BMAPの更新が必要となったときに、ブロック交替を伴う更新が行われる。つまり、新規のブロックを用意して、この新規ブロックのPage0のページ位置に対して、更新されたBMAPを書き込むようにされる。また、更新前のBMAPが書き込まれていたブロックにつについてはデータを消去する。
このような更新処理とすることで、SMAP、BMAPについては、更新に伴うブロック交替は、ブロック内のページ数をMとすると、更新回数をM回行うごとに1回の頻度で行えばよいということになる。つまり、SMAP、BMAPを更新するのにあたり、ブロックに対するデータ消去は、M回の更新に対して1回しか実行されないので、それだけ、フラッシュメモリの寿命を長くすることができる。これまでの説明から理解されるように、管理情報であるSMAP、BMAPの更新頻度は高く、特にBMAPは、ユーザデータの更新が行われるたびに更新されるので、ユーザデータの平均的な更新頻度に対してこれら管理情報(特にBMAP)は頻繁に更新される。従って、上記のようにして、更新回数に対してブロック内データの消去回数が少ないことは、長寿命化について非常に有利となる。
また、図10に示した管理情報の更新処理手順とすることによっては、上記していることではあるが、管理情報のうちでも、SMAPに関しては、BMAPよりもさらに更新頻度そのものを少なくすることができる。
つまり、SMAPにおいては、図8(b)(c)に示されるBMAP物理アドレステーブルによりBMAPの所在を管理しているが、物理アドレスによりBMAPの所在を示していることから理解されるように、BMAP物理アドレステーブルでは、BMAPを格納しているブロックを示すのみにとどまっており、ページ単位までの管理を行っていない。これにより、SMAPにおけるBMAP物理アドレステーブルの更新は、ブロック交替を伴うBMAPの更新が行われるときにのみ対応して行われることになる。このことから、SMAPそのものの更新頻度としては、BMAPよりもはるかに少ないものとなることが分かる。
また、上記のようにして、SMAPにおけるBMAPの管理がブロック単位であるとしても、BMAPにアクセスするのにあたっては、短時間で済むようになっている。
つまり、BMAPにアクセスする手順としては、先ず、SMAPのBMAP物理アドレステーブルを参照して、最新の有効なBMAPが格納されているブロックを特定し、このブロックにアクセスする。
そして、先に図10により説明した管理情報の更新手順であれば、ブロック内における最新の有効なBMAPは、ブロック内において消去状態となっていない、データが書込済みとされたページのうち、必然的に最後のページ(データ最終書き込みページ)であることになる。そこで、BMAPを格納するブロックにアクセスした後は、そのブロック内の先頭ページからページ順に従って読み出しを行っていけば、最後には、データ最終書き込みページにアクセスできることとなり、有効なBMAPを取得することができる。規定によれば、ブロック内のページ数は、例えば多くても64程度であり、1ページは、例えば2112バイトなので、1セグメント(512のブロック)を対象として検索することと比較すればはるかに短時間で済み、また、処理負担も軽い。

9.処理動作。
9−1.データ書込処理。

続いては、本実施の形態の半導体記憶装置1が実行するデータ(ユーザデータ)の書込処理について、データ処理部3が実行すべき処理として、図11に示すフローチャートにより説明する。先に図1において説明したように、データ処理部3は、マイクロコンピュータとして構成されるものであり、従って、図11に示す処理は、データ処理部3としてのマイクロコンピュータにおいて、CPUがROMなどに記憶されたプログラムを実行することで実行されるものとなる。この点については、後述する図12、図13に示される処理についても同様である。
また、図11に示す処理を実行するのにあたって必要なBMAPは、半導体記憶装置1のフラッシュメモリ2に対するアクセスを完了しており、例えばデータ処理部3の内部RAMに保持している状態にあるものとされる。
先ず、データ処理部3が、或るブロックのデータを更新するときには、ステップS101の処理として示すようにして、例えば上記内部RAMに保持されているBMAPの論理−物理アドレス変換テーブル(図6(b)、図7(b))を参照することで、現在更新対象となっているブロックの物理アドレスを取得するようにされる。
また、次のステップS102により、同じBMAPから、予約ブロックアドレス(図6(f)、図7(f))を読み出して取得する。
予約ブロックアドレスは、後の中断判定のために使用される管理情報項目であって、次回のデータの更新におけるブロック交替にあたり、新規ブロック(図9参照)として使用すべきブロックを物理アドレスにより示す。
上記ステップS102の処理によりBMAPから取得された予約ブロックアドレスの値は、今回のデータ更新の前となる、最後のデータ更新のときに設定されたものである。従って、ステップS102の処理により取得した予約ブロックアドレスが示すブロックが、今回の更新における新規ブロックであることになる。そこで、ステップS103においては、この予約ブロックアドレスが示す物理アドレスを、今回の新規ブロックの物理アドレスとして決定するようにされる。
また、次のステップS104においては、例えば内部RAM上のBMAPにおける物理ブロック管理情報を利用するなどして、現在消去済み状態であるブロックのうちから、所定規則に従って新規の予約ブロックを決定する。
例えば図6のBMAPの場合であれば、図6(d)に示す物理ブロック管理テーブルにおいて、物理アドレスごとに対応する9ビット列単位の情報から書込済みフラグ(図6(e))を参照することで、現在消去済み状態のブロックを特定できる。そして、これらの消去済み状態のブロックのうちから所定規則に従って新規の予約ブロックを決定するようにされる。
また、図7の場合であれば、図7(e)に示す書込済ブロックビットマップを参照することで、上記と同様にして現在消去済み状態のブロックを特定して、所定規則に従って新規の予約ブロックを決定することができる。
そして、次のステップS105では、上記ステップS104での決定結果が反映されるようにして、新規の予約ブロックアドレスを設定する。具体的には、内部RAMに保持したBMAPの構造における予約ブロックアドレスの領域に対して、上記ステップS104により決定された新規の予約ブロックの物理アドレスを上書きするようにして書き込むようにされる。
なお、確認のために述べておくと、この段階では、フラッシュメモリ側のBMAPにおいては、新規の予約ブロックアドレスについての設定(書き込み)は未だ行われていない。
次のステップS106においては、更新対象ブロックに書き込まれているページデータのうちから、図9(b)にて説明したように、前ページデータを新規ブロックに対してコピーするようにして書き込むための処理を実行する。
また、続くステップS107においては、図9(c)にて説明したように、新規書き込みデータをページ単位で新規ブロックに書き込むための処理を実行する。
また、続くステップS108においては、図9(d)にて説明したように、更新対象ブロックに書き込まれている後ページデータを、新規ブロックに対してコピーするようにし書き込むための処理を実行する。
なお、上記ステップS106〜S108の処理は、説明を分かりやすいものとするために、図9に対応させた具体的な処理の流れに対応させている。しかしながら、実際における新規ブロックに対するデータ書き込み処理としては、ページ番号の若い順に、適宜、更新対象ブロックからのページデータのコピーによる書き込みと、新規書込データとしてのページデータの書き込みとを実行するようにされており、実際の処理動作としても、このようなページデータ単位での書き込みが実行されるようにプログラムが構成される。
そして、上記ステップS108までの処理によって、新規ブロックに対して更新データの書き込みが終了したとされると、次のステップS109により、これまで更新対象ブロックとして扱われていたブロックに書き込まれていたデータを消去するための処理を実行する。この段階で、フラッシュメモリ2上における、データ更新に伴う物理的なブロック交替については完了したことになる。
次のステップS110においては、上記したデータ更新結果が反映されるようにして、内部RAM上に保持されているBMAPについての内容の更新を行う。つまり、図9の説明にあたって述べたようにして、論理−物理アドレス変換テーブル、及び物理ブロック管理情報について、今回のデータ更新に伴うブロック交替の結果などが示されるようにして内容を変更する。また、このときの内部RAM上のBMAPにおける予約ブロックアドレスの領域には、先のステップS105の処理によって、既に次回のデータ更新のときに参照されるべき予約ブロックの物理アドレスが格納された状態にある。
そして、次のステップS111において、上記ステップS110の処理によって更新された内部RAMのBMAPのデータを、フラッシュメモリ2に転送して書き込むための制御処理を実行する。このときには、フラッシュメモリ2に対しては、図10により説明した処理手順によるBMAPの書き込み(更新)が実行されることになる。
このステップS111による処理が完了した段階で、フラッシュメモリ2におけるBMAPは、そのセグメントにおける現在の物理的なデータ書き込み状態と整合した内容に更新された状態で保存されたことになる。
ここで、上記図11に示したデータ書き込み処理においては、ステップS104、S105の処理により新規の予約ブロックアドレスを選択設定している。また、ステップS111においてBMAPをフラッシュメモリ2に書き込んで保存する処理は、中断判定に使用する情報である上記予約ブロックアドレスをフラッシュメモリ2に書き込んで記憶させている処理であるとみることもできる。つまり、これらの処理は、本明細書でいう、中断判定準備処理となるものである。

9−2.中断判定処理。

続いては、本実施の形態における中断判定処理について図12を参照して説明する。ここでいう中断判定とは、先にも説明したように、フラッシュメモリ2に対する最後のデータ書き込み処理が中断されたか否かについての判定を行うことであり、本実施の形態の半導体記憶装置1の起動時において実行される。
なお、半導体記憶装置1が起動するときとは、例えば、電源が投入されて動作中にあるホストシステム10に対して半導体記憶装置1が装填された場合を挙げることができる。また、動作停止中のホストシステム10に対して半導体記憶装置1が装填された状態において、ホストシステム10に対する電源が供給されるなどして動作を開始した場合にも、これに応じて、半導体記憶装置1が起動することになる。
この中断判定のための処理としては、先ず、ステップS201に示すようにして、BMAPのアドレスを取得するようにされる。このためには、先ず、フラッシュメモリ2のシステム用セグメントに対してアクセスしてSMAPを検索する。そして、検索したSMAPをフラッシュメモリ2から読み出して、内部RAMに書き込んで保持するようにされる。そして、この内部RAMに保持したSMAPのBMAP物理アドレステーブルを参照して、中断判定対象のセグメントについてのBMAPが格納されるブロックの物理アドレスを取得するようにされる。
次のステップS202においては、上記ステップS201により取得したBMAPの物理アドレスが示すフラッシュメモリ2上のブロックにおける、最終書き込みページに対してアクセスする。これにより、最新の有効なBMAPのページにアクセスできたことになる。BMAPを格納するブロックにおいては、最終書き込みページが最新の有効なBMAPを格納していることは、図10にて説明したとおりである。
そして、次のステップS203においては、上記ステップS202によりアクセスしたBMAPをフラッシュメモリ2から読み出して、例えば内部RAMに書き込んで保持する。
ステップ204では、上記ステップS203により内部RAMに保持されたBMAPの構造のなかから予約ブロックアドレスを取得する。そして、続くステップS205により、この取得した予約ブロックアドレスが示すフラッシュメモリ上のブロック(物理ブロック)に対してアクセスし、さらに次のステップS206により、このアクセスしたブロックに対する読み込みを行って、現在におけるこのブロックのデータ内容を認識する。
そして、次のステップS207においては、上記ステップS206の認識結果に従って、このアクセスした予約ブロックのデータ書き込み状態が消去済みの状態であるか否かについて判別する。
例えば、今回の起動時までにおいて最後となる過去のデータ書き込み(更新)処理について、特に中断されることなく正常に終了した場合、つまり、図11に示した処理を正常に実行してデータ書き込み処理を終了した場合のことを考えてみる。この場合には、図11のステップS111の処理が遂行されたことで、フラッシュメモリ2のBMAPの予約ブロックアドレスには、消去済みのブロックとして登録されているブロックのうちから選択した1つのブロックの物理アドレスが格納されていることになる。従って、フラッシュメモリ2のBMAPの予約ブロックアドレスが示すブロックは、消去済みであるべきことになる。このことから、上記ステップS207において、アクセスした予約ブロックのデータが消去済みの状態であるとして肯定の判別結果が得られた場合には、最後のデータ書き込み(更新)は正常に終了していると判断してよいことになる。つまり、フラッシュメモリ2に記憶されているBMAPは、そのセグメントのデータ記録状態と整合しており正常であるということになる。この場合には、図12に示す中断判定の処理を抜け、例えば他の所要の起動処理などを実行するようにすればよい。
これに対して、例えば図11のステップS106以降の、実際に新規ブロックに対してデータを書き込む処理を開始した後において、データ書き込み処理が中断されたものとする。
この場合、ステップS111による、フラッシュメモリ上のBMAPの更新は行われない、あるいは行われていたとしても不完全であるので、フラッシュメモリ2のBMAPは、このデータ書き込みの1つ前のデータ書き込みに対応した内容が残っている状態であると考えてよい。従って、このBMAPの予約ブロックアドレスが示すブロックは、最後の中断されたデータ書き込み処理のときに、新規ブロックとして選択されて、不完全なかたちで更新データが書き込まれている状態のブロックであることになる。
このことから、ステップS207において、アクセスした予約ブロックのデータが消去済みではなく、何らかのデータが書込済みの状態であるとして否定の判別結果が得られた場合には、最後のデータ書き込み処理は中断されたと判定してよいことになる。そこで、この場合には、ステップS208に進んで、このBMAPの再構築の処理を実行してから、この図に示す処理を終了するようにされる。
なお、フラッシュメモリ2において複数のセグメント(データ用セグメント)が存在する場合において、例えば起動時に、これら複数のセグメントごとに対応する中断判定を全て行うとする場合は、例えばステップS201において、各セグメントごとのBMAPのアドレスを取得したうえで、以降は、セグメントごとに、ステップS202〜S208により説明した処理を繰り返し実行するようにすればよい。

9−3.BMAP再構築処理。

図13のフローチャートは、上記図12のステップS208の処理となる、BMAPの再構築処理を示している。
BMAPの再構築処理としては、先ず、ステップS301により現在において内部RAMに保持しているBMAPを破棄し、次のステップS302の処理によって、現在の処理対象セグメント(現セグメント)内の全ブロックが消去済み状態であることを示す内容のBMAPを生成する。
そして、次のステップS303においては、現セグメント内のブロックの物理アドレス範囲の値をとる変数nについて初期値を設定する。ここでの初期値は、上記物理アドレス範囲のなかで最も小さい物理アドレスの値とする。例えば、図5に示したセグメント構成のもとで、現セグメントがセグメント0であるとすればn=0となり、セグメント1であるとすればn=512となる。
続くステップS304においては、フラッシュメモリ2から、物理アドレスnにより示されるブロックにアクセスして、このブロックに対する読み出しを実行する。
ここで、ブロックを形成するページの冗長部によっては、所定構造により、そのブロックについての各種の状態などを示す管理情報(ブロック内管理情報)が形成される。ステップS305においては、上記ステップS304により読み出したブロックからブロック内管理情報を取得するための処理を実行する。
ステップS306においては、上記ステップS205により取得したブロック内管理情報の内容から、このブロックについての状態について判別する。
判別結果として、不良ブロックであることが判別された場合には、ステップS307の処理により、このブロックを不良ブロックとしてBMAPの物理ブロック管理情報(図6(d)(e)、図7(d))に登録する。
また、ブロック内管理情報の内容から消去済みであることが判別された場合、あるいはブロック内管理情報の内容からでは状態判定が不可能である結果、不明として判定された場合には、ステップS308の処理により、このブロックを消去済みブロックとしてBMAPの物理ブロック管理情報(図6(d)(e)、図7(e))に登録する。
また、書込済みであることが判別された場合には、ステップS309の処理により、このブロックを論理−物理アドレス変換テーブル(図6(b)、図7(b))に対して登録する。
ここで、ブロック内管理情報には、現物理ブロックに対応付けられる論理アドレスの情報も含まれている。このステップS309の登録処理にあたっては、このブロック内管理情報において示される論理アドレスの情報を使用する。つまり、論理−物理アドレス変換テーブルにおいて、ブロック内管理情報において示される論理アドレスが対応付けられた9ビットの領域に対して、現在の物理アドレスnの値を格納する。
上記ステップS307,S308,S309の処理を終了した後は、ステップS310において、現在設定されている変数nが最大値であるか否かについて判別する。例えば現セグメントが、図5のセグメント0であれば、変数nの最大値は、セグメント0における最後の物理アドレスである511となり、セグメント1であれば、変数nの最大値は、1023となる。
このステップS310において、変数nは最大値ではないとして否定の判定結果が得られた場合には、ステップS311において変数nについて1インクリメントしたうえで、ステップS304の処理に戻るようにされる。これにより、上記もしているように、現セグメント内の全ブロックの各々について、ステップS304〜ステップS310の処理を実行するようにされる。
また、例えば何らかのエラーなどの原因によって、ステップS304〜ステップS310の処理を繰り返し実行している過程において、ステップS306→S309の処理を実行することとなったときに、論理−物理アドレス変換テーブルにおいて、現在の処理対象ブロックのブロック内管理情報が示す論理アドレスに対して、既に、物理アドレスが登録されている状況となる場合がある。
このような場合には、これらの重複したブロック間で、所定規則に従ったマージ処理、あるいはブロックの選択処理を実行することで整合をとるようにされる。このマージ処理又はブロック選択処理の結果、論理−物理アドレス変換テーブルの登録から外すべきこととなったブロックについては、データの消去を実行したうえで、消去済みブロックとして登録するようにされる。
そして、現セグメント内における全てのブロックについての処理を終了したことで、ステップS310において肯定の判別結果が得られたとされると、ステップS312に進んで、予約ブロックを決定したうえで、内部RAM上のBMAPに対して予約ブロックアドレスを登録するようにされる。この処理を終了した段階で、内部RAM上のBMAPについては、実際のセグメント内でのブロックのデータ書き込み状態に応じて整合がとれているとともに、予約ブロックアドレスも適正に格納された正常な内容に復帰していることになる。つまり、BMAPの再構築処理のシーケンスにおいても、上記ステップS312及びS313により、中断判定準備処理を行うようにされている。
そして、ステップS313の処理により、上記のようにして内容復帰されたRAM上のBMAPを、フラッシュメモリ2における該当セグメント内の所要のブロックに書き込むことで保存を行うようにされる。
例えば、ブロック内管理情報としては、現ブロックがBMAPであれば、このことを示す情報が格納されている。従って、現セグメントにおける全ブロックについてステップS304〜ステップS309の処理を終了させた段階では、どのアドレスのブロックがBMAPであるのかを認識できていることになる。そこで、ステップS313としては、このBMAPが格納されているブロックを対象として、例えば先に図10により説明したようにして更新処理を実行するようにされる。

10.他の中断判定のための構成。

ここで、本実施の形態との比較として、本実施の形態以前において採られていた中断判定の構成の一例を、図14により説明しておく。
図14のフローチャートは、本実施の形態以外の他の中断判定に対応する、データ書き込み(更新)のための処理の流れを示している。
この場合には、先ず、ステップS401として示すように、内部RAM上に保持されるBMAPから更新対象ブロックの物理アドレスを取得する。この処理は、図11のステップS101と同様となる。また、次のステップS402においては、同じ内部RAM上に保持されるBMAPを参照して、このBMAPが管理する消去済みブロックのうちから新規ブロックを選択する。
この場合のBMAPとしては、新規ブロックについての状態として、少なくとも、書込済み、若しくは書き込み中であるのかを示す状態フラグを格納する領域を所定位置に設けることが定義されている。
ステップS403では、以降において新規ブロックに対してデータを書き込むのに応じて、上記状態フラグについて、先に、書き込み中を示す値を設定するようにされる。そして、この場合には、ステップS404により、いったん、内部RAM上に保持しているBMAPを、フラッシュメモリ2に転送して書き込んで(更新して)保存する。この保存処理は、フラッシュメモリ2が不揮発性であることを利用して、データ書き込みが中断されたとしても、ステップS403にて設定した書き込み中の状態フラグが残り、正しい中断判定結果が得られるようにすることを目的として行われる。
そして、次のステップS405及びステップS406により、例えば先に図9などにより説明した新規ブロックへのデータ書き込み手順と、更新対象ブロックのデータ消去の手順を含む、ブロック交替を伴うデータの書き込み(更新)処理を実行するようにされる。
次のステップS407では、上記ステップS405及びS406のデータ更新結果が反映されるようにして、内部RAM上のBMAPについての更新を行う。また、この場合には、このステップS407によるBMAPの更新にあたり、書き込み中が設定されていた上記状態フラグについて、書込済みを示す値に変更設定する。
そのうえで、ステップS408により、この内部RAM上のBMAPのデータをフラッシュメモリ2に転送して書き込んで保存させるための制御を実行する。
この場合の中断判定としては、例えば起動時において、フラッシュメモリのBMAPに保存されている新規ブロックの状態フラグを参照するようにされる。
例えば上記図14に示した手順であれば、最後のデータの書き込みが正常に終了していた場合には、上記状態フラグは、書込済みであることを示していることになる。従って、状態フラグを参照した結果、状態フラグが書込済みであることを示していれば、最後のデータ書き込みは正常に実行されたと判定することができる。これに対して、ステップS405以降の処理を開始して、ステップS408のBMAPの保存処理が終了するまでの間に、データ書き込み処理が中断されたとすると、ステップS408の処理が正常に完了しなかったのであるから、上記のようにして参照した状態フラグは、書き込み中(あるいは書き込み済みでもない不明の状態もあり得る)を示していることとなる。これにより、最後のデータ書き込み処理は中断されたと判定することができる。
このようにして、図14に示す処理手順を含む構成によっても、中断判定は可能である。しかしながら図14に示す処理手順では、データ書き込み処理が中断したときには、フラッシュメモリ2のBMAP上で、状態フラグが書き込み中を示していることができるようにすることを目的として、データの更新前において、ステップS404により、BMAPを一時保存している。このために、図14に示すデータ更新処理全体としては、フラッシュメモリ2に対するBMAPの保存を、上記ステップS404による暫定保存と、ステップS408による本登録保存との2回行う必要がある。
これに対して、本実施の形態の中断判定のための情報(予約ブロックアドレス)は、上記のようにして新規ブロックに対するデータ書き込みの現在状態を示すものではなく、次回のデータ書き込み処理において新規ブロックとして使用すべき消去済みブロックを示す機能を持つものである。このために、本実施の形態としては、データ書き込み処理全体における、フラッシュメモリ2への中断判定のための情報の保存、つまり、予約ブロックアドレスを格納するBMAPの保存は、同じ図11に示すようにして、本登録保存となるステップS111の1回のみとなる。
このようにして、データ書き込み処理にあたってのフラッシュメモリ2に対する管理情報(BMAP)の保存回数が削減されることで、先ずは、1ブロックあたりのデータ書き込み処理におけるフラッシュメモリに対するアクセス回数も削減されることとなって、その分、データ書き込み処理の開始から終了までの時間が短縮される。つまり、見かけ上のデータ書き込み速度が高速化されることになる。
また、これまでの説明から理解されるように、フラッシュメモリ2に対するデータ書き込み回数が少なくなるのに応じては、その分、フラッシュメモリ2の寿命を延ばすことにも成る。そして、特にBMAPなどは更新頻度が高いデータの範疇であるから、フラッシュメモリ2の長寿命化に関しては特に効果が高い。
このようにして、本実施の形態による中断判定の構成としては、データ書き込み処理の速度や半導体メモリ素子の寿命などの点で、これまでよりも効率的になっているものである。
なお、本発明としては、上記した構成に限定されるべきものではない。
例えば本実施の形態における領域特定情報としては、予約ブロックとしての物理アドレスを直接示す内容となっている、しかしながら、例えば、BMAPの構造その他の事情に応じては、領域特定情報によっては、予約ブロックの物理アドレスを直接的に示すものではなく、先ず、他の所定の情報項目であったり、他のアドレスなどを示し、この示された対象から辿っていくことで、予約ブロックが特定されるような仕組みとしてもよいものである。
また、これまでにも述べてきているように、各図に示したフラッシュメモリの物理フォーマット及びBMAP、SMAPなどのデータ構造などは適宜変更されてよい。
また、本実施の形態の半導体記憶装置としては、内部の半導体メモリ素子としてフラッシュメモリを備えているが、例えばフラッシュメモリにおけるブロックのようにデータ消去単位に対応する物理的メモリ領域の交替を伴ってデータ書き込みが行われる半導体メモリ素子であれば、フラッシュメモリ以外を備える構成としてもかまわない。
本発明の実施の形態としての半導体記憶装置の内部構成例を示すブロック図である。 実施の形態の半導体記憶装置が備えるフラッシュメモリの物理構造を示す図である。 実施の形態のフラッシュメモリに対するデータ更新処理(ブロック交替処理)と、論理アドレス及び物理アドレスの概念を示す図である。 論理−物理アドレス変換テーブルの構造を概念的に示す図である。 フラッシュメモリが複数のセグメントにより分割される場合の物理ブロック(物理アドレス)の範囲と論理アドレス範囲との対応関係を示す図である。 論理−物理アドレス変換テーブルを含む管理情報(BMAP)のデータ構造例を示す図である。 BMAPのデータ構造の他の例を示す図である。 BMAPを管理するシステム管理情報テーブル(SMAP)のデータ構造例を示す図である。 ブロック交替を伴うデータ更新例を模式的に示す図である。 ブロックに対する管理情報(SMAP,BMAP)の更新例を示す図である。 実施の形態のデータ書き込み(更新)のための処理動作を示すフローチャートである。 本実施の形態の中断判定処理を示すフローチャートである。 中断判定後のBMAPの再構築処理を示すフローチャートである。 実施の形態以外のデータ書き込み(更新)のための処理手順を示すフローチャートである。
符号の説明
1 半導体記憶装置、2 フラッシュメモリ、3 データ処理部、4 通信処理部、10 ホストシステム

Claims (4)

  1. データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手段と、
    上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手段と、
    上記単位領域交替処理が終了した後において、上記情報生成手段により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手段と、
    上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手段が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手段と、
    最後の上記単位領域交替処理の開始から上記情報書込手段の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手段と、
    を備えることを特徴とするメモリ制御装置。
  2. 上記記憶領域においては、少なくとも、上記記憶領域におけるデータ書き込み状態を上記消去単位領域により管理するための管理情報が書き込まれており、
    上記情報書込手段は、上記管理情報における所定位置に対して上記領域特定情報を格納させて書き込むようにされていることを特徴とする請求項1に記載のメモリ制御装置。
  3. データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順と、
    上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手順と、
    上記単位領域交替処理が終了した後において、上記情報生成手順により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手順と、
    上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手順が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手順と、
    最後の上記単位領域交替処理の開始から上記情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順と、
    を実行することを特徴とするメモリ制御方法。
  4. データ消去の最小単位となる消去単位領域により記憶領域が分割されるメモリに対する物理的なデータ更新処理として、少なくとも、消去済み状態の上記消去単位領域のうちから決定された書込対象消去単位領域に対して更新データを書き込む処理と、更新の対象となる更新対象データが書き込まれていた更新対象消去単位領域から、この更新対象データを消去する処理とによる単位領域交替処理を実行するデータ更新手順と、
    上記単位領域交替処理が実行されるときに応じて、次回の単位領域交替処理において上記書込対象消去単位領域として決定されるべき、消去済み状態の上記消去単位領域を特定するための領域特定情報を生成する情報生成手順と、
    上記単位領域交替処理が終了した後において、上記情報生成手順により生成された領域特定情報を、上記メモリに対して物理的に書き込むための処理を実行する情報書込手順と、
    上記メモリに書き込まれているとされる上記領域特定情報により特定した消去単位領域を、上記データ更新手順が実行する今回の単位領域交替処理において使用すべき上記書込対象消去単位領域として決定する領域決定手順と、
    最後の上記単位領域交替処理の開始から上記情報書込手順の処理が終了するまでの過程において中断が生じたか否かについての判定を行うのにあたり、現在の上記メモリに書き込まれている上記領域特定情報により特定される消去単位領域の状態として、データが消去済みの状態であるか否かについて判別するようにされた中断判定手順と、
    をメモリ制御装置に実行させるプログラム。
JP2004268300A 2004-09-15 2004-09-15 メモリ制御装置、メモリ制御方法、プログラム Expired - Fee Related JP4586469B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004268300A JP4586469B2 (ja) 2004-09-15 2004-09-15 メモリ制御装置、メモリ制御方法、プログラム
US11/220,040 US8060684B2 (en) 2004-09-15 2005-09-06 Memory control apparatus, memory control method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004268300A JP4586469B2 (ja) 2004-09-15 2004-09-15 メモリ制御装置、メモリ制御方法、プログラム

Publications (3)

Publication Number Publication Date
JP2006085342A JP2006085342A (ja) 2006-03-30
JP2006085342A5 JP2006085342A5 (ja) 2007-06-28
JP4586469B2 true JP4586469B2 (ja) 2010-11-24

Family

ID=36035424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004268300A Expired - Fee Related JP4586469B2 (ja) 2004-09-15 2004-09-15 メモリ制御装置、メモリ制御方法、プログラム

Country Status (2)

Country Link
US (1) US8060684B2 (ja)
JP (1) JP4586469B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
JP2007241539A (ja) * 2006-03-07 2007-09-20 Hitachi Systems & Services Ltd 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置
KR100845137B1 (ko) * 2006-10-02 2008-07-09 삼성전자주식회사 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
KR101497074B1 (ko) * 2008-06-17 2015-03-05 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
JP2010044504A (ja) * 2008-08-11 2010-02-25 Hitachi Cable Ltd フラッシュメモリを用いた装置及びそのフラッシュメモリへのデータの書き込み方法
JP5540969B2 (ja) * 2009-09-11 2014-07-02 ソニー株式会社 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
US20120166686A1 (en) * 2010-12-22 2012-06-28 Joerg Hartung Method, apparatus and system for aggregating interrupts of a data transfer
JP5643708B2 (ja) * 2011-03-30 2014-12-17 株式会社ケーヒン 電子制御装置
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US20130227238A1 (en) * 2012-02-28 2013-08-29 Thomas VIJVERBERG Device and method for a time and space partitioned based operating system on a multi-core processor
JP6075456B2 (ja) * 2013-09-20 2017-02-08 富士通株式会社 情報処理方法、情報処理装置、メモリコントローラ及びメモリ
CN104657192A (zh) * 2013-11-20 2015-05-27 上海华虹集成电路有限责任公司 在仿真器上模拟flash的方法
US10593412B2 (en) 2018-07-19 2020-03-17 Micron Technology, Inc. Using a status indicator in a memory sub-system to detect an event

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051883A (ja) * 1999-08-12 2001-02-23 Nec Corp 不揮発性メモリにおける自己修復方法および不揮発性メモリ装置
JP2002169729A (ja) * 2000-12-04 2002-06-14 Toshiba Corp 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
JP2002278850A (ja) * 2001-03-14 2002-09-27 Nec Corp 半導体装置
JP2002318733A (ja) * 2001-04-20 2002-10-31 Matsushita Electric Works Ltd ブロック消去型記憶媒体の管理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581723A (en) * 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US6795890B1 (en) * 1999-02-19 2004-09-21 Mitsubishi Denki Kabushiki Kaisha Data storage method, and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6675281B1 (en) * 2002-01-22 2004-01-06 Icreate Technologies Corporation Distributed mapping scheme for mass storage system
KR100526178B1 (ko) * 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051883A (ja) * 1999-08-12 2001-02-23 Nec Corp 不揮発性メモリにおける自己修復方法および不揮発性メモリ装置
JP2002169729A (ja) * 2000-12-04 2002-06-14 Toshiba Corp 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
JP2002278850A (ja) * 2001-03-14 2002-09-27 Nec Corp 半導体装置
JP2002318733A (ja) * 2001-04-20 2002-10-31 Matsushita Electric Works Ltd ブロック消去型記憶媒体の管理装置

Also Published As

Publication number Publication date
JP2006085342A (ja) 2006-03-30
US20060059297A1 (en) 2006-03-16
US8060684B2 (en) 2011-11-15

Similar Documents

Publication Publication Date Title
JP4418439B2 (ja) 不揮発性記憶装置およびそのデータ書込み方法
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
JP5035636B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
JP4586469B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
JP4356686B2 (ja) メモリ装置及びメモリ制御方法
US7702846B2 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
US20080082773A1 (en) Systems for Managing File Allocation Table Information
US8775758B2 (en) Memory device and method for performing a write-abort-safe firmware update
JP2003196142A (ja) ライトワンス型メモリ装置及びファイル管理方法
JP2006350430A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4665539B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
JP6123766B2 (ja) データ読み出し装置、プログラムおよびデータ読み出し方法
JPWO2006011186A1 (ja) コントローラ、データ記憶システム、データ書き換え方法及びコンピュータプログラムプロダクト
JP5057887B2 (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
JP2008305061A (ja) メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
US20050149493A1 (en) Data recording apparatus and data recording method
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
JP2013033338A (ja) メモリシステム
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP2013045285A (ja) 情報処理装置、画像形成装置およびプログラム
JP6864228B2 (ja) 記憶装置および記憶装置のデータ管理方法
JP2006260158A (ja) 情報処理装置、情報処理方法、プログラム
JP2000330850A (ja) フラッシュメモリ制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070515

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100805

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: 20100810

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100823

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees