JP2010026794A - メモリ制御装置及び方法、コンピュータプログラム - Google Patents

メモリ制御装置及び方法、コンピュータプログラム Download PDF

Info

Publication number
JP2010026794A
JP2010026794A JP2008187474A JP2008187474A JP2010026794A JP 2010026794 A JP2010026794 A JP 2010026794A JP 2008187474 A JP2008187474 A JP 2008187474A JP 2008187474 A JP2008187474 A JP 2008187474A JP 2010026794 A JP2010026794 A JP 2010026794A
Authority
JP
Japan
Prior art keywords
data
writing
written
area
input data
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.)
Ceased
Application number
JP2008187474A
Other languages
English (en)
Inventor
Koji Shima
幸司 島
Hideyoshi Asai
英嘉 浅井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2008187474A priority Critical patent/JP2010026794A/ja
Priority to US12/867,584 priority patent/US8595413B2/en
Priority to PCT/JP2008/072724 priority patent/WO2009104330A1/ja
Priority to CN2008801281804A priority patent/CN101978361B/zh
Publication of JP2010026794A publication Critical patent/JP2010026794A/ja
Ceased legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】不揮発性メモリへの書込可能回数を増加させる。
【解決手段】入力データが書き換えを要しない初期データか、複数回の書き換えの可能性のあるデータかを、予め定めた書込ルールに基づいて判別する。初期データであるときは当該入力データを不揮発性メモリの初期データブロック51に書き込む第1書込処理を行う。他方、入力データが複数回の書き換えの可能性のあるデータであるときは、所定回数のデータ書込を可能にする上で必要となる数の実データブロック53を不揮発性メモリにおいて確保し、確保した実データブロック53のうち、書込可能領域に入力データの逐次追記を行い、書込済の実データブロック53については、複数ブロック毎に消去する第2書込処理を行う。
【選択図】図2

Description

本発明は、データ処理装置において、データの書込可能回数に一定の制限のある不揮発性メモリへのデータの書込可能回数を、その不揮発性メモリの一般的な使い方をするよりも、多くするメモリ制御装置、方法及びコンピュータプログラムに関する。
EEPROM(Electrically Erasable and Programmable Read Only Memory )、フラッシュメモリのような不揮発性メモリは、データの書込可能回数、正確には消去回数に制限がある。不揮発性メモリでは、データを書き込む際に、それまで書き込まれていたデータを消去する必要があるためである。書込可能回数は、例えば、EEPROMは約10万回(参考値)であるのに対し、フラッシュメモリは1000回(参考値)程度である。そのため、データの書換頻度の高い用途では、EEPROMが使われ、そうでない箇所では、一般に、フラッシュメモリが使われている。
EEPROMは、書込可能回数が多い反面、フラッシュメモリに比べてかなり高価である。そのため、EEPROMをデータを記録媒体として使用する情報処理装置において、このデータ記録媒体をフラッシュメモリで代用することができれば、データ記録媒体を低コストで実現できる期待がある。
EEPROMをフラッシュメモリで代用するには、フラッシュメモリにおいてEEPROMと同じ程度の回数の書込を保証する仕組みが必要となる。そのための従来技術して、例えば非特許文献1に紹介されている「EEPROMエミュレーション」と呼ばれる技術がある。フラッシュメモリでは、データ書き込む際に、それまで書き込まれていたデータを消去する必要があることは上述したとおりであるが、EEPROMエミュレーション(登録商標)では、そのデータの消去を複数の書込領域毎に行うことで、データ書込時の消去回数を減らし、見かけ上の書込可能回数をEEPROM程度まで多くする。
「アプリケーションノート U17057JJ3V0AN00」、第3版、NECエレクトロニクス株式会社、2004年11月、p.25−27
EEPROMでも、非特許文献1に紹介されているEEPROMエミュレーションでも、データ書込可能回数に一定の制限のあることは変わりがない。ところが、書込対象となるアドレスに着目すると、1度しか書き込まれないアドレスもある。例えば、2048バイト分のアドレスが、以下の3種類に分類できるとする。
第1アドレス群:000Hから0100Hの256バイト分のアドレス
第2アドレス群:0100Hから0500Hの1024バイト分のアドレス
第3アドレス群:0500Hから0800Hの768バイト分のアドレス
第1および第3アドレス群は、頻繁に書き換えが発生するものとする。これに対して、第2アドレス群は、一度だけデータを書き込めば、その後は、読込だけ発生するような、例えば何かの固定パラメータ値を保存している領域であるとする。このとき、すべてのアドレス群を同じ態様で扱うと、書き換えの対象となるデータサイズは、何らの工夫も施さなければ2048バイトとなり、実際には256+768=1024バイトで足りるにも関わらず、書込可能回数の上限が減ることになる。
本発明は、書込領域毎のアドレスを管理することができ、不揮発性メモリの書込可能回数も通常の使用形態のときよりも増加させることができる特徴的なメモリ制御装置、方法、並びに、コンピュータをこのような装置として動作させることができるコンピュータプログラムを提供することを課題とする。
本発明が提供するメモリ制御装置は、データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御する装置であって、入力データを受け付ける受付手段と、前記入力データが書き換えを要しない第1データか書き換えを要する第2データかを、予め定めた書込ルールに基づいて判別する判別手段と、入力データが前記第1データであるときは当該入力データを前記不揮発性メモリの第1データ領域に書き込む第1書込処理を行い、他方、前記入力データが前記第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を前記不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に前記入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去する第2書込処理とを行う書込処理手段と、を有する。
ある実施の態様では、前記書込処理手段は、前記書込済の第2データ領域を前記不揮発性メモリの所定領域に一時的に保存しておき、予め定めた条件を満たした時点で消去する。書込処理手段は、また、前記第2データ領域への書込回数を累計し、累計値が所定値に達したときは、前記確保した数の前記第2データ領域を前記不揮発性メモリにおいて新たに確保するとともに、確保した第2データ領域へのデータ再構築のための処理を行う。
前記書込ルールは、例えば第1データ領域のアドレスに書込可能なアドレス範囲を記録したものであり、前記判別手段は、前記入力データを書き込むべきアドレスが、前記第1データ領域のアドレス範囲内かどうかを判別し、アドレス範囲内のときは当該入力データを前記第1データ領域に書き込むべきデータと判別し、前記アドレス範囲外のときは当該入力データを前記第2データ領域に書き込むべきデータと判別する。あるいは、前記書込ルールは、前記不揮発性メモリへの書込順序とそのデータ記録領域との関係を記録したものであり、前記判別手段は、前記入力データが前記不揮発性メモリに書き込む最初のデータであるときは、当該入力データを前記第1データ領域に書き込むべきデータと判別し、それ意外のデータを前記第2データ領域に書き込むべきデータと判別する。
本発明が提供するメモリ制御方法は、データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御する装置が実行する方法であって、入力データを受け付け、受け付けた入力データが書き換えを要しない第1データか書き換えを要する第2データかを、予め定めた書込ルールに基づいて判別するステップと、入力データが前記第1データであるときは当該入力データを前記不揮発性メモリの第1データ領域に書き込む第1書込処理を行い、他方、前記入力データが前記第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を前記不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に前記入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去する第2書込処理とを行うステップとを有する方法である。
本発明が提供するコンピュータプログラムは、コンピュータを、データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御するメモリ制御装置として動作させるためのコンピュータプログラムであって、前記コンピュータを、上記の受付手段、判別手段、書込処理手段、として機能させるものである。このコンピュータプログラムは、通常、記録媒体に記録されて流通する。
本発明によれば、入力データが書き換えを要しない第1データであるときは第1データ領域に書き込まれ、他方、入力データが書き換えを要する第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去するようにしたので、第1データ領域についての書き換えが不要となり、書込可能回数が増加するという特有の効果が得られる。
[構成図]
図1は、本発明の実施の形態例となるメモリ制御装置の構成例を示す図である。このメモリ制御装置1は、プロセッサ2と、本発明のコンピュータ・プログラムを格納したプログラムメモリ3と、揮発性メモリであるワーキングメモリ4とを含む。そして、プロセッサ2が、コンピュータ・プログラムをワーキングメモリ4に展開し、これを実行することにより、データバス6を介して接続された不揮発性メモリ5に対して特徴的なメモリアクセス制御を行う機能、すなわち、受付手段、判別手段、書込処理手段および読込手段を実現する。ワーキングメモリ5には、データ、書込回数の累計値、書込ルールを一時的に保持するバッファも形成される。
[不揮発性メモリ]
不揮発性メモリ5は、EEPROM、フラッシュメモリなど、不揮発の書込領域を確保できるメモリ媒体であり、アドレス体系を持ち、レジストリのようなID又はラベル(ともに識別情報の一種)で管理可能なものである。書込領域はグループ化されている。以後の説明では、書込単位となる複数の書込領域のグループのうち、最小単位のグループをエントリ、複数のエントリのグループをブロックと呼ぶ。
複数のエントリは、連続するアドレスによりシーケンシャルに関連付けられている。エントリにおけるシーケンシャルの関連付けは、例えば、確保したエントリの数を最大値とするシーケンス番号を割り当て、エントリへの正常な書込が進む度に、最初のエントリを起点とし、最後のエントリであることを表す数値を終点として、シーケンス番号を逐次小さい値に更新し、更新したシーケンス番号を当該エントリのフラグ情報としてヘッダブロック(エントリ)に書き込むことにより行う。複数のブロック間についても同様の手順で関連付けを行う。
この不揮発性メモリ5の構造例を図2に示す。不揮発性メモリ5は、複数のブロックで構成される。すなわち、初期データ用の初期データブロック51、管理領域ブロック52及び実データブロック53を有している。これらのブロック51〜53は、メモリ制御装置1により形成される。
初期データブロック51は、不揮発性メモリ5に初期に書き込む初期データのサイズに応じて、例えば2ブロック分(例えば、32ブロックの場合、0〜31の番号で識別される個々のブロックのうち、0,1の2つのブロック)を確保する。
初期データは、原則として1度だけ書き込まれるデータ、つまり書き換えを要しないデータであり、例えば既に書き込まれているデータを読み込むプログラムによってダイレクトに参照される。なお、初期データが存在しないときは、初期値が用意される。初期値は例えば「FFH」、あるいは「0XFF」のような値である。初期データブロック51の書込領域が初期値で埋められているときは、そこに書き込まれているものが何もないため、初期データとして書込可能状態にあることを表す。逆に、指定のアライメントアドレスからサイズ分のデータが、初期値で埋められていない場合は、そこに初期データとして既に書き込まれていることを表す。
管理領域ブロック52には、交互に使用する2ブロック(例えば、2,3の2つのブロック)を割り当てる。この管理領域ブロック52は、実データブロック53が、現在、どのようなブロック構成になっているかを示す管理情報を書き込むためのブロックである。
実データブロック53は、ヘッダブロックと実データブロックのいずれかを任意に選択することができる。ヘッダブロックは、どの実データブロックのどのアドレスにどのデータが存在し、その書込状態がどのようになっているかを示すヘッダ情報を書き込むためのブロックである。実データブロックは、メモリ制御装置1が外部(アプリケーション等)より取得し、装置内で実際に扱うデータ(実データという)を書き込むためのブロックである。
なお、管理領域ブロック52及び実データブロック53は、それぞれ複数のエントリを有する。エントリは、実データブロック53の場合、所定のデータサイズを1回の書込単位とする領域である。エントリおよび他のブロックがシーケンシャルに関連付けられていることは、上述の通りである。図2の例では、管理領域ブロック52についてのエントリ521と、実データブロック53についてのエントリ531とが示されている。
実データブロック53におけるヘッダブロック及び管理領域ブロックの割当例を図3に示す。実データブロックは、図上段に示すように、本例では、16バイト固定長とする。ヘッダブロックは、8バイト固定長とする。ヘッダ情報は、4バイトのスタートマーク領域(StartMark:SMと略する)と、4バイトのエンドマーク領域(EndMark:EMと略する)とに書き込む。書込は、SM、実データ、EMの順に行う。SMに書き込む情報が第1フラグ情報、EMに書き込む情報が第2フラグ情報となる。このような順番で書込を行うことにより、実際に実データが実データブロックに書き込まれたか書き込まれないかは、SMおよびEMへのヘッダ情報の書込が正常に行われたどうかによって、容易に判別することができる。
SMは、フラグ(1バイト)、シーケンス番号(1バイト)、物理アドレスのブロック番号(1バイト)、エントリ位置(1バイト)の4バイトで構成される。フラグとシーケンス番号は、あるアドレスへの複数回にわたるデータの書込があったときに、これらがシーケンシャルにすべて行われたことを保証するために使用する情報である。従えば256バイトの書込があったときは、個々の実データブロックが16バイト固定長であるために16回に分けて書込を行うことになる。このとき、16回の書込がシーケンシャルにすべて行われたことを保証するためにフラグとシーケンス番号が使用される。
各回の書込単位が分割されたシーケンスの何番目なのかを表すのがシーケンス番号である。シーケンシャル番号は、最初のエントリが最大値で、最後のエントリが0にされる。フラグには、シーケンス番号が有効であることを示す「SEQ」と、最初のシーケンス番号を示す「TOP_SEQ」とが設定される。
書き込まれているデータの検索(読込)は、最新エントリ、つまり最後のエントリから開始される。シーケンス番号は、書込が進むにつれて小さい値となり、最後は0となる。従って、検索時に、フラグに「SEQ」があり、且つ、シーケンス番号が最後を示す「0」であれば、それ以降に続くフラグ「TOP_SEQ」までの実データは、正しく実データブロックに書き込まれて、有効な書込状態であることを示す。逆に、検索(読込)時に、フラグに「SEQ」があり、且つ、シーケンス番号が「0」以外であれば、それ以降に続くフラグ「TOP_SEQ」までの実データは無効、つまり無いものとして扱う。
但し、アプリケーションからの要求によって無効として扱うだけで、これをログとして別途読み出すことは可能である。そのため、メモリ制御装置1は、無効データが書き込まれている実データブロックおよびヘッダブロックの書込状態を保持したまま、書込対象となる新たな実データを取得し、取得した新たな実データのサイズを書き込むための実データブロックおよびヘッダブロックのエントリを新たに確保し、保持してある実データブロックおよびヘッダブロックの書込状態を、一定の消去条件を満たしたときに、一括して消去するようにしている。これにより、何らの機能を新たに設けなくとも、不具合解析用のログとして利用することができる。
物理アドレスのブロック番号は、対象となる実データブロックが何番目のブロックかを識別するための番号であり、エントリ位置は、そのブロックのエントリが何番目のものかを示している。ブロック番号は、256バイトの場合、例えば「0」〜「255」のいずれかとなる。エントリ位置は、データ長が16バイト固定で1ブロックが2kBとして、「0」〜「127」のいずれかである。このブロック番号とエントリ位置が、実際にデータを書き込む物理アドレスに対応したものとなる。
EMは、同一論理アドレスの直前のエントリ位置(2バイト)、論理アドレス(2バイト)の4バイトで構成される。直前のエントリ位置は、最新に書き込まれたデータを特定するための情報である。論理アドレスは、16バイトアライメント(固定長)であるが、ある論理アドレスに書込を行うときに、その論理アドレスを読み込み、新しいデータで書き込む。これにより、その論理アドレスの最新データは、最後に書き込まれたデータだけを読み込めば良いことになる。この最後に書き込まれたデータのエントリ位置が「直前のエントリ位置」となる。
SM及びEMをこのように構成することにより、読込時に、そこに書き込まれている情報を参照するだけで、実データブロックへのデータの書込が正常に行われているかどうかを容易かつ迅速に判別することができる。
管理領域ブロック52は、再構築回数(2バイト)、フラグ(1バイト)、ブロック番号(1バイト)の4バイトから成る。「再構築」とは、更新し続けたデータをあるタイミングで本当に必要なデータだけを集めたものにする処理である。本当に必要なデータとは、一度でもデータが書き込まれたアドレスは、そのアドレスの値を引き継がなければならないということである。このような処理を可能にするには、書込領域のデータを消去して新たな書込領域を確保するとともに、確保した新たな書込領域に、最適化された古いデータの一部をコピーする。再構築は、書込領域を初期値に置き換える初期化とは区別されるものである。再構築回数は、現在までの再構築の回数を示している。再構築回数には、一定の限界がある。
「ブロック番号」は、使用している実データブロック53を識別するためのブロック番号である。そのブロックが現在どのような状態かを示すのがフラグである。フラグは、「再構築中」、「ヘッダ」、「データ」、「再構築完了」のいずれかを示す。「ヘッダ」及び「データ」は、そのブロックの内容を示している。ブロック番号は、空きブロックの中から選択される。空きブロックは、本例では、消去済みであったときに空きブロックと判定される公知の機能を利用して判定する。
なお、再構築を行うと、再構築前のブロック(エントリを含む)の情報は消去される。そのため、上記の空きブロックは、消去済みのブロックとなる。消去済のブロックは、ブロック内のすべてが未書込であることを示す[0XFF]であれば良いが、実際には、書込のできない不良ブロックの出現の可能性を否定できない。この場合、管理領域ブロック52のフラグに「不良ブロック」を設定し、不良ブロックの可能性のあるブロックの最初のエントリ部分を試し書き専用にして判定することも考えられる。しかし、一部のエントリのチェックでそのブロックの判定を行うことは、信頼性に欠ける。空きブロックの選択は、再構築時にだけ行われることに着目すれば、書込に失敗したときに、そのエントリをスキップする仕組みがあれば十分である。
メモリ制御装置1は、不揮発性メモリ5を初期化するときは、最初に再構築すべきかどうかを判定する。再構築済であれば、通常の動作となる。この通常の動作の途中で電源の切断等があっても、SM、実データブロック、EMの順番に従って書き込まれている限り、データの状態は、特別な処理を必要としなくとも保証される。
[EEPROMエミュレーション]
本実施形態では、データの書込に際して、EEPROMエミュレーションを用いる。そこで、本実施形態におけるEEPROMエミュレーションの概念を図4を参照して説明する。
図4(a)は、データ書込前のデータ領域グループの構造図である。ここでは、簡略化した構造例として、一つのエントリにおけるアドレスの領域が16バイトアライメント、データの領域が16バイト固定長、すなわち、例えばそれぞれ1バイトのデータを書き込む16個の書込領域を有するものとする。16個の書込領域並びに他のエントリの書込領域は、連続するアドレスで関連付けることにより、書込領域をそれぞれシーケンシャルに関連付ける。図示の数値は、16進法で表現されている。[0XFF]は、未書込領域を表す。
このような構造のエントリにおいて、メモリ制御装置1が、アドレス[0X3600](論理アドレスに相当)を指定して17バイトのデータを書き込んだとする。データの領域は16バイト固定長であるため、書込対象となる17バイトのデータは、アドレス[0X3600]〜[0X360F]のエントリに16バイト分(それぞれ[0X11])だけが書き込まれる。残りの1バイト分のデータ([0X11])は、シーケンシャルにつながる次のエントリの最初の書込領域(アドレス[0X3610])に書き込まれる。この状態を図4(b)に示す。この場合、アドレス[0X3610]から1バイトのデータを読み込むと、データ[0X11]が得られる。
この状態で、さらに1バイトのデータ[0X22]をアドレス[0X3611]に追記する場合、その時点で最新となっている、アドレス[0X3611]の16バイトアライメントであるアドレス[0X3610]のエントリを特定し、そのエントリの16バイト分のデータのうちアドレス[0X3611]に相当する部分を更新した16バイトのデータを、新しいエントリとして書き込む処理を行う(read-modify-write)。
更新は、追記前の最終の書込の次の未書込のエントリに、上記の新しいエントリを追記することにより、当該エントリの未書込領域を減らしていく処理である。この状態を示したのが、図4(c)である。追記が行われたエントリを、アドレス[0X3610]の新たなエントリとして書き込む。これにより、追記前のアドレス[0X3610]のエントリ(図4(b)の下段のエントリ)は不要となるので、これを、予め定めた所定条件を満たしたこと、例えば最後の書込終了後一定時間経過したことを検知したときに削除する。削除される間では保持される。保持する領域は、その領域を特定できれば、どこであっても良い。
このように、データ書込は個々の未書込領域毎に行い、消去するときはグループ(上記の例ではエントリ)毎に行うのが、本実施形態におけるEEPROMエミュレーションの一つの特徴である。これにより、データの書換が特定のアドレスに集中する場合に比べて消去回数が格段に減少するので、書込可能回数が増加する。
<動作>
次に、メモリ制御装置1の動作を具体的に説明する。
メモリ制御装置1は、入力を受け付けた書込対象データ(入力データ)が上述した初期データか、あるいは、何度も書き換える可能性のあるデータかを、書込ルールに基づいて判別する。
本実施形態では、2種類のルールをルールテーブルに記録してワーキングメモリ4に展開する。
第1ルールは、データを書き込むべきアドレス(書込アドレス)又は読み込むべき該当データのアドレス(読込アドレス)が初期データブロック51のアドレス範囲内であれば、それを初期データとして判別するという内容のものである。書込アドレスは、メモリ制御装置1にアクセスするアプリケーションプログラム上で指定される。
メモリ制御装置1は、書込アドレス又は読込アドレスが上記のアドレス範囲内のときは当該データを初期データと判別する。アドレス範囲は必ずしも連続する必要はない。例えば、アドレス[0X3000]〜[0X3100]をある目的で使用する初期データ用として確保しておき、不連続の他のアドレス[0X3600]〜[0X3700]を、マルチメディア処理の実行の際に参照されるパラメータ値(例えばサウンドのON/OFFや解像度等)の設定データや、API(Application Programming Interface)などを書き込む領域として定義することができる。この場合、上位アドレスである[0X3000]から16バイトのデータの読込要求があれば、初期データを返し、他方、下位のアドレスである[0X3600]から16バイトのデータ(API)の読込要求があれば、そのデータを返すという態様で使用することができる。
第2ルールは、不揮発性メモリ5への書込順序とそのデータ記録領域との関係を定めたもので、例えば、不揮発性メモリ5に書き込む最初の入力データであれば、当該入力データを初期データと判別するという内容のものである。このようにすると、初期データを必要とする範囲は、改めて指定する必要がない。
メモリ制御装置1は、入力データが初期データであるときは、その入力データを初期データブロック51に書き込む第1書込処理を行う。
他方、入力データが何度も書き換える可能性のあるデータであるときは、特徴的なEEPROMエミュレーションによる書込、すなわち、所定回数のデータ書込を可能にする上で必要となる数の実データブロック53を不揮発性メモリ5において確保し、確保した実データブロック53のうち、書込可能領域に入力データの逐次追記を行い、書込済の実データブロック53については、複数のブロック毎に消去する第2書込処理とを行う。
第2書込処理では、また、実データブロック53への書込回数を累計しておき、累計値が所定値に達したときは、予め確保した数の実データブロックと同じ数の実データブロックを不揮発性メモリ5において新たに確保し、上記の再構築を行う再構築処理とも行う。
このことを概念的に示したのが、図5(a)である。図中、「EEPROM基本システム」とは、メモリ制御装置1が、特徴的なEEPROMエミュレーションによる書込及び読込を行うシステムとして動作することを表し、「初期データシステム」とは、メモリ制御装置1が初期データの書込及び読込を行うシステムとして動作することを表す。さらに、「初期データ付きシステム複合システム」とは、メモリ制御装置1が、上記の2つの処理を複合した複合システムとして動作することを表す。
図5(b)に初期データブロックの具体的なアドレス配置を示す。初期データブロックは、例えば0X3000〜0X3100の上位アドレスを、上述したように読込要求があったときに返す初期データの領域とし、下位アドレスを予約領域として使用することができる。
まず、複合システムにおける処理手順の概要を説明する。
[データ書込処理]
全体的なデータ書込処理の手順を図6に示す。図6を参照すると、メモリ制御装置1は、図示しない入力装置を通じて入力データを受け付け、この入力データが初期データかどうかを書込ルールを参照することにより判別する。初期データではなく、何度も書き込む可能性のあるデータであった場合は、EEPROM基本システム(以下、便宜上「基本システム」と称する)による書込を行う(ステップS101:No、S102)。基本システムによるデータ書込処理については、後述する。
ステップS101において、判別の結果、入力データが初期データであったときは、その入力データが書き込めるかどうかを判定する。書き込めない場合は、ステップS102の処理を行う(ステップS101:No)。初期データとして書き込める場合は、初期データシステムによる書込処理を行う(ステップS101:No、S103:Yes、S104)。初期データシステムによるデータ書込処理については、後述する。
[データ読込処理]
全体的なデータ読込処理の手順を図7に示す。図7を参照すると、複合システムでデータを読み込むときは、まず、基本システムでの読込を開始する(ステップS201)。基本システムで読み込むべきデータが見つかったかどうかを判定し(ステップS202)、見つかった場合は、基本システムでデータを読み込む(ステップSS202:Yes、S203)。基本システムでのデータ読込処理については後述する。
基本システムで読み込むべきデータが見つからない場合は、初期データシステムでの読込を開始する(ステップS202:No、S204)。初期データシステムで読み込むべきデータが見つかったかどうかを判定し(ステップS205)、見つかった場合は、初期データシステムでのデータ読込処理を行う(ステップS206)。初期データシステムでのデータ読込処理については後述する。
他方、ステップS205において、該当データが見つからなかったときは、初期値(本例では「FFH」)を必要サイズ分にした読込データとする(ステップS207)。
[初期データシステムによるデータ書込処理1]
初期データシステムによるデータ書込処理の手順を図8に示す。ここでは、上述した第1ルール、すなわち、書込アドレスが初期データの範囲に指定されている場合の手順を示す。前提として、データの書込前段階でのアドレスは、指定のアライメントアドレスになっているものとする。
複合システムでは、書込アドレスが初期データの範囲に指定されているかどうかを判定する(ステップS301)。指定されていない場合は、基本システムでの書込処理に移る(ステップS301:No,S302)。他方、初期データの範囲に指定されている場合は、その書込アドレスの値が、まだ初期値(本例では「FFH」)ですべて埋められているかどうかを判定する(ステップS303)。埋められている場合は(ステップS303:Yes)、入力データを初期データシステムで書き込む(ステップS304)。
[初期データシステムによるデータ読込処理1]
初期データシステムによるデータ読込処理の手順を図9に示す。ここでは、上述した第1ルール、すなわち、読込アドレスが初期データの範囲に指定されている場合の手順を示す。前提として、読込前段階でのアドレスは、指定のアライメントアドレスになっているものとする。
複合システムでは、まず、基本システムでの読込を開始する(ステップS401)。基本システムで読み込むべき該当データを探し、見つかった場合は、該当データを基本システムで読み込む(ステップS402:Yes、S403)。該当データが見つからなかった場合は、読込アドレスが初期データの範囲に指定されているかどうかを調べる(ステップS404)。初期データの範囲に指定されている場合は、初期データシステムでデータを読み込む(ステップS404:Yes、S405)。他方、初期データの範囲に指定されていない場合は、該当データは存在しないことを意味するので、初期値(本例では「FFH」)を必要サイズ分にした読込データとする(ステップS404:No、S406)。
[初期データシステムによるデータ書込処理2]
初期データシステムによるデータ書込処理の他の手順を図10に示す。ここでは、上述した第2ルール、すなわち、最初に書き込むデータであれば、当該データを初期データと判別するという場合の手順を示す。書込前段階でのアドレスは、指定のアライメントアドレスになっているものとする。
複合システムでは、書込アドレスの初期データの値が、まだ初期値(本例で「FFH」)ですべて埋められているかどうかを判定する(ステップS501)。埋められていない場合は、基本システムでのデータ書込処理に移る(ステップS501:No、S502)。初期値ですべて埋められている場合は、初期データシステムで書込を行う(ステップS501:Yes、S503)。
[初期データシステムによるデータ読込処理2]
初期データシステムによるデータ読込処理の他の手順を図11に示す。ここでは、上述した第2ルール、すなわち、最初に書き込まれたデータであれば、当該データを初期データと判別するという場合の手順を示す。読込前段階でのアドレスは、指定のアライメントアドレスになっているものとする。
複合システムでは、基本システムでの読込を開始する(ステップS601)。基本システムで読み込むべき該当データを探し(ステップS602)、見つかった場合は、基本システムでそのデータを読み込む(ステップS602:Yes、S603)。ステップS602において、該当データが見つからなかった場合は、初期データシステムでデータを読み込む(ステップS602:No、S604)。
次に、基本システムにおけるデータ読込処理及びデータ書込処理について説明する。
複合システムでは、データの書込処理に際して、既にデータが書き込まれているデータおよび情報の読込処理が先行する。また、図7に示したように、データ読込処理に際しては、基本システムでの読込が初期データシステムでの読込に先行する。この基本システムによるデータ読込処理について、図12の手順説明図を参照して説明する。
[基本システムによるデータ読込処理]
基本システムでは、データの読み込み要求を行うプログラムが指定する読み込むデータのアドレス(addr)の入力をもとに、ブロック情報を計算する(ステップR101)。ここにいうブロック情報は、図3に示した管理領域ブロック及びヘッダブロックに書き込まれているエントリから特定されるブロック番号、データサイズ(size)等の情報である。
その後、アドレスのアライメント(a_addr)、オフセット(offset)を計算する(ステップR102)。アドレスのアライメント(a_addr)は、本例では、アドレス(addr)の16バイトアライメントである。例えば、読み込むデータの最初のアドレス(addr)が[0X3612]のとき、アドレスのアライメント(a_addr)は[0X3610]であり、差分である「2」がオフセット(offset)となる。このステップR102により計算されたアドレスのデータを読み込む(ステップR103)。必要なデータ分をワーキングメモリ4のバッファ(buf)に保存し、残りサイズを計算する(ステップR104)。ここにいう必要なデータ分は、「16−offset」かサイズ(size)のうち小さい方の値である。残りサイズは、サイズ(size)から(16−offset)分を差し引いた値となる。これを新たなサイズ(size)としてバッファに記憶する。残りサイズがあるときは、次のアライメントアドレスを計算し、オフセットを「0」にして、ステップR103の処理に戻る(ステップR105:Yes、R106)。残りサイズが無いときは、処理結果である読み出しデータを要求元に返し、終了する(ステップR105:No、R107)。
[基本システムによるデータ書込処理]
基本システムによるデータ書込処理を、図13及び図14を参照して説明する。
図13を参照すると、基本システムで、アプリケーションプログラムからのデータ書込要求の入力を契機に、ブロック情報を計算する(ステップW101)。ブロック情報は、上述したとおりである。その後、書込可能なアドレスのアライメント(a_addr)、サイズのオフセット(offset)を計算する(ステップW102)。書込分割回数SEQ、SMの初期フラグ値を決定する(ステップW103)。「SEQ=1」かどうかの判別を行い、「SEQ=1」であったときは(ステップW104:Yes)、初期データの書込判定と該当のアライメントアドレスのデータ読込処理へ移る(ステップW105)。初期データの書込判定については、図8に示した通りである。ここで同じデータを書き込もうとしてしている場合は、処理を終える(ステップW106:Yes)。
書込分割回数SEQは、サイズ(size)が16バイトとすると、SEQは「2」となる。すなわち、最後に書き込まれたアドレス(addr)が[0X3612]で、オフセット(offset)が「2」であるとすると、1回の書込では14バイト分しか書き込めない。残りの2バイト分は、次の実データブロックへの2回目の書込となる。そのため、2分割ということになり、SEQは「2」となる。
そのため、処理は、初期データの書込判定と該当のアライメントアドレスのデータの読込処理へ移る(ステップW104:No、W107)。そして新しいデータに更新し(ステップW108)、書込処理へ移る(ステップW109)。ステップW106において、同じデータを書き込もうとしていない場合も、ステップW108の処理に移る。書込処理の後、「SEQ−1」の処理を行い、SMの初期フラグ値を調整する(ステップW110)。「SEQ>0?」を判別し、そうであった場合は、次のアドレスを計算して(ステップW111:Yes、W112)、ステップW107へ戻る。「SEQ>0」でなければ、処理を終える(ステップW111:No)。
ステップW109における書込処理は、図14のように行われる。すなわち、データをデータ書込の順番(SM、データ、EMの順)に従って書き込む。(ステップW201)。この後、ヘッダブロックの領域に空きが無いかどうかを調べ、空きがあるときは、データ書込処理に戻る(ステップW202:No)。ヘッダブロックの領域に空き領域が無い場合は、次のヘッダブロックを選択できるかどうかを調べる(ステップW202:Yes、W203)。選択できるときは、次のヘッダブロックを選択し、ブロック情報を更新する(ステップW203、W204)。その後、呼び出し元の処理に戻る。ステップW203において、次のヘッダブロック領域を選択できないと判別できるときは、再構築処理へ移行する(ステップW203:Yes)。
[基本システムにおける再構築処理]
上述した再構築処理は、基本システムにおける特徴的な処理の一つである。この再構築処理の内容を、図15の処理手順図を参照して説明する。
基本システムでは、過去の消去可能なブロックが存在するかどうかを調べる(ステップK101)。過去の消去可能なブロックは、その内容が書き換えられたブロックである。存在するときは、そのブロックを消去する(ステップK101:Yes、K102)。消去可能なブロックが存在しない場合、あるいは存在するが消去した場合は、再構築開始を示す情報を管理領域ブロック52に書き込む(ステップK101:No、K103)。
新しいヘッダブロックを選択し、管理領域に書き込む(ステップK104)。また、新しい実データブロックを選択し、管理領域に書き込む(ステップK105)。例えば512回の書込毎に再構築する場合、ヘッダブロックは2つ、実データブロックは4つ選択される。つまり、再構築のために6ブロック消費する。これは、1つのヘッダブロックに256のヘッダを確保できるので、512のヘッダを確保するには、ヘッダブロックは2つとなる。実データブロックは、データの領域が16バイト固定長で、ブロックサイズが2kBであるから1つで128回となり、512回確保するためには、4つが必要ということになる。
メモリ制御装置1は、古いヘッダブロックが存在するかどうかを調べる(ステップK106)。存在する場合は、その古いヘッダブロックにおいて登録の順番の新しい側から順にデータを読み込む(ステップK107)。過去に選択されたスキップすべきアドレスかどうかを調べ、そうでない場合は、新しい実データブロックにデータを書き込む(ステップK108:No、K109)。そして、選択アドレスと一致する、それより前のデータは不要なデータとなるので、スキップできるようにするために、バッファに記憶しておく(ステップK110)。
ステップK108において、スキップすべきアドレスであった場合(ステップK108:Yes)、あるいは、スキップできるように記憶した後は、すべての古いブロックのデータを確認したかどうかを調べる(ステップK111)。未確認のブロックのデータが存在するときは、ステップK108の処理に戻る(ステップK111:No、K112)。
すべての古いブロックのデータを確認し終えた場合、あるいは、ステップK106において、古いヘッダブロックが無かった場合は(ステップK106)、再構築完了の情報を管理領域に書き込み、書込処理のための待機に戻る(ステップK120)。
再構築の完了により、直前の実データブロックは、新たに不要となった実データブロック(旧実データブロックという)となる。旧実データブロックは、この段階では削除せず、次の再構築のタイミングまで保持される。これは、再構築完了を書き込む前には旧実データブロックは削除できないこともあるが、削除していないことを示すフラグを持つと、その分、後述する回復のときの再構築のときに考慮すべきことが増え、複雑になることを防ぐためである。
なお、旧実データブロックを削除するときは、管理領域ブロック52にエントリされているEMの「同一アドレスの直前のエントリ位置」が意味をもつ。つまり、古いデータがリンクされ、存在位置が判るので、再構築に要する時間を長引かせることがない。
[効用]
このように、本実施形態のメモリ制御装置1では、基本システムにおいて、不揮発性メモリ5へのデータの書込に際して、EEPROMエミュレーション及び再構築を繰り返しながらデータ書込が行われるので、通常の使用態様によれば頻出する特定のアドレスへの集中が回避され、データ書込が平準化される。これにより、無駄のないデータ書込が可能となり、書込可能回数が飛躍的に増加する。例えば、従来の書込方式では1000回程度の書込可能回数しか許されないフラッシュメモリであっても、10万回程度の書込可能回数が確保されるので、同程度のEEPROMの代わりに、フラッシュメモリを使用することができる。
また、不要になったブロックでも、次の再構築のときまで削除されないで残っているので、例えば電源切断などの障害が発生しても、その発生前のデータが回復時に、再構築に復帰するので、安全性にも優れたものとなる。
書換可能回数を増加させる観点からは、上述したように基本システムだけでも効果的であるが、初期データを持たずに基本システムでEEPROMエミュレーションを行おうとすると、実際には1回しか書き込まれない初期データのために、再構築のための書込領域あるいはブロックの数を確保する必要があるため、その分、再構築の回数が増えて、全体の書込可能回数が減る。
本実施形態では、初期データについては初期データブロック51にそれを書き込み、再構築は、この初期データブロック51を除く領域(ブロック)についてだけ行うようにしたので、無駄な再構築を抑えることができ、全体の書き込み回数がより多くなる利点がある。再構築の回数が減ることにより、データ移動(コピー)のための回数が減り、全体的な処理効率が高まる効果もある。
[変形例]
なお、本実施形態では、不揮発性メモリ5として、フラッシュメモリを例に挙げて説明したが、本発明は、データの書込可能回数に一定の制限がある不揮発性メモリ全般に適用することができるので、使用できる不揮発性メモリの種類は任意であり、フラッシュメモリに限るものではない。
また、本実施形態では、エントリとブロックの2階層のグループでデータの書込を行う場合の例を説明したが、3階層であっても良い。あるいは、エントリ単位であっても良い。
本発明は、不揮発性メモリをデータ記録媒体として使用する情報処理装置において、広く利用することができる。フラッシュメモリに限定しても、パーソナルコンピュータ、ディジタルカメラ、携帯電話端末等、多種多量の機器に搭載されるデータ記録媒体のメモリ制御に利用することができる。
本発明の実施の一形態となるメモリ制御装置の全体構成図。 不揮発性メモリの構造説明図。 実データブロック、ヘッダブロック、管理領域ブロックの内容説明図。 (a)は書込前のメモリ状態、(b)は17バイトのデータを書き込んだときのメモリ状態、(c)は他のデータを追記したときのメモリ状態を示す。 (a)は本実施形態によるメモリ制御の特徴、(b)は初期データブロックの具体的なアドレス配置を示す説明図。 全体的なデータ書込処理の手順説明図。 全体的なデータ読込処理の手順説明図。 書込アドレスが指定されたときの書込処理の手順説明図。 読込アドレスが指定されたときの読込処理の手順説明図。 初期データブロックの書込状態だけで初期データを判別するときの書込処理の手順説明図。 初期データブロックの書込状態だけで初期データを判別するときの読込処理の手順説明図。 基本システムによるデータ読込処理の手順説明図。 基本システムによるデータ書込処理の手順説明図。 図13の書込処理の詳細説明図。 基本システムによる再構築処理の手順説明図。
符号の説明
1・・・メモリ制御装置、2・・・プロセッサ、3・・・プログラムメモリ、4・・・ワーキングメモリ、5・・・不揮発性メモリ、6・・・データバス、51・・・初期データブロック、52・・・管理領域ブロック、53・・・実データブロック、521,531・・・エントリ

Claims (8)

  1. データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御する装置であって、
    入力データを受け付ける受付手段と、
    前記入力データが書き換えを要しない第1データか書き換えを要する第2データかを、予め定めた書込ルールに基づいて判別する判別手段と、
    入力データが前記第1データであるときは当該入力データを前記不揮発性メモリの第1データ領域に書き込む第1書込処理を行い、他方、前記入力データが前記第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を前記不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に前記入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去する第2書込処理とを行う書込処理手段と、
    を有するメモリ制御装置。
  2. 前記書込処理手段は、前記書込済の第2データ領域を前記不揮発性メモリの所定領域に一時的に保存しておき、予め定めた条件を満たした時点で消去する、
    請求項1記載のメモリ制御装置。
  3. 前記書込処理手段は、前記第2データ領域への書込回数を累計し、累計値が所定値に達したときは、前記確保した数の前記第2データ領域を前記不揮発性メモリにおいて新たに確保するとともに、確保した第2データ領域へのデータ再構築のための処理を行う、
    請求項1又は2記載のメモリ制御装置。
  4. 前記書込ルールは、第1データ領域のアドレスに書込可能なアドレス範囲を記録したものであり、
    前記判別手段は、前記入力データを書き込むべきアドレスが、前記第1データ領域のアドレス範囲内かどうかを判別し、アドレス範囲内のときは当該入力データを前記第1データ領域に書き込むべきデータと判別し、前記アドレス範囲外のときは当該入力データを前記第2データ領域に書き込むべきデータと判別する、
    請求項1、2又は3記載のメモリ制御装置。
  5. 前記書込ルールは、前記不揮発性メモリへの書込順序とそのデータ記録領域との関係を記録したものであり、
    前記判別手段は、前記入力データが前記不揮発性メモリに書き込む最初のデータであるときは、当該入力データを前記第1データ領域に書き込むべきデータと判別し、それ意外のデータを前記第2データ領域に書き込むべきデータと判別する、
    請求項1乃至4のいずれかの項記載のメモリ制御装置。
  6. データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御する装置が実行する方法であって、
    入力データを受け付け、受け付けた入力データが書き換えを要しない第1データか書き換えを要する第2データかを、予め定めた書込ルールに基づいて判別するステップと、
    入力データが前記第1データであるときは当該入力データを前記不揮発性メモリの第1データ領域に書き込む第1書込処理を行い、他方、前記入力データが前記第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を前記不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に前記入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去する第2書込処理とを行うステップとを有する、
    メモリ制御方法。
  7. コンピュータを、データ書込可能回数に一定の制限のある不揮発性メモリへのデータの書込を制御するメモリ制御装置として動作させるためのコンピュータプログラムであって、
    前記コンピュータを、
    入力データを受け付ける受付手段、
    前記入力データが書き換えを要しない第1データか書き換えを要する第2データかを、予め定めた書込ルールに基づいて判別する判別手段、
    入力データが前記第1データであるときは当該入力データを前記不揮発性メモリの第1データ領域に書き込む第1書込処理を行い、他方、前記入力データが前記第2データであるときは、所定回数のデータ書込を可能にする上で必要となる数の第2データ領域を前記不揮発性メモリにおいて確保し、確保した第2データ記録領域のうち、書込可能領域に前記入力データの逐次追記を行い、書込済の第2データ領域については、複数領域毎に消去する第2書込処理とを行う書込処理手段、
    として機能させるコンピュータプログラム。
  8. 請求項7記載のコンピュータプログラムを記載して成る、
    コンピュータ読み取り可能な記録媒体。
JP2008187474A 2008-02-20 2008-07-18 メモリ制御装置及び方法、コンピュータプログラム Ceased JP2010026794A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008187474A JP2010026794A (ja) 2008-07-18 2008-07-18 メモリ制御装置及び方法、コンピュータプログラム
US12/867,584 US8595413B2 (en) 2008-02-20 2008-12-09 Memory control method and device, memory access control method, computer program, and recording medium
PCT/JP2008/072724 WO2009104330A1 (ja) 2008-02-20 2008-12-09 メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体
CN2008801281804A CN101978361B (zh) 2008-02-20 2008-12-09 存储器控制方法以及装置、存储器访问控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008187474A JP2010026794A (ja) 2008-07-18 2008-07-18 メモリ制御装置及び方法、コンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2010026794A true JP2010026794A (ja) 2010-02-04

Family

ID=41732574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008187474A Ceased JP2010026794A (ja) 2008-02-20 2008-07-18 メモリ制御装置及び方法、コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2010026794A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072461A (ja) * 2004-08-31 2006-03-16 Mitsubishi Electric Corp 車載電子制御装置
JP2006260468A (ja) * 2005-03-18 2006-09-28 Nec Electronics Corp 半導体装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072461A (ja) * 2004-08-31 2006-03-16 Mitsubishi Electric Corp 車載電子制御装置
JP2006260468A (ja) * 2005-03-18 2006-09-28 Nec Electronics Corp 半導体装置

Similar Documents

Publication Publication Date Title
US10783071B2 (en) Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block
JP5336060B2 (ja) 不揮発性メモリ装置およびそれを動作させる方法
US20030229753A1 (en) Flash memory file system
JP4192129B2 (ja) メモリ管理装置
US8180955B2 (en) Computing systems and methods for managing flash memory device
US8595413B2 (en) Memory control method and device, memory access control method, computer program, and recording medium
JP2007018499A (ja) 記憶装置
KR20080063466A (ko) 플래시 메모리 관리
JP2007004234A (ja) ストレージ装置
US20050278480A1 (en) Method of writing data into flash memory
JPWO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
JP4843222B2 (ja) 半導体記憶装置の制御方法、メモリカード、及びホスト機器
JP2010287049A (ja) メモリシステムおよびメモリシステムの管理方法
CN112596668A (zh) 一种存储器的坏块处理方法及系统
US20120297248A1 (en) Block write handling after corruption
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
KR100654344B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP5273780B2 (ja) メモリアクセス制御方法及びメモリ制御装置、コンピュータプログラム
JP5617873B2 (ja) 記憶装置
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP2010026794A (ja) メモリ制御装置及び方法、コンピュータプログラム
JP5180726B2 (ja) 記憶装置およびデータ書き込み制御方法
JP5491201B2 (ja) 半導体記録装置及び半導体記録システム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100714

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100818

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110111

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130723

AA92 Notification of invalidation

Free format text: JAPANESE INTERMEDIATE CODE: A971092

Effective date: 20130806

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130827