(57)【要約】【課題】有効データが書き込まれていない領域が発生することを防止することができるデータ制御方法及びデータ制御装置を提供する。【解決手段】最小書込み単位がｎビットのフラッシュメモリ２２の先頭からｘ番目の最小書込み単位にデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれているデータの有効データ長がｍビットであり、ｌビットの新規データを書き込む場合に、新規データを、ｎ−ｍビットのデータ、ｙ個のｎビットのデータ、ｊビット（ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ）））のデータ、に分割し、ｍビット分、値「１」が並んだ後にｎ−ｍビットのデータが並ぶ第１のデータと、ｊビットのデータの後に、ｎ−ｊビット分、値「１」が並ぶ第２のデータと、を生成し、第１のデータ、ｙ個のｎビットのデータ、第２のデータを、それぞれ、ｘ番目、ｘ＋１番目からｘ＋ｙ番目、ｘ＋ｙ＋１番目の最小書込み単位に書き込むデータ制御方法。【選択図】図５
2011145755.tif 000002
【特許請求の範囲】
【請求項１】
最小書込み単位毎にデータを書き込むことが定められているメモリにおけるデータ制御方法であって、
前記最小書込み単位がｎビット（ｎは、ｎ＞０を満たす整数）であり、前記メモリの先頭からｘ番目（ｘは、ｘ＞０を満たす整数）の最小書込み単位までにデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれているデータの有効データ長がｍビット（ｍは、０≦ｍ≦ｎを満たす整数）であり、前記メモリにデータ長がｌビット（ｌは、ｌ＞０を満たす整数）である新規データを書き込む場合に、
前記メモリのデータの書込みを制御するデータ制御装置に、
前記新規データを、前記新規データの先頭から、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割するデータ分割処理と、
先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後に前記ｎ−ｍビットのデータが並ぶ第１のデータと、前記ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成するデータ生成処理と、
前記第１のデータを前記ｘ番目の最小書込み単位に書き込み、前記ｙ個のｎビットのデータを前記ｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、前記第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込むデータ書込み処理と、
を実行させるデータ制御方法。
【請求項２】
前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置に、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を記憶部に格納する処理を実行させる請求項１に記載のデータ制御方法。
【請求項３】
前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置に、
前記メモリを、データを格納するデータ領域と、前記データ毎に管理情報を格納する管理領域と、に分ける処理と、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を前記管理領域に格納する処理と、
を実行させる請求項１に記載のデータ制御方法。
【請求項４】
前記管理情報は、前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、前記データの冗長化情報と、が対応付けられた情報である請求項２又は３に記載のデータ制御方法。
【請求項５】
前記データ制御装置に、前記メモリに格納されているデータを検索させる場合に、前記管理領域を書込み方向と反対方向に検索して、前記管理領域から前記データの前記管理情報を検索する処理を実行させる請求項３又は４に記載のデータ制御方法。
【請求項６】
前記メモリは、フラッシュメモリであり、前記何も処理を行わないことを意味する値は「１」である請求項１乃至５の何れか一項に記載のデータ制御方法。
【請求項７】
最小書込み単位毎にデータを書き込むことが定められているメモリのデータの書き込みを制御するデータ制御装置であって、
前記最小書込み単位がｎビット（ｎは、ｎ＞０を満たす整数）であり、前記メモリの先頭からｘ番目（ｘは、ｘ＞０を満たす整数）の最小書込み単位までにデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビット（ｍは、０≦ｍ≦ｎを満たす整数）であり、前記メモリにデータ長がｌビット（ｌは、ｌ＞０を満たす整数）である新規データを書き込む場合に、
前記新規データを、前記新規データの先頭から、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割するデータ分割手段と、
先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後に前記ｎ−ｍビットのデータが並ぶ第１のデータと、前記ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成するデータ生成手段と、
前記第１のデータを前記ｘ番目の最小書込み単位に書き込み、前記ｙ個のｎビットのデータを前記ｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、前記第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む書込み手段と、
を備えるデータ制御装置。
【請求項８】
前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置は、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を記憶する記憶部と、
前記記憶部に前記管理情報を格納する管理情報格納手段と、
を備える請求項７に記載のデータ制御装置。
【請求項９】
前記メモリにおいて、前記最小書込み単位毎にアドレスが割り当てられ、前記最小書込み単位の各ビット毎にビット番号が割り当てられており、
前記データ制御装置は、
前記メモリを、データを格納するデータ領域と、前記データ毎に管理情報を格納する管理領域と、に分ける領域分割手段と、
前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、を対応付けた管理情報を前記管理領域に格納する管理情報格納手段と、
を備える請求項７に記載のデータ制御装置。
【請求項１０】
前記管理情報は、前記メモリに書き込まれたデータの識別情報と、前記データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位の前記アドレスと、前記データの先頭の値が書き込まれた前記ビット番号と、前記データの冗長化情報と、が対応付けられた情報である請求項８又は９に記載のデータ制御装置。
【請求項１１】
前記データ制御装置は、
前記メモリに格納されているデータを検索する場合に、前記管理領域を書込み方向と反対方向に検索して、前記管理領域から前記データの前記管理情報を検索する検索手段を備える請求項９又は１０に記載のデータ制御装置。
【請求項１２】
前記メモリは、フラッシュメモリであり、前記何も処理を行わないことを意味する値は「１」である請求項７乃至１１の何れか一項に記載のデータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ制御方法及びデータ制御装置に関し、特に、フラッシュメモリの書込み及び読出しにおけるデータ制御方法及びデータ制御装置に関する。
【背景技術】
【０００２】
フラッシュメモリにデータを書き込む場合、所定のデータ容量毎にデータを書き込む。例えば、当該所定のデータ容量が３バイトである場合、フラッシュメモリに１バイトのデータを書き込む場合であっても、当該データの書き込みに使用されるフラッシュメモリのデータ領域のデータ容量は３バイトとなる。換言すれば、フラッシュメモリに書き込むことができる最小のデータ容量は決まっている。以下、このフラッシュメモリに書き込むことができる最小のデータ容量を、最小書込み単位と称する。
例えば、特許文献１には、フラッシュメモリに最小書込み単位毎にデータを書き込むデータ制御方法が記載されている。
また、特許文献２には、セクション毎にデータを書き込む技術が記載されている。
また、特許文献３には、ブロック毎にデータを書き込む技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２９５７５９号公報
【特許文献２】特開２００６−２６０４６８号公報
【特許文献３】特開２００１−３１２４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、フラッシュメモリ等、最小書込み単位が定められているメモリにデータを書き込む場合、書き込むデータを最小書込み単位の整数倍のデータ長に変換して書込みを行う。そのため、書き込むデータのデータ容量よりも、メモリにおいて使用されるデータ領域のデータ容量の方が大きくなってしまう。例えば、最小書込み単位が４バイトのフラッシュメモリに、１０バイトのデータを書き込む場合、４バイト×３のデータ長、すなわち、１２バイトのデータに変換して書込みを行う。そのため、当該書込みで使用されるデータ領域のデータ容量は、書き込むデータのデータ容量より２０％増加してしまう。そして、当該増加したデータ容量に相当するデータ領域は、使用できない領域となってしまう。換言すれば、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生してしまう。
【課題を解決するための手段】
【０００５】
本発明の第１の態様に係るデータ制御方法は、最小書込み単位毎にデータを書き込むことが定められているメモリにおけるデータ制御方法である。そして、前記データ制御方法は、前記最小書込み単位がｎビット（ｎは、ｎ＞０を満たす整数）であり、前記メモリの先頭からｘ番目（ｘは、ｘ＞０を満たす整数）の最小書込み単位までにデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビット（ｍは、０≦ｍ≦ｎを満たす整数）であり、前記メモリにデータ長がｌビット（ｌは、ｌ＞０を満たす整数）である新規データを書き込む場合に、前記メモリのデータの書込みを制御するデータ制御装置に、前記新規データを、前記新規データの先頭から、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割するデータ分割処理と、先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後に前記ｎ−ｍビットのデータが並ぶ第１のデータと、前記ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成するデータ生成処理と、前記第１のデータを前記ｘ番目の最小書込み単位に書き込み、前記ｙ個のｎビットのデータを前記ｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、前記第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込むデータ書込み処理と、を実行させるものである。
【０００６】
本発明の第１の態様においては、データ制御装置は、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビットである場合に、ｌビットの新規データを、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割する。さらに、データ制御装置は、先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後にｎ−ｍビットのデータが並ぶ第１のデータと、ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成する。そして、データ制御装置は、第１のデータをｘ番目の最小書込み単位に書き込み、ｙ個のｎビットのデータをｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む。そのため、メモリのｘ番目の最小書込み単位において有効データが書き込まれていないｎ−ｍビットの部分にも、新規データの先頭側のｎ−ｍビットのデータを書き込むことができる。また、第１のデータにおいて、先頭側からｍビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、メモリのｘ番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているメモリにおいても、見かけ上、１ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生することを防止することができる。
【０００７】
本発明の第２の態様に係るデータ制御装置は、最小書込み単位毎にデータを書き込むことが定められているメモリのデータの書き込みを制御するデータ制御装置である。そして、前記データ制御装置は、前記最小書込み単位がｎビット（ｎは、ｎ＞０を満たす整数）であり、前記メモリの先頭からｘ番目（ｘは、ｘ＞０を満たす整数）の最小書込み単位までにデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビット（ｍは、０≦ｍ≦ｎを満たす整数）であり、前記メモリにデータ長がｌビット（ｌは、ｌ＞０を満たす整数）である新規データを書き込む場合に、前記新規データを、前記新規データの先頭から、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割するデータ分割手段と、先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後に前記ｎ−ｍビットのデータが並ぶ第１のデータと、前記ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成するデータ生成手段と、前記第１のデータを前記ｘ番目の最小書込み単位に書き込み、前記ｙ個のｎビットのデータを前記ｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、前記第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む書込み手段と、を備えるものである。
【０００８】
本発明の第２の態様においては、データ制御装置は、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビットである場合に、ｌビットの新規データを、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割する。さらに、データ制御装置は、先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後にｎ−ｍビットのデータが並ぶ第１のデータと、ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成する。そして、データ制御装置は、第１のデータをｘ番目の最小書込み単位に書き込み、ｙ個のｎビットのデータをｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む。そのため、メモリのｘ番目の最小書込み単位において有効データが書き込まれていないｎ−ｍビットの部分にも、新規データの先頭側のｎ−ｍビットのデータを書き込むことができる。また、第１のデータにおいて、先頭側からｍビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、メモリのｘ番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているメモリにおいても、見かけ上、１ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているメモリにおいて、有効データが書き込まれていない領域が発生することを防止することができる。
【発明の効果】
【０００９】
本発明により、有効データが書き込まれていない領域が発生することを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１に係るデータ制御装置の一例を示すブロック図である。
【図２】本発明の実施の形態１に係るフラッシュメモリ及び演算部のＲＡＭを説明する図である。
【図３】本発明の実施の形態１に係るデータ用ブロックを説明する図である。
【図４】本発明の実施の形態１に係る管理用ブロックを説明する図である。
【図５】本発明の実施の形態１におけるフラッシュメモリへのデータの書込みを説明する図である。
【図６】本発明の実施の形態１におけるフラッシュメモリへのデータの書込みを説明するフローチャートである。
【図７】本発明の実施の形態１におけるフラッシュメモリからのデータの読み出しを説明するフローチャートである。
【図８】本発明の実施の形態１におけるフラッシュメモリ書き込み方向及び検索方向を説明する図である。
【図９】本発明の実施の形態２に係るデータ制御装置の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下に、本発明を適用可能な実施の形態を説明する。なお、本発明は、以下の実施の形態に限定されるものではない。
実施の形態１．
図１に、本発明の実施の形態１に係るマイクロコンピュータ１００（データ制御装置）のブロック図を示す。
マイクロコンピュータ１００は、図１に示すように、演算部１、メモリ部２等を備えている。
【００１２】
演算部１は、ＣＰＵ１１、ＲＡＭ１２、コードメモリ１３などを備えている。コードメモリ１３は、演算部１を制御するための各種プログラム（図示省略）及びデータ（図示省略）などを格納している。そして、ＣＰＵ１１は、コードメモリ１３に格納されている各種プログラムを実行して、ＲＡＭ１２において展開することにより、演算部１の各部を制御する。
【００１３】
メモリ部２は、フラッシュメモリコントローラ２１、フラッシュメモリ２２（メモリ）などを備えている。
フラッシュメモリコントローラ２１は、制御部（図示省略）、記録媒体（図示省略）等を備えている。記録媒体は、フラッシュメモリコントローラ２１を制御するための各種プログラム（図示省略）及びデータ（図示省略）などを格納している。例えば、記録媒体は、ライブラリプログラム２１Ａを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ２１の各部を制御する。例えば、制御部がライブラリプログラム２１Ａを実行することにより、フラッシュメモリコントローラ２１は、フラッシュメモリ２２へのデータの書込み及びフラッシュメモリ２２からのデータの読出しを制御する。また、制御部がライブラリプログラム２１Ａを実行することにより、フラッシュメモリコントローラ２１は、フラッシュメモリ２２に格納されているデータの消去を制御する。さらに、制御部がライブラリプログラム２１Ａを実行することにより、フラッシュメモリコントローラ２１は、フラッシュメモリ２２に格納されているデータのアドレス管理を行う。ここで、アドレス管理には、フラッシュメモリ２２に格納されたデータの管理情報をフラッシュメモリ２２に格納する処理、演算部１から入力された論理ＩＤ番号、論理アドレス及び論理ビット番号等を、物理ＩＤ番号、物理アドレス及び物理ビット番号等に変換する処理などが含まれる。なお、以下の説明において、論理ＩＤ番号、論理アドレス及び論理ビット番号と、物理ＩＤ番号、物理アドレス及び物理ビット番号とを区別せず、単に、ＩＤ番号、アドレス及びビット番号と称するが、適宜、論理ＩＤ番号、論理アドレス及び論理ビット番号等と、物理ＩＤ番号、物理アドレス及び物理ビット番号との変換が行われているものとする。
【００１４】
そして、演算部１からメモリ部２へ、フラッシュメモリ２２に格納されたデータのＩＤ番号（識別情報）やデータ長などが入力される。また、演算部１からメモリ部２へ、フラッシュメモリ２２からのデータの読出し、又は、フラッシュメモリ２２へのデータの書込みを指示するＲｅａｄ／Ｗｒｉｔｅコマンドが入力される。
また、メモリ部２から演算部１へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部１からメモリ部２へＲｅａｄコマンドが入力されていた場合には、メモリ部２から演算部１へ、読み出したデータの値が入力される。
【００１５】
図２は、本発明の実施の形態１に係るフラッシュメモリ２２及び演算部１のＲＡＭ１２を説明する図である。
図２に示すように、フラッシュメモリ２２は、複数のブロック（ｂｌｏｃｋ  １、ｂｌｏｃｋ  ２、ｂｌｏｃｋ  ３、・・・ｂｌｏｃｋ  ｎ）に分割されている。各ブロックの先頭領域には、「ｂｌｏｃｋ  ｆｌａｇ」が格納されている。
また、フラッシュメモリコントローラ２１は、フラッシュメモリ２２を、データを格納するデータ領域と、データ毎に管理情報を格納する管理領域に分割する。換言すれば、複数のブロックのうち、一部のブロックは、管理用ブロック（管理領域）となっており、他のブロックはデータ用ブロック（データ領域）となっている。
データ用ブロックは、フラッシュメモリ２２に格納されるデータを格納している。また、管理用ブロックは、データ用ブロックに格納されるデータ毎に、管理情報を格納している。なお、管理情報の格納場所はフラッシュメモリ２２に限られない。
【００１６】
データ用ブロックは、図２に示すように、先頭領域に「ｂｌｏｃｋ  ｆｌａｇ」が格納されており、「ｂｌｏｃｋ  ｆｌａｇ」が格納されている領域の後に、データが格納される。
また、フラッシュメモリ２２は、所定のデータ容量毎にデータが書き込まれるメモリである。換言すれば、図２に示すように、フラッシュメモリ２２は、最小書込み単位（ｕｎｉｔ  １、ｕｎｉｔ  ２、・・・）毎にデータが書き込まれるメモリである。
【００１７】
管理用ブロックは、図２に示すように、先頭領域に「ｂｌｏｃｋ  ｆｌａｇ」が格納されており、「ｂｌｏｃｋ  ｆｌａｇ」が格納されている領域の後に、管理情報が格納される。図２に示す、「ｉｎｄｅｘ  １」、「ｉｎｄｅｘ  ２」、・・・は、データ用ブロックに格納されるデータ毎の管理情報である。
【００１８】
また、ＲＡＭ１２は、データ用ブロックに格納されるデータのＩＤ番号（物理ＩＤ番号）と当該データのデータ長とを対応付けて記憶している。なお、データ用ブロックに格納されるデータのＩＤ番号と当該データのデータ長とは、管理用ブロックに記憶されていてもよい。また、データ用ブロックに格納されるデータのデータ長は、管理用ブロックにおいて隣り合って記憶されている管理情報のビット番号（後述）から算出することもできる。
【００１９】
図３は、本発明の実施の形態１に係るデータ用ブロックを説明する図である。上述した通り、フラッシュメモリ２２においては、最小書込み単位（ｕｎｉｔ  １、ｕｎｉｔ  ２、・・・）毎に、データが書き込まれるようになっている。本実施の形態１においては、フラッシュメモリ２２の最小書込み単位を８ビットとする。しかし、本実施の形態に係るマイクロコンピュータ１００においては、図３に示すように、データ用ブロックに、最小書込み単位（ｕｎｉｔ  １、ｕｎｉｔ  ２、・・・）に関係なく、データ（ｄａｔａ  １、ｄａｔａ  ２、ｄａｔａ  ３、ｄａｔａ  ４、・・・）が書き込まれるようになっている。そのため、本実施の形態１に係るマイクロコンピュータ１００においては、有効データが書き込まれていない領域が発生することを防止することができる。詳細については、後述する。
【００２０】
図４は、本発明の実施の形態１に係る管理用ブロックを説明する図である。上述した通り、管理用ブロックは、データ用ブロックに格納されるデータ毎に、管理情報（ｉｎｄｅｘ  １、ｉｎｄｅｘ  ２、・・・）を格納している。図４に示すように、管理情報（ｉｎｄｅｘ  １、ｉｎｄｅｘ  ２、・・・）は、データ用ブロックに格納されるデータのＩＤ番号（物理ＩＤ番号）と、当該データのアドレス（ａｄｄｒｅｓｓ；物理アドレス）と、当該データのビット番号（ｂｉｔ  Ｎｏ．；物理ビット番号）と、冗長化情報（ｓｕｍ値）とが対応付けられた情報である。ここで、当該アドレスは、当該データが書き込まれたデータ用ブロックの最小書込み単位のうち、最も先頭側の最小書込み単位のアドレスである。また、当該ビット番号は、当該データの先頭の値が書き込まれたデータ用ブロックのビット番号である。
なお、管理情報の内容は本実施の形態に限られるものではない。例えば、管理情報は、ＩＤ番号、アドレス、ビット番号、冗長化情報の他に、当該データのデータ長が対応付けられた情報であってもよい。本実施の形態１においては、ＩＤ番号のデータ長は８ビット、アドレスのデータ長は１６ビット、ビット番号のデータ長は４ビット、冗長化情報のデータ長は４ビットのデータであるとする。すなわち、一つのデータの管理情報のデータ長は、３２ビット（４バイト）となっている。
また、本実施の形態１では、冗長化情報は、ｓｕｍ値としてチェックサムの値を使用するが、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）やＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）などの誤り検出によって得られる値であってもよい。
【００２１】
図５は、本発明の実施の形態１におけるフラッシュメモリへのデータの書込みを説明する図である。
本発明の実施の形態１に係るマイクロコンピュータ１００においては、フラッシュメモリコントローラ２１の制御部（図示省略）がライブラリプログラム２１Ａを実行することにより、フラッシュメモリコントローラ２１は、データ分割手段、データ生成手段、書き込み手段、検索手段として機能する。
具体的には、フラッシュメモリ２２の最小書込み単位がｎビット（ｎは、ｎ＞０を満たす整数）であり、フラッシュメモリ２２の先頭からｘ番目（ｘは、ｘ＞０を満たす整数）の最小書込み単位までにデータが書き込まれており、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビット（ｍは、０≦ｍ≦ｎを満たす整数）であり、フラッシュメモリ２２にデータ長がｌビット（ｌは、ｌ＞０を満たす整数）である新規データを書き込む場合、フラッシュメモリコントローラ２１は、まず、新規データを、当該新規データの先頭から、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割する（データ分割処理）。次いで、フラッシュメモリコントローラ２１は、先頭側からｍビット分、値「１」が並んだ後にｎ−ｍビットのデータが並ぶ第１のデータと、ｊビットのデータの後に、ｎ−ｊビット分、値「１」が並ぶ第２のデータと、を生成する（データ生成処理）。そして、フラッシュメモリコントローラ２１は、第１のデータをｘ番目の最小書込み単位に書き込み、ｙ個のｎビットのデータをｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む（データ書込み処理）。なお、本実施の形態において、値「１」は、消去状態を表し、何も処理を行わないことを意味する値である。従って、消去状態を表す値が「０」であるメモリにおいては、何も処理を行わないことを意味する値を「０」とすることにより、本実施の形態１と同様にして、本発明を適用することができる。
【００２２】
フラッシュメモリ２２へのデータの書き込みについて図５の例を用いて説明する。図５では、最小書込み単位は８ビットとなっているため、ｎ＝８である。
また、図５の上段に示すデータ用ブロックは、何もデータが記載されていない状態である。そのため、図５の上段に示すデータ用ブロックでは、先頭から１番目の最小書込み単位（ｕｎｉｔ  １）、２番目の最小書込み単位（ｕｎｉｔ  ２）、３番目の最小書込み単位（ｕｎｉｔ  ３）の全ての各ビットの値は「１」となっている。
【００２３】
そして、図５の上段に示すデータ用ブロックに、第１の新規データとして、データ長が６ビットの「１０１０１０」を書き込む場合、フラッシュメモリコントローラ２１は、当該第１の新規データを最小書込み単位に分割する。この場合、第１の新規データのデータ長は６ビットであるため、フラッシュメモリコントローラ２１は、第１の新規データを「１０１０１０ｚｚ」に分割し、「ｚ」には「１」を代入する。換言すれば、フラッシュメモリコントローラ２１は、第１の新規データから「１０１０１０１１」を生成する。そして、フラッシュメモリコントローラ２１は、「１０１０１０１１」をフラッシュメモリ２２の１番目の最小書込み単位（ｕｎｉｔ  １）に書き込む。第１の新規データが書き込まれたデータ用ブロックを図５の中段に示す。
【００２４】
また、フラッシュメモリコントローラ２１は、第１の新規データの管理情報を管理用ブロックに格納する。ここで、図５において、１番目の最小書込み単位（ｕｎｉｔ  １）、２番目の最小書込み単位（ｕｎｉｔ  ２）、３番目の最小書込み単位（ｕｎｉｔ  ３）のアドレスは、それぞれ、「０００１ｈ」、「０００２ｈ」、「０００３ｈ」である。そこで、フラッシュメモリコントローラ２１は、第１の新規データの管理情報として、ＩＤ番号「ＩＤ＝１」、アドレス「０００１ｈ」、ビット番号「１」、冗長化情報（ｓｕｍ値）を対応付けて、管理用ブロックの管理情報「ｉｎｄｅｘ  １」として格納する。
【００２５】
次いで、図５の中段に示すデータブロックに、第２の新規データとして、データ長が９ビットの「０１０１０１０１０」を書き込む場合について説明する。この場合、図５の中段に示すデータ用ブロックには、１番目の最小書込み単位までにデータが書き込まれており、１番目の最小書込み単位に書き込まれたデータ（第１の新規データ）の有効データは６ビットである。そのため、ｘ＝１、且つｍ＝６となる。また、第２の新規データのデータ長は９ビットであるため、ｌ＝９である。
【００２６】
以上の場合、ｎ−ｍ＝８−６＝２、（ｌ−（ｎ−ｍ））／ｎ＝（９−（８−６））／８＝７／８となる。ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数であるため、図５の場合、ｙの値は存在しない。そのため、ｙ＝０とすることができる。そして、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））＝９−（（８−６）＋（８×０））＝７となる。
そのため、フラッシュメモリコントローラ２１は、第２の新規データを、先頭側から、２ビット（ｎ−ｍ＝２）のデータ、０個の８ビットのデータ、７ビット（ｊ＝７）のデータに分割する。具体的には、図５の場合では、第２の新規データ「０１０１０１０１０」を「０１」と「０１０１０１０」とに分割する。
【００２７】
次いで、フラッシュメモリコントローラ２１は、先頭側から６ビット分（ｍ＝６）、値「１」が並んだ後に２ビット（ｎ−ｍ＝２）のデータが並ぶ第１のデータと、７ビット（ｊ＝７）のデータの後に、１ビット分（ｎ−ｊ＝１）、値「１」が並ぶ第２のデータと、を生成する。具体的には、図５の場合では、フラッシュメモリコントローラ２１は、第１のデータとして「１１１１１１０１」を、第２のデータとして「０１０１０１０１」を生成する。
【００２８】
そして、フラッシュメモリコントローラ２１は、第１のデータを１番目の最小書込み単位（ｕｎｉｔ  １）に書き込み、第２のデータを２番目（ｘ＋ｙ＋１＝２）の最小書込み単位（ｕｎｉｔ  ２）に書き込む。
【００２９】
また、フラッシュメモリコントローラ２１は、第２の新規データの管理情報を管理用ブロックに格納する。具体的には、フラッシュメモリコントローラ２１は、第２の新規データの管理情報として、ＩＤ番号「ＩＤ＝２」、アドレス「０００１ｈ」、ビット番号「７」、冗長化情報（ｓｕｍ値）を対応付けて、管理用ブロックの管理情報「ｉｎｄｅｘ  ２」として格納する。
【００３０】
図６は、本実施の形態１におけるフラッシュメモリ２２へのデータの書込みを説明するフローチャートである。
図６に示すように、まず、フラッシュメモリコントローラ２１は、管理用ブロックを書込み方向とは反対方向に検索し、直近に管理情報が格納された、消去状態ではないｉｎｄｅｘに格納されているＩＤ番号、アドレス及びビット番号を検索する（ステップＳ１）。換言すれば、フラッシュメモリコントローラ２１は、直近にデータ用ブロックに格納されたデータ（最終データ）のＩＤ番号、アドレス及びビット番号を、管理用ブロックから取得する。
【００３１】
次に、フラッシュメモリコントローラ２１は、ステップＳ１において検索したＩＤ番号のデータのデータ長をＲＡＭから読出し、フラッシュメモリ２２に書き込む新規データの書込み開始アドレスを、ステップＳ１において検索したアドレスに、ステップＳ１において検索したＩＤ番号のデータのデータ長を加算して得られる値とする（ステップＳ２）。換言すれば、フラッシュメモリコントローラ２１は、フラッシュメモリ２２に書き込む新規データの書込み開始アドレスを、直近にデータ用ブロックに格納されたデータ（最終データ）のアドレスに、最終データのデータ長を加算して得られる値とする。
【００３２】
次に、フラッシュメモリコントローラ２１は、ステップＳ２において決定した書込み開始アドレスに、当該新規データのデータ長を加算して得られる値で表されるアドレスが、ブロック範囲内であるか否かを判断する（ステップＳ３）。
ステップＳ３において、フラッシュメモリコントローラ２１は、当該アドレスがブロック範囲内ではないと判断した場合は（ステップＳ３；Ｎｏ）、フラッシュメモリコントローラ２１は、ブロックの切り替え処理を行って（ステップＳ４）、ステップＳ１に戻る。
【００３３】
ここで、ブロック切り替え処理とは、現在のブロックに格納されているデータのうち、壊れていないデータ（正常なデータ）であって、最新のデータのみを抽出して、新しいブロックに格納するとともに、当該新ブロックに格納されたデータの管理情報を管理用ブロックに格納する処理である。現在のブロックに格納されているデータのうち、壊れていないデータであって、最新のデータのみを読み出す処理は、後述する読出し処理と同様の処理である。
【００３４】
ステップ３において、フラッシュメモリコントローラ２１は、当該アドレスがブロック範囲内であると判断した場合は（ステップＳ３；Ｙｅｓ）、データ用ブロックの、ステップＳ２で決定された書込み開始アドレスに相当する領域（書込み対象領域）を参照して、当該領域がブランク状態（消去状態）であるか否かを判断する（ステップＳ５）。これは、マイクロコンピュータ１００の場合、処理が中断したまま電源がＯＦＦされてしまう場合があるからである。その場合、管理用ブロックに格納されている管理情報と、データ用ブロックへのデータの格納の状態とが一致しない場合も生ずる。そこで、ステップＳ５において、念のため、書込み対象領域がブランク状態であるか否かを確かめている。
【００３５】
ステップＳ５において、フラッシュメモリコントローラ２１は、書込み対象領域がブランク状態ではないと判断した場合（ステップＳ５；Ｎｏ）、フラッシュメモリコントローラ２１は、書込み開始アドレスに「１」を加算して得られる値を新たな書込み開始アドレスとした後（ステップＳ６）、ステップＳ３に戻る。
ステップＳ５において、フラッシュメモリコントローラ２１は、書込み対象領域がブランク状態であると判断した場合（ステップＳ５；Ｙｅｓ）、フラッシュメモリコントローラ２１は、書き込みデータの生成を行う（ステップＳ７）。具体的には、上述したように、フラッシュメモリコントローラ２１は、新規データを分割し、フラッシュメモリ２２に書き込むデータを生成する。
【００３６】
次に、フラッシュメモリコントローラ２１は、ステップＳ７において生成したデータを、データ用ブロックに格納する（ステップＳ８）。
次いで、フラッシュメモリコントローラ２１は、ステップＳ８においてデータ用ブロックに格納した新規データの管理情報を管理用ブロックに格納する（ステップＳ９）。
【００３７】
次に、本実施の形態１におけるフラッシュメモリ２２からのデータの読出しについて、図７に示すフローチャートを参照しながら説明する。
まず、フラッシュメモリコントローラ２１は、管理用ブロックを書込み方向とは反対方向にＩＤ番号を検索する（ステップＳ１０１）。
【００３８】
次に、フラッシュメモリコントローラ２１は、検索したＩＤ番号が、読み出すデータのＩＤ番号と一致するか否かを判断する（ステップＳ１０２）。なお、読み出すデータの論理ＩＤ番号及びデータ長は、演算部１から入力される。そして、フラッシュメモリコントローラ２１は、当該論理ＩＤ番号を物理ＩＤ番号に変換して、ステップＳ１０２の処理を行う。
ステップＳ１０２において、フラッシュメモリコントローラ２１は、検索したＩＤ番号が、読み出すデータのＩＤ番号と一致しないと判断した場合には（ステップＳ１０２；Ｎｏ）、ステップＳ１０１に戻る。
ステップＳ１０２において、フラッシュメモリコントローラ２１は、検索したＩＤ番号が、読み出すデータのＩＤ番号と一致すると判断した場合には（ステップＳ１０２；Ｙｅｓ）、当該ＩＤ番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータのｓｕｍ値と、当該ＩＤ番号と対応付けられて管理用ブロックに格納されているｓｕｍ値とが一致するか否かを判断する（ステップＳ１０３）。
【００３９】
ステップＳ１０３において、フラッシュメモリコントローラ２１は、ｓｕｍ値が一致しないと判断した場合には（ステップＳ１０３；Ｎｏ）、ステップＳ１０１に戻る。
ステップＳ１０３において、フラッシュメモリコントローラ２１は、ｓｕｍ値が一致すると判断した場合には（ステップＳ１０３；Ｙｅｓ）、当該ＩＤ番号と対応付けられて管理用ブロックに格納されているアドレス及びビット番号に対応するデータ用ブロックの領域に格納されているデータを読み出す（ステップＳ１０４）。具体的には、フラッシュメモリコントローラ２１は、データ用ブロックの当該アドレス及びビット番号から、演算部１から入力されたデータ長の分だけ、データを読み出す。
【００４０】
次に、管理ブロックの検索について、説明する。図８は、本発明の実施の形態１におけるフラッシュメモリ書き込み方向及び検索方向を説明する図である。
図８に示すように、データ用ブロックは、先頭側から順にデータが書き込まれるようになっている。換言すれば、データ用ブロックは、先頭領域に「ｂｌｏｃｋ  ｆｌａｇ」が格納されており、「ｂｌｏｃｋ  ｆｌａｇ」の後から順に、データが格納されるようになっている。
また、同様に、管理用ブロックは、先頭側から順に管理情報が書き込まれるようになっている。換言すれば、管理用ブロックは、先頭領域に「ｂｌｏｃｋ  ｆｌａｇ」が格納されており、「ｂｌｏｃｋ  ｆｌａｇ」の後から順に、管理情報が格納されるようになっている。
【００４１】
そして、図８に示す例では、データ用ブロックに先頭側から順に、ＩＤ番号がＩＤ＝１であるデータ「ｄａｔａ  １」、ＩＤ番号がＩＤ＝２であるデータ「ｄａｔａ  ２」、ＩＤ番号がＩＤ＝３であるデータ「ｄａｔａ  ３」、ＩＤ番号がＩＤ＝１であるデータ「ｄａｔａ  １」が格納されている。
また、管理用ブロックには、先頭側から順に、ＩＤ＝１のデータの管理情報（ｉｎｄｅｘ  １）、ＩＤ＝２のデータの管理情報（ｉｎｄｅｘ  ２）、ＩＤ＝３のデータの管理情報（ｉｎｄｅｘ  ３）、ＩＤ＝１のデータの管理情報（ｉｎｄｅｘ  ４）が格納されている。
【００４２】
この場合に、ＩＤ番号がＩＤ＝１であるデータ「ｄａｔａ  １」を読み出す場合、フラッシュメモリコントローラ２１は、管理用ブロックを書込み方向とは反対方向に検索して、ＩＤ番号がＩＤ＝１である管理情報を読み出す。図８の場合、フラッシュメモリコントローラ２１は、ＩＤ番号がＩＤ＝１である管理情報として、「ｉｎｄｅｘ  ４」の管理情報を読み出す。
また、フラッシュメモリコントローラ２１は、データ用ブロックを検索して、「ｉｎｄｅｘ  ４」のアドレス（ａｄｄｒｅｓｓ  ４）に格納されているデータ（データ用ブロックの先頭側から４番目に格納されているデータ）のｓｕｍ値を算出する。そして、フラッシュメモリコントローラ２１は、算出したｓｕｍ値と、「ｉｎｄｅｘ  ４」のｓｕｍ値とが一致するか否かを判断する。
【００４３】
算出したｓｕｍ値と、「ｉｎｄｅｘ  ４」のｓｕｍ値とが一致する場合には、フラッシュメモリコントローラ２１は、「ｉｎｄｅｘ  ４」のアドレス（ａｄｄｒｅｓｓ  ４）に格納されているデータ（データ用ブロックの先頭側から４番目に格納されているデータ）を読み出す。
【００４４】
算出したｓｕｍ値と、「ｉｎｄｅｘ  ４」のｓｕｍ値とが一致しない場合には、フラッシュメモリコントローラ２１は、データ用ブロックの「ｉｎｄｅｘ  ４」よりも先頭側の領域を書込み方向とは反対方向に検索して、ＩＤ番号がＩＤ＝１である管理情報を読み出す。図８の場合、フラッシュメモリコントローラ２１は、ＩＤ番号がＩＤ＝１である管理情報として、「ｉｎｄｅｘ  １」の管理情報を読み出す。
また、フラッシュメモリコントローラ２１は、データ用ブロックを検索して、管理情報「ｉｎｄｅｘ  １」のアドレス（ａｄｄｒｅｓｓ  １）に格納されているデータ（データ用ブロックの先頭側から１番目に格納されているデータ）のｓｕｍ値を算出する。そして、フラッシュメモリコントローラ２１は、算出したｓｕｍ値と、管理情報「ｉｎｄｅｘ  １」のｓｕｍ値とが一致するか否かを判断する。
【００４５】
そして、算出したｓｕｍ値と、管理情報「ｉｎｄｅｘ  １」のｓｕｍ値とが一致する場合には、フラッシュメモリコントローラ２１は、管理情報「ｉｎｄｅｘ  １」のアドレス（ａｄｄｒｅｓｓ  １）に格納されているデータ（データ用ブロックの先頭側から１番目に格納されているデータ）を読み出す。
一方、算出したｓｕｍ値と、管理情報「ｉｎｄｅｘ  １」のｓｕｍ値とが一致しない場合には、フラッシュメモリコントローラ２１は、ＩＤ番号がＩＤ＝１であるデータは壊れていると判断し、データの読出しを行わない。
【００４６】
このように、フラッシュメモリコントローラ２１は、管理用ブロックを書込み方向とは反対方向に検索するため、直近に書き込まれた管理情報を効率よく読み出すことができる。また、ｓｕｍ値を比較して、データが壊れていないかも判断するため、壊れていないデータであって、直近に書き込まれたデータを効率よく読み出すことができる。
【００４７】
以上、説明したように、本発明の実施の形態１に係るマイクロコンピュータ１００及びデータ制御方法によれば、マイクロコンピュータ１００のフラッシュメモリコントローラ２１は、ｘ番目の最小書込み単位に書き込まれたデータの有効データ長がｍビットである場合に、ｌビットの新規データを、ｎ−ｍビットのデータ、ｙ個（ｙは、（ｌ−（ｎ−ｍ））／ｎの整数部分であって、ｙ＞０を満たす整数）のｎビットのデータ、ｊビット（ｊは、ｊ＝ｌ−（（ｎ−ｍ）＋（ｎ×ｙ））且つｊ≧０を満たす整数）のデータ、に分割する。さらに、フラッシュメモリコントローラ２１は、先頭側からｍビット分、何も処理を行わないことを意味する値が並んだ後にｎ−ｍビットのデータが並ぶ第１のデータと、ｊビットのデータの後に、ｎ−ｊビット分、何も処理を行わないことを意味する値が並ぶ第２のデータと、を生成する。そして、フラッシュメモリコントローラ２１は、第１のデータをｘ番目の最小書込み単位に書き込み、ｙ個のｎビットのデータをｘ＋１番目からｘ＋ｙ番目の最小書込み単位に書き込み、第２のデータをｘ＋ｙ＋１番目の最小書込み単位に書き込む。そのため、フラッシュメモリ２２のｘ番目の最小書込み単位において有効データが書き込まれていないｎ−ｍビットの部分にも、新規データの先頭側のｎ−ｍビットのデータを書き込むことができる。また、第１のデータにおいて、先頭側からｍビットの部分には、何も処理を行わないことを意味する値が並んでいるため、既に、フラッシュメモリ２２のメモリのｘ番目の最小書込み単位に書き込まれている有効データを消去せずに済む。換言すれば、最小書込み単位が定められているフラッシュメモリ２２においても、見かけ上、１ビット単位でデータを書き込むことができる。そのため、最小書込み単位毎にデータを書き込むことが定められているフラッシュメモリ２２において、有効データが書き込まれていない領域が発生することを防止することができる。
【００４８】
また、フラッシュメモリ２２において、最小書込み単位毎にアドレスが割り当てられ、最小書込み単位の各ビット毎にビット番号が割り当てられている。そして、マイクロコンピュータ１００のフラッシュメモリコントローラ２１は、フラッシュメモリ２２の複数のブロックのうち一部をデータ毎に管理情報を格納する管理用ブロックとし、他のブロックをデータを格納するデータ用ブロックとする。
また、管理情報は、フラッシュメモリ２２に書き込まれたデータのＩＤ番号と、データが書き込まれた最小書込み単位のうち、最も先頭側の最小書込み単位のアドレスと、データの先頭の値が書き込まれたビットのビット番号と、データの冗長化情報（ｓｕｍ値）と、が対応付けられた情報である。
これにより、フラッシュメモリコントローラ２１が、管理用ブロックを検索することによって、所望するデータをデータ用ブロックから容易に読み出すことができる。
【００４９】
マイクロコンピュータ１００のフラッシュメモリコントローラ２１は、フラッシュメモリ２２に格納されているデータを検索する場合に、管理用ブロックを書込み方向と反対方向に検索して、管理用ブロックから当該データの管理情報を検索する。
これにより、管理用ブロックに直近に書き込まれた当該データの管理情報を効率よく読み出すことができる。そのため、データ用ブロックに直近に書き込まれたデータを効率よく読み出すことができる。
また、管理用ブロックに格納されている冗長化情報（ｓｕｍ値）に基づいて、読み出すデータが正常であるか否かを判断することができる。そのため、データ用ブロックから、壊れていないデータであって、直近に書き込まれたデータを効率よく読み出すことができる。
【００５０】
実施の形態２．
図９に、本発明の実施の形態２に係るマイクロコンピュータ２００（データ制御装置）のブロック図を示す。
マイクロコンピュータ２００は、図９に示すように、演算部１のコードメモリ１３１、メモリ部２のフラッシュメモリコントローラ２１１が、実施の形態１に係るマイクロコンピュータ１００と異なる。そのため、同一の構成については、同一の符号を付すとともに、その説明を省略する。
【００５１】
演算部１は、ＣＰＵ１１、ＲＡＭ１２、コードメモリ１３１などを備えている。コードメモリ１３１は、演算部１を制御するための各種プログラム（図示省略）及びデータ（図示省略）などを格納している。例えば、コードメモリ１３１は、ユーザプログラム１３１Ａ、ライブラリプログラム１３１Ｂを格納している。そして、ＣＰＵ１１は、コードメモリ１３に格納されている各種プログラムを実行して、ＲＡＭ１２において展開することにより、演算部１の各部を制御する。例えば、ＣＰＵ１１は、ライブラリプログラム１３１Ｂを実行することにより、データ分割手段、データ生成手段等として機能する。
【００５２】
より具体的には、例えば、ＣＰＵ１１が、ユーザプログラム１３１Ａを実行することにより、演算部１は、フラッシュメモリ２２から読み出すデータのＩＤ番号を生成し、フラッシュメモリ２２からのデータの読出し、又は、フラッシュメモリ２２へのデータの書込みを指示するＲｅａｄ／Ｗｒｉｔｅコマンドを生成する。
また、ＣＰＵ１１が、ライブラリプログラム１３１Ｂを実行することにより、演算部１は、生成したＩＤ番号に基づいてフラッシュメモリ２２のアドレス管理を行うとともに、Ｒｅａｄ／Ｗｒｉｔｅコマンドをフラッシュメモリコントローラ２１１に入力する。
また、ＣＰＵ１１が、ライブラリプログラム１３１Ｂを実行することにより、演算部１は、フラッシュメモリコントローラ２１１が読み出したデータや、コマンドの成否や状態等を表す戻り値を生成する。
【００５３】
メモリ部２は、フラッシュメモリコントローラ２１１、フラッシュメモリ２２（メモリ）などを備えている。
フラッシュメモリコントローラ２１１は、制御部（図示省略）、記録媒体（図示省略）等を備えている。記録媒体は、フラッシュメモリコントローラ２１１を制御するための各種プログラム（図示省略）及びデータ（図示省略）などを格納している。そして、制御部は、記録媒体に格納されている各種プログラムを実行することにより、フラッシュメモリコントローラ２１の各部を制御する。例えば、制御部が各種プログラムを実行することにより、フラッシュメモリコントローラ２１は、フラッシュメモリ２２へのデータの書込み及びフラッシュメモリ２２からのデータの読出しを制御する。また、フラッシュメモリコントローラ２１は、フラッシュメモリ２２に格納されているデータの消去を制御する。また、フラッシュメモリコントローラ２１１は、フラッシュメモリ２２の管理用ブロックを書込み方向と反対方向に検索して、データの管理情報を検索する。
【００５４】
そして、演算部１からメモリ部２へ、フラッシュメモリ２２に格納されたデータのアドレスやビット番号が入力される。また、演算部１からメモリ部２へ、フラッシュメモリ２２からのデータの読出し、又は、フラッシュメモリ２２へのデータの書込みを指示するＲｅａｄ／Ｗｒｉｔｅコマンドが入力される。
また、メモリ部２から演算部１へ、コマンドの成否や状態等を表す戻り値が入力される。また、演算部１からメモリ部２へＲｅａｄコマンドが入力されていた場合には、メモリ部２から演算部１へ、読み出したデータの値が入力される。
【００５５】
従って、実施の形態２に係るマイクロコンピュータ２００では、演算部１のＣＰＵ１１が、フラッシュメモリ２２に格納されたデータのアドレス管理を行うとともに、データ分割手段、データ生成手段として機能し、メモリ部２のフラッシュメモリコントローラ２１１は、フラッシュメモリ２２に格納されたデータのアドレス管理を行わず、データ分割手段、データ生成手段として機能しない点が、実施の形態１に係るマイクロコンピュータ１００と異なる。なお、実施の形態２においても、フラッシュメモリコントローラ２１１は、フラッシュメモリ２２へのデータの書込み、フラッシュメモリ２２からのデータの読出し、フラッシュメモリ２２に書き込まれているデータの消去を制御する。そのため、上記の点以外は、実施の形態２に係るマイクロコンピュータ２００は、実施の形態１に係るマイクロコンピュータ１００と同様であるため、その説明を省略する。
【００５６】
以上、説明したように、本発明の実施の形態２に係るマイクロコンピュータ２００及びデータ制御方法によれば、実施の形態１に係るマイクロコンピュータ１００及びデータ制御方法と同様の効果が得られる。
なお、実施の形態１に係るマイクロコンピュータ１００と実施の形態２に係るマイクロコンピュータ２００とを比較すると、マイクロコンピュータ１００では、演算部１内にライブラリプログラムを設ける必要がなく、マイクロコンピュータ２００では、演算部１のコードメモリ１３１内にライブラリプログラム１３１Ａを設ける必要がある。そのため、マイクロコンピュータ１００では、演算部１内の資源を必要としないという効果を有する。
【符号の説明】
【００５７】
１  演算部
１１  ＣＰＵ
１２  ＲＡＭ
１３、１３１  コードメモリ
１３１Ａ  ユーザプログラム
１３１Ｂ  ライブラリプログラム
２  メモリ部
２１、２１１  フラッシュメモリコントローラ
２１Ａ  ライブラリプログラム
２２  フラッシュメモリ（メモリ）
１００、２００  マイクロコンピュータ（データ制御装置）
【図１】
2011145755.tif 000003
【図２】
2011145755.tif 000004
【図３】
2011145755.tif 000005
【図４】
2011145755.tif 000006
【図５】
2011145755.tif 000007
【図６】
2011145755.tif 000008
【図７】
2011145755.tif 000009
【図８】
2011145755.tif 000010
【図９】
2011145755.tif 000011