(57)【要約】【課題】情報を効果的に保護できる半導体装置を提供すること。【解決手段】実施形態の半導体装置１は、プロセッサ１０と、不揮発性半導体記憶装置２２を有し、プロセッサ１０に対する主記憶として機能するメモリ装置２０とを備える。プロセッサ１０は、複数のプログラムＣＤ１、ＣＤ２を実行する際に、プログラムを実行するために必要な情報をプログラム毎にワークセットＷＳ１、ＷＳ２として管理すると共に、各々のワークセットＷＳ１、ＷＳ２に必要な情報と、その情報のメモリ装置２０内におけるアドレスとの関係を保持するテーブルＰＴ１、ＰＴ２を、ワークセットＷＳ１、ＷＳ２毎に作成する。メモリ装置２０に対するアクセスは、ワークセットＷＳ１、ＷＳ２毎に対応するテーブルＰＴ１、ＰＴ２を参照して実行される。【選択図】図１
2012173870.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
不揮発性半導体記憶装置を有し、前記プロセッサに対する主記憶として機能するメモリ装置と
を具備し、前記プロセッサは、複数のプログラムを実行する際に、前記プログラムを実行するために必要な情報を前記プログラム毎にワークセットとして管理すると共に、各々の前記ワークセットに必要な情報と、その情報の前記メモリ装置内におけるアドレスとの関係を保持するテーブルを、前記ワークセット毎に作成し、
前記メモリ装置に対するアクセスは、前記ワークセット毎に対応する前記テーブルを参照して実行される
ことを特徴とする半導体装置。
【請求項２】
前記テーブルはそれぞれ、前記メモリ装置内の情報に対する前記ワークセットの各々のアクセス権を管理する
ことを特徴とする請求項１記載の半導体装置。
【請求項３】
前記ワークセットは、第１ワークセットと第２ワークセットを含み、
前記テーブルを更新することにより、前記第１ワークセットにのみ参照可能であった情報を、前記第２ワークセットにも参照可能とする
ことを特徴とする請求項２記載の半導体装置。
【請求項４】
前記第１、第２ワークセットはそれぞれ、第１、第２プログラムコードを含み、
前記テーブルは、それぞれが前記第１、第２ワークセットに対応づけられた第１、第２テーブルを含み、
前記プロセッサは、前記第１ワークセットが前記第２プログラムコードの実行を必要とする場合、前記第１ワークセットから前記第２ワークセットに制御を移すと共に、使用する前記テーブルを、前記第１テーブルから、前記第２テーブルに切り替える
ことを特徴とする請求項３記載の半導体装置。
【請求項５】
前記メモリ装置は、シングルアドレスシステムで管理される
ことを特徴とする請求項４記載の半導体装置。
【請求項６】
前記プロセッサからの要求に応じて前記メモリ装置にアクセスするメモリ管理装置を更に備え、
前記プロセッサは、前記第１、第２テーブルを作成する作成部と、
前記第１プログラムコードを実行する第１実行部と、
前記第２プログラムコードを実行する第２実行部と、
前記第１ワークセットから前記第２プログラムコードを呼び出す呼び出し部と、
前記呼び出し部からの要求に応答して、前記第１実行部から前記第２実行部へ制御を移す制御部とを備え、
前記メモリ管理装置は、前記制御が前記第１実行部にある場合には前記第１テーブルを参照して前記メモリ装置にアクセスし、前記制御が前記第２実行部にある場合には前記第２テーブルを参照して前記メモリ装置にアクセスする
ことを特徴とする請求項５記載の半導体装置。
【請求項７】
不揮発性半導体記憶装置を含むメモリ装置を主記憶装置として使用する半導体装置のメモリ保護方法であって、
オペレーティングシステムが、第１プログラムを実行するための情報を第１ワークセットとして管理するステップと、
前記第１ワークセットに必要な情報と、その情報の前記メモリ装置内におけるアドレスとの関係を保持する第１テーブルを作成するステップと、
前記第１テーブルを参照しつつ、前記第１プログラムを実行するステップと、
前記第１プログラムが、前記第１ワークセット外の第２プログラムを呼び出すステップと、
オペレーティングシステムが、前記第２プログラムを実行するための情報を第２ワークセットとして管理するステップと、
前記第２ワークセットに必要な情報と、その情報の前記メモリ装置内におけるアドレスとの関係を保持する第２テーブルを作成するステップと、
前記第２テーブルを参照しつつ、前記第２プログラムを実行するステップと
を具備することを特徴とするメモリ保護方法。
【請求項８】
前記第１、第２テーブルはそれぞれ、前記メモリ装置に記憶される情報に対する前記第１、第２ワークセットのアクセス権を管理する
ことを特徴とする請求項７記載のメモリ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体装置及びメモリ保護方法に関する。
【背景技術】
【０００２】
従来、単一レベル記憶（single-level store）と呼ばれる技術が知られている。これは、記憶装置を、主記憶装置と補助記憶装置を区別することなく１つのアドレス空間で管理する、仮想記憶を用いたメモリ管理技術である。
【０００３】
このような単一レベル記憶では、複数のプロセスが実行される際に、一方のプロセスに必要な情報を他方のプロセスから保護するための技術が重要である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】T. Okamoto他著、“A Micro Kernel Architecture for Next Generation Processors”、Proc. of Micro-kernels and Other Kernel Architectures Workshop、USENIX、1992年
【非特許文献２】J. Chase、H. Levy。E. Lazowska、M. Baker-Harvey著、“Opal: A Single Address Space System for 64-Bit Architectures”、Proc. of IEEE Workshop on Workstation Operating Systems、1992年4月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、情報を効果的に保護できる半導体装置及びメモリ保護方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態の半導体装置は、プロセッサと、不揮発性半導体記憶装置を有しプロセッサに対する主記憶として機能するメモリ装置とを備える。プロセッサは、複数のプログラムを実行する際に、プログラムを実行するために必要な情報をプログラム毎にワークセットとして管理すると共に、各々のワークセットに必要な情報と、その情報のメモリ装置内におけるアドレスとの関係を保持するテーブルを、ワークセット毎に作成する。メモリ装置に対するアクセスは、ワークセット毎に対応するテーブルを参照して実行される。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係る半導体装置のブロック図。
【図２】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図３】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図４】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図５】第１実施形態に係る半導体装置の動作を示すフローチャート。
【図６】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図７】第１実施形態に係るページテーブルの概念図。
【図８】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図９】第１実施形態に係るページテーブルの概念図。
【図１０】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図１１】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図１２】第１実施形態に係るページテーブルの概念図。
【図１３】第１実施形態に係るページテーブルの概念図。
【図１４】第１実施形態に係る半導体装置のアドレス空間の概念図。
【図１５】第２実施形態に係る半導体装置のアドレス空間の概念図。
【図１６】第２実施形態に係る半導体装置の動作を示すフローチャート。
【図１７】第２実施形態に係るページテーブルの概念図。
【図１８】第２実施形態に係る半導体装置の動作を示すフローチャート。
【図１９】第３実施形態に係る半導体装置のアドレス空間の概念図。
【図２０】第３実施形態に係るデータ管理方法を示す概念図。
【図２１】第３実施形態に係る半導体装置の動作を示すフローチャート。
【図２２】第４実施形態に係る半導体装置のブロック図。
【図２３】第１乃至第４実施形態に係る半導体装置のブロック図。
【図２４】第１乃至第４実施形態の変形例に係る半導体装置のブロック図。
【図２５】第１乃至第４実施形態の変形例に係る半導体装置のブロック図。
【発明を実施するための形態】
【０００８】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
［第１実施形態］  
第１実施形態に係る半導体装置及びメモリ保護方法について説明する。
【００１０】
１．半導体装置の構成について  
図１は、本実施形態に係る半導体装置のブロック図である。図示するように半導体装置１は、プロセッサ（ＭＣＵ：micro controller unit）１０、メモリ装置２０、及びメモリ管理装置（ＭＭＵ：memory magaging unit）３０、３１を備えている。
【００１１】
ＭＣＵ１０は、メモリ装置２０に保持されるデータを用いて種々の処理を実行する。
【００１２】
メモリ装置２０は、揮発性半導体メモリ（例えば本例ではＤＲＡＭ）２１及び不揮発性半導体メモリ（例えば本例ではＮＡＮＤ型フラッシュメモリ）２２を備える。ＤＲＡＭ２１は、ＮＡＮＤ型フラッシュメモリ２２のキャッシュメモリとして機能する。そしてメモリ装置２０は、オペレーティングシステム（ＯＳ：operating system）やアプリケーション等の各種プログラム及びデータを保持している。ＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２は、単一レベル記憶によって管理される。従って、ＭＣＵ１０から見たとき、メモリ装置２０はＤＲＡＭ２１とＮＡＮＤ型フラッシュメモリ２２の区別は無い。
【００１３】
メモリ管理装置３０、３１は、ＯＳの助けを借りてＭＣＵ１０の要求に応じてメモリ装置２０にアクセスする。そしてメモリ装置２０からデータを読み出し、またメモリ装置２０にデータを書き込む。メモリ管理装置３０は、ＤＲＡＭ２１に対するアクセス制御を担い、メモリ管理装置３１はＮＡＮＤ型フラッシュメモリ２２に対するアクセス制御を担う。すなわち、必要なデータがＮＡＮＤ型フラッシュメモリ２２内からＤＲＡＭ２１にキャッシュされている場合、ＭＣＵ１０はメモリ管理装置３０に対してデータの読み出し及び書き込みを要求する。この際、メモリ管理装置３０は、ＭＣＵ１０から受けた論理アドレスを変換して、ＤＲＡＭ２１に対して必要なデータの読み出し及び書き込みを実行する。他方、必要なデータがＤＲＡＭ２１にキャッシュされていない場合、ＭＣＵ１０はメモリ管理装置３１に対してデータの読み出し及び書き込みを要求する。この際、メモリ管理装置３１は、ＭＣＵ１０から受けた論理アドレスを変換して、ＮＡＮＤ型フラッシュメモリ２２に対して、必要なデータの読み出し及び書き込みを実行する。必要なデータがＤＲＡＭ２１にキャッシュされているか否かは、例えばＯＳが判断出来る。
【００１４】
このようにしてＭＣＵ１０は、メモリ管理装置３０、３１を介して読み出したＯＳを実行し、そしてこのＯＳ上で種々のアプリケーションを実行する。
【００１５】
図２は、ＭＣＵ１０から見たメモリ装置２０のアドレス空間並びにＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２のアドレス空間の概念図である。メモリ装置２０のアドレス空間は、仮想記憶によって一つのアドレス空間としてＭＣＵ１０からは見える。このアドレス空間を、以下、仮想アドレス空間と呼ぶ。また、各アドレス空間は、あるサイズのメモリ領域であるページ単位で管理される。
【００１６】
図２では一例として、メモリ装置２０内のあるファイルＡについて示している。図示するように、ファイルＡは、ＮＡＮＤ型フラッシュメモリ２２内のページＰＮ１及びＰＮ２に格納されていたとする。これらのページＰＮ１及びＰＮ２は、仮想アドレス空間では例えばページＰＧ１〜ＰＧ４に対応づけられている。図示するように、ＮＡＮＤ型フラッシュメモリ２２におけるページの順番は、仮想アドレス空間における順番と異なっていても良い。
【００１７】
ＭＣＵ１０がこのファイルＡを必要とする際、ＮＡＮＤ型フラッシュメモリのページＰＮ１及びＰＮ２のデータは、キャッシュメモリとして機能するＤＲＡＭ２１に読み出される。本例では、ページＰＮ１のデータは、ＤＲＡＭ２１のページＰＤ１及びＰＤ３に格納され、ページＰＮ２のデータは、ＤＲＡＭ２１のページＰＤ２及びＰＤ４に格納される。そして、ＤＲＡＭ２１のページＰＤ１〜ＰＤ４はそれぞれ、仮想アドレス空間のページＰＧ１、ＰＧ３、ＰＧ２、及びＰＧ４に対応づけられている。
【００１８】
このように、ＮＡＮＤ型フラッシュメモリ２２内のデータがＤＲＡＭ２１にキャッシュされている場合には、ＮＡＮＤ型フラッシュメモリ２２上のデータとＤＲＡＭ２１上のデータとが、仮想アドレスの一部を共有するようにして、同じ仮想アドレス空間に配置される。
【００１９】
一般的には、ＮＡＮＤ型フラッシュメモリ２２のサイズはＤＲＡＭ２１のサイズよりも大きい。従って、ＮＡＮＤ型フラッシュメモリ２２における一部のデータのみがＤＲＡＭ２１にキャッシュされる。しかし、図２では図示を省略しているが、ＤＲＡＭ２１にキャッシュされていないＮＡＮＤ型フラッシュメモリ２２のページＰＮも、仮想アドレス空間におけるいずれかのページＰＧに対応づけられている。
【００２０】
そして、ＭＣＵ１０から仮想アドレス空間のページＰＧ１〜ＰＧ４に対して読み出しアクセスがなされると、ＤＲＡＭ２１からファイルＡがメモリ管理装置３０によって読み出される。
【００２１】
すなわち、ＭＣＵ１０とＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリとの間は、メモリ管理装置３０、３１によってアクセスを制御され、ＭＣＵ１０は仮想アドレスさえ知っていれば良い。この際、メモリ管理装置３０、３１は、前述の通り仮想アドレス空間をあるページ単位で管理する。そしてこの管理のためにメモリ管理装置３０、３１は、仮想アドレス空間のページと、ＤＲＡＭ２１の物理アドレスとＮＡＮＤ型フラッシュメモリ２２の物理アドレス（ページＰＮの物理アドレス）との対応関係を有するテーブルであるページテーブルＰＴを用いる。またページテーブルＰＴは、仮想アドレス空間の各ページへのアクセス制限に関する情報を有している。これによってメモリ管理装置３０、３１は、ＭＣＵ１０からのメモリ装置２０へのアクセスを許可または禁止する。ページテーブルＰＴは、例えばＮＡＮＤ型フラッシュメモリ２２内に記憶されており、メモリ管理装置３０、３１がそれを使うために、例えばその一部がＤＲＡＭ２１にキャッシュされている。または、ページテーブルＰＴの一部は、メモリ管理装置３０、３１内の例えばレジスタ等の記憶装置に更にキャッシュされていても良い。
【００２２】
図３は、仮想アドレス空間と、ＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２のアドレス空間との関係を示す別の概念図である。
【００２３】
ＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２の各ページは、図示するように仮想アドレス空間に対応づけられている。ここで、仮想アドレス空間のページＰＧ２は、ＮＡＮＤ型フラッシュメモリ２２のあるページＰＮが対応づけられているが、それがどのページＰＮであるのかまだ定まっていない状態もあり得る。ＭＣＵ１０がこのデータを必要としたとき、メモリ管理装置３０、３１は両者の対応関係を認識する。
【００２４】
別の例を図４に示す。図４では、各アドレス空間をページ単位ではなく、あるひとまとまりのデータ（図中では「領域」と示している）単位で示している。このようにデータ単位で見た場合には、これらのデータの仮想アドレスは連続していない場合があり得る。
【００２５】
２．半導体装置１の動作について  
次に、上記構成の半導体装置１の動作について、図５を用いて説明する。図５は、ＭＣＵ１０があるプログラムコードＣＤ１を実行し、その実行の過程において別のプログラムコードＣＤ２を実行する場合の半導体装置１の動作の流れを示すフローチャートである。
【００２６】
＜ＯＳの処理＞  
まずはＯＳにより処理が行われる。言うまでもなく、ＯＳによる処理は、実際にはＭＣＵ１０において実行される。図５に示すように、ＭＣＵ１０上で実行されているＯＳは、コードＣＤ１を実行するため、ワークセットＷＳ１を作成する（ステップＳ１０）。ワークセットとは、あるプログラムが動作する上で必要な全ての情報やメモリ領域の組（集合体）である。例えば、あるデータを使って演算を行うコードを実行するケースを考えれば、ワークセットには、コードそれ自体、演算に必要なデータ、及び演算結果を格納するメモリ空間が含まれる。
【００２７】
更にＯＳは、ワークセットＷＳ１のページテーブルＰＴ１を作成する（ステップＳ１１）。そしてこのページテーブルＰＴ１をＮＡＮＤ型フラッシュメモリ２２に保持させ、更にＤＲＡＭ２１及びメモリ管理装置３０に保持させる。前述の通り、ページテーブルは、図２に示した仮想アドレス空間とＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２の物理アドレスとの関係を示すテーブルである。
【００２８】
ワークセットＷＳ１及びページテーブルＰＴ１を作成すると、ＯＳはワークセットＷＳ１に制御を移す（ステップＳ１２）。
【００２９】
＜ワークセットＷＳ１の処理＞  
ステップＳ１２の後、処理はワークセットＷＳ１に移る。ワークセットＷＳ１はプログラムコードＣＤ１を実行し、処理を行う（ステップＳ１３）。この処理も実際にはＭＣＵ１０で行われる。ワークセットＷＳ１が処理を行うにあたり、必要な情報へのアクセスは、メモリ管理装置３０がページテーブルＰＴ１を参照することによって行われる。ここで、ワークセットＷＳ１において、ワークセットＷＳ１内には無い（つまりページテーブルＰＴ１に無い）プログラムコードＣＤ２の実行が必要になったとする（ステップＳ１４、ＹＥＳ）。するとワークセットＷＳ１は、外部呼び出し命令を実行する。
【００３０】
より具体的には、ワークセットＷＳ１は、コードＣＤ２の実行に必要なデータＤ１のアドレスをセットして（ステップＳ１５）、割り込み処理を実行する（ステップＳ１６）。すなわちワークセットＷＳ１は、コードＣＤ２の存在自体は把握しているが、それがどこにあるのかまでは把握していない。よって、コードＣＤ２の実行をＯＳに依頼する。
【００３１】
＜ＯＳの処理＞  
ステップＳ１６の割り込み処理によって、処理はＯＳに移る。ＯＳは、コードＣＤ２を実行するためのワークセットＷＳ２を作成する（ステップＳ１７）。引き続きＯＳは、ワークセットＷＳ２のページテーブルＰＴ２を作成し（ステップＳ１８）、これをＮＡＮＤ型フラッシュメモリ２２に保持させ、更にＤＲＡＭ２１及びメモリ管理装置３０に保持させる。
【００３２】
ワークセットＷＳ２及びページテーブルＰＴ２を作成すると、ＯＳはワークセットＷＳ２に制御を移す（ステップＳ１９）。
【００３３】
＜ワークセットＷＳ２の処理＞  
ステップＳ１９の後、処理はワークセットＷＳ２に移る。すなわち、ワークセットＷＳ２はプログラムコードＣＤ２を実行し、データＤ１を使って処理を行う（ステップＳ２０）。この処理も実際にはＭＣＵ１０で行われる。ワークセットＷＳ２が処理を行うにあたり、必要な情報へのアクセスは、メモリ管理装置３０、３１がページテーブルＰＴ１ではなくページテーブルＰＴ２を参照することによって行われる。ワークセットＷＳ２において、例えば演算結果を格納する等の目的で新たなメモリ領域が必要な場合（ステップＳ２１、ＹＥＳ）、ワークセットＷＳ２は新たなメモリ領域Ａ１を確保する（ステップＳ２２）と共に、確保した領域Ａ１の物理アドレスをページテーブルＰＴ２にセットする（ステップＳ２３）。これによりワークセットＷＳ２は、領域Ａ１を新たに使用することが出来る。
【００３４】
その後、処理が終わると、ワークセットＷＳ２は処理結果をメモリ領域Ａ１に格納する（ステップＳ２４）。格納する領域は、メモリ領域Ａ１ではなく、可能であればデータＤ１が格納されている領域であってもよい。
【００３５】
そしてワークセットＷＳ２は、ワークセットＷＳ１に処理を戻すために、割り込み処理を実行する（ステップＳ２５）。
【００３６】
＜ＯＳの処理＞  
ステップＳ２５の割り込み処理によって、処理はＯＳに移される。ＯＳは、ワークセットＷＳ１のページテーブルＰＴ１に、ステップＳ２２で確保されたメモリ領域Ａ１の物理アドレスをセットする（ステップＳ２６）。そしてＯＳは、ワークセットＷＳ１に制御を移す（ステップＳ２７）。
【００３７】
＜ワークセットＷＳ１の処理＞  
ステップＳ２７により、制御はワークセットＷＳ１に戻る。すなわち、外部呼び出し命令が終了する。そしてワークセットＷＳ１は、再びページテーブルＰＴ１を使用して処理を再開する（ステップＳ２８）。この時点で、ページテーブルＰＴ１はステップＳ２６で既に更新されている。従ってワークセットＷＳ１は、ステップＳ２４で格納されたワークセットＷＳ２での処理結果を用いて処理を実行することが出来る（ステップＳ２８）。
【００３８】
３．半導体装置１の動作の具体例について  
上記図５を用いて説明した動作を、仮想アドレス空間及びページテーブルＰＴの変化を参照しながら具体的に説明する。
【００３９】
図６は、メモリ装置２０の仮想アドレス空間と、ワークセットＷＳ１、ＷＳ２の概念図である。図示するように、仮想アドレスＡＤＤ０から始まるページＰＧ０〜ＰＧ２にコードＣＤ１が格納され、仮想アドレスＡＤＤ１から始まるページＰＧ１０〜ＰＧ１２にコードＣＤ２が格納され、仮想アドレスＡＤＤ３から始まるページＰＧ３０〜ＰＧ４０にデータＤ１が格納され、仮想アドレスＡＤＤ４から始まるページＰＧ５０〜ＰＧ５５にＯＳが格納されている場合を仮定する。
【００４０】
＜ステップＳ１０〜Ｓ１６＞  
まず、図５のステップＳ１０〜Ｓ１６について説明する。図７は、ステップＳ１１で作成されたページテーブルＰＴ１の概念図である。
【００４１】
図示するように、ページテーブルＰＴ１は複数のエントリを有し、仮想アドレス空間の各ページが、ページテーブルＰＴ１の各エントリに対応づけられている。図７では、各エントリの横に“ＰＧ”なる記載があるが、これは当該エントリに対応するページを参考までに記載したものである。そして、各エントリに、対応する仮想アドレス空間の物理アドレスが格納される。また各エントリには、書き込みフラグＷ及び有効フラグＶが設けられている。
【００４２】
フラグＶは、当該エントリに対応するページが有効であるか無効であるか否かを示す情報であり、Ｖ＝１で有効、Ｖ＝０で無効とされる。ワークセットＷＳ１は、無効とされたページを参照することはできない。またフラグＷは、当該エントリに対応するページに対する書き込み（データの上書き）が許可されているか否かを示す情報であり、Ｗ＝１で許可、Ｗ＝０で禁止される。従ってワークセットＷＳ１は、Ｖ＝１、Ｗ＝１のエントリに対応するページに対しては、読み出し及び書き込みの両方が可能である。他方、Ｖ＝１、Ｗ＝０のエントリに対応するページに対しては、読み出しは可能であるが、書き込みは禁止される。Ｖ＝０のエントリに対応するページは、読み出しも書き込みも禁止され、そもそもワークセットＷＳ１はそのページの存在を認識出来ない。
【００４３】
以上のページテーブルの基本的な構成は、ページテーブルＰＴ２に関しても同様である。
【００４４】
ワークセットＷＳ１は、コードＣＤ１とデータＤ１との組である。従ってページテーブルＰＴ１は、図７のようになる。すなわち、ページＰＧ０〜ＰＧ２に対応するエントリには、コードＣＤ１の物理アドレスが格納され、フラグＶ＝１とされる。コードＣＤ１が書き換え禁止であれば、フラグＷ＝０とされる。更に、ページＰＧ３０〜ＰＧ４０に対応するエントリには、データＤ１の物理アドレスが格納され、フラグＶ＝１、フラグＷ＝１とされる。従ってワークセットＷＳ１は、データＤ１の上書きが可能である。また、ページＰＧ１０〜ＰＧ１２（コードＣＤ２）に対応するエントリには、物理アドレスは格納されず、フラグＶ＝０、Ｗ＝０とされる。その他の、ワークセットＷＳ１には含まれない情報に対応するエントリにも物理アドレスはセットされず、Ｖ＝０、Ｗ＝０とされる。なお、図示を省略したが、ページテーブルＰＴ１にはＯＳの物理アドレスもセットされ、このエントリについてはＶ＝１、Ｗ＝０とされる。
【００４５】
以上の結果、ワークセットＷＳ１は、実際には図６の通りである仮想アドレス空間を、図８に示すように認識する。図８は、ワークセットＷＳ１から見た仮想アドレス空間の概念図である。
【００４６】
図示するように、ワークセットＷＳ１は、コードＣＤ１、データＤ１、及びＯＳがあることを認識出来る。しかし、ワークセットＷＳ１からはコードＣＤ２は見えず、ワークセットＷＳ１はコードＣＤ２にアクセスすることはできない。なぜなら、ページテーブルＰＴ１にはコードＣＤ２の物理アドレスは格納されておらず、しかもフラグＶ＝０とされているからである。
【００４７】
ステップＳ１３〜Ｓ１５では、ワークセットＷＳ１は図７のページテーブルＰＴ１を参照して処理を実行する。言い換えれば、メモリ管理装置３０、３１は、図７のページテーブルＰＴ１に基づいて、メモリ装置２０へアクセスする。ステップＳ１５でセットされるアドレスは、ページテーブルＰＴ１においてページＰＧ３０〜ＰＧ４０に対応するエントリに格納された物理アドレスである。
【００４８】
＜ステップＳ１７〜Ｓ２０＞  
次に、図５のステップＳ１７〜Ｓ２０について説明する。図９は、ステップＳ１８で作成されたページテーブルＰＴ２の概念図である。
【００４９】
ワークセットＷＳ２は、コードＣＤ２とデータＤ１との組である。従ってページテーブルＰＴ２は、図９のようになる。すなわち、ページＰＧ１０〜ＰＧ１２に対応するエントリには、コードＣＤ２の物理アドレスが格納され、フラグＶ＝１とされる。コードＣＤ２が書き換え禁止であれば、フラグＷ＝０とされる。更に、ページＰＧ３０〜ＰＧ４０に対応するエントリには、データＤ１の物理アドレスが格納され、フラグＶ＝１、フラグＷ＝１とされる。従ってワークセットＷＳ２は、データＤ１の上書きが可能である。また、ページＰＧ０〜ＰＧ２に対応するエントリには、物理アドレスは格納されず、フラグＶ＝０、Ｗ＝０とされる。その他の、ワークセットＷＳ２には含まれない領域に対応するエントリにも物理アドレスはセットされず、Ｖ＝０、Ｗ＝０とされる。なお、図示を省略したが、ページテーブルＰＴ１と同様に、ページテーブルＰＴ２にはＯＳの物理アドレスもセットされ、このエントリについてはＶ＝１、Ｗ＝０とされる。
【００５０】
以上の結果、ワークセットＷＳ２は、実際には図６の通りである仮想アドレス空間を、図１０に示すように認識する。図１０は、ワークセットＷＳ２から見た仮想アドレス空間の概念図である。
【００５１】
図示するようにワークセットＷＳ２は、コードＣＤ２、データＤ１、及びＯＳがあることを認識出来る。しかし、ワークセットＷＳ２からコードＣＤ１は見えず、ワークセットＷＳ２はコードＣＤ１にアクセスすることはできない。なぜなら、ページテーブルＰＴ２にはコードＣＤ１の物理アドレスは格納されておらず、しかもフラグＶ＝０とされているからである。
【００５２】
ステップＳ２０では、ワークセットＷＳ２は図９のページテーブルＰＴ２を参照して処理を実行する。言い換えれば、メモリ管理装置３０、３１は、図９のページテーブルＰＴ２に基づいて、メモリ装置２０へアクセスする。
【００５３】
＜ステップＳ２１〜Ｓ２４＞  
次に、ステップＳ２１で新たなメモリ領域が必要であると判断された後のステップＳ２２〜Ｓ２３の処理について、図１１及び図１２を用いて説明する。図１１は、ワークセットＷＳ２から見た仮想アドレス空間の概念図であり、図１２はステップＳ２３で更新されたページテーブルＰＴ２の概念図である。
【００５４】
図１１に示すようにワークセットＷＳ２は、仮想アドレスＡＤＤ２から始まるページＰＧ２０〜ＰＧ２２を確保したとする。するとワークセットＷＳ２は、ページテーブルＰＴ２を図１２のように更新する。すなわち、ページＰＧ２０〜ＰＧ２２に対応するエントリに、領域Ａ１の物理アドレスを格納し、そしてフラグＶ＝１、Ｗ＝１とする。これによりワークセットＷＳ２は、領域Ａ１を自由に使用することが可能となる。言い換えれば、メモリ管理装置３０、３１は、ページＰＧ２０〜ＰＧ２２にデータを格納することが出来、またデータを読み出すことが出来るようになる。
【００５５】
なお、現時点では領域Ａ１はページテーブルＰＴ１には登録されていないので、領域Ａ１はワークセットＷＳ１からは見えない。
【００５６】
＜ステップＳ２５〜Ｓ２８＞  
次に、ステップＳ２５〜Ｓ２８について説明する。ステップＳ２５の割り込み処理によって制御がＯＳに移行すると、ＯＳはページテーブルＰＴ１を図１３のように更新する。図１３はページテーブルＰＴ１の概念図である。
【００５７】
図示するようにＯＳは、ページテーブルＰＴ１のページＰＧ２０〜ＰＧ２２に対応するエントリに、領域Ａ１の物理アドレスを格納し、そしてフラグＶ＝１、Ｗ＝１（または０）とする。これによりワークセットＷＳ１も、領域Ａ１を自由に使用することが可能となる。
【００５８】
すなわち、ページテーブルＰＴ１が図１３に更新された後に、ワークセットＷＳ１から見える仮想アドレス空間は、図１４のようになる。図示するように、ワークセットＷＳ１も、領域Ａ１にアクセスすることが可能となる。よってワークセットＷＳ１は、データＤ１だけでなく、領域Ａ１も利用して処理を継続する（ステップＳ２８）。
【００５９】
４．本実施形態に係る効果  
以上のように、本実施形態に係る構成であると、情報を効果的に保護できる。本効果につき、以下説明する。
【００６０】
従来の単一レベル記憶技術において、複数のプロセスが実行される場合、一方のプロセス（プロセスＰＣ１）によって、他方のプロセス（ＰＣ２）の情報が破壊されるおそれがある。これは、複数のプロセスＰＣ１、ＰＣ２につき統一した論理アドレスでアドレス空間を管理するため、プロセスＰＣ２に必要な情報が、プロセスＰＣ１から見えてしまうからである。
【００６１】
そこで、プロセス毎に論理アドレスを割り当てる方法が知られている。この場合、プロセスＰＣ１からは、プロセスＰＣ２のアドレス空間は見えない。逆も同様である。プロセスＰＣ１、ＰＣ２の両方から見えるのはＯＳだけである。従って、互いに情報が破壊されることを防止できる。しかし、この場合には、共通にデータを参照したい場合に処理が煩雑になる。すなわち、プロセスＰＣ１の有するデータをプロセスＰＣ２に渡したい場合、そのままでは当該データはプロセスＰＣ２からは見えない。従って、プロセスＰＣ１は、当該データをＯＳへコピーする。次にＯＳは、当該データをプロセスＰＣ２へコピーする。これによりプロセスＰＣ２が当該データを参照できるようになるが、２回のデータコピーが必要になる。
【００６２】
このように、統一された論理アドレスでアドレス空間を管理しようとすれば、データの保護が困難となり、データを保護しようとすれば、プロセス毎にアドレス空間を切り替えなければならない。
【００６３】
しかし本実施形態に係る構成であると、上記問題点を解決出来る。より具体的には、アドレス空間を切り替えないシングルアドレスシステム（同じ内容はいつも同じアドレスで見え、他の内容はいつも異なるアドレスで見える）を採用しつつ、データを効果的に保護出来る。
【００６４】
すなわち本実施形態では、ＯＳは仮想メモリをページ単位で管理し、且つページのひとかたまりをワークセットＷＳとして管理する。更にＯＳは、ワークセットＷＳ毎にアクセス権を管理する。具体的には、ワークセットＷＳ毎にページテーブルＰＴを用意し、これによってアクセス権を管理する。
【００６５】
これによりワークセットＷＳは、相互に論理アドレス（仮想アドレス）を使って情報を参照出来る。そして制御が別のワークセットＷＳに移る際には、ＯＳは、ワークセットＰＴも切り替える。この際ＯＳは、ワークセットＰＴを更新することで、、新たな情報の参照を許可することが出来る。
【００６６】
具体的な例を挙げれば、上記実施形態において、ワークセットＷＳ１は図７のページテーブルＰＴ１を有し、ワークセットＷＳ２は図９のページテーブルを有している状況を考える。すると、フラグＶによって、ワークセットＷＳ１はコードＣＤ２を見ることが出来ない。よって、コードＣＤ２がワークセットＷＳ１によって破壊されることを防ぐことが出来る。逆もまた同様である。すなわち、ワークセットＷＳ２はコードＣＤ１を見ることが出来ない。よって、コードＣＤ１がワークセットＷＳ２によって破壊されることを防ぐことが出来る。
【００６７】
他方で、ページテーブルＰＴ１、ＰＴ２においてデータＤ１に関するエントリのフラグＶは“１”に設定されている。従って、ワークセットＷＳ１、ＷＳ２でのデータコピーを必要とすることなく、両者はデータＤ１を参照することが出来る。
【００６８】
また、図１１乃至図１４で説明したように、ページテーブルＰＴは適宜更新出来る。つまり、処理の最中に、ワークセットＷＳ２で作成した新たなデータ（例えば図１１の領域Ａ１）をワークセットＷＳ１でも使用させたい場合には、図１３のようにページテーブルＰＴ１を更新する。つまり、ページテーブルＰＴ１において領域Ａ１に相当する領域のフラグＶを“１”とする。これによって、ワークセットＷＳ２だけでなくワークセットＷＳ１も領域Ａ１へアクセス出来る。
【００６９】
このように、重要な情報が破壊されることを防止しつつ、ワークセットＷＳ間で相互に、簡便にデータをやりとりすることが出来る。
【００７０】
［第２実施形態］  
次に、第２実施形態に係る半導体装置及びメモリ保護方法について説明する。本実施形態は、上記第１実施形態において、ワークセットに対して新たなデータの参照及び追加を可能とするための方法に関する。その他の構成及び動作は第１実施形態と同様であるので、その説明は省略する。
【００７１】
１．データの参照について  
まず、新たなデータの参照方法について説明する。図１５は、ワークセットＷＳ１から見た仮想アドレス空間の概念図である。
【００７２】
図示するように、第１実施形態で説明した通りワークセットＷＳ１はコードＣＤ１とデータＤ１との集合である。またメモリ装置２０では、ワークセットＷＳ１に含まれないデータＤ３が、仮想アドレスＡＤＤ５から始まるページＰＧ４５〜ＰＧ４７に格納されていたと仮定する。そして、このような状況でワークセットＷＳ１がデータＤ３を必要とするようなケースを考える。
【００７３】
図１６は、上記のケースにおける半導体装置１の動作の流れを示すフローチャートである。図示するように、データＤ３を必要とするワークセットＷＳ１（言い換えればメモリ管理装置３０、３１）は、その存在は認識しているが、場所もサイズも把握していないため、データＤ３の参照をＯＳに対して要求する（ステップＳ３０）。
【００７４】
すると、この要求に応答してＯＳは、ワークセットＷＳ１のユーザ（またはワークセットＷＳ１それ自体）のアクセス権限を確認する（ステップＳ３１）。書き込み及び読み出しのいずれの権限も有していない場合（ステップＳ３２、ＮＯ）、ＯＳはデータＤ３の参照を禁止する（ステップＳ３３）。すなわち、ページテーブルＰＴ１は更新されない。
【００７５】
読み出し権限があって書き込み権限が無い場合（ステップＳ３２でＹＥＳ、ステップＳ３４でＮＯ）、ＯＳはページテーブルＰＴ１を更新する。すなわち、ページＰＧ４５〜ＰＧ４７に対応するエントリに、データＤ３の物理アドレスをセットすると共に、フラグＶ＝１、Ｗ＝０とする（ステップＳ３５）。これによりワークセットＷＳ１は、データＤ３の読み出しのみ許可される。
【００７６】
他方、読み出し権限と書き込み権限との両方がある場合（ステップＳ３２でＹＥＳ、ステップＳ３４でＹＥＳ）、ＯＳはページテーブルＰＴ１を更新する。この場合ＯＳは、ページＰＧ４５〜ＰＧ４７に対応するエントリに、データＤ３の物理アドレスをセットすると共に、フラグＶ＝１、Ｗ＝１とする（ステップＳ３６）。これによりワークセットＷＳ１は、データＤ３につき読み出しだけでなく、書き込みも許可される。
【００７７】
ステップＳ３５、Ｓ３６で更新されるページテーブルＰＴ１の様子を図１７に示す。図１７はページテーブルＰＴ１の概念図である。図示するように、何らかの権限がある場合には、ページテーブルＰＴ１にデータＤ３の物理アドレスが割り当てられる。書き込みフラグＷの値は、そのユーザの有する権限に依存する。
【００７８】
その後、ＯＳはワークセットＷＳ１に制御を戻し（ステップＳ３７）、ワークセットＷＳ１が処理を再開する（ステップＳ３８）。
【００７９】
２．データの追加について  
次に、新たなデータの追加方法について説明する。例えば図１６の状況において、ワークセットＷＳ１が、メモリ装置２０に保持されていない新たなデータＤ４を必要とするケースを考える。
【００８０】
図１８は、半導体装置１の動作の流れを示すフローチャートである。図示するように、データＤ４を必要とするワークセットＷＳ１は、データＤ４の作成をＯＳに対して要求する（ステップＳ４０）。
【００８１】
すると、この要求に応答してＯＳは、データＤ４を作成する（ステップＳ４１）。そして、このデータＤ４の属性情報に権限を設定する（ステップＳ４２）。
【００８２】
当該ユーザ（またはワークセットＷＳ１それ自体）に書き込み権限を付与しない場合（ステップＳ４３、ＮＯ）、ＯＳは、ページテーブルＰＴ１を更新して、対応するエントリにデータＤ４の物理アドレスをセットすると共に、フラグＶ＝１、Ｗ＝０とする（ステップＳ４４）。これによりワークセットＷＳ１は、データＤ４につき読み出しのみ許可される。
【００８３】
他方、読み出し権限と書き込み権限との両方がある場合（ステップＳ４３、ＹＥＳ）、ＯＳはフラグＶ＝１、Ｗ＝１とする（ステップＳ４５）。これによりワークセットＷＳ１は、データＤ４につき読み出しだけでなく書き込みも許可される。
【００８４】
その後、ＯＳはワークセットＷＳ１に制御を戻し（ステップＳ４６）、ワークセットＷＳ１が処理を再開する（ステップＳ４７）。
【００８５】
３．データ領域の拡張について  
例えば、図１２において新たに確保した領域Ａ１の空きが足りなくなり、これを拡張する必要が生じた場合を考える。
【００８６】
この場合、ワークセットＷＳ１、ＷＳ２は、ページ単位で領域Ａ１を拡張出来る。ページの拡張は、ページテーブルにおいて対応するエントリに物理アドレスを割り当てると共に、フラグＶ＝１、Ｗ＝１とすることで実行出来る。もちろん、書き込みを禁止する場合にはＷ＝０とすればよい。
【００８７】
４．本実施形態に係る効果
本実施形態に係る構成によれば、ワークセットに対してデータを新たに参照させたい場合や、または新規なデータを作成してこれを参照させたい場合、ＯＳがこれを解決する。具体的には、対象となるワークセットＷＳのページテーブルＰＴを更新することで、ワークセットに対して新たなデータを参照させることが出来る。
【００８８】
従って、各ワークセットＷＳに対して容易にデータを提供出来ると共に、簡便な手法によってアクセス権を制御出来る。
【００８９】
［第３実施形態］  
次に、第３実施形態に係る半導体装置及びメモリ保護方法について説明する。本実施形態は、上記第１または第２実施形態において、メモリ装置２０内の情報を、ＦＡＴ（file allocation table）ファイルシステムのようにファイル及びディレクトリを使って管理するものである。その他の構成及び動作は同様であるので、その説明は省略する。
【００９０】
１．ディレクトリ構造による管理  
図１９は、本実施形態に係るメモリ装置２０の仮想アドレス空間の概念図である。図示するように、ページＰＧ０〜ＰＧ２にコードＣＤ１が格納され、ページＰＧ１０〜ＰＧ１２にコードＣＤ２が格納され、ページＰＧ３０〜ＰＧ４０にデータＤ１が格納されていると仮定する。
【００９１】
この場合、ＭＣＵ１０は、コードＣＤ１をファイルＡＡＡとして管理し、コードＣＤ２をファイルＢＢＢとして管理し、データＤ１を２つのファイルＣＣＣ及びＤＤＤとして管理する。更にＭＣＵ１０は、これらのファイルを図２０に示すツリー構造で管理する。
【００９２】
図示するように、ファイルＡＡＡ及びＢＢＢはルートディレクトリＸＸＸＸの下に配置される。ファイルＣＣＣ及びＤＤＤは、ルートディレクトリＸＸＸＸの下のサブディレクトリＹＹＹＹの下に配置される。サブディレクトリＹＹＹＹの下にはサブディレクトリＺＺＺＺも含まれているものとする。
【００９３】
従ってＭＣＵ１０は、図１９に示すように、ディレクトリＸＸＸＸ、ＹＹＹＹ、及びＺＺＺＺ用の領域を仮想アドレス空間に確保する。各領域には、当該ディレクトリ内にどのようなファイル及び／またはサブディレクトリが存在するかの情報が格納される。更にディレクトリは、当該ディレクトリ内にあるファイル及び／またはサブディレクトリのファイル情報を保持する。
【００９４】
ファイル情報は、図２０に示すように、各ファイルについての仮想アドレス、サイズ、アクセルコントロール情報（ユーザ及び／またはワークセット毎に、読み出し、書き込み、及び消去を許可するか否かの情報）、及び作成時刻などを含んでいる。
【００９５】
２．ファイル及びディレクトリへのアクセス方法  
ＭＣＵ１０は、ファイル単位及びディレクトリ単位で、ユーザからのアクセスを受け付け、またファイル単位及びディレクトリ単位でメモリ管理装置３０、３１に対してアクセスを要求する。このファイル及びディレクトリ単位でのアクセス方法について、図２１を用いて説明する。図２１は、メモリ装置２０へのアクセス方法を示すフローチャートである。
【００９６】
図示するように、ユーザからファイル名またはディレクトリ名でアクセスを受け付ける（ステップＳ５０）。例えばファイルＡＡＡＡに対してアクセスがあったとする。するとＭＣＵ１０は、ルートディレクトリＸＸＸＸ内からファイル情報を読み出すようメモリ管理装置３０または３１に命令する。そして読み出したファイル情報を参照する（ステップＳ５１）。
【００９７】
ファイル情報を参照した結果、当該ユーザにアクセス権限が無ければ（ステップＳ５２、ＮＯ）、処理は中止される。他方、アクセス権限があれば（ステップＳ５２、ＹＥＳ）、ステップＳ５１においてファイル情報から得た仮想アドレスとサイズ情報に基づき、ＭＣＵ１０はページアドレスＰＧ０〜ＰＧ２をメモリ管理装置３０または３１に渡し、メモリ管理装置３０または３１はこのページアドレスＰＧ０〜ＰＧ２に基づいてページテーブルＰＴを検索する（ステップＳ５３）。
【００９８】
メモリ管理装置３０または３１は、ステップＳ５３の検索によりファイルＡＡＡの物理アドレスを得て（ステップＳ５４）、メモリ装置２０からファイルＡＡＡを読み出す（ステップＳ５５）。
【００９９】
３．本実施形態に係る効果  
本実施形態によれば、主記憶装置と補助記憶装置とを区別せずにメインメモリとして使用する構成であっても、ユーザに対して情報をファイル及び／ディレクトリとして認識させることが出来る。
【０１００】
つまり、単一レベル記憶でありながら、ユーザは、従来の主記憶装置と補助記憶装置とを区別するシステムと同じように情報を扱うことが出来る。従って、ユーザの利便性を向上出来る。
【０１０１】
なお、本実施形態ではファイル情報（言い換えればプロパティ）をディレクトリに格納している。しかし、場合によっては、各ファイル情報は各ファイルの中（例えば、当該ファイルを格納する領域の先頭領域委）に配置しても良い。しかしながら、セキュリティの観点からは、ディレクトリ内に配置することが好ましい。
【０１０２】
［第４実施形態］  
次に、第４実施形態に係る半導体装置について説明する。本実施形態は、上記第１乃至第３実施形態に係る半導体装置１の具体例である。
【０１０３】
図２２に示すように半導体装置１は、大まかには情報処理装置１１０及び記憶装置１２０を備えており、両者は例えばバス等により互いに通信可能に接続されている。情報処理装置１１０及び記憶装置１２０は、共に同一の半導体基板上に形成されても良いし、別個のチップとして形成されても良い。また記憶装置１２０は複数の半導体メモリを備え、本実施形態では揮発性半導体メモリ１２１及び不揮発性半導体メモリ１２２を含む。
【０１０４】
まず、情報処理装置１１０の構成について説明する。図示するように情報処理装置１１０は、複数のプロセッサ１１１、２次キャッシュメモリ１１２、バス１１３、及びメモリ管理装置１１４を備え、例えばＳｏＣ（system on chip）により形成される。
【０１０５】
プロセッサ１１１の各々は、１次キャッシュメモリ１１６及びＭＭＵ（memory management unit）１１５を備える。プロセッサ１１１としては、例えばＣＰＵ（Central Processing Unit）が用いられるが、ＭＰＵ（Micro Processor Unit）、ＧＰＵ（Graphic Processor Unit）などのような他の処理ユニットが用いられてもよい。また図２２においてプロセッサ１１１の数は４つであるが、１つ以上であればよい。またプロセッサ１１１は、２次キャッシュメモリ１１２を共有し、バス１１３を介してメモリ管理装置１１４と電気的に接続される。そして、メモリ管理装置１１４を介して記憶装置１２０にアクセスする。更にプロセッサ１１１は、記憶装置１２０からＯＳを読み出しこれを実行し、更に記憶装置１２０等からアプリケーションを読み出し、これをＯＳ上で実行する。
【０１０６】
メモリ管理装置１１４は、記憶装置１２０内の揮発性半導体メモリ１２１及び不揮発性半導体メモリ１２２と電気的に接続されている。そしてメモリ管理装置１１４は、プロセッサ１１１の要求に応じて記憶装置１２０へアクセスし、データを記憶装置１２０から読み出し、またはデータを記憶装置１２０へ書き込む。またメモリ管理装置１１４は、プロセッサ１１１と非同期に動作可能であり、プロセッサ１１１での処理実行中に、不揮発性半導体メモリに対してウェアレベリング（wear leveling）、ガーベージコレクション（garbage collection）、及びコンパクション（compaction）などの処理を実行出来る。
【０１０７】
次に、引き続き図２２を参照して、記憶装置１２０の構成について説明する。前述の通り、記憶装置１２０は、揮発性半導体メモリ１２１及び複数の不揮発性半導体メモリ１２２を備えている。
【０１０８】
これらの揮発性半導体メモリ１２１及び不揮発性半導体メモリ１２２は、プロセッサ１１１のメインメモリとして使用される。本実施形態では、不揮発性半導体メモリ１２２に十分なメモリ量が確保され、不揮発性半導体メモリ１２２のメモリ容量は揮発性半導体メモリ１２１よりも大きい。そして、揮発性半導体メモリ１２１には、例えば、最近アクセスされたデータ、使用頻度の高いデータなどのアクセスされる可能性の高いデータが不揮発性半導体メモリ１２２からキャッシュされる。プロセッサ１１１が揮発性半導体メモリ１２１にアクセスした際に、揮発性半導体メモリ１２１にアクセス対象データが存在しない場合、不揮発性半導体メモリ１２２から揮発性半導体メモリ１２１に、必要なデータが転送される。このように、揮発性半導体メモリ１２１と不揮発性半導体メモリ１２２とを組み合わせて使用することで、揮発性半導体メモリ１２１のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【０１０９】
本実施形態において揮発性半導体メモリ１２１は例えばＤＲＡＭ（Dynamic Random Access Memory）である。しかしながら揮発性半導体メモリ１２１としては、ＤＲＡＭに代えて、ＦＰＭ−ＤＲＡＭ（Fast Page Mode DRAM）、ＥＤＯ−ＤＲＡＭ（Extended Data Out DRAM）、またはＳＤＲＡＭ（Synchronous DRAM）などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いてもよい。また、ＤＲＡＭ程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ１２１に代えて、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性ランダムアクセスメモリが用いられてもよい。そして揮発性半導体メモリ１２１は、不揮発性半導体メモリ１２２よりも小容量（例えば１２８Ｍバイト〜４Ｇバイトなど)だが高速にアクセス可能である。
【０１１０】
また本実施形態において不揮発性半導体メモリ１２２は、例えばＮＡＮＤ型フラッシュメモリである。しかしながら不揮発性半導体メモリ１２２は、例えばＮＯＲ型フラッシュメモリなど、他の不揮発性半導体メモリであっても良い。不揮発性半導体メモリ１２２は、揮発性半導体メモリ１２１よりも大容量(例えば３２Ｇバイト〜５１２Ｇバイトなど)だがアクセス時間が長い。
【０１１１】
以上の構成において、図１のＭＣＵ１０が図２２のプロセッサ１１１、一次キャッシュメモリ１１６、及び二次キャッシュメモリ１１２に対応し、図１のメモリ管理装置３０、３１が図２２のメモリ管理装置１１４に相当し、図１のメモリ装置２０が図２２の記憶装置１２０に相当する。
【０１１２】
以上のように、第１乃至第３実施形態は、図２２のような構成に適用可能である。
【０１１３】
［変形例等］  
以上のように、実施形態に係る半導体装置１は、プロセッサ１０と、メモリ装置２０を備える。メモリ装置２０は不揮発性半導体記憶装置２２を有し、プロセッサ１０に対する主記憶として機能する。プロセッサ１０は、複数のプログラムＣＤ１、ＣＤ２を実行する際に、このプログラムＣＤ１、ＣＤ２を実行するために必要な情報をプログラムＣＤ１、ＣＤ２毎にワークセットＷＳ１、ＷＳ２として管理する。更にプロセッサ１０は、各々のワークセットＷＳ１、ＷＳ２に必要な情報と、その情報のメモリ装置２０内におけるアドレス（仮想アドレス）との関係を保持するテーブルＰＴ１、ＰＴ２を、ワークセットＷＳ１、ＷＳ２毎に作成する。メモリ装置２０に対するアクセスは、ワークセットＷＳ１、ＷＳ２毎に対応するテーブルＰＴ１、ＰＴ２を参照して実行される。そして、テーブルＰＴ１、ＰＴ２はそれぞれ、メモリ装置２０内の情報に対するワークセットＷＳ１、ＷＳ２の各々のアクセス権（有効フラグＶ、書き込みフラグＷ）を管理する。
【０１１４】
また、上記実施形態に係る半導体装置１の構成は、次のように説明することも出来る。図２３は、上記実施形態に係る半導体装置１のブロック図である。
【０１１５】
図示するように半導体装置１は、プロセッサ１０からの要求に応じてメモリ装置２０にアクセスするメモリ管理装置３０、３１を更に備える。またプロセッサ１０は、その機能に応じて、作成部１１、第１実行部１２、第２実行部１３、呼び出し部１４、及び制御部１５を有する。
【０１１６】
作成部１１は、第１、第２ワークセット用のそれぞれ第１、第２ページテーブルＰＴ１、ＰＴ２を作成する。これは例えば制御部１５の命令によって行われる。そして作成部１１は、第１、第２ページテーブルＰＴ１、ＰＴ２を例えばメモリ管理装置３０、３１内のメモリやレジスタ内に保持させる。もちろん、プロセッサ１０内のメモリやレジスタ内に保持させてもよい。第１実行部１２は、制御部１５の命令に応答して、第１プログラムコードＣＤ１を実行する。すなわち、第１ワークセットＷＳ１に関連する処理を実行する。第２実行部１３は、制御部１５の命令に応答して、第２プログラムコードＣＤ２を実行する。すなわち、第２ワークセットＷＳ２に関連する処理を実行する。呼び出し部１４は、第１ワークセットＷＳ１から第２プログラムコードＣＤ２を呼び出す外部呼び出し命令を、制御部１５に対して発行する。制御部１５は、呼び出し部１４からの外部呼び出し命令に応答して、第１実行部１２から第２実行部１３へ制御を移す。
【０１１７】
すなわち、作成部１１は、図５におけるステップＳ１１、Ｓ１８、Ｓ２６、及びＳ２８の処理を担う。第１実行部１２は、ステップＳ１３及びＳ１４の処理を担う。呼び出し部１４は、ステップＳ１５及びＳ１６の処理を担う。制御部１５は、ステップＳ１０、Ｓ１２、Ｓ１７、Ｓ１９及びＳ２７の処理を担う。そして第２実行部１３は、ステップＳ２０〜Ｓ２５の処理を担う。
【０１１８】
そしてメモリ管理装置３０、３１は、制御が第１実行部１２にある場合には第１ページテーブルＰＴ１を参照してメモリ装置２０にアクセスし、制御が第２実行部１３にある場合には第２ページテーブルＰＴ２を参照してメモリ装置２０にアクセスする。
【０１１９】
このような構成により、シングルアドレスシステムを採用しつつ、データを効果的に保護出来る。すなわち、シングルアドレスシステムを採用しながら、処理をワークセットなるデータの集合単位で管理し、ワークセット毎にページテーブルを設ける。そしてページテーブルに設けた書き込みビットＷと有効ビットＶによって、ワークセットからのデータアクセスを制限出来る。つまり、あるワークセットにデータを参照させたければ、対応するページテーブルで参照を許可し、参照させたくなければページテーブルで参照を禁止すればよい。
【０１２０】
なお、第２実施形態の図１６の動作を実行する際には、プロセッサ１０の一部は、ステップＳ３１〜Ｓ３４の処理を実行する権限確認部として機能し、その機能ブロックの判断結果により、例えば作成部１１がステップＳ３３、Ｓ３５、及びＳ３６の処理を実行する。図１８の動作を実行する際も同様である。すなわちプロセッサ１０の一部は、ステップＳ４１の処理を実行するデータ作成部、及びステップＳ４２〜４３の処理を実行する権限設定部として機能し、その機能ブロックの判断結果により、例えば作成部１１がステップＳ４５及びＳ４６の処理を実行する。
【０１２１】
なお、上記実施形態は種々の変形が可能である。例えば、第１乃至第３実施形態ではワークセットの数が２つの場合を例に挙げて説明したが、３つ以上のワークセットがある場合であってももよい。この場合も、それぞれのワークセット毎にページテーブルが作成される。
【０１２２】
また上記実施形態では、ワークセットは、あるプログラムを実行するために必要な全ての情報（データ、ファイル等）の組（集合体）であるものとして説明した。しかし、ワークセットの区別は、例えばユーザの区別であっても良いし、また図２２のように複数のプロセッサがある場合にはプロセッサの区別であっても良い。
【０１２３】
更に上記実施形態では、仮想アドレス空間の全ページ分のエントリを有するページテーブルを示しているが、ページテーブルはこのような構成に限らず、仮想アドレス空間と物理アドレスとの対応関係を保持出来る構成であれば限定されない。すなわち、例えば多段ページテーブルを用いても良い。多段ページテーブルでは、仮想アドレスは例えば複数のインデックスとオフセットを含む。そして第１のテーブルを第１のインデックスで検索し、第１のインデックスで指定された第２のテーブルからアドレスを検索し、更にこのアドレスにオフセットを加算して、物理アドレスを得る。このような構成とすることで、複数のページテーブルが必要にはなるが、個々のページテーブルのサイズを小さくすることが出来る。
【０１２４】
また、半導体装置１の具体的構成は、上記実施形態で説明した構成に限定されるものではなく、例えば図５、図１６、図１８、及び／または図２１等に示す動作が可能であれば良い。また、図５、図１６、図１８、及び／または図２１に示すフローチャート内の処理は、可能な限り順番を入れ替えてもよい。
【０１２５】
また、ＮＡＮＤ型フラッシュメモリ２２の管理方法に関しても、種々の方法を用いることが出来る。例えばＳＳＤ（solid state drive）を用いた場合、ＳＳＤコントローラが物理アドレスをＳＡＴＡ（serial ATA）のようにＭＣＵ１０に対して見せる。
【０１２６】
ＮＡＮＤ型フラッシュメモリ２２が直接ＭＣＵ１０からメモリとして見えるように結合されていれば、ＯＳが物理アドレスを把握して、ＮＡＮＤ型フラッシュメモリ２２とＤＲＡＭ２１とのデータの授受を管理する。
【０１２７】
なお、図１では二つのメモリ管理装置３０、３１が、それぞれＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２に対して設けられている例を示した。しかし、本構成は一例に過ぎず、図２２及び図２３に示すように、一つのメモリ管理装置によって実現されても良い。
【０１２８】
また図１の例では、ＮＡＮＤ型フラッシュメモリ２２が直接メモリバスに接続される場合を示している。この場合、メモリ管理装置３１はハードウェアで実現されても良いしソフトウェアで実現されても良い。ソフトウェアで実現される場合、メモリ管理装置３１は、ＯＳ及びページテーブルＰＴに相当する。
【０１２９】
しかしながら、ＮＡＮＤ型フラッシュメモリ２２がメモリバスに直接には接続されない場合であっても良い。このような例を図２４に示す。図２４は半導体装置１のブロック図である。図示するように、メモリ装置２０内にはＤＲＡＭ２１、ＮＡＮＤ型フラッシュメモリ２２、及びメモリ管理装置３１が含まれる。すなわち、ＭＣＵ１０にはＤＲＡＭ２１が接続され、ＤＲＡＭ２１に対するアクセスはメモリ管理装置３０によって制御される。ＮＡＮＤ型フラッシュメモリ２２は、メモリ管理装置３１を介してＤＲＡＭ２１に接続され、ＭＣＵ１０には直接には接続されない。そしてメモリ管理装置３１は、ＤＲＡＭ２１とＮＡＮＤ型フラッシュメモリ２２との間のアドレス変換機能を担う。物理的には図２４のような接続であっても、メモリ管理装置３０、３１の機能によって、ＭＣＵ１０（またはプログラマ）からは、図２４の構成は図２５のように見える。図２５は半導体装置１のブロック図である。図示するようにメモリ装置２０は、あたかもＤＲＡＭ２１及びＮＡＮＤ型フラッシュメモリ２２が共にメモリ管理装置３０によって制御されているように見える。
【０１３０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１３１】
１…半導体装置、１０…プロセッサ、１１…作成部、１２、１３…実行部、１４…呼び出し部、１５…制御部、２０…メモリ装置、３０、３１…メモリ管理装置、２１…揮発性半導体メモリ、２２…不揮発性半導体メモリ、
【図１】
2012173870.tif 000003
【図２】
2012173870.tif 000004
【図３】
2012173870.tif 000005
【図４】
2012173870.tif 000006
【図５】
2012173870.tif 000007
【図６】
2012173870.tif 000008
【図７】
2012173870.tif 000009
【図８】
2012173870.tif 000010
【図９】
2012173870.tif 000011
【図１０】
2012173870.tif 000012
【図１１】
2012173870.tif 000013
【図１２】
2012173870.tif 000014
【図１３】
2012173870.tif 000015
【図１４】
2012173870.tif 000016
【図１５】
2012173870.tif 000017
【図１６】
2012173870.tif 000018
【図１７】
2012173870.tif 000019
【図１８】
2012173870.tif 000020
【図１９】
2012173870.tif 000021
【図２０】
2012173870.tif 000022
【図２１】
2012173870.tif 000023
【図２２】
2012173870.tif 000024
【図２３】
2012173870.tif 000025
【図２４】
2012173870.tif 000026
【図２５】
2012173870.tif 000027