JP2011123830A - データ書き込み装置及びデータ書き込み方法 - Google Patents
データ書き込み装置及びデータ書き込み方法 Download PDFInfo
- Publication number
- JP2011123830A JP2011123830A JP2009283167A JP2009283167A JP2011123830A JP 2011123830 A JP2011123830 A JP 2011123830A JP 2009283167 A JP2009283167 A JP 2009283167A JP 2009283167 A JP2009283167 A JP 2009283167A JP 2011123830 A JP2011123830 A JP 2011123830A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- physical block
- area
- written
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
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)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】効率良く欠陥領域を避けてデータを書き込むことが可能なデータ書き込み装置を提供すること。
【解決手段】データ書き込み装置は、データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶手段と、前記物理ブロックの前記データ領域に、データが分割されたデータブロックを書き込む書き込み手段とを備え、前記書き込み手段は、第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込む。
【選択図】図3
【解決手段】データ書き込み装置は、データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶手段と、前記物理ブロックの前記データ領域に、データが分割されたデータブロックを書き込む書き込み手段とを備え、前記書き込み手段は、第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込む。
【選択図】図3
Description
本発明は、NAND Flash等に対してプログラム等のデータを書き込むデータ書き込み装置及びデータ書き込み方法に関する。
CPU(central processing unit)により制御される代表的な機器としてパーソナルコンピュータが挙げられる。近年では、映像機器のデジタル化に伴いデジタルTV及びハードディスクレコーダなどもCPUにより動作が制御されている。CPUは、不揮発性メモリ上の欠陥領域を除く正常なデータ記憶領域に対してプログラムを記録し、また正常なデータ記憶領域からプログラムを読み出して、動作する。
このように、欠陥領域を除く正常なデータ記憶領域からプログラムを正確に読み出すためには、不揮発性メモリ上の欠陥領域を正しく管理する必要があり、不揮発性メモリ上の欠陥領域の管理方法について各種提案がなされている。例えば、セクタ#0〜#63の全てをデータ記憶用のセクタとして扱い、セクタ#0〜#63の最後尾のバイト領域B0−n〜B63−nにセクタの繋がりを示すポインタとして、次に繋がるセクタがある場合には、次に繋がるセクタの番号を格納し、次に繋がるセクタがない場合には、「0」を格納する技術が提案されている(特許文献1参照)。これにより、データ書き込み時に書き込みエラーが発生した場合においても、書き込みエラーが発生したデータと関わりを持たないデータが記憶されているデータ記憶領域に対するアクセスが不可能にならないようにすると共に、データ読み出し時におけるポインタ操作を単純化することができる。
上記のように、各セクタの最後尾の領域にセクタの繋がりを示すポインタを記録する場合では、例えば、第1セクタの最後尾の領域に第2セクタへの繋がりを示すポインタを記録したものの、第2セクタに対して正しくデータが書き込めない事態が生じ得る。このような事態が生じた場合、第1セクタの最後尾の領域に記録したポインタの修正等が必要となり、書き込み処理に関するデータの記録効率が悪くなってしまう。
本発明の目的は、効率良く欠陥領域を避けてデータを書き込むことが可能なデータ書き込み装置及びデータ書き込み方法を提供することにある。
本発明の一実施形態に係るデータ書き込み装置は、データ書き込み装置は、データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶手段と、前記物理ブロックの前記データ領域に、データが分割されたデータブロックを書き込む書き込み手段とを備え、前記書き込み手段は、第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込む。
本発明の一実施形態に係るデータ書き込み方法は、データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶媒体の前記データ領域に、データが分割されたデータブロックを書き込むデータ書き込み方法であって、第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込む。
本発明によれば、効率良く欠陥領域を避けてデータを書き込むことが可能なデータ書き込み装置及びデータ書き込み方法を提供できる。
以下、図面を参照し、本発明の実施形態について説明する。
図1は、本発明の一実施形態に係るプログラム実行装置(データ書き込み装置)の概略構成を示す図である。このプログラム実行装置は、パーソナルコンピュータ、デジタルTV、ハードディスクレコーダなどに適用することができる。
図1に示すようにプログラム実行装置は、CPUなどで構成することが可能な制御部1、NOR Flash又はMask ROM (Read Only Memory)などの第1プログラムメモリ2、NAND Flashなどで構成することが可能な第2プログラムメモリ3、RAM (Random Access Memory)などで構成することが可能なメインメモリ4を備え、制御部1、第1プログラムメモリ2、第2プログラムメモリ3、メインメモリ4は、バス5を介して接続されている。
このプログラム実行装置に対して通電後、制御部1は、第1プログラムメモリ2上のプログラムを直接実行し、第2プログラムメモリ3上のプログラムをメインメモリ4にロードする。本実施形態では、第2プログラムメモリ3に対するプログラムの書き込み、及び第2プログラムメモリ3に書き込まれたプログラムのロードについて説明する。
説明を分かり易くするために、図2に示すように、第2プログラムメモリ3は、M個(3≦M、M:自然数)のブロックを含む記憶領域により構成されているものとする。制御部1は、記憶領域に含まれた物理ブロックB0から物理ブロックBMの中から順に複数個のデータブロックを読み出す。そのために、制御部1は、後にプログラムを書き込む際には物理ブロックBMから物理ブロックB0に対して順に複数個のデータブロックを書き込む。複数個のデータブロックは、プログラムを複数個に分割して生成されたデータであるとする。
図2は、第2プログラムメモリ4に書き込まれたプログラム(例えば起動プログラム)のロード処理の一例を示す概念図である。また、図5は、第2プログラムメモリ4に書き込まれたプログラム(例えば起動プログラム)のロード処理の一例を示すフローチャートである。
例えば、第2プログラムメモリ4は、ブロックアドレス0(以下、Blk Addr0と略記する)の物理ブロックB0、Blk Addr1の物理ブロックB1、Blk Addr2の物理ブロックB2、…、Blk Addrmの物理ブロックBm、…、Blk Addr(M−4)の物理ブロックB(M−4)、Blk Addr(M−3)の物理ブロックB(M−3)、Blk Addr(M−2)の物理ブロックB(M−2)、Blk Addr(M−1)の物理ブロックB(M−1)、Blk AddrMの物理ブロックBMにより構成されている。
また、各物理ブロックは、データ領域と冗長領域を含む。即ち、物理ブロックB0は、データ領域D0と冗長領域R0を含み、物理ブロックB1はデータ領域D1と冗長領域R1を含み、物理ブロックB2はデータ領域D2と冗長領域R2を含み、…、物理ブロックBmはデータ領域Dmと冗長領域Rmを含み、…、物理ブロックB(M−4)はデータ領域D(M−4)と冗長領域R(M−4)を含み、物理ブロックB(M−3)はデータ領域D(M−3)と冗長領域R(M−3)を含み、物理ブロックB(M−2)はデータ領域D(M−2)と冗長領域R(M−2)を含み、物理ブロックB(M−1)はデータ領域D(M−1)と冗長領域R(M−1)を含み、物理ブロックBMはデータ領域DMと冗長領域RMを含む。
最初に、制御部1は、Blk Addr0の物理ブロックB0からデータを読み出す(ST501)。なお、本実施形態では、最初に、Blk Addr0の物理ブロックB0からデータを読み出すケースについて説明するが、最初に、Blk Addr0以外の物理ブロックからデータを読み出す制御であってもよい。
制御部1は、Blk Addr0の物理ブロックB0に含まれた冗長領域R0に書き込まれた、データ領域D0を管理するための情報である管理情報を読み出す。この管理情報には、例えば制御部1が物理ブロックB0を読み出した後の、次の読み出し先の物理ブロックを指し示す情報や、Blk Addr0の物理ブロックB0が不良ブロックであるか否かの情報等が含まれる。例えば、冗長領域R0に書き込まれた管理情報が、次の読み出し先を示す次の物理ブロック情報(Next Blk)であり(ST502、NO)、且つ次の物理ブロック情報がBlk Addr1を示す場合には、続いて、制御部1は、Blk Addr1の物理ブロックB1からデータを読み出す(ST503)。さらに、物理ブロックB1に含まれた冗長領域R1に書き込まれた管理情報(次の物理ブロック情報)がBlk Addr2を示す場合には(ST502、NO)、続いて、制御部1は、Blk Addr2の物理ブロックB2からデータを読み出す(ST503)。このようにして、制御部1は、冗長領域に書き込まれた管理情報(次の物理ブロック情報)を頼りにして、次々に物理ブロックからデータを読み出す。ここで、次の物理ブロック情報とは次の物理ブロックを指し示す情報であって、本実施形態において物理ブロックのアドレス情報を指す。しかし、これはあくまで例示であり、これに限定されず次の物理ブロックへのオフセット情報等により次の物理ブロック情報を示したとしてもよい。
例えば、物理ブロックB(M−3)に含まれた冗長領域R(M−3)に書き込まれた管理情報(次の物理ブロック情報)が、Blk Addr(M−1)を示す場合には(ST502、NO)、制御部1は、Blk Addr(M−1)の物理ブロックB(M−1)からデータを読み出す(ST503)。例えば、物理ブロックB(M−2)が不良ブロック(Bad Block)であれば、この物理ブロックB(M−2)を抜かして、物理ブロックB(M−1)からデータを読み出すことができる。さらに、補足すると、物理ブロックB(M−3)に含まれた冗長領域R(M−3)に書き込まれた管理情報(次の物理ブロック情報)が、Blk Addr(M−1)を示す場合には、物理ブロックB(M−2)に含まれた冗長領域R(M−2)に書き込まれた管理情報が、当該物理ブロックが不良ブロックであることを示す情報であるBad Block MARKを含んでいなくても、この物理ブロックB(M−2)を抜かして、物理ブロックB(M−1)からデータを読み出すことができる。
物理ブロックB(M−1)に含まれた冗長領域R(M−1)に書き込まれた管理情報(次の物理ブロック情報)が、Blk AddrMを示す場合には(ST502、NO)、制御部1は、Blk AddrMの物理ブロックBMからデータを読み出す(ST503)。制御部1は、冗長領域から、データの終端であることを示す情報が読み出されるまで、読み出し処理を継続する。例えば、物理ブロックBMに含まれた冗長領域RMに書き込まれた管理情報が、次の物理ブロック情報ではなく、データの終端であることを示す情報であれば(ST502、YES)、制御部1は、一連のデータの読み出し処理を終了する。
図3は、第2プログラムメモリ4に対してプログラム(例えば起動プログラム)の書き込み処理の一例を示す概念図である。また、図6は、第2プログラムメモリ4に対してプログラム(例えば起動プログラム)の書き込み処理の一例を示すフローチャートである。
図3に示すように、起動プログラムが、第2プログラムメモリ4を構成する各ブロックのサイズに応じて分割され、複数個(N個)のデータブロックが生成される。つまり、起動プログラムが、各物理ブロックのデータ領域のサイズに応じて分割され、複数個(N個)のデータブロックが生成され、これら複数個(N個)のデータブロックが、複数個(M個)の物理ブロックの中に書き込まれる(ST601)。
制御部1は、起動プログラムから生成された複数個(N個)のデータブロックを、物理ブロックBMから物理ブロックB0の順に書き込む。なお、本実施形態では、最終端の物理ブロックBMからデータブロックを書き始めるケースについて説明するが、本発明は、最初に読み出される物理ブロック以外の物理ブロックから書き始めるものであれば最終端の物理ブロックBMからの書き始めに限定されるものではない。
最初に、制御部1は、Blk AddrMの物理ブロックBMが不良ブロックでない場合(ST602、NO)(ST603、NO)、物理ブロックBMに含まれたデータ領域DMに対して第1データブロック(N番目のデータブロック)を書き込み(ST604)、物理ブロックBMに含まれた冗長領域RMに対して管理情報(データの終端であることを示す情報)を書き込む(ST605、YES)(ST607)。なお、第1データブロック(N番目のデータブロック)は、最後に読み出されるデータブロックである。
物理ブロックBMに対して正しくデータが書き込まれた場合(ST608、YES)、続いて、制御部1は、Blk AddrM(=Last M)に対して正しくデータが書き込まれた旨の情報を保持し、Blk Addr(M−1)の物理ブロックB(M−1)に対する第2データブロック((N−1)番目のデータブロック)の書き込み処理へ移行する(ST609)(ST610、NO)(ST612)。
制御部1は、Blk Addr(M−1)の物理ブロックB(M−1)が不良ブロックでない場合(ST602、NO)(ST603、NO)、物理ブロックB(M−1)に含まれたデータ領域D(M−1)に対して第2データブロック((N−1)番目のデータブロック)を書き込み(ST604)、物理ブロックB(M−1)に含まれた冗長領域R(M−1)に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む(ST605、NO)(ST606)。ここでは、管理情報として、Blk AddrMが書き込まれる。
物理ブロックB(M−1)に対して正しくデータが書き込まれた場合(ST608、YES)、続いて、制御部1は、Blk Addr(M−1)に対して正しくデータが書き込まれた旨の情報を保持し、Blk Addr(M−2)の物理ブロックB(M−2)に対する第3データブロック((N−2)番目のデータブロック)の書き込み処理へ移行する(ST609)(ST610、NO)(ST612)。
例えば、物理ブロックB(M−2)が不良ブロック(Bad Block)である場合(ST602、NO)(ST603、YES)、制御部1は、Blk Addr(M−3)の物理ブロックB(M−3)に対する第3データブロック((N−2)番目のデータブロック)の書き込み処理へ移行する(ST612)。或いは、物理ブロックB(M−2)に対するデータの書き込みに失敗した場合には(ST608、NO)、制御部1は、物理ブロックB(M−2)に含まれた冗長領域R(M−2)に対して管理情報(Bad Block MARK)を書き込み(ST611)、Blk Addr(M−3)の物理ブロックB(M−3)に対する第3データブロック((N−2)番目のデータブロック)の書き込み処理へ移行する(ST612)。
続いて、制御部1は、Blk Addr(M−3)の物理ブロックB(M−3)が不良ブロックでない場合(ST602、NO)(ST603、NO)、物理ブロックB(M−3)に含まれたデータ領域D(M−3)に対して第3データブロック((N−2)番目のデータブロック)を書き込み(ST604)、物理ブロックB(M−3)に含まれた冗長領域R(M−3)に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む(ST605、NO)(ST606)。ここでは、管理情報として、Blk Addr(M−1)が書き込まれる。
このようにして、制御部1は、欠陥ブロックを抜かして、次々に物理ブロックに対してデータを書き込む。
最終的に、制御部1は、Blk Addr0の物理ブロックB0に含まれたデータ領域D0に対して、複数個(N個)のデータブロックの内の一番最後に書き込まれるデータブロックである最終データブロックを書き込み、物理ブロックB0に含まれた冗長領域R0に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む(ST613)。なお、最終データブロックが、最初に読み出されるデータとなる。
また、上記説明では書き込み済みデータの消去に関する説明を省略したが、制御部1は、各物理ブロックの書き込み済みデータを消去してから、各物理ブロックに対してデータを書き込む。例えば、制御部1は、物理ブロックBMに含まれたデータ領域DMの書き込み済みデータを消去してから、データ領域DMに対して第1データブロックを書き込む。同様に、制御部1は、物理ブロックBMに含まれた冗長領域RMの書き込み済みデータを消去してから、冗長領域RMに対して管理情報を書き込む。
上記したように、読み出しの順序(図2及び図5)と逆の順序でデータブロックを書き込む。ここで例えば、読み出し順序と同じ順序でデータブロックを書き込むとした場合を考える。ある物理ブロックBmにデータブロックを書き込んだ後、当該物理ブロックBmの冗長領域Rmに管理情報(次の読み出し先の物理ブロックB(m+1)を示す次のブロック情報)を書き込んだとすると、次に書き込もうとする(つまりは次に読み出される)物理ブロックB(m+1)が不良ブロックであるとき、物理ブロックB(m+1)に対してデータブロックは正しく書き込めないため、前の読み出し先の物理ブロックBmの冗長領域Rmに書き込まれた管理情報は正しくない情報となり、データの信頼性が低下する。
この管理情報の不整合を解消するためには、次のような管理情報の書き換えが必要となる。例えば、上記したように、物理ブロックBmにデータブロックを書き込んだ後、物理ブロックB(m+1)に対して次のデータブロックが書き込めず、物理ブロックB(m+2)に対して次のデータブロックが書き込めたとする。この場合、物理ブロックBmの冗長領域Rmには、正しくない管理情報(次の読み出し先の物理ブロックB(m+1)を示す次のブロック情報)が書き込まれているため、この正しくない管理情報(次の読み出し先の物理ブロックB(m+1)を示す次のブロック情報)を、正しい管理情報(次の読み出し先の物理ブロックB(m+2)を示す次のブロック情報)に書き直す必要があり、この処理を行ったとすると処理効率が悪い。またさらに、例えばNAND Flashメモリ等のような記憶媒体において、物理ブロック内の冗長領域の書き換えを行う場合には、データの消去は各物理ブロック単位で行われる。このため正しく書き込まれていたデータ領域のデータも消去して、再度書き込まなければならず、書き込み処理全体の効率が低減してしまう。
上述のように読み出し順序と同じ順序でデータブロックを書き込む場合には、書き込み先の物理ブロックに不良ブロックが含まれていると、データの信頼性が低下し、またこれを解消するための処理を行う必要が出てきてしまうため処理効率が悪い。
本実施形態においては、読み出しの順序(図2及び図5)と逆の順序でデータブロックを書き込むため、物理ブロックBMに対してデータブロックを正しく書き込むことができた後で、物理ブロックB(M−1)に含まれた冗長領域R(M−1)に対して管理情報(次の読み出し先を示すBlk AddrM)を書き込むこととなり、書き込み先の物理ブロックに不良ブロックが存在する場合であったとしても管理情報を書き直さずに済む。このため、上述の書き込み処理では、データの信頼性が低下することなく、効率よく欠陥領域を避けてデータを書き込むことができる。
読み出しの順序(図2及び図5)と同じ順序でデータを書き込み、且つ管理情報の書き直しを防ぐためには、次のようにデータを書き込むようにしてもよい。
最初に、制御部1は、Blk Addr0の物理ブロックB0に含まれたデータ領域D0に対して最終データブロック(最初に読み出されるデータブロック)を書き込み、続いて、制御部1は、Blk Addr1の物理ブロックB1に含まれたデータ領域D1に対して後続のデータブロックを書き込み、データ領域D1に対する後続のデータブロックの書き込みに成功したことを確認してから、物理ブロックB0に含まれた冗長領域R0に対して管理情報(次の読み出し先を示すBlk Addr1)を書き込む。
例えば、制御部1が、Blk Addr(M−3)の物理ブロックB(M−3)に含まれたデータ領域D(M−3)に対してデータブロックを書き込み、続いて、制御部1は、Blk Addr(M−2)の物理ブロックB(M−2)に含まれたデータ領域D(M−2)に対してデータブロックを書き込み、データ領域D(M−2)に対するデータブロックの書き込みに失敗した場合には、制御部1は、Blk Addr(M−1)の物理ブロックB(M−1)に含まれたデータ領域D(M−1)に対してデータブロックを書き込み、データ領域D(M−1)に対するデータブロックの書き込みに成功した場合には、物理ブロックB(M−3)に含まれた冗長領域R(M−3)に対して管理情報(次の読み出し先を示すBlk Addr(M−1))を書き込む。
以上により、読み出しの順序(図2及び図5)と同じ順序でデータを書き込んでも、管理情報の書き直しを防ぐことができる。
図4は、第2プログラムメモリ4に対する最終データブロックの書き込み処理の別例を示す概念図である。
Blk Addr0の物理ブロックB0からデータの読み出しを開始することが定められている場合であって、物理ブロックB0が不良ブロック(Bad Block)に該当してしまった場合、又は物理ブロックB0に対するデータの書き込みに失敗した場合には、制御部1は、第2プログラムメモリからデータを正しくロードすることが難しくなってしまう。
そこで、図4に示すように、最終データブロックを、2以上の物理ブロックに書き込む。本書き込み処理例では、最終データブロックを、4個の物理ブロックに多重書きするケースについて説明する。
例えば、Blk Addr4の物理ブロックB4に対して正しくデータが書き込まれた場合、制御部1は、Blk Addr3の物理ブロックB3に含まれたデータ領域D3に対して最終データブロックを書き込み、物理ブロックB3に含まれた冗長領域R3に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む。ここでは、管理情報として、Blk Addr4が書き込まれる。
さらに、制御部1は、Blk Addr2の物理ブロックB2に含まれたデータ領域D2に対しても最終データブロックを書き込み、物理ブロックB2に含まれた冗長領域R2に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む。ここでも、管理情報として、Blk Addr4が書き込まれる。
さらに、制御部1は、Blk Addr1の物理ブロックB1に含まれたデータ領域D1に対しても最終データブロックを書き込み、物理ブロックB1に含まれた冗長領域R1に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む。ここでも、管理情報として、Blk Addr4が書き込まれる。
さらに、制御部1は、Blk Addr0の物理ブロックB0に含まれたデータ領域D0に対しても最終データブロックを書き込み、物理ブロックB0に含まれた冗長領域R0に対して管理情報(次の読み出し先を示す次の物理ブロック情報(Next Blk))を書き込む。ここでも、管理情報として、Blk Addr4が書き込まれる。
このように、制御部1は、最終データブロックを冗長的に書き込む。読み出し時には、制御部1は、物理ブロックB0、B1、B2、B3から読み出されたデータD0、D1、D2、D3を比較し、データD0、D1、D2、D3のうちの最も信頼性の高いデータを選択する。例えば、多数決を利用して、最も信頼性の高いデータを選択することができる。データD0とデータD1とが実質的に同一で、データD2がデータD0、D1、D3の何れとも実質的に同一ではなく、データD3がデータD0、D1、D2の何れとも実質的に同一でなければ、データD0又はデータD1を最も信頼性の高いデータとして選択することができる。これにより、読み出し時のエラー等を防止することができる。
本実施形態のプログラム実行装置は、上記したように、NAND Flashの各物理ブロックの冗長領域に管理情報(次の物理ブロック情報)を書き込む。これにより、NAND Flash の仮想アドレスと物理アドレスの対応付けのために(物理アドレスと論理アドレスとを変換するために)、NAND Flashのすべての物理ブロックのデータを読み取る必要がなくなるため(アドレス変換テーブルを作成する必要がなくなるため)、高速起動が可能となる(起動プログラムの高速読み出しが可能となる)。
また、NAND Flashを構成する複数の物理ブロックの中にデータ書き込み不能ブロックが存在する場合でも、つまりBad Block MARKさえ書き込むことができない書き込み不能ブロックが存在する場合でも、正常ブロックの冗長領域に書き込まれた管理情報(次の物理ブロック情報)を頼りにすれば、書き込み不能ブロックを抜かして、正常ブロックだけからデータを読み出すことができる。即ち、NAND Flashを構成する複数の物理ブロックの中に書き込み不能ブロックが存在しても、起動プログラムを正しく読み出すことができる。
なお、本願発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
1…制御部、2…第1プログラムメモリ、3…第2プログラムメモリ、4…メインメモリ、5…バス
Claims (8)
- データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶手段と、
前記物理ブロックの前記データ領域に、データが分割されたデータブロックを書き込む書き込み手段と、
を備え、
前記書き込み手段は、第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込むこと
を特徴とするデータ書き込み装置。 - 前記書き込み手段は、前記第2の物理ブロックが正常ブロックではなく、第3の物理が正常ブロックであるとき、
前記第2のデータ領域に対して前記第2のデータブロックの書き込みは行わず、前記第3の物理ブロックのデータ領域である第3のデータ領域に対して前記第2のデータブロックを書き込み、前記第3の物理ブロックの冗長領域である第3の冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込むこと
を特徴とする請求項1記載のデータ書き込み装置。 - 前記書き込み手段は、前記物理ブロックにデータブロックを書き込む前に、書き込み先の物理ブロックに書き込まれているデータを消去してから前記書き込み先の物理ブロックに対してデータブロックの書き込みを行うこと
を特徴とする請求項1記載のデータ書き込み装置。 - 前記書き込み手段は、前記第1のデータブロックが前記データのうち最後に読み出されるべきデータブロックであるとき、前記第1の物理ブロックの冗長領域である第1の冗長領域に対して前記第1のデータブロックが前記データのうち最後に読み出されるデータブロックであることを示す情報を書き込むこと
を特徴とする請求項1記載のデータ書き込み装置。 - 前記書き込み手段は、前記データの内の最初に読み出されるべき第3のデータブロックを複数の物理ブロックのデータ領域に対して書き込み、前記複数の物理ブロックの冗長領域に次の読み出し先である第4の物理ブロックを指し示す情報を書き込むこと
を特徴とする請求項1記載のデータ書き込み装置。 - 前記書き込み手段は、前記第1のデータ領域に対して第1のデータブロックの書き込みが終わった後に、前記第2の冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込むこと
を特徴とする請求項1記載のデータ書き込み装置。 - 前記書き込み手段は、前記第2の物理ブロックの冗長領域に対して書き込む前記第1の物理ブロックを指し示す情報として、前記第1の物理ブロックのアドレスを書き込むこと
を特徴とする請求項1記載のデータ書き込み装置。 - データ領域と冗長領域を有する物理ブロックを含む記憶領域により構成された記憶媒体の前記データ領域に、データが分割されたデータブロックを書き込むデータ書き込み方法であって、
第1のデータブロックを第1の物理ブロックのデータ領域である第1のデータ領域に書き込み、
前記データを読み出す際に第1のデータブロックの前に読み出されるべきデータブロックである第2のデータブロックを第2の物理ブロックのデータ領域である第2のデータ領域に書き込み、
前記第2の物理ブロックの冗長領域に対して前記第1の物理ブロックを指し示す情報を書き込むこと
を特徴とするデータ書き込み方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009283167A JP2011123830A (ja) | 2009-12-14 | 2009-12-14 | データ書き込み装置及びデータ書き込み方法 |
US12/950,738 US20110145519A1 (en) | 2009-12-14 | 2010-11-19 | Data writing apparatus and data writing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009283167A JP2011123830A (ja) | 2009-12-14 | 2009-12-14 | データ書き込み装置及びデータ書き込み方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011123830A true JP2011123830A (ja) | 2011-06-23 |
Family
ID=44144197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009283167A Pending JP2011123830A (ja) | 2009-12-14 | 2009-12-14 | データ書き込み装置及びデータ書き込み方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110145519A1 (ja) |
JP (1) | JP2011123830A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016524770A (ja) * | 2014-06-27 | 2016-08-18 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002297444A (ja) * | 2001-04-02 | 2002-10-11 | Mitsubishi Electric Corp | データ記録方法およびデータ読み出し方法 |
JP2005157649A (ja) * | 2003-11-25 | 2005-06-16 | Oki Data Corp | 記憶データアクセス装置 |
JP2006277395A (ja) * | 2005-03-29 | 2006-10-12 | Matsushita Electric Ind Co Ltd | 情報処理装置及び情報処理方法 |
JP2007334935A (ja) * | 2006-06-12 | 2007-12-27 | Sony Corp | 不揮発性メモリ |
-
2009
- 2009-12-14 JP JP2009283167A patent/JP2011123830A/ja active Pending
-
2010
- 2010-11-19 US US12/950,738 patent/US20110145519A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002297444A (ja) * | 2001-04-02 | 2002-10-11 | Mitsubishi Electric Corp | データ記録方法およびデータ読み出し方法 |
JP2005157649A (ja) * | 2003-11-25 | 2005-06-16 | Oki Data Corp | 記憶データアクセス装置 |
JP2006277395A (ja) * | 2005-03-29 | 2006-10-12 | Matsushita Electric Ind Co Ltd | 情報処理装置及び情報処理方法 |
JP2007334935A (ja) * | 2006-06-12 | 2007-12-27 | Sony Corp | 不揮発性メモリ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016524770A (ja) * | 2014-06-27 | 2016-08-18 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム |
US10203899B2 (en) | 2014-06-27 | 2019-02-12 | Huawei Technologies Co., Ltd. | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system |
Also Published As
Publication number | Publication date |
---|---|
US20110145519A1 (en) | 2011-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901987B1 (ja) | 記憶装置、電子機器及び誤りデータの訂正方法 | |
US8898372B2 (en) | Memory storage device, memory controller, and data writing method | |
JP5426711B2 (ja) | メモリコントローラ及び不揮発性記憶装置 | |
JP4373943B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2008198310A (ja) | ビットエラーの修復方法および情報処理装置 | |
US8756398B2 (en) | Partitioning pages of an electronic memory | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
TW200921360A (en) | Data preserving method and data accessing method for non-volatile memory | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
US20150113311A1 (en) | Storage control apparatus, storage apparatus, information processing system, and storage control method therefor | |
KR100757128B1 (ko) | 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법 | |
JP5592478B2 (ja) | 不揮発性記憶装置及びメモリコントローラ | |
US8943289B2 (en) | Data moving method for flash memory module, and memory controller and memory storage apparatus using the same | |
JP2006039772A (ja) | メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法 | |
US8762685B2 (en) | Data writing method, memory controller and memory storage apparatus | |
JP2008191701A (ja) | エラー回復処理方法および情報処理装置 | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US20130067141A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
JP2011123830A (ja) | データ書き込み装置及びデータ書き込み方法 | |
JP2010128697A (ja) | メモリシステム | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2008158908A (ja) | メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法 | |
JP4692843B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP3934659B1 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP2009181254A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20110307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110329 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110726 |