(57)【要約】【課題】無駄な停止状態を防止でき、メモリアクセスを効率化できるメモリ管理装置およびメモリ管理方法を提供する。【解決手段】第１メモリ２と、前記第１メモリのキャッシュメモリとして用いられる第２メモリ４とを、同一のメモリ階層でフラットに管理するメモリ管理装置１であって、前記メモリ管理装置は、アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されているか否かを判定し、前記第２メモリに記憶されていなければ、エラーフラグを設定して、エラーデータを発行し、前記第１メモリのアクセスされるデータを、前記第２メモリの空き領域に読み出させ、前記第１メモリから前記第２メモリへのデータ読み出し中の場合、その第１プロセスを待ち状態にさせ、その間に他の実行可能な第２プロセスを実行させる。【選択図】図１
2011118469.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理するメモリ管理装置であって、前記メモリ管理装置は、
アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されているか否かを判定し、
前記第２メモリに記憶されていなければ、エラーフラグを設定して、エラーデータを発行し、
前記第１メモリのアクセスされるデータを、前記第２メモリの空き領域に読み出させ、
前記第１メモリから前記第２メモリへのデータ読み出し中の場合、その第１プロセスを待ち状態にさせ、その間に他の実行可能な第２プロセスを実行させる。
【請求項２】
請求項１に記載のメモリ管理装置は、
前記第１メモリから前記第２メモリへ読み出しが完了すると、その完了を示す完了フラグを設定し、待ち状態にしていた前記第１プロセス１を実行可能にする。
【請求項３】
請求項１または２に記載のメモリ管理装置は、
アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されている場合には、前記エラーデータを発行することなく、その第２メモリに記憶されているデータにアクセスする。
【請求項４】
請求項１乃至３のいずれか１項に記載のメモリ管理装置は、
前記第１および第２メモリのページテーブルと、前記第１メモリに最後にアクセスしたラストページとを更に備え、
前記第１メモリから前記第２メモリへのデータ読み出しを行う際、前記ページテーブルを確認することで、アクセス要求先の物理ページが、前記第１メモリ上にあるか否かを判定し、
対応する前記第１メモリの物理ページと前記ラストページを比較し、直前に前記第１メモリにアクセスされたか否かを更に確認する。
【請求項５】
請求項１乃至４のいずれか１項に記載のメモリ管理装置は、
第１および第２ファンクションスタックを更に備え、
変更前に係る前記第１，第２メモリの複数のメモリアクセス要求を、前記第１ファンクションスタックに記憶させ、
前記第１ファンクションスタックにスタックされた前記複数のメモリアクセス要求のうち、レイテンシが長い第１ファンクションである前記第１プロセスの第１レイテンシの間に、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクションである前記第２プロセスを行えるように、変更後に係るメモリアクセス要求として、前記複数のファンクションを並べ替えて、
前記変更後に係るメモリアクセス要求を、前記第２ファンクションスタックに更に記憶させる。
【請求項６】
第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理し、第１および第２ファンクションスタックを備えるメモリ管理装置であって、前記メモリ管理装置は、
変更前に係る前記第１，第２メモリの複数のメモリアクセス要求を、前記第１ファンクションスタックに記憶させ、
前記第１ファンクションスタックにスタックされた前記複数のメモリアクセス要求のうち、レイテンシが長い第１ファンクションの第１レイテンシの間に、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクションを行えるように、変更後に係るメモリアクセス要求として、前記複数のファンクションを並べ替えて、
前記変更後に係るメモリアクセス要求を、前記第２ファンクションスタックに記憶させる。
【請求項７】
請求項６に記載のメモリ管理装置は、前記第１ファンクションスタックに記憶された書き込みファンクションを、書き込み情報に付加される静的カラーリング情報と，前記第１メモリの特性を記述したメモリ固有情報とを参照して、前記第１または第２メモリのいずれかに行うかを更に決定する。
【請求項８】
請求項６または７に記載のメモリ管理装置は、前記第１メモリにアクセスする場合は書き込みデータにエラー訂正に必要な冗長情報を付加し、前記第２メモリにアクセスする場合は書き込みデータにエラー訂正情報を付加にする。
【請求項９】
請求項８に記載のメモリ管理装置は、前記第１メモリが１のメモリセルに１ビットデータを記憶可能な２値ＮＡＮＤ型フラッシュメモリの場合は、書き込みデータに弱いエラー訂正能力に必要な冗長情報を付加し、前記第１のメモリが１のメモリセルに多ビットデータを記憶可能な多値ＮＡＮＤ型フラッシュメモリの場合は、書き込みデータに強いエラー訂正能力に必要な冗長情報を更に付加する。
【請求項１０】
請求項６乃至９のいずれか１項に記載のメモリ管理装置は、前記第１メモリが１つのインターフェイスに接続可能な複数チャンネル対応の複数の第１メモリインターフェイスを更に備える。
【請求項１１】
請求項６乃至１０のいずれか１項に記載のメモリ管理装置は、
実行した前記第１，第２メモリからの読み出しデータを記憶するワークメモリを更に備え、
前記読み出しデータを外部に転送する際に、
前記第１，第２ファンクションスタックを再び参照することにより、実行された変更後に係るメモリアクセス要求が、外部が発行した変更前に係るいずれかの命令に対応するかを解読し、
前記ワークメモリに記憶された読み出しデータを、前記第１ファンクションスタックに記憶されている変更前に係る外部が発行したメモリアクセス要求の順番に再び並び替え、
前記並び替えられた前記ワークメモリに記憶される読み出しデータを、外部に転送する。
【請求項１２】
請求項１乃至１１のいずれか１項に記載のメモリ管理装置は、
前記第１メモリとしての、１のメモリセルに１ビットデータを記憶可能な２値ＮＡＮＤ型フラッシュメモリ，または１のメモリセルに多ビットデータを記憶可能な多値ＮＡＮＤ型フラッシュメモリと、
前記第２メモリとしてのＤＲＡＭとを、同一のメモリ階層でフラットに管理する。
【請求項１３】
第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理するメモリ管理方法であって、
アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されているか否かを判定し、
前記第２メモリに記憶されていなければ、エラーフラグを設定して、エラーデータを発行し、
前記第１メモリのアクセスされるデータを、前記第２メモリの空き領域に読み出させ、
前記第１メモリから前記第２メモリへのデータ読み出し中の場合、その第１プロセスを待ち状態にさせ、その間に他の実行可能な第２プロセスを実行させる。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリ管理装置およびメモリ管理方法に関する。
【背景技術】
【０００２】
従来のＭＰＵ（Micro Processing Unit）は、ＤＲＡＭ（Dynamic Random Access Memory）をメインメモリ（主記憶装置）として用いる。また、従来のＭＰＵは、例えば、フラッシュメモリを２次記憶装置として用いる。従来のＭＰＵとフラッシュメモリとは、Ｉ／Ｏインタフェースを介して接続される。フラッシュメモリは、ＭＰＵによってファイルメモリとして扱われる。
【０００３】
ＭＰＵが２次記憶装置のファイルをアクセスする場合には、従来のオペレーティングシステム（ＯＳ）は多くの処理を実行する必要がある。メインメモリの記憶容量の小さい情報処理装置（コンピュータシステム）においては、ＨＤＤ（ハードディスクドライブ）又はＳＳＤ（Solid State Drive）などの２次記憶装置がＭＰＵによってアクセスされる回数が多くなり、プログラムの処理数が増え、処理時間が大きくなる場合がある。
【０００４】
このような問題を解決するために、例えば、モバイル機器等において、ＮＡＮＤ型フラッシュメモリと同じ容量のＤＲＡＭを用意して、起動時にＮＡＮＤ型フラッシュメモリの全データをＤＲＡＭに転送する方式が用いられている。
【０００５】
しかしながら、この方式は安価なＮＡＮＤ型フラッシュメモリと同じ容量分の高価なＤＲＡＭを実装する必要があり、例えばモバイル機器などのような小容量のメモリを持つ機器に対しては適用しやすいが、他の記憶容量の大きい装置に対しては適用困難である。
【０００６】
特許文献１（特開平７−１４６８２０）には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献１において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
【０００７】
特許文献２（特開２００１−２６６５８０号公報）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。この特許文献２の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【０００８】
しかしながら、上記メモリでは、プロセッサのメモリバスに、アクセス時間の短いメモリ（例えば、ＤＲＡＭ等）と、アクセス時間の長いメモリ（例えば、ＮＡＮＤ型フラッシュメモリ等）とが混在して接続される。このため、アクセス時間の長いメモリからデータ読出し等を行っている間は、アクセス時間の短いメモリのデータ読出し等のその他の処理を行うことができない無駄な停止（idle）状態となってしまう。
【０００９】
このように、従来のメモリ管理装置およびメモリ管理方法では、無駄な停止状態が発生し、メモリアクセスの効率化に対して不利である、という傾向がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平７−１４６８２０号公報
【特許文献２】特開２００１−２６６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
この発明は、無駄な停止状態を防止でき、メモリアクセスを効率化できるメモリ管理装置およびメモリ管理方法を提供する。
【課題を解決するための手段】
【００１２】
この発明の一態様に係るメモリ管理装置は、第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理するメモリ管理装置であって、アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されているか否かを判定し、前記第２メモリに記憶されていなければ、エラーフラグを設定して、エラーデータを発行し、前記第１メモリのアクセスされるデータを、前記第２メモリの空き領域に読み出させ、前記第１メモリから前記第２メモリへのデータ読み出し中の場合、その第１プロセスを待ち状態にさせ、その間に他の実行可能な第２プロセスを実行させる。
【００１３】
この発明の一態様に係るメモリ管理装置は、第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理し、第１および第２ファンクションスタックを備えるメモリ管理装置であって、変更前に係る前記第１，第２メモリの複数のメモリアクセス要求を、前記第１ファンクションスタックに記憶させ、前記第１ファンクションスタックにスタックされた前記複数のメモリアクセス要求のうち、レイテンシが長い第１ファンクションの第１レイテンシの間に、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクションを行えるように、変更後に係るメモリアクセス要求として、前記複数のファンクションを並べ替えて、前記変更後に係るメモリアクセス要求を、前記第２ファンクションスタックに記憶させる。
【００１４】
この発明の一態様に係るメモリ管理方法は、第１メモリと、前記第１メモリのキャッシュメモリとして用いられる第２メモリとを、同一のメモリ階層でフラットに管理するメモリ管理方法であって、アクセス要求先の前記第１メモリのデータが、前記第２メモリに記憶されているか否かを判定し、前記第２メモリに記憶されていなければ、エラーデータを発行して、エラーフラグを設定し、前記第１メモリのアクセスされるデータを、前記第２メモリの空き領域に読み出させ、前記第１メモリから前記第２メモリへのデータ読み出し中の場合、その第１プロセスを待ち状態にさせ、その間に他の実行可能な第２プロセスを実行させる。
【発明の効果】
【００１５】
この発明によれば、無駄な停止状態を防止でき、メモリアクセスを効率化できるメモリ管理装置およびメモリ管理方法が得られる。
【図面の簡単な説明】
【００１６】
【図１】この発明の第１の実施形態に係るメモリ管理装置を有するフラットメモリの構成例を示すブロック図。
【図２】図１中のＮＡＮＤ型フラッシュメモリを構成するブロックを示す等価回路図。
【図３】図１中のページテーブルの構成例を示す図。
【図４】メモリ管理装置の判定動作を示すフロー図。
【図５】ＤＲＡＭからデータを読み出す場合を説明するためのブロック図。
【図６】ＤＲＡＭからデータを読み出す場合を説明するためのフロー図。
【図７】ＤＲＡＭにデータを書込む場合を説明するためのブロック図。
【図８】ＤＲＡＭにデータを書込む場合を説明するためのフロー図。
【図９】ＮＡＮＤからＤＲＡＭを介してデータを読み出す場合を説明するためのブロック図。
【図１０】ＮＡＮＤからＤＲＡＭを介してデータを読み出す場合を説明するためのフロー図。
【図１１】ＮＡＮＤからデータを読み出す場合（直前にＮＡＮＤにアクセスがない場合）を説明するためのブロック図。
【図１２】ＮＡＮＤからデータを読み出す場合（直前にＮＡＮＤにアクセスがない場合）を説明するためのフロー図。
【図１３】ＮＡＮＤからデータを読み出す場合（直前にＮＡＮＤにアクセスがある場合）を説明するためのブロック図。
【図１４】ＮＡＮＤからデータを読み出す場合（直前にＮＡＮＤにアクセスがある場合）を説明するためのフロー図。
【図１５】ＮＡＮＤにデータを書込む場合を説明するためのブロック図。
【図１６】ＮＡＮＤにデータを書込む場合を説明するためのフロー図。
【図１７】プロセッサ側におけるＭＭＵからのエラーフラグの検出を示すフロー図。
【図１８】本当でないＥＣＣエラーを検出した場合（ＮＡＮＤにRead/Writeを行う場合）の動作を示すタイミングチャート図。
【図１９】この発明の第２の実施形態に係るメモリ管理装置を有するシステム構成例を示すブロック図。
【図２０】図１９中のフラットメモリの構成例を示すブロック図。
【図２１】図２０中のＮＡＮＤ型フラッシュメモリ（ＳＬＣ）のメモリ空間を示す図。
【図２２Ａ】ＮＡＮＤ型フラッシュメモリのデータ記憶方式（2bit/cell）を示す図。
【図２２Ｂ】ＮＡＮＤ型フラッシュメモリのデータ記憶方式（高速書込みＳＬＣ（低Read disturb耐性））を示す図。
【図２２Ｃ】ＮＡＮＤ型フラッシュメモリのデータ記憶方式（低速書込みＳＬＣ（高Read disturb耐性））を示す図。
【図２２Ｄ】ＮＡＮＤ型フラッシュメモリのデータ記憶方式（3bit/cell）を示す図。
【図２２Ｅ】ＮＡＮＤ型フラッシュメモリのデータ記憶方式（4bit/cell）を示す図。
【図２３】ＮＡＮＤ型フラッシュメモリのメモリマップ例を示す図。
【図２４】図２０中のメモリ管理装置（ＭＭＵ）の構成例を示すブロック図。
【図２５】変更前の読み出しファンクション要求を示す図。
【図２６】変更前のレイテンシを示すフロー図。
【図２７】変更後の読み出しファンクション要求を示す図。
【図２８】変更後のレイテンシを示すフロー図。
【図２９】この発明の変形例１に係るメモリ管理装置を示すブロック図。
【図３０】この発明の変形例２に係るメモリ管理装置を示すブロック図。
【発明を実施するための形態】
【００１７】
以下、この発明の実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【００１８】
［第１の実施形態］  
図１乃至図１８を用いて、この発明の第１の実施形態に係るメモリ管理装置およびメモリ管理方法を説明する。
【００１９】
＜１．構成例＞  
１−１．フラットメモリの構成例  
まず、図１を用いて、第１の実施形態に係るメモリ管理装置を有する半導体記憶装置（フラットメモリ）の構成例について説明する。  
図示するように、半導体記憶装置は、メモリ管理装置（ＭＭＵ）１，ＮＡＮＤ型フラッシュメモリ２，ＤＲＡＭ４，およびプロセッサ３を備える。
【００２０】
メモリ管理装置（ＭＭＵ：Memory management unit）１は、主記憶メモリとして働くＮＡＮＤ型フラッシュメモリ２と、主記憶メモリ２のキャッシュメモリとして働くＤＲＡＭ４とに対するメモリアクセスを、フラットな同一のメモリ階層で扱い、総合的に管理する。このように、主記憶メモリ（ＮＡＮＤ型フラッシュメモリ２）と、主記憶メモリ２のキャッシュメモリ（ＤＲＡＭ４）とを同一のメモリ階層で扱うことにより、処理の重複を防止することができる。例えば、メモリ管理装置１は、ＤＲＡＭ４の記憶状態を考慮して、ＮＡＮＤ型フラッシュメモリ２への記憶状態を決定する等の処理を行うことが可能である。そのため、メモリ管理装置１は、プロセッサ３に対しては、ＮＡＮＤ型フラッシュメモリ２とＤＲＡＭ４とを同一のメモリ階層の一つの巨大なメインメモリとして見せている。また、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２およびＤＲＡＭ４を、ページ単位で管理する。尚、このページサイズは、ＮＡＮＤ型フラッシュメモリ２のページサイズに合わせることがより望ましく、ＮＡＮＤ型フラッシュメモリ２のページサイズの倍数でも良い。  
このように、本例に係る半導体記憶装置は、主記憶メモリ（ＮＡＮＤ型フラッシュメモリ２）とキャッシュメモリ（ＤＲＡＭ４）とをフラットな同一のメモリ階層で管理されるため、以下、フラットメモリ（Flat Memory）と称する。  
メモリ管理装置（ＭＭＵ）１は、ページテーブルＰＴ，ラストページ１１，エラーフラグ１２，ライトバッファ１３，エラーデータ１４，完了フラグ１５を備える。  
ページテーブルＰＴは、例えば、フラグ，ＤＲＡＭアドレス，ＮＡＮＤアドレス等を有し、１エントリが１論理ページに相当する。その構成については、後述する。  
ラストページ１１は、ＮＡＮＤ型フラッシュメモリ２に対してデータ読み出しを行った場合の、最後のページのアドレスを示すデータである。  
エラーフラグ１２は、後述するメモリ管理装置の判定動作の際の、ダミーデータによるＥＣＣエラーなのか、本当のＥＣＣエラーなのかを示すためのエラーフラグである。  
ライトバッファ１３には、データ書込み動作の際に、アドレスおよび書込みデータが格納される。  
エラーデータ１４は、後述するＥＣＣエラーを発生させるために、プロセッサに読み込まれる（Read）ダミーデータである。  
完了フラグ１５は、ＮＡＮＤ型フラッシュメモリ２上のデータを読み出してキャッシュメモリ（ＤＲＡＭ）に転送が完了したことを、メモリ管理装置１がプロセッサ３（ＯＳ）に対して示すためのフラグである。詳細については、後述する。
【００２１】
ＮＡＮＤ型フラッシュメモリ２は、データを不揮発に記憶する主記憶メモリとして働く。ＮＡＮＤ型フラッシュメモリ２は、メモリセルアレイ（Memory Cell Array）２１、データキャッシュ（Data Cache）２２を備える。メモリセルアレイ２１は、複数のブロック（Block）から構成されるプレーン（Plane）を有する。詳細についは、後述する。尚、ＮＡＮＤ型フラッシュメモリ２は、２値メモリ（ＳＬＣ：Single level cell）や多値メモリ（ＭＬＣ：Multi level cell）からなる複数のＮＡＮＤ型フラッシュメモリ（２ａ〜２ｃ）を備えても良い。
【００２２】
ＤＲＡＭ４は、データを揮発的に記憶し、主記憶メモリ（ＮＡＮＤ型フラッシュメモリ２）のキャッシュメモリとして働く。
【００２３】
プロセッサ３は、メモリバス９を介して、メモリ管理装置１を制御する。プロセッサ３は、本例では、複数のプロセッサ（３ａ〜３ｃ）を有するマルチプロセッサ構成であるが、これに限られず、単一のプロセッサからなるシングルプロセッサであって適用可能である。
【００２４】
１−２．ブロックの構成例  
次に、図２を用いて、ＮＡＮＤ型フラッシュメモリが有するブロック（Block）の構成例ついて説明する。  
図示するように、ここでは、１つのブロックBlockを例に挙げて説明する。また、このブロックBlock中のメモリセルトランジスタＭＴは、一括して消去される。即ち、ブロックは消去単位である。  
図示するように、ブロックBlockは、ワード線方向（ＷＬ方向）に配置された複数のメモリセル列（メモリセルユニット）ＭＵから構成される。メモリセル列ＭＵは、電流経路が直列接続される６４個のメモリセルトランジスタＭＴおよび２個のダミーセルＤＭＴからなるＮＡＮＤストリングと、ＮＡＮＤストリングの一端に接続される選択ランジスタＳ１と、ＮＡＮＤストリングの他端に接続される選択トランジスタＳ２とから構成される。尚、本例では、ＮＡＮＤストリングは、６４個のメモリセルＭＴから構成されるが、２つ以上のメモリセルから構成されていればよく、特に、この個数に限定されるというものではない。
【００２５】
選択トランジスタＳ２の電流経路の他端はビット線ＢＬに接続され、選択トランジスタＳ１の電流経路の他端はソース線ＳＬに接続される。
【００２６】
ワード線ＷＬ０〜ＷＬ６３およびダミーワード線ＤＷＬは、ＷＬ方向に延び、ＷＬ方向の複数のメモリセルトランジスタＭＴおよびダミーセルＤＭＴに共通に接続される。セレクトゲート線ＳＧＤは、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ２に共通に接続される。セレクトゲート線ＳＧＳも、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ１に共通に接続される。
【００２７】
ワード線ＷＬ０〜ＷＬ６３ごとに、ページ（Ｐａｇｅ）と称する単位を構成する。例えば、図中の破線で囲って示すように、ワード線ＷＬ０には、１ページ（Ｐａｇｅ０）が割り当てられている。このページごとに読み出し動作、書き込み動作が行われるため、ページは読み出し単位であり、書き込み単位である。尚、１つのメモリセルに複数ビットのデータを保持可能な多値メモリセルの場合は、１つのワード線に複数ページが割り当てられる。
【００２８】
メモリセルＭＴは、ビット線ＢＬとワード線ＷＬとの交差位置にそれぞれ設けられ、半導体基板上に順次、トンネル絶縁膜、電荷蓄積層としての浮遊電極ＦＧ、ゲート間絶縁膜、及び制御電極ＣＧが設けられた積層構造である。メモリセルＭＴの電流経路であるソース／ドレインは、隣接するメモリセルＭＴのソース／ドレインに直列接続されている。電流経路の一端は選択トランジスタＳ２を介してビット線ＢＬに接続され、電流経路の他端は選択トランジスタＳ１を介してソース線ＳＬに接続される。また、メモリセルＭＴのそれぞれは、積層構造の側壁上に沿って設けられたスペーサ、及び上記積層構造を挟むように半導体基板（Ｓｉ基板（Ｓｉ−ｓｕｂ）またはＰウェル）中に設けられたソース／ドレインを備えている。
【００２９】
選択トランジスタＳ１、Ｓ２は、ゲート絶縁膜、ゲート間絶縁膜、ゲート電極を備えている。選択トランジスタＳ１、Ｓ２のゲート間絶縁膜は、その中央が分離され、その上下層が電気的に接続するように設けられている。選択トランジスタＳ１、Ｓ２は、同様に、ゲート電極の側壁上に沿って設けられたスペーサ、及びゲート電極を挟むように半導体基板中に設けられたソース／ドレインを備えている。
【００３０】
１−３．ページテーブルの構成例  
次に、図３を用いて、第１の実施形態に係るメモリ管理装置が有するページテーブルの構成例ついて説明する。  
図示するように、本例に係るページテーブルＰＴは、フラグ，ＤＲＡＭアドレス，ＮＡＮＤアドレスを有する。
【００３１】
フラグは、その論理ページに対応する物理ページの種類を示す。  
フラグ”Ｅ”は、未使用（物理ページが割り当てられていない）を示す。フラグ”Ｄ”はＤＲＡＭ上（例えば、ＤＲＡＭアドレスＤ１）にページがあることを示す。フラグ”Ｎ”はＮＡＮＤ上（例えば、ＮＡＮＤアドレスＮ１）にページがあることを示す。フラグ”ＤＮ”はＮＡＮＤ上（例えば、ＮＡＮＤアドレスＮ２）のページをＤＲＡＭ（例えば、ＤＲＡＭアドレスＤ２）にキャッシュ中であることを示す。フラグ”ＤＷ”はＮＡＮＤからキャッシュしたＤＲＡＭ上（例えば、ＤＲＡＭアドレスＤ３）のデータを書換えたことを示す。  
上記のように、ＤＲＡＭアドレスには、フラグ”Ｄ”、”ＤＮ”、”ＤＷ”のときに、対応するＤＲＡＭ上のアドレス（Ｄ１〜Ｄ３）が格納される。  
ＮＡＮＤアドレスには、フラグ”Ｎ”、”ＤＮ”のときに、対応するＮＡＮＤ上のアドレス（Ｎ１，Ｎ２）が格納される。  
尚、本例のページテーブルの構成では、ＤＲＡＭアドレスとＮＡＮＤアドレスの欄を使用しない場合が多いので、冗長となっている。また、ページテーブルＰＴは、メモリ管理装置（ＭＭＵ）１中の専用メモリに設けられていても良い。ページテーブルＰＴは、メモリ管理装置（ＭＭＵ）１に接続されるＤＲＡＭ４の一部に設けられていても良い。さらに、ページテーブルＰＴは、通常の仮想記憶のページテーブルのように、多段構成としても良く、この場合には必要なメモリ容量を削減できる点で有効である。
【００３２】
＜２．メモリ管理動作＞  
次に、図４乃至図１６を用いて、第１の実施形態に係るメモリ管理装置のメモリ管理動作について説明する。
【００３３】
２−０．プロセッサがアクセスしたいデータがＤＲＡＭ上にあるか否かの判定  
まず、図４を用いて、メモリ管理装置（ＭＭＵ）１による、データがＤＲＡＭ４上にあるか否かの判定動作について説明する。  
（ＳＴ０−１）  
図示するように、まず、メモリ管理装置１は、プロセッサ３がアクセスしたいデータがＤＲＡＭ４にあるか否かを判定する。  
これは、プロセッサ３がアクセスしたいデータが、ＤＲＡＭ４に格納されている場合には、当該データに速くアクセスすることができる。  
しかしながら、ＮＡＮＤ型フラッシュメモリ２にデータ格納されている場合には、メモリセルアレイ２１から読み出したデータをデータキャッシュ２２にコピーする必要があるため、当該データにアクセスする時間が増大する。そのため、このステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータが、ＤＲＡＮ４かＮＡＮＤ型フラッシュメモリ２かのいずれかに格納されているかを判定する。
【００３４】
（ＳＴ０−２）  
続いて、上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＤＲＡＭ４に格納されている場合（Ｙｅｓ）、メモリ管理装置１は、（後のステップＳＴ０−３の際のＥＣＣエラーを発行することなく）通常の制御により、ＤＲＡＭ４から当該データを読み出す。
【００３５】
（ＳＴ０−３）  
続いて、上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＤＲＡＭ４に格納されていない場合（Ｎｏ）、メモリ管理装置１は、当該データがＮＡＮＤ型フラッシュメモリ２にデータ格納されていると判定し、エラーフラグ１２を設定する。
【００３６】
（ＳＴ０−４）  
続いて、メモリ管理装置１は、ダミーデータ（ＥＣＣエラー）１４を、プロセッサ３に発行する。
【００３７】
尚、ダミーデータ（ＥＣＣエラー）１４を読み出したプロセッサ３は、エラーフラグ１２を設定し、（ダミーでない）本当のＥＣＣエラーか否かを判定した後、プロセス１（例えば、ＮＡＮＤ型フラッシュメモリ２上のデータが必要なプロセス）を待ち状態（WAIT）とし、ＮＡＮＤ型フラッシュメモリ２上のデータを読み出している間において重複して実行可能なプロセス２（RUNNABLE）（例えば、ＮＡＮＤ型フラッシュメモリ２上のデータが必要でないプロセス）に切り替えて実行する。詳細については後述する。
【００３８】
以下、２−１〜２−６において、上記判定動作後における、ＮＡＮＤ型フラッシュメモリ２およびＤＲＡＭ４に対する種々の動作について、詳細に説明する。
【００３９】
２−１．ＤＲＡＭからデータを読み出す場合  
まず、図５および図６に則して、ＤＲＡＭ４からデータを読み出す場合のメモリ管理装置（ＭＭＵ）１による、データ読出し動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＤＲＡＭ４に格納されている（Ｙｅｓ）と判定された場合に、行われる。  
（ＳＴ１−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＤＲＡＭ４からのデータ読出し命令（READ）を受ける。
【００４０】
（ＳＴ１−２）  
続いて、メモリ管理装置１は、上記READを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｄ”，”ＤＮ”，”ＤＷ”であるかを判定することで、対応する物理ページが、ＤＲＡＭ４上にあることを確認することができる。
【００４１】
（ＳＴ１−３）  
続いて、メモリ管理装置１は、ＤＲＡＭ４から当該データを読み出す（READ）。
【００４２】
（ＳＴ１−４）  
続いて、メモリ管理装置１は、ＤＲＡＭ４から読み出した当該データを、プロセッサ３に転送する。
【００４３】
２−２．ＤＲＡＭにデータを書込む場合  
次に、図７および図８に則して、ＤＲＡＭ４にデータを書込む場合のメモリ管理装置（ＭＭＵ）１による、データ書き込む動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＤＲＡＭ４に格納されている（Ｙｅｓ）と判定された場合に、行われる。  
（ＳＴ２−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＤＲＡＭ４にデータを書込む命令（WRITE）を受ける。
【００４４】
（ＳＴ２−２）  
続いて、メモリ管理装置１は、上記WRITEを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｄ”，”ＤＮ”，”ＤＷ”であるかを判定することで、対応する物理ページが、ＤＲＡＭ４上にあることを確認することができる。
【００４５】
（ＳＴ２−３）  
続いて、メモリ管理装置１は、フラグが”ＤＮ”の場合には、フラグ”ＤＷ”に変更し、対応するＮＡＮＤ型フラッシュメモリ２の物理ページを解放する。
【００４６】
（ＳＴ２−４）  
続いて、メモリ管理装置１は、ＤＲＡＭ４に対応するデータを書込む。
【００４７】
２−３．ＮＡＮＤからＤＲＡＭを介してデータを読み出す場合  
次に、図９および図１０に則して、ＮＡＮＤ型フラッシュメモリ２からＤＲＡＭ４を介して（ＤＲＡＭにキャッシュして）データを読み出す場合のメモリ管理装置（ＭＭＵ）１による動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＮＡＮＤ型フラッシュメモリ２上に格納されている（Ｎｏ）と判定された場合に、行われる。  
（ＳＴ３−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＮＡＮＤ型フラッシュメモリ２からのデータ読出し命令（READ）を受ける。
【００４８】
（ＳＴ３−２）  
続いて、メモリ管理装置１は、上記READを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｎ”であるかを判定することで、対応する物理ページが、ＮＡＮＤ型フラッシュメモリ２上にあることを確認することができる。
【００４９】
（ＳＴ３−３）  
続いて、メモリ管理装置１は、プロセッサ３のアクセスを止めるためのダミーのＥＣＣエラー発生を示すようにエラーフラグ１２をセットし、完了フラグ１４をリセットする。
【００５０】
（ＳＴ３−４）  
続いて、メモリ管理装置１は、ＥＣＣエラーを発生させるエラーデータ１４を、プロセッサ３に読み込み（READ）させる。
【００５１】
（ＳＴ３−５）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２中に記憶されるプロセッサ３の読み出し要求に係る当該データを、メモリセルアレイ２１から読み出す。
【００５２】
（ＳＴ３−６）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ２１から読み出した当該読み出したページデータを、データキャッシュ２１に読み出す。
【００５３】
（ＳＴ３−７）  
続いて、メモリ管理装置１は、データキャッシュ２１に格納されたページデータを、ＤＲＡＭ４に転送する。
【００５４】
（ＳＴ３−８,ＳＴ３−９）  
続いて、メモリ管理装置１は、ページテーブルＰＴ中のフラグ”Ｎ”をフラグ”ＤＮ”に書き換え、ＤＲＡＭ４のアドレスを書き込む。
【００５５】
続いて、メモリ管理装置１は、完了フラグ１５をセットする。
【００５６】
２−４．ＮＡＮＤからデータを読み出す（直前にＮＡＮＤアクセスなし）場合  
次に、図１１および図１２に則して、ＮＡＮＤ型フラッシュメモリ２からデータを読み出す（直前にＮＡＮＤアクセスなし）場合のメモリ管理装置（ＭＭＵ）１による動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＮＡＮＤ型フラッシュメモリ２上に格納されている（Ｎｏ）と判定された場合に、行われる。  
（ＳＴ４−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＮＡＮＤ型フラッシュメモリ２からのデータ読出し命令（READ）を受ける。
【００５７】
（ＳＴ４−２）  
続いて、メモリ管理装置１は、上記READを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｎ”であるかを判定することで、対応する物理ページが、ＮＡＮＤ型フラッシュメモリ２上にあることを確認することができる。
【００５８】
（ＳＴ４−３）  
続いて、メモリ管理装置１は、対応するＮＡＮＤ型フラッシュメモリ２の物理ページのアドレスとラストページ１１を比較し、これらが”異なる”ことで、直前にＮＡＮＤ型フラッシュメモリ２にアクセスがなかったことを確認する。
【００５９】
（ＳＴ４−４）  
続いて、メモリ管理装置１は、プロセッサ３のアクセスを止めるためのダミーのＥＣＣエラー発生を示すようにエラーフラグ１２をセットし、完了フラグ１４をリセットし、対応するＮＡＮＤ型フラッシュメモリ２の物理ページのアドレスをラストページ１１に記録する。
【００６０】
（ＳＴ４−５）  
続いて、メモリ管理装置１は、ＥＣＣエラーを発生させるエラーデータ１４を、プロセッサ３に読み込み（READ）させる。
【００６１】
（ＳＴ４−６）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２中に記憶されるプロセッサ３の読み出し要求に係る当該データを、メモリセルアレイ２１から読み出す。
【００６２】
（ＳＴ４−７）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ２１から読み出した当該読み出したページデータを、データキャッシュ２１に読み出す。
【００６３】
（ＳＴ４−８）  
続いて、メモリ管理装置１は、完了フラグ１５をセットする。
【００６４】
２−５．ＮＡＮＤからデータを読み出す（直前にＮＡＮＤアクセスあり）場合  
次に、図１３および図１４に則して、ＮＡＮＤ型フラッシュメモリ２からデータを読み出す（直前にＮＡＮＤ型フラッシュメモリ２にアクセスあり）場合のメモリ管理装置（ＭＭＵ）１による動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＮＡＮＤ型フラッシュメモリ２上に格納されている（Ｎｏ）と判定された場合に、行われる。  
（ＳＴ５−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＮＡＮＤ型フラッシュメモリ２からのデータ読出し命令（READ）を受ける。
【００６５】
（ＳＴ５−２）  
続いて、メモリ管理装置１は、上記READを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｎ”であるかを判定することで、対応する物理ページが、ＮＡＮＤ型フラッシュメモリ２上にあることを確認することができる。
【００６６】
（ＳＴ５−３）  
続いて、メモリ管理装置１は、対応するＮＡＮＤ型フラッシュメモリ２の物理ページのアドレスとラストページ１１を比較し、これらが”同じ”ことで、直前にＮＡＮＤ型フラッシュメモリ２の同じページにアクセスがあったことを確認する。
【００６７】
（ＳＴ５−４）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２のデータキャッシュ２２の指定した位置から、データの読み出しを指示する。
【００６８】
（ＳＴ５−５）  
続いて、メモリ管理装置１は、ＮＡＮＤ型フラッシュメモリ２のデータキャッシュ２２から読み出した当該データを、プロセッサ３に転送する。
【００６９】
２−６．ＮＡＮＤにデータを書込む場合  
次に、図１５および図１６に則して、ＮＡＮＤ型フラッシュメモリ２にデータを書込む場合のメモリ管理装置（ＭＭＵ）１による動作について説明する。この動作は、上記判定動作の上記ステップＳＴ０−１の際に、プロセッサ３がアクセスしたいデータがＮＡＮＤ型フラッシュメモリ２上に格納されている（Ｎｏ）と判定された場合に、行われる。  
（ＳＴ６−１）  
図示するように、メモリ管理装置１は、プロセッサ３によるＮＡＮＤ型フラッシュメモリ２へのデータ書込み（WRITE）命令を受ける。
【００７０】
（ＳＴ６−２）  
続いて、メモリ管理装置１は、上記WRITEを受け、ページテーブルＰＴを確認する。ページテーブルＰＴを確認すると、フラグが上記のようにフラグ”Ｎ”であるかを判定することで、対応する物理ページが、ＮＡＮＤ型フラッシュメモリ２上にあることを確認することができる。
【００７１】
（ＳＴ６−３）  
続いて、メモリ管理装置１は、書き込むアドレスとデータを、ライトバッファ１３に格納する。ライトバッファ１３に格納されたＷＲＩＴＥ要求は、後で（非同期に）ＮＡＮＤ型フラッシュメモリ２に書き込まれる。
【００７２】
＜３．プロセッサおよびフラットメモリ全体の動作＞  
次に、図１７および図１８を用い、プロセッサ３およびフラットメモリ全体の動作について説明する。
【００７３】
３−１．プロセッサ３のメモリ管理装置１から送信されるエラーフラグの検出  
まず、図１７に則して、プロセッサ３の動作について説明する。  
（ＳＴ７−１）  
図示するように、まず、プロセッサ３は、ＥＣＣエラー割込みを受けると、メモリ管理装置（ＭＭＵ）１から送信された上記エラーフラグ１２を読み出す。
【００７４】
（ＳＴ７−２）  
続いて、プロセッサ３は、エラーフラグを参照することによって、上記読み出したエラーデータが、本当のＥＣＣエラーか否かを判定する。
【００７５】
（ＳＴ７−３）  
続いて、プロセッサ３は、上記ステップＳＴ７−２の際、上記読み出したエラーデータが本当のＥＣＣエラーであると判定した場合（Ｙｅｓ）、には通常のＥＣＣエラー処理を行う。具体的には、プロセッサ３は、受信したＥＣＣデータに基き、誤り訂正を行う。
【００７６】
（ＳＴ７−４）  
続いて、プロセッサ３は、上記ステップＳＴ７−２の際、上記読み出したエラーデータが本当のＥＣＣエラーでない場合（Ｎｏ）、現在実行しているプロセス１（例えば、ＮＡＮＤ型フラッシュメモリ２の読み出しデータが必要なプロセス等）を待ち状態（WAIT）とする。
【００７７】
（ＳＴ７−５）  
続いて、プロセッサ３は、その間に他の実行可能なプロセス２（例えば、ＮＡＮＤ型フラッシュメモリ２の読み出しデータが必要でないプロセス等）にディスパッチする。
【００７８】
（ＳＴ７−６）  
続いて、プロセッサ３は、メモリ管理装置（ＭＭＵ）１の完了フラグ１５を読み出す。
【００７９】
（ＳＴ７−７）  
続いて、プロセッサ３は、完了フラグ１５が設定（セット）されているか否かを判定する。完了フラグ１５が設定（セット）されていない場合（Ｎｏ）、上記ステップＳＴ７−６に戻る。
【００８０】
（ＳＴ７−８）  
続いて、上記ステップＳＴ７−７の際の完了フラグ１５が設定（セット）されていると判定された場合（Ｙｅｓ）、プロセッサ３は、待ち状態（WAIT）にした、上記プロセスを実行可能状態にする。
【００８１】
３−２．ダミーＥＣＣの場合のフラットメモリ全体の動作  
次に、図１８に則して、メモリ管理装置１がダミーＥＣＣを発行した場合の、フラットメモリ全体の動作について説明する。この説明では、上記ステップＳＴ７−２の際、プロセッサ３が、上記読み出したエラーデータが本当のＥＣＣエラーでない（Ｎｏ）と判定した場合のフラットメモリの動作である。また、本例のプロセッサ３は、少なくとも２つのプロセス１，２を実行可能な２つのプロセッサ３ａ，３ｂを備えるマルチプロセッサを一例に挙げる。マルチプロセッサに限らず、複数のプロセスを実行可能なシングルプロセッサでも良い。
【００８２】
まず、時刻ｔ０の際、プロセッサ３ａはプロセス１（例えば、ＤＲＡＭ４からのデータ読み出し（上記ステップＳＴ１−１〜ＳＴ１−４等））を実行（RUN）する状態であり、プロセッサ３ｂはプロセス２を実行可能（RUNNABLE）な状態である。
【００８３】
続いて、時刻ｔ１の際、即ち、プロセス１の要求を受けたメモリ管理装置１が、ＮＡＮＤ型フラッシュメモリ２上のデータ読み出し（read）を行おうとする際、メモリ管理装置１は、ＥＣＣエラーを発生するダミーデータ１４をプロセッサ３に転送し、プロセッサ３上のＯＳがそれを受ける。
【００８４】
続いて、時刻ｔ２の際、ダミーデータ１４を受けたＯＳは、プロセス１を待ち状態（WAIT状態）にし、実行可能（RUNNABLE）なプロセス２（例えば、ＤＲＡＭ４からのデータ読み出し（上記ステップＳＴ１−１〜ＳＴ１−４等））に切り替える。
【００８５】
一方、この際、メモリ管理装置１は、切り替えられたプロセス２と同時に並行して、ＮＡＮＤ型フラッシュメモリ２からのデータ読み出し（（上記ステップＳＴ４−１〜ＳＴ４−８、上記ステップＳＴ５−１〜ＳＴ５−８等））を行うように制御する。
【００８６】
続いて、時刻ｔ３の際、この例では、プロセス２が完了すると、システムコールをＯＳに送信する。
【００８７】
続いて、時刻ｔ４の際、システムコールを受けたＯＳは、メモリ管理装置の完了フラグ１５を確認する。
【００８８】
続いて、時刻ｔ４の際、完了フラグ１５を確認したＯＳは、完了を確認すると、待ち状態（WAIT状態）としていた、プロセス１を再び実行状態（RUN）とする。
【００８９】
＜他の方法＞  
尚、メモリ管理装置１が、プロセッサ３にプロセスが完了したことを通知する方法は、本例の場合に限られず、例えば、以下のような他の方法が適応可能である。
【００９０】
他の方法１：ＮＡＮＤ型フラッシュメモリ２からＤＲＡＭ４への転送完了時に、メモリ管理装置１が、プロセッサ３に割込みで通知する。
【００９１】
他の方法２：ＮＡＮＤ型フラッシュメモリ２からＤＲＡＭ４への転送に要する時間後に、プロセッサ３のタイマ割込みをセットしておき、割込みがかかったら、メモリ管理装置１の完了フラグ１５をチェックする。
【００９２】
＜４．作用効果＞
上記のように、第１の実施形態に係るメモリ管理装置およびメモリ管理方法によれば、少なくとも下記（１）の効果が得られる。
【００９３】
（１）無駄な停止状態を防止でき、メモリアクセスを効率化できる点で有利である。  
上記のように、第１の実施形態に係る半導体記憶装置（フラットメモリ）は、プロセッサ３のメモリバス９に、（アクセス時間の短い）速いメモリＤＲＡＭ４（ＭＲＡＭなどでも良い）と、（アクセス時間の長い）遅いメモリＮＡＮＤ型フラッシュメモリ２とが混在して接続される。
【００９４】
ここで、アクセス時間は、例えば、ＤＲＡＭ４では、数十〜数百ｎｓ程度であり、ＮＡＮＤ型フラッシュメモリ２では、数十〜数百μｓ程度である。このように、アクセス時間が早いメモリと遅いメモリとの間に、１０００倍程度のアクセス時間の違いがある。より具体的には、ＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ２１からデータキャッシュ２２に対応するページデータを読み出す動作に、特にアクセス時間が必要である。
【００９５】
プロセッサ３が、アクセス時間が遅いメモリ２からデータを読み出している間は、メモリバス９あるいはメモリ管理装置１はこの動作に占有されてしまうため、速いメモリ２へのアクセスもできず、この間は無駄な停止状態となってしまう。
【００９６】
そこで、第１の実施形態に係るメモリ管理装置１では、以下に示す制御を行う。
【００９７】
（Ｉ）プロセッサ３がアクセスしたいデータがＤＲＡＭ２にある場合（ＳＴ０−２）には、ＤＲＡＭ２にデータ読み出し／データ書込みを行う（ＳＴ１−１〜ＳＴ１−４，ＳＴ２−１〜ＳＴ２−４）。
【００９８】
（ＩＩ）プロセッサ３がアクセスしたいデータが、ＮＡＮＤ型フラッシュメモリ２上にある場合は、
（ｉ）ダミーデータによるＥＣＣエラーなのか、本当のＥＣＣエラーなのかを示すエラーフラグ１２を設定する（ＳＴ０−３）。
【００９９】
（ｉｉ）ＥＣＣエラーを起こすダミーデータ１４を発行して、プロセッサ３に読ませて、プロセッサ３のアクセスを中止させる（ＳＴ０−４）。
【０１００】
（ｉｉｉ）ＮＡＮＤ型フラッシュメモリ２の対応するページを、ＤＲＡＭ２上の空きページに読み出す（ＳＴ３−７、ＳＴ４−７）。
【０１０１】
ここで、ＥＣＣエラーを検出したプロセッサ３は、エラーフラグ１２を見て、本当のエラーかＮＡＮＤ型フラッシュメモリ２からの読み出し中かを知る（ＳＴ７−１、ＳＴ７−２）。
【０１０２】
（ｉｖ）ＮＡＮＤ型フラッシュメモリ２から読み出し中なら、そのプロセス１を待ち状態（WAIT状態）にして、その間に他の実行可能なプロセス２を実行する（ＳＴ７−４、ＳＴ７−５）。
【０１０３】
（ｖ）ＮＡＮＤ型フラッシュメモリ２からＤＲＡＭ４へ読み出しが終わった頃に、WAIT状態にしていたプロセス１を実行可能にする（ＳＴ７−７、ＳＴ７−８）。
【０１０４】
上記のような構成および動作によれば、ダミーデータ１４を受けてプロセス１を待ち状態（WAIT状態）にし、実行可能（RUNNABLE）なプロセス２（例えば、ＤＲＡＭ４からのデータ読み出し（上記ステップＳＴ１−１〜ＳＴ１−４等））に切り替え、切り替えられたプロセス２と同時に並行して、ＮＡＮＤ型フラッシュメモリ２からのデータ読み出し（上記ステップＳＴ４−１〜ＳＴ４−８、上記ステップＳＴ５−１〜ＳＴ５−８等）を行うことができる。
【０１０５】
その結果、アクセス時間が長いＮＡＮＤ型フラッシュメモリ２からデータを読み出している間であっても、アクセス時間が短い実行可能（RUNNABLE）なプロセス２を行うことができるため、アクセス時間が短いＤＲＡＭ２へのアクセスも同時に行うことができる。従って、プロセッサ３の無駄な停止状態を防止でき、メモリアクセスを効率化できる点で有利である。
【０１０６】
＜その他のバリエーション＞  
上記（１）の効果を得るためには、本例に示した構成または方法に限られるものではなく、種々のバリエーションが適用可能である。例えば、以下の１．〜３．の解決のバリエーションであっても同様に適用でき、同様の効果が得られる。
【０１０７】
１．ＥＣＣエラーを利用してＮＡＮＤ２へのアクセスを待たせるが、バスエラーなどの割込みを発生させてプロセッサ３に知らせる方法でも良い。この場合も、本当のバスエラーなのかＮＡＮＤへのアクセス待ちかを判断するためのフラグを用意する必要がある。
【０１０８】
２．ＥＣＣエラーを使って、ＮＡＮＤ２からの読み出し中を知らされたプロセッサ３が、ＮＡＮＤ２からＤＲＡＭ４へのキャッシュ完了を知る方法のバリエーション：
ＮＡＮＤ２からＤＲＡＭ４へのページ転送完了を知らせる「完了フラグ」をＭＭＵ１内に用意しておいて、プロセッサ３から読み出せるようにしておき、プロセッサ３は一定のタイミングでフラグを調べて、完了していたらプログラムを再実行する。
【０１０９】
ＮＡＮＤ２からＤＲＡＭ４へのページ転送にかかる時間をあらかじめ調べておいて、プロセッサ３はその時間待ってからプログラムを再実行する。
【０１１０】
ＳＬＣとＭＬＣのように、転送時間の異なる複数のＮＡＮＤがＭＭＵ１につながっている場合は、そのどれから転送するかによって待ち時間を変える。
【０１１１】
ＮＡＮＤ２からＤＲＡＭ４へのページ転送が完了したら、それを知らせる割込みをプロセッサ３にかける。
【０１１２】
３．また、メモリ管理装置１には、後述するように、ＳＬＣとＭＬＣのように、異なる性質の複数のＮＡＮＤ２を接続しても良い。複数のＮＡＮＤ２を接続する際には、ひとつのＮＡＮＤへのアクセス中に他のＮＡＮＤにもアクセスできるように、エラーフラグ１２と完了フラグ１５とラストアドレス１１とを各ＮＡＮＤ毎に用意する必要がある点に留意する。
【０１１３】
［第２の実施形態］
次に、図１９乃至図３０を用い、この発明の第２の実施形態に係るメモリ管理装置およびメモリ管理方法について説明する。この実施形態は、読み出しスレッドをレイテンシに応じて変更することで、メモリアクセスの効率化する一例に関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１１４】
＜５．構成例＞
５−１．システム構成例  
まず、図１９を用い、第２の実施形態に係るシステム構成例について説明する。  
図示するように、本例では、プロセッサ３の１つがＣＰＵ３ａで、このＣＰＵ３ａに接続されるメインメモリ（ＮＡＮＤ型フラッシュメモリ２、ＤＡＲＡＭ４）と、その他の周辺デバイス５０等を示している。
【０１１５】
ＣＰＵ３ａとメモリ管理装置（ＭＭＵ）１との間は、現在標準のメモリバスであるＤＤＲメモリバス９で接続される。近年このＤＤＲメモリバス９は、例えば3Gbps程度を越えるスピードを実現できる。このＭＭＵ１には、ＤＤＲタイプのＤＲＡＭ４と、複数のＮＡＮＤ型フラッシュメモリ２が接続される。ＣＰＵ３ａには、さらにPCIexpressバスが接続されており、このPCIexpressバスに高速のビデオカードを接続することが可能になっている。通常の周辺機器である、モデム（Modem）６１やハードディスク（HDD）６２、ＳＳＤ（Solid state drive）６３、PCIexpressバスに接続されるPCIexpressカード６４などは、サウスブリッジ（South Bridge）コントロールチップ６０を介して、ＣＰＵ３ａに接続される。
【０１１６】
５−２．フラットメモリの構成例  
次に、図２０を用い、本例に係るフラットメモリの構成例について説明する。  
図示するように、本例では、プロセッサ３ａ〜３ｃとして働くＭＰＵ（Micro Processing Unit）およびＧＰＵ（Graphic processing unit）内に、キャッシュメモリＬ１、Ｌ２が備えられている。最近のＭＰＵでは、Ｌ３キャッシュとして、キャッシュメモリＬ１、Ｌ２よりさらに容量の大きなキャッシュメモリを備えているものもあるが、本例ではＬ１,Ｌ２キャッシュを備えたＭＰＵ３ｂ，３ｃを一例として説明する。  
一つのＧＰＵ３ａと二つのＭＰＵ３ｂ，３ｃとによりプロセッサ３としてのＭＰＵ部分が構成され、それらがメモリ管理装置ＭＭＵ（メモリマネージメントユニット）１を介して、メインメモリ（ＮＡＮＤ型フラッシュメモリ２、ＤＲＡＭ４）に接続されている。
【０１１７】
本例では、メインメモリとして一つのＤＲＡＭ４と、３つのＮＡＮＤ型フラッシュメモリ２Ｓ，２Ｍａ，２Ｍｂが接続されている。ＮＡＮＤ型フラッシュメモリ２Ｓは、ＳＬＣ（Single level cell）で、他の２つのＮＡＮＤ型フラッシュメモリ２Ｍａ，２Ｍｂは、ＭＬＣ(Multi level cell)で構成されている。ここで、ＳＬＣ（２値ＮＡＮＤ型フラッシュメモリ）とは、図２２Ｂ，図２２Ｃに示すように、１のメモリセル（ＭＴ）に１ビットデータを記憶可能なＮＡＮＤ型フラッシュメモリセルである。ＭＬＣ（多値ＮＡＮＤ型フラッシュメモリ）とは、図２２Ａ，図２２Ｄ，図２２Ｅに示すように、１のメモリセル（ＭＴ）に多ビットデータを記憶可能なＮＡＮＤ型フラッシュメモリセルである。
【０１１８】
メモリ管理装置１内のＭＰＵ１１５が、メモリにアクセスする場合、論理アドレスを読み出しまたは書き込み動作のために発行し、メモリ管理装置１がこの論理アドレスを実際のメモリチップの物理アドレスに変換する。本例のメインメモリは前述のＤＲＡＭ４、SLC-NANDFlash（２Ｓ）、MLC-NANDFlash（２Ｍａ，２Ｍｂ）から構成されており、どのアドレス空間にデータが書かれるかは、メモリ管理装置１により決定される。
【０１１９】
５−３．どのアドレス空間にデータを書くかについてのメモリ管理装置１による決定  
次に、図２１を用い、どのアドレス空間にデータが書かれるかの決定プロセスについて説明する。本例で扱われるプログラムやデータには、図２１に示すように、静的カラーリング情報７４を有している。この静的カラーリング情報７４は、作成したプログラムやデータがどの程度の頻度で書き込み・消去されるか、またどの程度の頻度で読み出しされるか予想して、プログラマーがプログラムやデータに所定のマトリックス情報の中から前述の予想に基づいて選んだ情報を付加するものである。例えば、メモリ管理装置１は、最初に書き込みを行なう場合、この静的カラーリング情報７４に基づき、ＤＲＡＭ領域４に書くか、SLC-NANDFlash（２Ｓ）、MLC-NANDFlash（２Ｍａ，２Ｍｂ）に書くかを決定する。
【０１２０】
WorkMemory１１６は一時的にプロセッサ３（MPU）が発行したアクセス情報を記憶している。書き込みデータは、Cache DRAM Memory１１８に一時的に記憶される。メモリ管理装置１内のInformation Resistor１１７には、例えば、ＮＡＮＤ型フラッシュメモリ（２Ｓ）の所定の領域に保存された論物変換テーブル７３、静的カラーリング情報７４、Memory固有情報７５、動的カラーリング情報７６が、Powerオン後に自動的に転送される。
【０１２１】
何度か同じデータについて書き込み・消去・読み出しが行なわれると、静的カラーリング情報７４のほかに動的カラーリング情報７６も参照して書き込みアドレスが決定される。動的カラーリング情報７６は、書き込み・消去・読み出しが行なわれた回数を記憶しておき、Memory固有情報と比較することで静的カラーリング情報７３にもとづくアドレスに書き込むか、静的カラーリング情報７３と異なる領域に書き込むか判断するために使用される。例えば、静的カラーリング情報７３が、書き込み・消去回数1000回を上限とするアクセス範囲を示していても、過去の書き込み・消去回数から見積もられるライフエンドでの書き込み・消去回数が5000回を指し示す場合、静的カラーリング情報７３に従ったMLC領域に書かれずに、SLC領域が選択される。また、静的カラーリング情報７３が規定されていない場合には、ＭＭＵ１が動的カラーリング情報７６からメインメモリ中のどのチップに書き込まれるか判断する。
【０１２２】
５−４．メモリの固有情報  
次に、図２２Ａ〜図２２Ｅを用い、メモリの固有情報について説明する。Memory固有情報は、本システムを構成するメインメモリが、どのような容量のＤＲＡＭ４、SLC-NAND Flash（２Ｓ）、MLC-NAND Flash（２Ｍａ，２Ｍｂ）により構成されているか、またメモリ空間にどのようなメモリが割り付けられているかを示す情報である。
【０１２３】
図２２Ａは、通常の2bit/cellのＭＬＣの閾値分布を表した図である。このような2bit/cellは、例えば1000回の書き換えで10000回までの読み出しが可能であろうと見積もられるプログラムまたはデータが記憶されるアドレス空間としてMemory固有情報に記憶されている。
【０１２４】
図２２Ｂは、SLC-NANDフラッシュのうちRead disturb信頼性を犠牲にして高速な書き込みを可能にしたNANDフラッシュメモリの閾値分布を示している。この領域に記憶されるプログラムまたはデータは、読み出しが1000回以下で高速に書き換えが必要なプログラムまたはデータがMemory固有情報として割り付けられる。
【０１２５】
図２２Ｃは、SLC-NANDフラッシュのうち書き込み速度を犠牲にしてRead回数が100000回必要と計算されるプログラムまたはデータがMemory固有情報として割り付けられる。
【０１２６】
図２２Ｄは、3bit/cellのMLC-NANDフラッシュメモリの閾値分布を示しており、書き換え回数が500回、読み出し回数が1000回以下と見積もられるプログラムまたはデータはこの領域に保存することが可能で、Memory固有情報としてそのような条件が割り付けられる。
【０１２７】
図２２Ｅは、4bit/cellのMLC-NANDフラッシュメモリの閾値分布を示しており、書き換え回数が100回、読み出し回数が1000回以下と見積もられるプログラムまたはデータはこの領域に保存することが可能で、Memory固有情報としてそのような条件が割り付けられる。
【０１２８】
５−５．メモリマップ例  
次に、図２３を用い、本例に係るメインメモリのメモリマップ例について説明する。  
図２３に示すように、ＤＲＡＭ４、SLC-NANDフラッシュ（２Ｓ）、MLC-NANDフラッシュ（２Ｍａ，２Ｍｂ）をメモリマップに関連付けた場合の一例がされている。
【０１２９】
DRAM領域を除いて、NAND Flashメモリ領域は、それぞれ前記メモリ領域のほかに、同じ書き込み方式が採用される冗長Block領域が前記メモリ領域の10%程度割り当てられる。この冗長Block領域は、実使用中にある本体ブロックが不良になった場合に使用されるとともに、あるページデータの書き換えのためそのページが所属するBlockデータが引越しされる場合に必要な冗長領域としても使用される。
【０１３０】
本例では、プロセッサ３のＭＰＵ（３ａ〜３ｃ）が発行する仮想アドレス上のメモリに対する読み書きのリクエスト（Function）は、メモリ管理ユニット（ＭＭＵ）１により、物理アドレスに変換されて、対応する領域のデータにアクセスされる。リクエスト（Function）の並び替えについては、図２５〜図２８において、後述する。
【０１３１】
５−６．メモリ管理装置（ＭＭＵ）の構成例  
次に、図２４を用い、第２の実施形態に係るメモリ管理装置（ＭＭＵ）１の構成例について説明する。図示するように、メモリ管理装置（ＭＭＵ）１は、ＭＭＵ制御部３１と、ＭＭＵ  Ｉ／Ｆ回路部３２とを備える。  
ＣＰＵに接続されるＤＤＲメモリバス９は、ＭＭＵ制御部３１内のＭＰＵ１１５に接続される。  
ＭＰＵ１１５は、ＤＤＲメモリバス９を介して、外部ＣＰＵが要求するメモリアクセス要求を処理する。メモリアクセス要求は、まずＭＰＵ１１５に接続されたWork Memory１１６にフェッチされ記憶される。ＭＰＵ１１５は、このフェッチされた要求を順にFunction制御部１２０に転送する。
【０１３２】
Function制御部１２０は、順次メモリアクセス要求をFunctionスタックＡ（ＦＳＡ）に記憶させる。この状態が、図２５で後述する変更前の状態に相当する。  
Function制御部１２０は、さらにFunctionスタックＡ（ＦＳＡ）にスタックされたメモリアクセス要求を、論物変換回路１２１を介して得られる物理アドレスのカラーリング情報１２５，１２６に基づいて並べ替えて、FunctionスタックＢ（ＦＳＢ）に記憶させる。この状態が、図２７で後述する変更後の状態に相当する。
【０１３３】
FunctionスタックＡ（ＦＳＡ）に記憶された複数のメモリアクセス情報は、それぞれ静的カラーリング参照情報１２５、動的カラーリング参照情報１２６、メモリ固有情報１２３を、論物変換制御部１２１が参照することにより、DRAM領域、SLC-NANDフラッシュ領域、MCL(2bit/cell)-NANDフラッシュ領域、MLC(3bit/cell)-NANDフラッシュ領域、MLC(4bit/cell)-NANDフラッシュ領域の何処にかかれるかメモリ処理される前に判断される。
【０１３４】
その判断結果に基づき、Function制御部１２０は、どのFunctionとどのFunctionを並行して実行すれば最適なパフォーマンスになるか決定する。その決定された結果、複数のメモリアクセス要求がFunction制御部１２０により並べ替えられて、FunctionスタックＢ（ＦＳＢ）に記憶される。そして順次FunctionスタックＢ（ＦＳＢ）にスタックされた順番でメモリアクセスが処理される。各FunctionスタックＢ（ＦＳＢ）がアクセスするアドレスは、すでに論物変換制御部１２１により決定されており、このアドレス情報と書き込み/読み出し等のFunction要求の情報が、メモリ制御信号発生部１２４に送られる。
【０１３５】
メモリ制御信号発生部１２４は、アクセスするアドレスや制御信号を、ＤＲＡＭ Ｉ／Ｆ１３１か、ＮＡＮＤ Ｉ／Ｆ１３２に送ると共に、書き込みデータはＥＣＣ／ＥＤＣ回路１２４を介して、ＤＲＡＭ Ｉ／Ｆ１３１かＮＡＮＤ Ｉ／Ｆ１３２に送られる。
【０１３６】
アドレスがＤＲＡＭ領域を示す場合は、メモリ制御信号発生回路１２４は、ＤＲＡＭ Ｉ／Ｆ１３１に、ＤＤＲメモリバスを介して、制御信号と書き込みデータを転送する。この場合、ＥＣＣ／ＥＤＣ回路１２４は、1bitのエラーコレクション、2bitのエラーディテクション回路としてはたらく。これらのＥＣＣの訂正能力は接続されるメモリデバイスにより適時最適な数が選択される。
【０１３７】
またアドレスがSLC-NANDフラッシュ領域を示す場合は、メモリ制御信号発生回路１２４は、ＮＡＮＤ Ｉ／Ｆ１３２に、ＮＡＮＤフラッシュメモリバスを介して、制御信号と書き込みデータを転送する。この場合、ＥＣＣ／ＥＤＣ回路１２７は、8bitのエラーコレクション、9bitのエラーディテクション回路としてはたらく。
【０１３８】
さらにアドレスがMCL-NANDフラッシュ領域を示す場合は、メモリ制御信号発生回路１２４は、ＮＡＮＤ Ｉ／Ｆ１３２に、ＮＡＮＤフラッシュメモリバスを介して、制御信号と書き込みデータを転送し、ＥＣＣ／ＥＤＣ回路１２７は24bit以上のエラーコレクション回路としてはたらく。
【０１３９】
このように、ＥＣＣ／ＥＤＣ回路１２７は、アクセスする対象アドレス領域により、異なるエラーコレクションのパワーを持つ。このことにより、ＤＲＡＭアクセスの遅延を最小にし、またSLC-NANDフラッシュのアクセス遅延をMLC-NANDフラッシュの遅延より高速化することができ、処理されるカラーリングデータに基づきパフォーマンスを最適化することができる点で有利である。
【０１４０】
＜６．読出しファンクションの並び替えについて＞
次に、図２５乃至図２８を用い、メモリ管理装置（ＭＭＵ）１による読み出しファンクション要求の並び替えについて説明する。
【０１４１】
６−１．読み出し要求（変更前）  
まず、図２５および図２６を用い、変更前の読み出しファンクション要求およびレイテンシを説明する。
【０１４２】
図２５に示すように、本例では、７個の読み出し命令（Function１〜Function７）が連続する場合を示している。それぞれの読み出し先が、メモリ管理ユニット（ＭＭＵ）１により変換され、Function１ではＤＲＡＭ領域のアドレス空間から所定のデータが読み出され、Function２ではSLC-NANDフラッシュ領域から所定のデータが読み出される。同様に、その後もFunction３でSLC領域、Function４でＭＬＣ領域、Function５でＤＲＡＭ領域、Function６でＭＬＣ領域、Function７でＤＲＡＭ領域のアドレス空間のデータが読み出される。
【０１４３】
図２６に示すように、それぞれのFunction１〜７が、シーケンシャルに実行される場合、Function１では100nsecのレイテンシでデータを読み出せるが、Function２では20usecもレイテンシがかかる。さらにFunction４のMLC領域からデータを読み出す場合、120usecものレイテンシが必要となり、ＤＲＡＭの場合と比べて1200倍も遅いスピードでデータが読み出される。
【０１４４】
このため、Function５のＤＲＡＭ４のデータを読み出すまで160.1usecものWaitが必要になる。またＳＬＣやＭＬＣ領域のデータ読み出し要求が発生すると、ＭＰＵはそのデータが読み出されるまでアイドル状態となり、ＭＰＵのパフォーマンスは非常に悪くなる。
【０１４５】
そこで、本例では、プロセッサのＭＰＵ（３ａ〜３ｃ）から発行されるFunction命令をメモリ管理ユニット（ＭＭＵ）１内のFunctionスタックＡ（ＦＳＡ）にスタックしており、ＳＬＣやＭＬＣの読み出し動作を行なっている間に並行して、ＤＲＡＭ４の読み出し・書き込み動作を行なうことで、パフォーマンスの向上を実現するものである。
【０１４６】
６−２．読み出し要求（変更後）  
次に、図２７および図２８を用い、変更後の読み出しファンクション要求およびレイテンシを説明する。
【０１４７】
図２７に示すように、図中の上部に示すもともとのMPUからの読み出し要求（変更前）を、図２７のボックス内に示すように、メモリ管理装置１が並び替える。より具体的には、メモリ管理装置１は、複数のファンクションと、レイテンシが長い第１ファンクション（例えば、read１，read５等）の第１レイテンシの間に、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクション（例えば、read２，read３，read４等）を行えるように、変更後のメモリアクセス要求として、前記複数のファンクションを並べ替える。
【０１４８】
より具体的には、図２８に示すように、本例の場合、メモリ管理装置１は、レイテンシが長いＭＬＣ領域の読み出し（read１）を最初に行なった後、120usecのBusy時間が発生する間に、read２のＳＬＣ領域の読み出しを実行する。read２のレイテンシは20usecであり、その後のシーケンシャル読み出しは4kBx20nsec=80usec必要となる。このため、120usecのBusy時間中に、read２の読み出し（80usec+20usec）を終了することができる。
【０１４９】
続いて、メモリ管理装置１は、Function３のＳＬＣ領域の読み出し（read３）を行なうが、その読み出しのレイテンシは20usecであり、その間にレイテンシ100nsecのＤＲＡＭ４の読み出し（read４）を並行して行なうことができる。この際の制御は、上記第１の実施形態に示した同様の制御を行う。
【０１５０】
続いて、メモリ管理装置１は、ＭＬＣ領域のデータ読み出し（read５）を行うが、そのレイテンシ120usecの間に、ＤＲＡＭ４のデータ読み出し（read６, read７）を並行して行うことができる。この際の制御は、上記第１の実施形態に示した同様の制御を行う。
【０１５１】
このように、本例に係るメモリ管理装置（ＭＭＵ）１は、ＭＰＵが発行するメモリアクセス要求を、変更前のメモリアクセス要求をFunctionスタックＡ（ＦＳＡ）にスタッキングさせ、複数のファンクションのうち、レイテンシが長い第１ファンクションの第１レイテンシの間に終了する、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクションが同時に行えるように、複数のファンクションを並べ替える。並び替えたファンクションは、FunctionスタックＢ（ＦＳＢ）に記憶され、実行される。  
そのため、レイテンシの長いメモリアクセス（第１ファンクション）を実行している間に、レイテンシの短い読み出し処理（第２ファンクション）を並行して行なうことができる。その結果、実行的なメモリアクセスのパフォーマンスを向上することができる点で有利である。
【０１５２】
＜７．作用効果＞  
上記のように、第２の実施形態に係るメモリ管理装置およびメモリ管理方法によれば、少なくとも上記（１）と同様の効果が得られる。さらに、第２の実施形態によれば、少なくとも下記（２）に示す効果を得ることができる。  
（２）メモリアクセス要求を並び替えることで、メモリ管理装置１のメモリアクセスを最適化でき、プロセッサ３の処理能力を更に向上することができる。  
さらに、第２の実施形態に係るメモリ管理装置（ＭＭＵ）１は、変更前に係るメモリアクセス要求（例えば、図２５）をFunctionスタックＡ（ＦＳＡ）に記憶させ、FunctionスタックＡ（ＦＳＡ）にスタックされたメモリアクセス要求を、論物変換回路１２１を介して得られる物理アドレスのカラーリング情報１２５，１２６に基づいて並べ替えて（より具体的には、例えば、図２７に示すように、複数のファンクションのうち、レイテンシが長い第１ファンクション（例えば、read１，read５等）の第１レイテンシの間に、第１ファンクションよりもレイテンシが短い少なくとも１つの第２ファンクション（例えば、read２，read３，read４等）を行えるように、変更後のメモリアクセス要求として、前記複数のファンクションを並べ替えて）、FunctionスタックＢ（ＦＳＢ）に記憶させるFunction制御部１２０を備える。
【０１５３】
上記の構成によれば、メモリ管理装置１が受け取る読み出しスレッドを変更することで読み出し効率を上げることが可能となる。オリジナルのスレッドの順番を、多値の読み出しのスレッドの優先順位を上げて先行して実行し、ＮＡＮＤ型フラッシュメモリ２のレイテンシの時間を利用して、ＤＲＡＭ４への読み出しスレッドを実行する。マルチプロセッサ３からの読み出し要求のうち、ＤＲＡＭ４読み出しアクセスの結果で、次の処理に進める実行プロセスは、他のプロセッサのＮＡＮＤ２読み出し要求の処理が終了するのを待つことなく、実行することができるため、プロセッサ３の実質的な処理能力を更に向上させることができる点で有利である。
【０１５４】
［変形例１（３チャンネル構成の一例）］  
次に、図２９を用い、変形例１に係るメモリ管理装置およびメモリ管理方法について説明する。この変形例１は、ＮＡＮＤ型フラッシュメモリの接続が３チャンネル構成の一例に関するものである。この説明において、上記第２の実施形態と重複する部分の詳細な説明を省略する。  
図２９に示すように、本例では、メモリ管理装置１に制御されるＮＡＮＤ型フラッシュメモリ２が、３チャンネル同時にアクセスできるように構成されている。
【０１５５】
それぞれのチャンネル１〜３は、ＳＬＣ領域とＭＬＣ領域とを有している。
【０１５６】
ＮＡＮＤ型フラッシュメモリ２へのアクセスが発生した場合、メモリ制御信号発生部１２４は、３チャンネルのＮＡＮＤ controller１３５ａ〜１３５ｃに、順次アクセス要求を発行し、それぞれのＮＡＮＤ controller１３５ａ〜１３５ｃにアクセス要求がフェッチされる。それぞれのアクセス要求は、３つのＮＡＮＤ controller１３５ａ〜１３５ｃにより並行して処理され、ＥＣＣ／ＥＤＣ回路１３６ａ〜１３６ｃを経由して、それぞれのチャンネル１〜３に接続されるＮＡＮＤ型フラッシュメモリに伝達され、処理される。
【０１５７】
本変形例２での書き込み処理は、例えば、３つのＭＬＣ領域の書き込み要求と、３つのＳＬＣ要求への書き込み要求が発生した場合、Function制御部１２０は、まず、それぞれのチャンネルのＭＬＣ領域の書き込みを優先し、その後３つのＳＬＣ領域（２Ｓ１〜２Ｓ３）の書き込みを、後ろに並べ替える。そして、Function制御部１２０は、Function制御部１２０で順番が置き換えられたFunctionのうち、最初の３つのＭＬＣへの書き込み要求は、チャンネル１からチャンネル３のＮＡＮＤ controller１３５ａ〜１３５ｃにフェッチされる。そしてＮＡＮＤ controller１３５ａ〜１３５ｃにより、これらの３つの処理が並行して行われる。ＭＬＣ−ＮＡＮＤ型フラッシュメモリ（２Ｍａ１〜２Ｍｂ３）の書き込み時間は、１msec程度と長いため、その間そのチップはBusy状態となる。その次の３つのＳＬＣ−ＮＡＮＤ型フラッシュメモリ（２Ｓ１〜２Ｓ３）の書き込み要求は、チャンネル１からチャンネル３のＮＡＮＤ controller１３５ａ〜１３５ｃにフェッチされ実行される。
【０１５８】
この結果、先のＭＬＣ−ＮＡＮＤ型フラッシュメモリ（２Ｍａ１〜２Ｍｂ３）書き込みが終了する前に、３つのチャンネルのＳＬＣ−ＮＡＮＤ型フラッシュメモリ（２Ｓ１〜２Ｓ３）書き込みを、先に終了することができる。このように、Function制御部１２０が、３つのＮＡＮＤチャンネルの書き込み・読み出しレイテンシを考慮して、ＮＡＮＤ命令の順番を入れ替え、３チャンネル同時動作を優先して行うことにより、常にＮＡＮＤフラッシュの並列処理を行うことができ、パフォーマンスを更に向上することができる。
【０１５９】
＜作用効果＞  
上記のように、変形例１に係るメモリ管理装置およびメモリ管理方法によれば、少なくとも上記（１）および（２）と同様の効果が得られる。  
さらに、変形例１に係るメモリ管理装置１は、ＮＡＮＤ型フラッシュメモリの３チャンネル構成に対応するために、ＭＭＵＩ／Ｆ回路部３２が、３つのＮＡＮＤ controller１３５ａ〜１３５ｃ，ＥＣＣ／ＥＤＣ回路１３６ａ〜１３６ｃ，ＮＡＮＤＩ／Ｆ１３２ａ〜１３２ｃを有する点で、上記第２の実施形態と相違する。  
そのため、Function制御部１２０が、３つのＮＡＮＤチャンネルの書き込み・読み出しレイテンシを考慮して、ＮＡＮＤ命令の順番を入れ替え、３チャンネル同時動作を優先して行うことにより、常にＮＡＮＤフラッシュの並列処理を行うことができ、パフォーマンスを更に向上することができる点で有利である。  
また、必要に応じて、ＮＡＮＤ型フラッシュメモリが複数チャンネル構成となった場合に本例を適用することができる。
【０１６０】
［変形例２（データ出力の一例）］  
次に、図３０を用い、変形例２に係るメモリ管理装置およびメモリ管理方法について説明する。この変形例２は、データ出力の場合の一例である。この説明において、上記第２の実施形態と重複する部分の詳細な説明を省略する。  
図３０に示すように、本例では、ＤＲＡＭ４またはＮＡＮＤフラッシュメモリ２から、順番が入れ替えられた読み出し要求に対応して所定のアドレスからデータが出力される場合について説明する。  
図示するように、メモリチップ（ＤＲＡＭ４またはＮＡＮＤフラッシュメモリ２）から読み出されたデータは、ＤＲＡＭＩ／Ｆ１３１，ＮＡＮＤＩ／Ｆ１３２を介して、ＥＣＣ／ＥＤＣ回路１２７でエラーがあればコレクションされ、エラーがなければスルーしてＭＭＵ制御部３１のWork Memory１１６に記憶される。
【０１６１】
前述のように、この読み出されたデータが、ホストプロセッサ３が発行したどの読み出し命令に対応するかは、FunctionスタックＡ（ＦＳＡ）とFunctionスタックＢ（ＦＳＢ）とを、Function制御部１２０が参照することにより解読される。  
Function制御部１２０は、Work Memory１１６にスタックされたデータを、FunctionスタックＡ（ＦＳＡ）に記憶されているホストプロセッサ３が発行した読み出し命令の順番に、再び並び直す。
【０１６２】
そして、並び直したプロセッサ３が要求した命令の順番で、Work Memory１１６からＤＤＲメモリバス９を介してホストプロセッサ３に転送する。
【０１６３】
この転送が終了した時点で、FunctionスタックＡ（ＦＳＡ）およびFunctionスタックＢ（ＦＳＢ）に記憶されているメモリアクセス情報が、スタックから消去されクリアされる。
【０１６４】
このように、メモリ管理装置１が、実際のメモリアクセスの順番をカラーリング情報、チャンネル情報を含むメモリ領域の情報が格納されたメモリ固有情報をもとに変換してメモリにアクセスし、読み出されたメモリ情報をホストプロセッサ３に転送する場合は、メモリ管理装置１が変換したアクセスの順番でなく、元のホストプロセッサ３のメモリアクセスの順番でメモリ読み出しデータを出力して返す。そのため、データ出力の場合であっても、メモリシステム全体のパフォーマンスを向上させることができる点で有利である。
【０１６５】
＜作用効果＞  
上記のように、変形例２に係るメモリ管理装置およびメモリ管理方法によれば、少なくとも上記（１）および（２）と同様の効果が得られる。  
さらに、変形例２に係るメモリ管理装置１は、読み出されたメモリ情報をホストプロセッサ３に転送する場合は、メモリ管理装置１が変換したアクセスの順番でなく、元のホストプロセッサ３のメモリアクセスの順番でメモリ読み出しデータを出力して返す。そのため、データ出力の場合であっても、メモリシステム全体のパフォーマンスを向上させることができる点で有利である。  
尚、上記各実施例および変形例において、メモリ管理装置１内のプロセッサ３に接続されるWork Memory１１６は、ＭＭＵ制御部３１内に配置される場合に限られない。例えば、メインメモリであるＤＲＡＭ領域４の先頭の一部分を使用する場合であっても、同様に適用でき同様の効果を得ることが可能である。
【０１６６】
以上、第１，第２の実施形態および変形例１，２を用いて本発明の説明を行ったが、この発明は上記各実施形態および各変形例に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記各実施形態および各変形例には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば各実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【０１６７】
１…メモリ管理装置、２…ＮＡＮＤ型フラッシュメモリ、３…（外部）プロセッサ、４…ＤＲＡＭ、ＰＴ…ページテーブル、１１…ラストページ、１２…エラーフラグ、１３…ライトバッファ、１４…エラーデータ、１５…完了フラグ。
【図１】
2011118469.tif 000003
【図２】
2011118469.tif 000004
【図３】
2011118469.tif 000005
【図４】
2011118469.tif 000006
【図５】
2011118469.tif 000007
【図６】
2011118469.tif 000008
【図７】
2011118469.tif 000009
【図８】
2011118469.tif 000010
【図９】
2011118469.tif 000011
【図１０】
2011118469.tif 000012
【図１１】
2011118469.tif 000013
【図１２】
2011118469.tif 000014
【図１３】
2011118469.tif 000015
【図１４】
2011118469.tif 000016
【図１５】
2011118469.tif 000017
【図１６】
2011118469.tif 000018
【図１７】
2011118469.tif 000019
【図１８】
2011118469.tif 000020
【図１９】
2011118469.tif 000021
【図２０】
2011118469.tif 000022
【図２１】
2011118469.tif 000023
【図２２Ａ】
2011118469.tif 000024
【図２２Ｂ】
2011118469.tif 000025
【図２２Ｃ】
2011118469.tif 000026
【図２２Ｄ】
2011118469.tif 000027
【図２２Ｅ】
2011118469.tif 000028
【図２３】
2011118469.tif 000029
【図２４】
2011118469.tif 000030
【図２５】
2011118469.tif 000031
【図２６】
2011118469.tif 000032
【図２７】
2011118469.tif 000033
【図２８】
2011118469.tif 000034
【図２９】
2011118469.tif 000035
【図３０】
2011118469.tif 000036