JP4357304B2 - 外部記憶装置 - Google Patents

外部記憶装置 Download PDF

Info

Publication number
JP4357304B2
JP4357304B2 JP2004004097A JP2004004097A JP4357304B2 JP 4357304 B2 JP4357304 B2 JP 4357304B2 JP 2004004097 A JP2004004097 A JP 2004004097A JP 2004004097 A JP2004004097 A JP 2004004097A JP 4357304 B2 JP4357304 B2 JP 4357304B2
Authority
JP
Japan
Prior art keywords
block
data
register
value
storage device
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
JP2004004097A
Other languages
English (en)
Other versions
JP2005196634A (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.)
Buffalo Inc
Original Assignee
Buffalo Inc
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 Buffalo Inc filed Critical Buffalo Inc
Priority to JP2004004097A priority Critical patent/JP4357304B2/ja
Priority to US11/031,985 priority patent/US7145801B2/en
Publication of JP2005196634A publication Critical patent/JP2005196634A/ja
Application granted granted Critical
Publication of JP4357304B2 publication Critical patent/JP4357304B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明は、フラッシュメモリを搭載した外部記憶装置に関するものである。
従来から、不揮発性の半導体メモリであるフラッシュメモリを搭載した外部記憶装置がある。フラッシュメモリは、電源を切ってもデータが消えず、他の不揮発性メモリであるEEPROM(Electrically Erasable Programmable ROM)よりも比較的低価格であるなどの特徴を有する。反面、フラッシュメモリには、その構造上、データの消去をブロック単位で行なうことや、ブロックの消去回数に制限があることなどの制約がある。特に、特定のブロックのみの消去を繰り返すことで、メモリとして寿命が著しく低下することがある。こうしたフラッシュメモリの特徴から、外部記憶装置としてフラッシュメモリを使用する場合には、各ブロックの消去回数(つまりデータの書換え回数)を平準化する処理が行なわれている。
例えば、特許文献1には、ソフトウェア内において、所定のデータの記憶領域として割り当てられた仮想アドレス(論理アドレスとも言う)とフラッシュメモリの各ブロックの物理的なアドレス(物理アドレスと言う)とを結び付けるアドレス変換テーブル(マップ)を用い、ブロックの消去回数の平準化を図りつつ、データを書き込む仮想アドレスに対応したフラッシュメモリの物理ブロック(物理アドレス)を特定する技術が開示されている。
特表2001−521220号公報
しかしながら、こうしたアドレス変換の処理では、論理アドレスと物理アドレスとを変換する複雑なファームウェアソフトが必要であり、ファームウェア構造が複雑でかつ処理に時間がかかっていた。また、こうした処理をソフトウェアで実行すると、ソフトウェアでの処理が増大し、結局、処理時間がかかってしまう。
本発明は、こうした問題の少なくとも一部を解決し、消去回数の平準化を考慮したデータの書き込み可能なブロックの選出をハードウェアとして実装した外部記憶装置を構築することを目的とする。
本発明の第1の外部記憶装置は、上記課題の少なくとも一部を解決するため、データを記憶する複数のブロックから構成され、データバスに接続されたフラッシュメモリを有し、更にブロック管理レジスタ,n個の演算ゲート,n個の制御回路,ブロック選出手段,記憶手段を備える構成を採った。このブロック管理レジスタは、ブロック毎に前記ブロックの使用状況を示す使用可否レジスタと、該ブロックのデータの消去回数の情報を示すn個(nは2以上の整数)の消去回数レジスタとからなる。また、n個の演算ゲートは、前記使用可否レジスタの値と前記各消去回数レジスタの値との論理積をそれぞれ演算し、n個の制御回路は、前記演算ゲートの出力値に基づいて、使用可能であるブロックを消去回数に応じてn個のグループに分類する。この一の制御回路は、前記一のグループにおいて、前記ブロックの構成順に使用可能な該ブロックを特定する第1の回路と、前記一のグループ内で、使用可能なブロックが存在しないことを示す信号を出力する第2の回路とを有する。ブロック選出手段は、前記一の制御回路における前記第2の回路の出力タイミング毎に、前記n個のグループを所定順序で周回し、前記第1の回路の出力値に基づいて、使用可能な前記ブロックを選出し、記憶手段は選出されたブロックに該データを記憶する。
また、本発明の第1の外部記憶装置に対応するデータの書き込み方法は、データを記憶する複数のブロックから構成され、データバスに接続されたフラッシュメモリを有する外部記憶装置の該データの書き込み方法であって、前記ブロック毎に、該ブロックの使用状況および該ブロックの消去回数を示す情報を記憶し、前記情報に基づいて、使用可能であるブロックを消去回数に応じてn個のグループに分類し、前記データの書き込みを行なう前記n個のグループを所定順序で周回し、該一のグループにおいて、前記使用可能なブロックに、該ブロックの構成順で前記データを書き込み、該使用可能なブロックへの書き込み終了後、該所定順序で他のグループを選択して該ブロックに該データを書き込むことを要旨としている。
本発明の第1の外部記憶装置およびそのデータの書き込み方法によれば、フラッシュメモリを構成するブロック毎に記憶した使用状況、消去回数の情報に基づいて、複数のブロックを消去回数に応じたn個のグループに分類する。データの書き込みに際しては、分類した一のグループの使用可能(つまり空き)ブロックを、ブロックの構成順に使用する。一のグループの空きブロックを全て使用すると、所定順序で選択された別のグループの使用可能なブロックにデータを書き込む。順次n個のグループの間で、データの書き込みに使用するブロックを選出する担当を交替して、選出されたブロックにデータを書き込む。したがって、消去回数に応じて分類されたn個のグループが順次交替することで、フラッシュメモリ全体としてブロックの消去回数を平準化することができる。また、外部記憶装置のデータの書き込みに使用するブロックの選出処理は、レジスタやゲートからなるハードウェア回路にて構成されるため、ソフトウェアでの処理に比べ、処理速度を向上することができる。
上記の構成を有する外部記憶装置において、nは2以上の整数であればいくつでも良いが、前記nは2であり、前記ブロック管理レジスタの2個の消去回数レジスタは、前記ブロックの消去回数が0回または偶数回であることを示す第1の消去回数レジスタと、前記ブロックの消去回数が奇数回であることを示す第2の消去回数レジスタとからなり、前記2個の演算ゲートは、前記使用可否レジスタと前記第1の消去回数レジスタとの論理積を演算する第1ゲートと、前記使用可否レジスタと前記第2の消去回数レジスタとの論理積を演算する第2ゲートとからなり、前記2個の制御回路は、前記第1ゲートの出力値を入力し、前記使用可能なブロックの消去回数が0回または偶数回であるグループを示す第1の制御回路と、前記第2ゲートの出力値を入力し、前記使用可能なブロックの消去回数が奇数回であるグループを示す第2の制御回路とからなり、前記ブロック選出手段は、前記第2の回路の出力タイミングに基づいて、前記使用可能な前記ブロックを選出するグループを、前記第1の制御回路と前記第2の制御回路との間で順次交替して該使用可能なブロックの番号を出力するものとしても良い。
かかる外部記憶装置によれば、使用可能なブロックを、消去回数が0回または偶数回のグループと、奇数回のグループとの2個のグループに分類し、両グループの間で書き込みに使用するブロックの選出する担当を繰り返し交替する。したがって、少ないレジスタおよびゲートで容易にシステムを構築することができる。
上記の構成を有する外部記憶装置において、前記ブロック管理レジスタは、前記ブロックが不良であるか否かを示す良否レジスタを備え、前記n個の演算ゲートは、前記使用可否レジスタの値と前記各消去回数レジスタの値とに加えて、前記良否レジスタの値との論理積をそれぞれ演算するものとしても良い。かかる外部記憶装置によれば、ブロック毎の良否を示すレジスタを追加することで、書き込みに使用するブロックの選択肢から、不良なブロックを取り除くことができる。
上記の構成を有する外部記憶装置において、前記ブロック管理レジスタは、前記データの記憶領域として割り当てられた仮想メモリ空間上のアドレスである論理アドレスを格納する論理アドレスレジスタを有し、前記ブロック毎に、所定の論理アドレスと、前記論理アドレスレジスタに格納するアドレスとを比較する比較器を備え、前記記憶手段は、前記データを一のブロックに書き込むタイミングで、該一のブロックに対応する前記論理アドレスレジスタに前記論理アドレスを格納し、該書き込んだデータの読み出しを所望する際、該比較器の出力値に基づいて、該所望するデータを書き込んだ該ブロックを特定し、該ブロックから該データを読み出す手段を備えるものとすることができる。
かかる外部記憶装置によれば、データを一のブロックに書き込むタイミングで、その書き込むデータの論理アドレスを論理アドレスレジスタに記憶する。フラッシュメモリからデータを読み出す際には、読み出しを所望する論理アドレスと、使用中の全てのブロックの論理アドレスレジスタに格納したアドレスとを、一斉に各比較器で比較する。比較した結果、該当するブロックから、所望するデータが出力される。したがって、所定のデータがフラッシュメモリ内のどのブロックに格納されていても、各比較器を用いることで瞬時に所望するデータの読み出しが実行できる。
上記の構成を有する外部記憶装置の記憶手段は、前記データの記憶領域として割り当てられた仮想メモリ空間上のアドレスである論理アドレスと、前記ブロック選出手段により選出され、該データを記憶するブロックの物理的なアドレスとの対応関係を表わすテーブルを生成し、該テーブルに基づいて該データを記憶するものとしても良い。かかる外部記憶装置によれば、使用可能なブロックの選出はハードウェア的に行ない、対応関係を表わすテーブルをソフトウェア的に生成する。このテーブルを用いることで、論理アドレスに対応する物理アドレスを容易に選定し、所望するデータの読み出しをすることができる。
上記の構成を有する外部記憶装置のブロック管理レジスタは、不揮発性のメモリを用いて構成されるものとしても良い。かかる外部記憶装置によれば、ブロックへのアクセスタイミング毎に変更されるブロック毎の所定の情報は、不揮発性のメモリに記憶される。したがって、電源の供給が断たれても、ブロックを管理するための所定の情報を常に記憶しておくことができる。
上記の構成を有する外部記憶装置は、前記ブロック管理レジスタに格納する所定値を所定のタイミングで不揮発的に記憶する記憶部を備え、前記外部記憶装置への電源投入の際、前記記憶部の有する前記所定値を、前記ブロック管理レジスタへ転送するものとしても良い。かかる外部記憶装置によれば、所定のタイミングで不揮発的な記憶部に書き込んだ所定値は、システムへの電源の供給が断たれても記憶され、その所定値を電源投入時にブロック管理レジスタに転送することができる。
上記の構成を有する外部記憶装置の前記記憶部は、前記フラッシュメモリの一部分に予め確保された領域であるものとしても良い。かかる外部記憶装置によれば、ブロック管理レジスタに格納された情報を記憶する領域として、フラッシュメモリの一部を使用する。したがって、新たに不揮発性のメモリを設ける必要がない。
上記の構成を有する外部記憶装置のフラッシュメモリは、NAND型構造のフラッシュメモリであるものとしても良い。
以下、本発明の実施の形態について実施例に基づき次の順序で説明する。
A.外部記憶装置の概略構成:
B.書き込みブロックの平準化処理:
(B−1)第1の演算回路:
(B−2)第2の演算回路:
(B−3)ブロックの特定回路:
(B−4)平準化処理の一例:
C.データのアクセス処理:
D.変形例:
A.外部記憶装置の概略構成:
図1は、本発明の第1実施例としての外部記憶装置10の構成を示す全体ブロック図である。図示するように、この外部記憶装置10は、外部機器とデータをやり取りするホストI/F20,CPU30,プログラムメモリ40,RAM50,外部からのデータを不揮発的に保存するフラッシュメモリ60,フラッシュメモリ60へのデータの読み書きを制御するフラッシュコントローラ70等から構成されている。
ホストI/F20は、ユニバーサルシリアルバス(USB)規格に準拠し、外部機器(例えば、パーソナルコンピュータやデジタルスチルカメラ等)との接続が可能である。外部機器から外部記憶装置10へのデータの書き込みや読み出し等のアクセスは、このホストI/F20を介して行なわれる。なお、ホストI/F20は、USBに限らず、IEEE1394やATAの規格に準拠するものとしても良い。
CPU30は、電源投入時にプログラムメモリ40から実行プログラムを読み込み、外部記憶装置10全体の動作環境を整える。CPU30は、例えば、ホストI/F20を介して、外部機器からデータの書換え要求を受けた場合には、フラッシュメモリ60への実際の書き込みに先立って、RAM50を作業領域として、一次的にフラッシュメモリ60内のデータを読み込み、データの修正を行なう。これは、フラッシュメモリ60のデータの消去がブロック単位で行なわれるからである。そして、データの修正を行なった後、フラッシュメモリ60にデータを書き込む。具体的には、CPU30は、フラッシュメモリ60内のデータの読み出し指示、修正データの書き込み指示等をフラッシュコントローラ70へ出力している。
フラッシュコントローラ70は、CPU30の指令に従い、フラッシュメモリ60からのデータの読み出し、データの書き込み、データの消去などのフラッシュメモリ60内のデータを管理、制御している。具体的には、フラッシュメモリ60の寿命を低下させる特定領域への頻繁なデータの書換えを回避するため、データの書き込み可能な領域を演算し、フラッシュメモリ60のデータ書き込み領域を平均的に使用する制御(平準化処理と呼ぶ)をハードウェアにより実施している。この平準化処理については、後述する。
フラッシュメモリ60は、データを書き込む領域である複数のブロックから構成され、各ブロックにデータを記憶するメモリである。図2は、本実施例で採用するフラッシュメモリ60の構造である。本実施例では、256Mbitの容量を有するNAND型のフラッシュメモリを使用している。図示するように、このフラッシュメモリ60は、フラッシュコントローラ70からの指令を受けてデータを一時的に格納するデータレジスタRと、データの記憶領域である2047個の物理的なブロックBとからなる。この1つのブロックBは、32ページPの領域に分割されている。
このフラッシュメモリ60は、ブロック単位でデータの消去を行ない、ページ単位でデータの読み出し、書き込みを行なうことができる。読み出し、書き込みの最小単位である1ページは、512バイトのデータ書き込み領域80と、エラー訂正符号(ECC符号)等を格納する16バイトの冗長部領域85とから構成されている。このECC(Error Correcting Code)符号は、フラッシュコントローラ70内のECC回路にて、ブロックに書き込まれるデータに対してページ単位で生成される。つまり、フラッシュコントローラ70は、データの書き込み段階で、ECC符号をデータに付加して、フラッシュメモリ60に格納している。冗長部領域85に格納されたECC符号は、CPU30からのデータの読み出しの指令を受けた時に、読み出したデータにエラーがあるか否かの判断に利用される。エラーが判断され、所定範囲内のエラーである場合には、フラッシュコントローラ70内のECC回路は、ECC符号に基づいてエラーの訂正を行なう。なお、こうしたECC符号による訂正は、CPU30にて実行するものとしても良い。
こうした構成からなる外部記憶装置10に対して、例えば、外部機器であるパーソナルコンピュータから、あるファイルデータの書き込み指示が送信された場合には、ホストI/F20を介してデータを受信したCPU30は、そのファイルデータを16Kバイトのブロック単位で取り扱い、ブロック単位での書き込み指令をフラッシュコントローラ70に出力する。指令を受けたフラッシュコントローラ70は、書き込みに使用するブロックを選出する。そして、選出された書き込みに使用するブロックに、データレジスタRに一時的に格納したデータを瞬時に書き込む。この書き込みの単位は、上述のようにページ単位である。フラッシュコントローラ70は、16Kバイト分のデータを順次ページ単位で読み出してデータレジスタRに書き込んでいる。こうして、フラッシュコントローラ70は、所定のブロックのページに順次データを書き込む。書き込むファイルデータが、16Kバイトを超える容量の場合には、次に書き込みに使用するブロックを選出し、データを書き込む。なお、ファイルデータを16Kバイト単位で扱い、端数のデータも次のブロックに書き込むため、一のブロックには未使用ページが存在することとなる。こうした書き込みに使用するブロックの選出には、各ブロックの管理情報を用いている。
本実施例では、各ブロックの管理情報を格納する領域であるブロック管理レジスタをフラッシュコントローラ70に設けている。ブロック管理レジスタは、3種類のレジスタからなる管理情報レジスタと、論理アドレスレジスタとから構成されている。管理情報レジスタは、ブロックが不良か否かを示す値を格納するレジスタ,ブロックが使用中であるか否かを示す値を格納するレジスタ,ブロックの消去履歴を判断するための値を格納するレジスタを備えている。論理アドレスレジスタは、一のブロックに書き込むデータに対して、仮想的に割り当てた記憶領域のアドレスである論理アドレスを格納するレジスタである。
このブロック管理レジスタに格納された各値の内、管理情報レジスタの値は、フラッシュコントローラ70での平準化処理による書き込みに使用するブロックの選定演算に使用され、論理アドレスレジスタの値は、所望するデータの読み出し時や、データの書換えに伴う読み出し時に用いられる。つまり、フラッシュコントローラ70は、特許請求の範囲の「ブロック管理レジスタ」を備え、「演算ゲート」、「制御回路」、「ブロック選出手段」としての機能を有する。
本実施例では、フラッシュメモリ60の複数のブロックの内、3ブロック分をブロック管理レジスタに格納する値を不揮発的に記憶する記憶領域76として使用している。ブロック管理レジスタに格納する値は、電源遮断時や一定間隔などの所定のタイミングで、フラッシュメモリ60の記憶領域76に記憶され、外部記憶装置10の電源投入時に、記憶領域76からブロック管理レジスタへ転送される。なお、外部記憶装置10内に、ブロック管理レジスタに格納する値を記憶する不揮発性のメモリを別途設け、フラッシュメモリ60とは独立に構成するものとしても良い。また、ブロック管理レジスタをRAM50の記憶領域で代用し、フラッシュコントローラ70配下に不揮発性のメモリを設けるものとしても良い。この場合、電源遮断時や一定間隔などの所定のタイミングで、フラッシュコントローラ70での演算に使用する管理情報,論理アドレスをフラッシュコントローラ70配下のメモリに記憶し、外部記憶装置10の電源投入時に、メモリからRAM50(つまり、ブロック管理レジスタ)に各値を転送することで、外部記憶装置10を構成することができる。
B.書き込みブロックの平準化処理:
図3は、本実施例の書き込みブロックの算出処理を説明する説明図である。図中に示した#0〜#Nは、フラッシュメモリ60のブロックの物理的な番号(以下、ブロック番号と呼ぶ)を示している。図示するように、ブロック管理レジスタ75は、各ブロックに対応した数だけ設けられ、管理情報レジスタとしてb3〜b0の4つのレジスタを備えている。
ここで、レジスタb3はブロックの良否を示す値を格納するレジスタであり特許請求の範囲の「良否レジスタ」に、レジスタb2はブロックの使用状況を示す値を格納するレジスタであり特許請求の範囲の「使用可否レジスタ」に、レジスタb1,b0はブロックの消去履歴を示す値を格納するレジスタであり特許請求の範囲の「消去回数レジスタ」に、それぞれ該当する。なお、ブロック管理レジスタ75は、前述のように論理アドレスレジスタを有するが、平準化処理による書き込みブロックの演算の説明には直接関係しないため図3では省略している。
レジスタb3(以下、良否レジスタb3と呼ぶ)には、ブロックが正常であれば値1が、不良であれば値0が書き込まれる。フラッシュメモリ60は、上述のように複数のブロックから構成され、各ブロックがデータの記憶領域として使用されるが、出荷時からもともと使用できないブロックも存在することがある。そこで、一般的には、外部記憶装置の製造段階で、全ブロックについて良否を検査し、不良であると判断されたブロックには、以後データを書き込まないように処理されている。本実施例では、出荷時に不良であると判断されているブロックについては外部記憶装置10の製造段階に、また、EEC符号によるエラー訂正では対応できないビットエラーが存在するブロックについてはCPU30が使用できないブロックと判断して後述するデータの読み出し時に、そのブロックに対応する良否レジスタb3に値0を書き込んでいる。
レジスタb2(以下、使用可否レジスタb2と呼ぶ)には、ブロックが未使用であれば値1が、使用中であれば値0が書き込まれる。この値は、フラッシュコントローラ70によって、ブロックへ記憶するデータの書き込み時およびブロックに書き込まれたデータの消去時に、書き換えられる。この使用可否レジスタb2への値の書き込み回路は、論理積を出力するANDゲートにより構成することができる。例えば、ANDゲートに、フラッシュコントローラ70からの書き込み信号と、後述する処理により特定されるブロック番号の信号Biとを入力し、ANDゲートの出力値を使用可否レジスタb2に書き込む。こうすることで、アクセスする一のブロックの特定と共に、使用可否レジスタb2に値1または値0が書き込まれる。
レジスタb1,b0(以下、消去回数レジスタb1,b0と呼ぶ)は、2つのレジスタが交互に値1と値0とを繰り返すことで、ブロックの消去履歴を示している。具体的には、初期状態、つまり、一のブロックが未使用状態では、消去回数レジスタ(b1,b0)には(1,0)が書き込まれており、一のブロック内のデータ(つまり、全ページのデータ)が不要となり、消去する場合において、1回目の消去時には、(0,1)が、2回目の消去時には(1,0)が、3回目の消去時には(0,1)、4回目の消去時には(1,0)・・・と順に、書き込みが繰り返される。すなわち、消去回数レジスタb1が値1である場合には、一のブロックの消去回数が0回または偶数回であることを示し、消去回数レジスタb0が値1である場合には、一のブロックの消去回数が奇数回であることを示している。
この消去回数レジスタb1,b0への値の書き込み回路は、ANDゲートと、消去回数のカウンタとして機能するD型フリップフロップ回路とにより構成することができる。この消去回数レジスタの書き込み回路の回路図の一例を図4に示す。図4は一のブロックの消去回数レジスタb1,b0の書き込み回路を示しており、実際には、ブロック数に応じた分の回路を必要とする。図示するように、ANDゲート195は、フラッシュコントローラ70からの消去信号と、特定されるブロック番号の信号Biとを入力する。D型フリップフロップ回路197は、消去回数レジスタb1を入力し、ANDゲート195の出力値をクロックパルスとして、入力値を消去回数レジスタb0に、入力値を反転した値を消去回数レジスタb1に、それぞれ書き込む。こうすることで、消去のタイミング毎に、消去回数レジスタb1と消去回数レジスタb0とには、交互に反転した値が書き込まれる。
フラッシュコントローラ70は、各ブロックの管理情報レジスタ75に基づいて、書き込むブロックを選定する演算を実行する。この演算回路は、図3に示すように、第1のANDゲート90,第2のANDゲート93,第3のANDゲート96,A側アドレス演算部100,B側アドレス演算部110からなり、演算回路で選定したブロックから最終的にデータを書き込むブロックを特定する。なお、最終的にブロックを特定する回路については、後述する。
第1のANDゲート90は、良否レジスタb3と使用可否レジスタb2とに書き込まれた値を入力し、その論理積を第2のANDゲート93,第3のANDゲート96にそれぞれ出力する。第2のANDゲート93は、第1のANDゲート90の出力値と消去回数レジスタb1の値とを入力し、その論理積である信号A0〜ANをA側アドレス演算部100に出力する。また、第3のANDゲート96は、第1のANDゲート90の出力値と消去回数レジスタb0の値とを入力し、その論理積である信号B0〜BNをB側アドレス演算部110に出力する。
上記のように、A側アドレス演算部100およびB側アドレス演算部110は、#0〜#Nのブロックの数に対応する信号を入力する。A側アドレス演算部100に入力された値(値1または値0)の内、値1を示すブロックは、消去回数が0回または偶数回で、かつ、使用可能な(つまり、未使用または消去済みで空き領域)ブロックであることを示している。他方、B側アドレス演算部110に入力された値(値1または値0)の内、値1を示すブロックは、消去回数が奇数回で、かつ、使用可能な(つまり、消去済みで空き領域)ブロックであることを示している。換言すると、消去回数が0回または偶数回のブロックはA側アドレス演算部100により判別され、消去回数が奇数回のブロックはB側アドレス演算部110により判別される。使用可能なブロック全体を、大きく消去回数が偶数か奇数によって分類していることとなる。
このA側アドレス演算部100およびB側アドレス演算部110は、2つの演算を実行する。第1の演算は、ブロック番号#0〜#Nの全ブロックの入力値(値0または値1)から、使用可能なブロック(入力値が値1であるもの)の内、最もブロック番号の小さいものを特定する演算である。第2の演算は、ブロック番号#0〜#Nの全ブロックの入力値(値0または値1)が全て値0となった場合に、値1を出力する演算である。
(B−1)第1の演算回路:
図5は、第1の演算を実行する回路(以下、第1の演算回路100a,110aと呼ぶ)の一部を示す回路図である。A側アドレス演算部100は第1の演算回路100aを、B側アドレス演算部110は第1の演算回路110aを、それぞれ備えているが、入力値が異なるのみで回路構成は同一である。したがって、以下、入力値A0〜ANのA側アドレス演算部100の第1の演算100aについて説明する。なお、ここでは説明を簡単にするため、A側アドレス演算部100に入力される値は、4ブロック分(#0〜#3)の入力値A0〜A3とする。
図示するように、この回路は、入力論理を反転するINVゲート120、論理積演算を行なうANDゲート130,131,132、多入力であるANDゲート140,145、論理和演算を行なう多入力のORゲート150,151から構成されている。
入力値A0〜A3の信号線は、その自身の信号線と、INVゲート120を介して反転された信号線とを備えている。以下、自身の信号を信号A0〜A3と、反転された信号を信号A0\〜A3\として「\」を付して記す。ANDゲート130は信号A0\と信号A1とを入力し、ANDゲート140は信号A0\と信号A1\と信号A2とを入力し、ANDゲート145は信号A0\と信号A1\と信号A2\と信号A3とを入力し、それぞれ論理積演算を行なう。
ANDゲート131は信号A0\とANDゲート130の出力値の反転された信号を入力し、ANDゲート132は信号A0\とANDゲート140の出力値の反転された信号を入力し、それぞれ論理積演算を行なう。ORゲート150はANDゲート131,140,145の出力値を入力し、ORゲート151はANDゲート132,130,145の出力値を入力し、それぞれ論理和演算を行なう。出力値O1はORゲート151から、出力値O2はORゲート150からそれぞれ出力される。なお、出力値O1,O2は、ブロック番号をコード化(エンコード)したものであり、(O1,O2)が(0,0)の場合はブロック番号#0を、(0,1)の場合はブロック番号#1を、(1,0)の場合はブロック番号#2を、(1,1)の場合はブロック番号#3を示している。
例えば、入力信号#0が値1である場合、INVゲート120を介して反転された値0が、全てのANDゲート130,140,145に入力されるため、最終的に2つのORゲート150から出力されるのは値0である。つまり、ブロック番号#0,#1,#2,#3のブロックの構成順序で最初に値1を示すブロックは、コードが(0,0)であるブロック番号#0となる。
この回路における信号A0〜A3(またはB0〜B3)の入力値とブロック番号(コード)との関係を示す真理値表を図6に示した。図示するように、この回路では、信号A0が値1であれば(0,0)を、信号A0が値0かつ信号A1が値1であれば(0,1)を、信号A0,A1が値0かつ信号A2が値1であれば(1,0)を、信号A0,A1,A2が値0かつ信号A3が値1であれば(1、1)を出力する。この回路をブロック数に応じて拡張することで、書き込むべきブロックを選出することができる。なお、この回路は、一例であり、他のゲートの組み合わせにより、同様な回路を構成するものとしても良い。また、外部記憶装置10にROMを設けて、ROMによる変換テーブルを利用し、ブロックを特定するものとしても良い。この場合、変換テーブルは、信号A0〜ANの入力値をアドレスにして、それに対応する出力値を格納した構成とすれば良い。
(B−2)第2の演算回路:
図7は、第2の演算を実行する回路(以下、第2の演算回路100b,110bと呼ぶ)の回路図である。A側アドレス演算部100は第2の演算100bを、B側アドレス演算部110は第2の演算110bを、それぞれ備えているが、第1の演算回路と同様、入力値が異なるのみで回路構成は同一である。
図示するように、この回路は、INVゲート160と多入力のANDゲート170により構成され、信号A0〜AN(またはB0〜BN)の入力値が全て値0となる場合に、値1を出力する。もちろん、この回路は、他の構成、例えば多入力のNORゲートを用いるものとしても良い。この第2の演算回路100b,110bでの値1の出力は、一のグループ内で書き込みに使用するブロックは一通り使用したこと(つまり、終了信号)を意味している。具体的には、第2の演算回路100bから値1が出力された場合は、消去回数が0回または偶数回であるブロックのグループ(A側アドレス演算部100により分類されたブロック)の内、書き込みに使用できる空きブロックはなくなったことを意味し、第2の演算回路110bから値1が出力された場合には、消去回数が奇数回のブロックであるグループ(B側アドレス演算部110により分類されたグループ)の内、書き込みに使用できる空きブロックはなくなったことを意味している。
(B−3)ブロックの特定回路:
図8は、上述の4つの演算結果に基づいて、書き込みに使用するブロックを最終的に特定する回路の回路図である。図示するように、この回路は、A側の第2の演算回路100b,B側の第2の演算回路110bからの値を入力するRSフリップフロップ回路175、A側の第1の演算回路100aからの値を入力するバスバッファ177,B側の第1の演算回路110aからの値を入力するバスバッファ178、エンコードされたデータを復号するデコーダ179等から構成されている。
RSフリップフロップ回路175は、A側の第2の演算回路100bからの値γa、B側の第2の演算回路110bからの値γbをそれぞれ入力し、入力値γa,γbの変化に応じて出力を切り換える周知の回路である。RSフリップフロップ回路175は、入力値γa,γbに基づいて、一のバスバッファ177に出力の禁止(インヒビット)信号を排他的に出力している。
A側の第1の演算回路100aの出力側に接続されたバスバッファ177は、エンコードされたデータであるブロック番号を入力し、RSフリップフロップ回路175からの信号がインヒビット信号である場合には、第1の演算回路100aからのデータの出力を禁止する。B側の第1の演算回路110aの出力側に接続されたバスバッファ178も同様である。2つのバスバッファ177,178からの信号線はワイヤード結合されており、RSフリップフロップ回路175を介して出力の禁止がされていない一方のバスバッファからの信号がデコーダ179に入力される。
デコーダ179は、エンコードされたM本の信号(ブロック数N=2のM乗とした場合のM)をN本の信号に復号し、一のブロックを特定する周知の回路である。デコーダ179は、フラッシュコントローラ70からの書き込みの指令信号を出力許可の信号として、書き込みに使用するブロックに許可信号を出力し、そのブロックにデータバスを介して所定のデータの書き込みが実行される。なお、ここで特定したブロック番号の信号Biは、ブロック管理レジスタの書き込みに用いられる。
こうした構成の回路において、図3に示した演算回路によって分類された消去回数が0回または偶数回のA側グループのブロックから、第1の演算回路100aにより選定された一のブロック番号(エンコードデータ)がバスバッファ177に出力される。同様に、消去回数が奇数回のB側グループから、第1の演算回路110aにより選定された一のブロック番号(エンコードデータ)がバスバッファ178に出力される。
この状態において、例えば、A側の第2の演算回路100bの値γaが値0から値1に切り換わると、バスバッファ177にはインヒビット信号が出力され、バスバッファ177からの出力は禁止される。これは、偶数回の書き込みが終了したからである。この結果、バスバッファ178から出力されたB側グループのブロック番号が最終的に書き込みできるブロックして特定される。他方、B側の第2の演算回路110bの値γbが値0から値1に切り換わると、同様に奇数回の書き込みが終了したとして、バスバッファ178からの出力は禁止され、バスバッファ177から出力されたA側グループのブロック番号が最終的に書き込みできるブロックして特定される。
以上のように、消去回数によって分類した0回または偶数回のA側グループと奇数回のB側グループとのそれぞれのグループにおいて、一のグループ内で書き込みに使用するブロックにデータを書き込み、書き込みに使用できるブロックの使用が一通り終了したら、他方のグループ内の書き込みに使用するブロックにデータを書き込む。例えば、所定のデータを更新する場合には、そのデータを記憶したブロックとは別のブロックに更新データが書き込まれ、同じブロックに更新データの書き直しを行なうことが無い。こうして、消去回数が偶数回のグループと奇数回のグループとの2つのグループを交互に使用することで、特定のブロックの使用に偏らず、全体として消去回数を平準化したブロックの使用がハードウェア的に実現できる。
(B−4)平準化処理の一例:
この論理回路の内容をより具体的に説明するため、図9から図11に、平準化処理による書き込みブロックの演算の一例を説明する説明図を示した。図9から図11は、各ブロックのブロック管理レジスタに書き込まれた値と、A側アドレス演算部100,B側アドレス演算部110への入力値(以下、A側入力値、B側入力値と呼ぶ)と、A側の第2の演算回路100bの演算結果γa、B側の第2の演算回路110bの演算結果γbとを示した表である。なお、ここでは説明を簡単にするため、ブロック数を10個(#0〜#9)としている。
図9(a)は、不良ブロックが存在しない初期状態を示している。つまり、ブロックが正常であるため良否レジスタb3には値1、初期状態で未使用であるため使用可否レジスタb2には値1、当然消去回数もゼロであるため消去回数レジスタ(b1,b0)には(1,0)が入力されている。このブロック管理レジスタの値に基づいたA側入力値は各ブロックとも値1となり、A側の第2の演算回路100bの演算結果γaは全ブロックが値0でないため値0となる。他方、B側入力値は各ブロックとも値0となり、B側の第2の演算回路110bの演算結果γbは全ブロックが値0であるため値1となる。すなわち、第2の演算結果γが値0であるA側アドレス演算部100の第1の演算結果に基づいて、書き込みに使用できるブロックが選択されることとなる。なお、図5にハード構成を示した第1の演算回路でのブロックの選定処理は、図9〜図11に示す表において、A側入力値またはB側入力値をブロック番号#0から順に検索し、最初に値1を示すブロックを選定することと同等な処理である。したがって、以下、書き込みに使用するブロックの選定は、最初に値1を示すブロックを表から選定するものとする。
図9(b)は、所定のデータを書き込むため、3個のブロックを使用した状態を示している。図中の斜線部分は、ブロック管理レジスタ75の値が更新されたことを示している。つまり、図9(a)のA側入力値から、書き込みに使用するブロックは#0,#1,#2の3ブロックとなり、使用中を示すため使用可否レジスタb2には値0が入力される。その結果、3ブロックに対応するA側入力値は値0となる。
なお、ブロック管理レジスタ75は、更新される度に、一部のブロックのページに順次追記され、ブロック管理レジスタ75の使用領域として割り当てたフラッシュメモリ60の3ブロックの最後まで書き込みを実行した後に、書き込んだブロック(例えば、順次書き込んだ最初の1ブロック)の消去を行ない、再び消去されたブロックにデータが書き込まれる。したがって、ブロック管理レジスタ75に格納する値の記憶領域76として割り当てたブロックの消去回数がフラッシュメモリ60の寿命として問題となることは、ほとんど無い。なお、ブロック管理レジスタ75に格納する値の記憶に関して信頼性を高めるため、記憶領域76の容量を2倍とし、格納する値を2重に記憶する(つまり、コピーを持つ)ものとしても良い。また、リードソロモン符号を用いて、2ビット以上の訂正機能を持たせるものとしても良い。
図9(c)は、更に3個のブロックを使用した状態を示している。図9(b)のA側入力値から、次に書き込みに使用するブロック(A側入力値を#0から順に検索し、最初に値1を示すブロック)は、#3のブロックとなる。したがって、#3,#4,#5の3ブロックにデータを書き込み、使用中である使用可否レジスタb2に値0を入力する。3ブロックに対応するA側入力値が値0となるのは、図9(b)と同様である。
図9(d)は、#2,#3,#4の3個のブロックのデータを消去した状態を示している。外部機器からCPU30を介してあるデータの消去指令を受けた場合には、フラッシュコントローラ70は、そのデータを記憶したブロックを選定することになるが、この動作については、後にデータの読み出し動作として説明するものとし、ここでは、#2〜#4の3ブロックの消去が決定されたものとして説明する。
図示するように、#2〜#4の3ブロックのデータは消去され、未使用であるため使用可否レジスタb2に値1、消去回数レジスタ(b1,b0)には(0,1)が入力される。その結果、3ブロックに対応するB側入力値は値1、B側の第2の演算回路110bの演算結果γbは値0となるが、A側の第2の演算回路100bの演算結果γaが依然値0のままであるため、A側アドレス演算部100の第1の演算結果に基づいて、書き込みに使用するブロックの選定を続ける。つまり、図8に示したRSフィリップフロップ回路175は入力値が値1から値0へ変化しても、出力値の変化(インヒビット信号の切換)はなく、この段階では、バスバッファ177からのブロック番号がデコーダ179に出力される。
図10(a)は、更に4個のブロックを使用した状態を示している。図9(b)、(c)と同様に、A側アドレス演算部100の第1の演算結果に基づいて、書き込みに使用できるブロックである#6,#7,#8,#9にデータを書き込む。この状態で、A側入力値は全て値0となり、A側の第2の演算回路100bの演算結果γaは値1に変わる。この値1の出力により、A側アドレス演算部100の第1の演算結果による書き込みに使用できるブロックの選出は終了し、以降は、B側アドレス演算部110の第1の演算結果に拠ることとなる。この段階で、RSフィリップフロップ回路175はインヒビット信号の出力先を切り換え、バスバッファ178からのブロック番号がデコーダ179に出力される。
図10(b)は、#7,#8の2個のブロックのデータを消去した状態を示している。図示するように、未使用であるブロックは、#2,#3,#4,#7,#8の5個のブロックとなる。
図10(c)は、4個のブロックを使用した状態を示している。図10(b)に示したように、この段階で消去による空きブロックは5個であり、B側アドレス演算部110の第1の演算結果に基づいて、書き込みに使用できるブロック(B側入力値を#0から順に検索し、最初に値1を示すブロック)を選定する。この場合、最初に値1を示すブロックは#2となり、以下、#3,#4,#7の順に選定されたブロックが書き込みに使用される。
図10(d)は、#2,#3の2個のブロックのデータを消去した状態を示している。図示するように、#2,#3のブロックの消去回数レジスタ(b1,b0)には(1,0)が入力される。#2,#3のブロックは、図9(d)の段階で一度消去しているため、2度目の消去となる。なお、ブロックに対応するA側入力値は値1、A側の第2の演算回路100bの演算結果γaは値0となるが、B側の第2の演算回路110bの演算結果γbが依然値0のままであるため、B側アドレス演算部110の第1の演算結果に基づいて、書き込みに使用できるブロックの選出を続ける。図10(d)の段階では、未使用ブロックは、#2,#3,#8の3個のブロックとなる。
図11(a)は、1個のブロックを使用した状態を示している。図10(d)に示したB側入力値から、最初に値1を示すブロックを検索すると、#8のブロックが選定され、#8のブロックにデータが書き込まれる。図11(a)に示すように、#8のブロックに対応するB側入力値は値0となり、全ブロックのB側入力値が値0となる。したがって、B側の第2の演算回路110bの演算結果γbは値1となり、消去回数が1回目である消去済みブロックへの書き込みが一通り終了する。
図11(b)は、更に1個のブロックを使用した状態を示している。図11(a)の段階で、B側アドレス演算部110の第1の演算結果に基づく書き込みに使用できるブロックの選定は終了しているため、A側アドレス演算部100の第1の演算結果に基づくブロックの選定が実行される。この場合、A側入力値から最初に値1を示す#2のブロックが選択され、データが書き込まれる。
図11(c)は、全データの消去をした状態を示している。図示するように、使用中の全ブロック(#0〜#2,#4〜#9)を消去するため、B側の第2の演算回路110bの演算結果γbは値0となるが、A側の第2の演算回路100bの演算結果γaも値0のままであるため、A側アドレス演算部100の第1の演算結果に基づいて、以後の書き込みに使用できるブロックを選定する。
図11(d)は、3個のブロックを使用した状態を示している。前述の通り、図11(c)に示したA側アドレス演算部100の第1の演算結果に従って、#3,#4,#7の3ブロックが選定され、そこにデータが書き込まれる。
以上の書き込みに使用するブロックの選定の一例に示したように、本実施例では、#0のブロックから順に、全ブロックに亘って一通りの書き込みを行なった後、次に書き込むブロックは、消去が奇数回目である消去済みブロックの中で、ブロックの構成順に選択される。そして、奇数回目の消去済みブロックを全て使用すると、偶数回目の消去済みブロックを使用する。こうした使用可能なブロックの選択処理を、図3,図5,図7,図8に示した回路にてハードウェア的に行なうため、ソフトウェア的に処理する場合に比べ、簡易な構成であり、かつ、処理速度を向上することができる。なお、本実施例では、2つのグループに分類することで消去回数の平準化を実施しているが、さらに複数のグループに分類して、周回的に、書き込みに使用できるブロックを選出するグループを替えることで、より詳細に平準化処理を実行することができる。
C.データのアクセス処理:
本実施例の外部記憶装置10では、データの更新時は、ブロック単位に更新する対象となるデータを読み出し、修正して、フラッシュメモリ60の未使用(空き)ブロックまたは消去済みブロックに更新データを書き込む。その後、元のデータが存在するブロックを消去するという手法を採っている。したがって、更新データの書き込みに関しては、上述のブロック選出の演算と同様に処理し、更新の対象となるデータの読み出しに関しては、以下に説明するデータ読み出し演算に基づいて処理する。
図12は、データの読み出し演算の説明図である。図12は外部記憶装置10の一部を示しており、CPU30、フラッシュメモリ60内の各ブロック、フラッシュコントローラ70内のブロック管理レジスタ75、フラッシュコントローラ70の一部であるアドレス演算部200,比較器190からなる各要素の接続関係を示している。
図示するように、ブロック管理レジスタ75は、論理アドレスレジスタを有し、アドレスバス180,許可信号線181を介して書き込みアドレス演算部200と接続している。アドレス演算部200と接続するアドレスバス180には、CPU30から指令された論理アドレスのアドレス信号が出力されている。この信号(アドレス)は、アドレス演算部200からの許可信号を受けた一の論理アドレスレジスタに書き込まれる。
アドレス演算部200は、図3に示した書き込みに使用できるブロックを選択する各ゲート90,93,96、A側アドレス演算部100、B側アドレス演算部110、および、図8に示したブロックの特定回路を含んでいる。つまり、アドレス演算部200は、所定のデータの書き込み、読み出しや消去をするブロックを特定し、CPU30からの指令に対応した処理をしている。このアドレス演算部200は、論理アドレスレジスタの他に、データバス185,データレジスタRを介して各ブロックと、論理アドレスバス193を介して各比較器190と接続している。
CPU30からの所定のデータを書き込む場合、アドレス演算部200は、選定したブロックに対して許可信号線181を介した動作許可信号およびそのブロックに対応するブロック管理レジスタ75の論理アドレスレジスタに書き込み許可信号を出力すると共に、許可信号線182を介した書き込み許可信号を出力している。こうして、許可信号を受けたブロックには、データバス185,データレジスタRを介して所定のデータが書き込まれる。なお、許可信号線182は、データの書き込みと消去とを区別する信号を出力しており、所定のブロック内のデータを消去する場合にも使用される。
フラッシュコントローラ70は、各ブロック管理レジスタ75に対応する数の比較器190を備えている。各比較器190は、上述のアドレス演算部200との接続の他に、論理アドレスレジスタ、ブロック管理レジスタ75の使用可否レジスタb2とも接続し、論理アドレスレジスタからのアドレスと、論理アドレスバス193を介した論理アドレスと、使用可否レジスタb2の値とが入力される。比較器190は、アドレスと論理アドレスとを比較し、両者が一致した場合にブロックに読み出し許可信号ENを出力する。つまり、比較器190は所定のデータの読み出し時に使用され、所望するデータが記憶された物理的なブロックを特定するために使用される。許可信号ENを受けたブロックは、記憶したデータをフラッシュメモリ60のデータレジスタRを介してデータバス185に出力する。こうして所望するデータが読み出される。こうしたデータの読み出しには、一度のアドレス指定で連続してデータを読み出すバーストモードが用いられている。
なお、比較器190からの一のブロックへの許可信号(ブロックを特定する信号)は、使用可否レジスタb2、消去回数レジスタb1,b0の値の更新にも用いられる。例えば、前述の書き込みに使用するブロックを特定するブロック番号の信号Biと、比較器190からのブロックを特定する信号とを、フラッシュコントローラ70からの書き込み指令、消去指令に応じて切り換えることで、前述のANDゲートやD型フリップフロップ回路を用いた書き込み回路を構成することができる。
こうした構成の外部記憶装置10において、例えば、CPU30から「アドレス0100Hに、データAを書き込め」との書き込み指令を受けたアドレス演算部200は、各ブロック管理レジスタ75の管理情報レジスタから書き込みの可能なブロックとして、例えば#1のブロックを選定する。アドレス演算部200は、許可信号線181を介して許可信号を#1の論理アドレスレジスタおよびブロックに出力する。その結果、#1の論理アドレスレジスタにはアドレスバス180を介して「0100H」が、#1のブロックにはデータバス185,フラッシュメモリ60のデータレジスタRを介して「データA」が、それぞれ書き込まれる。
他方、例えば、CPU30から「アドレス0100Hのデータを読み出せ」との読み出し指令を受けたアドレス演算部200は、論理アドレスバス193に「0100H」を出力する。これを入力した各比較器190は、一斉に、自己の管理する論理アドレスレジスタに書き込まれているアドレス信号と入力値(論理アドレス信号)とを比較する。比較した結果、#1のブロックを管理する比較部190で、アドレスの一致が判断された場合、#1のブロックを管理する比較部190は、#1のブロックに許可信号ENを出力する。#1のブロックに書き込まれていた「データA」はデータレジスタRを介してデータバス185に出力される。この比較器190には、2つのアドレスデータを比較して一致する場合のみ、信号を出力する既存のマグニチュードコンパレータを使用している。比較器190は、使用可否レジスタb2の値を入力しているため、不使用(つまりレジスタb2が値1)である場合には、比較判断を行なうことはない。
フラッシュメモリ60では、データの書き込み時には消去済みで消去回数を考慮してブロックを選択するため、ある論理アドレスに対応するデータを書き込んだ物理的なブロックの番号は、データの更新ごとに変更されている。本実施例では、論理アドレスレジスタを備え、一のブロックに書き込むデータの論理アドレスを記憶する。所定の論理アドレスのデータを読み出したい時には、読み出しを所望する論理アドレスとの比較を、データの書き込みが行なわれている全てのブロックに対して、一斉に行なう。したがって、フラッシュメモリ60内のどのブロックに所望するデータが書き込まれても、瞬時に読み出しが実行される。
なお、本実施例ではファイルはブロック単位で扱われるものとしたが、ページ単位で扱うものとしても良い。この場合、外部記憶装置10内に6ビットのカウンタを設けて、6ビットの最上位の桁上げを使用可否レジスタb2に反映させるものとすれば良い。つまり、一のページにデータを書き込む度にカウントし、最上位の桁上げにより一のブロックの全ページの使用を判断して、そのブロックを使用中として使用可否レジスタb2に値0を立てる。このカウンタの値は、CPU30で管理するものとすれば良い。そうすることで、最後にアクセスしたブロックの残りページ数を認識することができ、メモリ空間を効率よく使用することができる。
また、ページ単位で扱う場合のデータの読み出しは、ブロックを特定する上位アドレスとページを特定する下位アドレスとをCPU30で管理し、所望するデータの読み出し時には、比較器190で物理的なブロックの特定を上位アドレスを用いて行ない、特定されたブロック内のページの特定を下位アドレスを用いて行なえば良い。そして、データの更新時に、所定のページのデータを読み出し、修正したデータを別のページに書き込む。記憶場所を物理的に変更したページのアドレスは、CPU30側で管理するものとすれば良い。
D.変形例:
本実施例の外部記憶装置では、ハードウェア的に書き込みに使用するブロックを選定してデータを書き込み、ハードウェア的に所望するデータを記憶したブロックを特定してデータを読み出す構成としたが、所望するデータを記憶したブロックの特定をソフトウェア的に行なうものとしても良い。
所望するデータを記憶したブロックの特定をソフトウェア的に実行する外部記憶装置の構成を、図13に示す。図示するように、この外部記憶装置300は、図1に示した外部記憶装置10とは、フラッシュメモリ60の配置が異なり、いわゆる汎用タイプの外部記憶装置である。図13の外部記記憶装置300では、図1の外部記憶装置10と符号を同一とし、各部の説明は省略する。
この外部記憶装置300は、第1実施例同様に、フラッシュコントローラ70にて書き込みに使用するフラッシュメモリ60内のブロックを特定し、そのブロックの物理アドレスをCPU30に出力する。CPU30は、外部機器から論理アドレスとフラッシュコントローラ70からの物理アドレスとを対応付けたテーブルをRAM50内に作成する。
このテーブルは、外部機器からのデータの読み書き等の指令ごとに更新される。所望するデータを読み出す際には、このテーブルを参照してブロックを特定し、そのブロックからデータを読み出す。こうしたテーブルを用いてデータの処理を実行することで、図12に示した論理アドレスレジスタや比較器190等を備えることなく外部記憶装置300を構成することができる。
なお、テーブルを構成する各値は、フラッシュメモリ60に所定の記憶領域を確保し、その領域に記憶するものとすれば良い。こうすることで、電源遮断時も不揮発的にテーブルの値を記憶することができる。また、テーブルの値を複数記憶したり、エラー訂正可能に記憶するものとしても良い。
以上、本発明の実施の形態について説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることはもちろんである。本実施例では、ブロック管理レジスタとしてフラッシュメモリの所定領域を使用し、ブロック管理レジスタに書き込む管理情報が更新される度に追記する構成としたが、これらの管理情報はRAM上で保持し、所定のインターバル毎や、外部記憶装置の起動終了の指示があった時にフラッシュメモリの所定領域に書き込むものとしても良い。
本発明の第1実施例としての外部記憶装置の構成を示す全体ブロック図である。 本実施例で採用するフラッシュメモリの構造である。 本実施例の書き込みブロックの算出処理を説明する説明図である。 消去回数レジスタの書き込み回路の一例を示す回路図である。 第1の演算を実行する回路の一部を示す回路図である。 第1の演算回路における入力値とブロック番号との関係を示す真理値表である。 第2の演算を実行する回路を示す回路図である。 第1、第2の演算結果に基づいて書き込みに使用するブロックを特定する回路の回路図である。 平準化処理による書き込みブロックの演算の一例を説明する説明図である。 平準化処理による書き込みブロックの演算の一例を説明する説明図である。 平準化処理による書き込みブロックの演算の一例を説明する説明図である。 データの読み出し演算の説明図である。 ブロックの特定をソフトウェア的に実行する外部記憶装置の構成を示す全体ブロック図である。
符号の説明
10,300...外部記憶装置
20...ホストI/F
30...CPU
40...プログラムメモリ
50...RAM
60...フラッシュメモリ
70...フラッシュコントローラ
75...ブロック管理レジスタ
76...記憶領域
80...データ書き込み領域
85...冗長部領域
90...第1のANDゲート
93...第2のANDゲート
96...第3のANDゲート
100...A側アドレス演算部
100a,110a...第1の演算回路
100b,110b...第2の演算回路
110...B側アドレス演算部
120,160...INVゲート
130,131,132,195...ANDゲート
140,145,170...多入力のANDゲート
150,151...多入力のORゲート
175...RSフリップフロップ回路
177,178...バスバッファ
179...デコーダ
180...アドレスバス
181,182...許可信号線
185...データバス
190...比較器
193...論理アドレスバス
197...D型フリップフロップ
200...アドレス演算部

Claims (10)

  1. データを記憶する複数のブロックから構成され、データバスに接続されたフラッシュメモリを有する外部記憶装置であって、
    前記ブロック毎に
    前記ブロックの使用状況を示す使用可否レジスタと、該ブロックのデータの消去回数の情報を示すn個(nは2以上の整数)の消去回数レジスタとからなるブロック管理レジスタと、
    前記使用可否レジスタの値と前記各消去回数レジスタの値との論理積をそれぞれ演算するn個の演算ゲートとを有し、
    前記演算ゲートの出力値に基づいて、使用可能であるブロックを消去回数に応じてn個のグループに分類するn個の制御回路を備え、
    前記一の制御回路は、
    前記一のグループにおいて、前記ブロックの構成順に使用可能な該ブロックを特定する第1の回路と、
    前記一のグループ内で、使用可能なブロックが存在しないことを示す信号を出力する第2の回路とを有し、
    前記一の制御回路における前記第2の回路の出力タイミング毎に、前記n個のグループを所定順序で周回し、前記第1の回路の出力値に基づいて、使用可能な前記ブロックを選出するブロック選出手段と、
    前記選出されたブロックに前記データを記憶する記憶手段と
    を備えた外部記憶装置。
  2. 請求項1に記載の外部記憶装置であって、
    前記nは2であり、
    前記ブロック管理レジスタの2個の消去回数レジスタは、
    前記ブロックの消去回数が0回または偶数回であることを示す第1の消去回数レジスタと、
    前記ブロックの消去回数が奇数回であることを示す第2の消去回数レジスタとからなり、
    前記2個の演算ゲートは、
    前記使用可否レジスタの値と前記第1の消去回数レジスタの値との論理積を演算する第1ゲートと、
    前記使用可否レジスタの値と前記第2の消去回数レジスタの値との論理積を演算する第2ゲートとからなり、
    前記2個の制御回路は、
    前記第1ゲートの出力値を入力し、前記使用可能なブロックの消去回数が0回または偶数回であるグループを示す第1の制御回路と、
    前記第2ゲートの出力値を入力し、前記使用可能なブロックの消去回数が奇数回であるグループを示す第2の制御回路とからなり、
    前記ブロック選出手段は、
    前記第2の回路の出力タイミングに基づいて、前記使用可能な前記ブロックを選出するグループを、前記第1の制御回路と前記第2の制御回路との間で順次交替して該使用可能なブロックの番号を出力する手段である外部記憶装置。
  3. 請求項1または2に記載の外部記憶装置であって、
    前記ブロック管理レジスタは、前記ブロックが不良であるか否かを示す良否レジスタを備え、
    前記n個の演算ゲートは、前記使用可否レジスタの値と前記各消去回数レジスタの値とに加えて、前記良否レジスタの値との論理積をそれぞれ演算する外部記憶装置。
  4. 請求項1ないし3のいずれかに記載の外部記憶装置であって、
    前記ブロック管理レジスタは、前記データの記憶領域として割り当てられた仮想メモリ空間上のアドレスである論理アドレスを格納する論理アドレスレジスタを有し、
    前記ブロック毎に、所定の論理アドレスと、前記論理アドレスレジスタに格納するアドレスとを比較する比較器を備え、
    前記記憶手段は、
    前記データを一のブロックに書き込むタイミングで、該一のブロックに対応する前記論理アドレスレジスタに前記論理アドレスを格納し、該書き込んだデータの読み出しを所望する際、該比較器の出力値に基づいて、該所望するデータを書き込んだ該ブロックを特定し、該ブロックから該データを読み出す手段を備えた外部記憶装置。
  5. 請求項1ないし3のいずれかに記載の外部記憶装置であって、
    前記記憶手段は、前記データの記憶領域として割り当てられた仮想メモリ空間上のアドレスである論理アドレスと、前記ブロック選出手段により選出され、該データを記憶するブロックの物理的なアドレスとの対応関係を表わすテーブルを生成し、該テーブルに基づいて該データを記憶する手段である外部記憶装置。
  6. 請求項1ないし5のいずれかに記載の外部記憶装置であって、
    前記ブロック管理レジスタは、不揮発性のメモリを用いて構成された外部記憶装置。
  7. 請求項1ないし5のいずれかに記載の外部記憶装置であって、
    前記ブロック管理レジスタに格納する所定値を所定のタイミングで不揮発的に記憶する記憶部を備え、
    前記外部記憶装置への電源投入の際、前記記憶部の有する前記所定値を、前記ブロック管理レジスタへ転送する外部記憶装置。
  8. 請求項7に記載の外部記憶装置であって、
    前記記憶部は、前記フラッシュメモリの一部分に予め確保された領域である外部記憶装置。
  9. 請求項1ないし8のいずれかに記載の外部記憶装置であって、
    前記フラッシュメモリは、NAND型構造のフラッシュメモリである外部記憶装置。
  10. データを記憶する複数のブロックから構成され、データバスに接続されたフラッシュメモリを有する外部記憶装置の該データの書き込み方法であって、
    前記ブロック毎に、該ブロックの使用状況および該ブロックの消去回数を示す情報を記憶し、
    前記情報に基づいて、使用可能であるブロックを消去回数に応じてn個のグループに分類し、
    前記データの書き込みを行なう前記n個のグループを所定順序で周回し、該一のグループにおいて、前記使用可能なブロックに、該ブロックの構成順で前記データを書き込み、該使用可能なブロックへの書き込み終了後、該所定順序で他のグループを選択して該ブロックに該データを書き込むデータの書き込み方法。
JP2004004097A 2004-01-09 2004-01-09 外部記憶装置 Expired - Fee Related JP4357304B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004004097A JP4357304B2 (ja) 2004-01-09 2004-01-09 外部記憶装置
US11/031,985 US7145801B2 (en) 2004-01-09 2005-01-07 External storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004004097A JP4357304B2 (ja) 2004-01-09 2004-01-09 外部記憶装置

Publications (2)

Publication Number Publication Date
JP2005196634A JP2005196634A (ja) 2005-07-21
JP4357304B2 true JP4357304B2 (ja) 2009-11-04

Family

ID=34818807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004004097A Expired - Fee Related JP4357304B2 (ja) 2004-01-09 2004-01-09 外部記憶装置

Country Status (2)

Country Link
US (1) US7145801B2 (ja)
JP (1) JP4357304B2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
KR101185617B1 (ko) * 2006-04-04 2012-09-24 삼성전자주식회사 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US8607070B2 (en) * 2006-12-20 2013-12-10 Kingston Technology Corporation Secure storage system and method of use
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8527781B2 (en) * 2007-05-09 2013-09-03 Kingston Technology Corporation Secure and scalable solid state disk system
US8499168B2 (en) * 2007-05-09 2013-07-30 Kingston Technology Corporation Secure and scalable solid state disk system
US8010768B2 (en) * 2007-05-09 2011-08-30 Kingston Technology Corporation Secure and scalable solid state disk system
DE102007023408A1 (de) * 2007-05-18 2008-11-20 Mobotix Ag Verfahren zur Speicherverwaltung
KR101413736B1 (ko) 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
JP5458568B2 (ja) * 2008-12-25 2014-04-02 ソニー株式会社 不揮発性記憶装置、情報記録システム、及び情報記録方法
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
KR20130000730A (ko) 2011-06-24 2013-01-03 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템
TWI467376B (zh) * 2012-06-11 2015-01-01 Phison Electronics Corp 資料保護方法、記憶體控制器與記憶體儲存裝置
US9064579B2 (en) 2012-07-16 2015-06-23 Kabushiki Kaisha Toshiba Semiconductor memory apparatus, data transmission device, and recording method
KR102003930B1 (ko) * 2012-07-31 2019-07-25 삼성전자주식회사 불휘발성 메모리 장치의 데이터 라이팅 제어방법 및 웨어레벨링 제어 기능을 가지는 메모리 콘트롤러
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
JP6326209B2 (ja) * 2013-09-30 2018-05-16 ラピスセミコンダクタ株式会社 半導体装置及び半導体メモリにおける消去回数の検索方法
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
CN110908593B (zh) * 2018-09-17 2024-02-20 兆易创新科技集团股份有限公司 一种存储空间擦除方法、装置、存储设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361228A (en) * 1992-04-30 1994-11-01 Fuji Photo Film Co., Ltd. IC memory card system having a common data and address bus
JP4341043B2 (ja) * 1995-03-06 2009-10-07 真彦 久野 I/o拡張装置,外部記憶装置,この外部記憶装置へのアクセス方法及び装置
US6016560A (en) * 1995-06-14 2000-01-18 Hitachi, Ltd. Semiconductor memory, memory device, and memory card
JP3782840B2 (ja) * 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法

Also Published As

Publication number Publication date
US20050281088A1 (en) 2005-12-22
JP2005196634A (ja) 2005-07-21
US7145801B2 (en) 2006-12-05

Similar Documents

Publication Publication Date Title
JP4357304B2 (ja) 外部記憶装置
US5603001A (en) Semiconductor disk system having a plurality of flash memories
US8713381B2 (en) Systems and methods of using dynamic data for wear leveling in solid-state devices
US8555143B2 (en) Flash memory controller and the method thereof
US11288019B2 (en) Memory management method and storage controller
JP4828816B2 (ja) メモリカード、半導体装置、及びメモリカードの制御方法
JPH07302176A (ja) 半導体ディスク装置
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
US7657697B2 (en) Method of controlling a semiconductor memory device applied to a memory card
US9990152B1 (en) Data writing method and storage controller
JPH07302175A (ja) 半導体ディスク装置
US10546640B2 (en) Data protecting method and memory storage device
JP2006221334A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4641338B2 (ja) 不揮発性半導体記憶装置及びシステム
JP4710918B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582078B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4636046B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4513782B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4254933B2 (ja) メモリコントローラ及びフラッシュメモリシステム
CN110119247A (zh) 非易失性存储器
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090722

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

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

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

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4357304

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150814

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees