(57)【要約】【課題】プログラムとデフラグとを並行して実行した場合に、不揮発性メモリに格納されたデータに発生する不整合を未然に防止する。【解決手段】メモリとデフラグ部とメモリ保護部とバッファメモリとＣＰＵとＭＭＵとが接続され、バッファメモリは、デフラグのコピー元とコピー先とのメモリのアドレスとコピー先フラグとを含み、デフラグ部は、デフラグ部の状態フラグを備え、メモリページ切り替えのタイミングで、デフラグのコピー元とコピー先とのメモリのアドレスをバッファメモリに格納しデフラグし、メモリ保護部は、ＣＰＵからメモリの参照または更新の命令と対象メモリのアドレスを受信し、状態フラグが非アイドル状態の場合、デフラグのコピー元とコピー先と、コピー先フラグと、命令と、命令の対象アドレスとに基づいて、参照または更新の命令の対象アドレスを再決定するか、ＣＰＵに失敗を通知する。【選択図】図１
2010170328.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリと、前記メモリに対してデフラグをするデフラグ部と、前記メモリに対するアクセスを調停するメモリ保護部と、前記デフラグの情報が格納されるバッファメモリとを備えるメモリ装置において、
前記メモリ装置は、演算処理をするプロセッサと、前記メモリを管理するメモリ管理部とに接続され、
前記バッファメモリには、前記デフラグのコピー元およびコピー先のメモリのアドレスと、前記コピー先の状態を示すコピー先フラグとが格納され、
前記コピー先フラグは、少なくとも空き状態と使用状態とを含む複数の状態のいずれかを示し、
前記デフラグ部は、前記デフラグ部の状態を示す状態フラグを備え、
前記状態フラグは、少なくともアイドル状態と非アイドル状態とを含む複数の状態のいずれかを示し、
前記デフラグ部は、
前記メモリ管理部から、メモリページを切り替える旨の通知を受信した場合、前記デフラグのコピー元およびコピー先のメモリのアドレスを、前記バッファメモリに格納し、
前記格納されたコピー元およびコピー先のメモリのアドレスに基づいて、前記メモリのデフラグを実行し、
前記メモリ保護部は、前記プロセッサからメモリの参照または更新の命令と、前記参照または更新の対象となるメモリのアドレスとを受信し、かつ、前記状態フラグが前記非アイドル状態である場合、前記バッファメモリに格納された前記デフラグのコピー元およびコピー先のメモリのアドレスと、前記コピー先フラグと、前記プロセッサから受信した前記参照または更新の命令と、前記参照または更新の対象となるメモリのアドレスとに基づいて、前記参照または更新の命令の対象となるメモリアドレスを再度決定するか、または前記プロセッサに失敗を通知することを特徴とするメモリ装置。
【請求項２】
前記メモリ保護部は、前記プロセッサからメモリの更新の命令と、前記更新の対象となるメモリのアドレスとを受信し、前記状態フラグが前記非アイドル状態であり、かつ、前記バッファメモリに格納された前記デフラグのコピー元のメモリのアドレスと、前記プロセッサから受信した前記更新の命令の対象となるメモリのアドレスとが同一である場合、前記デフラグのコピー先のメモリのアドレスと、前記更新の命令の対象となるメモリのアドレスとの両方を、前記更新の命令の対象となるメモリのアドレスに決定することを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記メモリ保護部は、前記プロセッサからメモリの参照の命令と、前記参照の対象となるメモリのアドレスとを受信し、前記状態フラグが非アイドル状態であり、かつ、前記バッファメモリに格納された前記デフラグのコピー先のメモリのアドレスと、前記プロセッサから受信した前記参照の命令の対象となるメモリのアドレスとが同一であり、前記コピー先フラグが前記空き状態を示す場合、前記プロセッサに失敗を通知することを特徴とする請求項１に記載のメモリ装置。
【請求項４】
前記メモリと、前記バッファメモリとは、不揮発性メモリであり、
前記状態フラグとは、不揮発性メモリに格納されることを特徴とする請求項１に記載のメモリ装置。
【請求項５】
前記バッファメモリには、ページ単位に区切られたコピー元のメモリのアドレスが格納され、
前記デフラグ部は、前記コピー先フラグが空き状態であり、前記ページ単位に区切られたコピー元のメモリの領域以上の容量の領域を持つメモリのアドレスを、前記コピー先のメモリのアドレスに決定することを特徴とする請求項１に記載のメモリ装置。
【請求項６】
前記使用状態は、更新済み状態と、更新不可状態とを含み、
前記デフラグ部は、
前記メモリ管理部から、メモリページを切り替える旨の通知を受信した場合、前記コピー先フラグが前記空き状態を示すメモリのアドレスを、前記コピー先のアドレスに決定することを特徴とする請求項１に記載のメモリ装置。
【請求項７】
前記非アイドル状態は、準備状態と、実行状態と、後処理状態とを含み、
前記デフラグ部は、
前記メモリ装置への電源が切断された後に電源が接続された場合、前記状態フラグが示す状態に基づいて、電源が切断される前の処理を認識し、
前記認識された処理を継続することを特徴とする請求項１に記載のメモリ装置。
【請求項８】
演算処理をするプロセッサと、メモリを管理するメモリ管理部と、データを記憶するメモリと、前記メモリに対してデフラグをするデフラグ部と、前記メモリに対するアクセスを調停するメモリ保護部と、前記デフラグの情報が格納されるバッファメモリとを備える計算機において、
前記バッファメモリには、前記デフラグのコピー元およびコピー先のメモリのアドレスと、前記コピー先の状態を示すコピー先フラグとが、格納され、
前記コピー先フラグは、少なくとも空き状態と使用状態とを含む複数の状態のいずれかを示し、
前記デフラグ部は、前記デフラグ部の状態を示す状態フラグを備え、
前記状態フラグは、少なくともアイドル状態と非アイドル状態とを含む複数の状態のいずれかを示し、
前記デフラグ部は、
前記メモリ管理部から、メモリページを切り替える旨の通知を受信した場合、前記デフラグのコピー元およびコピー先のメモリのアドレスを、前記バッファメモリに格納し、
前記格納されたコピー元およびコピー先のメモリのアドレスに基づいて、前記メモリのデフラグを実行し、
前記メモリ保護部は、前記プロセッサからメモリの参照または更新の命令と、前記参照または更新の対象となるメモリのアドレスとを受信し、かつ、前記状態フラグが前記非アイドル状態である場合、前記バッファメモリに格納された前記デフラグのコピー元およびコピー先のメモリのアドレスと、前記コピー先フラグと、前記プロセッサから受信した前記参照または更新の命令と、前記参照または更新の対象となるメモリのアドレスとに基づいて、前記参照または更新の命令の対象となるメモリアドレスを再度決定するか、または前記プロセッサに前記参照の失敗を通知することを特徴とする計算機。
【請求項９】
前記メモリ保護部は、前記プロセッサからメモリの更新の命令と、前記更新の対象となるメモリのアドレスとを受信し、前記状態フラグが前記非アイドル状態であり、かつ、前記バッファメモリに格納された前記デフラグのコピー元のメモリのアドレスと、前記プロセッサから受信した前記更新の命令の対象となるメモリのアドレスとが同一である場合、前記デフラグのコピー先のメモリのアドレスと、前記更新の命令の対象となるメモリのアドレスとの両方を、前記更新の命令の対象となるメモリのアドレスに決定することを特徴とする請求項８に記載の計算機。
【請求項１０】
前記メモリ保護部は、前記プロセッサからメモリの参照の命令と、前記参照の対象となるメモリのアドレスとを受信し、前記状態フラグが非アイドル状態であり、かつ、前記バッファメモリに格納された前記デフラグのコピー先のメモリのアドレスと、前記プロセッサから受信した前記参照の命令の対象となるメモリのアドレスとが同一であり、前記コピー先フラグが前記空き状態を示す場合、前記プロセッサに前記参照の失敗を通知することを特徴とする請求項８に記載の計算機。
【請求項１１】
前記メモリと、前記バッファメモリとは、不揮発性メモリであり、
前記状態フラグとは、不揮発性メモリに格納されることを特徴とする請求項８に記載の計算機。
【請求項１２】
前記バッファメモリには、ページ単位に区切られたコピー元のメモリのアドレスが格納され、
前記デフラグ部は、前記コピー先フラグが空き状態であり、前記ページ単位に区切られたコピー元のメモリの領域以上の容量の領域を持つメモリのアドレスを、前記コピー先のメモリのアドレスに決定することを特徴とする請求項８に記載の計算機。
【請求項１３】
前記使用状態は、更新済み状態と、更新不可状態とを含み、
前記デフラグ部は、
前記メモリ管理部から、メモリページを切り替える旨の通知を受信した場合、前記コピー先フラグが前記空き状態を示すメモリのアドレスを、前記コピー先のアドレスに決定することを特徴とする請求項８に記載の計算機。
【請求項１４】
前記非アイドル状態は、準備状態と、実行状態と、後処理状態とを含み、
前記デフラグ部は、
前記計算機への電源が切断された後に電源が接続された場合、前記状態フラグが示す状態に基づいて、電源が切断される前の処理を認識し、
前記認識された処理を継続することを特徴とする請求項８に記載の計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置に関し、特に不揮発性メモリをメインメモリとして使用するメモリ装置に関する。
【背景技術】
【０００２】
計算機システムに備えられた不揮発性メモリは、計算機システムの電源を切った後、メモリに格納された内容を保持し続ける。このため、不揮発性メモリを備える計算機システムは、計算機システムにおいてプログラムが動作している状態であっても、プログラムを止めずに、起動および終了が可能である。計算機システム上のプログラムが常に動作中である場合、計算機システムは、起動および終了の際に、メモリの初期化、およびプログラムロードを行わない。これによって、計算機システムは、高速に起動および終了ができる。また、これによって、計算機システムへの通電時間を短縮できるため、計算機システムは、消費電力を削減でき、少ない電力によって長時間にわたり駆動することができる。
【０００３】
しかし、計算機システムが駆動する時間が長くなるに従い、計算機システムは不揮発性メモリに対して、新しいデータを格納するためのメモリを割り当てる操作、およびデータを削除した後のメモリの割り当てを解除する操作を、頻繁に繰り返すようになる。これらの操作が頻繁に繰り返されることによって、不揮発性メモリは、「断片化」される。「断片化」とは、多数の「有効」なメモリブロックがメモリ全体に分布し、これらの「有効」なメモリブロックの間に、データを格納できない「穴」が存在する状態になることである。この「断片化」が発生することによって、計算機システムは、不揮発性メモリを効率的に使用することができない。
【０００４】
なお、「有効」とは、不揮発性メモリのメモリブロックの内容が、メモリにアクセスするプログラムによって使用されることを示す。「穴」とは、「有効」と反対の意味であり、穴の位置には有効なデータがない。すなわち「穴」のメモリブロックは、プログラムによって使用されない。
【０００５】
不揮発性メモリのメモリブロックに任意のデータが計算機システムによって格納され、その後データが削除される場合、データが格納されていたメモリブロックは、「穴」となる。その後、新しく作成されるメモリブロックがこの「穴」よりも大きい場合、計算機システムは、この「穴」にデータを格納できず、新しいメモリブロックを残りの空きメモリに割り当て、データを格納する。
【０００６】
新しく作成されたメモリブロックが既存の「穴」より小さい場合は、新しく作成されたメモリブロックは既存の「穴」に格納される。しかし、ほとんどの場合、新しいメモリブロックは既存の「穴」よりもブロックサイズが大きいため、「穴」に新しいメモリブロックが格納されることはない。これによって、計算機システムが不揮発性メモリへのデータの格納および削除をする毎に、新たな「穴」が生成される。
【０００７】
不揮発性メモリ全体において「有効」なメモリブロックが頻繁に削除され、新しいメモリブロックが頻繁に作成される場合、「穴」が小さいために新たなメモリブロックが割り当てられず、使用されないメモリの「穴」が、不揮発性メモリにおいて大量に発生する可能性がある。「穴」が大量に発生する場合、さらにメモリブロックを不揮発性メモリに割り当てるためには、不揮発性メモリの断片化が解消（デフラグ）される必要がある。
【０００８】
従来の不揮発性メモリのデフラグの処理には、デフラグにおいて実行されるコピーを複数の塊に分割して実行し、デフラグの進捗をデフラグの対象となる不揮発性メモリとは別の不揮発性メモリに格納する方法が提案されている（例えば、特許文献１参照）。
【０００９】
特許文献１に記載されている方法を用いた場合、計算機システムは、デフラグ実行中に起動または終了があったとしてもデフラグ処理を継続でき、不揮発性メモリの内容に不整合を発生させない。
【特許文献１】特開２０００−３０５８１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１に提案されている方法を用いて、不揮発性メモリをデフラグする場合、デフラグは常に不揮発性メモリ全体を対象としているため、計算機システムは多くの時間および電力を必要とする。不揮発性メモリを分割し、分割された一部の不揮発性メモリに対してデフラグまたはガーベジコレクションを行う場合も、計算機システムは、プログラムによって頻繁に参照される不揮発性メモリのページに対して、そのページが実装される物理ページアドレスを頻繁にたどるため、計算機システムは、デフラグまたはガーベジコレクションに多くの時間を必要とする。
【００１１】
また、プログラムが必要とするメモリブロックの単位と、デフラグを実行する時間単位またはメモリブロックの単位とに関連がないため、計算機システムは、デフラグを実行した際に、プログラムを一時的に停止する必要があった。プログラムを一時的に停止させることによって、デフラグを実行した際は、計算機システムは、プログラムの処理性能を著しく低下させていた。
【００１２】
なお、前述の通り、従来の計算機システムは、デフラグを実行している際にプログラムの実行を一時停止する。これは、プログラムが更新または参照する不揮発性メモリのメモリブロックと、デフラグする不揮発性メモリのメモリブロックとが競合した場合、不揮発性メモリの内容の整合が取れなくなり、プログラムまたはデフラグの継続が困難となるためである。このため、従来の計算機システムは、デフラグ中には、プログラムを停止させる。
【００１３】
計算機システムがデフラグを実行する頻度を低くする場合、デフラグが実行されない期間、計算機システムの処理能力は維持される。しかし、長期間デフラグせずに、計算機システムがデフラグする場合、デフラグに必要となる時間は長くなり、計算機システムがプログラムを一時停止させる時間も長くなり、プログラムの反応速度は著しく低下する。
【００１４】
一方、計算機システムがデフラグを実行する頻度を高くする場合、プログラムが一時停止する場合が頻発するため、計算機システムの処理能力は低下する。
【００１５】
特許文献１に提示される方法を用い、計算機システムが長時間にわたり起動および終了をしない場合、または、特許文献１に提示される方法を用い、計算機システムの不揮発性メモリの容量を大きくする場合、計算機システムは、デフラグのために使用するメモリ管理テーブルを拡大する必要がある。メモリ管理テーブルが拡大された場合、メモリ管理テーブルを探索するために高速なメモリ管理が困難となり、かつ、デフラグに必要となる処理の数が増加するため、計算機システムの処理能力は低下する。
【００１６】
また、従来の計算機システムによるデフラグは、不揮発性メモリを使用するプログラムと関連無く実行される。つまり、デフラグは、プログラムが参照する頻度の高い不揮発性メモリと、参照する頻度が低い不揮発性メモリとの区別は無く、平等に実行される。プログラムの使用頻度が低いメモリブロックのデフラグに、時間および電力をかけることは、デフラグの実行に必要となる時間の短縮化およびデフラグの効率化に貢献しない。また、その参照頻度の低い不揮発性メモリにデフラグする間、参照頻度の高い不揮発性メモリがプログラムによって使用されることによって、そのメモリブロックの物理ページアドレスの断片化が進み、また関連データのメモリブロックが断片化する。これによって、使用頻度の高いメモリブロックをデフラグした場合、負荷が増大し、関連データのページ切り替え頻度が高まり、ＴＬＢミスおよびページフォールトが増加し、プログラム実行速度の低下が起こる。
【００１７】
本発明は、プログラムとデフラグとを並行して実行した場合でも、不揮発性メモリに格納されたデータに発生する不整合を未然に防止する計算機システムを提供することによって、計算機システムの起動および終了に必要となる時間および電力を低減することを目的とする。
【００１８】
また、本発明は、起動および終了に各々必要とする時間および電力を低減し、同時に、長時間にわたり安定して駆動し、処理能力を低下させることがない計算機システムの提供を目的とする。
【課題を解決するための手段】
【００１９】
本発明の代表的な一形態によると、複数のデータを記憶するメモリと、メモリに対してデフラグをするデフラグ部と、メモリに対するアクセスを調停するメモリ保護部と、デフラグの情報が格納されるバッファメモリとを備えるメモリ装置において、メモリ装置は、演算処理をするプロセッサと、メモリを管理するメモリ管理部とに接続され、バッファメモリには、デフラグのコピー元およびコピー先のメモリのアドレスと、コピー先の状態を示すコピー先フラグとが、格納され、コピー先フラグは、少なくとも空き状態と使用状態とのいずれかの状態を示し、デフラグ部は、デフラグ部の状態を示す状態フラグを備え、状態フラグは、少なくともアイドル状態と非アイドル状態とのいずれかの状態を示し、デフラグ部は、メモリ管理部から、メモリページを切り替える旨の通知を受信した場合、デフラグのコピー元およびコピー先のメモリのアドレスを、バッファメモリに格納し、格納されたコピー元およびコピー先のメモリのアドレスに基づいて、メモリのデフラグを実行し、メモリ保護部は、プロセッサからメモリの参照または更新の命令と、参照または更新の対象となるメモリのアドレスを受信し、かつ、状態フラグが非アイドル状態である場合、バッファメモリに格納されたデフラグのコピー元およびコピー先のメモリのアドレスと、コピー先フラグと、プロセッサから受信した参照または更新の命令と、参照または更新の対象となるメモリのアドレスとに基づいて、参照または更新の命令の対象となるメモリアドレスを再度決定するか、またはプロセッサに失敗を通知する。
【発明の効果】
【００２０】
本発明の代表的な一形態によると、デフラグとプログラムを並行して実行する場合に、計算機システムのデータの不整合を防止できる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施形態の計算機は、デフラグの実行タイミングを、ＭＭＵ（メモリマネジメントユニット）による参照するページを切り替えるタイミングとし、プログラムを実行した直後に不揮発性メモリのデフラグを実行することによって、メモリブロックの断片化を最小限にとどめる。
【００２２】
また、本発明の実施形態の計算機は、不揮発性メモリを保護する機能によって、デフラグとプログラムとがそれぞれ対象とする不揮発性メモリに不整合を発生させずに、デフラグとプログラムとを並行して実行させることを可能にする。また、本発明の実施形態の計算機は、デフラグを実行する単位を、従来のメモリブロック単位からページ単位とする。
【００２３】
（第１の実施形態）
図１は、本発明の第１の実施形態の計算機の構成を示すブロック図である。
【００２４】
第１の実施形態の計算機は、ＳｏＣ１００およびメインメモリ１１６を備える。ＳｏＣ１００（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）は、第１の実施形態のデフラグに用いるＭＭＵ１０２を備える。メインメモリ１１６は、不揮発性メモリである。
【００２５】
ＳｏＣ１００は、ＣＰＵ１０１、ＭＭＵ１０２、バス１０４、アービタ１０５、入力装置１０６、出力装置１０７、周辺回路１０８、コピー回路１０８、デフラグディスクリプタバッファ１１０、およびメモリ保護回路１１５を備える。
【００２６】
ＣＰＵ１００は、メインメモリ１１６に格納されたプログラムを逐次実行しながら、ＭＭＵ１０２、アービタ１０５、入力装置１０６、出力装置１０７、周辺回路１０８、コピー回路１０９およびメモリ保護回路１１５の各種装置を、管理および制御する。
【００２７】
ＭＭＵ１０２は、メモリの仮想ページアドレスを物理ページアドレスへ、または物理ページアドレスを仮想ページアドレスへ高速に変換する。また、ＭＭＵ１０２は、この変換機能を管理する。ＭＭＵ１０２は、ＴＬＢ１０３ａおよび利用ページレジスタ１０３ｂを備える。
【００２８】
ＴＬＢ１０３ａは、メモリのページ単位に、仮想ページアドレス、物理ページアドレスおよび管理テーブル参照の情報を含む。ＴＬＢ１０３ａは、仮想ページアドレスと物理ページアドレスとの変換対をＴＬＢ１０３ａに格納し、仮想ページアドレスを物理ページアドレスへ、または物理ページアドレスを仮想ページアドレスへ変換する。
【００２９】
利用ページレジスタ１０３ｂは、ＣＰＵ１０１がプログラムを実行するために参照するページアドレスを含む。
【００３０】
バス１０４は、ＣＰＵ１０１、または、バスマスタである周辺装置が、ＭＭＵ１０２、アービタ１０５、入力装置１０６、出力装置１０７、周辺回路１０８、コピー回路１０９およびメモリ保護回路１１５が相互にアクセスするための経路となる。
【００３１】
アービタ１０５は、ＣＰＵ１０１、または、バスマスタである周辺装置から発生する、バス１０４を介してアクセスする旨の要求を、調停する。
【００３２】
入力装置１０６は、ＳｏＣ１００へのユーザからの操作および入力されるデータを受信する。
【００３３】
出力装置１０７は、ＳｏＣ１００からユーザへの通知情報およびデータを送信する。
【００３４】
周辺回路１０８は、ＳｏＣ１００が使用するプログラムおよびデータファイルを格納するための外部記憶装置、またはグラフィックスアクセラレータなどの周辺装置である。
【００３５】
コピー回路１０９は、本実施形態のデフラグ処理において、ＭＭＵ１０２によって管理されているページ間のデータコピーを実行する。
【００３６】
デフラグディスクリプタバッファ１１０は、コピー回路１０９が実行するデータのコピーの処理内容を含む。デフラグディスクリプタバッファ１１０は、ソース物理ページアドレス１１１、デスティネーション物理ページアドレス１１２、ソースアドレスディスクリプタ１１３、およびデスティネーションアドレスディスクリプタ１１４を含む。
【００３７】
図２は、本発明の第１の実施形態のデフラグディスクリプタバッファ１１０を示すブロック図である。
【００３８】
ソース物理ページアドレス１１１は、デフラグディスクリプタバッファ１１０に含まれる。ソース物理ページアドレス１１１は、デフラグにおけるコピー元となるページの物理ページアドレスを含む。
【００３９】
デスティネーション物理ページアドレス１１２は、デフラグディスクリプタバッファ１１０に含まれる。デスティネーション物理ページアドレス１１２は、デフラグにおけるコピー先となるページの物理ページアドレスを含む。
【００４０】
ソースアドレスディスクリプタ１１３は、デフラグディスクリプタバッファ１１０に含まれる。
【００４１】
デスティネーションアドレスディスクリプタ１１４は、デフラグディスクリプタバッファ１１０に含まれる。
【００４２】
メモリ保護回路１１５は、コピー回路１０９によるページ間のコピーと、ＣＰＵ１０１によるプログラムの実行とを並行することによって発生する、コピー先のページ、または、実行されるプログラムが参照するコピー元のページの不整合を、デフラグディスクリプタバッファ１１０を参照することによって回避する。
【００４３】
メインメモリ１１６は、ＣＰＵ１０１が実行するプログラムデータ１１７、メモリ全体のページエントリ１１８、各ページのページメモリ管理テーブル１１９、およびデータを含む。
【００４４】
図３は、本発明の第１の実施形態のメインメモリ１１６を示すブロック図である。
【００４５】
プログラムデータ１１７は、ＣＰＵ１０１によって実行されるプログラムとプログラムの実行に利用されるデータとを含む。
【００４６】
ページエントリ１１８は、仮想ページアドレス、物理ページアドレス、および管理テーブルを含む。プログラムが実行される場合、メインメモリ１１６のページエントリ１１８に含まれる、仮想ページアドレスおよび物理ページアドレスの対から、プログラムを実行するために必要な対が、ＴＬＢ１０３ａに送られる。ＴＬＢ１０３ａに送られた仮想ページアドレスおよび物理ページアドレスの対は、プログラムがメインメモリ１１６にアクセスする際に、仮想ページアドレスと物理ページアドレスとを相互に変換するために利用される。
【００４７】
メインメモリ１１６に含まれるページエントリ１１８は、ＣＰＵ１０１に利用される、全メモリページの仮想ページアドレス、物理ページアドレス、およびそのページを参照するアドレスの管理テーブル参照を含む。図３に示すブロック図において、ページエントリ１１８のページ数はＮ（Ｎは正の整数）であり、ページエントリ１１８は、１ページ目からＮページまでのページ分のページアドレスの対を含む。
【００４８】
ページメモリ管理テーブル１１９は、スタートオフセット、エンドオフセット、および参照アドレスリストを含む。スタートオフセットには、メモリ内においてプログラムによって参照される領域の最初のアドレスを含む。エンドオフセットは、メモリ内においてプログラムによって参照される領域の最後のアドレスを含む。参照アドレスリストは、スタートオフセットとエンドオフセットとによって示された領域を参照するページアドレスを含む。図３に示すブロック図において、ページメモリ管理テーブル１１９の行数は、Ｐ（Ｐは正の整数）である。また、ページメモリ管理テーブル１１９は、同じ形式によってプログラム毎に複数存在する。
【００４９】
ページエントリ１１８の各ページにおいて、プログラムによって使用されるメモリ領域は、管理テーブル参照の値に示される。たとえば、ページエントリ１１８の２番目のページに含まれる管理テーブル参照２に示された値が、ページメモリ管理テーブル１１９であった場合、この２番目のページは、Ｐ（Ｐは正の整数）個のメモリ領域がプログラムによって使用されている。
【００５０】
ＴＬＢ１０３ａは、ページエントリ１１８において管理されるＮページのうち、Ｍ（Ｍは、Ｎ＞Ｍの条件を満たす正の整数）ページ分の仮想ページアドレスと物理ページアドレスと管理テーブル参照とを含む。
【００５１】
ＣＰＵ１０１とＭＭＵ１０２とは、仮想ページアドレスと物理ページアドレスとを変換するために、後述の処理をする。
【００５２】
ＣＰＵ１０１は、メインメモリ１１６に格納されるプログラムデータ１１７を参照し、プログラムを解釈し、メインメモリ１１６のメモリ領域の確保、開放、およびメモリ領域内のデータを更新する。このとき、ＣＰＵ１０１はメインメモリ１１６にアクセスし、データを参照するため、ＭＭＵ１０２に対し、データが含まれる仮想ページアドレスを渡す。ＭＭＵ１０２は、ＣＰＵ１０１から受信した仮想ページアドレスをＴＬＢ１０３ａから検索する。
【００５３】
ＭＭＵ１０２は、ＣＰＵ１０１から仮想ページアドレスを受信した場合、ＴＬＢ１０３ａに格納されるＭ対の仮想ページアドレスの中から検索する。ＭＭＵ１０２は、検索されたページの仮想ページアドレスと対を成す物理ページアドレスを用いて、仮想ページアドレスを物理ページアドレスに変換する。
【００５４】
ＭＭＵ１０２は、ＣＰＵから受信した仮想ページアドレスが、ＴＬＢ１０３ａに存在するページの仮想ページアドレスである場合、ＭＭＵ１０２は、受信した仮想ページアドレスを物理ページアドレスに変換し、メモリ保護回路１１５を介して、物理ページアドレスをメインメモリ１１６に渡す。これによって、ＣＰＵ１０１は、メインメモリ１１６にアクセスできる。
【００５５】
ＭＭＵ１０２は、ＣＰＵから受信した仮想ページアドレスが、ＴＬＢ１０３ａに存在しない場合、ＭＭＵ１０２は、ＣＰＵ１０１にＴＬＢミス（ページフォールト）を通知する。
【００５６】
ＴＬＢミスをＭＭＵ１０２から通知されたＣＰＵ１０１は、メインメモリ１１６に格納されるＴＬＢミス用のプログラムを実行する。ＣＰＵ１０１は、まず、ＴＬＢミスを発生した仮想ページアドレスを、ページエントリ１１８から検索する。次に、検索結果の仮想ページアドレスと対となる物理ページアドレスがメインメモリ１１６の物理ページアドレスであるか否かを判定する。
【００５７】
検索結果の仮想ページアドレスと対となる物理ページアドレスがメインメモリ１１６のアドレスである場合、ＣＰＵ１０１が必要とするデータは、メインメモリ１１６に含まれる。このため、ＣＰＵ１０１は、ＴＬＢ１０３ａに含まれる使用頻度の低いページのアドレス対と管理テーブル参照とを、ページエントリ１１８からの検索によって得られたアドレス対と管理テーブル参照とに置換する。その後、ＣＰＵ１０１は、ＴＬＢミスを起こした時点の処理に戻る。
【００５８】
検索結果の仮想ページアドレスと対になる物理ページアドレスがメインメモリ１１６のアドレスにはない場合、ＣＰＵが必要とする対象のデータは、メインメモリ１１６に含まれない。このため、ＣＰＵ１０１は、ページエントリ１１８において参照頻度が低く、かつメインメモリ１１６に含まれるページのデータを外部記憶装置にコピーし、ページエントリ１１８において参照頻度が低いページの物理ページアドレスを外部記憶装置のアドレスに変更する。
【００５９】
さらに、ＣＰＵ１０１は、検索によって得られた物理ページアドレスの外部記憶装置に含まれるデータを、メインメモリ１１６にコピーする。ＣＰＵ１０１は、コピー先のメインメモリ１１６の物理ページアドレスを、ＴＬＢミスが発生した仮想ページアドレスの物理ページアドレスとしてページエントリ１１８に追加する。そして、ＣＰＵ１０１は、追加されたアドレス対と管理テーブル参照によって、ＴＬＢ１０３ａの使用頻度の低いページのアドレス対と管理テーブル参照を更新する。ＣＰＵ１０１は、ＴＬＢミスを起こした時点の処理に戻る。
【００６０】
本発明の実施形態のＭＭＵ１０２は、これらの仮想ページアドレスと物理ページアドレスとの変換に加え、コピー回路１０９およびメモリ保護回路１１５によって共有されるデフラグディスクリプタバッファ１１０と連携し、後述する処理をする。
【００６１】
ＭＭＵ１０２は、ＣＰＵ１０１から仮想ページアドレスを受信した場合、利用ページレジスタ１０３ｂに格納される仮想ページアドレスと受信した仮想ページアドレスとを比較し、前回のＣＰＵ１０１がアクセスしたページに含まれる仮想ページアドレスか否かを判定する。
【００６２】
前回のページと今回のページが同じである場合、ＭＭＵ１０２は、得られたページアドレスをメインメモリ１１６に送信する。ＣＰＵ１０１は、処理を継続する。
【００６３】
前回のページと今回のページとが異なり、ページを切り替える必要がある場合、ＭＭＵ１０２は、前回参照したページアドレスに対応するＴＬＢ１０３ａの管理テーブル参照の値から、メインメモリ１１６のページメモリ管理テーブル１１９が示すメモリ領域を取得し、取得されたメインメモリ１１６のメモリ領域が断片化されているか否かを判定する。
【００６４】
メモリが断片化されていない場合、ＭＭＵ１０２はデフラグをしない。
【００６５】
メモリが断片化されている場合、ＭＭＵ１０２は、コピー回路１０９に後述のデフラグをさせる。
【００６６】
コピー回路１０９は、まず、ＣＰＵ１０１が前回参照したメモリ領域のページメモリ管理テーブル１１９の情報を、デフラグディスクリプタバッファ１１０のソースアドレスディスクリプタ１１３に格納する。つぎに、コピー回路１０９は、ＣＰＵ１０１が前回参照した仮想ページアドレスと対になる物理ページアドレスを、利用ページレジスタ１０３ｂからソース物理ページアドレス１１１に格納する。
【００６７】
また、コピー回路１０９は、メインメモリ１１６に含まれるページエントリ１１８およびページメモリ管理テーブル１１９からデフラグに適したコピー先となる物理ページアドレスを検索し、検索結果のページの物理ページアドレスをデスティネーション物理ページアドレス１１２に格納する。コピー回路１０９は、初期化処理として、デフラグに適したコピー先となる物理ページアドレスに対応する管理テーブル参照が指すページメモリ管理テーブル１１９の内容を、デスティネーションアドレスディスクリプタ１１４の形式に変換して、デスティネーションアドレスディスクリプタ１１４に格納する。
【００６８】
デスティネーションアドレスディスクリプタ１１４は、デフラグに適したコピー先ページのオフセットアドレス毎の状態を表すフラグを含む。各フラグは、（１）ライト済み、（２）空き、（３）コピーライト不可、の三つの値をとる。図２に示すブロック図は、デスティネーションアドレスディスクリプタ１１４の１ページがＫ（Ｋは正の整数）アドレスを持つ場合である。ページメモリ管理テーブル１１９において、使用されるメモリ領域（スタートオフセットのアドレスとエンドオフセットのアドレスとにはさまれたメモリ領域）のオフセットアドレスのフラグは、（３）コピーライト不可を示す。また、ページメモリ管理テーブル１１９において、使用されていないメモリ領域のオフセットアドレスのフラグは、（２）空きを示す。
【００６９】
なお、このデスティネーションアドレスディスクリプタ１１４の初期化処理は、メモリページがメインメモリ１１６から切り替わるたびにページを切り替える旨をＣＰＵ１０１に上げた後、ＣＰＵ１０１によって、任意のソフトウェアを用いて行われてもよい。ＣＰＵ１０１によって初期化処理がされる場合、従来のＭＭＵであっても同じ処理が可能である。
【００７０】
次に、コピー回路１０９は、デフラグディスクリプタバッファ１１０に格納された、ソース物理ページアドレス１１１、デスティネーション物理ページアドレス１１２、ソースアドレスディスクリプタ１１３、およびデスティネーションアドレスディスクリプタ１１４に従って、ソース物理ページアドレス１１１に格納されたソースページから、デスティネーション物理ページアドレス１１２に格納されたデスティネーションページへのメモリのコピーを実行する。
【００７１】
コピー回路１０９は、ソースのオフセットアドレスに、ソースアドレスディスクリプタ１１３が示す領域のみを適用し、デスティネーションのオフセットアドレスに、デスティネーションアドレスディスクリプタ１１４のフラグが（１）空きになっているアドレスのみを適用する。
【００７２】
図４は、本発明の第１の実施形態のコピー回路１０９のブロック図である。
【００７３】
バスマスタＩＦ２００は、バス１０４を介して、メインメモリ１１６にアクセスする。
【００７４】
バススレーブＩＦ２０１は、バス１０４を介して、ＣＰＵ１０１およびＭＭＵ１０２などのバスマスタが、コピー回路１０９に対してアクセスするためのインターフェースである。
【００７５】
状態レジスタ２０２は、コピー回路１０９の状態を示す。状態レジスタ２０２は、（１）アイドル状態、（２）ディスクリプタ構築状態、（３）ページ内領域コピー状態、および（４）領域の参照アドレスの更新状態、の四つの状態に遷移する。
【００７６】
ソースブロック参照レジスタ２０６は、デフラグディスクリプタバッファ１１０に格納されたソースアドレスディスクリプタ１１３において、コピーが実行されているメモリ領域を示す。
【００７７】
ソースアドレスレジスタ２０７は、コピー元となるソースのオフセットアドレスを示す。
【００７８】
デスティネーションアドレスレジスタ２１０は、コピー先となるデスティネーションのオフセットアドレスを示す。また、デスティネーションオフセットアドレスは、デフラグディスクリプタバッファ１１０に格納されたデスティネーションアドレスディスクリプタ１１４のフラグも示す。
【００７９】
デフラグコピー回路２１１は、デフラグにおいて、コピーを実行する。
【００８０】
ディスクリプタＩＦ２１２は、デフラグコピー回路２１１がデフラグディスクリプタバッファ１１０にアクセスするためのインターフェースである。
【００８１】
デフラグコピー回路２１１は、状態レジスタ２０２が（１）アイドル状態である時に、ＭＭＵ１０２から、ページを切り替える旨を受けた場合、状態レジスタ２０２の値を（２）ディスクリプタ構築状態に変更する。
【００８２】
デフラグコピー回路２１１は、デフラグにおけるコピー元のアドレスの候補となる物理ページアドレスを、ＭＭＵ１０２から受信し、デフラグの要否を判定する。
【００８３】
デフラグの必要がない場合は、デフラグコピー回路２１１は、状態レジスタ２０２の値を（１）アイドル状態に戻す。
【００８４】
デフラグの必要がある場合は、デフラグコピー回路２１１は、ソースブロック参照レジスタ２０６に、ソースアドレスディスクリプタ１１３の最初の行をコピーする。デフラグコピー回路２１１は、ソースアドレスレジスタ２０７に、ソースアドレスディスクリプタ１１３のスタートオフセット１をコピーする。
【００８５】
デフラグコピー回路２１１は、デスティネーションアドレスレジスタ２１０に、ソースアドレスディスクリプタ１１３のスタートオフセット１とエンドオフセット１の間のメモリ領域のサイズを確保できる程度に、（２）空きが連続するデスティネーションアドレスディスクリプタ１１４のオフセット処理フラグを選択し、選択されたオフセット処理フラグの最初のオフセットアドレスをコピーする。
【００８６】
デフラグコピー回路２１１は、状態レジスタ２０２を（３）ページ内領域コピー状態にする。また、デフラグコピー回路２１１は、デスティネーションアドレスディスクリプタ１１４の選択されたオフセット処理フラグを、（３）コピーライト不可に変更する。
【００８７】
デフラグコピー回路２１１は、ソースアドレスレジスタ２０７が示すアドレスからデスティネーションアドレスレジスタ２１０が示すアドレスに、メインメモリ１１６のメモリ領域をコピーする。コピーが終了した後、デフラグコピー回路２１１は、デスティネーションアドレスディスクリプタ１１４の選択されたオフセット処理フラグを、（１）ライト済みに変更する。また、デフラグコピー回路２１１は、ソースアドレスレジスタ２０７とデスティネーションアドレスレジスタ２１０とのアドレスをインクリメントする。
【００８８】
デフラグコピー回路２１１は、前述の（２）ディスクリプタ構築状態、および（３）ページ内領域コピー状態の処理を、ソースアドレスレジスタ２０７の値がエンドオフセットの値＋１になるまで繰り返す。
【００８９】
ソースアドレスレジスタ２０７の値がエンドオフセットの値＋１になった場合、デフラグコピー回路２１１は、状態レジスタ２０２を（４）領域の参照アドレスの更新状態にする。
【００９０】
デフラグコピー回路２１１は、ソースブロック参照レジスタ２０６が示すソース領域の参照アドレスリスト１が示すアドレスのポインタ値を（デスティネーションアドレスレジスタ２１０からソースアドレスレジスタ２０７を引いた値）分移動させる。ソースブロック参照レジスタ２０６が全て更新された場合、デフラグコピー回路２１１は、ソースブロック参照レジスタ２０６を次のソース領域のポインタ値に更新する。
【００９１】
デフラグコピー回路２１１は、ソースブロック参照レジスタ２０６が示すソース領域のスタートオフセット２に、ソースアドレスレジスタ２０７を設定する。デフラグコピー回路２１１は、デスティネーションアドレスディスクリプタ１１４からコピー先となるオフセットを参照し、デスティネーションアドレスレジスタ２１０の値を設定する。デフラグコピー回路２１１は、状態レジスタ２０２を（３）ページ内領域コピー状態にし、メインメモリ１０６のページに対して、デフラグコピーを実行する。
【００９２】
前述の通り、全ての領域に対して、ページ内領域コピーと領域の参照アドレスの更新とを実行し、デフラグコピー回路２１１は、デフラグコピー完了のメッセージと、新しい物理ページアドレスとをＭＭＵ１０２に通知する。デフラグコピー回路２１１は、状態レジスタ２０２を（１）アイドル状態にする。
【００９３】
デフラグコピー回路２１１は、状態レジスタ２０２が（１）アイドル状態である時以外において、ページ切り替え通知を受信した場合、何も実行しない。
【００９４】
デフラグコピー回路２１１からコピー完了のメッセージを受信し、ＭＭＵ１０２は、コピーが完了した仮想ページアドレスと物理ページアドレスとの対が格納された、ＴＬＢ１０３ａとメインメモリ１１６のページエントリ１１８とを、デフラグコピー回路から受信した新しい物理ページアドレスによって更新する。
【００９５】
ＣＰＵ１０１は、前述のデフラグコピー処理を実行する間も別に動作し続け、ＭＭＵ１０２とメモリ保護回路１１５を介して、メインメモリ１１６にアクセスする。メモリ保護回路１１５は、ＭＭＵ１０２を介してＣＰＵ１０１から送られるリードライトコマンドとページアドレスとを受信し、コピー回路１０９が（１）アイドル状態であれば、受信したリードライトコマンドとライトアドレスとをメインメモリ１１６に送信する。これによって、ＣＰＵ１０１はメインメモリ１１６にアクセスする。
【００９６】
コピー回路１０９が（１）アイドル状態でない場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレス、ソース物理ページアドレス１１１およびデスティネーション物理ページアドレス１１２を比較し、リードライトコマンドとＭＭＵ１０２から送られたアドレスとの組合せによって、後述の処理をする。
【００９７】
１．メモリ保護回路１１５は、ソースアドレスディスクリプタ１１３の示す領域と、ＭＭＵ１０２から送られたアドレスとを比較し、ＭＭＵ１０２から、デフラグコピー中のソースページに対するライトが要求された場合、後述の処理をする。
【００９８】
１．１．ＭＭＵ１０２から送られたアドレスが、ソースアドレスディスクリプタ１１３に含まれる場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスが含まれるソースアドレスディスクリプタ１１３のデータのコピー先を、デスティネーション物理ページアドレス１１２およびデスティネーションアドレスディスクリプタ１１４から取得し、取得されたアドレスとＭＭＵ１０２から送られたアドレスとの両方に、ライトを実行する。メモリ保護回路１１５は、ソースアドレスディスクリプタ１１３、およびデスティネーションアドレスディスクリプタ１１４から取得したアドレスの、デスティネーションアドレスディスクリプタ１１４のフラグを（３）ライト済みにする。
【００９９】
１．２．ＭＭＵ１０２から送られたアドレスが、ソースアドレスディスクリプタ１１３に含まれない場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスのみにライトを実行する。
【０１００】
２．ＭＭＵ１０２から、デフラグコピー中のデスティネーションページに対するライトが要求された場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するライトを実行する。
【０１０１】
３．ＭＭＵ１０２から、デフラグコピー中のソースページおよびデスティネーションページではないページに対するライトが要求された場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するライトを実行する。
【０１０２】
４．ＭＭＵ１０２から、デフラグコピー中のソースページに対するリードが要求された場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するリードを実行する。
【０１０３】
５．ＭＭＵ１０２から、デフラグコピー中のデスティネーションに対するリードが要求された場合、後述の処理をする。
【０１０４】
５．１．デスティネーションアドレスディスクリプタ１１４が、（１）ライト済みの場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するリードを実行する。
【０１０５】
５．２．デスティネーションアドレスディスクリプタ１１４が、（２）空きの場合、メモリ保護回路１１５は、エラーメッセージをＣＰＵ１０１に通知する
５．３．デスティネーションアドレスディスクリプタ１１４が、（３）コピーライト不可の場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するリードを実行する。
【０１０６】
６．ＭＭＵ１０２から、デフラグコピー中のソースおよびデスティネーションではないページに対するリードが要求された場合、メモリ保護回路１１５は、ＭＭＵ１０２から送られたアドレスに対するリードを実行する。
【０１０７】
前述したように第１の実施形態によると、デフラグディスクリプタバッファをコピー回路とメモリ保護回路とが共有することによって、デフラグとプログラムとが並行した際に発生するメモリアクセスの競合を検出可能にし、メモリの内容が破壊されることを回避できる。また、これによって、デフラグに必要となるコピーとプログラムとを並行して実行でき、プログラムの実行速度を低下させず、記憶効率および帯域利用効率の向上を図ることができる。
【０１０８】
なお、第１の実施形態において、不揮発性メモリのページ単位でデフラグコピーをしたが、いくつかのページをまとめてデフラグコピーをしてもよい。
【０１０９】
また、デフラフディスクリプタバッファ１１０のデスティネーションアドレスディスクリプタ１１４の各フラグは、（１）ライト済み、（２）空き、（３）コピーライト不可、の三つの値を取ったが、「空き」と「使用済」の二つの値でもよい。
【０１１０】
本実施形態によると、メインメモリ１１６は、特殊な機能を持つ不揮発性メモリである必要はない。本実施形態の計算機システムは、従来の計算機システムのＳｏＣ１００を置換するのみによって実装できる。
【０１１１】
利用ページレジスタ１０３ｂを持たないＭＭＵ１０２を用いる場合は、ページの切り替えをトリガとしてデフラグをするのではなく、ＴＬＢミスの発生をトリガにすることによって、本実施形態の処理は可能となる。この場合、本発明の実施形態の計算機は、ＭＭＵ１０２に換えて、ＴＬＢミスが発生した際に例外的な処理をするプログラムを用いることによって、コピー回路１０９を制御してもよい。
【０１１２】
また、メインメモリ１１６を不揮発性メモリによって構成する場合は、ＴＬＢ１０３ａ、利用ページレジスタ１０３ｂ、状態レジスタ２０２、ソースブロック参照レジスタ２０６、ソースアドレスレジスタ２０７、デスティネーションアドレスレジスタ２１０、デフラグディスクリプタバッファ１１０は、不揮発性メモリによって実装されてもよい。
【０１１３】
ＴＬＢ１０３ａ、利用ページレジスタ１０３ｂ、状態レジスタ２０２、ソースブロック参照レジスタ２０６、ソースアドレスレジスタ２０７、デスティネーションアドレスレジスタ２１０、デフラグディスクリプタバッファ１１０が不揮発性メモリによって実装されることによって、本発明の実施形態の計算機は、計算機の電源の停止および起動がされてもデフラグを継続できる。これは、状態レジスタ２０２に、デフラグの状態が、途中経過として記憶されることによって、電源の停止および起動がされてもデフラグの継続が可能となる。
【０１１４】
以上説明したように、本発明の第１の実施の形態の計算機によると、計算機の電源の停止および起動がされても、デフラグが継続されることによって、低消費電力であり、かつ、システムの再初期化処理によるプログラム停止期間がない計算機を提供できる。また、本発明の実施形態の計算機は、長時間にわたり安定して駆動し、計算機のレスポンス、およびスループットなどの処理能力を低下させることがない計算機システムを提供できる。
【０１１５】
また、第１の実施形態の計算機は、ページフォールト、ＴＬＢミス、およびページの切り替えのＩ／Ｏ処理オーバヘッドの発生とオーバーラップするタイミングで、デフラグをページ単位で実行するため、ソフトウェアの実行速度の低下を小さくすることができる。
【０１１６】
また、第１の実施形態の計算機は、断片化の可能性の高い、プログラムに参照された直後のページへのデフラグと、プログラムとを並行して実行し、断片化が発生する場合を最小限に抑える。これによって、本発明の実施形態の計算機は、デフラグのコピー量と、デフラグの複雑さを低減し、デフラグに必要となる時間および電力、すなわちメモリを管理するための時間および電力を削減する。
【０１１７】
（第２の実施形態）
図５は、本発明の第２の実施形態の計算機の構成を示すブロック図である。
【０１１８】
図５に示すＣＰＵ１０１からページメモリ管理テーブル１１９は、図１と同じである。
【０１１９】
ＳｏＣ３００は、ＭＭＵ１０２の利用ページレジスタ１０３ｂと、ＴＬＢ１０３ａの管理テーブル参照とを持たず、利用ページレジスタ１０３ｂとＴＬＢ１０３ａの管理テーブル参照に換えて、コピー回路１０９を制御するプログラムを持つ。ＭＭＵ１０２からＴＬＢミスが発生したことを通知されたＣＰＵ１０１は、コピー回路１０９を制御するプログラムを用い、第１の実施形態のＭＭＵ１０２において実行した手順によって、同じ結果を得られる。
【０１２０】
メモリ３０１は、コピー回路１０９、デフラグディスクリプタバッファ１１０、メモリ保護回路１１５およびメインメモリ１１６を備える。メモリ３０１は、ＳｏＣ３００から切り離すことが可能である。メモリ３０１を利用することによって、ＳｏＣ３００は、デフラグとプログラムとを効率よく並行に実行することができるため、長時間にわたり安定して駆動し、処理能力を低下させることがない計算機システムを提供できる。
【０１２１】
（第３の実施形態）
図６は、本発明の第３の実施形態の計算機の構成を示すブロック図である。
【０１２２】
図６に示すＳｏＣ３００、ＣＰＵ１０１からコピー回路１１９は図５と同じである。
【０１２３】
メモリ４０１は、メモリ３０１と同様にコピー回路１０９、デフラグディスクリプタバッファ１１０、メモリ保護回路１１５およびメインメモリ１１６を備えるが、図３に示すメモリ３０１とは異なり、メモリ４０１は、メモリ４０１内部にデフラグ専用バス４０２を備える。コピー回路１０９は、デフラグ専用バス４０２を介して、メインメモリ１１６にアクセスすることができる。これによって、ＣＰＵ１０１によるメモリアクセスとデフラグによるメモリアクセスの競合が、バス１０４において発生しないため、第３の実施形態の計算機は、アービトレイションによる性能低下を抑えることができる。
【図面の簡単な説明】
【０１２４】
【図１】本発明の第１の実施形態の計算機の構成を示すブロック図である。
【図２】本発明の第１の実施形態のデフラグディスクリプタバッファを示すブロック図である。
【図３】本発明の第１の実施形態のメインメモリを示すブロック図である。
【図４】本発明の第１の実施形態のコピー回路のブロック図である。
【図５】本発明の第２の実施形態の計算機の構成を示すブロック図である。
【図６】本発明の第３の実施形態の計算機の構成を示すブロック図である。
【符号の説明】
【０１２５】
１００    ＳｏＣ
１０１    ＣＰＵ
１０２    ＭＭＵ
１０３ａ  ＴＬＢ
１０３ｂ  利用ページレジスタ
１０４    バス
１０５    アービタ
１０６    入力装置
１０７    出力装置
１０８    周辺回路
１０９    コピー回路
１１０    デフラグディスクリプタバッファ
１１１    ソース物理ページアドレス
１１２    デスティネーション物理ページアドレス
１１３    ソースアドレスディスクリプタ
１１４    デスティネーションアドレスディスクリプタ
１１５    メモリ保護回路
１１６    メインメモリ
１１７    プログラムデータ
１１８    ページエントリ
１１９    ページメモリ管理テーブル
２００    バスマスタＩＦ
２０１    バススレーブＩＦ
２０２    状態レジスタ
２０６    ソースブロック参照レジスタ
２０７    ソースアドレスレジスタ
２１０    デスティネーションアドレスレジスタ
２１１    デフラグコピー回路
２１２    ディスクリプタＩＦ
３００    ＳｏＣ
３０１    デフラグ補助機能付メモリ
４０１    デフラグ補助機能付メモリ
４０２    デフラグ専用バス
【図１】
2010170328.tif 000003
【図２】
2010170328.tif 000004
【図３】
2010170328.tif 000005
【図４】
2010170328.tif 000006
【図５】
2010170328.tif 000007
【図６】
2010170328.tif 000008