(57)【要約】【課題】フラッシュメモリなどの記憶媒体に対して、電源遮断対策などに加えて、複数のアプリケーション間で使用領域の排他制御や共用などの領域管理を行う制御回路、および領域管理方法を提供する。【解決手段】処理装置１２０において、ＥＥＰＲＯＭ１４０の所定の領域をドメインとして設定し、ドメインの管理およびアクセス要件の管理を行うアドレス制御回路１３０であって、ＥＥＰＲＯＭ１４０にドメインの管理のための制御情報１５１を設定するためのドメイン設定レジスタ１３３と、現在の処理対象であるドメインについての情報を保持するドメイン制御レジスタ１３１とを有し、ドメイン設定レジスタ１３３の情報を用いてＥＥＰＲＯＭ１４０上のアドレスに制御情報１５１を設定し、プログラムによるアクセスの際に、該アドレスに設定されている制御情報１５１とドメイン制御レジスタ１３１の情報とに基づいて該アクセスの可否を判断する。【選択図】図１
2008310460.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、消去および書き換え可能な記憶媒体とを有する処理装置において、該記憶媒体の所定の領域をドメインとして設定し、前記ドメインの管理およびプログラムが前記ドメインを利用する際のアクセス要件の管理を行う制御回路であって、
前記記憶媒体に前記ドメインの管理のための制御情報を設定するための第１のレジスタと、現在の処理対象である前記ドメインについての情報を保持する第２のレジスタとを有し、
前記第１のレジスタの情報を用いて、前記記憶媒体上のアドレスに対して、該アドレスに割り当てられたデータ領域が属する前記ドメインについての前記制御情報を設定し、
プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該アドレスに設定されている前記制御情報と、前記第２のレジスタの情報とに基づいて、該アクセスの可否を判断することを特徴とする制御回路。
【請求項２】
ＣＰＵと、消去および書き換え可能な記憶媒体とを有する処理装置において、該記憶媒体の所定の領域をドメインとして設定し、前記ドメインの管理およびプログラムが前記ドメインを利用する際のアクセス要件の管理を行う制御回路であって、
前記記憶媒体に前記ドメインの管理のための制御情報を設定するための第１のレジスタと、現在の処理対象である前記ドメインについての情報を保持する第２のレジスタとを有し、
前記第１のレジスタの情報を用いて、前記記憶媒体上のアドレスに対して、該アドレスに割り当てられたデータ領域が属する前記ドメインについての前記制御情報を設定し、
プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該アドレスに設定されている前記制御情報と、前記第２のレジスタの情報と、該プログラムの格納位置の情報とに基づいて、該処理の可否を判断することを特徴とする制御回路。
【請求項３】
請求項１または２記載の制御回路において、
プログラムが前記第１のレジスタおよび前記第２のレジスタの値を変更しようとする際に、該プログラムの格納位置の情報に基づいてその可否を判断することを特徴とする制御回路。
【請求項４】
請求項１または３記載の制御回路において、
前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該プログラムが利用する前記ドメインと、該データ領域が属する前記ドメインとの親子関係に基づいて、該アクセスの可否を判断することを特徴とする制御回路。
【請求項５】
請求項２または３記載の制御回路において、
前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該プログラムが利用する前記ドメインと、該アドレスに割り当てられたデータ領域が属する前記ドメインとの親子関係に基づいて、該処理の可否を判断することを特徴とする制御回路。
【請求項６】
請求項４記載の制御回路において、
プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該プログラムが利用する前記ドメインの下位の前記ドメインに属するデータ領域へのアクセスは許可し、それ以外の前記ドメインに属するデータ領域へのアクセスについては、該データ領域に対応するアドレスに設定されている前記制御情報と、前記第２のレジスタの情報とに基づいて、該アクセスの可否を判断することを特徴とする制御回路。
【請求項７】
請求項５記載の制御回路において、
前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該プログラムが利用する前記ドメインの下位の新たな前記ドメインの追加もしくは下位の他の前記ドメインの削除は許可し、それ以外の新たな前記ドメインの追加もしくは他の前記ドメインの削除は許可しないことを特徴とする制御回路。
【請求項８】
請求項４〜７のいずれか１項記載の制御回路において、
各前記ドメインに付与する番号の体系により、各前記ドメイン間の親子関係を判別することを特徴とする制御回路。
【請求項９】
請求項１〜８のいずれか１項記載の制御回路において、
前記記憶媒体上のアドレスに対して仮想アドレスを割り当てることにより、プログラムからは、該仮想アドレスによって該アドレスに割り当てられたデータ領域にアクセスさせることを特徴とする制御回路。
【請求項１０】
請求項９記載の制御回路において、
前記記憶媒体上の複数のアドレスに対して同一の仮想アドレスを割り当てることにより、該仮想アドレスによって特定されるデータ領域を多重化することを特徴とする制御回路。
【請求項１１】
請求項１〜１０のいずれか１項記載の制御回路により設定された前記制御情報を格納していることを特徴とする消去および書き換え可能な記憶媒体。
【請求項１２】
請求項１〜１０のいずれか１項記載の制御回路と、請求項１１記載の消去および書き換え可能な記憶媒体とを有することを特徴とする処理装置。
【請求項１３】
請求項１２記載の処理装置を有することを特徴とする組込みシステム。
【請求項１４】
ＣＰＵと、消去および書き換え可能な記憶媒体とを有する処理装置が、該記憶媒体の所定の領域をドメインとして設定し、前記ドメインの管理およびプログラムが前記ドメインを利用する際のアクセス要件の管理を行う領域管理方法であって、
前記処理装置は、前記記憶媒体上のアドレスに対して、該アドレスに割り当てられたデータ領域が属する前記ドメインについての制御情報を設定し、
プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該アドレスに設定されている前記制御情報と、現在の処理対象である前記ドメインについての情報とに基づいて、該アクセスの可否を判断することを特徴とする領域管理方法。
【請求項１５】
ＣＰＵと、消去および書き換え可能な記憶媒体とを有する処理装置が、該記憶媒体の所定の領域をドメインとして設定し、前記ドメインの管理およびプログラムが前記ドメインを利用する際のアクセス要件の管理を行う領域管理方法であって、
前記処理装置は、前記記憶媒体上のアドレスに対して、該アドレスに割り当てられたデータ領域が属する前記ドメインについての制御情報を設定し、
プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該アドレスに設定されている前記制御情報と、現在の処理対象である前記ドメインについての情報と、該プログラムの格納位置の情報とに基づいて、該各処理の可否を判断することを特徴とする領域管理方法。
【請求項１６】
請求項１４または１５記載の領域管理方法において、
前記処理装置は、プログラムが前記制御情報および現在の処理対象である前記ドメインについての情報を変更しようとする際に、該プログラムの格納位置の情報に基づいてその可否を判断することを特徴とする領域管理方法。
【請求項１７】
請求項１４記載の領域管理方法において、
前記処理装置は、前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該プログラムが利用する前記ドメインと、該データ領域が属する前記ドメインとの親子関係に基づいて、該アクセスの可否を判断することを特徴とする領域管理方法。
【請求項１８】
請求項１５記載の領域管理方法において、
前記処理装置は、前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該プログラムが利用する前記ドメインと、該アドレスに割り当てられたデータ領域が属する前記ドメインとの親子関係に基づいて、該処理の可否を判断することを特徴とする領域管理方法。
【請求項１９】
請求項１７記載の領域管理方法において、
前記処理装置は、プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該プログラムが利用する前記ドメインの下位の前記ドメインに属するデータ領域へのアクセスは許可し、それ以外の前記ドメインに属するデータ領域へのアクセスについては、該データ領域に対応するアドレスに設定されている前記制御情報と、現在の処理対象である前記ドメインについての情報とに基づいて、該アクセスの可否を判断することを特徴とする領域管理方法。
【請求項２０】
請求項１８記載の領域管理方法において、
前記処理装置は、前記ドメインを階層化して管理し、プログラムによる前記記憶媒体上のアドレスに対する新たな前記ドメインの追加もしくは前記記憶媒体上のアドレスからの他の前記ドメインの削除の処理の際に、該プログラムが利用する前記ドメインの下位の新たな前記ドメインの追加もしくは下位の他の前記ドメインの削除は許可し、それ以外の新たな前記ドメインの追加もしくは他の前記ドメインの削除は許可しないことを特徴とする領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消去および書き換え可能な記憶領域を持つ記憶媒体、特にフラッシュメモリなどの不揮発性記憶媒体の領域管理を行う制御回路、および前記制御回路を有する汎用または組込みシステム向け処理装置、および前記処理装置を有する組込みシステム、ならびに前記記憶媒体の領域管理方法に適用して有効な技術に関するものである。
【背景技術】
【０００２】
ＰＣや組込みシステムで広く利用されているフラッシュメモリは、半導体メモリの一種で、通常、データがブロック単位で管理されている。従って、データの読み出し、書き込み、消去を行う際には、このデータブロック毎に処理が行われることになる。
【０００３】
また、フラッシュメモリは、データを書き込む際には、通常、消去状態から書き込みが行われ、仮に元のデータに上書きを行うと、元のデータと書き込むデータとのＡＮＤまたはＯＲをとった結果がフラッシュメモリ上に書き込まれる。従って、データブロックの更新を行いたい場合には、そのブロックをいったん消去してから更新データを書き戻す処理や、別のデータブロックに新たに書き込み、その後元のデータブロックを消去する等の処理が必要になる。
【０００４】
しかし、データを消去している最中に電源遮断等が発生した場合に、書き戻すべきデータやそのアドレスに関する情報が失われ、正しく更新することができなくなるという問題がある。これはフラッシュメモリを利用したシステムを構築する上での課題の一つとなっており、特開２００６−３２３４９９号公報（特許文献１）、特開２００６−３９９８３号公報（特許文献２）、特開２００５−２５８８５１号公報（特許文献３）、特開２００４−３１０４７７号公報（特許文献４）、特開２００４−２６５１６２号公報（特許文献５）等に見られるように様々な解決手段が提案されている。
【０００５】
しかしこれら解決手段は、主にメモリカードやＵＳＢメモリ等の、フラッシュメモリをデータストレージとして利用する場合に有効な技術であるが、近年のようにフラッシュメモリを組込みシステム向けＣＰＵやＩＣカードチップなどに組み込んで利用する現状においては、必ずしも適しているとはいえない。
【０００６】
組込みシステム向けＣＰＵやＩＣカードチップで、フラッシュメモリのようなデータをブロック単位で管理する消去および書き換え可能な不揮発性メモリが利用される場合には、大規模化する組込みシステム向けソフトウェアのために、従来のＥＥＰＲＯＭよりも大容量かつ安価なデバイスとして利用されることになる。その際には、フラッシュメモリは単にデータを格納するためだけのデバイスとしてではなく、ＲＯＭやＲＡＭの置き換えとしてプログラムの実行に使用するデバイスとして期待されることになる。
【特許文献１】特開２００６−３２３４９９号公報
【特許文献２】特開２００６−３９９８３号公報
【特許文献３】特開２００５−２５８８５１号公報
【特許文献４】特開２００４−３１０４７７号公報
【特許文献５】特開２００４−２６５１６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のような状況の中、組込みシステム向けＣＰＵやＩＣカードチップでフラッシュメモリを利用する場合は、上記のような電源遮断対策や、エラー訂正機能、書き換え回数の分散化など様々な技術が要求されることになっており、制御のためのソフトウェア、ハードウェアが肥大化する傾向にある。
【０００８】
また、このような記憶媒体としての可用性の確保という課題の他に、セキュリティ的にも考慮すべき課題が存在する。従来の組込みシステム向けＣＰＵやＩＣカードチップは、主に特定の用途で利用されることが主であったため、最低限のハードウェアリソース上で単一のアプリケーションが実行されるような場合がほとんどだった。しかしながら組込みシステムの複雑化や、ＩＣカードの多目的用途への利用など、システムに対する要求は高まっており、組込みシステム向けＣＰＵやＩＣカードチップは、複数のアプリケーションが同時に動作するような場合についても考慮する必要が生じてきた。
【０００９】
通常、これらのアプリケーションは組込みシステム向けＣＰＵやＩＣカードチップ上で動作するＯＳにより排他的または協調的にシステムリソースを共有できるように制御することが期待されているが、消費電力や価格における性能的リソースに対する制限が厳しい組込みシステム向けＣＰＵやＩＣカードチップにおいては、複雑なソフトウェア処理を導入することができない場合が多い。しかしながら組込みシステム向けＣＰＵやＩＣカードチップにおけるセキュリティを考える上で、より低コストにハードウェアリソースの排他制御を可能にする仕組みは、システムの安全性を考慮する上で重要な課題である。
【００１０】
そこで、本発明の目的は、組込みシステム向けＣＰＵやＩＣカードチップにおいて用いられるフラッシュメモリなどの記憶媒体に対して、可用性を確保するための電源遮断対策などに加えて、複数のアプリケーション間で使用領域の排他制御や共用などの領域管理を行う制御回路、および前記制御回路を有する汎用または組込みシステム向け処理装置、および前記処理装置を有する組込みシステム、ならびに前記記憶媒体の領域管理方法を提供することにある。
【００１１】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１３】
本発明は、ＣＰＵと、消去および書き換え可能な記憶媒体とを有する処理装置において、該記憶媒体の所定の領域をドメインとして設定し、前記ドメインの管理およびプログラムが前記ドメインを利用する際のアクセス要件の管理を行う制御回路および領域管理方法であって、前記制御回路は、前記記憶媒体に前記ドメインの管理のための制御情報を設定するための第１のレジスタと、現在の処理対象である前記ドメインについての情報を保持する第２のレジスタとを有し、前記第１のレジスタの情報を用いて、前記記憶媒体上のアドレスに対して、該アドレスに割り当てられたデータ領域が属する前記ドメインについての前記制御情報を設定し、プログラムによる前記記憶媒体上のアドレスに割り当てられたデータ領域へのアクセスの際に、該アドレスに設定されている前記制御情報と、前記第２のレジスタの情報とに基づいて、該アクセスの可否を判断することを特徴とするものである。
【発明の効果】
【００１４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１５】
本発明によれば、組込みシステム向けＣＰＵやＩＣカードチップなどにおいて、フラッシュメモリなどの記憶媒体をアプリケーションの実行に使用する場合、アプリケーションが、自身では設定変更等ができない個別の領域であるドメイン上でのみ動作することが可能となるため、あるアプリケーションの不正動作により、他のドメイン上のデータが破壊されたり、不正にアクセスされたりするおそれなく稼動することが可能となる。
【００１６】
また、仮想アドレスやデータ領域の多重化の仕組みを組み合わせることにより、電源遮断などの障害に対する可用性の確保も可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
図１は、本発明の一実施の形態である処理装置、および当該処理装置に接続された記憶媒体の構成を表す図である。ＩＣカード１００は、入出力ＩＦ１１０と処理装置１２０とを有する構成となっている。ここでＩＣカード１００は、本発明の対象となる組込みシステムの代表的な一例であり、その形状、外部装置とのインタフェースの仕様、処理装置１２０の種類や、他の装置の有無などにより種々の組込みシステムに適用することができる。
【００１９】
入出力ＩＦ１１０は、ＩＳＯ７８１６で規格化された物理的、電気的特性を有し、また同規格で定められたメッセージフォーマットでコマンドおよびデータの送受信を行うインタフェースである。組込みシステムにおける入出力ＩＦ１１０に相当するインタフェースはこれに限定される必要はなく、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＭＭＣ（ＭｕｌｔｉＭｅｄｉａ  Ｃａｒｄ）、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）等の規格に準拠したものや、ＰＣＩ等の装置内のバスや、ＩＳＯ１４４４３で規格化されている非接触ＩＣカードインタフェースやＢｌｕｅｔｏｏｔｈ、無線ＬＡＮ等の物理的な端子を持たないインタフェースであってもよい。
【００２０】
入出力ＩＦ１１０は、ＶＣＣ線１１１、リセット信号線（図中ではＲＳＴと表記）１１２、クロック信号線（図中ではＣＬＫと表記）１１３、ＧＮＤ線１１４、入出力線（図中ではＩ／Ｏと表記）１１５により処理装置１２０と接続されている。
【００２１】
処理装置１２０は、入出力ＩＦ１１０の制御回路であるＵＡＲＴ制御回路１２１と、ＣＰＵ１２２、ＲＡＭ１２３、ＲＯＭ１２４、コプロセッサ１２５、アドレス制御回路１３０を有し、これらは内部バス１２６により接続されている。またこの他にＥＥＰＲＯＭ１４０を有し、ＥＥＰＲＯＭ１４０はアドレス制御回路１３０に接続される構成をとる。
【００２２】
処理装置１２０は、組込みシステムにおける処理装置群の代表例であり、これらの装置が１チップにモジュール化されていても、一つまたは複数のモジュールが別チップとして構成されていても、またそのような構成をとることにより各チップが複数のバスで接続されていてもよい。またＥＥＰＲＯＭ１４０は、フラッシュメモリに限らず、ＦｅＲＡＭ、ＭＲＡＭ等の他の素子から構成されるデバイスであっても良く、またＨＤＤのような磁気媒体であってもよい。またフラッシュメモリについても、ＮＡＮＤ型、ＡＮＤ型、ＮＯＲ型などの違いに依存しない。
【００２３】
ここでＥＥＰＲＯＭ１４０が、ある物理アドレスに対応したデータブロックの単位で読み出し、書き込み、消去を行うような、消去および書き換え可能な不揮発性記憶媒体である場合、ＥＥＰＲＯＭ１４０上のデータブロック１４１は、当該データブロック１４１に割り当てられた制御情報１５１とデータ領域１５２とを有する。
【００２４】
制御情報１５１は、データブロック１４１の消去が指定された場合には消去操作の対象になってもよいが、アプリケーション等からデータブロック１４１にアクセスする際の読み出しと書き込みの対象にはならず、制御情報１５１の読み出しおよび書き込みは、後述するアドレス制御回路１３０が管理するレジスタを用いて行うことになる。制御情報１５１は、アドレスで参照される１バイトのデータ毎に割り当てられてもよいが、数ＫＢからなるデータブロックや、数十ＫＢからなるデータブロックを纏めたページブロック毎に割り当てられていてもよい。
【００２５】
アドレス制御回路１３０は、ＥＥＰＲＯＭ１４０のドメイン管理を行うためのモジュールであり、ドメイン制御レジスタ１３１、仮想アドレス空間レジスタ１３２、ドメイン設定レジスタ１３３を有する。ここで、ドメインとは、アプリケーションが利用するＥＥＰＲＯＭ１４０上の個別の領域であり、原則として当該アプリケーション以外はアクセス等することができず、また、当該アプリケーション自身によっては設定変更等ができない領域のことを指す。ドメインの詳細については後述する。
【００２６】
アドレス制御回路１３０は、ＥＥＰＲＯＭ１４０からの読み出し、書き込み、消去、プロテクト状態の管理、処理中の割り込み制御、アドレススクランブル、暗復号処理、エラー検知等の制御を行うためのモジュールを拡張したものであり、これらのモジュールの代りに実装されるものではなく、またこれらのモジュールの働きを制限するものでもない。また、アドレス制御回路１３０は、論理回路であってもよいが、ＣＰＵを含む構成や、処理により内部構成が変更可能なリコンフィギュアラブルな論理回路であってもよい。
【００２７】
ドメイン制御レジスタ１３１は、ＥＥＰＲＯＭ１４０上のドメインへのアクセスを行う前に設定されるレジスタであり、現在処理中のドメインのドメイン番号１３４、アクセス種別１３５等が格納される。アクセス種別１３５は、ＣＰＵ１２２がＥＥＰＲＯＭ１４０上のドメインに対して行う、読み出し、書き込み、消去といった操作に関する情報であり、プログラムカウンタの値、ドメイン番号１３４、後述するドメイン番号１５３に基づく判断により可能な場合には、現在実行中のアプリケーションから設定することができるレジスタである。
【００２８】
アドレス制御回路１３０は、ＥＥＰＲＯＭ１４０上のドメインへのアクセスが発生した場合に、アクセス種別１３５と後述のドメイン種別フラグ１５６とに基づいて、指定されたアクセス種別１３５の内容が、対象のドメインのドメイン種別フラグ１５６に設定されているアクセスの要件を満たしているかどうかを判断する。この判断を、汎用的な処理を実行するＣＰＵ１２２に行わせないことにより、ＥＥＰＲＯＭ１４０への不正アクセスを防止できるという効果を持つ。
【００２９】
ドメイン番号１３４は、あるドメインへ制御が受け渡される際に設定される値であり、現在処理中のドメイン自身と、当該ドメインの子ドメインの番号のみを設定することができる。アプリケーションがドメイン制御レジスタ１３１のドメイン番号１３４を変更する際に、現在のプログラムカウンタが参照しているＥＥＰＲＯＭ１４０上のアドレスに対応する制御情報１５１を読み出し、その中のドメイン番号１５３を参照する。ドメインおよびドメイン番号１５３の番号体系は、後述するように階層化されており、参照したドメイン番号１５３の値は、設定を変更しようとしているアプリケーションが格納されているドメインのドメイン番号であることから、ドメイン制御レジスタ１３１のドメイン番号１３４に設定された値と比較することでその関係を調べることができる。
【００３０】
例えばドメイン番号１５３が１２ｂｉｔの値を持ち、４ｂｉｔ毎に上位階層から順に１番目の階層のドメイン、２番目の階層のドメイン、３番目の階層のドメインを表す値として割り当てられている場合、ドメイン番号１５３が１１０ｈであれば、ドメイン番号１３４として設定可能な値は１１０ｈと、１１１ｈ〜１１Ｆｈまでとなり、これ以外の値が設定された場合はエラーとなる。なお、ドメインの関係を判断する方式としてはこれに限定される必要はなく、アドレス制御回路１３０がドメインの関係を格納するテーブルを持ち、このテーブルの対応関係を元に判断する仕組みであってもよい。
【００３１】
仮想アドレス空間レジスタ１３２は、ＥＥＰＲＯＭ１４０上のドメインによるアドレス空間を、別のＥＥＰＲＯＭ１４０のように見せかけるための仮想アドレス空間を実現するためのレジスタであり、開始アドレスと終端アドレスが格納される。
【００３２】
Ｊａｖａ（登録商標）のような仮想アドレス上でプログラムを実行するＯＳにより組込みシステムが制御されている場合、ＪａｖａＶＭによるＥＥＰＲＯＭ１４０上のアドレスの動的な変換は、大きなオーバーヘッドになる。従って、ＥＥＰＲＯＭ１４０上に形成されたアプリケーション毎に独立なドメインを別のＥＥＰＲＯＭ１４０のように見せかけ、個別のアドレス空間を持たせることができれば、物理アドレスが複雑に分散していても、そのことをＯＳが考慮する必要がなくなり、性能向上が見込めるという利点がある。特にＥＥＰＲＯＭ１４０の電源遮断対策やエラーブロックの代替処理を考慮する場合、論理アドレスと物理アドレスを一致させて管理することが難しくなるため、その効果はより大きくなる。
【００３３】
仮想アドレス空間レジスタ１３２は、制御情報１５１に格納されている後述するドメイン内アドレス１５５を読み出し、物理アドレスと仮想アドレスとのアドレス変換をハードウェア的に行う際に用いる仕組みである。仮想アドレス空間を使用しないためアドレス変換を行わない場合や、ＲＡＭ１２３上にテーブルを持ち、ＣＰＵ１２２がアドレス変換を行うような場合は有しなくてもよい。
【００３４】
ドメイン設定レジスタ１３３は、ＥＥＰＲＯＭ１４０にデータを書き込む際に制御情報１５１として設定される値を保持する。通常、ドメイン設定レジスタ１３３は、ＥＥＰＲＯＭ１４０の読み出しを行った際に、読み出したデータブロック１４１の制御情報１５１の内容によって自動的に更新されるため、あるデータブロック１４１に対して同じ制御情報１５１を書き込む場合は、一度読み出しを行った後に書き込みを行えばよい。
【００３５】
新しいドメインの生成などを行う際は、ドメイン設定レジスタ１３３に適切な情報を設定する必要があるが、その際には自分自身のドメインか、自分の子ドメインの情報のみ指定することができる。なお、後述する仮想アドレスによる運用を行っている場合には、自分自身のドメインについての制御情報１５１の変更を制限してもよい。これは仮想アドレスによるアドレス空間の制御を行っている場合には、親ドメインから割り当てられた仮想アドレスを子ドメインが変更すると障害の原因になるためである。
【００３６】
また、制御情報１５１として、自分自身のドメインの仮想アドレスと、自分の子ドメインのための仮想アドレスのように２つ以上の仮想アドレスを有するような構成をとることも可能であり、この場合は子ドメイン用の仮想アドレスを変更できるようにしてもよい。そうでない場合は、親ドメインから仮想アドレス空間で制御された子ドメインは、個別の仮想アドレス空間を持つ子ドメインを生成できない。アドレス制御回路１３０はこれらの情報を用いてＥＥＰＲＯＭ１４０へのアクセスが適切であるかどうかを判断する。
【００３７】
制御情報１５１は、ドメイン番号１５３、制御条件フラグ１５４、ドメイン内アドレス１５５から構成される。ここで、ドメイン番号１５３は、ＥＥＰＲＯＭ１４０上の対象となるアドレスに割り当てられたデータ領域１５２が属するドメイン番号が格納される。また、制御条件フラグ１５４は、対象となるアドレスに対して指定されたドメインの制御条件を記載したフラグであり、ドメイン種別フラグ１５６、仮想アドレス運用フラグ１５７、裏アドレスフラグ１５８を有する。
【００３８】
ドメイン種別フラグ１５６は、ドメインへのアクセスの種類が格納され、例えば、読み出し可、読み出し・書き換え可、アクセス禁止の３つの状態が設定される。これらは、主に子ドメインからのアクセスに対するアクセスの可否を表すものであるが、フラグに割り当てるビット数を増やし、下位の全ドメインからのアクセスを許可したり、直下の子ドメインからのアクセスのみ許可したり、同じ親ドメインに属するドメインからのアクセスを許可したりなど、条件に応じて種々のアクセスの可否を設定することもできる。
【００３９】
ドメイン種別フラグ１５６に読み出し可が設定された領域は、設定された条件に基づき、アクセスが可能となる。これは親ドメインに存在する共有ライブラリにアクセスする際などに利用することができる。同様に、読み出し・書き換え可が設定された領域は、読み出しおよび書き換えが可能になる。これは各アプリケーション間でデータを共有したい場合などに用いることができる。アクセス禁止が設定された領域は、上述のような親ドメインではないドメインからのアクセスが禁止される。
【００４０】
仮想アドレス運用フラグ１５７は、ドメイン内でアプリケーション用にアドレス空間を割り当てるためのもので、このフラグが設定されている場合、対象のデータブロック１４１は、アプリケーションが各論理アドレスに対してアクセスする際に、ドメイン内アドレス１５５に記載されたアドレスであるかのように振る舞う。裏アドレスフラグ１５８は、前述の仮想アドレスによる運用が行われている場合で、データ領域１５２の多重化のために物理アドレスを重複して管理する場合において、どのアドレスに最新のデータが格納されているかを指し示すフラグである。
【００４１】
ドメイン内アドレス１５５は、仮想アドレス運用フラグ１５７を有効に設定することにより、仮想アドレスと物理アドレスとの間のアドレス変換が行われる場合に、対象の物理アドレスが論理的に指し示す仮想アドレスを格納するものである。仮想アドレスによる運用を必要としない場合は、制御条件フラグ１５４の中の仮想アドレス運用フラグ１５７、裏アドレスフラグ１５８、並びにドメイン内アドレス１５５のための領域は割り当てられなくてもよい。
【００４２】
以上に述べた構成により、アドレス制御回路１３０は、アドレス制御回路１３０内の上記各レジスタの情報と、各データ領域１５２に割り当てられた制御情報１５１とを用いることで、電源遮断や不正なコードが実行された場合でも、ドメイン毎に相互干渉することなくＥＥＰＲＯＭ１４０の制御を行うことを可能にし、かつ、ＯＳからは柔軟に各ドメインの設定の変更を可能にする。
【００４３】
なお、制御情報１５１の格納位置は、データ領域１５２の先頭ではなく、末尾、他のデータブロック、別のメモリ上などに格納されていても構わない。また、制御情報１５１中のデータの並び順や、個々のデータサイズについても、図１に示した順序等に限られるものではない。
【００４４】
最近の組込みシステムでは、様々なソフトウェアモジュールが組み込まれ、それらを組込みシステム向けＣＰＵのためのリアルタイムＯＳが制御するような構成をとるものが多い。携帯電話、車、ＨＤＤレコーダなどの装置がこれに該当する。また複数のアプリケーションが搭載されたＩＣカードやＳＩＭカード等も同様である。これらの各ソフトウェアモジュールは、別の工程で作成された後にシステムに組み込まれて動作するが、あるソフトウェアモジュールのバグや、ソフトウェアモジュールとＯＳとの間の設定の問題により、他のソフトウェアモジュールやＯＳに影響がおよび、システムが停止したり重要な情報が漏洩するなどの問題が起こり得る。
【００４５】
しかしながらソフトウェアモジュールやＯＳが独立に動作しながらも連携することを考慮すると、単純なアクセス制限だけのファイアーウォールでは十分ではない。特に、将来的にＥＥＰＲＯＭ１４０が非常に高速かつ長寿命化した場合、ＲＯＭ１２４やＲＡＭ１２３の代りにＥＥＰＲＯＭ１４０だけでシステムが設計されることが考えられる。その場合に、ＥＥＰＲＯＭ１４０のドメイン管理が求められることになる。
【００４６】
以下に、アドレス制御回路１３０が、アドレス制御回路１３０内の各レジスタの情報と制御情報１５１とを用いて、ＥＥＰＲＯＭ１４０のドメイン管理を行う際の概要について説明する。
【００４７】
ＥＥＰＲＯＭ１４０はドメインにより階層構造で管理され、対象のデータブロック１４１がどのドメインに属しているかの情報はドメイン番号１５３に格納される。ＯＳの動作まで含めた組込みシステムでのＥＥＰＲＯＭ１４０の利用を想定する場合、通常、一つのアプリケーションが利用できるＥＥＰＲＯＭ１４０のアドレス空間は、ＯＳによって割り当てられる。
【００４８】
ＯＳは、ＲＯＭ１２４またはＥＥＰＲＯＭ１４０に予め格納されており、通常は、ＩＣカード１００の発行後に、ＯＳに対して動的にドメインが割り当てられることがないことから、ＯＳに対して割り当てられるドメイン番号には０が割り当てられる。このように、ドメイン番号が０であるドメインはルートドメインとして動作し、唯一自分自身以外のドメインからは設定の変更ができないドメインになる。
【００４９】
図２は、本実施の形態におけるドメインの階層構造およびＥＥＰＲＯＭ１４０の領域との関係の例を表した図である。図２におけるドメイン＃０（２００）は、ルートドメインであり、通常はＯＳが管理するドメインとなる。このドメイン番号の情報は、対象となるＥＥＰＲＯＭ１４０内のアドレス空間＃０（２５０）のドメイン番号１５３に格納される。図２の例では、ＥＥＰＲＯＭ１４０全体がルートドメインに属している場合を表しているが、このアドレス空間は必ずしも一塊である必要はなく、ＥＥＰＲＯＭ１４０内に偏在していても構わない。
【００５０】
このような構成のＩＣカード１００に対して新しいアプリケーションの追加を行うとき、ＯＳは当該アプリケーションのために新規ドメインの作成を行う。ドメイン＃０（２００）を親として生成される新ドメインには、自ドメイン番号として使われていないドメイン番号が割り当てられる。ドメイン＃１（２１０）、ドメイン＃２（２２０）、ドメイン＃３（２３０）はこのようにして作成されたドメインである。
【００５１】
ここで、アドレス空間＃２（２７０）に割り当てられたドメイン＃２（２２０）を例にとれば、このアドレス空間＃２（２７０）に格納されたアプリケーションは、アドレス空間＃２（２７０）内で実行されるが、他のアドレス空間へのアクセスは、当該アドレス空間に割り当てられたドメインのドメイン種別フラグ１５６により許可されていない限り行うことはできない。またドメイン＃２（２２０）は、自分のドメインに子ドメインを作成することが可能である。ドメイン＃２（２２０）のアドレス空間が、子ドメインを作るには十分な大きさの領域でない場合は、親ドメインであるドメイン＃０（２１０）が、ドメイン＃２（２２０）に追加の領域を割り当てることができる。
【００５２】
ドメイン＃２１（２２１）およびドメイン＃２２（２２２）は、ドメイン＃２（２２０）を親とする、当該操作により生成されたドメインである。アドレス空間＃２１（２７１）およびアドレス空間＃２２（２７２）は、アドレス空間＃２（２７０）と領域を共有しているが、これは、親ドメインからは子ドメインの領域を子ドメインの割り当て前と同じように操作できるが、子ドメイン＃２１（２２１）または子ドメイン＃２２（２２２）からは、親ドメイン＃２（２２０）のドメイン種別フラグ１５６で許可されていない限り、自分自身のドメインのアドレス空間の範囲しか操作できないことを意味している。
【００５３】
上述したようなドメイン管理は、プログラムやデータを格納するために用いるＥＥＰＲＯＭ１４０や、フラッシュメモリのような書き換え可能な不揮発性のデバイスにおいて効果が大きいが、ＲＯＭ１２４やＲＡＭ１２３の制御のために用いることも可能である。ＲＯＭ１２４に上記のような仕組みを取り入れることの利点は、ＲＯＭ１２４上にアプリケーション毎に個別のミドルウェアを搭載する場合、ＲＯＭ１２４上のプログラムであっても、互いに影響を及ぼす可能性のある範囲を制限することができる点である。この点は、大規模化する組込みシステムの品質管理において意義があり、例えば認定が必要となるようなモジュールを組み込む場合において、その影響範囲を効果的に限定することができる。
【００５４】
ＲＡＭ１２３に上記のような仕組みを取り入れることの利点は、アプリケーションのバグによるＩＣカード１００の障害をハードウェア的に防止できる点にある。例えば、ルートドメインから読み出し・書き込み可で作成されたスタックのためのドメインは、当該ドメイン管理により予め設定された領域を超えて操作することができなくできるため、スタックオーバーフローによる障害や不正な動作を回避できるという効果がある。
【００５５】
以下では、アドレス制御回路１３０と、アドレス制御回路１３０のための制御情報１５１を持つＥＥＰＲＯＭ１４０に関する動作の詳細な内容として、ルートドメインの設定、ドメインの追加、ドメインへのアクセス、ドメインの削除の各処理について、図３〜図６を用いて説明する。
【００５６】
まず、ルートドメインの設定処理の流れについて図３を用いて説明する。ＥＥＰＲＯＭ１４０の初期状態においては、制御情報１５１の値は、ＥＥＰＲＯＭ１４０の各データの初期値と同じく、全て００ｈまたはＦＦｈとなっている。値が００ｈであるかＦＦｈであるかは、ＥＥＰＲＯＭ１４０の構造によって決定されるが、ルートドメインを表すドメイン番号の値は、障害時などの場合でも確実にルートドメインが認識されるようにすることを考慮した場合、ＥＥＰＲＯＭ１４０の各データの初期値または消去後の値となっていることが望ましい。
【００５７】
ＥＥＰＲＯＭ１４０にルートドメインを設定するソフトウェアは、まず、ルートドメインの設定処理が開始されると（ステップ３０１）、ドメイン制御レジスタ１３１にルートドメインの設定を行う（ステップ３０２）。ドメイン制御レジスタ１３１にルートドメインが設定されると、ＥＥＰＲＯＭ１４０の全領域がアクセス可能となる。ただし、ドメイン制御レジスタ１３１の設定が行えるのは、ルートドメインにあるプログラムか、ＲＯＭ１２４上にあるプログラムだけであり、ユーザプログラムが自分で変更できないことが望ましい。ＲＯＭ１２４にあるプログラムに対しても制限を設けたい場合は、先に述べたＲＯＭ１２４に対するドメイン管理を別途行えばよい。
【００５８】
次に、ルートドメインに設定したいアドレスからデータを読み込む（ステップ３０３）。この時、同時に対象アドレスの制御情報１５１の内容がドメイン設定レジスタ１３３に読み込まれる。次に、アドレス制御回路１３０は、現在のプログラムカウンタがＲＯＭ１２４かルートドメインに属する領域を参照しているかどうかを確認する（ステップ３０４）。もしそうでなければ、エラー処理を実行する（ステップ３０９）。当該エラー処理の内容をソフトウェアで行う場合は、別途エラー状態設定のためのレジスタを用意し、ＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）を発生させて処理してもよい。
【００５９】
プログラムカウンタが参照するアドレスが上記領域内にある場合、ルートドメインとして登録するドメイン番号１５３、および制御条件フラグ１５４とドメイン内アドレス１５５の値をドメイン設定レジスタ１３３に書き込み（ステップ３０５）、更新後のデータの書き込みを行う（ステップ３０６）。図３では、ステップ３０５においてドメイン番号１５３として０を指定しているが、これは一例としての設定であり、実際の設定はルートドメインの設定方法に依存する。このとき、併せて制御情報１５１も書き込まれ、当該アドレスが参照するデータブロック１４１のルートドメインとしての設定が完了する。なお、ＯＳが一つだけのシステムでは、ルートドメインとなりうるアドレスを００ｈやＦＦｈ等の固定の値に制限した方が、安全性は向上する。
【００６０】
次に、他にルートドメインに設定したいアドレスがあるかどうかを確認する（ステップ３０７）。ある場合は、ステップ３０３からステップ３０６までの処理を繰り返し行う。他に設定するアドレスがない場合は処理を終了する（ステップ３０８）。なお、図３の処理の流れでは、簡単のために仮想アドレス運用フラグ１５７および裏アドレスフラグ１５８を無効に設定し、ドメイン内アドレス１５５は未設定の状態としている。仮想アドレス運用フラグ１５７および裏アドレスフラグ１５８を設定した場合の動作については、ドメインの追加処理において説明する。
【００６１】
上記のようなルートドメインの設定処理をＥＥＰＲＯＭ１４０の初期化処理の一部として行う場合、ステップ３０２からステップ３０７の一連の処理をハードウェアにより自動的に行ってもよい。この場合、対象のアドレスは読み出し単位毎にインクリメントまたはデクリメントされ、対象となる全ての領域へのルートドメインの設定が終わったことを、専用のレジスタへの設定又は割込みによりＣＰＵに通知する構成とすることも可能である。
【００６２】
なお、ルートドメインの設定処理は、アドレス制御回路１３０だけではなく、ルートドメイン上で動作するＯＳとライブラリによる処理の連携により実現される。ここでアドレス制御回路１３０により実行されるべき処理はステップ３０４であり、その他の処理はＯＳ等により実行する構成とすることも可能である。
【００６３】
次に、ドメインの追加処理の流れについて図４を用いて説明する。まず、アドレス制御回路１３０は、ドメインの追加処理が開始されると（ステップ４０１）、ドメイン制御レジスタ１３１に、親となるドメインを設定する（ステップ４０２）。ドメインの追加の際には、通常は、自分自身のドメインの下に子ドメインを作るので、ここでは自分自身のドメインを設定することになるが、当該処理がＯＳによりライブラリ化されている場合には、ＯＳのあるルートドメインを設定することになる。
【００６４】
通常の実装では、当該処理はＯＳの機能として用意され、要求元のプログラムから呼び出されて実行することになる。このとき、システムの安全のために、当該処理を行うソフトウェアまたはハードウェアは、まず最初に呼び出し元のプログラムがルートドメインまたはその子ドメイン群に属するかどうかを判断する。要求元のプログラムが子ドメイン群に属する場合には、ドメイン制御レジスタ１３１の変更が許可されることになる。ここで、子ドメイン群とは、そのドメインの直接の全ての子ドメインと、当該各子ドメイン以下の全ての子ドメインの総称である。
【００６５】
子ドメイン群に属するかどうかの確認方法としては、現在のドメイン制御レジスタ１３１の内容を元に判断する方法や、呼び出し元のプログラムの完全性を確認する方法等がある。ここでのプログラムの完全性の確認は、対象となる子ドメインのプログラムのハッシュ値などをルートドメイン内で管理しておき、実行時に呼び出し元のプログラムから計算したハッシュ値とルートドメイン内で管理しているハッシュ値とを比較する方法等が考えられる。
【００６６】
これらの処理は、ＥＥＰＲＯＭ１４０上に不正に格納されたプログラムに、ルートドメインに属するドメイン切り替えのためのソフトウェアまたはハードウェアを利用して不正にドメインの追加を行わせないために行う。組込みシステムの大規模化の中で、ＯＳが逐次全てのストレージ領域の完全性を確認することは困難である。よって、当該ドメイン追加の仕組みと、ルートドメインによるドメイン内のプログラムおよびデータの完全性の確認を行う仕組みとを用いることで、検査するストレージ領域のサイズを小さくできるという効果がある。
【００６７】
次に、新規にドメインとして追加したいアドレスの範囲が、要求元のドメインに属しているかどうかを判断する（ステップ４０３）。なお、ここではドメインのサイズだけを指定し、実際のアドレス空間の範囲をＯＳが決定してもよい。この場合、ＯＳはＥＥＰＲＯＭ１４０の消去状態を確認して、指定されたサイズのドメインの追加が可能かどうかを判断する。この場合、次のステップ４０４は省略してもよい。
【００６８】
次に、新規にドメインとして追加したいアドレスの範囲が、要求元のドメイン内で確保可能かを判断する（ステップ４０４）。ドメイン間の独立性の観点から、要求元のドメインに属する領域を除く他のドメインに属するアドレスの範囲から、新規のドメインのためのアドレスの範囲が割り当てられないことが望ましい。なお、アドレスの範囲が指定されている場合は、当該アドレスの範囲が空き領域であると見なして確保してもよいし、そのデータブロック１４１が消去状態でない場合にはエラーとしてもよい。空き領域のサイズなどの問題で領域を確保することができない場合はエラー処理（ステップ４１１）を行う。
【００６９】
ルートドメインと要求元のプログラムのドメイン内とに新規のドメインの追加のための十分な空き領域が確保できる場合は、そのアドレスを読み込む（ステップ４０５）。ここでプログラムカウンタがＲＯＭ１２４かルートドメインに属す領域を参照しているかどうかを判断し（ステップ４０６）、そうでない場合はエラー処理を行う（ステップ４１１）。なお、要求元のプログラムによるドメイン追加処理の実行を許可する場合は、プログラムカウンタの参照先に要求元のプログラムのドメインを加えてもよい。
【００７０】
プログラムカウンタが上記領域を参照している場合は、ドメイン設定レジスタ１３３に、新規に追加するドメイン番号１５３、制御条件フラグ１５４、ドメイン内アドレス１５５の値を書き込み（ステップ４０７）、データの書き込みを行う（ステップ４０８）。このとき併せて制御情報１５１も書き込まれ、そのアドレスが参照するブロックのドメイン追加が完了する。
【００７１】
なお、図４では、ステップ４０７においてドメイン番号１が指定されているが、これは一例である。また、ドメイン番号を階層化しておき、その中で用いるべき番号が決定される仕組みであってもよい。例えば、ルートドメイン（ドメイン番号０）の子ドメインとなるのは、ドメイン番号１、１１、２１…のみとし、ドメイン番号２〜１０、１２〜２０、２２〜３０、…は、その子ドメインの下にさらに子ドメインを作る場合に使用するというような仕組みにしてもよい。この場合、ドメインの階層を番号から判断できることから、ドメイン番号制御のためのテーブルを簡略化できるという効果があり、その整合性をハードウェアで制御することができるという効果がある。
【００７２】
以上の処理の後、他にドメインに設定したいアドレスがあるかどうかを確認する（ステップ４０９）。ある場合には、ステップ４０５からステップ４０８までの処理を繰り返し行う。他に設定するアドレスがない場合は処理を終了する（ステップ４１０）。終了時に行う処理として、サイズによって割り当てを行った場合は、要求元のプログラムにどのアドレスをドメインとして追加したかを報告するようにしてもよい。また、このようなＥＥＰＲＯＭ１４０へのドメインの追加処理を、ルートドメインが一括して管理するようにしてもよい。
【００７３】
なお、ドメインの追加処理は、アドレス制御回路１３０だけではなく、ルートドメイン上で動作するＯＳとライブラリによる処理の連携により実現される。ここでアドレス制御回路１３０により実行されるべき処理はステップ４０６であり、その他の処理はＯＳ等により実行する構成とすることも可能である。
【００７４】
また、ステップ４０３とステップ４０４とに関しては、ドメインの構造が簡単な場合には、ハードウェアにより実現することも可能である。この場合、ステップ４０１を行う際に、ドメイン制御レジスタ１３１に、要求元のプログラムが属するドメインのドメイン番号を設定しておくことで実現できる。この際、例えば、ドメイン番号の体系を、前述のように最上位の数字が第１世代のドメイン番号、次の桁の数字が第２世代のドメイン番号というように階層管理しておけば、対象となるアドレスが要求元のプログラムが属するドメインの子ドメイン群に属するかどうかを、ドメイン番号の情報からＯＳが判断することができ、ＯＳによるドメインの管理負荷が低減され、システムの安全性が向上するという効果がある。このような仕組みは後述するドメインの削除処理の際にも有効である。
【００７５】
次に、ドメイン追加処理において、仮想アドレス運用フラグ１５７を用いて仮想アドレスを割り当てる場合と、裏アドレスフラグ１５８を用いてデータの多重化を行う場合の処理について説明する。
【００７６】
仮想アドレスによるアドレス制御を行う場合は、仮想アドレス運用フラグ１５７の値を有効に設定する。この場合、ＯＳはドメインの追加要求時に指定されたサイズを元に、割り当てるべき仮想アドレスをドメイン内アドレス１５５に設定する。このときの仮想アドレスは、ＯＳにより制御しやすいようにＥＥＰＲＯＭ１４０の先頭アドレスから割り当ててもよい。
【００７７】
例えば、ＯＳが、個々のプログラムがあたかもＥＥＰＲＯＭ１４０の全ての領域にアクセス可能であるかのように振る舞わせたい場合は、仮想アドレス空間の先頭アドレスは、ＥＥＰＲＯＭ１４０の先頭物理アドレスと同じ値とすればよい。また、ＯＳがプログラム毎に仮想アドレス空間を用意し、その中のあるアドレス空間がシステム上ＥＥＰＲＯＭ１４０用として規定されているような場合は、その仮想アドレス空間のアドレスをそのままＥＥＰＲＯＭ１４０の仮想アドレスとして用いることができる。
【００７８】
また、フラッシュメモリの制御においては、同じ物理アドレスブロックへのアクセスが連続した場合に、そのアドレスブロックの消去回数が増大し、不良が発生しやすくなる場合がある。そこで、一定回数の書き換えが発生した場合に、対象の物理アドレスを入れ替えることで書き換え回数の分散を行うことができる。このような場合に、仮想アドレスによる運用を用いてもよい。この場合の仮想アドレスに対する物理アドレスは、シーケンシャルに割り当ててもよいし、ドメインのサイズに基づいて一様分布するアルゴリズム等を用いてもよい。
【００７９】
また、アドレス制御回路１３０とＯＳは、ドメインのサイズを要求されたサイズよりも大きい値にしておき、かつ初期状態では仮想アドレスを割り振らない領域を用意しておくことで、データ書き換えの際に当該領域へデータを書き込み、書き込み完了後に以前のデータを消すようにすることで、書き換え時に電源遮断が起きた場合に以前のデータや書き換え対象データが消失するというような障害に対する対策を行う仕組みであってもよい。
【００８０】
ＥＥＰＲＯＭ１４０のサイズが大きくなるにつれて、ＥＥＰＲＯＭ１４０のアドレス空間を管理することは困難になる。しかし、ドメイン管理により、書き換えが頻繁に起こる領域と、ほぼ読み出ししか発生しない領域とを別のドメインとして管理し、そのドメイン内でのみ有効となる仮想アドレスを割り当てることで、そのアドレス空間の管理負荷を大きく低減できるという効果がある。これは上記で例示した方法だけに限らず、仮想アドレスを用いる仕組み全般に対して有効である。
【００８１】
裏アドレスを用いてデータブロック１４１を多重化する場合は、裏アドレスフラグ１５８に有効な値を設定する。この場合、複数の物理アドレスに対して同一の仮想アドレスをドメイン内アドレス１５５に割り当て、同一の仮想アドレスを割り当てたデータブロック１４１に対しては、裏アドレスフラグ１５８により、書き換えを行う順番を設定する。
【００８２】
例えば、対象の仮想アドレスを２重化する場合、裏アドレスフラグ１５８は最低２ｂｉｔの情報が必要である。この場合、同一の仮想アドレスに対応する複数のデータブロック１４１について、それぞれの裏アドレスフラグ１５８の値により０１Ｂ（１）→１０Ｂ（２）→１１Ｂ（３）→０１Ｂ（１）→…という順で、どちらのデータブロック１４１が最新のデータであるかを表すことになる。
【００８３】
この場合、初期状態で裏アドレスフラグ１５８に０１Ｂと設定したデータブロック１４１と、１０Ｂと設定したデータブロック１４１の２つを用意しておく。ここで、裏アドレスフラグ１５８が０１Ｂと１０Ｂの状態で書き換えが発生した場合は、古い方である０１Ｂのデータブロック１４１へ書き換えを行い、書き換え後は対象のデータブロック１４１の裏アドレスフラグ１５８の値を１１Ｂに更新する。また、裏アドレスフラグ１５８が０１Ｂと１０Ｂの状態で読み出しが発生した場合は、新しい方である１０Ｂのデータブロック１４１を読み出す。
【００８４】
また、裏アドレスフラグ１５８が１０Ｂと１１Ｂの状態で書き換えが発生した場合は、古い方である１０Ｂのデータブロック１４１へ書き換えを行い、書き換え後は対象のデータブロック１４１の裏アドレスフラグ１５８の値を０１Ｂにラップさせて更新する。また、裏アドレスフラグ１５８が１０Ｂと１１Ｂの状態で読み出しが発生した場合は、新しい方である１１Ｂのデータブロック１４１を読み出す。また、裏アドレスフラグ１５８が０１Ｂと１１Ｂの状態で書き換えが発生した場合は、古い方である１１Ｂのデータブロック１４１へ書き換えを行い、書き換え後は対象のデータブロック１４１の裏アドレスフラグ１５８の値を１０Ｂに更新する。また、裏アドレスフラグ１５８が０１Ｂと１１Ｂの状態で読み出しが発生した場合は、新しい方である０１Ｂのデータブロック１４１を読み出す。
【００８５】
ここで、裏アドレスフラグ１５８の値が００Ｂ（０）の場合は、裏アドレスフラグ１５８が未設定であることを意味する。なお、これは初期状態または消去された状態のＥＥＰＲＯＭ１４０のデータの値が００Ｂである場合の例である。逆に、ＥＥＰＲＯＭ１４０の消去状態の値が１１Ｂである場合は、上記の説明において、裏アドレスフラグ１５８の値により、００Ｂ（０）→０１Ｂ（１）→１０Ｂ（２）→００Ｂ（０）→…という順で、どちらが最新のデータであるかを表すことになり、裏アドレスフラグ１５８が未設定である状態は１１Ｂ（３）となる。
【００８６】
裏アドレスフラグ１５８が未設定である状態を上記のように判断するのは、データが消去された状態で電源遮断が発生した場合に、裏アドレスフラグ１５８の状態が有効であるのか無効であるのかを判別するためである。データ消去中の電源遮断等により、裏アドレスフラグ１５８の状態がクリアされてしまった場合、再起動後のチェックで、裏アドレスフラグ１５８が登録されているドメインであるにもかかわらず値が未設定状態であることによりエラーを検出することができる。また、ドメイン内のデータブロック１４１のドメイン内アドレス１５５を調べ、ドメイン内アドレスが重複していないデータブロック１４１を発見することで、裏アドレスフラグ１５８が未設定となっているデータブロック１４１が元々どの仮想アドレスに割り当てられていたかも把握することができ、当該データブロック１４１を再登録することも可能となる。
【００８７】
次に、ドメインへのアクセスの処理の流れについて図５を用いて説明する。ドメインへのアクセスとしては、読み出し、書き込み、削除などが考えられ、ドメインへのアクセスの管理としては、あるプログラムが別のドメイン上のプログラムおよびデータを自由に変更できないようにする仕組みと、データの共有や受け渡しのために制限付きで変更できるようにする仕組みとが必要になる。
【００８８】
アドレス制御回路１３０は、ドメインへのアクセスが発生すると（ステップ５０１）、まずアクセスしたいアドレスのデータブロック１４１を読み込み（ステップ５０２）、ドメイン種別フラグ１５６が設定されている場合は、アクセス要件（読み出し、書き込み等）を満たしているかどうかを判断する（ステップ５０３）。
【００８９】
アドレス制御回路１３０は、自分自身のドメイン以外のドメインへのアクセスが発生すると、アクセス先が親ドメインおよび同じ親ドメインを有するドメインである場合は、ドメイン種別フラグ１５６の設定に従い動作する。それ以外の場合は、ドメイン番号を、最上位の数字が第１世代のドメイン番号、次の桁の数字が第２世代のドメイン番号となるような体系により管理することで、アクセス先が同じルートドメインに属するか否かを判断することができる。なお、実際の運用では、データの書き換えは親ドメインからに限定することが望ましい。仮に同じ親ドメインを有する子ドメイン間でデータの共有やデータの受け渡しを行いたい場合は、親ドメインを経由して行うことが望ましい。
【００９０】
ドメインへのアクセスに際して、仮想アドレス運用フラグ１５７が有効に設定されているドメインへのアクセスの場合には、ドメイン内を検索し、対象のアドレスと一致するドメイン内アドレス１５５を持つデータブロック１４１を読み出す。また、裏アドレスフラグ１５８が有効に設定されているドメインへのアクセスの場合には、同じドメイン内アドレス１５５を持つデータブロック１４１を読み出し、前述した手順に従って最新のデータブロック１４１を判別し、当該データブロック１４１を読み出す。
【００９１】
アクセスの種類については、ドメイン制御レジスタ１３１内のアクセス種別１３５に設定され、アクセス種別１３５が読み出しである場合は、ドメイン種別フラグ１５６に”読み出し可”が設定されている必要があり、また、書き込みおよび消去である場合は、”読み出し・書き換え可”が設定されている必要がある。なお、アクセス元のドメインが、親ドメインまたはルートドメイン等の直系の上位ドメインである場合はこの限りではない。
【００９２】
この条件を満たしていない場合はエラー処理を行う（ステップ５０９）。条件を満たしている場合は、処理の種別により（ステップ５０４）、読み出しの場合は、要求元に読み出したデータを転送し（ステップ５０５）、処理を終了する（ステップ５０８）。また、書き換えの場合は、書き換えたいデータと読み出したデータの内容とをマージして書き込みを行い（ステップ５０６）、処理を終了する（ステップ５０８）。消去の場合は、データの消去処理を実行し（ステップ５０７）、処理を終了する（ステップ５０８）。
【００９３】
なお、ドメインへのアクセスの処理は、アドレス制御回路１３０だけではなく、ルートドメイン上で動作するＯＳとライブラリによる処理の連携により実現される。ここでアドレス制御回路１３０により実行されるべき処理はステップ５０３であり、その他の処理はＯＳ等により実行する構成とすることも可能である。
【００９４】
次に、ドメインの削除処理の流れについて図６を用いて説明する。ドメインの追加によりＥＥＰＲＯＭ１４０に空き領域がなくなった場合や、ドメインが不要になった際に、ドメインを削除する処理が必要になる。ドメインを削除する場合（ステップ６０１）、まずＯＳは、ドメイン制御レジスタ１３１にルートドメインを設定する（ステップ６０２）。次に、削除の対象となるアドレスが、要求元のドメインの子ドメインに属するかどうかを判断する（ステップ６０３）。ドメインを削除する場合、ドメイン間の独立性を保つため、自分自身と、自分自身より上位のドメインを削除することができないようにするのが望ましい。要求元のドメインの子ドメインに属しない場合は、エラー処理を行う（ステップ６１０）。
【００９５】
要求元の子ドメインに属する場合は、現在のプログラムカウンタがＲＯＭ１２４かルートドメインに属する領域を参照しているかどうかを確認する（ステップ６０４）。そうでない場合はエラー処理を行う（ステップ６１０）。なお、要求元のドメイン内の削除プログラムの実行を許可する場合は、プログラムカウンタの参照先に要求元のドメインを加えてもよい。現在のプログラムカウンタがＲＯＭ１２４かルートドメインに属する領域を参照している場合は、対象のアドレスのデータを削除する（ステップ６０５）。
【００９６】
その後、ドメイン番号１５３として要求元のドメイン番号を指定し、さらに要求元のドメインの基準に従った制御条件フラグ１５４の内容を指定した情報をドメイン設定レジスタ１３３に書き込み（ステップ６０６）、内容を消去したデータを書き込む（ステップ６０７）。削除したドメインの領域は、通常親ドメインに戻ることになる。ここで、図６のステップ６０６に記載している設定内容は一例であり、これら設定は、削除したアドレスが属することになるドメインの設定に依存する。
【００９７】
ステップ６０７の処理後、他にも削除したいアドレスが存在するどうかを判断し（ステップ６０８）、存在する場合には、ステップ６０３〜ステップ６０７の処理を繰り返す。他に削除したいアドレスが存在しない場合には処理を終了する（ステップ６０９）。ドメインを削除する場合に削除対象となるのは、指定されたドメインだけではなく、指定されたドメインに属する子ドメインも含まれる。
【００９８】
なお、ドメインの削除処理は、アドレス制御回路１３０だけではなく、ルートドメイン上で動作するＯＳとライブラリによる処理の連携により実現される。ここでアドレス制御回路１３０により実行されるべき処理はステップ６０４であり、その他の処理はＯＳ等により実行する構成とすることも可能である。
【００９９】
また、前述したように、ステップ６０３に関しては、ドメインの構造が簡単な場合には、ハードウェアにより実現することも可能である。この場合、ステップ６０１を行う際に、ドメイン制御レジスタ１３１に、要求元のプログラムが属するドメインのドメイン番号を設定しておくことで実現できる。この際、例えば、ドメイン番号の体系を、最上位の数字が第１世代のドメイン番号、次の桁の数字が第２世代のドメイン番号というように階層管理しておけば、対象となるアドレスが要求元のプログラムが属するドメインの子ドメイン群に属するかどうかを、ドメイン番号の情報からＯＳが判断することができ、ＯＳによるドメインの管理負荷が低減され、システムの安全性が向上するという効果がある。
【０１００】
以上のように、組込みシステム向けＣＰＵやＩＣカードチップなどにおいて、フラッシュメモリなどの記憶媒体をアプリケーションの実行に使用する場合、記憶媒体の領域にドメインを定義して管理することにより、ドメイン上で稼動する各アプリケーションは、ドメインの設定によって許可されている範囲でしか記憶媒体の領域にアクセスできないようにすることが可能となる。さらに、ドメインを階層管理し、ドメインの設定は自分自身では変更できず、ルートドメインもしくは親ドメインによってしか変更できないため、ドメイン内のアプリケーションの不正動作により、他の領域上のデータが破壊されたり、不正にアクセスされたりするおそれがなく稼動することができる。
【０１０１】
また、ドメイン管理の設定は、上述のように柔軟に行うことが可能なため、アプリケーション間でのデータの受け渡しや、ライブラリの共用など、アプリケーション間での領域の共用についての管理も行うことができる。さらに、上記のドメイン管理にさらに仮想アドレスによる運用や、データの二重化を行うことにより、データ書き換え時の電源遮断などの障害に対するデータの整合性の維持も可能となり、可用性の確保が図られる。
【０１０２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１０３】
本発明は、消去および書き換え可能な記憶領域を持つ記憶媒体、特にフラッシュメモリなどの不揮発性記憶媒体の領域管理を行う制御回路、および前記制御回路を有する汎用または組込みシステム向け処理装置、および前記処理装置を有する組込みシステム、ならびに前記記憶媒体の領域管理方法に利用可能である。
【図面の簡単な説明】
【０１０４】
【図１】本発明の一実施の形態である処理装置、および当該処理装置に接続された記憶媒体の構成を表す図である。
【図２】本発明の一実施の形態におけるドメインの階層構造およびＥＥＰＲＯＭの領域との関係の例を表した図である。
【図３】本発明の一実施の形態におけるルートドメインの設定処理の流れを表した図である。
【図４】本発明の一実施の形態におけるドメインの追加処理の流れを表した図である。
【図５】本発明の一実施の形態におけるドメインへのアクセスの際の処理の流れを表した図である。
【図６】本発明の一実施の形態におけるドメインの削除処理の流れを表した図である。
【符号の説明】
【０１０５】
１００…ＩＣカード、１１０…入出力ＩＦ、１１１…ＶＣＣ線、１１２…ＲＳＴ（リセット信号線）、１１３…ＣＬＫ（クロック信号線）、１１４…ＧＮＤ線、１１５…Ｉ／Ｏ（入出力線）、１２０…処理装置、１２１…ＵＡＲＴ制御回路、１２２…ＣＰＵ、１２３…ＲＡＭ、１２４…ＲＯＭ、１２５…コプロセッサ、１２６…内部バス、１３０…アドレス制御回路、１３１…ドメイン制御レジスタ、１３２…仮想アドレス空間レジスタ、１３３…ドメイン設定レジスタ、１３４…ドメイン番号、１３５…アクセス種別、１４０…ＥＥＰＲＯＭ、１４１…データブロック、１５１…制御情報、１５２…データ領域、１５３…ドメイン番号、１５４…制御条件フラグ、１５５…ドメイン内アドレス、１５６…ドメイン種別フラグ、１５７…仮想アドレス運用フラグ、１５８…裏アドレスフラグ、
２００…ドメイン＃０、２１０…ドメイン＃１、２２０…ドメイン＃２、２２１…ドメイン＃２１、２２２…ドメイン＃２２、２３０…ドメイン＃３、２５０…アドレス空間＃０、２７０…アドレス空間＃２、２７１…アドレス空間＃２１、２７２…アドレス空間＃２２。
【図１】
2008310460.tif 000003
【図２】
2008310460.tif 000004
【図３】
2008310460.tif 000005
【図４】
2008310460.tif 000006
【図５】
2008310460.tif 000007
【図６】
2008310460.tif 000008