説明

データプロセッサ及びデータの管理制御方法

【課題】書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができるデータプロセッサを提供する。
【解決手段】書き込み単位が消去単位よりも小さな複数の不揮発性メモリブロックにデータを記憶して管理するために、一対の主メモリブロックと、それよりも記憶容量の小さな副メモリブロックとを消去及び書き込みの対象とし、データを更新するときはデータ(Data#i)とその属性を示すデータヘッダ(Data_DH#i)とを副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックのデータと一の主メモリブロックのデータとをデータヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み、当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて、逐次変更される同一属性のデータなどを管理する発明に関し、例えば、機器の操作による操作データを操作のたびに逐次蓄える機器制御用のデータプロセッサに適用して有効な技術に関する。
【背景技術】
【0002】
フラッシュメモリのように書き込み単位が消去単位よりも小さな不揮発性メモリにおいて、最も原始的なデータの書き換えは、消去単位のメモリブロックを退避してから一括消去し、退避したデータを書き換えるべきデータとマージし、マージしたデータを消去後のメモリブロックに書きこむ、と言う操作によって行われる。したがって、消去後に一度書き込みを行ったアドレスに再度書き込みを行う場合にはその都度消去単位全体の消去が必要になり、書き換え保証回数との関係で、頻繁にデータの書き換えを行う用途には対応することが難しい。
【0003】
特許文献1は、同じアドレスに対する書き換えに対してアドレス管理を行って未使用領域の物理アドレスへの書き込みを行うように制御しようとするものである。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−182381号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1のごとく、アドレスマッピングを代える制御を書き込みの度に行うのではその制御のための負担が大きくなり、また、アドレス管理のために必要なリソースも増えることが予想される。
【0006】
本発明の目的は、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができるデータプロセッサ、更にはデータの管理制御方法を提供することにある。
【0007】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0009】
すなわち、書き込み単位が消去単位よりも小さな複数の不揮発性メモリブロックにデータを記憶して管理するために、一対の主メモリブロックと、それよりも記憶容量の小さな副メモリブロックとを消去及び書き込みの対象とし、データを更新するときはデータとその属性を示すデータヘッダとを前記副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックのデータと一の主メモリブロックのデータとを前記データヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み、当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える制御を行う。
【0010】
上記データの記憶管理制御によれば、データとその属性をペアとして副メモリブロックに書き込んでいくから、属性が同じデータを何度更新しても書き込みアドレスに対する特別なアドレス管理を要せず、更新順序は書き込み順序によって容易に把握することができる。副メモリブロックが一杯になったときは、副メモリブロックのデータと一の主メモリブロックのデータとを前記データヘッダを参照して最新の状態にマージしたデータを他の主メモリブロックに書き込むから、重ねて更新されたデータも最新のデータだけが他方の主メモリブロックに保持される。したがって、主メモリブロックにはデータの属性に応じた格納アドレスを予め割り当てておくことが可能になり、主メモリブロックはデータとデータヘッダをペアとして保持することを要せず、この点で、データ記憶に必要なメモリ容量に対して、副メモリブロック分のメモリ容量を追加的に使用するだけでよい。
【発明の効果】
【0011】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0012】
すなわち、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができる。
【図面の簡単な説明】
【0013】
【図1】図1は本発明の一実施の形態におけるデータの管理制御によるメモリブロックの使用形態を例示する説明図である。
【図2】図2は本発明の一実施の形態に係るデータプロセッサのブロック図である。
【図3】図3は本発明の一実施の形態におけるデータの管理制御の処理フローを例示するフローチャートである。
【図4】図4は管理制御の進行に伴うステータスの遷移を例示する遷移図である。
【図5】図5は比較例に係るデータの管理制御によるメモリブロックの使用形態を例示する説明図である。
【発明を実施するための形態】
【0014】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕<書き込み単位が消去より小さなメモリブロックに対するデータ管理>
本発明の代表的な実施の形態に係るデータプロセッサ(1)は、消去及び書き込みによって電気的に書き換え可能であって書き込み単位が消去単位よりも小さな不揮発性メモリ(11)と、前記不揮発性メモリを制御するプログラム処理部(2,5等)とを有する。前記プログラム処理部は、前記不揮発性メモリにおける一括消去可能な複数のメモリブロックを用いて記憶データの更新を管理する管理制御を行う。前記管理制御は、管理すべきデータ容量に応ずる記憶容量を夫々が持つ一対の主メモリブロック(MMBLK_A,MMBLK_B)と、前記主メモリブロックよりも記憶容量の小さな副メモリブロックと、を消去及び書き込みの対象とし、データの更新が要求される毎に逐次更新されるデータ(Data#i)とそのデータの属性を示すデータヘッダ(Data_DH#i)とを前記副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックが保有するデータと一の主メモリブロックが保持するデータとを前記データヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える、制御である。
【0016】
上記データプロセッサによるデータの記憶管理制御によれば、データとその属性をペアとして副メモリブロックに書き込んでいくから、属性が同じデータを何度更新しても書き込みアドレスに対する特別なアドレス管理を要せず、更新順序は書き込み順序によって容易に把握することができる。副メモリブロックが一杯になったときは、副メモリブロックのデータと一の主メモリブロックのデータとを前記データヘッダを参照して最新の状態にマージしたデータを他の主メモリブロックに書き込むから、重ねて更新されたデータも最新のデータだけを他方の主メモリブロックに保持することができる。したがって、主メモリブロックにはデータの属性に応じた格納アドレスを予め割り当てておくことが可能になり、主メモリブロックはデータとその属性を示すデータヘッダとをペアとして保持することを要せず、この点で、データ記憶に必要なメモリ容量に対して、副メモリブロック分のメモリ容量を追加的に使用するだけでよい。仮に、メモリブロックを交互に切換えながらデータとその属性を常にペアとして保持する構成の場合には、副メモリブロックを必用としないが、夫々のメモリブロックは、全てのデータ記憶に必要なメモリ容量に対して、全てのデータと夫々ペアを成すデータヘッダ分の余裕容量が必要になり、また、同じ属性のデータが何回も更新されることを想定して更に余裕のあるメモリ容量を確保しなければならず、結果として大きな記憶容量のリソースが必要になる。したがって、上記データプロセッサによれば、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができる。
【0017】
〔2〕<書き込み先アドレスの判別>
項1のデータプロセッサにおいて、前記主メモリブロックには保持すべきデータ毎に書き込みアドレスが予め決められていて、前記プログラム処理部は、副メモリブロックに保持されているデータの主メモリブロックにおける書き込みアドレスを当該データに対応するデータヘッダを参照して判別する。
【0018】
マージされたデータを主メモリブロックに書き込むための特別なアドレス管理をまったく必要としない。データの属性毎に主メモリブロックへの書き込みアドレスを予め決め手おくだけでよく、きわめて簡単である。
【0019】
〔3〕<最新データの判別>
項1又は2のデータプロセッサにおいて、前記プログラム処理部は、副メモリブロックが同じ書き込みアドレスのデータを重複して保持しているとき、最新データを主メモリブロックの対応データとのマージ対象とする。
【0020】
〔4〕<副メモリブロックへの書き込み形態>
項1乃至3の何れかのデータプロセッサにおいて、前記プログラム処理部は、前記データの更新要求に応答して、データと対応するデータヘッダを相互に異なる領域を基点に近づく方向に書き込み領域をシフトして、前記副メモリブロックに順次書き込む。
【0021】
データと属性のハンドリングが容易になる。
【0022】
〔5〕<一対の副メモリブロック>
項1乃至4の何れかのデータプロセッサにおいて、前記一対の主メモリブロックに一対一対応して前記副メモリブロックを一対有する(SMBLK_A,SMBLK_B)。一対の副メモリブロックは対応する主メモリブロックのステータスを示すブロックヘッダを有する。前記データ処理部はブロックヘッダが保持する当該ステータスを参照してデータの更新要求に応答して用いる主メモリブロック及び副メモリブロックを判別する。
【0023】
主メモリブロックと副メモリブロックとをペアとし、夫々のペアに対して相互に同じ制御手順を採用することが容易になり、制御手順の簡潔性に資することができる。
【0024】
〔6〕<ステータスの参照と操作>
項5のデータプロセッサにおいて、前記ブロックヘッダが示す前記ステータスはアクティブ(ACT)又はブランク(BLNK)であり、前記アクティブは書き込み対象であることを示し、前記ブランクは消去済みであることを示す。前記プログラム処理部は、データの更新が要求されたときステータスがアクティブである副メモリブロックを書き込み対象とする。副メモリブロックの空き領域がなくなったときには当該副メモリブロックのデータと対応する主メモリブロックのデータとを最新の状態にマージしてブロックヘッダがブランクに対応する主メモリブロックに書き込み、この書き込み動作を完了したとき、当該副メモリブロックと対応する主メモリブロックを消去して当該副メモリブロックにおけるブロックヘッダのステータスをブランクとすると共に他方の副メモリブロックにおけるブロックヘッダのステータスをブランクからアクティブに変更し、アクティブに変更された主メモリブロックに対応する副メモリブロックに前記データの更新要求に応ずる書き込みを行う。
【0025】
主メモリブロックと副メモリブロックとをペアとし、夫々のペアに対して相互に同じ制御手順を採用することができる。
【0026】
〔7〕<共通化された副メモリブロック>
項1乃至4の何れかのデータプロセッサにおいて、前記副メモリブロックは前記一対の主メモリブロックに対して共通化される。前記副メモリブロックは、主メモリブロック毎にそのステータスを示すブロックヘッダを有する。前記データ処理部はブロックヘッダが保持する当該ステータスを参照してデータの更新要求に応答して用いる主メモリブロックを判別する。
【0027】
副メモリブロックに対する制御は項5に比べて多少複雑になることが想定されるが、副メモリブロックに割り当てるメモリ容量を半減してデータの管理制御機能を実現することができる。
【0028】
〔8〕<ステータスの参照と操作>
項7のデータプロセッサにおいて、前記夫々のブロックヘッダが示す前記ステータスはアクティブ又はブランクであり、前記アクティブは記憶データが有効であることを示し、前記ブランクは消去済みであることを示す。前記プログラム処理部は、データの更新が要求されたとき何れかのブロックヘッダのステータスがアクティブであることを条件に副メモリブロックへのデータに書き込みを行う。副メモリブロックの空き領域がなくなったとき、当該副メモリブロックのデータとアクティブのステータスに対応する主メモリブロックのデータとを最新の状態にマージして、ブランクのステータスに対応する主メモリブロックに書き込み、この書き込み動作を完了したとき、書き込み元の主メモリブロックと副メモリブロックを消去し、消去された主メモリブロックのステータスをブランクとすると共に書き込み先の主メモリブロックのステータスをアクティブに変更して、副メモリブロックに前記データの更新要求に応ずる書き込みを行う。
【0029】
副メモリブロックに割り当てるメモリ容量を半減してデータの管理制御機能を実現することができる。
【0030】
〔9〕<プログラム処理部>
項1乃至8の何れかのデータプロセッサにおいて、前記プログラム処理部は、中央処理装置と、前記中央処理装置が実行するプログラムを格納するプログラムメモリとを有し、前記プログラムメモリは前記管理制御の処理内容を規定する。
【0031】
〔10〕
項9のデータプロセッサは1個の半導体基板に形成される。
【0032】
〔11〕
項9のデータプロセッサにおいて、前記中央処理装置及び前記不揮発性メモリと、前記プログラムメモリとは夫々個別に半導体集積回路化されて成る。
【0033】
〔12〕<書き込み単位が消去より小さなメモリブロックに対するデータ管理>
本発明の別の実施の形態に係るデータの管理制御方法は、消去及び書き込みによって電気的に書き換え可能であって書き込み単位が消去単位よりも小さな不揮発性メモリの一括消去可能な複数のメモリブロックを用いて記憶データの更新を管理する方法であり、管理すべきデータ容量に応ずる記憶容量を夫々が持つ一対の主メモリブロックと、前記主メモリブロックよりも記憶容量の小さな副メモリブロックと、を消去及び書き込みの対象とし、データの更新が要求される毎に逐次更新されるデータとそのデータの属性を示すデータヘッダとを前記副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックが保有するデータと一の主メモリブロックが保持するデータとを前記データヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える。
【0034】
項1と同様に、主メモリブロックはデータとその属性を示すデータヘッダとをペアとして保持することを要せず、この点で、データ記憶に必要なメモリ容量に対して、副メモリブロック分のメモリ容量を追加的に使用するだけでよい。したがって、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができる。
【0035】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0036】
《データプロセッサ》
図2には本発明の一実施の形態に係るデータプロセッサが例示される。同図に示されるデータプロセッサ1は、特に制限されないが、相補型MOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
【0037】
データプロセッサ1は、特に制限されないが、命令を実行する中央処理装置(CPU)2、CPU2が最近利用したデータや命令を一次的に保持するキャッシュメモリ(CACHE)4、特定のデータ処理を負担するアクセラレータ(ACCL)3、CPU2のワーク領域などに用いられるRAM5、及びそれらが接続される内部バス6を有する。内部バス6はバスステートコントローラ(BSC)9を介して周辺バス10にインタフェースされる。周辺バス10には、割込み要求に応答して割込み信号をCPU2に出力するための制御を行う割込みコントローラ8、データプロセッサ内部の同期クロック信号を生成するクロックパルスジェネレータ(CPG)7、タイマ(TMR)12、フラッシュメモリ(FLSH)11、及びデータプロセッサ1の外部にインタフェースされる入出力ポート回路(PORT)13が接続される。
【0038】
前記フラッシュメモリ11は、消去及び書き込みによって電気的に書き換え可能であって書き込み単位が消去単位よりも小さな不揮発性メモリの一例とされる。例えば、ワード線単位で消去が可能にされる場合に、バイト単位の書き込みを行うとき、書き込み対象バイトに対してはバイト単位でビット線毎に書き込み電圧の印加の可否を制御し、書き込み非対象バイトの各ビット線には書き込み抑止の電圧を印加する構成を採用すればよい。このフラッシュメモリ11は、例えば消去単位を4キロバイト(KB)や1KBのような単位とし、書き込みをバイトのような単位とする不揮発性メモリである。フラッシュメモリ11は消去単位を比較的大きな4KBのようなサイズとするメモリブロックと、消去単位を比較的小さな1KBのようなサイズとするとするメモリブロックとの双方を有している。これらの点で、フラッシュメモリ11はバイト単位の消去及び書き込みが可能にされるEEPROMとは異なる。
【0039】
フラッシュメモリ11はデータやプログラムの格納に利用され、ここに格納されたプログラムは例えばパワーオンリセットによってRAM5に転送され、CPU2はRAM5に転送されたプログラムを逐次実行する。或いは、CPU2が実行するプログラムをパワーオンリセット時に入出力ポート回路13からRAM5にダウンロードし、ダウンロードしたプログラムをCPU2が実行する。
【0040】
CPU2はそれがフェッチするプログラムを有するメモリと一緒になってプログラム処理部を構成し、フラッシュメモリ11やその他の周辺回路を制御して所要のデータ処理を行う。
【0041】
CPU2は、そのプログラム処理の一つとして、フラッシュメモリ11が保持する制御データの逐次更新を管理する制御を行う。特に制限されないが、データ管理制御の対象とされるデータは、データプロセッサが制御対象とする回路や機器で行われた操作に応ずる制御量などとされる。例えばリモコン操作によって逐次更新される制御量を記憶するために管理制御を行う。以下、そのデータの管理制御について詳述する。
【0042】
《データの管理制御》
図1にはデータの管理制御におけるメモリブロックの使用形態が例示される。データの管理制御には、管理すべきデータ容量に応ずる記憶容量を夫々が持つ一対の主メモリブロックMMBLK_A,MMBLK_Bと、前記主メモリブロックMMBLK_A,MMBLK_Bよりも記憶容量の小さな副メモリブロックSMBLK_A,SMBLK_Bと、を消去及び書き込みの対象として用いる。主メモリブロックMMBLK_A,MMBLK_B及び副メモリブロックSMBLK_A,SMBLK_Bの夫々は一括消去の単位とされる。管理すべきデータ容量が例えば4KBであれば、主メモリブロックMMBLK_A,MMBLK_Bは少なくともその記憶容量を持てばよい。ここでは、主メモリブロックMMBLK_A,MMBLK_Bの夫々のサイズを4KB、副メモリブロックSMBLK_A,SMBLK_Bの夫々のサイズを1KBとする。
【0043】
特に制限されないが、主メモリブロックMMBLK_A,MMBLK_BにはデータData#0〜Data#127を格納するためのアドレスが予めマッピングされ、順次データData#0〜Data#127を格納する領域が予定されている。
【0044】
副メモリブロックSMBLK_A,SMBLK_Bは、その先頭にブロックヘッダBLK_HDA、BLK_HDBを有し、データData#i(i=1〜127)をそのデータヘッダData_HD#iと対を成して格納する。データData#iと対応するデータヘッダData_HD#iは、相互に異なる領域を基点に近づく方向に書き込み領域をシフトして、副メモリブロックに順次書き込まれる。図2の例に従えば、データData#iは矢印Y2方向に順次書き込まれ、データヘッダData_HD#iは矢印Y1方向に順次書き込まれる。図2の例では矢印X1,X2,X3X4で指し示すデータとデータヘッダがペアを成している。データData#iとデータヘッダData_DH#iとが隣接するところまで書き込みが行われたとき、図2に従えば、データData#0とデータヘッダData_DH#0が隣り合って書き込まれたところで、当該副メモリブロックの空き領域が無くなったと判別される。
【0045】
データヘッダData_HD#iは対応するデータがデータData#iであることを示す複数ビットの情報を少なくとも含む。この例ではデータData#0〜Data#127を識別するための最大256通りのデータを識別可能な8ビットの識別コードとされる。
【0046】
ブロックヘッダBLK_HDA,BLK_HDBは対応する主メモリブロックMMBLK_A,MMBLK_Bのステータスを示す。ブロックヘッダBLK_HDA,BLK_HDBが示すステータスは、アクティブACT又はブランクBLNKであり、前記アクティブACTは書き込み対象であることを示し、前記ブランクBLNKは消去済みであることを示す。
【0047】
次に、上記主メモリブロックMMBLK_A,MMBLK_B及び副メモリブロックSMBLK_A,SMBLK_Bを用いたデータの管理制御方法について説明する。図3には管理制御の処理フローが例示され、図4には管理制御の進行に伴うステータスの遷移が例示される。
【0048】
例えば主メモリブロックMMBL_AがアクティブACTにされ、その記憶領域には図1に例示されるように先頭からデータData#0〜Data#127が格納され、対応する副メモリブロックSMBLK_Aは消去された後にブロックヘッダBLK_HDAにはアクティブACTのステータスデータが書き込まれている(図4の時刻T1)。他方の主メモリブロックMMBL_Aは全体が消去され、対応する副メモリブロックSMBLK_Bは消去された後にブロックヘッダBLK_HDBにブランクBLNKのステータスデータが書き込まれている(図4の時刻T1)。この状態で、例えば図示を省略する機器の操作によってデータの更新が要求されるのを待ち(図3のS1)、要求されると、ブロックヘッダBLK_HDA,BLK_HDBを参照してアクティブACTの副メモリブロックSMBLK_Aに空きがあるかを判別する(図3のS2)。空きがあれば、データの更新要求に従って、副メモリブロックSMBLK_Aにおいてその直前に書き込みが行われたデータヘッダの領域の次に対応するデータヘッダData_H#iを書き込み、直前に書き込みが行われたデータ領域の次にデータData#1を書き込む(図3のS6)。例えば図1の例に従えば、X2で指標されるデータData#3とデータヘッダData_HD#3を書き込む。
【0049】
図3のステップS2において空き領域がない場合には、当該副メモリブロックSMBLK_Aのデータと対応する主メモリブロックMMBLK_Aのデータとを最新の状態にマージしてブロックヘッダがブランクに対応する主メモリブロックMMBLK_Bに書き込む(図3のS3、図4の時刻T2)。
【0050】
このマージして書き込む処理は、例えば、主メモリブロックMMBLK_Aが記憶するデータを図示を省略するレジスタに転送し、更に副メモリブロックSMBLK_Aから新しい順にデータData#iと対応するデータヘッダData_HD#iを読み出して当該データにコードを用いて対応するデータData#iをレジスタの対応データに上書きする。一旦上書きを行ったデータと同じデータヘッダが出現してもそのデータは最新のデータに既にマージ済みであるから無視する。この操作を、副メモリブロックSMBLK_Aの全てのデータに対して行う。このマージ処理による書き込まれた例を図1に従って説明すると、X1で示されるデータData#0はデータヘッダData_DH#0の値に従ってMMBLK_Bに書き込まれ、X2で示されるデータData#3はデータヘッダData_DH#3の値に従ってMMBLK_Bに書き込まれ、X3で示されるデータData#0は既にマージ処理されて書き込み済みであるから無視され、X4で示されるデータData#3は既にマージ処理されて書き込み済みであるから無視される。データData#2のように副メモリブロックSMBLK_Aに対応するデータがない場合には主メモリブロックMMBLK_Aが保持しているデータData#2が他方の主メモリブロックMMBLK_Bに書き込まれる。
【0051】
最新の状態にマージされたデータの書き込み動作を完了したとき、書き込みデータ元である当該副メモリブロックSMBLK_Aと対応する主メモリブロックMMBLK_Aを消去(図4の時刻T3)して当該副メモリブロックにおけるブロックヘッダのステータスをブランクBLNKとすると共に(図3のS4、図4の時刻T4)、他方の副メモリブロックSMBLK_BにおけるブロックヘッダのステータスをブランクBLNKからアクティブACTに変更し(図3のS5、図4の時刻T4)、アクティブに変更された主メモリブロックに対応する副メモリブロックに前記データの更新要求に応ずる書き込みを行う(図3のS6)。これ以降は、図4の時刻T4〜T7に例示されるように、メモリブロックMMBLK_A、SMBLK_AとメモリブロックMMBLK_B、SMBLK_Bと関係が逆転する。
【0052】
上記データプロセッサ1によるデータの記憶管理制御によれば、データData#iとその属性であるデータヘッダData_DH#iをペアとして副メモリブロックSMBLK_A又はSMBLK_Bに書き込んでいくから、属性の同じデータを何度更新しても書き込みアドレスに対する特別なアドレス管理を必要とせず、データの更新順序は副メモリブロックへの書き込み順序によって容易に把握することができる。副メモリブロックSMBLK_A(SMBLK_B)が一杯になったときは、副メモリブロックSMBLK_A(SMBLK_B)のデータと一の主メモリブロックMMBLK_A(MMBLKJ_B)のデータとを前記データヘッダを参照して最新の状態にマージしたデータを他の主メモリブロックMMBLK_B(MMBLKJ_A)に書き込むから、重ねて更新されたデータも最新のデータだけを他方の主メモリブロックに保持することができる。したがって、主メモリブロックにはデータの属性に応じた格納アドレスを予め割り当てておくことが可能になり、主メモリブロックはデータとその属性を示すデータヘッダとをペアとして保持することを要しない。この点で、データ記憶に必要なメモリ容量に対して、副メモリブロック分のメモリ容量を追加的に使用するだけでよい。仮に、メモリブロックを交互に切換えながらデータとその属性を常にペアとして保持する構成の場合には、副メモリブロックを必用としないが、夫々のメモリブロックは、全てのデータ記憶に必要なメモリ容量に対して、全てのデータと夫々ペアを成すデータヘッダ分の余裕容量が必要になり、また、同じ属性のデータが何回も更新されることを想定して更に余裕のあるメモリ容量を確保しなければならず、結果として大きな記憶容量のリソースが必要になる。例えば図5に示されるようにメモリブロックMBLK_AとMBLK_Bを用意し、上記サブメモリブロックSMBLK_A,SMBLK_Bで説明したと同様の手法で順次データData#iとデータヘッダData_DH#iをペアで格納する場合を想定すると、一つのメモリブロックに空き領域が無くなると、データヘッダData_DH#iを用いて同じ属性のデータを最新のデータにマージして他方のメモリブロックにデータコピーを行う。この場合、例えば、必要なデータData#iの全容量を4KBと、データヘッダData_DH#iの全容量を1KBと摺ると、同じ属性のデータが何回も更新されることを想定して更に余裕のあるメモリ容量例えば1KB程度を確保しなければならず、合わせて、12KBのメモリ要領が必要になる。これに対して上記実施の形態の場合には10KBのメモリ容量で済む。データDataの全体量が多くなればなるほど、1個のデータヘッダのビット数が増える結果、上記実施の形態に比べて必要とされる記憶容量の増加率が大きくなる。したがって、上記データプロセッサ1によるデータの管理制御方法によれば、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができる。
【0053】
上記実施の形態では主メモリブロックと副メモリブロックのペアを一対用いてデータの記憶管理を行うようにしたが、副メモリブロックを一対の主メモリブロックに共通化して用いることによってデータの記憶管理を行うようにしてもよい。特に図示はしないが、前記副メモリブロックは前記一対の主メモリブロックに対して共通化され、副メモリブロックは、主メモリブロック毎にそのステータスを示すブロックヘッダを有する。前記データ処理部はブロックヘッダが保持する当該ステータスを参照してデータの更新要求に応答して用いる主メモリブロックを判別する。例えば、前記夫々のブロックヘッダが示す前記ステータスはアクティブ又はブランクであり、前記アクティブは記憶データが有効であることを示し、前記ブランクは消去済みであることを示す。CPUとその動作プログラムによって構成されるプログラム処理部は、データの更新が要求されたとき何れかのブロックヘッダのステータスがアクティブであることを条件に副メモリブロックへのデータに書き込みを行う。副メモリブロックの空き領域がなくなったとき、当該副メモリブロックのデータとアクティブのステータスに対応する主メモリブロックのデータとを最新の状態にマージして、ブランクのステータスに対応する主メモリブロックに書き込み、この書き込み動作を完了したとき、書き込み元の主メモリブロックと副メモリブロックを消去し、消去された主メモリブロックのステータスをブランクとすると共に書き込み先の主メモリブロックのステータスをアクティブに変更して、副メモリブロックに前記データの更新要求に応ずる書き込みを行う。
【0054】
この構成によっても、上記同様に、書き込み単位が消去単位よりも小さな不揮発性メモリを用いて頻繁にデータの書き換えを行う用途に少ないリソースで対応することができる。先に説明したデータプロセッサ1による記憶管理制御に比べて必要なメモリ容量を更に低減することができる。
【0055】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0056】
例えばデータプロセッサは1個の半導体基板に形成されるものに限定されず、前記中央処理装置及び前記不揮発性メモリと、前記プログラムメモリとを夫々個別に半導体集積回路化してマルチチップでデータプロセッサを構成することも可能である。また、主メモリブロックは必ずしも夫々1個の一括消去単位のメモリブロックであることに限定されず、例えば、1KBの消去単位ブロックを4個用いて4KBのメモリブロックとして用いてもよい。副メモリブロックに付いても同様である。
【符号の説明】
【0057】
1 データプロセッサ(DPU)
2 中央処理装置(CPU)
4 キャッシュメモリ(CACHE)
3 アクセラレータ(ACCL)
5 RAM
6 内部バス
9 バスステートコントローラ(BSX)
10 周辺バス
8 割込みコントローラ
7 クロックパルスジェネレータ(CPG)
12 タイマ(TMR)
11 フラッシュメモリ(FLSH)
13 入出力ポート回路(PORT)
MMBLK_A,MMBLK_B 主メモリブロック
SMBLK_A,SMBLK_B 副メモリブロック
Data#0〜Data#127(Data#i) データ
BLK_HDA、BLK_HDB ブロックヘッダ
Data_HD#i データヘッダ
ACT アクティブ
BLNK ブランク

【特許請求の範囲】
【請求項1】
消去及び書き込みによって電気的に書き換え可能であって書き込み単位が消去単位よりも小さな不揮発性メモリと、前記不揮発性メモリを制御するプログラム処理部と、を有するデータプロセッサであって、
前記プログラム処理部は、逐次更新されるデータを、前記不揮発性メモリにおける一括消去可能な複数のメモリブロックを用いて記憶データの更新を管理する管理制御を行い、
前記管理制御は、管理すべきデータ容量に応ずる記憶容量を夫々が持つ一対の主メモリブロックと、前記主メモリブロックよりも記憶容量の小さな副メモリブロックと、を消去及び書き込みの対象とし、データの更新が要求される毎に逐次更新されるデータとそのデータの属性を示すデータヘッダとを前記副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックが保有するデータと一の主メモリブロックが保持するデータとを前記データヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み、当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える、制御である、データプロセッサ。
【請求項2】
前記主メモリブロックには保持すべきデータ毎に書き込みアドレスが予め決められていて、
前記プログラム処理部は、副メモリブロックに保持されているデータの主メモリブロックにおける書き込みアドレスを当該データに対応するデータヘッダを参照して判別する、請求項1記載のデータプロセッサ。
【請求項3】
前記プログラム処理部は、副メモリブロックが同じ書き込みアドレスのデータを重複して保持しているとき、最新データを主メモリブロックの対応データとのマージ対象とする、請求項1記載のデータプロセッサ。
【請求項4】
前記プログラム処理部は、前記データの更新要求に応答して、データと対応するデータヘッダを相互に異なる領域を基点に近づく方向に書き込み領域をシフトして、前記副メモリブロックに順次書き込む、請求項1記載のデータプロセッサ。
【請求項5】
前記一対の主メモリブロックに一対一対応して前記副メモリブロックを一対有し、
一対の副メモリブロックは対応する主メモリブロックのステータスを示すブロックヘッダを有し、
前記データ処理部はブロックヘッダが保持する当該ステータスを参照してデータの更新要求に応答して用いる主メモリブロック及び副メモリブロックを判別する、請求項1記載のデータプロセッサ。
【請求項6】
前記ブロックヘッダが示す前記ステータスはアクティブ又はブランクであり、
前記アクティブは書き込み対象であることを示し、前記ブランクは消去済みであることを示し、
前記プログラム処理部は、データの更新が要求されたときステータスがアクティブである副メモリブロックを書き込み対象とし、
副メモリブロックの空き領域がなくなったときには、当該副メモリブロックのデータと対応する主メモリブロックのデータとを最新の状態にマージしてブロックヘッダがブランクに対応する主メモリブロックに書き込み、この書き込み動作を完了したとき、当該副メモリブロックと対応する主メモリブロックを消去して当該副メモリブロックにおけるブロックヘッダのステータスをブランクとすると共に他方の副メモリブロックにおけるブロックヘッダのステータスをブランクからアクティブに変更し、アクティブに変更された主メモリブロックに対応する副メモリブロックに前記データの更新要求に応ずる書き込みを行う、請求項5記載のデータプロセッサ。
【請求項7】
前記副メモリブロックは前記一対の主メモリブロックに対して共通化され、
前記副メモリブロックは、主メモリブロック毎にそのステータスを示すブロックヘッダを有し、
前記データ処理部はブロックヘッダが保持する当該ステータスを参照してデータの更新要求に応答して用いる主メモリブロックを判別する、請求項1記載のデータプロセッサ。
【請求項8】
前記夫々のブロックヘッダが示す前記ステータスはアクティブ又はブランクであり、
前記アクティブは記憶データが有効であることを示し、前記ブランクは消去済みであることを示し、
前記プログラム処理部は、データの更新が要求されたとき何れかのブロックヘッダのステータスがアクティブであることを条件に副メモリブロックへのデータの書き込みを行い、
副メモリブロックの空き領域がなくなったとき、当該副メモリブロックのデータとアクティブのステータスに対応する主メモリブロックのデータとを最新の状態にマージして、ブランクのステータスに対応する主メモリブロックに書き込み、この書き込み動作を完了したとき、書き込み元の主メモリブロックと副メモリブロックを消去し、消去された主メモリブロックのステータスをブランクとすると共に書き込み先の主メモリブロックのステータスをアクティブに変更して、副メモリブロックに前記データの更新要求に応ずる書き込みを行う、請求項7記載のデータプロセッサ。
【請求項9】
前記プログラム処理部は、中央処理装置と、前記中央処理装置が実行するプログラムを格納するプログラムメモリとを有し、
前記プログラムメモリは前記管理制御の処理内容を規定する、請求項1記載のデータプロセッサ。
【請求項10】
1個の半導体基板に形成された請求項9記載のデータプロセッサ。
【請求項11】
前記中央処理装置及び前記不揮発性メモリと、前記プログラムメモリとは夫々個別に半導体集積回路化されて成る、請求項9記載のデータプロセッサ。
【請求項12】
消去及び書き込みによって電気的に書き換え可能であって書き込み単位が消去単位よりも小さな不揮発性メモリの一括消去可能な複数のメモリブロックを用いて記憶データの更新を管理するデータの管理制御方法であって、
管理すべきデータ容量に応ずる記憶容量を夫々が持つ一対の主メモリブロックと、前記主メモリブロックよりも記憶容量の小さな副メモリブロックと、を消去及び書き込みの対象とし、
データの更新が要求される毎に逐次更新されるデータとそのデータの属性を示すデータヘッダとを前記副メモリブロックに順次書き込み、副メモリブロックの空き領域がなくなったとき、副メモリブロックが保有するデータと一の主メモリブロックが保持するデータとを前記データヘッダを参照して最新の状態にマージし、マージされたデータを他の主メモリブロックに書き込み、当該一の主メモリブロックを消去して、データ保持に用いる主メモリブロックを交互に切換える、データの管理制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−215768(P2011−215768A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−81904(P2010−81904)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】