(57)【要約】 【課題】揮発メモリと不揮発メモリの特徴を生かして、高速書込を実現する。【解決手段】メモリ制御回路は、プロセッサが第１記憶装置にデータを書き込むアドレス領域ごとに、第１記憶装置内の揮発メモリおよび不揮発メモリのいずれかを書込み先として選択する書込み先選択部と、書込み先選択部にて選択された書込み先に、書き込むべきアドレス領域のデータを書き込む制御を行う書込み制御部と、アドレス領域ごとに、書込み先である揮発メモリまたは不揮発メモリの選択情報と、アドレス領域内の連続したアドレス群のページを切り替えた回数情報と、を対応づけて登録するアクセス情報登録部と、を備える。書込み先選択部は、プロセッサから新たな書込み要求があると、アクセス情報登録部に登録された情報に基づいて書込み先を選択する。【選択図】図１
2018049381.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが第１記憶装置にデータを書き込むアドレス領域ごとに、前記第１記憶装置内の揮発メモリおよび不揮発メモリのいずれかを書込み先として選択する書込み先選択部と、
前記書込み先選択部にて選択された書込み先に、書き込むべきアドレス領域のデータを書き込む制御を行う書込み制御部と、
前記アドレス領域ごとに、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、前記アドレス領域内の連続したアドレス群のページを切り替えた回数情報と、を対応づけて登録するアクセス情報登録部と、を備え、
前記書込み先選択部は、前記プロセッサから新たな書込み要求があると、前記アクセス情報登録部に登録された情報に基づいて前記書込み先を選択する、メモリ制御回路。
【請求項２】
前記書込み先選択部は、前記プロセッサから新たな書込み要求があると、前記アクセス情報登録部に登録された情報に基づいて前記書込み先を選択するとともに、前記アクセス情報登録部の登録情報を更新する、請求項１に記載のメモリ制御回路。
【請求項３】
前記書込み先選択部は、前記アクセス情報登録部に登録されていない書込み先への書込み要求を前記プロセッサが発行した場合、または前記アクセス情報登録部内の前記回数情報が更新された場合に、前記アクセス情報登録部内の前記選択情報を更新する、請求項２に記載のメモリ制御回路。
【請求項４】
前記アドレス領域は、前記プロセッサが実行する処理であるスレッドによりアクセスされる前記第１記憶装置内の一部の記憶領域である、請求項１乃至３のいずれか一項に記載のメモリ制御回路。
【請求項５】
前記プロセッサが実行する前記スレッドは、処理内容が異なる複数のスレッドを含み、
前記アクセス情報登録部は、前記スレッドごとに、前記アドレス領域を特定する物理アドレス情報と、前記スレッドを識別する識別情報と、前記スレッドによりアクセスされる前記ページを切り替えた回数情報と、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、を対応づけて登録する、請求項４に記載のメモリ制御回路。
【請求項６】
前記アドレス領域は、前記ページにアクセスするための仮想アドレス群を物理アドレス群に変換するアドレス変換情報によりアクセスされる前記第１記憶装置内の一部の記憶領域である、請求項１乃至３のいずれか一項に記載のメモリ制御回路。
【請求項７】
前記アクセス情報登録部は、前記アドレス変換情報ごとに、前記アドレス領域を特定する物理アドレス情報と、前記スレッドを識別する識別情報と、前記アドレス変換情報によりアクセスされる前記ページを切り替えた回数情報と、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、を対応づけて登録する、請求項６に記載のメモリ制御回路。
【請求項８】
前記書込み先選択部は、前記プロセッサが発行した書込み要求アドレスが前記第１記憶装置よりもアクセス優先順位の高い第２記憶装置内に存在しない場合に、前記揮発メモリまたは前記不揮発メモリを書込み先として選択する、請求項１乃至７のいずれか一項に記載のメモリ制御回路。
【請求項９】
前記不揮発メモリに空き領域があるか否かを判定する第１空き領域判定部と、
前記揮発メモリに空き領域があるか否かを判定する第２空き領域判定部と、を備え、
前記書込み先選択部は、前記不揮発メモリおよび前記揮発メモリに空き領域があると判定されると、空き領域の多い方を前記書込み先として選択し、前記不揮発メモリに空き領域があり、かつ前記揮発メモリに空き領域がないと判定されると、前記不揮発メモリを前記書込み先として選択し、前記揮発メモリに空き領域があり、かつ前記不揮発メモリに空き領域がないと判定されると、前記揮発メモリを前記書込み先として選択する、請求項１乃至８のいずれか一項に記載のメモリ制御回路。
【請求項１０】
前記書込み先選択部は、前記揮発メモリに記憶されたアドレス領域の前記回数情報に基づいて、前記アドレス領域ごとに、前記揮発メモリ内のデータを前記不揮発メモリに移動させるか否かを決定する、請求項９に記載のメモリ制御回路。
【請求項１１】
前記揮発メモリに記憶されたデータを、前記アドレス領域ごとに前記回数情報に基づいて並び替えるソート部を備え、
前記書込み制御部は、前記ソート部で並び替えた前記アドレス領域ごとのデータに基づいて、前記ページの切替回数のより多い前記アドレス領域のデータを前記不揮発メモリに移動させる、請求項９または１０に記載のメモリ制御回路。
【請求項１２】
所定時間にわたって、前記アドレス領域ごとに、前記ページの切替回数をカウントし、前記ページの切替回数の平均値を求める平均値検出部と、を備え、
前記書込み先選択部は、前記プロセッサから書込み要求があったデータに対応する前記ページの切替回数を前記平均値と比較した結果に基づいて、前記揮発メモリまたは前記不揮発メモリを前記書込み先として選択する、請求項１乃至８のいずれか一項に記載のメモリ制御回路。
【請求項１３】
前記書込み先選択部は、
前記プロセッサから書込み要求があったデータに対応する前記ページの切替回数が前記平均値より大きい場合には、前記不揮発メモリに空き領域があれば、前記不揮発メモリを前記書込み先として選択し、前記不揮発メモリに空き領域がなければ、前記不揮発メモリ内の前記ページの切替回数がより少ない前記アドレス領域のデータを前記揮発メモリに移動させて前記不揮発メモリを前記書込み先として選択し、
前記プロセッサから書込み要求があったデータに対応する前記ページの切替回数が前記平均値以下の場合には、前記揮発メモリに空き領域があれば、前記揮発メモリを前記書込み先として選択し、前記揮発メモリに空き領域がなければ、前記揮発メモリ内の前記ページの切替回数がより多い前記アドレス領域のデータを前記不揮発メモリに移動させて前記揮発メモリを前記書込み先として選択する、請求項１２に記載のメモリ制御回路。
【請求項１４】
不揮発メモリと、揮発メモリとを有する第１記憶装置と、
プロセッサが前記第１記憶装置にデータを書き込むアドレス領域ごとに、前記第１記憶装置内の前記揮発メモリおよび前記不揮発メモリのいずれかを書込み先として選択する書込み先選択部と、
前記書込み先選択部にて選択された書込み先に、書き込むべきアドレス領域のデータを書き込む制御を行う書込み制御部と、
前記アドレス領域ごとに、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、前記アドレス領域内の連続したアドレス群のページを切り替えた回数情報と、を対応づけて登録するアクセス情報登録部と、を備え、
前記書込み先選択部は、前記プロセッサから新たな書込み要求があると、前記アクセス情報登録部に登録された情報に基づいて前記書込み先を選択する、メモリシステム。
【請求項１５】
プロセッサと、
前記プロセッサによりアクセスされ、不揮発メモリと、揮発メモリとを有する第１記憶装置と、
前記プロセッサが前記第１記憶装置にデータを書き込むアドレス領域ごとに、前記第１記憶装置内の前記揮発メモリおよび前記不揮発メモリのいずれかを書込み先として選択する書込み先選択部と、
前記書込み先選択部にて選択された書込み先に、書き込むべきアドレス領域のデータを書き込む制御を行う書込み制御部と、
前記アドレス領域ごとに、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、前記アドレス領域内の連続したアドレス群のページを切り替えた回数情報と、を対応づけて登録するアクセス情報登録部と、を備え、
前記書込み先選択部は、前記プロセッサから新たな書込み要求があると、前記アクセス情報登録部に登録された情報に基づいて前記書込み先を選択する、プロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリ制御回路、メモリシステムおよびプロセッサシステムに関する。
【背景技術】
【０００２】
携帯情報端末に用いられるプロセッサは低消費電力であることが求められる。このため、キャッシュメモリやメインメモリを不揮発性メモリで置き換える検討が行われている。ＭＲＡＭ（Magnetoresistive Random Access Memory）は種々の不揮発性メモリの中で高い書き換え耐性と、高速に読出しと書込みを行う動作性能と、高集積可能なセル面積の３つの特徴を同時に満たしうるものとして注目されている。ＭＲＡＭをキャッシュメモリとして利用する際の動作速度が他の不揮発性メモリに比べて高速であることと、面積効率が従来のメモリに比べて高く、大容量の高速キャッシュメモリをプロセッサに搭載できることから、ＭＲＡＭに対して大きな期待が寄せられている。特にＭＲＡＭの中でも、ＳＴＴ−ＭＲＡＭ（Spin Transfer Torque MRAM）と呼ばれる垂直磁気のスピン注入を用いた方式は、書き込み電流と書き込み遅延が非常に小さく、高速動作が可能なため、幅広い応用が期待されている。
【０００３】
メインメモリとして従来から用いられているＤＲＡＭ（Dynamic RAM）は、一本のワード線上に多数のメモリセルを接続しており、ワード線を駆動するのに時間がかかる。いったんワード線を駆動してしまうと、同じワード線上に接続された多数のメモリセルに対して高速にアクセスすることができる。このため、ＤＲＡＭは、連続したアドレス領域に対しては高速アクセスが可能である。ところが、不連続のアドレス領域にアクセスしようとすると、不連続のアドレス領域に対応するワード線を駆動するのに時間がかかるため、アクセス速度が著しく低下してしまう。
【０００４】
これに対して、ＭＲＡＭの場合は、連続したアドレス領域と不連続のアドレス領域のどちらに対しても、それほどアクセス速度に違いはないが、連続したアドレス領域にアクセスする際のアクセス速度はＤＲＡＭよりも劣る可能性がある。
【０００５】
このように、ＤＲＡＭは連続したアドレス領域の書込みに向いているのに対し、ＭＲＡＭは不連続のアドレス領域の書込みに向いていると言える。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許公開公報２０１３／０１９８４３７
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の実施形態は、揮発メモリと不揮発メモリの特徴を生かして、高速書込を実現可能なメモリ制御回路、メモリシステムおよびプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００８】
本実施形態によれば、プロセッサが第１記憶装置にデータを書き込むアドレス領域ごとに、前記第１記憶装置内の揮発メモリおよび不揮発メモリのいずれかを書込み先として選択する書込み先選択部と、
前記書込み先選択部にて選択された書込み先に、書き込むべきアドレス領域のデータを書き込む制御を行う書込み制御部と、
前記アドレス領域ごとに、書込み先である前記揮発メモリまたは前記不揮発メモリの選択情報と、前記アドレス領域内の連続したアドレス群のページを切り替えた回数情報と、を対応づけて登録するアクセス情報登録部と、を備え、
前記書込み先選択部は、前記プロセッサから新たな書込み要求があると、前記アクセス情報登録部に登録された情報に基づいて前記書込み先を選択する、メモリ制御回路が提供される。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係るプロセッサシステムの概略構成を示すブロック図。
【図２Ａ】複数のプロセッサコア、共有キャッシュメモリ、メモリ制御回路およびＭＲＡＭをワンチップした例を示すブロック図。
【図２Ｂ】複数のプロセッサコアとメモリ制御回路をワンチップ化し、ＤＲＡＭとＭＲＡＭとをそれぞれ別々のメモリ基板にした例を示すブロック図。
【図２Ｃ】プロセッサコアのチップとは別個に、ＤＲＡＭ、ＭＲＡＭおよびメモリ制御回路が実装されたチップまたは基板を設ける例を示すブロック図。
【図３】プロセッサ、メインメモリ、ＤＲＡＭおよびＭＲＡＭのアドレスを説明する図。
【図４】アクセス情報登録部のデータ構成を示す図。
【図５】プロセッサがアクセス要求を行った場合のプロセッサシステムの処理手順の一例を示すフローチャート。
【図６】書込み先選択部が行うアクセス情報登録部の更新処理を示すフローチャート。
【図７】図６に続くフローチャート。
【図８】第２の実施形態によるアクセス情報登録部のデータ構成を示す図。
【図９】第２の実施形態によるデータ書き込み処理の一例を示すフローチャート。
【図１０】第３の実施形態によるデータ書き込み処理の一例を示すフローチャート。
【図１１】第４の実施形態によるデータ書き込み処理の一例を示すフローチャート。
【図１２】ＯＳが行う振分処理の第１例を示すフローチャート。
【図１３】ＯＳが行う振分処理の第２例を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００１１】
図１は一実施形態によるメモリ制御回路１およびメモリシステム２を備えたプロセッサシステム３の概略構成を示すブロック図である。図１のプロセッサシステム３は、複数のプロセッサ４と、メモリ制御回路１を内蔵するメモリシステム２とを備えている。なお、プロセッサシステム３は、単一のプロセッサ４を備えていてもよい。
【００１２】
メモリシステム２は、メモリ制御回路１と、ＤＲＡＭ５と、ＭＲＡＭ６とを有する。ＤＲＡＭ５とＭＲＡＭ６はそれぞれ、メインメモリ７の一部として使用可能である。ＤＲＡＭ５とＭＲＡＭ６のメモリ容量の比率は任意である。ＤＲＡＭ５とＭＲＡＭ６の具体的な種類や規格等は問わない。また、ＤＲＡＭ５は、揮発メモリの代表例であり、ＤＲＡＭ５以外の揮発メモリを用いてもよい。同様に、ＭＲＡＭ６は、不揮発メモリの代表例であり、ＭＲＡＭ６以外の不揮発メモリを用いてもよい。
【００１３】
メモリ制御回路１は、調停部１１と、ページ切替回数計数部１２と、書込み先選択部１３と、アクセス情報登録部１４と、振分部１５と、ＤＲＡＭコントローラ１６と、ＭＲＡＭコントローラ１７と、ＤＲＡＭ駆動部１８と、ＭＲＡＭ駆動部１９とを備えている。振分部１５と、ＤＲＡＭコントローラ１６と、ＭＲＡＭコントローラ１７と、ＤＲＡＭ駆動部１８と、ＭＲＡＭ駆動部１９とは、書込み制御部である。
【００１４】
調停部１１は、複数のプロセッサ４からのアクセス要求を調停して、優先順位を決定する。調停部１１は、複数のプロセッサ４からのアクセス要求を一時的に格納するキュー２１を有する。キュー２１は、複数のプロセッサ４が発行したアクセスコマンドと、アドレスと、データとを含むアクセス要求情報を一時的に格納する。キュー２１は、例えばレジスタで構成されている。
【００１５】
ページ切替回数計数部１２は、プロセッサ４による書込み要求を実行する際に生じるページの切替回数、すなわちページをオープンまたはクローズした回数をページごとにカウントする。ここで、ページとは、プロセッサ４がメモリアクセスのために指定する連続したアドレス群のメモリ領域であり、例えば数ｋバイトのメモリ領域である。メモリアクセスは、ページ単位で行われる。あるページのメモリ領域にアクセスするには、対応するワード線を駆動しなければならない。ページに対応するワード線の駆動をページのオープンと呼ぶ。また、ページに対応するワード線の駆動を停止することをページのクローズと呼ぶ。本明細書では、ページをオープンまたはクローズした回数をページの切替回数と呼ぶ。
【００１６】
書込み先選択部１３は、プロセッサ４がメインメモリ７にデータを書き込む単位であるアドレス領域ごとに、メインメモリ７内のＤＲＡＭ５とＭＲＡＭ６のいずれかを書込み先として選択する。ここで、アドレス領域とは、例えば、プロセッサ４の処理単位であるスレッドを実行することによりアクセスされるメインメモリ７のアドレス範囲である。一つのスレッドによりアクセスされるアドレス領域は決まっており、スレッドが異なれば、通常はアクセスされるアドレス領域も異なる。一つのスレッドによりアクセスされるアドレス領域には、複数のページアドレスが含まれている場合がある。この場合、アクセスするページを変更するたびに、ページのオープンおよびクローズ処理を行う必要がある。書込み先選択部１３は、各スレッドごとに、ＤＲＡＭ５とＭＲＡＭ６のどちらにデータを書き込むかを選択する。
【００１７】
アクセス情報登録部１４は、プロセッサ４が書込み要求を行った各アドレス領域ごとに、書込み先である揮発メモリまたは不揮発メモリの選択情報と、ページを切り替えた回数情報と、を対応づけて登録する。書込み先選択部１３は、プロセッサ４から新たな書込み要求があると、アクセス情報登録部１４に登録された情報に基づいて書込み先を選択するとともに、アクセス情報登録部１４の登録情報を更新する。より詳細には、書込み先選択部１３は、アクセス情報登録部１４に登録されていない書込み先への書込み要求をプロセッサが発行した場合、またはアクセス情報登録部１４内の回数情報が更新された場合に、アクセス情報登録部１４内の選択情報を更新する。
【００１８】
振分部１５は、書込み先選択部１３が選択した書込み先に従って、ＤＲＡＭコントローラ１６とＭＲＡＭコントローラ１７の一方に、プロセッサ４の書込み要求を通知する。ＤＲＡＭコントローラ１６は、プロセッサ４の書込み要求に従って、ＤＲＡＭ５に対する書込み制御を行う。ＤＲＡＭ駆動部１８は、ＤＲＡＭ５の規格に従って、ＤＲＡＭ５にアドレス、データ、制御信号を送るタイミングを制御する。ＭＲＡＭコントローラ１７は、プロセッサ４の書込み要求に従って、ＭＲＡＭ６に対する書込み制御を行う。ＭＲＡＭ駆動部１９は、ＭＲＡＭ６の規格に従って、ＭＲＡＭ６にアドレス、データ、制御信号を送るタイミングを制御する。
【００１９】
図１のメモリ制御回路１は、プロセッサ４とともにワンチップ化してもよいし、プロセッサ４とは別チップにしてもよい。また、図１のメモリ制御回路１は、ＤＲＡＭ５とＭＲＡＭ６の少なくとも一方とワンチップ化してもよい。図１のメモリ制御回路１の代表的な実装形態として、図２Ａ、図２Ｂ、図２Ｃの３通りがある。もちろん、図２Ａ、図２Ｂ、図２Ｃ以外の実装形態も考えられる。
【００２０】
図２Ａは、複数のプロセッサコア２２、共有キャッシュメモリ２３、メモリ制御回路１、およびＭＲＡＭ６をワンチップした例を示している。ワンチップ化することで、プロセッサコア２２、メモリ制御回路１およびＭＲＡＭ６間で送受される信号の伝搬遅延を短縮でき、ノイズの影響も低減できる。なお、図２Ａでは、ＤＲＡＭ５は、ＤＲＡＭ基板２４に実装されている。なお、図１のプロセッサ４は、図２Ａの複数のプロセッサコア２２と共有キャッシュ２３を含んでいる。なお、複数のプロセッサ４で一つの共有キャッシュ２３を共有してもよいし、一つのプロセッサ４内の複数のプロセッサコア２２で一つの共有キャッシュ２３を共有してもよい。
【００２１】
図２Ｂは、複数のプロセッサコア２２とメモリ制御回路１をワンチップ化し、ＤＲＡＭ５とＭＲＡＭ６とをそれぞれ別々のメモリ基板２４，２５にした例を示している。図２Ｂの場合、ＤＲＡＭ５とＭＲＡＭ６のメモリ容量を個別に増減できるため、汎用性が高くなる。
【００２２】
図２Ｃは、プロセッサコア２２のチップとは別個に、ＤＲＡＭ５、ＭＲＡＭ６およびメモリ制御回路１が実装されたチップまたは基板２６を設ける例を示している。ＭＲＡＭ６はメモリ制御回路１と一体的に形成しても構わない。プロセッサコア２２のチップ内にはハイブリッドメモリコントローラ２７が設けられており、このコントローラは、メモリ制御回路１等が実装されたチップまたは基板との間で、高速にデータ、アドレス、制御信号を送受する。
【００２３】
図３は、プロセッサ４、メインメモリ７、ＤＲＡＭ５およびＭＲＡＭ６のアドレスを説明する図である。プロセッサ４は、仮想アドレスを発行する。プロセッサ４が発行した仮想アドレスは、ＴＬＢ（Translation Lookaside Buffer）２８またはページテーブル（ＰＴ）２９にて、物理アドレスに変換される。物理アドレスは、メインメモリ７をアクセスするのに用いられる。書込み先選択部１３は、物理アドレスを、ＤＲＡＭ５またはＭＲＡＭ６をアクセスするためのアドレスに変換する。書込み先選択部１３が変換したアドレスは、アクセス情報登録部１４に登録される。
【００２４】
図３からわかるように、ＤＲＡＭ５にアクセスするためのアドレス空間は、ＭＲＡＭ６にアクセスするためのアドレス空間とは別個に設けられている。メインメモリ７にアクセスするためのアドレス空間は、アドレス領域ごとに、ＤＲＡＭ５またはＭＲＡＭ６に割り振られる。この割り振りは、動的に変更される。すなわち、書込み先選択部１３は、ＤＲＡＭ５とＭＲＡＭ６の空き容量や、各アドレス領域のページ切替回数によって、各アドレス領域をＤＲＡＭ５またはＭＲＡＭ６に動的に割り振る。
【００２５】
図４はアクセス情報登録部１４のデータ構成を示す図である。図４のアクセス情報登録部１４は、各スレッドごとに、各スレッドの物理アドレスと、スレッドＩＤと、ページ切替回数と、選択したＤＲＡＭ５またはＭＲＡＭ６のアドレス（本明細書では、ハイブリッドアドレスとも呼ぶ）を対応づけて登録している。ページ切替回数は、一定時間ごとに更新されるため、現在から過去に遡った複数のページ切替回数の情報がアクセス情報登録部１４に登録されている。
【００２６】
書込み先選択部１３は、プロセッサ４からの書込み要求があると、アクセス情報登録部１４を参照して、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して、書込みアドレスを決定する。書込み先選択部１３は、アクセス情報登録部１４に登録されたページ切替回数に大きな変化がなければ、アクセス情報登録部１４に登録されたＤＲＡＭ５またはＭＲＡＭ６の選択情報に従って、ＤＲＡＭ５またはＭＲＡＭ６を選択する。一方、アクセス情報登録部１４に登録されたページ切替回数に大きな変化がある場合、あるいはアクセス情報登録部１４に登録されていないアドレス領域の場合、書込み先選択部１３は、ページ切替回数に基づいて、ＤＲＡＭ５またはＭＲＡＭ６の選択を切り替える。この場合、書込み先選択部１３は、アクセス情報登録部１４の登録情報を更新する。
【００２７】
図５はプロセッサ４がアクセス要求（例えば書込み要求）を行った場合のプロセッサシステム３の処理手順の一例を示すフローチャートである。このフローチャートは、プロセッサシステム１が各プロセッサ４ごとに設けられる個別キャッシュメモリと、複数のプロセッサ４で共有される共有キャッシュメモリ２３と、ＴＬＢ２８と、ページテーブル２９とを備えている例を示している。個別キャッシュメモリは、アクセス優先度が最も高いメモリである。共有キャッシュメモリ２３は、個別キャッシュメモリよりはアクセス優先度が低いが、メインメモリ７よりはアクセス優先度が高いメモリである。共有キャッシュメモリ２３は、ラストレベルキャッシュメモリとも呼ばれる。共有キャッシュメモリ２３は、個別キャッシュメモリよりも大きいメモリ容量を有する。ＴＬＢ２８とページテーブル２９は、プロセッサ４が発行する仮想アドレスを物理アドレスに変換する変換テーブルを有する。ＴＬＢ２８の変換テーブルは、ページテーブル２９の変換テーブルより小さいが、ページテーブル２９よりも、より高速に物理アドレスへの変換を行うことができる。ページテーブル２９には、メインメモリ７に格納されるすべてのデータについてのアドレス変換情報が登録されており、そのうちの一部がＴＬＢ２８に登録されている。
【００２８】
図５のフローチャートは、プロセッサ４がアクセス要求を行ったときに処理を開始する。まず、アクセス要求をしたアドレスが個別キャッシュメモリにヒットするか否かを判定する（ステップＳ１）。ヒットした場合には、個別キャッシュメモリに対してアクセスを行えばよいため、図５の処理を終了する。
【００２９】
ステップＳ１で個別キャッシュメモリにミスした場合は、ＴＬＢ２８にアクセスして、ヒットするか否かを判定する（ステップＳ２）。ＴＬＢ２８にミスした場合は、ページテーブル２９のエントリ情報（以下、ページテーブルエントリまたはＰＴＥ）にアクセスする（ステップＳ３）。
【００３０】
ステップＳ２でＴＬＢ２８にヒットした場合、あるいはステップＳ３でページテーブル２９にアクセスした場合は、ＴＬＢ２８にヒットしたアドレス変換情報、またはページテーブル２９にアクセスして取得したアドレス変換情報を用いて共有キャッシュメモリ２３にアクセスして、ヒットするか否かを判定する（ステップＳ４）。共有キャッシュメモリ２３にヒットした場合には、共有キャッシュメモリ２３に対してアクセスを行えばよいため、図５の処理を終了する。
【００３１】
ステップＳ４で共有キャッシュメモリ２３にミスした場合は、プロセッサ４からのアクセス要求を調停部１１内のキュー２１に格納する（ステップＳ５）。次に、書込み先選択部１３は、アクセス情報登録部１４に登録された情報に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して、アクセスすべきアドレスを決定する（ステップＳ６）。次に、振分部１５は、書込み先選択部１３が決定したアドレスに基づいて、ＤＲＡＭ５にアクセスするべきか、ＭＲＡＭ６にアクセスするべきかを判断する（ステップＳ７）。ＤＲＡＭ５にアクセスするべきと判断した場合は、ＤＲＡＭコントローラ１６とＤＲＡＭ駆動部１８を介してＤＲＡＭ５にアクセスする（ステップＳ８）。ＤＲＡＭ５にアクセスする際に新たなページをオープンした場合は、ページ切替回数をカウントアップする（ステップＳ９）。ステップＳ７でＭＲＡＭ６にアクセスするべきと判断した場合は、ＭＲＡＭコントローラ１７とＭＲＡＭ駆動部１９を介してＭＲＡＭ６にアクセスする（ステップＳ１０）。ＭＲＡＭ６にアクセスする際に新たなページをオープンした場合は、ページ切替回数をカウントアップする（ステップＳ１１）。
【００３２】
図６および図７は書込み先選択部１３が行うアクセス情報登録部１４の更新処理を示すフローチャートである。これらのフローチャートは、書込み先選択部１３がアクセス情報登録部１４の更新処理をリアルタイムに行う例を示している。
【００３３】
図６および図７の更新処理は、２段階に分けて行われる。プロセッサ４からのアクセス要求（この場合、書込み要求）があると、まずは、図６に示すように、ＭＲＡＭ６とＤＲＡＭ５のうち、空き容量が多い方に、書込み要求のあったデータを書き込む処理を行う。次に、図７に示すように、ＤＲＡＭ５内のデータのうち、ページ切替回数の多いデータをＭＲＡＭ６内のページ切替回数の少ないデータと入れ替える処理を行う。以下、図６と図７の処理を順に説明する。
【００３４】
図６のフローチャートは、プロセッサ４が新たなアクセス要求を行ったときに処理を開始する。まず、ＭＲＡＭ６に空き領域があるか否かを判定する（ステップＳ２１、第１空き領域判定部）。ＭＲＡＭ６に空き領域があると判定されると、ＤＲＡＭ５に空き領域があるか否かを判定する（ステップＳ２２、第２空き領域判定部）。ＤＲＡＭ５に空き領域があると判定されると、ＤＲＡＭ５とＭＲＡＭ６のうち、空き領域が多い方を選択して、データ書き込みのための領域を確保する（ステップＳ２３）。次に、確保した領域のアドレスを取得する（ステップＳ２４）。取得したアドレスは、振分部１５に送られる。振分部１５は、アドレスによりＤＲＡＭ５かＭＲＡＭ６かを特定して、特定した方にデータを書き込む。
【００３５】
ステップＳ２２でＤＲＡＭ５に空き領域がないと判定されると、ＭＲＡＭ６にデータ書き込みのための領域を確保し（ステップＳ２５）、その後、上述したステップＳ２４の処理を行う。
【００３６】
ステップＳ２１でＭＲＡＭ６に空き領域がないと判定されると、ＤＲＡＭ５に空き領域があるか否かを判定する（ステップＳ２６）。ＤＲＡＭ５に空き領域があると判定されると、ＤＲＡＭ５にデータ書き込みのための領域を確保し（ステップＳ２７）、その後、上述したステップＳ２４の処理を行う。ステップＳ２６でＤＲＡＭ５に空き領域がないと判定された場合は、ＤＲＡＭ５とＭＲＡＭ６のどちらにも空き領域がないことを示しており、領域確保ができない旨のエラーを返して（ステップＳ２８）、処理を終了する。
【００３７】
図６の処理によって、ＤＲＡＭ５とＭＲＡＭ６のいずれかにデータを書き込んだ後に、図７の処理が開始される。まず、プロセッサ４が実行する各スレッドのページ切替回数を一定時間カウントする（ステップＳ３１）。次に、プロセッサ４が一定時間の間に実行する各スレッドのページ切替回数を降順に並べる（ステップＳ３２、ソート部）。次に、一定時間の間にＤＲＡＭ５に格納された各スレッドのデータのうち、ページ切替回数の多い順にページ切替回数を取得する（ステップＳ３３）。次に、ＭＲＡＭ６に格納された各スレッドのデータのうち、最小のページ切替回数を取得する（ステップＳ３４）。
【００３８】
ステップＳ３３で取得したページ切替回数がステップＳ３４で取得した最小のページ切替回数より多いか否かを判定する（ステップＳ３５）。この判定がＮＯの場合は、ステップＳ３１以降の処理を繰り返す。ステップＳ３５の判定がＹＥＳの場合は、ステップＳ３３とＳ３４で取得したデータ同士を、ＤＲＡＭ５とＭＲＡＭ６で入れ替えることが可能か否かを判定する（ステップＳ３６）。入れ替えることが可能と判定されると、これらのスレッドのデータ同士をＤＲＡＭ５とＭＲＡＭ６とで入れ替える（ステップＳ３７）。
【００３９】
次に、入れ替えたスレッド数が所定の閾値に達したか否かを判定し（ステップＳ３８）、まだ達していなければステップＳ３３以降の処理を繰り返す。ステップＳ３８で達したと判定されると、ステップＳ３１以降の処理を繰り返す。
【００４０】
ステップＳ３６で入替が可能でないと判定された場合は、ＭＲＡＭ６に空き容量がないと考えられる。この場合、ＭＲＡＭ６内のページ切替回数の最小値のスレッドだけ追い出してもよいし、あるいは他のスレッドも合わせてＭＲＡＭ６から追い出してもよい。これにより、ＤＲＡＭ５内のスレッドとの入替処理を実行し（ステップＳ３９）、その後にステップＳ３８以降の処理を行う。
【００４１】
このように、第１の実施形態では、プロセッサ４が各スレッドを実行する際にメインメモリ７に対して書込み要求をすると、各スレッドごとのページ切替回数に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれか一方を選択して、データの書き込みを行う。より具体的には、ページ切替回数が多いスレッドについては、ＭＲＡＭ６にデータを書き込み、ページ切替回数が少ないスレッドについては、ＤＲＡＭ５にデータを書き込む。これにより、連続的なアドレス領域にデータを書き込む際にはＤＲＡＭ５にデータを書き込むため、ＤＲＡＭ５の特徴を生かして高速にデータ書き込みを行える。また、不連続なアドレス領域にデータを書き込む際にはＭＲＡＭ６にデータを書き込むため、ページ・オープン／クローズが頻繁に発生したとしても、データ書き込み速度が低下するおそれがない。
【００４２】
また、第１の実施形態では、プロセッサ４から書込み要求があると、まずはＤＲＡＭ５とＭＲＡＭ６のうち、空き容量の多い方にデータを書き込み、その後、一定期間にわたって、ＤＲＡＭ５とＭＲＡＭ６に格納された各スレッドのデータのページ切替回数をカウントし、カウント数の多いスレッドのデータはＭＲＡＭ６に、カウント数の少ないスレッドのデータはＤＲＡＭ５に入れ替える処理を行う。これにより、データ書き込みのリアルタイム処理が可能となり、メインメモリ７へのデータ書き込みを高速化することができる。
【００４３】
（第２の実施形態）
第１の実施形態は、プロセッサ４が実行する各スレッドごとにページ切替回数をアクセス情報登録部１４に登録して、登録されたページ切替回数に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択してデータを書き込んでいたが、第２の実施形態は、プロセッサ４が新たに追加するページテーブルエントリごとにページ切替回数をアクセス情報登録部１４に登録して、登録されたページ切替回数に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択してデータを書き込むものである。
【００４４】
ここで、ページテーブルエントリとは、ページテーブル２９にアクセスするためのエントリ情報である。ページテーブル２９には、メインメモリ７に格納されているすべてのアドレスについてのアドレス変換情報が登録されている。アドレス変換情報とは、プロセッサ４が発行する仮想アドレスと、メインメモリ７をアクセスするための物理アドレスとの対応関係を表す情報である。プロセッサ４がメインメモリ７に対してアクセスを行う場合、ページテーブル２９を検索する。ページテーブル２９内にアクセスするべきアドレスが登録されていない場合は、新たにページテーブルエントリを生成する。ページテーブルエントリは、予め定められたアドレス領域ごとに設けられている。この場合のアドレス領域とは、ページにアクセスするための仮想アドレス群を物理アドレス群に変換するアドレス変換情報によりアクセスされるメインメモリ７内の一部の記憶領域であり、例えば数ｋバイトを単位とする連続したアドレス範囲である。書込み先選択部１３は、各ページテーブルエントリごとに、ＤＲＡＭ５とＭＲＡＭ６のどちらにデータを書き込むかを選択する。
【００４５】
第２の実施形態によるプロセッサシステム３のブロック構成は図１と同様である。図８は第２の実施形態によるアクセス情報登録部１４のデータ構成を示す図である。図８のアクセス情報登録部１４は、各ページテーブルエントリごとに、各ページテーブルエントリの物理アドレスと、ページテーブルエントリのＩＤ（ＰＴＥ  ＩＤ）と、ページ切替回数と、選択したＤＲＡＭ５またはＭＲＡＭ６のアドレスとを対応づけて登録している。
【００４６】
第１の実施形態と同様に、書込み先選択部１３は、プロセッサ４が書込み要求を行うと、アクセス情報登録部１４の登録情報に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して、データ書き込みを行う。また、書込み先選択部１３は、各ページテーブルエントリのページ切替回数に変化が生じた場合には、そのページ切替回数に基づいて、ＤＲＡＭ５とＭＲＡＭ６の選択を更新して、その更新情報をアクセス情報登録部１４に登録する。
【００４７】
第２の実施形態は、第１の実施形態と同様に、プロセッサ４が書込み要求を行うと、リアルタイム処理によって、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択してデータを書き込み、かつＤＲＡＭ５とＭＲＡＭ６の格納データを、各ページテーブルエントリのページ切替回数に応じて入れ替える処理を行う。
【００４８】
第２の実施形態では、第１の実施形態と同様に、まずは図６と同様の処理によって、ＤＲＡＭ５とＭＲＡＭ６のいずれか空き領域の多い方に、プロセッサ４から書込み要求のあったデータを格納する。その後、第２の実施形態では、図９の処理を行う。図９は第２の実施形態によるデータ書き込み処理の一例を示すフローチャートである。
【００４９】
まず、プロセッサ４によりアクセスされる各ページテーブルエントリのページ切替回数を一定時間カウントする（ステップＳ４１）。次に、プロセッサ４が一定時間の間にアクセスする各ページテーブルエントリのページ切替回数を降順に並べる（ステップＳ４２）。次に、一定時間の間にＤＲＡＭ５に格納された各ページテーブルエントリのデータのうち、ページ切替回数の多い順にページ切替回数を取得する（ステップＳ４３）。次に、ＭＲＡＭ６に格納された各ページテーブルエントリのデータのうち、ページ切替回数の最小値を取得する（ステップＳ４４）。
【００５０】
ステップＳ４３で取得したページ切替回数がステップＳ４４で取得したページ切替回数より多いか否かを判定する（ステップＳ４５）。この判定がＮＯの場合は、ステップＳ４１以降の処理を繰り返す。ステップＳ４５の判定がＹＥＳの場合は、ステップＳ４３とＳ３４で取得したデータ同士を、ＤＲＡＭ５とＭＲＡＭ６で入れ替えることが可能か否かを判定する（ステップＳ４６）。入れ替えることが可能と判定されると、これらのページテーブルエントリのデータ同士をＤＲＡＭ５とＭＲＡＭ６とで入れ替える（ステップＳ４７）。
【００５１】
次に、入れ替えたデータ数が所定の閾値に達したか否かを判定し（ステップＳ４８）、まだ達していなければステップＳ４３以降の処理を繰り返す。ステップＳ４８で達したと判定されると、ステップＳ４１以降の処理を繰り返す。
【００５２】
ステップＳ４６で入替が可能でないと判定された場合は、ＭＲＡＭ６に空き容量がないと考えられる。この場合、ＭＲＡＭ６内のページ切替回数の最小値のページテーブルエントリだけ追い出してもよいし、あるいは他のページテーブルエントリもＭＲＡＭ６から追い出してもよい。これにより、ＤＲＡＭ５内のページテーブルエントリとの入替処理を実行し（ステップＳ４７）、その後にステップＳ４６以降の処理を行う。
【００５３】
このように、第２の実施形態では、プロセッサ４が書込み要求を行って、新たなページテーブルエントリを追加すると、追加したページテーブルエントリのページ切替回数に基づいて、ＤＲＡＭ５とＭＲＡＭ６のいずれか一方を選択して、データの書き込みを行う。より具体的には、ページ切替回数が多いページテーブルエントリについては、ＭＲＡＭ６にデータを書き込み、ページ切替回数が少ないページテーブルエントリについては、ＤＲＡＭ５にデータを書き込む。これにより、連続的なアドレス領域にデータを書き込む際にはＤＲＡＭ５にデータを書き込むため、ＤＲＡＭ５の特徴を生かして高速にデータ書き込みを行える。また、不連続なアドレス領域にデータを書き込む際にはＭＲＡＭ６にデータを書き込むため、ページ・オープン／クローズが頻繁に発生したとしても、データ書き込み速度が低下するおそれがない。
【００５４】
また、第２の実施形態でも、第１の実施形態と同様の処理手順で、データ書き込みを行うため、リアルタイム処理が可能となり、メインメモリ７へのデータ書き込みを高速化することができる。
【００５５】
（第３の実施形態）
第３の実施形態は、プロセッサ４がスレッドを実行する際、ＤＲＡＭ５とＭＲＡＭ６内のデータをページ切替回数に応じてリアルタイムに入れ替えるのではなく、メインメモリ７に新たに書き込まれるデータのみについてページ切替回数に応じてＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して書き込むものである。
【００５６】
第３の実施形態においても、図６と同様の処理（初期書込み制御部の処理）によって、ＤＲＡＭ５とＭＲＡＭ６のいずれか空き領域の多い方に、プロセッサ４から書込み要求のあったデータを格納する。その後、第３の実施形態では、図１０の処理を行う。
【００５７】
図１０は第３の実施形態によるデータ書き込み処理の一例を示すフローチャートである。まず、プロセッサ４が実行する各スレッドごとに、一定時間の間、ページ切替回数をカウントする（ステップＳ５１）。次に、プロセッサ４が現在実行中の全スレッドのページ切替回数の平均値を計算する（ステップＳ５２）。
【００５８】
次に、書込み要求を行ったスレッドのページ切替回数がステップＳ５２で計算した平均値より大きいか否かを判定する（ステップＳ５３、平均値検出部）。平均値より大きいと判定されると、ＭＲＡＭ６に空き領域があるか否かを判定する（ステップＳ５４）。ＭＲＡＭ６に空き領域があると判定されると、書き込み要求を行ったスレッドのデータをＭＲＡＭ６に書き込むためのアドレスを決定する（ステップＳ５５）。
【００５９】
ステップＳ５４でＭＲＡＭ６に空き領域がないと判定されると、ＭＲＡＭ６に格納されているスレッドのデータのうち、ページ切替回数が小さいものを優先的に選択してＭＲＡＭ６からＤＲＡＭ５に移動させて領域を確保し、その領域に書込み要求を行ったスレッドのデータを書き込むためのアドレスを決定する（ステップＳ５６）。
【００６０】
ステップＳ５３で、書込み要求を行ったスレッドのページ切替回数がステップＳ５２で計算した平均値以下と判定されると、ＤＲＡＭ５に空き領域があるか否かを判定する（ステップＳ５７）。ＤＲＡＭ５に空き領域があると判定されると、書込み要求を行ったスレッドのデータをＤＲＡＭ５に書き込むためのアドレスを決定する（ステップＳ５８）。
【００６１】
ステップＳ５７でＤＲＡＭ５に空き領域がないと判定されると、ＤＲＡＭ５に格納されているスレッドのデータのうち、ページ切替回数が大きいものを優先的に選択してＤＲＡＭ５からＭＲＡＭ６に移動させて領域を確保し、その領域に書込み要求を行ったスレッドのデータを書き込むためのアドレスを決定する（ステップＳ５９）。
【００６２】
このように、第３の実施形態では、メインメモリ７にデータ書き込みを行う際に、実行中の全スレッドのページ切替回数を比較して、ページ切替回数が平均値より小さいスレッドについてはＤＲＡＭ５にデータを書き込み、ページ切替回数が平均値より大きいスレッドについてはＭＲＡＭ６にデータを書き込む。これにより、ＭＲＡＭ６とＤＲＡＭ５内のデータをリアルタイムに更新することはできないが、新たにデータを書き込む際に、ページ切替回数に基づいてＤＲＡＭ５かＭＲＡＭ６かを選択して書き込むため、第１および第２の実施形態よりも少ない処理量で、メインメモリ７へのデータ書き込みを高速化することができる。
【００６３】
（第４の実施形態）
第４の実施形態は、プロセッサ４が新たなページテーブルエントリを追加する際、ＤＲＡＭ５とＭＲＡＭ６内のデータをページ切替回数に応じてリアルタイムに入れ替えるのではなく、メインメモリ７に新たに書き込まれるデータのみについてページ切替回数に応じてＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して書き込むものである。
【００６４】
第４の実施形態においても、図６と同様の処理によって、ＤＲＡＭ５とＭＲＡＭ６のいずれか空き領域の多い方に、プロセッサ４から書込み要求のあったデータを格納する。その後、第４の実施形態では、図１１の処理を行う。
【００６５】
図１１は第４の実施形態によるデータ書き込み処理の一例を示すフローチャートである。まず、プロセッサ４によりアクセスされる各ページテーブルエントリごとに、一定時間の間、ページ切替回数をカウントする（ステップＳ６１）。次に、プロセッサ４が現在実行中の全ページテーブルエントリのページ切替回数の平均値を計算する（ステップＳ６２）。
【００６６】
次に、書込み要求を行ったページテーブルエントリのページ切替回数がステップＳ６２で計算した平均値より大きいか否かを判定する（ステップＳ６３）。平均値より大きいと判定されると、ＭＲＡＭ６に空き領域があるか否かを判定する（ステップＳ６４）。ＭＲＡＭ６に空き領域があると判定されると、書き込み要求を行ったページテーブルエントリのデータをＭＲＡＭ６に書き込むためのアドレスを決定する（ステップＳ６５）。
【００６７】
ステップＳ６４でＭＲＡＭ６に空き領域がないと判定されると、ＭＲＡＭ６に格納されているページテーブルエントリのデータのうち、ページ切替回数が小さいものを優先的に選択してＭＲＡＭ６からＤＲＡＭ５に移動させて領域を確保し、その領域に書込み要求を行ったページテーブルエントリのデータを書き込むためのアドレスを決定する（ステップＳ６６）。
【００６８】
ステップＳ６３で、書込み要求を行ったページテーブルエントリのページ切替回数がステップＳ６２で計算した平均値以下と判定されると、ＤＲＡＭ５に空き領域があるか否かを判定する（ステップＳ６７）。ＤＲＡＭ５に空き領域があると判定されると、書込み要求を行ったページテーブルエントリのデータをＤＲＡＭ５に書き込むためのアドレスを決定する（ステップＳ６８）。
【００６９】
ステップＳ６７でＤＲＡＭ５に空き領域がないと判定されると、ＤＲＡＭ５に格納されているページテーブルエントリのデータのうち、ページ切替回数が大きいものを優先的に選択してＤＲＡＭ５からＭＲＡＭ６に移動させて領域を確保し、その領域に書込み要求を行ったページテーブルエントリのデータを書き込むためのアドレスを決定する（ステップＳ６９）。
【００７０】
このように、第４の実施形態では、メインメモリ７にデータ書き込みを行う際に、実行中の全ページテーブルエントリのページ切替回数を比較して、ページ切替回数が平均値より小さいページテーブルエントリについてはＤＲＡＭ５にデータを書き込み、ページ切替回数が平均値より大きいページテーブルエントリについてはＭＲＡＭ６にデータを書き込む。これにより、ＭＲＡＭ６とＤＲＡＭ５内のデータをリアルタイムに更新することはできないが、新たにデータを書き込む際に、ページ切替回数に基づいてＤＲＡＭ５かＭＲＡＭ６かを選択して書き込むため、第１および第２の実施形態よりも少ない処理量で、メインメモリ７へのデータ書き込みを高速化することができる。
【００７１】
（第５の実施形態）
上述した第１〜第４の実施形態の処理の少なくとも一部は、ソフトウェアにより行うことができる。例えば、オペレーティングシステム（以下、ＯＳ）が第１〜第４の実施形態における書込み先選択部１３、アクセス情報登録部１４および振分部１５の処理を行ってもよい。これにより、書込み先選択部１３、アクセス情報登録部１４および振分部１５の機能を持たないメモリ制御回路１であっても、ＯＳの機能により、実質的に図１と同様のブロック構成のメモリ制御回路１を実現できる。したがって、ハードウェアとしては既存のメモリ制御回路１を用いつつ、ＯＳの機能により、ＤＲＡＭ５とＭＲＡＭ６とを使い分けて、メインメモリ７へのデータ書き込みを高速化することができる。
【００７２】
また、ソフトウェアによって、メインメモリ７への書込みデータをＤＲＡＭ５とＭＲＡＭ６に振り分ける場合は、ハードウェアで振分処理を行う場合よりも、自由度が高まる。例えば、第１〜第４の実施形態では、一定時間の間のプロセッサ４の実行状況に応じて振分処理を行っているが、ソフトウェアで振分処理を行う場合は、プロセッサ４が実行する予定のプログラムを実行前に解析して、事前に振分処理を行うことも可能となる。
【００７３】
図１２はＯＳが行う振分処理の第１例を示すフローチャート、図１３はＯＳが行う振分処理の第２例を示すフローチャートである。図１２と図１３はいずれも、プロセッサ４から書込み要求があったときにＤＲＡＭ５とＭＲＡＭ６内のデータをリアルタイムで振り分けるのではなく、書込み要求のあったデータのみをＤＲＡＭ５とＭＲＡＭ６のいずれかに書き込むものである。
【００７４】
図１２の第１例では、まず、プロセッサ４が実行する予定の各スレッドのプログラムを事前にＯＳが解析して、ページ切替回数を事前に把握し、各スレッドごとに、ＤＲＡＭ５とＭＲＡＭ６のどちらに書き込むかを決定する（ステップＳ７１）。次に、プロセッサ４が各スレッドを実行して、データの書き込み要求を行うと（ステップＳ７２）、ステップＳ７１で決定されたＤＲＡＭ５またはＭＲＡＭ６にデータを書き込む（ステップＳ７３）。
【００７５】
図１３の第２例では、まず、プロセッサ４がアクセスする予定の各ページテーブルエントリのプログラムを事前に解析して、ページ切替回数を事前に把握し、各ページテーブルエントリごとに、ＤＲＡＭ５とＭＲＡＭ６のどちらに書き込むかを決定する（ステップＳ８１）。次に、プロセッサ４が各ページテーブルエントリを実行して、データの書き込み要求を行うと（ステップＳ８２）、ステップＳ８１で決定されたＤＲＡＭ５またはＭＲＡＭ６にデータを書き込む（ステップＳ８３）。
【００７６】
このように、第５の実施形態では、プロセッサ４からメインメモリ７への書込み要求があったときに、ソフトウェアによって、ＤＲＡＭ５とＭＲＡＭ６のいずれかを選択して書き込む振り分け処理を行うため、プロセッサシステム３内のハードウェアを大きく変更しなくて済み、部品コストを削減できる。また、ソフトウェアによって振分処理を行うことで、振分処理の具体的内容に自由度を持たせることが容易になる。例えば、プロセッサ４がスレッドを実行する前に、事前にプロセッサ４が実行するプログラムを解析して、各スレッドごとにＤＲＡＭ５とＭＲＡＭ６のどちらに書き込むかを決定できる。よって、振分処理を迅速に行うことができる。
【００７７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７８】
１  メモリ制御回路、２  メモリシステム、３  プロセッサシステム、４  プロセッサ、５  ＤＲＡＭ、６  ＭＲＡＭ、１１  調停部、１２  ページ切替回数計数部、１３  書込み先選択部、１４  アクセス情報登録部、１５  振分部、１６  ＤＲＡＭコントローラ、１７  ＭＲＡＭコントローラ、１８  ＤＲＡＭ駆動部、１９  ＭＲＡＭ駆動部、２２  プロセッサコア、２３  共有キャッシュメモリ、２８  ＴＬＢ、２９  ページテーブル
【図１】
2018049381.tif 000003
【図２Ａ】
2018049381.tif 000004
【図２Ｂ】
2018049381.tif 000005
【図２Ｃ】
2018049381.tif 000006
【図３】
2018049381.tif 000007
【図４】
2018049381.tif 000008
【図５】
2018049381.tif 000009
【図６】
2018049381.tif 000010
【図７】
2018049381.tif 000011
【図８】
2018049381.tif 000012
【図９】
2018049381.tif 000013
【図１０】
2018049381.tif 000014
【図１１】
2018049381.tif 000015
【図１２】
2018049381.tif 000016
【図１３】
2018049381.tif 000017