JP2011145755A - データ制御方法及びデータ制御装置 - Google Patents
データ制御方法及びデータ制御装置 Download PDFInfo
- Publication number
- JP2011145755A JP2011145755A JP2010003970A JP2010003970A JP2011145755A JP 2011145755 A JP2011145755 A JP 2011145755A JP 2010003970 A JP2010003970 A JP 2010003970A JP 2010003970 A JP2010003970 A JP 2010003970A JP 2011145755 A JP2011145755 A JP 2011145755A
- Authority
- JP
- Japan
- Prior art keywords
- data
- written
- bits
- unit
- minimum
- 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)
Abstract
【課題】有効データが書き込まれていない領域が発生することを防止することができるデータ制御方法及びデータ制御装置を提供する。
【解決手段】最小書込み単位がnビットのフラッシュメモリ22の先頭からx番目の最小書込み単位にデータが書き込まれており、x番目の最小書込み単位に書き込まれているデータの有効データ長がmビットであり、lビットの新規データを書き込む場合に、新規データを、n−mビットのデータ、y個のnビットのデータ、jビット(j=l−((n−m)+(n×y)))のデータ、に分割し、mビット分、値「1」が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、値「1」が並ぶ第2のデータと、を生成し、第1のデータ、y個のnビットのデータ、第2のデータを、それぞれ、x番目、x+1番目からx+y番目、x+y+1番目の最小書込み単位に書き込むデータ制御方法。
【選択図】図5
【解決手段】最小書込み単位がnビットのフラッシュメモリ22の先頭からx番目の最小書込み単位にデータが書き込まれており、x番目の最小書込み単位に書き込まれているデータの有効データ長がmビットであり、lビットの新規データを書き込む場合に、新規データを、n−mビットのデータ、y個のnビットのデータ、jビット(j=l−((n−m)+(n×y)))のデータ、に分割し、mビット分、値「1」が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、値「1」が並ぶ第2のデータと、を生成し、第1のデータ、y個のnビットのデータ、第2のデータを、それぞれ、x番目、x+1番目からx+y番目、x+y+1番目の最小書込み単位に書き込むデータ制御方法。
【選択図】図5
Description
本発明は、データ制御方法及びデータ制御装置に関し、特に、フラッシュメモリの書込み及び読出しにおけるデータ制御方法及びデータ制御装置に関する。
フラッシュメモリにデータを書き込む場合、所定のデータ容量毎にデータを書き込む。例えば、当該所定のデータ容量が3バイトである場合、フラッシュメモリに1バイトのデータを書き込む場合であっても、当該データの書き込みに使用されるフラッシュメモリのデータ領域のデータ容量は3バイトとなる。換言すれば、フラッシュメモリに書き込むことができる最小のデータ容量は決まっている。以下、このフラッシュメモリに書き込むことができる最小のデータ容量を、最小書込み単位と称する。
例えば、特許文献1には、フラッシュメモリに最小書込み単位毎にデータを書き込むデータ制御方法が記載されている。
また、特許文献2には、セクション毎にデータを書き込む技術が記載されている。
また、特許文献3には、ブロック毎にデータを書き込む技術が記載されている。
例えば、特許文献1には、フラッシュメモリに最小書込み単位毎にデータを書き込むデータ制御方法が記載されている。
また、特許文献2には、セクション毎にデータを書き込む技術が記載されている。
また、特許文献3には、ブロック毎にデータを書き込む技術が記載されている。
しかしながら、フラッシュメモリ等、最小書込み単位が定められているメモリにデータを書き込む場合、書き込むデータを最小書込み単位の整数倍のデータ長に変換して書込みを行う。そのため、書き込むデータのデータ容量よりも、メモリにおいて使用されるデータ領域のデータ容量の方が大きくなってしまう。例えば、最小書込み単位が4バイトのフラッシュメモリに、10バイトのデータを書き込む場合、4バイト×3のデータ長、すなわち、12バイトのデータに変換して書込みを行う。そのため、当該書込みで使用されるデータ領域のデータ容量は、書き込むデータのデータ容量より20%増加してしまう。そして、当該増加したデータ容量に相当するデータ領域は、使用できない領域となってしまう。換言すれば、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生してしまう。
本発明の第1の態様に係るデータ制御方法は、最小書込み単位毎にデータを書き込むことが定められているメモリにおけるデータ制御方法である。そして、前記データ制御方法は、前記最小書込み単位がnビット(nは、n>0を満たす整数)であり、前記メモリの先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、前記メモリにデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合に、前記メモリのデータの書込みを制御するデータ制御装置に、前記新規データを、前記新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割するデータ分割処理と、先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後に前記n−mビットのデータが並ぶ第1のデータと、前記jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成するデータ生成処理と、前記第1のデータを前記x番目の最小書込み単位に書き込み、前記y個のnビットのデータを前記x+1番目からx+y番目の最小書込み単位に書き込み、前記第2のデータをx+y+1番目の最小書込み単位に書き込むデータ書込み処理と、を実行させるものである。
本発明の第1の態様においては、データ制御装置は、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビットである場合に、lビットの新規データを、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割する。さらに、データ制御装置は、先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成する。そして、データ制御装置は、第1のデータをx番目の最小書込み単位に書き込み、y個のnビットのデータをx+1番目からx+y番目の最小書込み単位に書き込み、第2のデータをx+y+1番目の最小書込み単位に書き込む。そのため、メモリのx番目の最小書込み単位において有効データが書き込まれていないn−mビットの部分にも、新規データの先頭側のn−mビットのデータを書き込むことができる。また、第1のデータにおいて、先頭側からmビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、メモリのx番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているメモリにおいても、見かけ上、1ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生することを防止することができる。
本発明の第2の態様に係るデータ制御装置は、最小書込み単位毎にデータを書き込むことが定められているメモリのデータの書き込みを制御するデータ制御装置である。そして、前記データ制御装置は、前記最小書込み単位がnビット(nは、n>0を満たす整数)であり、前記メモリの先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、前記メモリにデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合に、前記新規データを、前記新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割するデータ分割手段と、先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後に前記n−mビットのデータが並ぶ第1のデータと、前記jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成するデータ生成手段と、前記第1のデータを前記x番目の最小書込み単位に書き込み、前記y個のnビットのデータを前記x+1番目からx+y番目の最小書込み単位に書き込み、前記第2のデータをx+y+1番目の最小書込み単位に書き込む書込み手段と、を備えるものである。
本発明の第2の態様においては、データ制御装置は、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビットである場合に、lビットの新規データを、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割する。さらに、データ制御装置は、先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成する。そして、データ制御装置は、第1のデータをx番目の最小書込み単位に書き込み、y個のnビットのデータをx+1番目からx+y番目の最小書込み単位に書き込み、第2のデータをx+y+1番目の最小書込み単位に書き込む。そのため、メモリのx番目の最小書込み単位において有効データが書き込まれていないn−mビットの部分にも、新規データの先頭側のn−mビットのデータを書き込むことができる。また、第1のデータにおいて、先頭側からmビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、メモリのx番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているメモリにおいても、見かけ上、1ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生することを防止することができる。
本発明により、有効データが書き込まれていない領域が発生することを防止することができる。
以下に、本発明を適用可能な実施の形態を説明する。なお、本発明は、以下の実施の形態に限定されるものではない。
実施の形態1.
図1に、本発明の実施の形態1に係るマイクロコンピュータ100(データ制御装置)のブロック図を示す。
マイクロコンピュータ100は、図1に示すように、演算部1、メモリ部2等を備えている。
実施の形態1.
図1に、本発明の実施の形態1に係るマイクロコンピュータ100(データ制御装置)のブロック図を示す。
マイクロコンピュータ100は、図1に示すように、演算部1、メモリ部2等を備えている。
演算部1は、CPU11、RAM12、コードメモリ13などを備えている。コードメモリ13は、演算部1を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。そして、CPU11は、コードメモリ13に格納されている各種プログラムを実行して、RAM12において展開することにより、演算部1の各部を制御する。
メモリ部2は、フラッシュメモリコントローラ21、フラッシュメモリ22(メモリ)などを備えている。
フラッシュメモリコントローラ21は、制御部(図示省略)、記録媒体(図示省略)等を備えている。記録媒体は、フラッシュメモリコントローラ21を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。例えば、記録媒体は、ライブラリプログラム21Aを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ21の各部を制御する。例えば、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22へのデータの書込み及びフラッシュメモリ22からのデータの読出しを制御する。また、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータの消去を制御する。さらに、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータのアドレス管理を行う。ここで、アドレス管理には、フラッシュメモリ22に格納されたデータの管理情報をフラッシュメモリ22に格納する処理、演算部1から入力された論理ID番号、論理アドレス及び論理ビット番号等を、物理ID番号、物理アドレス及び物理ビット番号等に変換する処理などが含まれる。なお、以下の説明において、論理ID番号、論理アドレス及び論理ビット番号と、物理ID番号、物理アドレス及び物理ビット番号とを区別せず、単に、ID番号、アドレス及びビット番号と称するが、適宜、論理ID番号、論理アドレス及び論理ビット番号等と、物理ID番号、物理アドレス及び物理ビット番号との変換が行われているものとする。
フラッシュメモリコントローラ21は、制御部(図示省略)、記録媒体(図示省略)等を備えている。記録媒体は、フラッシュメモリコントローラ21を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。例えば、記録媒体は、ライブラリプログラム21Aを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ21の各部を制御する。例えば、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22へのデータの書込み及びフラッシュメモリ22からのデータの読出しを制御する。また、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータの消去を制御する。さらに、制御部がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータのアドレス管理を行う。ここで、アドレス管理には、フラッシュメモリ22に格納されたデータの管理情報をフラッシュメモリ22に格納する処理、演算部1から入力された論理ID番号、論理アドレス及び論理ビット番号等を、物理ID番号、物理アドレス及び物理ビット番号等に変換する処理などが含まれる。なお、以下の説明において、論理ID番号、論理アドレス及び論理ビット番号と、物理ID番号、物理アドレス及び物理ビット番号とを区別せず、単に、ID番号、アドレス及びビット番号と称するが、適宜、論理ID番号、論理アドレス及び論理ビット番号等と、物理ID番号、物理アドレス及び物理ビット番号との変換が行われているものとする。
そして、演算部1からメモリ部2へ、フラッシュメモリ22に格納されたデータのID番号(識別情報)やデータ長などが入力される。また、演算部1からメモリ部2へ、フラッシュメモリ22からのデータの読出し、又は、フラッシュメモリ22へのデータの書込みを指示するRead/Writeコマンドが入力される。
また、メモリ部2から演算部1へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部1からメモリ部2へReadコマンドが入力されていた場合には、メモリ部2から演算部1へ、読み出したデータの値が入力される。
また、メモリ部2から演算部1へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部1からメモリ部2へReadコマンドが入力されていた場合には、メモリ部2から演算部1へ、読み出したデータの値が入力される。
図2は、本発明の実施の形態1に係るフラッシュメモリ22及び演算部1のRAM12を説明する図である。
図2に示すように、フラッシュメモリ22は、複数のブロック(block 1、block 2、block 3、・・・block n)に分割されている。各ブロックの先頭領域には、「block flag」が格納されている。
また、フラッシュメモリコントローラ21は、フラッシュメモリ22を、データを格納するデータ領域と、データ毎に管理情報を格納する管理領域に分割する。換言すれば、複数のブロックのうち、一部のブロックは、管理用ブロック(管理領域)となっており、他のブロックはデータ用ブロック(データ領域)となっている。
データ用ブロックは、フラッシュメモリ22に格納されるデータを格納している。また、管理用ブロックは、データ用ブロックに格納されるデータ毎に、管理情報を格納している。なお、管理情報の格納場所はフラッシュメモリ22に限られない。
図2に示すように、フラッシュメモリ22は、複数のブロック(block 1、block 2、block 3、・・・block n)に分割されている。各ブロックの先頭領域には、「block flag」が格納されている。
また、フラッシュメモリコントローラ21は、フラッシュメモリ22を、データを格納するデータ領域と、データ毎に管理情報を格納する管理領域に分割する。換言すれば、複数のブロックのうち、一部のブロックは、管理用ブロック(管理領域)となっており、他のブロックはデータ用ブロック(データ領域)となっている。
データ用ブロックは、フラッシュメモリ22に格納されるデータを格納している。また、管理用ブロックは、データ用ブロックに格納されるデータ毎に、管理情報を格納している。なお、管理情報の格納場所はフラッシュメモリ22に限られない。
データ用ブロックは、図2に示すように、先頭領域に「block flag」が格納されており、「block flag」が格納されている領域の後に、データが格納される。
また、フラッシュメモリ22は、所定のデータ容量毎にデータが書き込まれるメモリである。換言すれば、図2に示すように、フラッシュメモリ22は、最小書込み単位(unit 1、unit 2、・・・)毎にデータが書き込まれるメモリである。
また、フラッシュメモリ22は、所定のデータ容量毎にデータが書き込まれるメモリである。換言すれば、図2に示すように、フラッシュメモリ22は、最小書込み単位(unit 1、unit 2、・・・)毎にデータが書き込まれるメモリである。
管理用ブロックは、図2に示すように、先頭領域に「block flag」が格納されており、「block flag」が格納されている領域の後に、管理情報が格納される。図2に示す、「index 1」、「index 2」、・・・は、データ用ブロックに格納されるデータ毎の管理情報である。
また、RAM12は、データ用ブロックに格納されるデータのID番号(物理ID番号)と当該データのデータ長とを対応付けて記憶している。なお、データ用ブロックに格納されるデータのID番号と当該データのデータ長とは、管理用ブロックに記憶されていてもよい。また、データ用ブロックに格納されるデータのデータ長は、管理用ブロックにおいて隣り合って記憶されている管理情報のビット番号(後述)から算出することもできる。
図3は、本発明の実施の形態1に係るデータ用ブロックを説明する図である。上述した通り、フラッシュメモリ22においては、最小書込み単位(unit 1、unit 2、・・・)毎に、データが書き込まれるようになっている。本実施の形態1においては、フラッシュメモリ22の最小書込み単位を8ビットとする。しかし、本実施の形態に係るマイクロコンピュータ100においては、図3に示すように、データ用ブロックに、最小書込み単位(unit 1、unit 2、・・・)に関係なく、データ(data 1、data 2、data 3、data 4、・・・)が書き込まれるようになっている。そのため、本実施の形態1に係るマイクロコンピュータ100においては、有効データが書き込まれていない領域が発生することを防止することができる。詳細については、後述する。
図4は、本発明の実施の形態1に係る管理用ブロックを説明する図である。上述した通り、管理用ブロックは、データ用ブロックに格納されるデータ毎に、管理情報(index 1、index 2、・・・)を格納している。図4に示すように、管理情報(index 1、index 2、・・・)は、データ用ブロックに格納されるデータのID番号(物理ID番号)と、当該データのアドレス(address;物理アドレス)と、当該データのビット番号(bit No.;物理ビット番号)と、冗長化情報(sum値)とが対応付けられた情報である。ここで、当該アドレスは、当該データが書き込まれたデータ用ブロックの最小書込み単位のうち、最も先頭側の最小書込み単位のアドレスである。また、当該ビット番号は、当該データの先頭の値が書き込まれたデータ用ブロックのビット番号である。
なお、管理情報の内容は本実施の形態に限られるものではない。例えば、管理情報は、ID番号、アドレス、ビット番号、冗長化情報の他に、当該データのデータ長が対応付けられた情報であってもよい。本実施の形態1においては、ID番号のデータ長は8ビット、アドレスのデータ長は16ビット、ビット番号のデータ長は4ビット、冗長化情報のデータ長は4ビットのデータであるとする。すなわち、一つのデータの管理情報のデータ長は、32ビット(4バイト)となっている。
また、本実施の形態1では、冗長化情報は、sum値としてチェックサムの値を使用するが、CRC(Cyclic Redundancy Check)やECC(Error Correction Code)などの誤り検出によって得られる値であってもよい。
なお、管理情報の内容は本実施の形態に限られるものではない。例えば、管理情報は、ID番号、アドレス、ビット番号、冗長化情報の他に、当該データのデータ長が対応付けられた情報であってもよい。本実施の形態1においては、ID番号のデータ長は8ビット、アドレスのデータ長は16ビット、ビット番号のデータ長は4ビット、冗長化情報のデータ長は4ビットのデータであるとする。すなわち、一つのデータの管理情報のデータ長は、32ビット(4バイト)となっている。
また、本実施の形態1では、冗長化情報は、sum値としてチェックサムの値を使用するが、CRC(Cyclic Redundancy Check)やECC(Error Correction Code)などの誤り検出によって得られる値であってもよい。
図5は、本発明の実施の形態1におけるフラッシュメモリへのデータの書込みを説明する図である。
本発明の実施の形態1に係るマイクロコンピュータ100においては、フラッシュメモリコントローラ21の制御部(図示省略)がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、データ分割手段、データ生成手段、書き込み手段、検索手段として機能する。
具体的には、フラッシュメモリ22の最小書込み単位がnビット(nは、n>0を満たす整数)であり、フラッシュメモリ22の先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、フラッシュメモリ22にデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合、フラッシュメモリコントローラ21は、まず、新規データを、当該新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割する(データ分割処理)。次いで、フラッシュメモリコントローラ21は、先頭側からmビット分、値「1」が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、値「1」が並ぶ第2のデータと、を生成する(データ生成処理)。そして、フラッシュメモリコントローラ21は、第1のデータをx番目の最小書込み単位に書き込み、y個のnビットのデータをx+1番目からx+y番目の最小書込み単位に書き込み、第2のデータをx+y+1番目の最小書込み単位に書き込む(データ書込み処理)。なお、本実施の形態において、値「1」は、消去状態を表し、何も処理を行わないことを意味する値である。従って、消去状態を表す値が「0」であるメモリにおいては、何も処理を行わないことを意味する値を「0」とすることにより、本実施の形態1と同様にして、本発明を適用することができる。
本発明の実施の形態1に係るマイクロコンピュータ100においては、フラッシュメモリコントローラ21の制御部(図示省略)がライブラリプログラム21Aを実行することにより、フラッシュメモリコントローラ21は、データ分割手段、データ生成手段、書き込み手段、検索手段として機能する。
具体的には、フラッシュメモリ22の最小書込み単位がnビット(nは、n>0を満たす整数)であり、フラッシュメモリ22の先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、フラッシュメモリ22にデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合、フラッシュメモリコントローラ21は、まず、新規データを、当該新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割する(データ分割処理)。次いで、フラッシュメモリコントローラ21は、先頭側からmビット分、値「1」が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、値「1」が並ぶ第2のデータと、を生成する(データ生成処理)。そして、フラッシュメモリコントローラ21は、第1のデータをx番目の最小書込み単位に書き込み、y個のnビットのデータをx+1番目からx+y番目の最小書込み単位に書き込み、第2のデータをx+y+1番目の最小書込み単位に書き込む(データ書込み処理)。なお、本実施の形態において、値「1」は、消去状態を表し、何も処理を行わないことを意味する値である。従って、消去状態を表す値が「0」であるメモリにおいては、何も処理を行わないことを意味する値を「0」とすることにより、本実施の形態1と同様にして、本発明を適用することができる。
フラッシュメモリ22へのデータの書き込みについて図5の例を用いて説明する。図5では、最小書込み単位は8ビットとなっているため、n=8である。
また、図5の上段に示すデータ用ブロックは、何もデータが記載されていない状態である。そのため、図5の上段に示すデータ用ブロックでは、先頭から1番目の最小書込み単位(unit 1)、2番目の最小書込み単位(unit 2)、3番目の最小書込み単位(unit 3)の全ての各ビットの値は「1」となっている。
また、図5の上段に示すデータ用ブロックは、何もデータが記載されていない状態である。そのため、図5の上段に示すデータ用ブロックでは、先頭から1番目の最小書込み単位(unit 1)、2番目の最小書込み単位(unit 2)、3番目の最小書込み単位(unit 3)の全ての各ビットの値は「1」となっている。
そして、図5の上段に示すデータ用ブロックに、第1の新規データとして、データ長が6ビットの「101010」を書き込む場合、フラッシュメモリコントローラ21は、当該第1の新規データを最小書込み単位に分割する。この場合、第1の新規データのデータ長は6ビットであるため、フラッシュメモリコントローラ21は、第1の新規データを「101010zz」に分割し、「z」には「1」を代入する。換言すれば、フラッシュメモリコントローラ21は、第1の新規データから「10101011」を生成する。そして、フラッシュメモリコントローラ21は、「10101011」をフラッシュメモリ22の1番目の最小書込み単位(unit 1)に書き込む。第1の新規データが書き込まれたデータ用ブロックを図5の中段に示す。
また、フラッシュメモリコントローラ21は、第1の新規データの管理情報を管理用ブロックに格納する。ここで、図5において、1番目の最小書込み単位(unit 1)、2番目の最小書込み単位(unit 2)、3番目の最小書込み単位(unit 3)のアドレスは、それぞれ、「0001h」、「0002h」、「0003h」である。そこで、フラッシュメモリコントローラ21は、第1の新規データの管理情報として、ID番号「ID=1」、アドレス「0001h」、ビット番号「1」、冗長化情報(sum値)を対応付けて、管理用ブロックの管理情報「index 1」として格納する。
次いで、図5の中段に示すデータブロックに、第2の新規データとして、データ長が9ビットの「010101010」を書き込む場合について説明する。この場合、図5の中段に示すデータ用ブロックには、1番目の最小書込み単位までにデータが書き込まれており、1番目の最小書込み単位に書き込まれたデータ(第1の新規データ)の有効データは6ビットである。そのため、x=1、且つm=6となる。また、第2の新規データのデータ長は9ビットであるため、l=9である。
以上の場合、n−m=8−6=2、(l−(n−m))/n=(9−(8−6))/8=7/8となる。yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数であるため、図5の場合、yの値は存在しない。そのため、y=0とすることができる。そして、j=l−((n−m)+(n×y))=9−((8−6)+(8×0))=7となる。
そのため、フラッシュメモリコントローラ21は、第2の新規データを、先頭側から、2ビット(n−m=2)のデータ、0個の8ビットのデータ、7ビット(j=7)のデータに分割する。具体的には、図5の場合では、第2の新規データ「010101010」を「01」と「0101010」とに分割する。
そのため、フラッシュメモリコントローラ21は、第2の新規データを、先頭側から、2ビット(n−m=2)のデータ、0個の8ビットのデータ、7ビット(j=7)のデータに分割する。具体的には、図5の場合では、第2の新規データ「010101010」を「01」と「0101010」とに分割する。
次いで、フラッシュメモリコントローラ21は、先頭側から6ビット分(m=6)、値「1」が並んだ後に2ビット(n−m=2)のデータが並ぶ第1のデータと、7ビット(j=7)のデータの後に、1ビット分(n−j=1)、値「1」が並ぶ第2のデータと、を生成する。具体的には、図5の場合では、フラッシュメモリコントローラ21は、第1のデータとして「11111101」を、第2のデータとして「01010101」を生成する。
そして、フラッシュメモリコントローラ21は、第1のデータを1番目の最小書込み単位(unit 1)に書き込み、第2のデータを2番目(x+y+1=2)の最小書込み単位(unit 2)に書き込む。
また、フラッシュメモリコントローラ21は、第2の新規データの管理情報を管理用ブロックに格納する。具体的には、フラッシュメモリコントローラ21は、第2の新規データの管理情報として、ID番号「ID=2」、アドレス「0001h」、ビット番号「7」、冗長化情報(sum値)を対応付けて、管理用ブロックの管理情報「index 2」として格納する。
図6は、本実施の形態1におけるフラッシュメモリ22へのデータの書込みを説明するフローチャートである。
図6に示すように、まず、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向に検索し、直近に管理情報が格納された、消去状態ではないindexに格納されているID番号、アドレス及びビット番号を検索する(ステップS1)。換言すれば、フラッシュメモリコントローラ21は、直近にデータ用ブロックに格納されたデータ(最終データ)のID番号、アドレス及びビット番号を、管理用ブロックから取得する。
図6に示すように、まず、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向に検索し、直近に管理情報が格納された、消去状態ではないindexに格納されているID番号、アドレス及びビット番号を検索する(ステップS1)。換言すれば、フラッシュメモリコントローラ21は、直近にデータ用ブロックに格納されたデータ(最終データ)のID番号、アドレス及びビット番号を、管理用ブロックから取得する。
次に、フラッシュメモリコントローラ21は、ステップS1において検索したID番号のデータのデータ長をRAMから読出し、フラッシュメモリ22に書き込む新規データの書込み開始アドレスを、ステップS1において検索したアドレスに、ステップS1において検索したID番号のデータのデータ長を加算して得られる値とする(ステップS2)。換言すれば、フラッシュメモリコントローラ21は、フラッシュメモリ22に書き込む新規データの書込み開始アドレスを、直近にデータ用ブロックに格納されたデータ(最終データ)のアドレスに、最終データのデータ長を加算して得られる値とする。
次に、フラッシュメモリコントローラ21は、ステップS2において決定した書込み開始アドレスに、当該新規データのデータ長を加算して得られる値で表されるアドレスが、ブロック範囲内であるか否かを判断する(ステップS3)。
ステップS3において、フラッシュメモリコントローラ21は、当該アドレスがブロック範囲内ではないと判断した場合は(ステップS3;No)、フラッシュメモリコントローラ21は、ブロックの切り替え処理を行って(ステップS4)、ステップS1に戻る。
ステップS3において、フラッシュメモリコントローラ21は、当該アドレスがブロック範囲内ではないと判断した場合は(ステップS3;No)、フラッシュメモリコントローラ21は、ブロックの切り替え処理を行って(ステップS4)、ステップS1に戻る。
ここで、ブロック切り替え処理とは、現在のブロックに格納されているデータのうち、壊れていないデータ(正常なデータ)であって、最新のデータのみを抽出して、新しいブロックに格納するとともに、当該新ブロックに格納されたデータの管理情報を管理用ブロックに格納する処理である。現在のブロックに格納されているデータのうち、壊れていないデータであって、最新のデータのみを読み出す処理は、後述する読出し処理と同様の処理である。
ステップ3において、フラッシュメモリコントローラ21は、当該アドレスがブロック範囲内であると判断した場合は(ステップS3;Yes)、データ用ブロックの、ステップS2で決定された書込み開始アドレスに相当する領域(書込み対象領域)を参照して、当該領域がブランク状態(消去状態)であるか否かを判断する(ステップS5)。これは、マイクロコンピュータ100の場合、処理が中断したまま電源がOFFされてしまう場合があるからである。その場合、管理用ブロックに格納されている管理情報と、データ用ブロックへのデータの格納の状態とが一致しない場合も生ずる。そこで、ステップS5において、念のため、書込み対象領域がブランク状態であるか否かを確かめている。
ステップS5において、フラッシュメモリコントローラ21は、書込み対象領域がブランク状態ではないと判断した場合(ステップS5;No)、フラッシュメモリコントローラ21は、書込み開始アドレスに「1」を加算して得られる値を新たな書込み開始アドレスとした後(ステップS6)、ステップS3に戻る。
ステップS5において、フラッシュメモリコントローラ21は、書込み対象領域がブランク状態であると判断した場合(ステップS5;Yes)、フラッシュメモリコントローラ21は、書き込みデータの生成を行う(ステップS7)。具体的には、上述したように、フラッシュメモリコントローラ21は、新規データを分割し、フラッシュメモリ22に書き込むデータを生成する。
ステップS5において、フラッシュメモリコントローラ21は、書込み対象領域がブランク状態であると判断した場合(ステップS5;Yes)、フラッシュメモリコントローラ21は、書き込みデータの生成を行う(ステップS7)。具体的には、上述したように、フラッシュメモリコントローラ21は、新規データを分割し、フラッシュメモリ22に書き込むデータを生成する。
次に、フラッシュメモリコントローラ21は、ステップS7において生成したデータを、データ用ブロックに格納する(ステップS8)。
次いで、フラッシュメモリコントローラ21は、ステップS8においてデータ用ブロックに格納した新規データの管理情報を管理用ブロックに格納する(ステップS9)。
次いで、フラッシュメモリコントローラ21は、ステップS8においてデータ用ブロックに格納した新規データの管理情報を管理用ブロックに格納する(ステップS9)。
次に、本実施の形態1におけるフラッシュメモリ22からのデータの読出しについて、図7に示すフローチャートを参照しながら説明する。
まず、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向にID番号を検索する(ステップS101)。
まず、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向にID番号を検索する(ステップS101)。
次に、フラッシュメモリコントローラ21は、検索したID番号が、読み出すデータのID番号と一致するか否かを判断する(ステップS102)。なお、読み出すデータの論理ID番号及びデータ長は、演算部1から入力される。そして、フラッシュメモリコントローラ21は、当該論理ID番号を物理ID番号に変換して、ステップS102の処理を行う。
ステップS102において、フラッシュメモリコントローラ21は、検索したID番号が、読み出すデータのID番号と一致しないと判断した場合には(ステップS102;No)、ステップS101に戻る。
ステップS102において、フラッシュメモリコントローラ21は、検索したID番号が、読み出すデータのID番号と一致すると判断した場合には(ステップS102;Yes)、当該ID番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータのsum値と、当該ID番号と対応付けられて管理用ブロックに格納されているsum値とが一致するか否かを判断する(ステップS103)。
ステップS102において、フラッシュメモリコントローラ21は、検索したID番号が、読み出すデータのID番号と一致しないと判断した場合には(ステップS102;No)、ステップS101に戻る。
ステップS102において、フラッシュメモリコントローラ21は、検索したID番号が、読み出すデータのID番号と一致すると判断した場合には(ステップS102;Yes)、当該ID番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータのsum値と、当該ID番号と対応付けられて管理用ブロックに格納されているsum値とが一致するか否かを判断する(ステップS103)。
ステップS103において、フラッシュメモリコントローラ21は、sum値が一致しないと判断した場合には(ステップS103;No)、ステップS101に戻る。
ステップS103において、フラッシュメモリコントローラ21は、sum値が一致すると判断した場合には(ステップS103;Yes)、当該ID番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータを読み出す(ステップS104)。具体的には、フラッシュメモリコントローラ21は、データ用ブロックの当該アドレス及びビット番号から、演算部1から入力されたデータ長の分だけ、データを読み出す。
ステップS103において、フラッシュメモリコントローラ21は、sum値が一致すると判断した場合には(ステップS103;Yes)、当該ID番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータを読み出す(ステップS104)。具体的には、フラッシュメモリコントローラ21は、データ用ブロックの当該アドレス及びビット番号から、演算部1から入力されたデータ長の分だけ、データを読み出す。
次に、管理ブロックの検索について、説明する。図8は、本発明の実施の形態1におけるフラッシュメモリ書き込み方向及び検索方向を説明する図である。
図8に示すように、データ用ブロックは、先頭側から順にデータが書き込まれるようになっている。換言すれば、データ用ブロックは、先頭領域に「block flag」が格納されており、「block flag」の後から順に、データが格納されるようになっている。
また、同様に、管理用ブロックは、先頭側から順に管理情報が書き込まれるようになっている。換言すれば、管理用ブロックは、先頭領域に「block flag」が格納されており、「block flag」の後から順に、管理情報が格納されるようになっている。
図8に示すように、データ用ブロックは、先頭側から順にデータが書き込まれるようになっている。換言すれば、データ用ブロックは、先頭領域に「block flag」が格納されており、「block flag」の後から順に、データが格納されるようになっている。
また、同様に、管理用ブロックは、先頭側から順に管理情報が書き込まれるようになっている。換言すれば、管理用ブロックは、先頭領域に「block flag」が格納されており、「block flag」の後から順に、管理情報が格納されるようになっている。
そして、図8に示す例では、データ用ブロックに先頭側から順に、ID番号がID=1であるデータ「data 1」、ID番号がID=2であるデータ「data 2」、ID番号がID=3であるデータ「data 3」、ID番号がID=1であるデータ「data 1」が格納されている。
また、管理用ブロックには、先頭側から順に、ID=1のデータの管理情報(index 1)、ID=2のデータの管理情報(index 2)、ID=3のデータの管理情報(index 3)、ID=1のデータの管理情報(index 4)が格納されている。
また、管理用ブロックには、先頭側から順に、ID=1のデータの管理情報(index 1)、ID=2のデータの管理情報(index 2)、ID=3のデータの管理情報(index 3)、ID=1のデータの管理情報(index 4)が格納されている。
この場合に、ID番号がID=1であるデータ「data 1」を読み出す場合、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向に検索して、ID番号がID=1である管理情報を読み出す。図8の場合、フラッシュメモリコントローラ21は、ID番号がID=1である管理情報として、「index 4」の管理情報を読み出す。
また、フラッシュメモリコントローラ21は、データ用ブロックを検索して、「index 4」のアドレス(address 4)に格納されているデータ(データ用ブロックの先頭側から4番目に格納されているデータ)のsum値を算出する。そして、フラッシュメモリコントローラ21は、算出したsum値と、「index 4」のsum値とが一致するか否かを判断する。
また、フラッシュメモリコントローラ21は、データ用ブロックを検索して、「index 4」のアドレス(address 4)に格納されているデータ(データ用ブロックの先頭側から4番目に格納されているデータ)のsum値を算出する。そして、フラッシュメモリコントローラ21は、算出したsum値と、「index 4」のsum値とが一致するか否かを判断する。
算出したsum値と、「index 4」のsum値とが一致する場合には、フラッシュメモリコントローラ21は、「index 4」のアドレス(address 4)に格納されているデータ(データ用ブロックの先頭側から4番目に格納されているデータ)を読み出す。
算出したsum値と、「index 4」のsum値とが一致しない場合には、フラッシュメモリコントローラ21は、データ用ブロックの「index 4」よりも先頭側の領域を書込み方向とは反対方向に検索して、ID番号がID=1である管理情報を読み出す。図8の場合、フラッシュメモリコントローラ21は、ID番号がID=1である管理情報として、「index 1」の管理情報を読み出す。
また、フラッシュメモリコントローラ21は、データ用ブロックを検索して、管理情報「index 1」のアドレス(address 1)に格納されているデータ(データ用ブロックの先頭側から1番目に格納されているデータ)のsum値を算出する。そして、フラッシュメモリコントローラ21は、算出したsum値と、管理情報「index 1」のsum値とが一致するか否かを判断する。
また、フラッシュメモリコントローラ21は、データ用ブロックを検索して、管理情報「index 1」のアドレス(address 1)に格納されているデータ(データ用ブロックの先頭側から1番目に格納されているデータ)のsum値を算出する。そして、フラッシュメモリコントローラ21は、算出したsum値と、管理情報「index 1」のsum値とが一致するか否かを判断する。
そして、算出したsum値と、管理情報「index 1」のsum値とが一致する場合には、フラッシュメモリコントローラ21は、管理情報「index 1」のアドレス(address 1)に格納されているデータ(データ用ブロックの先頭側から1番目に格納されているデータ)を読み出す。
一方、算出したsum値と、管理情報「index 1」のsum値とが一致しない場合には、フラッシュメモリコントローラ21は、ID番号がID=1であるデータは壊れていると判断し、データの読出しを行わない。
一方、算出したsum値と、管理情報「index 1」のsum値とが一致しない場合には、フラッシュメモリコントローラ21は、ID番号がID=1であるデータは壊れていると判断し、データの読出しを行わない。
このように、フラッシュメモリコントローラ21は、管理用ブロックを書込み方向とは反対方向に検索するため、直近に書き込まれた管理情報を効率よく読み出すことができる。また、sum値を比較して、データが壊れていないかも判断するため、壊れていないデータであって、直近に書き込まれたデータを効率よく読み出すことができる。
以上、説明したように、本発明の実施の形態1に係るマイクロコンピュータ100及びデータ制御方法によれば、マイクロコンピュータ100のフラッシュメモリコントローラ21は、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビットである場合に、lビットの新規データを、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割する。さらに、フラッシュメモリコントローラ21は、先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後にn−mビットのデータが並ぶ第1のデータと、jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成する。そして、フラッシュメモリコントローラ21は、第1のデータをx番目の最小書込み単位に書き込み、y個のnビットのデータをx+1番目からx+y番目の最小書込み単位に書き込み、第2のデータをx+y+1番目の最小書込み単位に書き込む。そのため、フラッシュメモリ22のx番目の最小書込み単位において有効データが書き込まれていないn−mビットの部分にも、新規データの先頭側のn−mビットのデータを書き込むことができる。また、第1のデータにおいて、先頭側からmビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、フラッシュメモリ22のメモリのx番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているフラッシュメモリ22においても、見かけ上、1ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているフラッシュメモリ22において、有効データが書き込まれていない領域が発生することを防止することができる。
また、フラッシュメモリ22において、最小書込み単位毎にアドレスが割り当てられ、最小書込み単位の各ビット毎にビット番号が割り当てられている。そして、マイクロコンピュータ100のフラッシュメモリコントローラ21は、フラッシュメモリ22の複数のブロックのうち一部をデータ毎に管理情報を格納する管理用ブロックとし、他のブロックをデータを格納するデータ用ブロックとする。
また、管理情報は、フラッシュメモリ22に書き込まれたデータのID番号と、データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位のアドレスと、データの先頭の値が書き込まれたビットのビット番号と、データの冗長化情報(sum値)と、が対応付けられた情報である。
これにより、フラッシュメモリコントローラ21が、管理用ブロックを検索することによって、所望するデータをデータ用ブロックから容易に読み出すことができる。
また、管理情報は、フラッシュメモリ22に書き込まれたデータのID番号と、データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位のアドレスと、データの先頭の値が書き込まれたビットのビット番号と、データの冗長化情報(sum値)と、が対応付けられた情報である。
これにより、フラッシュメモリコントローラ21が、管理用ブロックを検索することによって、所望するデータをデータ用ブロックから容易に読み出すことができる。
マイクロコンピュータ100のフラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータを検索する場合に、管理用ブロックを書込み方向と反対方向に検索して、管理用ブロックから当該データの管理情報を検索する。
これにより、管理用ブロックに直近に書き込まれた当該データの管理情報を効率よく読み出すことができる。そのため、データ用ブロックに直近に書き込まれたデータを効率よく読み出すことができる。
また、管理用ブロックに格納されている冗長化情報(sum値)に基づいて、読み出すデータが正常であるか否かを判断することができる。そのため、データ用ブロックから、壊れていないデータであって、直近に書き込まれたデータを効率よく読み出すことができる。
これにより、管理用ブロックに直近に書き込まれた当該データの管理情報を効率よく読み出すことができる。そのため、データ用ブロックに直近に書き込まれたデータを効率よく読み出すことができる。
また、管理用ブロックに格納されている冗長化情報(sum値)に基づいて、読み出すデータが正常であるか否かを判断することができる。そのため、データ用ブロックから、壊れていないデータであって、直近に書き込まれたデータを効率よく読み出すことができる。
実施の形態2.
図9に、本発明の実施の形態2に係るマイクロコンピュータ200(データ制御装置)のブロック図を示す。
マイクロコンピュータ200は、図9に示すように、演算部1のコードメモリ131、メモリ部2のフラッシュメモリコントローラ211が、実施の形態1に係るマイクロコンピュータ100と異なる。そのため、同一の構成については、同一の符号を付すとともに、その説明を省略する。
図9に、本発明の実施の形態2に係るマイクロコンピュータ200(データ制御装置)のブロック図を示す。
マイクロコンピュータ200は、図9に示すように、演算部1のコードメモリ131、メモリ部2のフラッシュメモリコントローラ211が、実施の形態1に係るマイクロコンピュータ100と異なる。そのため、同一の構成については、同一の符号を付すとともに、その説明を省略する。
演算部1は、CPU11、RAM12、コードメモリ131などを備えている。コードメモリ131は、演算部1を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。例えば、コードメモリ131は、ユーザプログラム131A、ライブラリプログラム131Bを格納している。そして、CPU11は、コードメモリ13に格納されている各種プログラムを実行して、RAM12において展開することにより、演算部1の各部を制御する。例えば、CPU11は、ライブラリプログラム131Bを実行することにより、データ分割手段、データ生成手段等として機能する。
より具体的には、例えば、CPU11が、ユーザプログラム131Aを実行することにより、演算部1は、フラッシュメモリ22から読み出すデータのID番号を生成し、フラッシュメモリ22からのデータの読出し、又は、フラッシュメモリ22へのデータの書込みを指示するRead/Writeコマンドを生成する。
また、CPU11が、ライブラリプログラム131Bを実行することにより、演算部1は、生成したID番号に基づいてフラッシュメモリ22のアドレス管理を行うとともに、Read/Writeコマンドをフラッシュメモリコントローラ211に入力する。
また、CPU11が、ライブラリプログラム131Bを実行することにより、演算部1は、フラッシュメモリコントローラ211が読み出したデータや、コマンドの成否や状態等を表す戻り値を生成する。
また、CPU11が、ライブラリプログラム131Bを実行することにより、演算部1は、生成したID番号に基づいてフラッシュメモリ22のアドレス管理を行うとともに、Read/Writeコマンドをフラッシュメモリコントローラ211に入力する。
また、CPU11が、ライブラリプログラム131Bを実行することにより、演算部1は、フラッシュメモリコントローラ211が読み出したデータや、コマンドの成否や状態等を表す戻り値を生成する。
メモリ部2は、フラッシュメモリコントローラ211、フラッシュメモリ22(メモリ)などを備えている。
フラッシュメモリコントローラ211は、制御部(図示省略)、記録媒体(図示省略)等を備えている。記録媒体は、フラッシュメモリコントローラ211を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ21の各部を制御する。例えば、制御部が各種プログラムを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22へのデータの書込み及びフラッシュメモリ22からのデータの読出しを制御する。また、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータの消去を制御する。また、フラッシュメモリコントローラ211は、フラッシュメモリ22の管理用ブロックを書込み方向と反対方向に検索して、データの管理情報を検索する。
フラッシュメモリコントローラ211は、制御部(図示省略)、記録媒体(図示省略)等を備えている。記録媒体は、フラッシュメモリコントローラ211を制御するための各種プログラム(図示省略)及びデータ(図示省略)などを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ21の各部を制御する。例えば、制御部が各種プログラムを実行することにより、フラッシュメモリコントローラ21は、フラッシュメモリ22へのデータの書込み及びフラッシュメモリ22からのデータの読出しを制御する。また、フラッシュメモリコントローラ21は、フラッシュメモリ22に格納されているデータの消去を制御する。また、フラッシュメモリコントローラ211は、フラッシュメモリ22の管理用ブロックを書込み方向と反対方向に検索して、データの管理情報を検索する。
そして、演算部1からメモリ部2へ、フラッシュメモリ22に格納されたデータのアドレスやビット番号が入力される。また、演算部1からメモリ部2へ、フラッシュメモリ22からのデータの読出し、又は、フラッシュメモリ22へのデータの書込みを指示するRead/Writeコマンドが入力される。
また、メモリ部2から演算部1へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部1からメモリ部2へReadコマンドが入力されていた場合には、メモリ部2から演算部1へ、読み出したデータの値が入力される。
また、メモリ部2から演算部1へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部1からメモリ部2へReadコマンドが入力されていた場合には、メモリ部2から演算部1へ、読み出したデータの値が入力される。
従って、実施の形態2に係るマイクロコンピュータ200では、演算部1のCPU11が、フラッシュメモリ22に格納されたデータのアドレス管理を行うとともに、データ分割手段、データ生成手段として機能し、メモリ部2のフラッシュメモリコントローラ211は、フラッシュメモリ22に格納されたデータのアドレス管理を行わず、データ分割手段、データ生成手段として機能しない点が、実施の形態1に係るマイクロコンピュータ100と異なる。なお、実施の形態2においても、フラッシュメモリコントローラ211は、フラッシュメモリ22へのデータの書込み、フラッシュメモリ22からのデータの読出し、フラッシュメモリ22に書き込まれているデータの消去を制御する。そのため、上記の点以外は、実施の形態2に係るマイクロコンピュータ200は、実施の形態1に係るマイクロコンピュータ100と同様であるため、その説明を省略する。
以上、説明したように、本発明の実施の形態2に係るマイクロコンピュータ200及びデータ制御方法によれば、実施の形態1に係るマイクロコンピュータ100及びデータ制御方法と同様の効果が得られる。
なお、実施の形態1に係るマイクロコンピュータ100と実施の形態2に係るマイクロコンピュータ200とを比較すると、マイクロコンピュータ100では、演算部1内にライブラリプログラムを設ける必要がなく、マイクロコンピュータ200では、演算部1のコードメモリ131内にライブラリプログラム131Aを設ける必要がある。そのため、マイクロコンピュータ100では、演算部1内の資源を必要としないという効果を有する。
なお、実施の形態1に係るマイクロコンピュータ100と実施の形態2に係るマイクロコンピュータ200とを比較すると、マイクロコンピュータ100では、演算部1内にライブラリプログラムを設ける必要がなく、マイクロコンピュータ200では、演算部1のコードメモリ131内にライブラリプログラム131Aを設ける必要がある。そのため、マイクロコンピュータ100では、演算部1内の資源を必要としないという効果を有する。
1 演算部
11 CPU
12 RAM
13、131 コードメモリ
131A ユーザプログラム
131B ライブラリプログラム
2 メモリ部
21、211 フラッシュメモリコントローラ
21A ライブラリプログラム
22 フラッシュメモリ(メモリ)
100、200 マイクロコンピュータ(データ制御装置)
11 CPU
12 RAM
13、131 コードメモリ
131A ユーザプログラム
131B ライブラリプログラム
2 メモリ部
21、211 フラッシュメモリコントローラ
21A ライブラリプログラム
22 フラッシュメモリ(メモリ)
100、200 マイクロコンピュータ(データ制御装置)
Claims (12)
- 最小書込み単位毎にデータを書き込むことが定められているメモリにおけるデータ制御方法であって、
前記最小書込み単位がnビット(nは、n>0を満たす整数)であり、前記メモリの先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれているデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、前記メモリにデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合に、
前記メモリのデータの書込みを制御するデータ制御装置に、
前記新規データを、前記新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割するデータ分割処理と、
先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後に前記n−mビットのデータが並ぶ第1のデータと、前記jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成するデータ生成処理と、
前記第1のデータを前記x番目の最小書込み単位に書き込み、前記y個のnビットのデータを前記x+1番目からx+y番目の最小書込み単位に書き込み、前記第2のデータをx+y+1番目の最小書込み単位に書き込むデータ書込み処理と、
を実行させるデータ制御方法。 - 前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置に、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を記憶部に格納する処理を実行させる請求項1に記載のデータ制御方法。 - 前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置に、
前記メモリを、データを格納するデータ領域と、前記データ毎に管理情報を格納する管理領域と、に分ける処理と、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を前記管理領域に格納する処理と、
を実行させる請求項1に記載のデータ制御方法。 - 前記管理情報は、前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、前記データの冗長化情報と、が対応付けられた情報である請求項2又は3に記載のデータ制御方法。
- 前記データ制御装置に、前記メモリに格納されているデータを検索させる場合に、前記管理領域を書込み方向と反対方向に検索して、前記管理領域から前記データの前記管理情報を検索する処理を実行させる請求項3又は4に記載のデータ制御方法。
- 前記メモリは、フラッシュメモリであり、前記何も処理を行わないことを意味する値は「1」である請求項1乃至5の何れか一項に記載のデータ制御方法。
- 最小書込み単位毎にデータを書き込むことが定められているメモリのデータの書き込みを制御するデータ制御装置であって、
前記最小書込み単位がnビット(nは、n>0を満たす整数)であり、前記メモリの先頭からx番目(xは、x>0を満たす整数)の最小書込み単位までにデータが書き込まれており、x番目の最小書込み単位に書き込まれたデータの有効データ長がmビット(mは、0≦m≦nを満たす整数)であり、前記メモリにデータ長がlビット(lは、l>0を満たす整数)である新規データを書き込む場合に、
前記新規データを、前記新規データの先頭から、n−mビットのデータ、y個(yは、(l−(n−m))/nの整数部分であって、y>0を満たす整数)のnビットのデータ、jビット(jは、j=l−((n−m)+(n×y))且つj≧0を満たす整数)のデータ、に分割するデータ分割手段と、
先頭側からmビット分、何も処理を行わないことを意味する値が並んだ後に前記n−mビットのデータが並ぶ第1のデータと、前記jビットのデータの後に、n−jビット分、何も処理を行わないことを意味する値が並ぶ第2のデータと、を生成するデータ生成手段と、
前記第1のデータを前記x番目の最小書込み単位に書き込み、前記y個のnビットのデータを前記x+1番目からx+y番目の最小書込み単位に書き込み、前記第2のデータをx+y+1番目の最小書込み単位に書き込む書込み手段と、
を備えるデータ制御装置。 - 前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置は、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を記憶する記憶部と、
前記記憶部に前記管理情報を格納する管理情報格納手段と、
を備える請求項7に記載のデータ制御装置。 - 前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置は、
前記メモリを、データを格納するデータ領域と、前記データ毎に管理情報を格納する管理領域と、に分ける領域分割手段と、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を前記管理領域に格納する管理情報格納手段と、
を備える請求項7に記載のデータ制御装置。 - 前記管理情報は、前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、前記データの冗長化情報と、が対応付けられた情報である請求項8又は9に記載のデータ制御装置。
- 前記データ制御装置は、
前記メモリに格納されているデータを検索する場合に、前記管理領域を書込み方向と反対方向に検索して、前記管理領域から前記データの前記管理情報を検索する検索手段を備える請求項9又は10に記載のデータ制御装置。 - 前記メモリは、フラッシュメモリであり、前記何も処理を行わないことを意味する値は「1」である請求項7乃至11の何れか一項に記載のデータ制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010003970A JP2011145755A (ja) | 2010-01-12 | 2010-01-12 | データ制御方法及びデータ制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010003970A JP2011145755A (ja) | 2010-01-12 | 2010-01-12 | データ制御方法及びデータ制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011145755A true JP2011145755A (ja) | 2011-07-28 |
Family
ID=44460577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010003970A Pending JP2011145755A (ja) | 2010-01-12 | 2010-01-12 | データ制御方法及びデータ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011145755A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10656856B2 (en) | 2015-07-13 | 2020-05-19 | Lsis Co., Ltd. | Data access apparatus using memory device wherein 24-bit data is divided into three segments that has predetermined addresses mapped to addresses of single 8-bit device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09311815A (ja) * | 1995-12-13 | 1997-12-02 | Samsung Electron Co Ltd | バッファメモリ制御装置 |
JP2003216483A (ja) * | 2002-01-21 | 2003-07-31 | Fujitsu Ltd | メモリコントローラおよびメモリシステム装置 |
JP2008123643A (ja) * | 2006-11-15 | 2008-05-29 | Fujitsu Ltd | 半導体記憶装置および半導体記憶装置の制御方法 |
-
2010
- 2010-01-12 JP JP2010003970A patent/JP2011145755A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09311815A (ja) * | 1995-12-13 | 1997-12-02 | Samsung Electron Co Ltd | バッファメモリ制御装置 |
JP2003216483A (ja) * | 2002-01-21 | 2003-07-31 | Fujitsu Ltd | メモリコントローラおよびメモリシステム装置 |
JP2008123643A (ja) * | 2006-11-15 | 2008-05-29 | Fujitsu Ltd | 半導体記憶装置および半導体記憶装置の制御方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10656856B2 (en) | 2015-07-13 | 2020-05-19 | Lsis Co., Ltd. | Data access apparatus using memory device wherein 24-bit data is divided into three segments that has predetermined addresses mapped to addresses of single 8-bit device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5764392B2 (ja) | メモリコントローラ | |
US8555143B2 (en) | Flash memory controller and the method thereof | |
US7702844B2 (en) | Address mapping method and mapping information managing method for flash memory, and flash memory using the same | |
US9058256B2 (en) | Data writing method, memory controller and memory storage apparatus | |
WO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
JP2005190201A (ja) | 情報処理装置および該装置用のromイメージ生成装置 | |
JP2007012060A (ja) | 逆階層構造を有するファイルシステム | |
JP2007012056A (ja) | データ保全の先送りされた認証を有するファイルシステム | |
JP2007012054A (ja) | ファイルシステム保全の最適化されたスタートアップ認証 | |
TWI421683B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
JP2006120082A (ja) | メモリカード、半導体装置、及びメモリカードの制御方法 | |
US20040049727A1 (en) | Method and apparatus for allocating CRC codes in a flash ROM | |
US8046529B2 (en) | Updating control information in non-volatile memory to control selection of content | |
JP4235646B2 (ja) | メモリコントローラおよびフラッシュメモリシステム | |
JP2011145755A (ja) | データ制御方法及びデータ制御装置 | |
JP2007305105A (ja) | メモリコントローラ | |
JP4513786B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2010079659A (ja) | フラッシュメモリの延命装置、その方法及びそのプログラム | |
JP2009276883A (ja) | 半導体補助記憶装置 | |
JP6054753B2 (ja) | 半導体装置及びデータアクセス方法 | |
JP2007293726A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP5195690B2 (ja) | 情報処理装置、該装置用のromイメージ生成装置、および転送装置 | |
JP5787095B2 (ja) | 不揮発性メモリへのデータ記憶方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120808 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131008 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140225 |