(57)【要約】【課題】頻繁にアクセスされる論理アドレスが処理の進行と共に変化する状況においても、適切な物理アドレスの割当てを行うことを可能とする。【解決手段】主記憶部２０は、揮発性メモリ２１と不揮発性メモリ２２とを有する。補助記憶部３０は、それぞれが、論理アドレスと主記憶部２０における物理アドレスとを対応付けて記憶する複数のアドレス変換テーブルを、複数の動作モードに対応付けて記憶する。変換テーブル切替制御部１４は、アドレス変換部１２で使用されるアドレス変換テーブルを、動作モードに応じて切り替える。アクセス制御部１１は、アドレス変換部１２で変換された物理アドレスを用いて主記憶部２０にアクセスする。【選択図】図１
2019212080.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと第２のメモリとを含む主記憶部と、
論理アドレスを含むアクセス要求を発行するバスマスタから受信したアクセス要求に基づいて前記主記憶部にアクセスするアクセス制御部と、
それぞれが、前記論理アドレスと前記主記憶部における物理アドレスとを対応付けて記憶する複数のアドレス変換テーブルを、複数の動作モードに対応付けて記憶するテーブル記憶部と、
前記アドレス変換テーブルを使用して、前記アクセス要求に含まれる論理アドレスを物理アドレスへと変換するアドレス変換部と、
前記アドレス変換部で使用されるアドレス変換テーブルを、前記動作モードに応じて切り替える変換テーブル切替制御部とを備え、
前記アクセス制御部は、前記アドレス変換部で変換された物理アドレスを用いて前記主記憶部にアクセスする記憶装置。
【請求項２】
前記アドレス変換部は、前記アクセス要求に含まれる論理アドレスを含むエントリが前記アドレス変換テーブルに存在するか否かを調べ、存在する場合は、前記論理アドレスを、当該エントリにおいて前記論理アドレスに対応付けて記憶されている物理アドレスに変換する請求項１に記載の記憶装置。
【請求項３】
前記アドレス変換部は、前記アクセス要求に含まれる論理アドレスを含むエントリが前記アドレス変換テーブルに存在しない場合は、所定の割当てに従って前記論理アドレスを前記物理アドレスに変換する請求項２に記載の記憶装置。
【請求項４】
前記アドレス変換部で使用されるアドレス変換テーブルが切り替えられる場合であって、前記アドレス変換テーブルの切替えの前後で、前記論理アドレスに対応付けて記憶される物理アドレスが異なる場合に、前記物理アドレスに記憶されるデータを入れ替えるデータ入替部を更に有する請求項１に記載の記憶装置。
【請求項５】
前記第１のメモリは揮発性メモリであり、前記第２のメモリは不揮発性メモリである請求項１に記載の記憶装置。
【請求項６】
前記第１のメモリの書換え可能回数は、前記第２のメモリは書換え可能回数よりも多い請求項１に記載の記憶装置。
【請求項７】
前記アクセス制御部に対して発行されたアクセス要求を監視し、前記論理アドレスのデータに対してどれくらいアクセスがあったかを示すアクセス頻度データを記憶するアクセス頻度計測部と、
前記アクセス頻度データに基づいて、前記動作モードごとに、前記アドレス変換テーブルを生成する変換テーブル生成部とを更に有する請求項１に記載の記憶装置。
【請求項８】
前記アクセス頻度データは、前記動作モードと、前記アクセス要求に含まれる論理アドレスとを含む請求項７に記載の記憶装置。
【請求項９】
前記変換テーブル生成部は、前記アクセス頻度データにおいて、前記第１のメモリの物理アドレスに変換される論理アドレスのそれぞれに対するアクセス回数を集計した第１のアクセス頻度集計データと、前記第２のメモリの物理アドレスに変換される論理アドレスのそれぞれに対するアクセス回数を集計した第２のアクセス頻度集計データとに基づいて、前記アドレス変換テーブルを生成する請求項７に記載の記憶装置。
【請求項１０】
前記第１のアクセス頻度集計データ、及び前記第２のアクセス頻度集計データは、アクセス先の論理アドレスと、変換後の物理アドレスと、アクセス回数とを含み、
前記変換テーブル生成部は、前記第１のアクセス頻度集計データにおけるアクセス回数を、前記アクセス回数が小さい順に順次に選択し、前記第２のアクセス頻度集計データにおけるアクセス回数を、前記アクセス回数が大きい順に順次に選択し、前記選択された前記第１のアクセス頻度集計データにおけるアクセス回数と前記前記第２のアクセス頻度集計データにおけるアクセス回数とを比較し、該比較の結果に基づいて前記アドレス変換テーブルを生成する請求項９に記載の記憶装置。
【請求項１１】
前記変換テーブル生成部は、前記選択された第２のアクセス頻度集計データにおけるアクセス回数が、前記選択された第１のアクセス頻度集計データにおけるアクセス回数より大きい場合、前記第１のアクセス頻度集計データにおけるアクセス先の論理アドレスと、前記第２のアクセス頻度集計データにおける変換後の物理アドレスとの組、及び前記第２のアクセス頻度集計データにおけるアクセス先の論理アドレスと、前記第１のアクセス頻度集計データにおける変換後の物理アドレスとの組を前記アドレス変換テーブルに追加する請求項１０に記載の記憶装置。
【請求項１２】
過去の前記第１のアクセス頻度集計データ及び前記第２のアクセス頻度集計データと、新たに集計された前記第１のアクセス頻度集計データ及び前記第２のアクセス頻度集計データとをそれぞれ比較し、差がしきい値以上の場合に前記変換テーブル生成部に前記アドレス変換テーブルを生成させるアクセス頻度比較部を更に有する請求項９に記載の記憶装置。
【請求項１３】
前記変換テーブル生成部は、少なくとも１つの動作モードに対して複数のアドレス変換テーブルを生成し、かつ該少なくとも１つの動作モードにおいて、前記複数のアドレス変換テーブルを切り替えて使用する順序とタイミングとを表す制御シーケンスを生成し、
前記変換テーブル切替制御部は、前記制御シーケンスに従って前記アドレス変換テーブルを切り替える請求項７に記載の記憶装置。
【請求項１４】
前記制御シーケンスは前記タイミングを表すデータとして使用期間を含み、
前記変換テーブル切替制御部は、前記使用期間が経過するごとにアドレス変換テーブルを切り替える請求項１３に記載の記憶装置。
【請求項１５】
前記変換テーブル生成部は、前記第２のメモリの物理アドレスを循環シフトさせた複数のアドレス変換テーブルを生成し、
変換テーブル切替制御部は、前記複数のアドレス変換テーブルを順次に切り替えて選択する請求項７に記載の記憶装置。
【請求項１６】
記憶装置と、
論理アドレスを含むアクセス要求を発行し、前記記憶装置にアクセスするバスマスタと、
動作モード状態保持部に動作モードを設定する動作モード設定部とを備え、
前記記憶装置は、
第１のメモリと第２のメモリとを含む主記憶部と、
前記バスマスタから受信したアクセス要求に基づいて前記主記憶部にアクセスするアクセス制御部と、
それぞれが、前記論理アドレスと前記主記憶部における物理アドレスとを対応付けて記憶する複数のアドレス変換テーブルを、複数の動作モードに対応付けて記憶するテーブル記憶部と、
前記アドレス変換テーブルを使用して、前記アクセス要求に含まれる論理アドレスを物理アドレスへと変換するアドレス変換部と、
前記アドレス変換部で使用されるアドレス変換テーブルを、前記動作モード状態保持部に設定される動作モードに応じて切り替える変換テーブル切替制御部とを有し、
前記アクセス制御部は、前記アドレス変換部で変換された物理アドレスを用いて前記主記憶部にアクセスするメモリアクセスシステム。
【請求項１７】
前記バスマスタは中央制御装置を含む請求項１６に記載のメモリアクセスシステム。
【請求項１８】
前記中央制御装置は、前記主記憶部に記憶されたプログラムを読み出して実行する請求項１７に記載のメモリアクセスシステム。
【請求項１９】
前記中央制御装置は、前記動作モード設定部を兼ねる請求項１７に記載のメモリアクセスシステム。
【請求項２０】
前記バスマスタが発行したアクセス要求を監視し、前記論理アドレスのデータに対してどれくらいアクセスがあったかを示すアクセス頻度データを記憶するアクセス頻度計測部と、
前記アクセス頻度データに基づいて、前記動作モードごとに、前記アドレス変換テーブルを生成する変換テーブル生成部とを含む補助装置を更に有する請求項１６に記載のメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置及びメモリアクセスシステムに関し、例えば論理アドレスを物理アドレスに変換してアクセスを行う記憶装置、及びそのような記憶装置を含むメモリアクセスシステムに関する。
【背景技術】
【０００２】
特許文献１は、書換え可能回数が異なる複数の記憶手段に接続されるアクセス制御装置を開示する。特許文献１において、複数の記憶手段は、例えば、ＭＬＣ（Multiple Level Cell）方式のＮＡＮＤ  ＦＬＡＳＨ（以下、単にＭＬＣとも呼ぶ）と、ＳＬＣ（Single Level Cell）方式のＮＡＮＤ  ＦＬＡＳＨ（以下、単にＳＬＣとも呼ぶ）とを含む。ＳＬＣの書換え可能回数は、ＭＬＣの書換え可能回数よりも多い。アクセス制御装置は、外部アドレスと、ＭＬＣ又はＳＬＣでのデータの内部アドレスと、書換え回数とを対応付けた変換テーブルを記憶する。
【０００３】
アクセス制御装置は、外部装置が外部アドレスを指定してデータを書き込む場合、書込みが指定された外部アドレスに対応する内部アドレスがＭＬＣの内部アドレスであるか否かを判断する。アクセス制御装置は、外部アドレスに対応する内部アドレスがＭＬＣの内部アドレスにある場合は、その内部アドレスに対応する書換え回数がしきい値を超えているか否かを判断する。アクセス制御装置は、しきい値を超えていると判断した場合、ＭＬＣの内部アドレスに記憶されたデータを、ＳＬＣの内部アドレスに移動する。また、アクセス制御装置は、変換テーブルにおいて、移動したデータの外部アドレスに対応する内部アドレスを、移動先の内部アドレスに置換することで、変換テーブルを更新する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−６４３９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、有限な書換え回数を持つメモリデバイスに対して、書込み回数に対するしきい値が設定される。ある内部アドレスに対する書き込み回数が設定されたしきい値に到達した場合、外部アドレスに対応する内部アドレスが、書換え可能回数の多いメモリデバイスの内部アドレスに変更される。このようにすることで、アクセス制御装置は、外部アドレスに対し、データの書換え頻度に応じて適切な記憶媒体を割り当てることができる。しかしながら、特許文献１では、書込み回数がしきい値に到達するまで、書換え可能回数が少ないメモリデバイスを読み書きする。別の言い方をすれば、特許文献１では、あらかじめ定められた書換え回数に達するまで、書換え可能回数が少ないメモリデバイスの書換え回数が消費されることとなる。特許文献１において、変換テーブルの更新はしきい値到達後に行われ、変換テーブルの更新は後追いである。
【０００６】
また、特許文献１において、書換え頻度が低く、従って書換え可能回数が少ないメモリデバイスに割り当てられている外部アドレスに対し、その後の処理の進行に伴って、頻繁にデータの書換えが行われる場合もある。その場合、その外部アドレスに対応する内部アドレスは、書換え可能回数が少ないメモリデバイスにおいてデータ書換えがしきい値に到達するまで実施された後に、書換え可能回数が多いメモリデバイスの内部アドレスに変更される。このように、特許文献１では、変換テーブルの更新が後追いとなることで、書換え可能回数が少ないメモリデバイスの有限な書換え回数が消費されるという問題がある。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、記憶装置は、第１のメモリと第２のメモリとを含む主記憶部と、アドレス変換テーブルを使用して、アクセス要求に含まれる論理アドレスを第１のメモリ又は第２のメモリの物理アドレスへと変換するアドレス変換部と、アドレス変換部で使用されるアドレス変換テーブルを、動作モードに応じて切り替える変換テーブル切替制御部とを備える。
【発明の効果】
【０００９】
前記一実施の形態によれば、頻繁にアクセスされる論理アドレスが処理の進行と共に変化する状況においても、適切な物理アドレスの割当てを行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る記憶装置を含む半導体装置を示すブロック図。
【図２】アドレス変換部における論理アドレスと物理アドレスとの初期割当てを示す図。
【図３】アクセス頻度データの一例を示す図。
【図４】アクセス頻度集計データの一例を示す図。
【図５】アドレス変換テーブルの生成の手順を示すフローチャート。
【図６】アドレス変換テーブルを示す図。
【図７】データ入替の動作手順を示すフローチャート。
【図８】変更前後のアドレス変換テーブルを示す図。
【図９】アドレス変換テーブル変更前後における主記憶部に記憶されるデータを示す図。
【図１０】運用フロー１を示すフローチャート。
【図１１】運用フロー２を示すフローチャート。
【図１２】評価の動作手順を示すフローチャート。
【図１３】実施形態１の変形例に係るメモリアクセスシステムを示すブロック図。
【図１４】実施形態２に係る記憶装置を含む半導体装置を示すブロック図。
【図１５】アクセス頻度データの具体例を示す図。
【図１６】更新前後のアドレス変換テーブルの一例を示す図。
【図１７】実施形態３に係る記憶装置を含む半導体装置を示すブロック図。
【図１８】制御シーケンスの具体例を示す図。
【図１９】ＸＸＸモードにおけるアクセス頻度集計データを示す図。
【図２０】ウェアレベリングに対応したアドレス変換テーブルの生成手順を示すフローチャート。
【図２１】ＸＸＸモードに対して生成されるアドレス変換テーブルの具体例を示す図。
【図２２】ＺＺＺモードにおけるアクセス頻度集計データの一例を示す図。
【図２３】ＺＺＺモードで使用される複数のアドレス変換テーブルを示す図。
【図２４】ＺＺＺモードにおける不揮発性メモリの各物理アドレスへのアクセス回数を示す図。
【発明を実施するための形態】
【００１１】
実施形態の説明に先立って、本発明者が検討した事項を説明する。ＳｏＣ（System-on-a-chip）などの半導体装置において、ロジックと混載されるメモリデバイスとして、ｅＤＲＡＭ（Embedded Dynamic Random Access Memory）が知られている。ＤＲＡＭはＳＲＡＭ（Static Random Access Memory）に比べて集積度が高いため、同じチップ面積であれば、半導体装置において、ＳＲＡＭに比べてより多くのデータを記憶可能である。しかしながら、ｅＤＲＡＭの製造は、その製造者が限られ、またプロセスが限定的である。このような事情から、本発明者は、半導体装置において、ＤＲＡＭに代えて、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase-change Random Access Memory）、又はＲｅＲＡＭ（Resistive Random Access Memory）などのメモリデバイスをロジックＩＣと混載することを検討した。
【００１２】
ここで、ＤＲＡＭの書換え可能回数は１０１５回以上である。これに対し、ＤＲＡＭの代替として使用が検討される上記したメモリデバイスの書換え可能回数は、原理上最も書換え可能回数が多いＭＲＡＭにおいても、ターゲットとするプロセスでは１０６〜１０１２回程度である。このように、ＤＲＡＭの代替として使用が検討されるメモリデバイスは、ＤＲＡＭに比べて、寿命が短いという特性がある。ＳＲＡＭについては、書換え可能回数はほぼ無限であるはあるものの、１ビットあたりのサイズがＤＲＡＭの１．５倍もあり、チップサイズが増大し、コスト的に許容できない。そこで、本発明者は、チップサイズの増加を最小限に抑えつつも、ＤＲＡＭの場合と同等の書換え回数を実現可能な記憶装置について検討し、本発明を為すに至った。
【００１３】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１４】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の優先通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１５】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１６】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１７】
［実施形態１］
図１は、実施形態１に係る記憶装置を含む半導体装置を示す。半導体装置１００は、記憶装置１０、ＣＰＵ１１０、及び動作モード状態保持部１２０を有する。記憶装置１０は、アクセス制御部１１、アドレス変換部１２、アクセス頻度計測部１３、変換テーブル切替制御部１４、変換テーブル生成部１５、変換テーブル選択部１６、データ入替部１７、主記憶部２０、及び補助記憶部３０を有する。半導体装置１００は、メモリアクセスシステムを構成する。半導体装置１００において、記憶装置１０、ＣＰＵ１１０、及び動作モード状態保持部１２０は、バスを介して相互に接続される。
【００１８】
記憶装置１０において、主記憶部２０は、アクセス可能回数が異なる複数のメモリデバイスを有する。図１の例では、主記憶部２０は、揮発性メモリ２１と不揮発性メモリ２２とを有する。揮発性メモリ２１には、例えばＳＲＡＭなどが用いられる。不揮発性メモリ２２には、例えばＭＲＡＭやＮＡＮＤ  Ｆｌａｓｈなどが用いられる。揮発性メモリ２１及び不揮発性メモリ２２には、それぞれ物理アドレスが割り当てられている。揮発性メモリ２１のメモリサイズは、不揮発性メモリ２２のメモリサイズよりも小さい。主記憶部２０には、ＣＰＵ１１０が実行可能なプログラム、及びプログラムで使用されるデータなどが格納される。
【００１９】
ここで、アクセス可能回数とは、メモリデバイスに応じて決まるメモリアクセス回数の上限回数を示す。メモリデバイスは、読出し、又は書込みに伴ってメモリデバイスが劣化し、メモリアクセス回数にある一定の上限が存在する。一般に、揮発性メモリは無限とみなせる回数のメモリアクセスが可能であり、不揮発性メモリにはデバイス固有のアクセス回数の上限が存在する。主記憶部２０において、揮発性メモリ２１のアクセス可能回数は、不揮発性メモリ２２のアクセス可能回数よりも多い。
【００２０】
ＣＰＵ１１０は、バスマスタであり、バスを介して記憶装置１０にアクセスする。ＣＰＵ１１０は、記憶装置１０へのメモリアクセスでは、論理アドレスを用いる。動作モード状態保持部１２０は、例えばレジスタなどで構成され、ＣＰＵ１１０の動作モードを記憶する。ＣＰＵ１１０は、記憶装置１０にアクセスし、主記憶部２０に格納されたプログラムを読み出して実行する。ＣＰＵ１１０は、実行中のプログラムにおいて記憶装置１０へのメモリアクセスを行い、主記憶部２０にデータを書き込み、及び主記憶部２０からデータを読み出す。ＣＰＵ１１０は、モード設定部１１１としても機能し、実行中のプログラムに応じて、動作モード状態保持部１２０に実行中の動作モードを設定する。なお、動作モードは、ＣＰＵ１１０が実行する処理と直接に対応している必要はない。ＣＰＵ１１０は、例えば同じ処理であっても、処理データの量などに応じて異なる動作モードを設定可能であってもよい。
【００２１】
記憶装置１０のアクセス制御部１１は、ＣＰＵ１１０からメモリアクセス要求を受け付ける。メモリアクセス要求は、アクセスするデータのメモリアドレスに対する読出し（リード）、又は書込み（ライト）の要求である。メモリアクセス要求は、アクセス種別、及び論理アドレスなどを含む。また、メモリアクセス要求は、アクセス種別がライトであれば、書込みデータも含む。アクセス制御部１１は、メモリアクセス要求に含まれる論理アドレス（変換前アドレス）をアドレス変換部１２に出力する。アドレス変換部１２は、論理アドレスを、主記憶部２０における揮発性メモリ２１及び不揮発性メモリ２２の物理アドレス（変換後アドレス）に変換する。
【００２２】
アクセス制御部１１は、制御バスを通じて、主記憶部２０にアクセス種別を出力する。アクセス制御部１１は、アクセス種別がライトの場合、データバスを通じて書込みデータを主記憶部２０に出力する。主記憶部２０は、アクセス種別がライトであれば、アドレス変換部１２で変換された物理アドレスに応じて、揮発性メモリ２１又は不揮発性メモリ２２にデータを書き込む。主記憶部２０は、アクセス種別がリードであれば、アドレス変換部１２で変換された物理アドレスに応じて、揮発性メモリ２１又は不揮発性メモリ２２からデータを読み出し、読み出したデータをデータバスを通じてアクセス制御部１１に出力する。
【００２３】
アクセス頻度計測部１３は、アクセス制御部１１に対するメモリアクセス要求を監視し、アクセス頻度を計測する。アクセス頻度計測部１３は、例えば論理アドレスごとに、その論理アドレスに対するリード及びライトが何回発生したかを、アクセス頻度として計測する。このとき、アクセス頻度計測部１３は、動作モード状態保持部１２０から動作モードを取得し、動作モードごとに、アクセス頻度（アクセス回数）を計測する。アクセス頻度計測部１３は、例えば、主記憶部２０の不揮発性メモリ２２に、リード及びライトの双方に対してアクセス可能回数の上限が存在するタイプのメモリデバイスが用いられる場合は、リード及びライトが発生した回数を計測する。アクセス頻度計測部１３は、主記憶部２０の不揮発性メモリ２２に、リード及びライトの何れか一方に対してアクセス可能回数の上限が存在するタイプのメモリデバイスが用いられる場合は、リード及びライトの何れか一方が発生した回数を計測してもよい。
【００２４】
補助記憶部３０は、アクセス頻度データ３１を記憶する。また、補助記憶部３０は、テーブル記憶部として用いられ、アドレス変換テーブル３２を記憶する。補助記憶部３０は、例えばＳＲＡＭなどを用いて構成される。補助記憶部３０のメモリサイズは、主記憶部２０のメモリサイズに比べて十分に小さなサイズでよい。アクセス頻度計測部１３は、計測したアクセス頻度を、アクセス頻度データ３１に記録する。アクセス頻度計測部１３は、記憶装置１０へのメモリアクセス要求があった論理アドレスとその時刻とを、アクセス頻度データ３１として記録してもよい。
【００２５】
アドレス変換テーブル３２は、記憶装置１０へのアクセスに用いられるアドレス（論理アドレス）と、主記憶部２０内のメモリデバイスへ実際にアクセスするためのアドレス（物理アドレス）との組を記憶する。論理アドレスと物理アドレスとの組は、記憶装置１０へアクセスがあった論理アドレスのデータの読み書きを、物理アドレスのメモリデバイスに対して行うことを意味する。アドレス変換テーブル３２は、アドレス変換部１２が論理アドレスを物理アドレスに変換する際に使用される。
【００２６】
変換テーブル生成部１５は、アクセス頻度データ３１に基づいてアドレス変換テーブル３２を生成する。変換テーブル生成部１５は、動作モードごとに計測されたアクセス頻度に基づいて、動作モードごとにアドレス変換テーブル３２を生成する。変換テーブル生成部１５は、例えばアクセス頻度データ３１を参照し、各動作モードにおいて、揮発性メモリ２１の物理アドレスに対応する論理アドレスと、不揮発性メモリ２２の物理アドレスに対応する論理アドレスとに、それぞれ何回アクセスがあったかを集計する。変換テーブル生成部１５は、集計結果に基づいて、その動作モードに対してアドレス変換テーブル３２を生成する。変換テーブル生成部１５は、例えば各動作モードが最初に実行された後に、アドレス変換テーブル３２を生成する。変換テーブル生成部１５は、２回目以降は、アドレス変換テーブル３２を生成しなくてもよい。
【００２７】
変換テーブル切替制御部１４は、アドレス変換部１２が使用するアドレス変換テーブルを動作モードに応じて制御する。変換テーブル切替制御部１４は、動作モード状態保持部１２０から動作モードを取得し、取得した動作モードに応じて、変換テーブル選択部１６に出力する変換テーブル指定を変化させる。変換テーブル選択部１６は、変換テーブル指定に基づいて、アドレス変換部１２に出力するアドレス変換テーブル３２を選択する。変換テーブル切替制御部１４は、変換テーブル選択部１６を通じて、アドレス変換部１２が使用するアドレス変換テーブル３２を、動作モードに応じて制御する。アドレス変換テーブル３２が動作モードに応じて制御されることで、ある動作モードと別の動作モードとで、ある論理アドレスに対応する物理アドレスが変化する場合がある。
【００２８】
変換テーブル切替制御部１４は、動作モードが変化した場合に、データ入替部１７に入替指示を送信する。データ入替部１７は、データ入替指示を受けると、動作モードの変化に伴うアドレス変換テーブルの切替えの前後で、論理アドレスに対応する物理アドレスが変化する場合に、その物理アドレスに記憶されるデータを入れ替える。別の言い方をすると、データ入替部１７は、アドレス変換テーブル３２が変化することで、論理アドレスと物理アドレスとの対応関係に変化が生じる場合に、変化前後の物理アドレス間でデータを入れ替える。例えばある動作モードにおいてある論理アドレスが物理アドレスＡに対応していた場合に、別の動作モードでその論理アドレスが物理アドレスＢに対応する場合、物理アドレスＡのデータを物理アドレスＢに書き込む。このようにすることで、ある動作モードから別の動作モードに変化した場合、ある論理アドレスに対して同じデータにアクセスすることができる。
【００２９】
［アドレスの初期割当て］
図２は、アドレス変換部１２における論理アドレスと物理アドレスとの初期割当てを示す。以下では、説明簡略化のために、論理アドレスの数を４とし、揮発性メモリ２１及び不揮発性メモリ２２の物理アドレスの数をそれぞれ２とする。また、以下では、Ｌ０〜Ｌ３を、論理アドレスとする。また、Ｓ０及びＳ１を揮発性メモリ２１の物理アドレスとし、Ｍ０及びＭ１を不揮発性メモリ２２の物理アドレスとする。図２の例では、論理アドレスＬ０及びＬ１は、揮発性メモリ２１の物理アドレスＳ０及びＳ１に割り当てられ、論理アドレスＬ２及びＬ３は、不揮発性メモリ２２の物理アドレスＭ０及びＭ１に割り当てられている。
【００３０】
論理アドレスと物理アドレスとの対応関係は、アドレス変換テーブル３２を用いて変更できる。アドレス変換テーブル３２には、例えば対応関係を変更したい論理アドレスと、変更後の物理アドレスとの組が記憶される。アドレス変換部１２は、例えばアドレス変換テーブル３２に、アクセス制御部１１から取得した論理アドレスを含むエントリが存在するか否かを調べる。アドレス変換部１２は、そのようなエントリが存在する場合は、論理アドレスを、そのエントリにおいて論理アドレスに対応付けて記憶されている物理アドレスに変換する。アドレス変換部１２は、アドレス変換テーブル３２にエントリが存在しない論理アドレスについては、例えば、所定の変換ルール（初期割当て）に従って、論理アドレスを物理アドレスに変換する。
【００３１】
［アクセス頻度］
図３は、アクセス頻度データの一例を示す。アクセス頻度計測部１３は、動作モードと、アクセス時刻と、論理アドレスとの組を、補助記憶部３０にアクセス頻度データ３１として記憶する。図３において、アクセス時刻は、例えば動作モードの切替タイミングからの経過時間を示していてもよい。図３に示すデータを参照することで、ｂｏｏｔモードと、ｐｒｉｎｔモードとの２つの動作モードとのそれぞれにおいて、どの論理アドレスに対してどれだけアクセスがあったかを知ることができる。ｂｏｏｔモードとｐｒｉｎｔモードとでは、ＣＰＵ１１０が実行する処理の内容が異なることから、アクセス先の論理アドレスの傾向にも違いがあることが推測される。
【００３２】
［アクセス頻度集計データ］
図４は、アクセス頻度データを集計したアクセス頻度集計データの一例を示す。例えば、変換テーブル生成部１５は、動作モードの切替時などにおいて、動作モードごとに、アクセスがあった論理アドレスへのアクセス回数を集計し、アクセス頻度集計データを生成する。このとき変換テーブル生成部１５は、揮発性メモリ２１の物理アドレスに割り当てられている論理アドレスへのアクセス回数と、不揮発性メモリ２２の物理アドレスに割り当てられている論理アドレスへのアクセス回数とを、個別に集計してもよい。アクセス頻度集計データは、例えばアクセス先の論理アドレスと、変換後の物理アドレスと、アクセス回数とを含む。
【００３３】
変換テーブル生成部１５は、図３に示されるアクセス頻度データを参照し、例えばｂｏｏｔモードについて、揮発性メモリ２１の物理アドレスＳ０及びＳ１に対応付けられている論理アドレスＬ０及びＬ１へのアクセス回数を集計し、アクセス頻度集計データＡ（ｂｏｏｔモード）を生成する。また、変換テーブル生成部１５は、ｂｏｏｔモードについて、不揮発性メモリ２２の物理アドレスＭ０及びＭ１に対応付けられている論理アドレスＬ２及びＬ３へのアクセス回数を集計し、アクセス頻度集計データＢ（ｂｏｏｔモード）を生成する。
【００３４】
変換テーブル生成部１５は、ｐｒｉｎｔモードについても同様に、図３に示されるアクセス頻度データを参照し、揮発性メモリ２１の物理アドレスＳ０及びＳ１に対応付けられている論理アドレスＬ０及びＬ１へのアクセス回数を集計し、アクセス頻度集計データＡ（ｐｒｉｎｔモード）を生成する。また、変換テーブル生成部１５は、ｐｒｉｎｔモードについて、不揮発性メモリ２２の物理アドレスＭ０及びＭ１に対応付けられている論理アドレスＬ２及びＬ３へのアクセス回数を集計し、アクセス頻度集計データＢ（ｐｒｉｎｔモード）を生成する。
【００３５】
変換テーブル生成部１５は、このようなアクセス頻度集計データに基づいて、アドレス変換テーブルを生成する。変換テーブル生成部１５は、例えば、アクセス頻度集計データＡにおけるアクセス回数をアクセス回数が小さい順に順次に選択し、アクセス頻度集計データＢにおけるアクセス回数をアクセス回数が大きい順に順次に選択し、選択したアクセス回数を比較し、比較結果に基づいてアドレス変換テーブルを生成する。
【００３６】
なお、上記では、変換テーブル生成部１５がアクセス回数を集計する例を説明したが、この集計はアクセス頻度計測部１３が実施してもよい。その場合、アクセス頻度計測部１３は、図３に示されるアクセス頻度データに加えて、又はこれに代えて、図４に示されるアクセス頻度集計データを補助記憶部３０に記憶してもよい。
【００３７】
［アドレス変換テーブルの生成］
図５は、アドレス変換テーブルの生成の手順を示す。変換テーブル生成部１５は、例えば動作モードの切替時に、アドレス変換テーブル３２を生成する。変換テーブル生成部１５は、例えば動作モードが切り替えられるたびに、図５に示される手順で、切替前の動作モードに対するアドレス変換テーブル３２を生成する。あるいは、変換テーブル生成部１５は、いくつかの動作モードが連続して実行された後、それら複数の動作モードのそれぞれに対してアドレス変換テーブル３２を生成してもよい。
【００３８】
変換テーブル生成部１５は、揮発性メモリ２１へのアクセス数を集計する（ステップＡ１）。変換テーブル生成部１５は、例えば、初期割当て（図２を参照）に従って揮発性メモリ２１の物理アドレスに割り当てられる論理アドレスへのアクセス数を、論理アドレスごとに集計する。変換テーブル生成部１５は、対象としている動作モードに対してアドレス変換テーブル３２が既に作成されている場合は、アドレス変換テーブル３２を参照して、揮発性メモリ２１の物理アドレスに割り当てられる論理アドレスへのアクセス数を集計する。変換テーブル生成部１５は、ステップＡ１で集計した論理アドレスごとのアクセス数を昇順にソートし（ステップＡ２）、アクセス頻度データ（アクセス頻度集計データ）Ａを生成する（ステップＡ３）。
【００３９】
変換テーブル生成部１５は、不揮発性メモリ２２へのアクセス数を集計する（ステップＡ４）。変換テーブル生成部１５は、例えば、初期割当て（図２を参照）に従って不揮発性メモリ２２の物理アドレスに割り当てられる論理アドレスへのアクセス数を、論理アドレスごとに集計する。変換テーブル生成部１５は、対象としている動作モードに対してアドレス変換テーブル３２が既に作成されている場合は、アドレス変換テーブル３２を参照して、不揮発性メモリ２２の物理アドレスに割り当てられる論理アドレスへのアクセス数を集計する。変換テーブル生成部１５は、ステップＡ４で集計した論理アドレスごとのアクセス数を降順にソートし（ステップＡ５）、アクセス頻度データ（アクセス頻度集計データ）Ｂを生成する（ステップＡ６）。
【００４０】
なお、上記したアクセス頻度集計データＡの生成（ステップＡ１〜Ａ３）、及びアクセス頻度集計データＢの生成（ステップＡ４〜Ａ６）は、並列に実行可能である。また、変換テーブル生成部１５が複数の動作モードに対してアドレス変換テーブル３２を生成する場合、ステップＡ１〜Ａ３、及びステップＡ４〜Ａ６は複数の動作モードのそれぞれに対して実行される。
【００４１】
アクセス頻度集計データＡは、ステップＡ２でソートが行われることで、エントリが、アクセス回数が少ないものから順に並べられる。一方、アクセス頻度集計データＢは、ステップＡ５でソートが行われることで、エントリが、アクセス回数が多いものから順に並べられる。これらのソートにおいて、アクセス数が同じ場合は、物理アドレスが小さいものが優先されることとしてもよい。ステップＡ２及びＡ５におけるソートは、後の処理においてアクセス頻度集計データＡとアクセス頻度集計データＢとを比較する際に、比較を容易にするために実施されるものであり、ソートは省略してもよい。
【００４２】
変換テーブル生成部１５は、ループ変数ｉを１に初期化する（ステップＡ７）。変換テーブル生成部１５は、アクセス頻度集計データＡと、アクセス頻度集計データＢとにおいて、ｉ番目（ｉ行目）のエントリのアクセス回数を取得する（ステップＡ８）。ここでは、アクセス頻度集計データＡから取得されたｉ番目のエントリのアクセス数をＡｉとし、アクセス頻度集計データＢから取得されたｉ番目のエントリのアクセス数をＢｉとする。アクセス頻度集計データＡは、ステップＡ２で昇順にソートされているため、ｉ＝１の場合に取得されるアクセス回数Ａｉは、揮発性メモリ２１へのアクセス数の最小値を示す。一方、アクセス頻度集計データＢは、ステップＡ５で降順にソートされているため、ｉ＝１の場合に取得されるアクセス回数Ｂｉは、不揮発性メモリ２２へのアクセス数の最大値を示す。
【００４３】
変換テーブル生成部１５は、取得したアクセス回数Ａｉとアクセス回数Ｂｉとを比較し、アクセス回数Ａｉがアクセス回数Ｂｉよりも少ないか否かを判断する（ステップＡ９）。アクセス回数Ａｉがアクセス回数Ｂｉよりも少ないと判断される場合、揮発性メモリ２１へのアクセス回数は、不揮発性メモリ２２へのアクセス回数よりも少ない。変換テーブル生成部１５は、アクセス頻度が高い論理アドレスを揮発性メモリ２１の物理アドレスに割り当てるために、アドレス変換テーブル３２のエントリを追加する（ステップＡ１０）。変換テーブル生成部１５は、ステップＡ１０では、揮発性メモリ２１の物理アドレスに割り当てられていた論理アドレスと、不揮発性メモリ２２の物理アドレスとの組をアドレス変換テーブル３２に追加する。また、変換テーブル生成部１５は、不揮発性メモリ２２の物理アドレスに割り当てられていた論理アドレスと、揮発性メモリ２１の物理アドレスとの組をアドレス変換テーブル３２に追加する。
【００４４】
変換テーブル生成部１５は、アクセス頻度集計データＡ又はアクセス頻度集計データＢの最終行に到達しているか否かを判断する（ステップＡ１１）。変換テーブル生成部１５は、ステップＡ１１で最終行まで到達していないと判断した場合、ループ変数ｉに１を加算し（ステップＡ１２）、ステップＡ８に戻り、次のエントリのアクセス回数Ａｉとアクセス回数Ｂｉとを取得する。変換テーブル生成部１５は、アクセス頻度集計データＡ又はアクセス頻度集計データＢのどちからの最終行まで処理が終わっていると判断した場合、アドレス変換テーブル３２の生成を終了する。
【００４５】
変換テーブル生成部１５が複数の動作モードに対してアドレス変換テーブル３２を生成する場合、ステップＡ７〜Ａ１１は、動作モードごとに、各動作モードに対応して生成されたアクセス頻度集計データＡとアクセス頻度集計データＢとを用いて実行される。上記した手順でアドレス変換テーブル３２を生成することで、アクセス頻度が高い論理アドレスが揮発性メモリ２１の物理アドレスに対応付けられ、アクセス頻度が低い論理アドレスが不揮発性メモリ２２の物理アドレスに対応付けられるアドレス変換テーブル３２が生成できる。
【００４６】
なお、ステップＡ９でアクセス回数Ａｉがアクセス回数Ｂｉよりも少ないと判断される場合、アクセス頻度集計データＡはアクセス回数が少ない順にソートされ、アクセス頻度集計データＢはアクセス回数が多い順にソートされていることから、アクセス頻度が高い論理アドレスは、既に揮発性メモリ２１に割り当てられている。従って、変換テーブル生成部１５は、ステップＡ９でアクセス回数Ａｉがアクセス回数Ｂｉよりも少ないと判断した場合、どちらかのデータの末尾まで到達していなくても処理を終了できる。
【００４７】
［アドレス変換テーブルの具体例］
以下、図３に示されるアクセス頻度データからアドレス変換テーブルを生成する場合を説明する。論理アドレスと物理アドレスとの初期割当ては、図２に示されるものであったとする。変換テーブル生成部１５は、ステップＡ１において、例えば図３に示されるアクセス頻度データを参照し、ｂｏｏｔモードにおいて物理アドレスＳ０及びＳ１に割り当てられる論理アドレスＬ０及びＬ１へのアクセス回数を集計する。また、変換テーブル生成部１５は、ステップＡ４において、図３に示されるアクセス頻度データを参照し、ｂｏｏｔモードにおいて物理アドレスＭ０及びＭ１に割り当てられる論理アドレスＬ２及びＬ３へのアクセス回数を集計する。
【００４８】
変換テーブル生成部１５は、ステップＡ３で、図４に示されるアクセス頻度集計データＡ（ｂｏｏｔ）を生成し、ステップＡ６で、図４に示されるアクセス頻度集計データＢ（ｂｏｏｔ）を生成する。ｂｏｏｔモードにおいて、不揮発性メモリ２２の物理アドレスＭ０及びＭ１のうち、アクセス回数が最も多いのは物理アドレスＭ０であり、そのアクセス回数は１回である。一方、ｂｏｏｔモードにおいて、揮発性メモリ２１の物理アドレスＳ０及びＳ１のうち、アクセス回数が最も少ないのは物理アドレスＳ０であり、そのアクセス回数は１回である。この場合、不揮発性メモリ２２へのアクセス回数の最大値が揮発性メモリ２１へのアクセス回数の最小値以下であるため、アドレス変換テーブル３２は生成されずに処理は終了する。この場合、ｂｏｏｔモードに対応するアドレス変換テーブル３２に追加されたアドレスの組はない。これは、ｂｏｏｔモードについては、論理アドレスと物理アドレスとの対応関係を、初期割当てから変更する必要がないことを意味する。
【００４９】
また、変換テーブル生成部１５は、ｐｒｉｎｔモードについても同様に、ステップＡ１において、図３に示されるアクセス頻度データを参照し、ｐｒｉｎｔモードにおいて物理アドレスＳ０及びＳ１に割り当てられる論理アドレスＬ０及びＬ１へのアクセス回数を集計する。また、変換テーブル生成部１５は、ステップＡ４において、図３に示されるアクセス頻度データを参照し、ｐｒｉｎｔモードにおいて物理アドレスＭ０及びＭ１に割り当てられる論理アドレスＬ２及びＬ３へのアクセス回数を集計する。
【００５０】
変換テーブル生成部１５は、ステップＡ３で、図４に示されるアクセス頻度集計データＡ（ｐｒｉｎｔ）を生成し、ステップＡ６で、図４に示されるアクセス頻度集計データＢ（ｐｒｉｎｔ）を生成する。ｐｒｉｎｔモードにおいて、不揮発性メモリ２２の物理アドレスＭ０及びＭ１のうち、アクセス回数が最も多いのは物理アドレスＭ０及びＭ１であり、そのアクセス回数は２回である。一方、ｐｒｉｎｔモードにおいて、揮発性メモリ２１の物理アドレスＳ０及びＳ１のうち、アクセス回数が最も少ないは物理アドレスＳ０及びＳ１であり、そのアクセス回数は０回である。変換テーブル生成部１５は、ステップＡ２及びＡ５のソートにおいて、アクセス回数が同じ回数エントリが複数ある場合は、それらエントリを論理アドレス又は物理アドレスが小さい順にソートしてもよい。
【００５１】
変換テーブル生成部１５は、ループの初回のステップＡ８において、揮発性メモリ２１の物理アドレスＳ０へのアクセス回数Ａ１と、物理アドレスＭ０へのアクセス回数Ｂ１とを取得する。アクセス回数Ａ１は０回であり、アクセス回数Ｂ１は２回である。この場合、変換テーブル生成部１５は、ステップＡ９においてアクセス回数Ａ１がアクセス回数Ｂ１よりも少ないと判断し、ステップＡ１０においてアドレス変換テーブル３２にエントリを追加する。変換テーブル生成部１５は、ステップＡ１０では、物理アドレスＭ０に割り当てられていた論理アドレスＬ２と、物理アドレスＳ０との組をアドレス変換テーブル３２に追加する。また、変換テーブル生成部１５は、物理アドレスＳ０に割り当てられていた論理アドレスＬ０と、物理アドレスＭ０との組をアドレス変換テーブル３２に追加する。
【００５２】
変換テーブル生成部１５は、２回目のループのステップＡ８において、揮発性メモリ２１の物理アドレスＳ１へのアクセス回数Ａ２と、物理アドレスＭ１へのアクセス回数Ｂ２とを取得する。アクセス回数Ａ２は０回であり、アクセス回数Ｂ２は２回である。この場合も、変換テーブル生成部１５は、ステップＡ９においてアクセス回数Ａ２がアクセス回数Ｂ２よりも少ないと判断し、ステップＡ１０においてアドレス変換テーブル３２にエントリを追加する。変換テーブル生成部１５は、ステップＡ１０では、物理アドレスＭ１に割り当てられていた論理アドレスＬ３と、物理アドレスＳ１との組をアドレス変換テーブル３２に追加する。また、変換テーブル生成部１５は、物理アドレスＳ１に割り当てられていた論理アドレスＬ１と、物理アドレスＭ１との組をアドレス変換テーブル３２に追加する。
【００５３】
図６は、ｐｒｉｎｔモードについて生成されたアドレス変換テーブル３２を示す。上記手順に従って、生成されたアドレス変換テーブルは、論理アドレスＬ０と物理アドレスＭ０との組、論理アドレスＬ１と物理アドレスＭ１との組、論理アドレスＬ２と物理アドレスＳ０との組、及び論理アドレスＬ３と物理アドレスＳ１との組を有する。変換テーブル切替制御部１４（図１を参照）は、動作モードがｐｒｉｎｔモードの場合、変換テーブル選択部１６に図６に示されるアドレス変換テーブルを選択させる。アドレス変換部１２は、図６に示されるアドレス変換テーブルに従って、論理アドレスを物理アドレスに変換する。アドレス変換テーブルを用いることで、論理アドレスを用いたアクセスのアクセス先を、不揮発性メモリ２２から揮発性メモリ２１へ、又は揮発性メモリ２１から不揮発性メモリ２２へ変更できる。
【００５４】
［データ入替部］
続いて、データ入替部１７の動作を説明する。図７は、データ入替部１７の動作手順を示す。変換テーブル切替制御部１４は、動作モードが変更になると、アクセス制御部１１に対して、主記憶部２０へのアクセスを保留するように指示する。次いで、変換テーブル切替制御部１４は、変換テーブル選択部１６に、変更後の動作モードに対応するアドレス変換テーブルを選択させ、アドレス変換部１２が使用するアドレス変換テーブルを変更させる。また、変換テーブル切替制御部１４は、データ入替部１７に入替指示を送信し、主記憶部２０においてデータの入替えを実施させる。
【００５５】
データ入替部１７は、データ入替指示を受け取ると、データ入替えに使用する一時記憶領域を初期化する（ステップＢ１）。一時記憶領域は、例えば補助記憶部３０内に設けられる。あるいは、一時記憶領域は、主記憶部２０内の空いているメモリ空間に設けられてもよい。データ入替部１７は、ステップＢ１では、一時記憶領域内の全てのデータを削除することで、一時記憶領域の初期化を行う。
【００５６】
データ入替部１７は、テーブルＡ又はテーブルＢに含まれる論理アドレスを１つ選択する（ステップＢ２）。データ入替部１７は、テーブルＡにおいてステップＢ２で選択した論理アドレスに対応付けられている物理アドレスと、テーブルＢにおいてステップＢ２で選択した論理アドレスに対応付けられている物理アドレスとを比較し、両者が一致するか否かを判断する（ステップＢ３）。
【００５７】
データ入替部１７は、ステップＢ３で物理アドレスが一致しないと判断すると、変更前のアドレス変換テーブル３２における物理アドレスのデータを、変更後のアドレス変換テーブル３２における物理アドレスに移動すると判断する。その場合、データ入替部１７は、移動先のデータ及び物理アドレスを、一時記憶領域に追加する（ステップＢ４）。
【００５８】
データ入替部１７は、移動元のデータを、移動先の物理アドレスに書き込む（ステップＢ５）。データ入替部１７は、ステップＢ５では、移動元のデータが既にステップＢ４で一時記憶領域に記憶されている場合は、一時記憶領域からデータを読み出し、移動先の物理アドレスに書き込む。データ入替部１７は、移動元のデータが一時記憶領域に記憶されていない場合は、移動元のデータを揮発性メモリ２１又は不揮発性メモリ２２から読み出し、移動先の物理アドレスに書き込む。
【００５９】
データ入替部１７は、アドレス変換テーブル３２の最終エントリまで処理を終えたか否かを判断する（ステップＢ６）。データ入替部１７は、ステップＢ３で物理アドレスが同一と判断した場合も、ステップＢ６に進み、最終エントリまで処理を終えたか否かを判断する。データ入替部１７は、最終エントリまで処理を終えていないと判断した場合、ステップＢ２に戻り、次の論理アドレスを１つ選択する。ステップＢ２〜Ｂ６を、アドレス変換テーブル３２の全てのエントリについて実施することで、アドレス変換部１２が使用するアドレス変換テーブルが変更された場合でも、同じ論理アドレスを用いて同じデータのアクセスできる。変換テーブル切替制御部１４は、データ入替部１７がデータ入替えを終了すると、アクセス制御部１１の保留を解除し、主記憶部２０へのアクセスを再開させる。
【００６０】
図８は、変更前後のアドレス変換テーブルを示す。ここでは、便宜上、変更前のアドレス変換テーブル３２をテーブルＡと呼び、変更後のアドレス変換テーブル３２をテーブルＢと呼ぶ。データ入替部１７は、ループの初回のステップＢ２では、例えばテーブルＡの１つ目のエントリの論理アドレスＬ０を選択する。データ入替部１７は、テーブルＡにおいて論理アドレスＬ０に対応付けて記憶される物理アドレスＭ０と、テーブルＢにおいて論理アドレスＬ０に対応付けて記憶される物理アドレスＭ０とを取得する。仮に、一方のテーブルにおいて対応する物理アドレスが記憶されていない場合は、初期割当て（図２を参照）に従って物理アドレスを取得すればよい。データ入替部１７は、ステップＢ３で、取得した物理アドレスが一致するか否かを判断する。両者が一致する場合、論理アドレスＬ０でアクセスされるデータの格納場所に変更はないため、データの入替えは行われない。
【００６１】
データ入替部１７は、２回目のループのステップＢ２では、テーブルＡの２つ目のエントリの論理アドレスＬ１を選択する。データ入替部１７は、テーブルＡにおいて論理アドレスＬ１に対応付けて記憶される物理アドレスＳ１と、テーブルＢにおいて論理アドレスＬ１に対応付けて記憶される物理アドレスＭ１とを取得する。この場合、データ入替部１７は、ステップＢ３において物理アドレスが一致しないと判断する。データ入替部１７は、ステップＢ４において、例えば移動先の物理アドレスＭ１からデータを取得し、取得したデータと物理アドレスＭ１とを一時記憶領域に記憶する。その後、データ入替部１７は、ステップＢ５で、移動元の物理アドレスＳ１からデータを読み出し、読み出したデータを移動先の物理アドレスＭ１に書き込む。
【００６２】
データ入替部１７は、３回目のループのステップＢ２では、テーブルＡの３つ目のエントリの論理アドレスＬ２を選択する。データ入替部１７は、テーブルＡにおいて論理アドレスＬ２に対応付けて記憶される物理アドレスＳ０と、テーブルＢにおいて論理アドレスＬ１に対応付けて記憶される物理アドレスＳ０とを取得する。この場合、データ入替部１７は、ステップＢ３において、物理アドレスが一致すると判断し、データの入替えは行われない。
【００６３】
データ入替部１７は、４回目のループのステップＢ２では、テーブルＡの４つ目のエントリの論理アドレスＬ３を選択する。データ入替部１７は、テーブルＡにおいて論理アドレスＬ３に対応付けて記憶される物理アドレスＭ１と、テーブルＢにおいて論理アドレスＬ３に対応付けて記憶される物理アドレスＳ１とを取得する。この場合、データ入替部１７は、ステップＢ３において物理アドレスが一致しないと判断する。データ入替部１７は、ステップＢ４において、例えば移動先の物理アドレスＳ１からデータを取得し、取得したデータと物理アドレスＳ１とを一時記憶領域に記憶する。物理アドレスＳ１のデータは既に移動されているため、移動済みの物理アドレスについては、一時記憶領域への記憶を省略してもよい。その後、データ入替部１７は、ステップＢ５で、一時記憶領域から、２回目のループで記憶された移動元の物理アドレスＭ１のデータを読み出し、読み出したデータを移動先の物理アドレスＳ１に書き込む。
【００６４】
図９は、アドレス変換テーブル変更前後における主記憶部２０に記憶されるデータを示す。アドレス変換テーブル３２が変更される前、つまり、データ入替部１７がデータの入替えを行う前、物理アドレスＳ０にはデータ１が記憶され、物理アドレスＳ１にはデータ２が記憶され、物理アドレスＭ０にはデータ３が記憶され、物理アドレスＭ１にはデータ４が記憶されていたとする。図８に示すテーブルＡを用いることで、ＣＰＵ１１０（図１を参照）は、論理アドレスＬ０でデータ３にアクセスでき、論理アドレスＬ１でデータ２にアクセスでき、論理アドレスＬ２でデータ１にアクセスでき、論理アドレスＬ３でデータ４にアクセスできる。
【００６５】
データ入替部１７は、アドレス変換テーブル３２が変更されるとき、図７に示される手順でデータの入替えを行う。上記した例では、２回目のループにおいて、テーブルＢにおいて論理アドレスＬ１に対応する物理アドレスＭ１のデータ４が一時記憶領域に退避され、テーブルＡにおいて論理アドレスＬ１に対応する物理アドレスＳ１のデータ２が、物理アドレスＭ１に書き込まれる。また、４回目のループにおいて、テーブルＡにおいて論理アドレスＬ３に対応する物理アドレスＭ１のデータ４が、テーブルＢにおいて論理アドレスＬ３に対応する物理アドレスＳ１に書き込まれる。このようにすることで、アドレス変換テーブル３２が変更された後においても、ＣＰＵ１１０は、論理アドレスＬ０でデータ３にアクセスでき、論理アドレスＬ１でデータ２にアクセスでき、論理アドレスＬ２でデータ１にアクセスでき、論理アドレスＬ３でデータ４にアクセスできる。
【００６６】
［運用フロー１］
半導体装置１００の運用フローを説明する。まず、運用フロー１を説明する。図１０は、運用フロー１を示す。運用フロー１では、半導体装置１００の動作中にアドレス変換テーブルが生成される。ユーザは、アドレス変換設定を行い（ステップＣ１）、初期状態において使用されるアドレス変換テーブル３２を補助記憶部３０に記憶する。最初に設定されるアドレス変換テーブル３２は任意の論理アドレスと物理アドレスとの組を含む。最初に設定されるアドレス変換テーブル３２に含まれる論理アドレスと物理アドレスとの組は、システム全体のメモリアクセスの傾向を反映したものであるとよい。
【００６７】
半導体装置１００は運用状態となり、ＣＰＵ１１０は通常処理を実施する（ステップＣ２）。ＣＰＵ１１０が実施する通常処理は、ｂｏｏｔモードやｐｒｉｎｔモードなど、いくつかの動作モードの処理を含む。ＣＰＵ１１０は、通常処理において、動作モード状態保持部１２０に動作モードを書き込む。アクセス頻度計測部１３は、ＣＰＵ１１０の通常処理と並行して、動作モードごとにアクセス頻度を計測し（ステップＣ３）、アクセス頻度データ３１を生成する。
【００６８】
変換テーブル生成部１５は、アクセス頻度データ３１に基づいて、動作モードごとにアドレス変換テーブル３２を生成する（ステップＣ４）。変換テーブル生成部１５は、例えば図５に示される手順に従って、アドレス変換テーブル３２を生成する。変換テーブル生成部１５は、例えば動作モードが変更されるとき、アドレス変換テーブル３２を生成する。その後、処理はステップＣ２及びＣ３に戻り、ＣＰＵ１１０の通常処理と、アクセス頻度計測部１３のアクセス頻度の計測とが継続して実施される。運用フロー１では、半導体装置１００において、通常処理とアクセス頻度の計測とアドレス変換テーブルの作成とが繰り返し実行される。
【００６９】
例えば、ＣＰＵ１１０が実施する通常処理が、ｂｏｏｔモード、ｐｒｉｎｔモード、及びｓｃａｎモードの３つの動作モードを有する場合を考える。ＣＰＵ１１０は、例えばｂｏｏｔモード、ｐｒｉｎｔモード、及びｓｃａｎモードの順で、動作モードを遷移させる。ＣＰＵ１１０のメモリアクセスの傾向は、動作モードに応じて異なる場合がある。運用フロー１において、変換テーブル生成部１５は、アクセス頻度データ３１に基づいて、各動作モードにおけるメモリアクセスの傾向に適合するアドレス変換テーブル３２を生成できる。変換テーブル切替制御部１４は、動作モードに応じて、アドレス変換部１２で使用されるアドレス変換テーブル３２を切り替える。このようにすることで、主記憶部２０における揮発性メモリ２１及び不揮発性メモリ２２の使用状況を、動作モードに応じて適正化できる。
【００７０】
ＣＰＵ１１０は、例えばｂｏｏｔモードでは、初期状態で不揮発性メモリ２２の物理アドレスに割り当てられる論理アドレスに対して頻繁にアクセスする。この場合、変換テーブル生成部１５は、ｂｏｏｔモードに対して、ｂｏｏｔモードにおいてアクセス頻度が高い論理アドレスと揮発性メモリ２１の物理アドレスとの組を含むアドレス変換テーブル３２を生成する。アドレス変換部１２は、動作モードがｂｏｏｔモードの場合、ｂｏｏｔモードに対して生成されたアドレス変換テーブル３２を使用してアドレス変換を行う。このようにすることで、次に実施されるｂｏｏｔモードにおいて、不揮発性メモリ２２へのアクセスが多発して、不揮発性メモリ２２のアクセス可能回数が消費されることを抑制できる。
【００７１】
また、ＣＰＵ１１０は、ｐｒｉｎｔモードでは、初期状態で不揮発性メモリ２２の別の物理アドレスに割り当てられる別の論理アドレスに対して頻繁にアクセスするものとする。この場合に、ｂｏｏｔモードに対して生成されたアドレス変換テーブル３２を用いても、不揮発性メモリ２２へのアクセスを抑制できない。変換テーブル生成部１５は、ｐｒｉｎｔモードに対して、ｐｒｉｎｔモードにおいてアクセス頻度が高い論理アドレスと揮発性メモリ２１の物理アドレスとの組を含むアドレス変換テーブル３２を生成する。このように生成されたアドレス変換テーブル３２を用いてアドレス変換を行うことで、次に実施されるｐｒｉｎｔモードにおいて、不揮発性メモリ２２へのアクセスが多発して、不揮発性メモリ２２のアクセス可能回数が消費されることを抑制できる。ｓｃａｎモードについても、同様に、アクセス状況に合わせたアドレス変換テーブルを生成することで、不揮発性メモリ２２へのアクセスを抑制できる。
【００７２】
特許文献１との比較では、特許文献１では、アドレス変換テーブルの更新は後追いであるため、ｂｏｏｔモードにおいて不揮発性メモリ２２のアクセス可能回数が所定回数消費された後、データが揮発性メモリ２１に移動されることとなる。また、その後に実施されるｐｒｉｎｔモードにおいても、同様に、不揮発性メモリ２２のアクセス可能回数が所定回数消費された後、データが揮発性メモリ２１に移動される。従って、特許文献１では、動作モードが遷移するたびに、不揮発性メモリのアクセス回数が所定回数消費されることとなり、不揮発性メモリ２２の寿命を延ばす効果は限定的である。これに対し、運用フロー１では、各動作モードに対してアドレス変換テーブル３２が作成された後は、２回目以降に実施される各動作モードにおいて不揮発性メモリ２２のアクセス可能回数が消費されず、不揮発性メモリ２２の長寿命化を図ることができる。
【００７３】
［運用フロー２］
次いで、運用フロー２を説明する。図１１は、運用フロー２を示す。運用フロー２では、実際に半導体装置１００を運用する前に評価が行われ、評価時のアクセス頻度データ３１に基づいてアドレス変換テーブル３２が生成される。ユーザは、半導体装置１００を動作させ、評価を実行する（ステップＤ１）。評価には、例えば実際の運用に用いられるものとは異なる評価用の半導体装置１００が用いられる。あるいは、評価には、半導体装置１００の動作をシミュレートするシミュレータを用いてもよい。
【００７４】
図１２は、評価の動作手順を示す。ユーザは、アドレス変換設定を行い（ステップＥ１）、初期状態において使用されるアドレス変換テーブル３２を補助記憶部３０に記憶する。半導体装置１００は運用状態となり、ＣＰＵ１１０は通常処理を実施する（ステップＥ２）。ＣＰＵ１１０は、通常処理において、動作モード状態保持部１２０に動作モードを書き込む。アクセス頻度計測部１３は、ＣＰＵ１１０の通常処理と並行して、動作モードごとにアクセス頻度を計測し（ステップＥ３）、アクセス頻度データ３１を生成する。ステップＥ１〜Ｅ３は、図１０に示される運用フロー１におけるステップＣ１〜Ｃ３と同様でよい。
【００７５】
変換テーブル生成部１５は、アクセス頻度データ３１に基づいて、動作モードごとにアドレス変換テーブル３２を生成する（ステップＥ４）。変換テーブル生成部１５は、例えば図５に示される手順に従って、アドレス変換テーブル３２を生成する。変換テーブル生成部１５は、各動作モードがそれぞれ１回ずつ実施されるたびに、アドレス変換テーブル３２を生成してもよい。あるいは、変換テーブル生成部１５は、各動作モードが複数回実施された後に、アドレス変換テーブル３２を生成してもよい。各動作モードに対してアドレス変換テーブル３２が生成されると、評価は終了となる。
【００７６】
図１１に戻り、運用に用いられる半導体装置１００の補助記憶部３０においてアドレス変換設定がなされる（ステップＤ２）。ステップＤ１の評価に用いられる半導体装置１００と運用に用いられる半導体装置１００とが同一のものである場合、補助記憶部３０には、評価時に既にアドレス変換テーブル３２が記憶される。運用に用いられる半導体装置１００が評価時に用いられた半導体装置１００とは異なる場合は、運用に用いられる半導体装置１００の補助記憶部３０に、評価時に生成されたアドレス変換テーブル３２が格納される。
【００７７】
半導体装置１００において、ＣＰＵ１１０は、通常処理を実施する（ステップＤ３）。ステップＤ３は、図１０に示される運用フロー１におけるステップＣ２と同様でよい。このとき、アクセス頻度計測部１３は、ＣＰＵ１１０のメモリアクセスを監視する必要はなく、アクセス頻度データ３１を生成しなくてもよい。アクセス頻度計測部１３及び変換テーブル生成部１５などの動作を停止させた場合、その分だけ消費電力が削減できる。
【００７８】
運用フロー２では、運用フロー１とは異なり、事前に評価を行い、例えばｂｏｏｔモードやｐｒｉｎｔモードなどの動作モードで動作中のメモリアクセス頻度に基づいて、各動作モードに対し、アドレス変換テーブル３２が生成される。評価時のアクセス頻度データ３１に基づいてアドレス変換テーブル３２を生成することで、ある動作モードにおいて、アクセス頻度が高い論理アドレスに対して揮発性メモリ２１の物理アドレスを割り当てることができる。また、アクセス頻度が低い論理アドレスに対して不揮発性メモリ２２の物理アドレスを割り当てることができる。運用フロー２では、半導体装置１００の実際の運用開始時から、各動作モードに対して生成されたアドレス変換テーブル３２を使用することができる。このため、運用フロー２では、運用開始時から不揮発性メモリ２２のアクセス可能回数の消費を抑制できる。
【００７９】
ここで、ステップＤ１の評価では、各動作モードに対するアドレス変換テーブル３２が生成されるまで、不揮発性メモリ２２のアクセス可能回数が消費される可能性がある。評価時に、実際の運用に用いる半導体装置１００とは異なる半導体装置を用いた場合は、評価の際にアクセス可能回数が消費されることを回避できる利点がある。
【００８０】
［まとめ］
本実施形態では、変換テーブル切替制御部１４は、動作モードに応じて、アドレス変換部１２が論理アドレスと物理アドレスとの変換に使用するアドレス変換テーブルを制御する。ＣＰＵ１１０の主記憶部２０に対するアクセスの傾向は、動作モードに異なる場合があり、ある動作モードと別の動作モードとで、頻繁にアクセスする論理アドレスが相互に異なる場合がある。本実施形態では、動作モードに対応したアドレス変換テーブルを使用して、論理アドレスと物理アドレスとの対応関係を、動作モードごとに規定できる。このため、各動作モードにおいて、頻繁にアクセスされる論理アドレスを揮発性メモリ２１の物理アドレスに対応させ、アクセスが少ない論理アドレスを不揮発性メモリの物理アドレスに対応させることができる。従って、処理の進行と共に使用されるメモリ領域が変化し、頻繁にアクセスされる論理アドレスが処理の進行と共に変化する状況において、適切な物理アドレスの割当てを行うことができる。
【００８１】
本実施形態では、動作モードに応じてアドレス変換テーブルを切り替えることで、各動作モードにおいて、アクセス頻度が高い論理アドレスを、アクセス可能回数が多いメモリデバイスの物理アドレスに割り当てることができる。また、本実施形態では、各動作モードにおいて、アクセス頻度が低い論理アドレスを、アクセス可能回数が少ないメモリデバイスの物理アドレスに割り当てることができる。このようにした場合、アクセス可能回数が少ないメモリデバイスの寿命を延ばすことができ、結果として、半導体装置１００全体の寿命を延ばすことができる。
【００８２】
［実施形態１の変形例］
図１３は、実施形態１の変形例に係るメモリアクセスシステムを示す。本変形例に係るメモリアクセスシステムは、記憶装置１０ａを有する半導体装置１００ａと補助装置４０とを有する。本変形例に係るメモリアクセスシステムは、アクセス頻度計測部１３及び変換テーブル生成部１５が補助装置４０内に配置されている点で、図１に示す半導体装置（メモリアクセスシステム）１００と異なる。その他の点は、実施形態１と同様でよい。
【００８３】
本変形例において、補助装置４０は、半導体装置１００ａ（記憶装置１０ａ）内の補助記憶部３０にアドレス変換テーブル３２を記憶するために用いられる。本変形例において、半導体装置１００ａは、補助装置４０を切り離した状態で運用されてもよい。例えば、複数の半導体装置１００ａがある場合に、補助装置４０が、複数の半導体装置１００ａに対して１つ用意されてもよい。その場合、１つの補助装置４０を、複数の半導体装置１００ａに使いまわすことができる。
【００８４】
本変形例では、例えば、実施形態１で説明した運用フロー２において、図１１のステップＤ１の評価時は補助装置４０が半導体装置１００ａに接続された状態でアドレス変換テーブル３２の生成を行い、評価後に、補助装置４０と半導体装置１００ａとを切り離してもよい。本変形例では、アドレス変換テーブル３２の生成に関する構成要素を半導体装置１００ａの外部に配置することで、半導体装置１００ａの面積を削減することができ、また、消費電力の増大を抑えることができる。本変形例は、運用フロー２に用いられることには限定されず、本変形例に係るメモリアクセスシステムは、補助装置４０が半導体装置１００ａに接続された状態で、運用フロー１において運用されてもよい。
【００８５】
［実施形態２］
続いて、実施形態２を説明する。図１４は、実施形態２に係る記憶装置を含む半導体装置を示す。本実施形態に係る半導体装置１００ｂは、記憶装置１０ｂがアクセス頻度比較部１８を更に有する点で、図１に示される実施形態１に係る半導体装置１００と相違する。他の構成は、実施形態１と同様でよい。
【００８６】
本実施形態において補助記憶部３０は、複数のアクセス頻度データ３１を記憶する。複数のアクセス頻度データ３１の１つは、例えば現在のアクセス頻度データであり、別の１つは、過去のある時点におけるアクセス頻度データであってもよい。過去のある時点におけるアクセス頻度データは、例えば前回集計されたアクセス頻度集計データ（図４を参照）であってもよい。あるいは、過去のアクセス頻度データは、運用フロー２（図１１を参照）における評価時に生成されたアクセス頻度集計データであってもよい。
【００８７】
アクセス頻度比較部１８は、過去のアクセス頻度集計データと、新たに集計されたアクセス頻度集計データとを比較する。アクセス頻度比較部１８は、例えば図５のステップＡ３で生成されたアクセス頻度集計データＡ及びステップＡ６で生成されたアクセス頻度集計データＢと、過去のアクセス頻度集計データＡ及びアクセス頻度集計データＢとをそれぞれ比較する。
【００８８】
本実施形態では、例えば、実施形態１において説明した運用フロー２と同様に評価が行われ、評価時のアクセス頻度データ３１が補助記憶部３０に記憶される。また、アクセス頻度計測部１３は、実施形態１において説明した運用フロー１と同様に、ＣＰＵ１１０のメモリアクセスを監視し、アクセス頻度データ３１を補助記憶部３０に記憶する。アクセス頻度比較部１８は、評価時のアクセス頻度データ３１と運用時のアクセス頻度データ３１とを比較し、評価時と運用時とで、アクセス頻度に差があるか否かを調べる。
【００８９】
アクセス頻度比較部１８は、アクセス頻度集計データ間の差を計算する。アクセス頻度比較部１８は、差が所定の規定値（しきい値）以上の場合、変換テーブル生成部１５に更新指示を出力し、変換テーブル生成部１５にアドレス変換テーブル３２を生成させる。変換テーブル生成部１５は、アドレス変換テーブル３２を生成すると、更新通知を変換テーブル切替制御部１４に出力する。変換テーブル切替制御部１４は、更新通知を受け取ると、アドレス変換テーブル３２の更新に伴って必要となるデータの入替えをデータ入替部１７に指示する。
【００９０】
ここで、実施形態１では、データ入替部１７は、動作モードが変更され、変換テーブル選択部１６が選択するアドレス変換テーブル３２が変更後の動作モードに対応したものに変化する場合に、データの入替えを行った。本実施形態では、変換テーブル生成部１５は、ある動作モードの動作中に、その動作モードに対応するアドレス変換テーブル３２を更新する可能性がある。本実施形態において、データ入替部１７は、実施形態１で説明した動作に加えて、変換テーブル選択部１６が選択しているアドレス変換テーブル３２が更新された場合に、更新前後のアドレス変換テーブル３２に基づいてデータの入替えを行う。
【００９１】
［アクセス頻度データ］
図１５は、アクセス頻度データの具体例を示す。補助記憶部３０は、評価時のアクセス頻度データと、運用時のアクセス頻度データとを記憶する。図１５を参照すると、評価時は、ｂｏｏｔモードにおいて、論理アドレスＬ０へのアクセスが１回、論理アドレスＬ１へのアクセスが２回、論理アドレスＬ２へのアドレスが１回発生している。これに対し、運用時では、ｂｏｏｔモードにおいて、論理アドレスＬ０へのアクセスが１回、論理アドレスＬ１へのアクセスが１回、論理アドレスＬ２へのアドレスが２回発生している。ｐｒｉｎｔモードについては、評価時と運用時と差が生じていない。
【００９２】
ｂｏｏｔモードにおいて、評価時に最もアクセス回数が多いのは論理アドレスＬ１であるものの、運用時に最もアクセス回数が多いのは論理アドレスＬ２である。アクセス頻度比較部１８は、評価時のアクセス回数と運用時のアクセス回数のアドレスごとの差の総和が１以上の場合、つまり、少しでも差分があった場合に、更新指示を出力する。図１５の例では、ｂｏｏｔモードについてアドレスごとのアクセス回数の差の総和が１である。この場合、アクセス頻度比較部１８は、ｂｏｏｔモードについて、アドレス変換テーブル３２の更新を変換テーブル生成部１５に指示する。一方、図１５の例では、ｐｒｉｎｔモードについてはアドレスごとのアクセス回数の差の総和は０である。この場合、ｐｒｉｎｔモードについては、アドレス変換テーブル３２の更新は必要ない。
【００９３】
［アドレス変換テーブルの更新］
図１６は、更新前後のアドレス変換テーブルの一例を示す。実施形態１と同様に、論理アドレスがＬ０〜Ｌ３まであり、物理アドレスＳ０及びＳ１が揮発性メモリ２１の物理アドレスを示し、物理アドレスＭ０及びＭ１が不揮発性メモリ２２の物理アドレスを示す場合を考える。また、論理アドレスと物理アドレスとの初期割当ては図２に示すものと同様であるとする。
【００９４】
上記の場合において、評価時のアクセス頻度データ（図１５を参照）に基づいてアドレス変換テーブル３２を生成すると、ｂｏｏｔモードにおける論理アドレスと物理アドレスとの割当ては図１６に示すｂｏｏｔモードアドレス割当て（更新前）となる。一方、運用時のアクセス頻度データ（図１５を参照）に基づいてアドレス変換テーブル３２を生成すると、ｂｏｏｔモードにおける論理アドレスと物理アドレスとの割当ては図１６に示すｂｏｏｔモードアドレス割当て（更新後）となる。
【００９５】
更新前の論理アドレスと物理アドレスとの割当てでは、評価時に最もアクセス回数が多い論理アドレスＬ１が揮発性メモリ２１の物理アドレスＳ０に割り当てられている。しかしながら、運用時において、最もアクセス回数が多い論理アドレスは論理アドレスＬ２であり、更新前の論理アドレスと物理アドレスとの割当てにおいて、論理アドレスＬ２は不揮発性メモリ２２の物理アドレスＭ０に割り当てられている。このような場合に、アドレス変換テーブル３２を運用時のアクセス頻度データに基づいて生成（更新）すると、ｂｏｏｔモードアドレス割当て（更新後）では、論理アドレスＬ０が不揮発性メモリ２２の物理アドレスＭ０に割り当てられ、論理アドレスＬ２が揮発性メモリ２１の物理アドレスＳ０に割り当てられる。つまり、更新後は、更新前に揮発性メモリ２１の物理アドレスが割り当てられる論理アドレスの中で最もアクセス回数が少ない論理アドレスＬ０と、更新前に不揮発性メモリ２２の物理アドレスが割り当てられている論理アドレスの中で最もアクセス回数が多い論理アドレスＬ２とで、物理アドレスが入れ替えられている。このようにすることで、運用時にアクセス頻度が高い論理アドレスＬ２を揮発性メモリ２１の物理アドレスに割り当てることができる。
【００９６】
［まとめ］
本実施形態では、アクセス頻度比較部１８は、アクセス頻度データ３１に差異が生じた場合に、変換テーブル生成部１５にアドレス変換テーブルを生成される。本実施形態では、例えば評価時と運用時とでアクセス頻度データ３１が一致しなくなった場合に、アドレス変換テーブル３２を更新できる。このようにすることで、ＣＰＵ１１０のアクセスの変化に追従して、アクセス頻度が低い論理アドレスが不揮発性メモリ２２の物理アドレスに割り当てられるアドレス変換テーブルを生成できる。その場合、評価時のアドレス変換テーブル３２を使用し続ける場合に比べて、不揮発性メモリ２２の寿命を延ばすことができる。
【００９７】
［実施形態３］
図１７は、実施形態３に係る記憶装置を含む半導体装置を示す。本実施形態に係る半導体装置１００ｃは、記憶装置１０ｃにおいて、補助記憶部３０が制御シーケンス３３を更に記憶する点において、図１に示される実施形態１に係る半導体装置１００と相違する。その他の構成は、実施形態１と同様でよい。
【００９８】
本実施形態において、変換テーブル生成部１５は、少なくとも１つの動作モードに対して複数のアドレス変換テーブルを生成する。変換テーブル生成部１５は、例えばある動作モードについて、動作モード内におけるアクセス頻度データを複数の時間区間に分割し、各時間区間におけるアクセス頻度データ３１に基づいて、各時間区間で使用されるアドレス変換テーブル３２を生成する。変換テーブル生成部１５は、例えばｂｏｏｔモードに対しては１つのアドレス変換テーブル３２を生成し、ｐｒｉｎｔモードに対しては２つのアドレス変換テーブル３２を生成してもよい。変換テーブル生成部１５は、例えば図３に示されるアクセス頻度データ３１に対してクラスタリングを実施し、似た特徴を有するアクセスが行われる時間区間ごとに、アドレス変換テーブルを生成してもよい。
【００９９】
変換テーブル生成部１５は、複数のアドレス変換テーブル３２を生成した動作モードについて、複数のアドレス変換テーブル３２を切り替えて使用する順序とタイミングとを表す制御シーケンスを生成する。制御シーケンスは、例えば切替えのタイミングを表すデータとして、使用期間を含む。
【０１００】
本実施形態において、変換テーブル切替制御部１４は、制御シーケンス３３を受け取る。変換テーブル切替制御部１４は、動作モードに加えて、制御シーケンス３３に従って、１つ動作モード内で、複数のアドレス変換テーブル３２を切り替える。より詳細には、変換テーブル切替制御部１４は、制御シーケンス３３で表されている「ある動作モードに遷移した後のアドレス変換テーブル３２の切り替え順序とタイミング」に従って、アドレス変換テーブルの切り替え指示を出力する。変換テーブル切替制御部１４は、例えば、アドレス変換テーブル３２の切替タイミングを基準に、制御シーケンス３３に含まれている使用期間が経過するごとに、アドレス変換部１２で使用されるアドレス変換テーブルを、次のアドレス変換テーブル３２に切り替える。
【０１０１】
［制御シーケンス］
図１８は、制御シーケンスの具体例を示す。変換テーブル生成部１５は、例えばｂｏｏｔモードに対して１つのアドレス変換テーブル（ｔａｂｌｅ１）を生成し、ｐｒｉｎｔモードに対して２つのアドレス変換テーブル（ｔａｂｌｅ１１及びｔａｂｌｅ１２）を生成する。変換テーブル生成部１５は、ｂｏｏｔモードに対しては、使用されるアドレス変換テーブルがｔａｂｌｅ１で、その使用の使用期間が無限大である旨を表す制御シーケンスを生成する。この場合、変換テーブル切替制御部１４は、動作モードがｂｏｏｔモードへ遷移した際にｔａｂｌｅ１を選択する旨の変換テーブル指定を変換テーブル選択部１６に出力し、その後、ｂｏｏｔモード内においてアドレス変換テーブルの切替えを行わない。
【０１０２】
変換テーブル生成部１５は、ｐｒｉｎｔモードに対して、例えばｔａｂｌｅ１１とｔａｂｌｅ１２とを交互に使用し、かつそれらの使用期間がそれぞれＴ２及びＴ４ある旨を表す制御シーケンスを生成する。使用期間は、例えば所定の時間幅をＴとしてその何倍の時間であるかで表される。例えばＴ２は、所定の時間幅Ｔの２倍の時間を表す。また、Ｔ４は、所定時間幅Ｔの４倍の時間を表す。所定の時間幅Ｔは、例えばＣＰＵ１１０の動作クロック信号の周期に対応した時間幅に設定される。各アドレス変換テーブルの使用期間は、そのアドレス変換テーブルが使用される期間を表す。
【０１０３】
変換テーブル切替制御部１４は、制御シーケンス３３を参照し、ｐｒｉｎｔモード内において、ｔａｂｅｌ１１とｔａｂｌｅ１２とを交互に切り替える。より詳細には、変換テーブル切替制御部１４は、動作モードがｐｒｉｎｔモードに遷移すると、ｔａｂｌｅ１１を選択する旨の変換テーブル指定を変換テーブル選択部１６に出力する。変換テーブル切替制御部１４は、ｐｒｉｎｔモードへの遷移から時間がＴ２だけ経過すると、変換テーブル指定をｔａｂｌｅ１２に切り替える。その後、変換テーブル切替制御部１４は、時間がＴ４だけ経過すると、変換テーブル指定をｔａｂｌｅ１１に切り替える。さらに、変換テーブル切替制御部１４は、時間がＴ２経過したタイミングで変換テーブル指定をｔａｂｌｅ１２に切り替える。
【０１０４】
［まとめ］
本実施形態では、１つの動作モード内で、複数のアドレス変換テーブルが切り替えて使用される。動作モードごとのように、ある程度長い期間のアクセス頻度を用いてアドレス変換テーブルを生成した場合、動作モード内において、時間経過と共にメモリアクセスの傾向が変化する場合がある。１つの動作モードにおいて１つのアドレス変換テーブル３２が使用される場合、ある時間帯ではアクセス頻度が高い論理アドレスを揮発性メモリ２１の物理アドレスに割り当てることができるに対し、別の時間帯では、アクセス頻度が高い論理アドレスが不揮発性メモリ２２の物理アドレスに割り当てられる可能性がある。本実施形態では、動作モードよりも細かい時間単位でアドレス変換テーブルを切り替えることができ、より高精度なアドレス変換が可能となる。
【０１０５】
本実施形態では、実施形態１に比べて、アクセス頻度が高い論理アドレスがアクセス可能回数が多いメモリデバイスの物理アドレスに割り当てられ、アクセス頻度が低いアドレスがアクセス可能回数の少ないメモリデバイスの物理アドレスに割り当てる時間を長くできる。別の言い方をすると、メモリアクセス状況に適していないアドレス変換テーブルを使用している時間を短くできる。このようにすることで、アクセス可能回数が少ないメモリへのアクセスを抑制でき、メモリ寿命を延ばすことができる。
【０１０６】
［他の実施形態］
上記各実施形態において、揮発性メモリ２１は、書換え可能回数が無限大とみなせるメモリデバイス、例えばＳＲＡＭなどであり、不揮発性メモリ２２は、アクセス可能回数が有限なメモリデバイス、例えばＭＲＡＭやＮＡＮＤ  Ｆｌａｓｈなどである例を説明した。上記各実施形態では、動作モードごとに、アクセス頻度が高い論理アドレスを揮発性メモリ２１の物理アドレスに割り当て、アクセス頻度が低い論理アドレスを不揮発性メモリ２２の物理アドレスに割り当てることで、各動作モードにおいて揮発性メモリ２１を優先的に使用し、不揮発性メモリ２２を可能な限り使用しないシステムを構成可能である。
【０１０７】
しかしながら、ＣＰＵ１１０が主記憶部２０に搭載される揮発性メモリ２１の大きさを上回るデータの読み書きを行う場合には、不揮発性メモリ２２へのアクセスは避けられない。この場合に、常に不揮発性メモリ２２の全領域にアクセスが発生するわけでないため、不揮発性メモリ２２において記憶素子ごとにアクセス回数の偏りが発生し得る。アクセス回数に偏りが生じると、一部の記憶素子のアクセス可能回数が消費され、その記憶素子の寿命が先に尽きるという問題が生じ得る。
【０１０８】
上記問題に対し、一般にはウェアレベリングという手法が用いられる。ウェアレベリングは一部の記憶素子へのアクセスが集中しないように、できるだけアクセスを各記憶素子に均等に分散させる手法である。上記各実施形態は、ウェアレベリングの手法と組み合わせて実施することが可能である。以下では、実施形態１にウェアレベリングの手法を組み込んだ場合の例を説明する。
【０１０９】
［ウェアレベリング］
図１９は、ある動作モード（ＸＸＸモード）におけるアクセス頻度集計データを示す。論理アドレスと物理アドレスとの初期割当ては、図２に示すものと同じであったとする。つまり、初期割当てにおいて、論理アドレスＬ０及びＬ１は、揮発性メモリ２１の物理アドレスＳ０及びＳ１に割り当てられ、論理アドレスＬ２及びＬ３は、不揮発性メモリ２２の物理アドレスＭ０及びＭ１に割り当てられている。
【０１１０】
変換テーブル生成部１５は、図１９に示されるアクセス頻度集計データに基づいて、実施形態１において説明したものと同様な手法で、アドレス変換テーブルを生成する。変換テーブル生成部１５は、ＸＸＸモードに対し、例えば図６に示されるｐｒｉｎｔモードに対して生成されたアドレス変換テーブルと同じ内容のアドレス変換テーブルを生成する。このアドレス変換テーブルが用いられることで、論理アドレスＬ０及びＬ１は、不揮発性メモリ２２の物理アドレスＭ０及びＭ１に割り当てられ、論理アドレスＬ２及びＬ３は、揮発性メモリ２１の物理アドレスＳ０及びＳ１に割り当てられる。
【０１１１】
上記の場合、図１９を参照すると、ＸＸＸモードにおいて、論理アドレスＬ１へのアクセスが１回発生するため、ＸＸＸモードにおいて不揮発性メモリ２２の物理アドレスＭ１へのアクセスが発生する。アクセスが発生することで、物理アドレスＭ１のアクセス可能回数が消費される。一方、ＸＸＸモードにおいて、論理アドレスＬ０へのアクセスは発生せず、不揮発性メモリ２２の物理アドレスＭ０へのアクセスはない。この場合、不揮発性メモリ２２において、物理アドレスＭ１はアクセス可能回数が消費されるのに対し、物理アドレスＭ０はアクセス回数が消費されない。
【０１１２】
上記問題を回避するために、変換テーブル生成部１５は、１つの動作モードに対して、複数のアドレス変換テーブルを生成する。変換テーブル生成部１５は、まず、例えば実施形態１において説明した手順で、１つの動作モードに対してアドレス変換テーブルを生成する。変換テーブル生成部１５は、生成したアドレス変換テーブルに対し、不揮発性メモリ２２の物理アドレスを循環シフトさせた複数のアドレス変換テーブルを生成する。変換テーブル切替制御部１４は、変換テーブル選択部１６に、複数のアドレス変換テーブルを順次に切り替えて選択させる。このようにすることで、特定の不揮発性メモリ２２の物理アドレスに対してアクセスされることを回避できる。
【０１１３】
［アドレス変換テーブル生成手順］
図２０は、ウェアレベリングに対応したアドレス変換テーブルの生成手順を示す。変換テーブル生成部１５は、例えば図５に示される手順に従って、基準となるアドレス変換テーブルを生成する。以下の手順は、基準となるアドレス変換テーブルが用いられた場合に、不揮発性メモリ２２の何れかの物理アドレスに対するアクセス回数が１回以上である場合に実施される。例えば、図１９において、論理アドレスＬ１へのアクセスが０回であれば、アドレス変換テーブルが適用されることで論理アドレスＬ０に割り当てられる物理アドレスＭ０、及び論理アドレスＬ１に割り当てられるＭ１の双方に対するアクセス回数は０回となるため、ウェアレベリングは必要ない。
【０１１４】
変換テーブル生成部１５は、基準となるアドレス変換テーブルを複製する（ステップＦ１）。変換テーブル生成部１５は、基準となるアドレス変換テーブルに全ての不揮発性メモリ２２の物理アドレスが含まれていない場合は、論理アドレスと、対応する不揮発性メモリ２２の物理アドレスとの組を、複製したアドレス変換テーブルに追加する（ステップＦ２）。変換テーブル生成部１５は、例えば不揮発性メモリ２２の物理アドレスが計４つである場合に、基準となるアドレス変換テーブルに含まれる不揮発性メモリ２２の物理アドレスが２つであれば、残りの２つの物理アドレスと論理アドレスとの組を、複製したアドレス変換テーブルに追加する。このときに追記される不揮発性メモリ２２の物理アドレスと論理アドレスとの対応関係は、初期割当てに従えばよい。
【０１１５】
変換テーブル生成部１５は、複製したアドレス変換テーブルに含まれる不揮発性メモリ２２の物理アドレスを循環シフトしたアドレス変換テーブルを生成する（ステップＦ３）。変換テーブル生成部１５は、ステップＦ３では、不揮発性メモリ２２の物理アドレスの数をＮとした場合、Ｎ−１回の循環シフトを行い、それぞれ循環シフトごとにアドレス変換テーブルを複製する。変換テーブル生成部１５は、不揮発性メモリ２２の物理アドレスが１周するまで循環シフトを繰り返し、不揮発性メモリ２２の物理アドレスと論理アドレスとの対応関係が異なる複数のアドレス変換テーブルを生成する。循環シフトの方向は、論理アドレスの昇順又は降順のどちらでもよい。
【０１１６】
図２１は、ＸＸＸモードに対して生成されるアドレス変換テーブルの具体例を示す。変換テーブル生成部１５は、基準となるアドレス変換テーブルとして、図２１に示されるアドレス変換テーブル１（ＸＸＸモード）を生成する。変換テーブル生成部１５は、ステップＦ１ではこのアドレス変換テーブルを複製する。不揮発性メモリ２２の物理アドレスがＭ０及びＭ１の２つであったとすると、アドレス変換テーブル１には全ての不揮発性メモリ２２の物理アドレスが含まれているため。ステップＦ２で追加される物理アドレスはない。
【０１１７】
変換テーブル生成部１５は、不揮発性メモリ２２の物理アドレスの数が２つである場合、ステップＦ３において、アドレス変換テーブル１の不揮発性メモリ２２の物理アドレスに対して１回の循環シフトを行い、アドレス変換テーブル２（ＸＸＸモード）を生成する。アドレス変換テーブル２は、論理アドレスＬ０と物理アドレスＭ１との組、及び論理アドレスＬ１と物理アドレスＭ０との組を含む。循環シフトを行うことで、アドレス変換テーブル１に対して、物理アドレスＭ０及びＭ１と対応付けられる論理アドレスが入れ替えられたアドレス変換テーブル２が生成できる。
【０１１８】
例えば、変換テーブル切替制御部１４は、ＸＸＸモードに対して、使用するアドレス変換テーブルの初期値を記憶している。変換テーブル切替制御部１４は、例えば複数のアドレス変換テーブルのうち、番号が最も小さいものを、初期アドレス変換テーブルとする。この場合、図２０の例では、アドレス変換テーブル１が、初回のＸＸＸモードにおいて使用されることとなる。
【０１１９】
変換テーブル切替制御部１４は、前回のＸＸＸモードで使用されたアドレス変換テーブルの番号を記憶する。変換テーブル切替制御部１４は、動作モードがＸＸＸモードに遷移したとき、変換テーブル選択部１６に、前回のＸＸＸモードで使用されたアドレス変換テーブルの次の番号のアドレス変換テーブルを選択させる。変換テーブル切替制御部１４は、例えば前回のＸＸＸモードにおいてアドレス変換テーブル１が使用されていた場合は、次の動作モードがＸＸＸモードに遷移すると、変換テーブル選択部１６に、アドレス変換テーブル２を選択させる。アドレス変換テーブルの番号が最大値に達した場合、次回のアドレス変換テーブルの番号は初期値に戻る。この場合、ＸＸＸモードが繰り返し実施される場合、アドレス変換テーブル１とアドレス変換テーブル２とが交互に使用される。
【０１２０】
別例として、不揮発性メモリ２２の物理アドレスがＭ０〜Ｍ３の４つである場合を考える。図２２は、ＺＺＺモードにおけるアクセス頻度集計データの一例を示す。図２２において、ＺＺＺモードでは、論理アドレスＬ１０に対するアクセス回数は０回、論理アドレスＬ１１に対するアクセス回数は１回、論理アドレスＬ１２に対するアクセス回数は４回、論理アドレスＬ１３に対するアクセス回数は１０回である。基準となるアドレス変換テーブルにおいて、これら論理アドレスＬ０〜Ｌ３は、全て不揮発性メモリ２２の物理アドレスに対応付けられているものとする。なお、図２２において、揮発性メモリ２１の物理アドレスに対応付けられる論理アドレスについては、図示を省略している。
【０１２１】
図２３は、ＺＺＺモードで使用される複数のアドレス変換テーブルを示す。図２３においても、揮発性メモリ２１の物理アドレスに対応付けられる論理アドレスは図示を省略している。アドレス変換テーブル１は、基準となるアドレス変換テーブルであり、論理アドレスＬ０〜Ｌ３は、不揮発性メモリ２２の物理アドレスＭ０〜Ｍ３に対応付けられている。変換テーブル生成部１５は、上記基準となるアドレス変換テーブル１に対し、不揮発性メモリ２２の物理アドレス部分を循環シフトすることで、アドレス変換テーブル２〜アドレス変換テーブル４を生成される。
【０１２２】
図２４は、ＺＺＺモードにおける不揮発性メモリ２２の各物理アドレスへのアクセス回数を示す。図２４には、ＺＺＺモードが計４回実施された場合における各回の物理アドレスＭ０〜Ｍ３へのアクセス回数が記載される。ＺＺＺモードの１回目では、アドレス変換テーブル１が使用され、ＺＺＺモードの２回目では、アドレス変換テーブル２が使用される。ＺＺＺモードの３回目では、アドレス変換テーブル３が使用され、ＺＺＺモードの４回目では、アドレス変換テーブル４が使用される。
【０１２３】
図２２に示したように、ＺＺＺモードでは、論理アドレスＬ１０に対するアクセス回数は０回、論理アドレスＬ１１に対するアクセス回数は１回、論理アドレスＬ１２に対するアクセス回数は４回、論理アドレスＬ１０に対するアクセス回数は１０回である。ＺＺＺモードの１回目では、アドレス変換テーブル１が使用されるため、物理アドレスＭ０に対するアクセス回数は０回、物理アドレスＭ１に対するアクセス回数は１回、物理アドレスＭ２に対するアクセス回数は４回、物理アドレスＭ３に対するアクセス回数は１０回となる。
【０１２４】
ＺＺＺモードの２回目では、アドレス変換テーブル２が使用される。アドレス変換テーブル２が使用されることで、論理アドレスと不揮発性メモリ２２の物理アドレスとの対応関係が、アドレス変換テーブル１が使用される場合から変化する。ＺＺＺモードの２回目では、論理アドレスＬ１３に対応する物理アドレスＭ０に対するアクセス回数は１０回、論理アドレスＬ１０に対応する物理アドレスＭ１に対するアクセス回数は０回となる。また、論理アドレスＬ１１に対応する物理アドレスＭ２に対するアクセス回数は１回、論理アドレスＬ１２に対応する物理アドレスＭ３に対するアクセス回数は４回となる。
【０１２５】
ＺＺＺモードの３回目では、アドレス変換テーブル３が使用される。この場合、物理アドレスＭ０に対するアクセス回数は４回、物理アドレスＭ１に対するアクセス回数は１０回、物理アドレスＭ２に対するアクセス回数は０回、物理アドレスＭ３に対するアクセス回数は１回となる。ＺＺＺモードの４回目では、アドレス変換テーブル４が使用される。この場合、物理アドレスＭ０に対するアクセス回数は１回、物理アドレスＭ１に対するアクセス回数は４回、物理アドレスＭ２に対するアクセス回数は１０回、物理アドレスＭ３に対するアクセス回数は０回となる。
【０１２６】
ＺＺＺモードが４回実施された場合の物理アドレスＭ０のアクセス回数は、計１５回となる。同様に、物理アドレスＭ１のアクセス回数は計１５回となり、物理アドレスＭ２のアクセス回数は計１５回となり、物理アドレスＭ３のアクセス回数は計１５回となる。このように、不揮発性メモリ２２の物理アドレスを循環シフトした複数のアドレス変換テーブルを生成し、それらを切り替えて使用することで、複数のアドレス変換テーブルが一巡した段階で、不揮発性メモリ２２の各物理アドレスへのアクセス回数を均一化することができる。
【０１２７】
なお、上記各実施形態では、バスマスタがＣＰＵ１１０である例を説明したが、これには限定されない。バスマスタは、記憶装置１０（主記憶部２０）に対してアクセスするものであればよく、特定の構成要素には限定されない。また、上記各実施形態では、ＣＰＵ１１０がモード設定部１１１を兼ねる例を説明したが、これには限定されない。半導体装置１００において、モード設定部１１１に含まれている必要はなく、ＣＰＵ１１０から独立した構成要素であってもよい。モード設定部１１１は、例えば半導体装置１００の入出力信号などを監視し、入出力信号の状態に応じて動作モードを設定してもよい。
【０１２８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１２９】
１０：記憶装置
１１：アクセス制御部
１２：アドレス変換部
１３：アクセス頻度計測部
１４：変換テーブル切替制御部
１５：変換テーブル生成部
１６：変換テーブル選択部
１７：データ入替部
１８：アクセス頻度比較部
２０：主記憶部
２１：揮発性メモリ
２２：不揮発性メモリ
３０：補助記憶部
３１：アクセス頻度データ
３２：アドレス変換テーブル
３３：制御シーケンス
４０：補助装置
１００：半導体装置
１１０：ＣＰＵ
１１１：モード設定部
１２０：動作モード状態保持部
【図１】
2019212080.tif 000003
【図２】
2019212080.tif 000004
【図３】
2019212080.tif 000005
【図４】
2019212080.tif 000006
【図５】
2019212080.tif 000007
【図６】
2019212080.tif 000008
【図７】
2019212080.tif 000009
【図８】
2019212080.tif 000010
【図９】
2019212080.tif 000011
【図１０】
2019212080.tif 000012
【図１１】
2019212080.tif 000013
【図１２】
2019212080.tif 000014
【図１３】
2019212080.tif 000015
【図１４】
2019212080.tif 000016
【図１５】
2019212080.tif 000017
【図１６】
2019212080.tif 000018
【図１７】
2019212080.tif 000019
【図１８】
2019212080.tif 000020
【図１９】
2019212080.tif 000021
【図２０】
2019212080.tif 000022
【図２１】
2019212080.tif 000023
【図２２】
2019212080.tif 000024
【図２３】
2019212080.tif 000025
【図２４】
2019212080.tif 000026