JP2007280108A - 記憶媒体制御装置、記憶媒体制御方法、プログラム - Google Patents
記憶媒体制御装置、記憶媒体制御方法、プログラム Download PDFInfo
- Publication number
- JP2007280108A JP2007280108A JP2006106426A JP2006106426A JP2007280108A JP 2007280108 A JP2007280108 A JP 2007280108A JP 2006106426 A JP2006106426 A JP 2006106426A JP 2006106426 A JP2006106426 A JP 2006106426A JP 2007280108 A JP2007280108 A JP 2007280108A
- Authority
- JP
- Japan
- Prior art keywords
- data
- unit area
- block
- writing
- page
- 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
Landscapes
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
【解決手段】データ書き込みにあっては、ブロック交替を行わずに、書き込むべきデータをページ単位で追記していく。これとともに、ページデータの論理的な位置が分かるように、論理ページアドレスを定義して、ページデータごとに格納しておく。そして、元のブロックの空きページが無くなった場合には、この元のブロック(オリジナルブロック)と同じLBAを付した追加ブロックを作成し、この追加ブロックに対してページ単位による追記を行っていくようにする。追加ブロックにはオリジナルブロックと同じLBAを持たせる。このような構成により、例えばページデータを書き込むごとにブロック交替処理を行う必要が無くなる。
【選択図】図9
Description
周知のようにして、フラッシュメモリは、その特性上、データの上書きは不可であり、消去されている状態から書き込みを行うことが要求される。また、データの消去は、フラッシュメモリとしての記憶領域を所定サイズに分割したブロックといわれる物理的な記憶領域単位を最小単位として行われ、データの書き込みは、ブロックをさらに所定サイズに分割したページといわれる記憶領域単位を最小単位として行われる。さらに、1ブロック内におけるページに対する書き込みは、例えば先頭ページからのアドレス(物理ページアドレス)順に従った書き込みのみに制限され、例えば、アドレスを飛び越したランダムアクセス的な書き込みはできないこととなっている。このために、データの書き込み(更新)は次のようにして行われる。
つまり、データを更新するときには、更新前のデータが書き込まれていたブロックに再度書き込むことはせずに、他の消去状態にあるブロックを選択して書き込みを行うようにされる(ブロック交替処理)。
そこで、フラッシュメモリを対象としたときのデータ書き込み速度の向上を図るための構成が以前より提案されている。例えば特許文献1には、ページデータの書き込み要求に応じては、ブロックに対して物理ページアドレス順に従って順次書き込みを実行していくようにしたうえで、論理的なデータの連続性は、ページデータごとに論理ページアドレスを付与することで保証できるようにした構成が記載されている。
つまり、記憶媒体の記憶領域を所定の固定長により区切るようにして形成されるデータ消去の最小単位となる第1単位領域の物理アドレスである第1物理アドレスと、この第1単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第1論理アドレスとの対応を示すアドレス対応情報を管理するアドレス対応情報管理手段と、第1単位領域を所定の固定長により区切るようにして形成されるデータ書き込みの最小単位となる第2単位領域の物理アドレスである第2物理アドレスの順に従ってデータを書き込んでいく書き込み処理と、第2単位領域に書き込まれたデータごとについて、第2単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第2論理アドレスを対応付けておくようにするアドレス設定処理とを実行するデータ書き込み実行手段と、このデータ書き込み実行手段によりデータ書き込みを実行すべきときにおいて、データが書き込まれるべき本来の第1単位領域についてのデータの書き込みが禁止となる所定の条件を満たしている場合には、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対してデータ書き込み実行手段によるデータ書き込みを実行させるデータ書き込み制御手段と、追加用第1単位領域について、対応する本来の第1単位領域と同じ第1論理アドレスが対応付けられて管理されるようにする追加用第1単位領域管理手段とを備えることとした。
そのうえで、第1単位領域については物理アドレスを対応させたうえで、第1単位領域に書き込まれるべきデータに対応付けられる論理アドレスを規定して、この論理アドレスと物理アドレスとの対応を示す論理−物理アドレス対応情報を構築して管理しておくようにされる。
また、データの書き込みについては、第2単位領域ごとに実行可能とされており、その手順としては、第2単位領域に対応する第2物理アドレスの順に従って書き込みを行っていくようにされる。このことは、更新のためのデータを書き込むような状況では、更新前のデータが第2物理アドレス順的に前の第2単位領域において残っているとしても、更新のためのデータが未使用の第2単位領域に書き込まれる結果となることを意味している。
そして、本願発明にあっては、データが書き込まれるべき本来の第1単位領域についてのデータの書き込みが禁止である場合には、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対して、本来の第1単位領域に書き込むべきであったデータを書き込んでいくようにされる。そして、このようにして作成された追加用第1単位領域については、対応する本来の第1単位領域と同じ第1論理アドレスが対応付けられるようにされる。
このような構成によれば、先ず、本来の第1単位領域において未使用の第2単位領域が存在する限りは、この領域に対してデータを追加するようにして書き込んでいくことができる。換言すれば、例えば第2単位領域1つ分のデータを書き込むために、第1単位領域そのものを対象とするデータ消去とデータ書き込みを行う必要がない。そのうえで、本来の第1単位領域に対してデータを書き込むことができない(禁止)状況である場合には、追加用第1単位領域に対してデータ記録を行っていくことができる。このことは、本来であれば1つの第1単位領域を対象とするデータ書き込みに対応して、「本来の第1単位領域」と、「必要数の追加用第1単位領域」の領域とを併せて得られる領域が使用可能になる、ということを意味している。
この図において、制御部11は、携帯型コンテンツプレーヤ1における各種制御を実行する部位とされる。この制御部11の実際的なハードウェア構成としては、例えばCPU(Central Processing Unit)から成るものとされる。つまり、制御部11としてのCPUは、後述する記憶部14(あるいはROM12であってもよい)に記憶されたプログラムを、例えばRAM13に展開して実行することで、所要の各種の制御処理を実現することになる。
RAM13は、上記のようにして制御部11が実行すべきプログラムのデータが展開されるとともに、制御部11がプログラムに従って実行する各種演算のための作業領域として使用される。
また、本実施の形態では、この記憶部14に対して制御部11が実行するプログラムのデータと、例えば記憶部14に記憶されるファイル管理などのために制御部11が利用する各種のシステムデータなども記憶させることとしている。
なお、表示部18として実際に採用されるべき表示デバイスについては特に限定されるべきものではないが、現状であれば、液晶ディスプレイや有機ELディスプレイなどを採用することができる。
つまり、携帯型コンテンツプレーヤ1と、そのホストとなるパーソナルコンピュータなどの装置とを、外部データインターフェイス20を経由して接続し、コンテンツデータをホストから携帯型コンテンツプレーヤ1に転送させるようにする。そして、携帯型コンテンツプレーヤ1では、例えば制御部11の制御に従って、転送されてくるコンテンツデータを受信取得し、この取得したコンテンツデータを、記憶部14に書き込むようにして記憶させる。
フラッシュメモリの記憶領域全体は、例えば図2(a)に示すようにして、所定の固定長によるブロック(第1単位領域)0〜Nにより分割される。周知のようにして、フラッシュメモリは、データの上書きはできないことになっており、データの書き込みは、消去済みの領域に対して行われる。そして、このブロックは、データを消去するときの最小単位となる。
また、この図2(a)にはブロックごとに対応してブロックアドレス(物理ブロックアドレス)が示されている。
1ページは固定長であり、図2(c)に示すように、所定サイズのデータ部と冗長部より成る。データ部はデータを格納する領域であり、冗長部は、ECC(Error Correcting Code)及び各種の所要の管理情報項目などが格納される領域となる。
データ書き込みについては、ページが最小単位となる。つまり、フラッシュメモリは、データの消去はブロック単位で行われ、データの書き込みはページ単位で行われるべきものとなっており、データ消去単位とデータ書込単位のデータサイズが相互に異なるものとなっている。
先ず図3(a)に示されるページ構造としては、2048バイトのデータ部と、これに続く64バイトの冗長部から成るものとされている。そして、64バイトの冗長部については、さらに、22バイトの予備領域と、これに続く40バイトのECCにより形成されるものとなっている。このECCにより、上記2048バイトのデータ部と冗長部における22バイトの予備領域のデータについてのエラー訂正処理を行う。
また、本実施の形態においては、予備領域における所定のバイト位置に対して、LPA(1バイト)、LBA(2バイト)、SQN(1バイト)、及びCNTF(1バイト)を配置して格納することとしている。
LBA(Logical Block Address)は、現ページを含むブロックに対応付けられた論理ブロックアドレスを示すもので、有効な値を格納するのは、ブロック内における先頭ページのみでよい。この論理ブロックアドレスの意義についても後述する。
また、本実施の形態では、後述するようにしてオリジナルブロックに対応して追加ブロックが作成され、さらにマージブロックが作成される可能性があり、これらのブロックに対しては同一のLBAが付される。さらにこれらのブロックに対しては、作成順に応じた連番であるSQN(Sequence Number)が付される。
ページにおけるSQN(Sequence Number)の領域には、現ページを含むブロックに対応付けられたSQNの値を格納する。このSQNとしての有効な値が格納されるべきページとしては、先頭ページのみでよい。
CNTF(Continue Flag)は、現ページを含むブロックのデータ書き込み結果として、そのデータ内容が、物理ページアドレス順に従って配列されている状態にあるか否かを示すフラグとされる。データ内容が物理ページアドレス順に従って配列された状態となる書き込み結果は、例えば一回のデータ書き込み要求に応じた書込データのサイズが一定以上とされていたことで、ブロックの先頭ページから最終ページまで連続して書き込みが行われたような場合に得られる。
この図3(b)に示されるページ構造としては、ページ全体としてのサイズは2112バイトで図3(a)と同じであるが、計2048バイトのデータ部を第1〜第4データ部に等分割して各512バイトとするとともに、計64バイトの冗長部についても第1〜第4冗長部に等分割して各16バイトとしたうえで、第1〜第4データ部の各々に続けて、第1〜第4冗長部を連結させるようにして形成したものである。
この場合、第1〜第4冗長部の各々は、図示するようにして、6バイトの予備領域と10バイトのECCの領域とにより形成されることになる。そして、この10バイトのECCにより、お案じ冗長部における先頭から直前までのデータについてのエラー訂正を行う。つまり、例えば第1冗長部のECCによっては、第1データ部及び第1冗長部の予備領域についてのエラー訂正を行う。
また、本実施の形態としては、この図3(b)のフォーマットにあっても、冗長部の予備領域に対しては、LPA、LBA、SQN、及びCNTFをそれぞれ所定のバイト位置に配置して格納することとしている。
なお、先の図3(a)での説明から理解されるように、LPA、LBA、SQN、CNTFについては、しかるべきページにおいて格納されていればよい。従って、図3(b)のようにして、ページ内において4つの予備領域が形成されることとなる場合には、これら4つの予備領域のうちの特定の1つの予備領域に対してのみLPA、LBA、SQN、CNTFの有効な値を格納することとしても特に支障はない。ただし、例えば、複数の予備領域に対してLPA、LBA、SQN、CNTFの有効な値を格納してもよく、この場合には、LPA、LBA、SQN、CNTFがページ内にて多重書きされることになるので、信頼性向上が期待できる。
また、冗長部の予備領域に対して書き込むべきデータが異なる場合には、その分書き込み速度の低下を招く可能性があるが、上記のようにして、複数の予備領域に対してLPA、LBA、SQN、CNTFの有効な値を格納するということは、これらの予備領域に対して書き込むデータ内容については同じとすることが可能であり、従って、上記のような書き込み速度の低下の問題を改善、あるいは解消することができる。
フラッシュメモリは例えばビット単価の低下などを背景として記憶容量が増加している傾向にある。例えば製品として市場に現れた当初は数十メガバイト(MB)程度とされていたものが、現状では、例えばギガバイト(GB)クラスにまで記憶容量が増加している。このようにして記憶容量が増加するのにかかわらず、例えば当初の記憶容量に応じて設定されたブロック容量、あるいはページ容量を維持したとすれば、フラッシュメモリの容量全体におけるブロック数、ページ数も著しく増加することになる。このような膨大な数のブロック、ページを管理しようとした場合、このための管理情報の容量も増加することになるが、このような管理情報も同じフラッシュメモリに記憶保持させる場合がある。従って、管理情報のサイズの肥大化によりフラッシュメモリにおけるユーザデータの記憶可能容量を圧迫するという不都合を生じることになる。また、管理情報を処理する際の処理速度の低下も問題になる場合がある。
そこで、フラッシュメモリの記憶容量を増加させるのに応じては、ブロック、ページの容量も相応に増加させるフォーマットとすることが行われるようになり、このような手法が一般化している。このようなフォーマットとすれば、ブロック、ページの総数を適正な範囲で抑えることが可能となり、上記したような問題を回避できる。
具体例として、図3(a)(b)には、ページサイズについて2112バイト(=2048+64)とした場合が示されているが、この場合における実際のフラッシュメモリの全体容量は2GB、あるいは4GB程度とされている。また、フラッシュメモリの全体容量が2GBの場合のブロックサイズは128KBとされ、1ブロックは64ページにより形成されることになる。また、フラッシュメモリの全体容量が4GBの場合のブロックサイズは256KBとされ、1ブロックは128ページにより形成されることになる。
例えば図3(a)のページ構造のもとで、上記のようにしてページサイズを増加させていったとすると、必然的に1ページ内におけるデータ部のサイズも増加していくことになるが、このことをECCによるエラー訂正処理の観点から見ると、データ部のサイズの増加は、即ち、エラー訂正対象となる語長の増加となる。
エラー訂正に関する一般的なこととして、エラー訂正の対象となる単位データサイズができるだけ小さいほど、エラー訂正の信頼性は高くなる。このことからすると、図3(a)のページ構造のフォーマットによりページサイズを増加させていくことは、エラー訂正の信頼性の低下を招く可能性がある、ということになる。
そこで、例えば図3(b)に示すようにして、1ページ内に占めるデータ部を所定数(この場合は4つ)に分割し、これらの分割したデータ部ごとの直後に対して、その分割されたデータ部(及び予備領域)のエラー訂正を行うだけのECCを格納した冗長部を連結する構造とすれば、ページサイズの増加にかかわらずエラー訂正の語長を適正範囲内に抑えることが可能になる。つまり、図3(b)に示すページ構造は、主として、ページサイズの増加に対してエラー訂正の効率が低下しないことを目的として採用されるものである。
図4(a)は、データ更新処理前の状態として、或るセグメント内から4つのブロックを抜き出して、これを模式的に示している。
フラッシュメモリにおいて物理的に存在する各ブロック(物理ブロック)に対しては物理ブロックアドレスが付される。この物理ブロックアドレスはメモリにおける物理ブロックの物理的な配列順に従って決まるもので、或る物理ブロックとこれに対応付けされた物理ブロックアドレスとの関係は不変となる。
ここでは、図4(a)に示す4つのブロックに対して、上から順に物理ブロックアドレスの値として、105,106,107,108が付されている。なお、実際の物理ブロックアドレスは例えば2バイトにより表現される。
図4(a)では、4つの各ブロックに対して、上から順に論理ブロックアドレスの値として、102,103,104,105が付されている状態が示されている。なお、論理ブロックアドレスも実際には2バイトにより表現されるものである。
このような場合、フラッシュメモリのファイルシステムでは、同じブロックに対して更新したデータを再度書き込むことはせずに、消去済ブロックに対してその更新したデータを書き込むようにされる。
つまり、例えば図4において処理1となる図4(a)から図4(b)の遷移として示すようにして、物理ブロックアドレス105のブロックに書き込まれていたデータについての更新データは、これまで未使用ブロックであった物理ブロックアドレス107で示されるブロックに書き込むようにされる。そして、物理ブロックアドレス105のブロックのデータについては消去するようにされる。
そして、この際に論理ブロックアドレスを上記処理2のようにして扱うことで、更新前と更新後のデータとで書き込まれるブロックの交替があるようにされても、例えば上位のファイルシステムは論理ブロックアドレスを参照してファイルアクセスを行うことになるために、ファイルシステム側からは同一のアドレスが見えることになり、以降のアクセスを適正に実行することができるものである。
また、このような処理手順からも分かるように、物理ブロックアドレスはブロックに対して固有に付されるアドレスであり、論理ブロックアドレスは、一旦ブロックに対して書き込まれたデータに付随するようにしてついて回る、ブロック単位の書き込みデータに固有となるアドレスであるとみることができる。
ここで、図5(a)は、更新処理前において、新規ブロックが決定された状態例を模式的に示している。ここでの更新対象ブロックとして示すように、更新前のデータとしては、ページ0、ページ1、ページ2、ページ3、の4つのページ位置に対してそれぞれ、データD0、D1、D2、D3が書き込み済みの状態にあり、ページ4以降は未使用とされる。また、この段階では、新規ブロックは全てのページが消去済みの状態となっている。
このようなブロックのデータを更新するための新規ブロックへのデータの書き込みは、先頭ページから次のページへと順次的にページ単位で書き込みを実行していくことで行われるようにされる。このために、図5(a)に示されるデータ書込要求に応じては、先ず、図5(b)に示すようにして、更新対象ブロックから、先頭ページであるページ0のデータD0を読み出して、この読み出したデータD0を、新規ブロックにおける同じページ0に対して書き込むようにされる。つまり、データD0についてはその内容に変更はないので、更新対象ブロックから新規ブロックに対してデータをコピーするようにして書き込むことになる。
続いては、図5(c)に示すようにして、先頭ページ(ページ0)に続くページ1のデータD1を読み出して、新規ブロックにおける同じページ1に対してコピーとしての書き込みを行うようにされる。
上記のようにしてデータD2+の書き込みが完了すると、図5(e)に示すようにして、更新対象ブロックのページ3のデータD3を、新規ブロックのページ3にコピーするようにして書き込むようにされる。この場合には、ここまでの手順を完了した段階で、新規ブロックに対する更新データの書き込みが完了したことになる。
このようにして、ブロック交替処理に伴うブロックデータの書き込みの実際としては、変更のないページについてはデータをコピーし、変更のあるページについては、更新した内容のデータの書き込むという手順を、先頭ページから順次行っていくようにされる。
そして、この図5には示していないが、更新データの書き込みが終了した後の所定のタイミングで、図5の左側に示されている更新対象ブロックに書き込まれているデータについての消去が行われる。つまり、データ書き込みに伴うブロック交替が行われる。
この図に示すようにして、論理−物理アドレス変換テーブルとしては、例えば、先ずブロック論理アドレスを昇順に整列させることしている。そして、各論理ブロックアドレスごとに、対応させるべき物理ブロックアドレスを格納するようにしてテーブル情報を構築する。なお、この図においては、論理ブロックアドレスを、0〜Xによる整数値として示しているが、例えば実際としては2バイトにより表現される値を持つものとなる。
周知のようにして、フラッシュメモリは、上書きが不可であり、必ず消去済みの領域に対してデータを書き込むことが要求される。そのうえで、データ消去の最小単位がブロックとなるのに対して、データ書き込みの最小単位はページとなる。さらに、ページに対するデータ書き込みは、ブロック内において物理的に配列されるページ順(物理ページアドレス順)に従って行っていくべきこととされている。
また、フラッシュメモリとしての半導体素子には寿命があり、この寿命は、データの消去回数として表される。
このような特質から、例えば図5(a)の更新対象ブロックのページ2に対して、直接、更新データを上書きすることはできない。そこで、例えばページ2の領域だけでも消去する必要が生じるが、データ消去の最小単位はブロックであるために、ブロックの全領域のデータを消去したうえで、再び、ブロックに格納させるべきデータを書き込むという手順が必要になる。すると、たとえ1ページ分だけであっても、データの書き換えを行おうとした場合には、その都度、ブロックを消去しなければならないことになる。このようなデータ書き込みに応じたブロックの消去が、1つのブロックに対して繰り返し行われれば、それだけ、そのブロック領域の寿命が短くなる。そこで、ブロック交替処理を伴うブロックのデータ更新とすることで、特定のブロックにおけるデータの消去が集中して繰り返されないようにしているものである。
このようなブロック消去の処理は、例えばページ書き込みや、読み出しの処理などと比較して、相当に時間を要することが分かっている。具体例として、ブロックサイズが128KBの場合において、ブロック消去の所要時間は約1.5msであるのに対して、ページ書き込み時間は約200μs、ページの読み出しは最大で約20μsとなる測定結果が得られている。また、ブロックサイズが256KBの場合においては、ブロック消去の所要時間が約3msであるのに対して、ページ書き込み時間は約800μs、ページの読み出しは最大で約50μsとなる測定結果が得られている。
そこで、本実施の形態としては、以降説明していく構成を採ることで、データ書き込み速度の高速化を図るようにされる。
この図7において、ブロック(第1単位領域)は、m+1個のページ(第2単位領域)から成るものとされており、先頭ページから最終ページにかけて、0〜mにより表される物理ページアドレスが対応付けられている。なお、以降において、物理ページアドレスは、図において表記もしているように、PPA(Physical Page Address)とも記載する場合がある。このPPAは、ブロックにおいて物理的に配列される先頭ページから最終ページに対して固定的に割り当てられる。
また、この後において、例えば図7(c)に示すようにして、PPA=0が示すページのデータD0を更新するためのデータ書込要求が行われたとすると、図7(d)に示すようにして、この段階において未使用となっているページのうちの先頭ページである、PPA=4が示すページに対してデータD0を更新した内容のデータD0+を書き込むようにされる。
なお、確認のために述べておくと、上記のようにして更新後のデータD0+、D1+が書き込まれたことで、ページ0、1にそれぞれ格納される更新前のデータD0、D1は無効なデータとなる。更新後のデータD0+、D1+が有効である。
このようにして本実施の形態では、データ書き込みについて、ブロック交替処理の代わりに未使用ページへの追記という処理を実行するものであり、これにより、ブロック消去が実行されないようにしているものである。そして、このようにブロック消去の処理が省かれれば、それだけ同じデータサイズに対するデータ書き込みの所要時間は短縮される。つまり、データの書き込み速度の高速化が図られることになる。
また、従来においては、ブロック交替処理によりフラッシュメモリの長寿命化を図ることとしているが、これは、或る1つのブロックデータを格納するブロックを交替することにより、消去されるブロックを分散、均一化させることで得られる効果となる。この場合、ブロック消去の処理そのものは、データ書き込みごとに必ず実行される。これに対して、本実施の形態では、データ書き込みとして同一ブロックに対するページデータの追記を行っている限りは、ブロックの消去処理そのものが生じないものであり、長寿命化の点でも従来と比較して優れている。
図8(a)(b)(c)は、それぞれ、図7(a)、(b)(d)と同じデータ書き込み結果が示されている。この場合において、例えば図7(a)に示す状態では、PPA=0が示すページに書き込まれたデータD0に対応させてLPA=0を割り当て、次いで順に、PPA=1が示すページに書き込まれたデータD1に対応させてLPA=1を割り当て、PPA=2が示すページに書き込まれたデータD2に対応させてLPA=2を割り当てている。
そして、図8(b)の状態では、さらにPPA=3が示すページに書き込まれたデータD1+に対して、LPA=1を割り当てている。また、図8(c)の状態では、さらにPPA=3が示すページに書き込まれたデータD0+に対して、LPA=0を割り当てている。
つまり、LPA=は、ページに書き込まれたデータを特定するものとして割り当てられるアドレスとして考えることができる。そして、図8(b)(c)からも分かるように、更新前後の関係を有するデータについては同一のLPAを割り当てることとしている。従って、LPAは、異なるブロックに対して重複して割り当てることが許可されているものである。
なお、この図においては、ブロック内のページついてデータ部と冗長部とに論理的に分割して示している。データ部におけるページ0〜63の表記は、PPAに応じたブロック内におけるそのページの配列順を示している。つまり、この場合においては64のページにより1ブロックが形成されるフォーマットを例としている。また、冗長部には、その予備領域に格納しているとされるLPAの値を16進法表記により示している。
このとき、図9(a)のブロックには未使用ページが存在していないので、図9(a)のブロックに対して新規に書き込む必要のあるLPA=0x2Eのページデータを追記することはできない。このことは、空きページが無くなったことを以て、本来データ書き込みを行う対象となるべきブロックに対するデータの書き込みが禁止される条件を満たしたものであるといえる。
そして、以降において、本来は図9(a)のブロックのデータを成すものとされるデータを書き込むべきこととなった場合には、図9(c)の追加ブロックに対して、先頭ページに続く次のページから、PPAの昇順に従って、順次ページ単位での書き込みを行っていくようにされる。
先の説明のようにして、従来からのフラッシュメモリにおけるメモリ管理にあたっては、図6に示したPBAテーブルを用いることとされているが、例えば上位アプリケーションはPBAテーブルを利用してフラッシュメモリへのアクセスを行うことから、本実施の形態としても、同様にして、PBAテーブルによりブロック単位でのメモリ管理を行うこととしている。このことは、本実施の形態としても、ブロックに対しては、そこに書き込まれるデータに対応付けられるようにしてLBAが割り当てられるということを意味する。
そのうえで、図10に示す追加ブロック管理テーブルを定義する。
図10に示される追加ブロック管理テーブルは、オリジナルブロックのLBAに対して追加ブロックのPBAを対応させた構造を有する。これまでに述べてきたように、LBAはオリジナルブロックと追加ブロックとで同一であるから、追加ブロック管理テーブルにおいて追加ブロックのPBAに対応するLBAが、即ち、その追加ブロックにも与えられるLBAとなる。これにより、フラッシュメモリ内のブロックのうちからオリジナルブロックと追加ブロックの対応関係を特定することが可能になる。
つまり、先ず図6のPBAテーブルを参照することで、或る目的とする1つのオリジナルブロックについてのLBAとPBAの対応を特定できる。そして、PBAテーブルを参照して特定した上記1つのオリジナルブロックのLBAと同じ値のLBA(オリジナルブロックのLBA)を、追加ブロック管理テーブルから探索してみて、そのLBAが探索されたのであれば、このLBAに対応するPBAが追加ブロックである。
このようして、PBAテーブルと追加ブロック管理テーブルとで、同じLBAが対応付けられているPBAを探索すれば、それぞれがオリジナルブロックと追加ブロックのPBAを示していることになる。また、追加ブロック管理テーブルについて探索を行った結果として、PBAテーブルに対して探索を行ったときと同じLBA(オリジナルブロックのLBA)が存在しなかった場合には、そのオリジナルブロックには、追加ブロックが割り当てられていないということになる。
このためには、例えば、新規に追加ブロックが登録される都度、登録済みとされていた追加ブロックについてのLBAとPBAを格納した行を、行番号の昇順に従って1行ごとにシフトさせるようにする。つまり、LBAとPBAの組み合わせによる追加ブロックの登録情報に対応させる行番号を1インクリメントしていくようにされる。そして、この行シフトの結果により空き領域となった行番号0の行に対して、新規追加ブロックについてのLBA、PBAを登録するようにされる。これにより、行番号の昇順(0,1,2・・・9)に従って追加ブロックが古くなることが示される。
仮に追加ブロック数について制限を設けないこととすると、ブロックの空きページがなくなるごとに必ず追加ブロックが形成されていくことになるので、データ書き込みが継続されるのに応じて、追加ブロック数は無制限に増加していくことになる。しかし、追加ブロック数が増加すれば、その分、使用可能なフラッシュメモリの容量が少なくなっていくことになる。つまり、必要以上に、フラッシュメモリの記憶可能容量を少なくしてしまう可能性がある。また、このような記憶可能容量の消費は、実際に書き込んだファイルサイズよりもはるかに少ない空き容量しか残っていないという状況も生む。このようなことは、例えばユーザにとっては不利益となるものであり、また、信頼性を損なう原因にもなり得る。
そして、この状態において、例えばさらに、図9(c)に示すLPA=0x09のデータを書き込むべきことになったとする。この場合、上記もしているように、図11(b)の追加ブロックに対する追記をこれ以上は行うことができない。
本実施の形態の対応としては、追加ブロックとオリジナルブロックにこれまで書き込まれたページデータのうちから有効なデータを抜き出し、これらを1つのブロックにまとめて書き込むようにして、ブロックの再構築を行うようにされる。このようなブロック再構築の処理を、ここでは、マージ処理ということにする。
先の説明のようにして、図11(a)(b)のオリジナルブロックと追加ブロックが、ともに空きページが無くなった状態で、図11(c)に示すLPA=0x09のデータを書き込むべきタイミングになったとすると、このときに未使用となっているブロックのうちから1つのブロックを選択して、図5(d)のマージブロックとして確保する。そして、このマージブロックに対して、下記のようにしてページ単位によるデータの書き込みを実行していくようにされる。
ここでのページデータについての有効/無効の判定には、冗長部に格納されるLBAを利用する。つまり、これまでに未だ探索されていないLBAを格納したページは、同じLBAを格納するページデータのうちで最後に書き込まれたページデータとなるので、有効であると判定できる。これに対して、探索済みのLBAを格納したページは、同じLBAを格納するページデータのうちで最後よりも前に書き込まれたページデータとなるので無効であると判定できる。
この場合においては、以降においてオリジナルブロックの探索を行った結果として、ページ2においてLBA=0x02が探索されるまで、無効なページデータが連続したものとされている。そして、このページ2に格納されるLBA=0x02のページデータが有効と判定され、マージブロックにおいて最後に残っていた空きページであるページ63に対して書き込みを行うようにされる。
そして、このようにしてページ63までの書き込みが完了した段階で、図11(d)のマージブロックには、図11(a)のオリジナルブロック(及び図11(b)の追加ブロック)に割り当てられたLBAに対応する有効な最新のブロックデータが格納された状態となっている。また、確認のために述べておくと、マージブロックにおいては、同一のLPAが重複したページデータは格納されていない。
また、マージブロックが完成したことで、図11(b)の追加ブロックも不要となる。そこで、追加ブロックについては、先ず、追加ブロック管理テーブルからの登録を削除する。このようにして追加ブロックの登録削除が行われた場合において、追加ブロック管理テーブルにおいて空きになった行より後の行番号の行に対して追加ブロックが登録されていた場合には、空きになった行を埋めるようにして、空きの行より後ろの全ての追加ブロックの登録データを、1行繰り上げるようにしてシフトさせるようにする。
そのうえで、図11(b)の追加ブロックについてもブロック消去を行っておくようにされる。
以上でマージ処理としての一連の手順が完了する。
また、CNTFについては、オリジナルブロック、追加ブロック、またマージブロックにおける最終ページのデータ書き込みを実行する段階において、これまでの書き込み結果として、先頭ページから最終ページまでデータが論理的に連続した状態、つまり、LPA順に従って書き込まれたのであれば、そのことを示す値を生成してCNTFとして格納させる。LPA順に従った書き込みではなく、データが論理的に連続して書き込まれた状態ではないのであれば、そのことを示す値を生成して格納させる。
例えば、書き込みを行うデータサイズが相当に大きい場合には、追加ブロックに対して書き込まれるデータが、PPA順に従ってLPA順も連続した状態となる可能性がある。図12(b)には、このような状態の追加ブロックの一例を示している。なお、図12(a)は、図12(b)の追加ブロックに対応するオリジナルブロックである。
この図12(b)に示す追加ブロックは、先頭のページ64から最終の1つ前のページ126までにかけて、LPA=0x00、LPA=0x01、LPA=0x02・・・・LPA=0x03Eというように、LPAが連続した状態でページデータの書き込みが行われた内容となっている。
そのうえで、さらに、続けて最終ページ127に書き込まれるべきデータは、図12(c)に示すようにしてLPA=0x3Fとなっており、このデータが書き込まれることにより、図12(b)の追加ブロックに書き込まれたブロックデータは、論理的なデータの開始位置(LPA=0x00)からはじまって、LPA=0x3Fまで連続して配列された状態が得られることになる。このような書き込み結果は、追加ブロックに書き込まれたデータのみにより、対応するLBAの有効なブロックデータが形成されていることを意味する。
ここまでの処理を完了したとされると、図12(a)のオリジナルブロックについてはブロック消去を行っておくようにされる。ここまでで例外マージ処理としての一連の手順が完了する。
このような場合、例えば、次の起動時においては、実際のフラッシュメモリ上での物理的なデータの記憶状態と、上記論理−物理アドレス変換テーブルなどの管理情報の内容とに不整合が生じていることになる。このままでは、以降において、フラッシュメモリに対する正常なデータの管理、アクセスが保証できなくなる。このような不都合を回避するためには、例えばデータ書き込みが中断されたことを検出したときには、フラッシュメモリにおける実際のデータの書き込み状態を検証していくなどして、管理情報を再構築できるように構成することが必要であり、実際においても、このための何らかの構成を採るようにされている。このような構成は、例えばデータ書き込みが瞬断されたことに対する対策であることにちなみ、瞬断対策などともいわれる。
例えば先ず、追加ブロックにおいて空きページが無くなった状態の下で、ステップS101によりフラッシュメモリのドライバ層に対して上位となるアプリケーション(ファイルシステム層)から1ページ分に対応するデータの書込要求があったとする。すると、フラッシュメモリドライバは、ステップS102により、要求されたデータをデータ部に格納したページデータを生成するとともに、マージブロックを確保して、このマージブロックの先頭ページに対して、生成したページデータの書き込みを行う。このステップS102によるページデータの書き込みのときに、そのページデータにおける冗長部の予備領域には、しかるべき値のSQNが格納されることになる。
また、例えばステップS105は、追加ブロックの最後から1つ前のページを探索したが、ここのページデータのLPAは既に探索済みであったので、マージブロックに対する書き込みを実行しなかった処理が示されている。このようにして以降も探索と有効ページデータの書き込みを実行していき、ステップS107にて追加ブロックの先頭ページを探索し、ここのページデータが有効なものであったことから、マージブロックへの書き込みを実行したことになっている。ここまでで、追加ブロックの探索が完了している。
そして、次のステップS107〜ステップS110まで、同様の手順により、オリジナルブロックを対象として、有効ページデータの探索とマージブロックへの書き込みを行っている。なお、この場合においては、最後の探索処理であるステップS110として、オリジナルブロックの先頭ページまで探索して有効ページデータをマージブロックに書き込んだ場合を示している。
先ず、状態1は、マージブロックが作成される前の段階とされ、オリジナルブロックと追加ブロックのデータが、フラッシュメモリの記憶領域上にて、空きページが無い状態で正常に存在している状態である。そして、マージブロックは、ステップS102により先頭ページのページデータの書き込みを実行したことで、はじめて作成されたものとして存在することになる。従って、ステップS102以降の状態2は、状態1に引き続きオリジナルブロックと追加ブロックのデータは、空きページが無い状態で存在していると共に、未完成あるいは完成したマージブロックのデータが存在している状態である。
状態3は、ステップS112により追加ブロックを消去してからの状態となるので、追加ブロックは存在しておらず、オリジナルブロックとマージブロックのみが存在している状態である。
状態4は、ステップS113により元のオリジナルブロックを消去して以降のタイミングになるこことから、新規オリジナルブロック(マージブロック)のみが存在している状態である。
先に説明したように、SQNは、ブロックにおける先頭ページに、LBA、LPAなどともに格納される。つまり、オリジナルブロック、追加ブロック、マージブロックの種類にかかわらず、そのブロックの作成開始時に先頭ページを書き込むのと同時に書き込まれるものとなる。また、このSQNは、データ書き込み時におけるブロックの作成順に応じた連番が付される。従って、オリジナルブロックに対して追加ブロック、マージブロックが作成されたとすると、オリジナルブロック、追加ブロック、マージブロックの順で、SQNが連続する。つまり、例えばオリジナルブロックのSQNについてNで表すとすれば、追加ブロックのSQNはN+1、マージブロックのSQNはN+2で表される。
状態2にあっては、SQN=Nのオリジナルブロックと、SQN=N+1の追加ブロックと、SQN=N+2のマージブロックが存在することになる。
状態3にあっては、SQN=Nのオリジナルブロックと、SQN=N+2のマージブロックが存在することになる。追加ブロックはブロック消去の処理により消去されて存在しない。
状態4にあっては、追加ブロック及び元のオリジナルブロックがブロック消去により存在していないので、SQN=N+2のマージブロックのみがオリジナルブロックとして存在していることになる。
これらの図に示す手順は、例えば制御部11におけるハードウェア構成部位であるCPUが、例えば記憶部14に記憶されるプログラムをRAM13に展開して実行することにより得られる、フラッシュメモリドライバ層が実行する処理手順としてみることができる。
なお、このようなプログラムは、例えば製造過程において記憶部14に書き込んで記憶させるほか、例えばリムーバブルの記憶媒体に記憶させておいて、後から、この記憶媒体を使用してインストールするようにして携帯型コンテンツプレーヤ1に対して記憶させることも考えられる。また、ネットワーク上のサーバなどにおける記憶装置に記憶させておき、ネットワーク経由でダウンロードするようにして取得して携帯型コンテンツプレーヤ1にインストールするようなことも考えられる。この点については、図17より以後にて説明するフローチャートについても同様である。
ここで、肯定の判別結果が得られたのであれば、データの書き込み対象はさしあたり追加ブロックということになるので、ステップS203に進んで、追加ブロックにおける最初の空きページまでアクセスするようにされる。なお、追加ブロックの最初の空きページまでのアクセスは、追加ブロック管理テーブルにおいて書き込み対象のLBAに対応付けられているPBAが示すブロックにアクセスした上で、例えば先頭ページから、未使用となっているページが検出されるまで、ページ探索を行えばよい。未使用ページは、フラッシュメモリでは、全て1を書き込んだ状態となっている。
一方、ステップS202において否定の判別結果が得られたのであれば、データの書き込み対象はさしあたりオリジナルブロックということになるので、ステップS204により、オリジナルブロックにおける最初の空きページまでアクセスするようにされる。オリジナルブロックへのアクセスは、例えばRAM13に保持させているPBAテーブルを参照して、書き込み対象のLBAに対応付けられているPBAを取得し、このPBAが示すブロックにアクセスすればよい。
ステップS209においては、現段階における追加ブロックの割り当て状況として、使用可能最大数に対応する全ての追加ブロックが、他のオリジナルブロックに割り当て済みとなっているか否かについて判別する。このためには、RAM13に保持されている追加ブロック管理テーブルを参照して、ここに登録されている追加ブロック数が、使用可能最大数(本実施の形態では10個)以上であるか否かについて判別することとすればよい。
ステップS210では、追加ブロック管理テーブルを参照して、最も以前に登録された追加ブロックを探索するようにされる。先に図10により説明したようにして、追加ブロック管理テーブルにおける登録管理の形態によっては、最も以前に登録された追加ブロックは、登録された追加ブロックのうちで、最も大きい行番号に対して登録されているので、この場合には、追加ブロック管理テーブルにおける最後の行に対して登録されている追加ブロックが、最も以前に登録された追加ブロックとして探索されることになる。
このステップS211のマージ処理が実行されることによっては、ステップS210により探索した追加ブロックの登録が削除されることになる。つまり、この段階で、使用済みとなっている追加ブロック数は、最大数−1(本実施の形態では9個)となり、現書込ブロックとしてのオリジナルブロックに対して追加ブロックを割り当てることが可能になるものである。換言すれば、ステップS210、ステップS211の手順は、今回の現書込ブロックに対応する追加ブロックを確保するための手順となるものであり、そのために、オリジナルブロックに割り当て済みの追加ブロックのうちで、最も過去に登録されたものについての割り当てを解放するものである。
データ書込要求に応じてデータを書き換えることとなるフラッシュメモリ上の論理的な領域は、分散するのではなく、むしろ集中する傾向にあることが分かっている。ファイルの更新などを例にとってみると、ファイル更新に際しては、更新したファイルのデータの書き込みのほかに、必然的に、ファイルシステムに対応するファイル管理情報などのシステムデータについての更新も行われる。具体的に、FATファイルシステムの場合であれば、FAT(File Allocation Table)といわれるクラスタチェインによりファイルデータの論理的な連結を管理するテーブル情報と、ディレクトリエントリといわれるディレクトリ構造を管理する情報を書き換えることになる。そして、このようなファイル管理情報は、例えば1ファイルの更新に応じては、そのファイルに対応した内容を記憶している特定の領域が集中して書き換えられることになるわけである。
このようなことから、実際のこととして、追加ブロックは過去に登録されたものほど使用される頻度が少なくなっていくという傾向になり、或る一定数よりも以前の追加ブロックについては、ほとんど使用されないという状況となることが確認されたものである。本実施の形態において、追加ブロック数に制限を与えているのは、上記した事実に鑑みて、いたずらに追加ブロックを多くしても、追記などが行われずに放置に近い状態の追加ブロックが増えるだけであって効率的でない、ということもその理由となっている。
そして、このことからすれば、追加ブロックが不足した場合には、ステップS210、S211のようにして、最も以前の追加ブロックを解放するという手順とすることが、新規追加ブロックを確保するための最も合理的なアルゴリズムの1つである、ということになるわけである。
マージ処理としては、先ず、図16のステップS301として示すように、マージ処理に用いられる追加ブロックの書き込み内容として、PBA順に従って書き込まれているページデータは、LPA=0x00からはじまって順次書き込みされているか否かについて判別することとしている。つまり、例えば図12(b)により説明したような追加ブロックのデータ書き込み内容であるか否かについて判別するものである。
例えばステップS302では、これまでの追加ブロックが新規にオリジナルブロックとして管理されるようにする。つまり、PBAテーブルにおいて、元のオリジナルブロックのPBAが登録されていたLBAへの対応を、これまでの追加ブロックのPBAに変更する。このPBAテーブルの書き換えにより、管理情報のうえで、元のオリジナルブロックは未使用ブロックとして管理されることになる。
次に、ステップS303により、元のオリジナルブロックを対象としてブロック消去処理を実行して、物理的にも未使用領域とする。
通常マージ処理としては、先ず、図17のステップS401として示すように、未使用ブロックとして管理されるブロックのうちからマージブロックに使用するブロックを確保するようにされる。
ステップS208のマージ処理の場合には、図11(c)に示すようにして、マージブロックの先頭に書き込むべき、追記のためのページデータが用意されている。これに対して、ステップS211のマージ処理は、追加ブロックを1つ解放することを目的として行われるもので、従って、マージ処理にあっては、マージブロックの先頭ページに書き込むべき追記のデータは無い、マージブロックに対しては、先ず、先頭ページから順次、追加ブロックから探索した有効なページデータが書き込まれていく。
ステップS402にて肯定の判別結果が得られた場合には、ステップS403により、追記用の書き込みデータを、マージブロックの先頭ページに対して書き込んだうえで、ステップS404−1〜S404−2で括られるループ処理を実行する。これに対して、ステップS402にて否定の判別結果が得られた場合には、ステップS403をスキップして、ステップS404−1〜S404−2で括られるループ処理を実行する。
ステップS405では、追加ブロックにおけるページiのデータを読み込んで取得する。ステップS406では、上記ステップS406により読み込んだページデータの冗長部(予備領域)に格納されるものと同じLPAを格納するページデータが、既にマージブロックに書き込まれているか否かについて判別し、肯定の判別結果が得られれば、このまま次の回のループ処理に進む。これに対して、否定の判別結果が得られたのであれば、ステップS407によりマージブロックにおける空きページの先頭に対して、ステップS405により読み込んだデータを書き込み、次回のループ処理に進む。
このループ処理により、図11にて説明したように、追加ブロックの最終ページから有効ページデータを探索してマージブロックの空きページの先頭に対して順に書き込んでいくという処理が行われていくものであり、ループ処理が完了した段階では、追加ブロックに書き込まれていた全ての有効ページデータがマージブロックに書き込まれていることになる。
ステップS409では、オリジナルブロックにおけるページiのデータを読み込んで取得する。ステップS410では、上記ステップS409により読み込んだページデータの冗長部(予備領域)に格納されるものと同じLPAを格納するページデータが、既にマージブロックに書き込まれているか否かについて判別し、肯定の判別結果が得られれば、このまま次の回のループ処理に進む。これに対して、否定の判別結果が得られたのであれば、ステップS411によりマージブロックにおける空きページの先頭に対して、ステップS409により読み込んだデータを書き込み、次回のループ処理に進む。
このループ処理によっては、図11における、オリジナルブロックの最終ページから有効ページデータを探索してマージブロックの空きページの先頭に対して順に書き込んでいくという処理が行われていくものであり、ループ処理が完了した段階では、オリジナルブロックに書き込まれていた全ての有効ページデータがマージブロックに書き込まれていることになる。そして、この段階において、マージブロックにおけるデータ書き込み内容としては完成した状態が得られたことになる。
図18は、本実施の形態における再構築処理例を示している。例えばフラッシュメモリドライバが起動時において、前回のデータ書き込みが正常終了していないことを判別したとされると、この図18に示す手順を実行することになる。なお、前回のデータ書き込みが正常終了したか否かについての判別を可能とするためには、データ書込時において、その処理の進行状況を示す情報を生成して、例えば逐次、フラッシュメモリの所定領域に書き込んでおくようにされる。起動時において、この情報を参照すれば、前回のデータ書き込みが正常終了したか否かを判定できることになる。
ステップS502は、ブロックの探索処理となるもので、ブロックiの先頭ページ(PPA=0)にアクセスして、このページの予備領域に書き込まれているLBAを取得する。ステップS503では、上記ステップS502により取得されたのと同じLBAのブロックが、これまでの再構築処理の過程でPBAテーブルに登録済みとなっているか否かについて判別する。つまりPBAテーブルにおいて、ステップS502により取得されたのと同じLBAに対して、既に他のブロックのPBAが対応付けられているのか否かについて判別する。
ステップS505においては、ステップS503により取得したブロックiのLBAに対応して、既に他のブロックが追加ブロックとして登録済みとなっているか否かについて判別する。このためには、これまでの再構築処理の過程により作成された追加ブロック管理テーブルの内容を参照することになる。
ステップS505において否定の判別結果が得られた場合には、同じLBAを持つことなるPBAのブロックが2つ存在しており、さしあたり、先に探索された一方のブロックは、オリジナルブロックとして登録されている状態になることになる。しかしながら、同じLBAのブロックがもう1つ探索されたことで、これら2つの何れがオリジナルブロックで追加ブロックであるのかについては、未確定になる。そこで、このことを確定するために、ステップS506の手順を行う。
ステップS506では、これら2つのブロックのSQNを比較する。SQNも、ブロックにおける先頭ページの予備領域に格納されている。図14にて説明したように、同一LBAのブロックが2つ存在する状態としては、状態1と状態3とが考えられるが、ステップS506に至るには、ステップS505にて追加ブロックは登録されていないことが判定されていることで、さしあたり、マージブロックが存在する可能性は考慮しなくてもよい段階にある。そこで、ステップS506としては、SQNを比較してみて、この値が大きいほうのブロックを、追加ブロック管理テーブルに対して追加ブロックとして登録するようにされる。またSQNの小さい方はPBAテーブルに登録してオリジナルブロックとして管理されるようにしておく。
そこでこの場合には、ステップS507により、これら3つのブロックのSQNを比較し、SQNの値が最大のブロックについてブロック消去の処理を実行する。つまり、マージブロックを消去する。状態2に対応する期間においてデータ書き込みが中断したということは、図13からも理解されるように、マージブロックが未完成である可能性が避けられない。そこで、マージブロックについて消去して無効としてしまうようにする。
これにより、同一LBAのブロックが2つになるので、次のステップS508により、先のステップS506と同様にして、SQNの大きいほうのブロックを追加ブロックとして登録し、小さい方のブロックを、オリジナルブロックとしてPBAテーブルに登録する。
ステップS510においては、追加ブロック管理テーブルに登録されている1つの追加ブロックと、これに対応して同じLBAが対応付けられたオリジナルブロックのSQNを取得し、ステップS512により、このSQNが連続しているか否かについて判別する。なお、SQNは、図3の例では1バイトとされており、従って、その数値範囲としては0〜255となる。シーケンスナンバは、生成順に従ってブロックに対して連番を付していくのであるが、最大値の255を付した次には0を付すようにして、循環させて用いるようにされている。従って、ステップS510においては、SQNが0、255となっている場合にはSQNが連続しているものとして判別するようにされる。
状態3の場合には、図13から分かるように、マージブロックは既に完成している。これに対してオリジナルブロックは、マージ前の内容を有している。従って、再構築にあたって、正式なオリジナルブロックとして採用すべきは、マージブロックであることになる。しかしながら、ループ処理S501−1〜S501−2によっては、マージブロックが追加ブロックとして登録され、マージ前のオリジナルブロックがオリジナルブロックとして登録されている状態になっている。そこで、この誤った登録内容を修正するためにステップS512〜S514を実行する。
先ず、ステップS512においては、現在において追加ブロックとして登録されているブロックを、オリジナルブロックとして登録し直すためのPBAテーブルの更新を行い、続くステップS513により、追加ブロック管理テーブルにおけるこのブロックの登録を削除する。さらに、オリジナルブロックとして登録されていたブロックについては、ブロック消去をおこなって未使用状態とする。
これまでの説明にあっては、先ず、オリジナルブロックに空きページが存在する限りは、ここにデータを追記して書き込んでいき、オリジナルブロックの空きページが無くなると、追加ブロックを割り当てて追記を継続させる、ということになっていた。
これに対して、変形例としては、オリジナルブロックにおいて空きページが存在する、しないに関わらず、追記すべきデータが発生したのであれば、追加ブロックを割り当て、この追加ブロックに対するデータの追記を行うように構成するものである。
なお、この変形例にあっては、オリジナルブロックとして全くページの書き込みが無い(オリジナルページが存在しない)状態においても、ページデータの書き込みは、先ず、追加ブロックとしてのブロックを確保して、このブロックから開始するようにされる。つまり、当初のデータの書き込みは、オリジナルブロックではなく、常に追加ブロックを対象として行われる。データの書き込まれたオリジナルブロックは、追加ブロックに対する書き込みにより空きページが無くなったことに応じてマージ処理が行われることによって生成されることになる。
このことから、変形例としては、オリジナルブロックに対するデータ書き込みは定常的に禁止されているものとして禁止条件を設定しているものとしてみることができる。
ステップS601、S602については、図17のステップS201,S202と同様にして、データ書き込み要求に応じたデータ書き込み処理として、先ず、書き込み対象のLBAに対して追加ブロックが作成済み(割当済み)となっているか否かについて判別する。そして、肯定の判別結果が得られた場合には、ステップS608に進む。これに対して、否定の判別結果が得られた場合には、ステップSステップS604以降の手順を行う。
なお、ステップS208、S211のマージ処理については、先に説明した図16、図17と同様でよいものとされる。
先ず、ステップS701にて肯定の判別結果が得られた場合には、ループ処理S702−1〜S702−2を実行する。ループ処理S702−1〜S702−2は、ページ順(PPAに対応する)を示す変数iについて初期値として64を設定し、ステップS703〜S705の手順を実行するごとに変数iを1デクリメントしていくようにされる。そして、i>0となる条件を満たした段階で、このループ処理を終了させる。
ステップS703では、追加ブロックにおけるページiのデータを読み込んで取得する。ステップS704では、上記ステップS703により取得したページデータの冗長部(予備領域)に格納されるものと同じLPAを格納するページデータが、既に有効読出データとして保持されているか否かについて判別し、肯定の判別結果が得られれば、このまま次の回のループ処理に進む。これに対して、否定の判別結果が得られたのであれば、ステップS705により、ステップS703により読み込んだデータを有効読出データとしてRAM上で保持して、次回のループ処理に進む。
つまり、ループ処理S702−1〜S702−2は、追加ブロックの最終ページから先頭ページにかけて、読出データとして有効なページデータ(有効読出データ)を探索し、これをRAM上で保持させていく処理となる。
ステップS707では、オリジナルブロックにおけるページiのデータを読み込んで取得し、次のステップS708により、上記ステップS707により取得したページデータの冗長部(予備領域)に格納されるものと同じLPAを格納するページデータが、既に有効読出データとして保持されているか否かについて判別し、肯定の判別結果が得られれば、さらにステップS710により、現在の有効読出データ数がブロック内ページ数の64となったか否かについて判別する。ここで否定結果が得られたのであれば、次の回のループに進むが、肯定の判別結果が得られた場合には、ブロックを形成する全ての有効読出データをRAMに保持させたことになるので、ループ処理S706−1〜S706−2を抜ける。
このようにして、ループ処理S706−1〜S706−2を抜けた段階では、オリジナルブロックから全ての有効読出データが探索され、これがRAM上で保持されることになる。
ステップS711では、RAM上に保持されている有効読出データについてLBA順に配列させる処理を行う。つまり、有効読出データは、ページデータの構造とされてデータ部と冗長部からなり、さらにページデータごとの冗長部の予備領域にはLPAが格納されている。ステップS711では、この予備領域のLPAを参照して、先ず、LPAの値の一番小さい有効読出データ(ページデータ)のデータ部を抜き出して先頭に配置し、続いて、次に大きい値のLBAを格納する有効読出データのデータ部を抜き出して、先頭に続けて配置する。この手順を、全ての有効読出データについて行っていくようにされる。この結果、論理的に正常に配列された1ブロック分の読出データ(ブロック読出データ)が形成されることになる。
ステップS712では、オリジナルブロック内のページデータに格納されるLPAを参照することで、このオリジナルブロックは、PPA=0(0x00)〜63(0x3F)の昇順に応じて、LPA=0(0x00)〜63(0x3F)の順で書き込まれた状態となっているか否かについて判別する。
ステップS712により否定の判別結果が得られた場合には、オリジナルブロック内のページデータは、LPA順に従って書き込まれていないことになるので、ステップS706−1〜S706−2のループ処理に移行することで、有効読出データを探索して取得することになる。
これに対してステップS712により肯定の判別結果が得られた場合には、ステップS713により、オリジナルブロックからPPA順に従ってページデータの読み出しを行って、そのデータ部を読み出し順に従って配列させていくことで、ブロック読出データを形成する。
そして、ステップS714により、上記ステップS713、あるいはステップS711により形成されたブロック読出データを、例えば上位処理層に対して受け渡すようにされる。
この図から分かるように、同じファイルサイズに対するデータ書き込み処理時間は、本実施の形態のほうが短くなっている。つまり、データ書き込みの高速化が図られているものである。そして、本実施の形態によっては、特に、ファイルサイズが小さくなるほど、その効果が顕著になっている。
例えば従来では、先にも説明したように、ブロック交替処理を伴うことで、書き込みデータサイズが小さいほど、データ書き込み時においてブロック消去時間の占める割合が非常に高くなる。このために、特性としても、ファイルサイズが100000バイトあたりより小さくなると、これ以上データ書き込み時間が短くならずに、約0.12秒でとどまってしまっている。
これに対して、本実施の形態の特性では、特に、ファイルサイズが小さいときのデータ書き込み時間が大幅に短縮されていることが分かる。例えば矢印Aにより示されている位置では、本実施の形態のデータ書き込み時間は、従来に対して1/10程度にまで短縮されているものである。このことから、本実施の形態のデータ書き込みを実際に採用した場合には、例えば小さいファイルを書き込む場合や、ファイルシステムなどのシステム情報などのサイズの小さいデータを書き換えるような場合において、その書き込み時間の短縮効果が非常に有効にはたらくということがいえる。
例えば、実施の形態としては、コンテンツファイル、プログラムなどを記憶させるための記憶媒体としてフラッシュメモリを備える携帯型コンテンツプレーヤに、本願発明を適用しているが、これ以外のフラッシュメモリを備える電子機器、装置全般に適用することができる。現状であれば、例えばフラッシュメモリにより構成される各種リムーバブル形式の記憶装置や、USBメモリなどといわれる、USB(Universal Serial Bus)端子に差し込むようにして使用する、フラッシュメモリを内蔵した記憶装置などが考えられる。
また、例えば将来的にフラッシュメモリ以外で、同様のブロック、ページ構造のフォーマットをとるような半導体メモリ装置が現れたような場合にも、これらの半導体メモリ装置に対して本願発明を適用できる。
Claims (14)
- 記憶媒体の記憶領域を所定の固定長により区切るようにして形成されるデータ消去の最小単位となる第1単位領域の物理アドレスである第1物理アドレスと、この第1単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第1論理アドレスとの対応を示すアドレス対応情報を管理するアドレス対応情報管理手段と、
上記第1単位領域を所定の固定長により区切るようにして形成されるデータ書き込みの最小単位となる第2単位領域の物理アドレスである第2物理アドレスの順に従ってデータを書き込んでいく書き込み処理と、第2単位領域に書き込まれたデータごとについて、第2単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第2論理アドレスを対応付けておくようにするアドレス設定処理とを実行するデータ書き込み実行手段と、
上記データ書き込み実行手段によりデータ書き込みを実行すべきときにおいて、データが書き込まれるべき本来の第1単位領域についてのデータの書き込みが禁止となる所定の条件を満たしている場合には、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対して上記データ書き込み実行手段によるデータ書き込みを実行させる、データ書き込み制御手段と、
上記追加用第1単位領域について、対応する本来の第1単位領域と同じ第1論理アドレスが対応付けられて管理されるようにする追加用第1単位領域管理手段と、
を備えることを特徴とする記憶媒体制御装置。 - 上記データ書き込み実行手段は、
上記アドレス設定処理として、論理アドレスを第2単位領域における所定位置に書き込むための処理を実行するようにされる、
ことを特徴とする請求項1に記載の記憶媒体制御装置。 - 上記所定の条件を満たしているか否かを判別する条件判別手段をさらに備え、
上記条件判別手段は、
上記本来の第1単位領域において未使用の第2単位領域が存在していない場合に、上記所定の条件を満たしているとの判別結果を得るようにされ、
上記データ書き込み制御手段は、
上記判別手段により上記所定の条件を満たしているとの判別結果が得られた場合に、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対して上記データ書き込み実行手段によるデータ書き込みを実行させる、
ことを特徴とする請求項1に記載の記憶媒体制御装置。 - 上記データ書き込み制御手段は、
上位処理層からの要求に応じて上記データ書き込み実行手段が上記書き込み処理の実行を開始すべきとなった場合を、上記所定の条件を満たしている場合としている、
ことを特徴とする請求項1に記載の記憶媒体制御装置。 - 少なくとも、同じ第1論理アドレスが対応付けられた上記本来の第1単位領域と上記追加用第1単位領域との間での識別を可能とするための識別情報を生成する生成手段と、
生成された上記識別情報を第1単位領域ごとに対応付けるための対応化処理を実行する識別情報設定手段と、
をさらに備える、ことを特徴とする請求項1に記載の記憶媒体制御装置。 - 上記識別情報設定手段は、
上記対応化処理として、生成された上記識別情報を上記第1単位領域における所定位置に対して書き込むための処理を実行するようにされる、
ことを特徴とする請求項5に記載の記憶媒体制御装置。 - 上記データ書き込み実行手段による上記書き込み処理に際して、上記追加用第1単位領域における未使用の第2単位領域が存在しなくなる状態となった場合に少なくとも対応して、
未使用の第1単位領域を再構築用第1単位領域として確保して、少なくとも、上記追加用第1単位領域と、対応する本来の第1単位領域とから読み出した有効な第2単位領域のデータを、上記再構築用第1単位領域の第2単位領域に書き込んでいくようにされる再構築用データ書込実行手段と、
上記再構築用第1単位領域処理手段によりデータが書き込まれた上記再構築用第1単位領域が新規な本来の第1単位領域として管理されるようにするとともに、上記追加用第1単位領域と、元の本来の第1単位領域とについて、未使用として管理されるようにする再構築用領域設定手段と、
をさらに備えることを特徴とする請求項1に記載の記憶媒体制御装置。 - 上記再構築用データ書込実行手段は、
先ず、追加用第1単位領域における第2単位領域の物理アドレスの降順に従って、未だ上記再構築用第1単位領域に書き込まれていない第2論理アドレスが対応付けられた第2単位領域のデータを探索し、この探索したデータを上記再構築用第1単位領域の第2単位領域に対して書き込んでいくようにされ、
次いで、元の第1単位領域における第2単位領域の物理アドレスの降順に従って、未だ上記再構築用第1単位領域に書き込まれていない第2論理アドレスが対応付けられた第2単位領域のデータを探索し、この探索したデータを上記再構築用第1単位領域における第2単位領域に対して書き込んでいくようにされる、
ことを特徴とする請求項7に記載の記憶媒体制御装置。 - 上記データ書き込み実行手段による上記書き込み処理に際して、上記追加用第1単位領域における未使用の第2単位領域が存在しなくなる状態となった場合において、この追加用第1単位領域における第2単位領域に書き込まれているデータに対応付けられた第2論理アドレスが、第2物理アドレスの昇順方向に応じて、連続した昇順となっている場合には、
上記再構築用データ書込実行手段によるデータ書き込みを実行しない代わりに、
上記再構築用領域設定手段は、上記追加用第1単位領域について新規な本来の第1単位領域として管理されるようにするとともに、元の本来の第1単位領域については未使用として管理されるようにする、
ことを特徴とする請求項7に記載の記憶媒体制御装置。 - 上記データ書き込み制御手段が、未使用の第1単位領域を追加用第1単位領域として確保しようとするのにあたり、追加用第1単位領域が使用可能最大数にまで使用されている状況である場合に対応しては、
上記再構築用データ書込実行手段は、
使用中の追加用第1単位領域のうちで最初に使用された追加用第1単位領域から有効な第2単位領域のデータを読み出すようにして処理を実行するようにされている、
ことを特徴とする請求項7に記載の記憶媒体制御装置。 - 第1単位領域における第2単位領域の物理アドレスの降順に従って、未だ探索済みとなっていない第2論理アドレスが対応付けられた第2単位領域のデータを探索し、この探索したデータを有効な単位読み出しデータとして保持していく探索処理を実行する読出データ探索手段と、
上記読出データ探索手段により保持された単位読み出しデータを、対応付けされている第2論理アドレス順に配列することで正常な読み出しデータを生成する第1の読出データ生成手段と、
1つの第1論理アドレスに対応付けられている第1単位領域が1つのみ存在するか、あるいは本来の第1単位領域と追加用第1単位領域が存在するかについて判別するアドレス対応状況判別手段と、
上記アドレス対応状況判別手段により本来の第1単位領域と追加用第1単位領域が存在することが判別された場合においては、
上記読出データ探索手段は、先ず、上記追加用第1単位領域を対象とする第1の探索処理を実行し、この後に本来の第1単位領域を対象とする第2の探索処理を実行するようにされ、
上記第1の読出データ生成手段は、上記第1の探索処理と上記第2の探索処理とにより保持されている単位読み出しデータを、対応付けされている第2論理アドレス順に配列することで第1単位領域分の読出データを生成するようにされる、
ことを特徴とする請求項1に記載の記憶媒体制御装置。 - 上記アドレス対応状況判別手段により本来の第1単位領域と追加用第1単位領域が存在することが判別された場合において、さらに、この追加用第1単位領域における第2単位領域に書き込まれているデータに対応付けられた第2論理アドレスが、第2物理アドレスの昇順方向に応じて、連続した昇順となっているか否かについて判別するアドレス順判別手段と、
上記アドレス順判定手段により肯定の判別結果が得られた場合においては、上記読出データ探索手段と上記第1の読出データ生成手段に代えて、追加用第1単位領域から第2物理アドレスの昇順に従って読み出したデータにより第1単位領域分の読出データを生成する処理を実行するようにされた、第2の読出データ生成手段をさらに備える、
ことを特徴とする請求項11に記載の記憶媒体制御装置。 - 記憶媒体の記憶領域を所定の固定長により区切るようにして形成されるデータ消去の最小単位となる第1単位領域の物理アドレスである第1物理アドレスと、この第1単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第1論理アドレスとの対応を示すアドレス対応情報を管理するアドレス対応情報管理手順と、
上記第1単位領域を所定の固定長により区切るようにして形成されるデータ書き込みの最小単位となる第2単位領域の物理アドレスである第2物理アドレスの順に従ってデータを書き込んでいく書き込み処理と、第2単位領域に書き込まれたデータごとについて、第2単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第2論理アドレスを対応付けておくようにするアドレス設定処理とを実行するデータ書き込み実行手順と、
上記データ書き込み実行手順によりデータ書き込みを実行すべきときにおいて、データが書き込まれるべき本来の第1単位領域についてのデータの書き込みが禁止となる所定の条件を満たしている場合には、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対して上記データ書き込み実行手順としてのデータ書き込みを実行させる、データ書き込み制御手順と、
上記追加用第1単位領域について、対応する本来の第1単位領域と同じ第1論理アドレスが対応付けられて管理されるようにする追加用第1単位領域管理手順と、
を実行することを特徴とする記憶媒体制御方法。 - 記憶媒体の記憶領域を所定の固定長により区切るようにして形成されるデータ消去の最小単位となる第1単位領域の物理アドレスである第1物理アドレスと、この第1単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第1論理アドレスとの対応を示すアドレス対応情報を管理するアドレス対応情報管理手順と、
上記第1単位領域を所定の固定長により区切るようにして形成されるデータ書き込みの最小単位となる第2単位領域の物理アドレスである第2物理アドレスの順に従ってデータを書き込んでいく書き込み処理と、第2単位領域に書き込まれたデータごとについて、第2単位領域に書き込まれるデータ内容に対応付けられる論理アドレスである第2論理アドレスを対応付けておくようにするアドレス設定処理とを実行するデータ書き込み実行手順と、
上記データ書き込み実行手順によりデータ書き込みを実行すべきときにおいて、データが書き込まれるべき本来の第1単位領域についてのデータの書き込みが禁止となる所定の条件を満たしている場合には、未使用の第1単位領域を追加用第1単位領域として確保して、この追加用第1単位領域に対して上記データ書き込み実行手順としてのデータ書き込みを実行させる、データ書き込み制御手順と、
上記追加用第1単位領域について、対応する本来の第1単位領域と同じ第1論理アドレスが対応付けられて管理されるようにする追加用第1単位領域管理手順と、
を記憶媒体制御装置に実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006106426A JP2007280108A (ja) | 2006-04-07 | 2006-04-07 | 記憶媒体制御装置、記憶媒体制御方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006106426A JP2007280108A (ja) | 2006-04-07 | 2006-04-07 | 記憶媒体制御装置、記憶媒体制御方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007280108A true JP2007280108A (ja) | 2007-10-25 |
Family
ID=38681487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006106426A Pending JP2007280108A (ja) | 2006-04-07 | 2006-04-07 | 記憶媒体制御装置、記憶媒体制御方法、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007280108A (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008097339A (ja) * | 2006-10-12 | 2008-04-24 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP2009181254A (ja) * | 2008-01-30 | 2009-08-13 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2009211232A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP2010503929A (ja) * | 2006-09-15 | 2010-02-04 | サンディスク コーポレイション | 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法 |
JP2010191782A (ja) * | 2009-02-19 | 2010-09-02 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2012503234A (ja) * | 2008-09-16 | 2012-02-02 | マイクロン テクノロジー, インク. | メモリ装置のための組み込みマッピング情報 |
JP2012033045A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | 電子機器およびデータ読み出し方法 |
JP2013012801A (ja) * | 2011-06-28 | 2013-01-17 | Konica Minolta Business Technologies Inc | データ記憶制御装置、データ記憶制御方法およびプログラム |
JP5679383B2 (ja) * | 2011-06-09 | 2015-03-04 | Necディスプレイソリューションズ株式会社 | 電子機器、電源操作ログ記録方法およびプログラム |
JP2015176629A (ja) * | 2014-03-17 | 2015-10-05 | 日本電気株式会社 | アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08221223A (ja) * | 1995-02-16 | 1996-08-30 | Mitsubishi Electric Corp | 半導体ディスク装置 |
JP2001521220A (ja) * | 1997-10-16 | 2001-11-06 | エム システムズ フラッシュ ディスク パイオニアズ リミテッド | 改善されたフラッシュファイルシステム |
JP2002366423A (ja) * | 2001-06-04 | 2002-12-20 | Samsung Electronics Co Ltd | フラッシュメモリの管理方法 |
JP2004533029A (ja) * | 2001-01-19 | 2004-10-28 | サンディスク コーポレイション | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 |
JP2005505818A (ja) * | 2001-09-28 | 2005-02-24 | エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド | 順次書き込みのみを用いるフラッシュ管理システム |
WO2005066790A1 (en) * | 2003-12-30 | 2005-07-21 | Sandisk Corporation | Management of non-volatile memory systems having large erase blocks |
-
2006
- 2006-04-07 JP JP2006106426A patent/JP2007280108A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08221223A (ja) * | 1995-02-16 | 1996-08-30 | Mitsubishi Electric Corp | 半導体ディスク装置 |
JP2001521220A (ja) * | 1997-10-16 | 2001-11-06 | エム システムズ フラッシュ ディスク パイオニアズ リミテッド | 改善されたフラッシュファイルシステム |
JP2004533029A (ja) * | 2001-01-19 | 2004-10-28 | サンディスク コーポレイション | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 |
JP2002366423A (ja) * | 2001-06-04 | 2002-12-20 | Samsung Electronics Co Ltd | フラッシュメモリの管理方法 |
JP2005505818A (ja) * | 2001-09-28 | 2005-02-24 | エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド | 順次書き込みのみを用いるフラッシュ管理システム |
WO2005066790A1 (en) * | 2003-12-30 | 2005-07-21 | Sandisk Corporation | Management of non-volatile memory systems having large erase blocks |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4682261B2 (ja) * | 2006-09-15 | 2011-05-11 | サンディスク コーポレイション | 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法 |
JP2010503929A (ja) * | 2006-09-15 | 2010-02-04 | サンディスク コーポレイション | 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法 |
JP2008097339A (ja) * | 2006-10-12 | 2008-04-24 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP4609406B2 (ja) * | 2006-10-12 | 2011-01-12 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP4687720B2 (ja) * | 2008-01-30 | 2011-05-25 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2009181254A (ja) * | 2008-01-30 | 2009-08-13 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2009211232A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP2012503234A (ja) * | 2008-09-16 | 2012-02-02 | マイクロン テクノロジー, インク. | メモリ装置のための組み込みマッピング情報 |
JP2010191782A (ja) * | 2009-02-19 | 2010-09-02 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2012033045A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | 電子機器およびデータ読み出し方法 |
US8503241B2 (en) | 2010-07-30 | 2013-08-06 | Kabushiki Kaisha Toshiba | Electronic apparatus and data reading method |
JP5679383B2 (ja) * | 2011-06-09 | 2015-03-04 | Necディスプレイソリューションズ株式会社 | 電子機器、電源操作ログ記録方法およびプログラム |
JP2013012801A (ja) * | 2011-06-28 | 2013-01-17 | Konica Minolta Business Technologies Inc | データ記憶制御装置、データ記憶制御方法およびプログラム |
JP2015176629A (ja) * | 2014-03-17 | 2015-10-05 | 日本電気株式会社 | アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007280108A (ja) | 記憶媒体制御装置、記憶媒体制御方法、プログラム | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
JP5597666B2 (ja) | 半導体記憶装置、情報処理システムおよび制御方法 | |
JP4991320B2 (ja) | ホスト装置およびメモリシステム | |
JP4931810B2 (ja) | 最適化されたシーケンシャルなクラスタの管理のためのfat分析 | |
KR100526188B1 (ko) | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 | |
US8312554B2 (en) | Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus | |
JP4633802B2 (ja) | 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 | |
TWI420305B (zh) | 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法 | |
EP2096546B1 (en) | Write once recording device | |
TW201931123A (zh) | 記憶體系統及控制方法 | |
JP2004280752A (ja) | データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム | |
WO2008013228A1 (fr) | Contrôleur de mémoire, dispositif de stockage non-volatile, dispositif d'accès et système de stockage non-volatile | |
JP2008033788A (ja) | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 | |
JP2010020586A (ja) | データ処理装置 | |
JPWO2009096180A1 (ja) | メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム | |
US20130275655A1 (en) | Memory management method and memory controller and memory storage device using the same | |
JP5066894B2 (ja) | 記憶媒体制御装置 | |
JP2024017667A (ja) | 情報処理装置および試験方法 | |
JP5395163B2 (ja) | メモリ管理装置及びメモリ領域設定方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2004078902A (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP3826115B2 (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP2013033338A (ja) | メモリシステム | |
WO2020039927A1 (ja) | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090325 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120710 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121218 |