(57)【要約】【課題】ＣＰＵの負担を抑えつつメモリのデータ転送の時間を短縮する。【解決手段】二重化されたコンピュータシステムであって、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理する記憶領域管理部と、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部と、コピー制御以外におけるデータの転送を行う通常用データ転送部とを備え、コピー用データ転送部は、ハードウェアにより構成され、通常用データ転送部とは異なるバスに接続されていることを特徴とする。【選択図】図１１
2018165915.tif 000002
【特許請求の範囲】
【請求項１】
二重化されたコンピュータシステムであって、
データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理する記憶領域管理部と、
当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、前記ダーティ情報に基いて、前記メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部と、
前記コピー制御以外におけるデータの転送を行う通常用データ転送部とを備え、
前記コピー用データ転送部は、ハードウェアにより構成され、前記通常用データ転送部とは異なるバスに接続されている
ことを特徴とするコンピュータシステム。
【請求項２】
ダーティ情報を記憶するダーティ情報記憶部を備え、
記憶領域管理部は、前記ダーティ情報記憶部が記憶する前記ダーティ情報に、データが書き換えられたことを示す情報を書き込む
請求項１記載のコンピュータシステム。
【請求項３】
コンピュータシステムは、ハードウェアにより構成され、当該コンピュータシステム以外のコンピュータシステムとのデータの転送を中継する転送中継部を備え、
記憶領域管理部と前記転送中継部とが連携して処理を実行することによって、データが書き換えられた領域のデータのみを転送する
請求項１又は請求項２記載のコンピュータシステム。
【請求項４】
コンピュータシステムは、マイクロコードに従ってメインメモリの記憶領域にデータを書き込むとともに、該マイクロコードに従ってダーティ情報を書き込む
請求項１から請求項３のうちのいずれか１項に記載のコンピュータシステム。
【請求項５】
コンピュータシステムは、フォールトトレラントシステムでの二重化プロセスにおけるコピー制御を行う
請求項１から請求項４のうちのいずれか１項に記載のコンピュータシステム。
【請求項６】
コンピュータシステムは、仮想化システムでのマイグレーションプロセスにおけるコピー制御を行う
請求項１から請求項４のうちのいずれか１項に記載のコンピュータシステム。
【請求項７】
二重化されたコンピュータシステムにおいて、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理し、
当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、前記ダーティ情報に基いて、前記メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送し、
前記コピー制御を行うときにデータの転送を行う前記コピー用データ転送部が、ハードウェアにより構成され、前記コピー制御以外におけるデータの転送を行う通常用データ転送部とは異なるバスに接続されている
ことを特徴とするメモリコピー方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、及びコンピュータシステムのメモリコピー方法に関する。
【背景技術】
【０００２】
ハードウェア（ＨＷ）の微細化によりコンピュータシステムのメモリ容量が増大しており、フォールトトレラントシステムや仮想化システムもそれに追随してメモリ容量の増加が求められている。フォールトトレラントシステムでは２つの系を二重化に移行させる際に、仮想化システムではライブマイグレーションで他の装置にゲストシステムを移動させる際に、通常の処理を一旦停止してメモリのデータを稼働系から待機系に転送する必要がある。しかし、メモリ容量の増大に応じてメモリ内容のコピー時間が長期化しており、処理停止時間が増大するという問題がある。その対策としてメモリをある程度の大きさの「ページ」単位で管理し、二重化又はマイグレーションを開始した後でシステムの稼働により更新されたメモリ領域にダーティページという印をつけながらメモリのデータを転送し、その後はダーティページのみ転送することを繰り返すことでメモリのデータ転送の時間を短縮する方法が提案されている。
【０００３】
また、例えば、特許文献１には、マルチプロセッサシステムにおいて、Ｉ／Ｏデバイス間でのアクセスに関してダーティ制御を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００２−５１８７３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ダーティ制御を行う場合、ここで使用可能なダーティページの記録及び管理のためには、システムに搭載されているメモリの全領域をカバーする必要がある。しかしながら、多くのプロセッサに内蔵されているTranslation Lookaside Buffer（ＴＬＢ）に実装されているダーティページの記録及び管理の機能では容量が不足する。そのため、上記のダーティ制御を行う方法ではＴＬＢを活用することはあるが、システムに搭載されているメモリの全領域に対しては、ＯＳ（オペレーティングシステム）やソフトウェアによって記録及び管理することにより処理に時間がかかるという課題があった。
【０００６】
また、特許文献１に記載された発明では、Ｉ／Ｏデバイス間でのアクセスに関してダーティ制御を行うことしか行っておらず、メモリへの書き込みが最も多く行われると想定されるＣＰＵに関してダーティ制御を行うことは何ら開示されていない。
【０００７】
そこで、本発明は、ＣＰＵの負担を抑えつつメモリのデータ転送の時間を短縮することができるコンピュータシステム、及びメモリコピー方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるコンピュータシステムは、二重化されたコンピュータシステムであって、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理する記憶領域管理部と、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部と、コピー制御以外におけるデータの転送を行う通常用データ転送部とを備え、コピー用データ転送部は、ハードウェアにより構成され、通常用データ転送部とは異なるバスに接続されていることを特徴とする。
【０００９】
本発明によるメモリコピー方法は、二重化されたコンピュータシステムにおいて、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理し、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送し、コピー制御を行うときにデータの転送を行うコピー用データ転送部が、ハードウェアにより構成され、コピー制御以外におけるデータの転送を行う通常用データ転送部とは異なるバスに接続されていることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ＣＰＵの負担を抑えつつメモリのデータ転送の時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明によるメモリコピー方法を適用したコンピュータシステム全体の構成例を示すブロック図である。
【図２】コンピュータシステムでメインメモリへの書込みに使用されるＳｔｏｒｅ命令のマイクロコードを示す説明図である。
【図３】制御レジスタ群内の具体的なレジスタを示す説明図である。
【図４】ＤＭＡ制御部の内部構成を示すブロック図である。
【図５】フラグ制御部の内部構成を示すブロック図である。
【図６】メインメモリのアドレスとフラグメモリのアクセス信号の対応表の例を示す説明図である。
【図７】コンピュータシステムがメモリコピーを行う場合の動作を示すフローチャートである。
【図８】メインメモリ読出し制御部が行う動作を示すフローチャートである。
【図９】フラグ書込み制御部が行う動作を示すフローチャートである。
【図１０】フラグ読出し制御部が行う動作を示すフローチャートである。
【図１１】コンピュータシステムの最小の構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を参照して説明する。本発明では、メモリコピー方法は、フォールトトレラントシステムでの二重化プロセスや、仮想化システムでのマイグレーションプロセスで、システムを稼働させたままメインメモリのデータをコピーする。この際に、コピー後に更新のあったメインメモリのページ領域（ダーティページ）を記録及び管理できる手段と、記録されたダーティページの情報を元に必要なメモリのデータのみをコピーする手段をハートウェア（ＨＷ）上に設ける。そのように構成することにより、ＯＳ（オペレーティングシステム）やソフトウェアでダーティページを記録及び管理する場合に比べて、ＣＰＵの負荷を上げずにメインメモリのデータを転送することを特徴とする。その際、一般的なプロセッサやメモリを使用できるように、ハードウェアのうちのプロセッサやメモリには特殊な機能を入れず、マイクロコード等のファームウェア（ＦＷ）及びプロセッサに繋がるデバイスの追加で対応できることを特徴とする。
【００１３】
次に、本発明によるメモリコピー方法を適用したコンピュータシステムの構成について説明する。図１は、本発明によるメモリコピー方法を適用したコンピュータシステム全体の構成例を示すブロック図である。本発明によるメモリコピー方法を適用したコンピュータシステムは、ハードウェア的に同一の複数のモジュール１００を含んで構成される。図１に示すように、モジュール１００は、プロセッサ１１０と、メインメモリ１２０と、コピー制御部１３０と、フラグメモリ１４０，１５０と、チップセット１６０と、Ｉ／Ｏ部１７０とを備える。
【００１４】
なお、本実施形態では、図１に示すコンピュータシステムは、例えば、フォールトトレラントシステムでの二重化プロセスや、仮想化システムでのマイグレーションプロセスを行う場合に適用される。
【００１５】
プロセッサ１１０は、ソフトウェアの命令を理解してシステム全体を制御する機能を備える。また、メインメモリ１２０（主記憶装置）は、プロセッサ１１０に接続され、ソフトウェアの命令やデータを記憶する。また、コピー制御部１３０は、メインメモリ１２０のデータを効率よく他のモジュールに転送する機能を備える。また、フラグメモリ１４０，１５０は、システム稼働中のメモリのデータを転送する際にメモリの全ページ領域のダーティフラグ（データが書き換えられたか否かを示すフラグ）を記録（記憶）する。また、チップセット１６０は、通常の処理でコンピュータシステムの各機能部へデータを転送する機能を備える。また、Ｉ／Ｏ部１７０は、コンピュータシステムのインプット及びアウトプットの機能を備える。
【００１６】
また、近年のプロセッサには他のデバイスに接続できる高速なバスが複数搭載されており、本実施形態では、図１に示すように、通常の処理を行うためのチップセット１６０へのアクセスのためのバスとは異なるバスにコピー制御部１３０が接続されている。そのように構成することによって、本実施形態では、通常の処理を妨げることなく、ダーティフラグの処理を行うことを可能としている。
【００１７】
なお、ハードウェア的に完全に同期をとるフォールトトレラントシステムに適用する場合には、チップセット１６０に他のモジュールと接続して同期を行うための機能を設けるように構成してもよい。その場合には、チップセット１６０の中にコピー制御部１３０を入れ込む構成とすることも可能である。
【００１８】
また、図１に示すように、プロセッサ１１０は、演算機能を有するＣＰＵコア１１１と、プロセッサの内部バス１１３と、メインメモリ１２０へのアクセスを制御するメモリＩ／Ｆ１１４と、メモリ以外のデバイスへのアクセスを行うバスＩ／Ｆ１１５とを備える。また、プロセッサ１１０は、ソフトウェアからの命令をハードウェアの詳細な命令に対応させるためのマイクロコード１１２を用いて動作する。
【００１９】
また、図１に示すように、コピー制御部１３０は、トランザクション振分部１３１と、制御レジスタ群１３２と、ＤＭＡ制御部１３３と、フラグ制御部１３４と、フラグメモリＩ／Ｆ１３５，１３６とを備える。トランザクション振分部１３１は、プロセッサ１１０及び内部の各機能部のトランザクションを受けて適切な宛先に振り分ける機能を備える。また、制御レジスタ群１３２は、コピー制御部１３０の動作をソフトウェアから制御するための複数のレジスタである。また、ＤＭＡ制御部１３３は、自モジュールのメモリに対するアクセスを行い、他モジュールとのデータ転送を中継する機能を備える。また、フラグ制御部１３４は、プロセッサ１１０から入力されたトランザクションを解析してダーティフラグを生成し管理する機能を備える。また、フラグメモリＩ／Ｆ１３５，１３６は、フラグ制御部１３４からの要求に従いフラグメモリ１４０，１５０の読み書きを行う機能を備える。
【００２０】
図２は、コンピュータシステムでメインメモリ１２０への書込みに使用されるＳｔｏｒｅ命令のマイクロコードを示す説明図である。一般に、コンピュータシステムでは、このＳｔｏｒｅ命令によりレジスタＩＤ＝Ｒｊが示すメインメモリ１２０のアドレスにレジスタＩＤ＝Ｒｉの値を書込むという動作を行って終了としている。これに対して、本実施形態におけるコンピュータシステムでは、Ｓｔｏｒｅ命令において、さらに、その後にフラグ制御部１３４のフラグ書込みアドレスにレジスタＩＤ＝Ｒｊの値を書込むという処理が続くように構成されている。このＳｔｏｒｅ命令によりプロセッサ１１０からメインメモリ１２０へ書込みを行ったメインメモリ１２０のアドレスをコピー制御部１３０へ出力することが可能となる。
【００２１】
図２に示すＳｔｏｒｅ命令のマイクロコードによりプロセッサ１１０からコピー制御部１３０へ出力されるメインメモリ１２０への書込みアドレスを、図１に示すコピー制御部１３０内のフラグ制御部１３４によりダーティフラグを生成及び管理して、ＤＭＡ制御部１３３によりダーティページ（データが書き換えられたページ）のデータのみ他のモジュールに転送することができる。そのため、ＯＳやソフトウェアによるダーティページの生成及び管理が不要となることで、高速なメモリコピーを実現できる。
【００２２】
図３は、制御レジスタ群１３２内の具体的なレジスタを示す説明図である。図３では、制御レジスタ群１３２内の具体的なレジスタとして、メインメモリ１２０の中で他モジュールと同期する領域の最小のページアドレスの値を示す最小ページアドレスレジスタと、他モジュールと同期する領域の最大のページアドレスの値を示す最大ページアドレスレジスタとを含むことを示している。これらのレジスタは、コピー制御部１３０内の各機能部で共通的に使用される。
【００２３】
図４は、ＤＭＡ制御部１３３の内部構成を示すブロック図である。なお、図４において、図内の点線は主な制御信号やアドレス信号を示し、実線は主なデータ信号を示している。図４に示すように、ＤＭＡ制御部１３３は、ＤＭＡ制御デコーダ１０と、ＤＭＡモードレジスタ１１と、ページアドレスカウンタ１２と、セレクタ１３と、オフセットカウンタ１４と、メインメモリ読出し制御部１５と、送信バッファ１６と、受信バッファ１７と、メインメモリ書込み制御部１８とを備える。
【００２４】
ＤＭＡ制御デコーダ１０は、トランザクション振分部１３１から入力されたトランザクションを解析し、ＤＭＡモードレジスタ１１への値の書込みや送信バッファ１６へのメモリ読出しトランザクションの転送を行い、その他ＤＭＡ制御部１３３の各種機能をコントロールするための動作を行う機能を備える。
【００２５】
ＤＭＡモードレジスタ１１は、ＤＭＡの動作として、他モジュールと同期するメモリ領域全体をコピー（全メモリコピー）するか、ダーティページとして管理されているページのみコピー（差分メモリコピー）するかどうかを示す値を、ＤＭＡモードとして保持する。
【００２６】
ページアドレスカウンタ１２は、全メモリコピーの場合にコピーを行うメインメモリ１２０のページアドレスを記憶し、ページ全体のコピーが終了するとカウントアップする機能を備える。
【００２７】
セレクタ１３は、ＤＭＡモードレジスタ１１の値が全メモリコピーを示す場合には、ページアドレスカウンタ１２から出力されるページアドレスを選択して、メインメモリ読出し制御部１５に出力する機能を備える。また、セレクタ１３は、ＤＭＡモードレジスタ１１の値が差分メモリコピーを示す場合には、フラグ制御部１３４から出力されるページアドレスを選択して、メインメモリ読出し制御部１５に出力する機能を備える。
【００２８】
オフセットカウンタ１４は、コピーを行うメインメモリ１２０のページ内のアドレスを記憶し、１回のトランザクションで転送可能なデータ分だけアドレスをカウントアップする機能を備える。
【００２９】
メインメモリ読出し制御部１５は、セレクタ１３から出力されるページアドレスとオフセットカウンタ１４から出力されるページ内のアドレスとを合成したメインメモリ１２０のアドレスに対するメモリ読出し要求トランザクションを発生させる（生成する）機能を備える。また、メインメモリ読出し制御部１５は、生成したメモリ読出し要求トランザクションをトランザクション振分部１３１に出力すると同時に、送信バッファ１６にメインメモリ１２０のアドレスを書込む機能を備える。
【００３０】
送信バッファ１６は、メインメモリ読出し制御部１５から出力されたアドレスと、そのアドレスに対するメモリ読出しトランザクションにより返ってきたメモリのデータを対にして複数記憶し、順に他モジュールのＤＭＡ制御部１３３の受信バッファ１７に転送する機能を備える。
【００３１】
受信バッファ１７は、他モジュールから転送されたメモリアドレスとデータを複数記憶し、必要なタイミングで順にメインメモリ書込み制御部１８にアドレスを渡し（出力し）、トランザクション振分部１３１にデータを渡す（出力する）機能を備える。
【００３２】
メインメモリ書込み制御部１８は、受信バッファ１７からメモリアドレスを受ける（入力する）と、メインメモリ１２０の該当するアドレスに対するメモリ書込みトランザクションを発生させ（生成し）、必要なタイミングで受信バッファ１７からトランザクション振分部１３１にデータを出力する制御を行う機能を備える。
【００３３】
図５は、フラグ制御部１３４の内部構成を示すブロック図である。なお、図４と同様に、図５において、図内の点線は主な制御信号やアドレス信号を示し、実線は主なデータ信号を示している。図５に示すように、フラグ制御部１３４は、フラグ制御デコーダ２０と、フラグ選択レジスタ２１と、フラグ許可レジスタ２２と、フラグ書込み制御部２３と、フラグ書込みレジスタ２４と、フラグ検出部２５と、フラグカウンタ２６と、フラグ読出し制御部２７と、アドレスポインタ２８と、フラグ読出しレジスタ２９と、アドレスエンコーダ３０と、セレクタ３１，３２，３３，３４とを備える。
【００３４】
フラグ制御デコーダ２０は、トランザクション振分部１３１から入力されたトランザクションを解析し、フラグ選択レジスタ２１、フラグ許可レジスタ２２、フラグカウンタ２６の値の読み書きを行う機能を備える。また、フラグ制御デコーダ２０は、図２に示すＳｔｏｒｅ命令によりメインメモリ１２０のアドレスをフラグ制御部１３４に書込むダーティフラグ書込みトランザクションの場合には、フラグ書込みレジスタ２４やフラグ検出部２５へフラグメモリ１４０，１５０のデータ幅内のダーティフラグの位置を示す値を出力したり、セレクタ３１，３２へフラグメモリ１４０，１５０にアクセスするためのアドレスを出力したり、フラグ書込み制御部２３の機能をコントロールするための動作を行う機能を備える。
【００３５】
図６は、メインメモリ１２０のアドレスとフラグメモリ１４０，１５０のアクセス信号の対応表の例を示す説明図である。この例では、メインメモリ１２０全体のアドレスとして３２ｂｉｔの値をもつものとする、また、４ＫＢｙｔｅ単位のページ領域としてｂｉｔ１１−０の１２ｂｉｔのページ内オフセットと、ｂｉｔ３１−１２の２０ｂｉｔのページアドレスをもつものとする。また、ページアドレスのうちｂｉｔ１５−１２の下位４ｂｉｔはフラグメモリのデータのビット位置として使用し、ｂｉｔ３１−１６の上位１６ｂｉｔはフラグメモリのアドレスとして使用するものとする。この場合、フラグメモリ１４０，１５０は、それぞれアドレス１６ｂｉｔでデータ幅１６ｂｉｔとなるメモリデバイスで構成される。
【００３６】
フラグ選択レジスタ２１は、ダーティフラグの書込みやダーティフラグの読出しのアクセスを、２つあるどちらのフラグメモリ１４０，１５０に対して行うか選択するための値を保持するレジスタである。
【００３７】
フラグ許可レジスタ２２は、ダーティフラグの書込み動作を行うか否か選択するための値を保持するレジスタである。
【００３８】
フラグ書込み制御部２３は、ダーティフラグの書込みのための動作全体を制御するためにフラグ制御部１３４の各種機能をコントロールする機能を備える。
【００３９】
フラグ書込みレジスタ２４は、ダーティフラグをフラグメモリ１４０，１５０のデータの該当ビットだけに書込むために、一時的にフラグメモリ１４０又はフラグメモリ１５０のデータを記憶し、フラグ制御デコーダ２０から出力されたダーティフラグのデータと合成する機能を備える。例えば、ダーティであることを示す場合が”１”であり、ダーティではないことを示す場合が”０”であるものとする。この場合、データ幅が１６ｂｉｔのフラグメモリ１４０又はフラグメモリ１５０から読み出されたデータが２進数の”００００−１０００−００００−０００１”で、フラグ制御デコーダ２０から出力されるダーティフラグの位置がＬＳＢから０オリジンで”６”とした場合、フラグ書込みレジスタ２４で合成される値は２進数の”００００−１０００−０１００−０００１”となる。
【００４０】
フラグ検出部２５は、フラグ書込みレジスタ２４にフラグメモリ１４０又はフラグメモリ１５０のデータが読み出された値のうち、フラグ制御デコーダ２０から出力されるダーティフラグの位置のビットの値を検出する機能を備える。
【００４１】
フラグカウンタ２６は、ダーティフラグ書込みトランザクションを受けた（入力した）場合にフラグ検出部２５で検出した値が”０”の場合（該当するダーティフラグがまだ立っていなかった場合）、カウントアップすることで、これまで書込んだダーティフラグの数を記憶する機能を備える。
【００４２】
フラグ読出し制御部２７は、ＤＭＡ制御部１３３からのリクエストに従い、ダーティフラグの読出しのための動作全体を制御するためにフラグ制御部１３４の各種機能をコントロールする機能を備える。
【００４３】
アドレスポインタ２８は、ダーティフラグの読出しの動作で使用するフラグメモリ１４０又はフラグメモリ１５０のアドレスを記憶する。なお、アドレスポインタ２８は、例えば、レジスタ等によって実現される。
【００４４】
フラグ読出しレジスタ２９は、ダーティフラグの読出しの動作でフラグメモリ１４０又はフラグメモリ１５０から読み出されたデータを一時的に記憶し、ＤＭＡ制御部１３３に渡された（出力された）ダーティページのアドレスに該当するビットのダーティフラグをクリアする機能を備える。
【００４５】
アドレスエンコーダ３０は、アドレスポインタ２８の値とフラグ読出しレジスタ２９の値とから、次にコピーすべきメインメモリ１２０のダーティページのアドレスを発生させる（求める）機能を備える。
【００４６】
セレクタ３１，３２は、フラグ選択レジスタ２１の値に従い、フラグメモリＩ／Ｆ１３５，１３６を経由したフラグメモリ１４０，１５０に対するアクセスを、フラグ書込みのための動作とするか、フラグ読出しのための動作とするかを選択する機能を備える。
【００４７】
セレクタ３３は、フラグ選択レジスタ２１の値に従い、フラグメモリＩ／Ｆ１３５，１３６を経由してフラグメモリ１４０，１５０から読み出したデータのうちどちらをフラグ書込み用のデータとして使用するかを選択する機能を備える。
【００４８】
セレクタ３４は、フラグ選択レジスタ２１の値に従い、フラグメモリＩ／Ｆ１３５，１３６を経由してフラグメモリ１４０，１５０から読み出したデータのうちどちらをフラグ読出し用のデータとして使用するかを選択する機能を備える。
【００４９】
本実施形態では、フラグ選択レジスタ２１の値が、フラグ書込み用としてフラグメモリ１４０を選択し、フラグ読出し用としてフラグメモリ１５０を選択している場合、各セレクタ３１〜３４は次の動作を行う。セレクタ３１は、フラグ書込み制御部２３の要求に従いフラグ制御デコーダ２０から出力されるアドレスに対してフラグメモリＩ／Ｆ１３５にアクセスし、フラグメモリ１４０への書込みデータはフラグ書込みレジスタ２４から出力されたものを使用する。セレクタ３２は、フラグ読出し制御部２７の要求に従いアドレスポインタ２８から出力されるアドレスに対してフラグメモリＩ／Ｆ１３６にアクセスし、フラグメモリ１５０への書込みデータは”０”が使用される。セレクタ３３は、フラグメモリＩ／Ｆ１３５を介してフラグメモリ１４０のデータを選択し、セレクタ３４は、フラグメモリＩ／Ｆ１３６を介してフラグメモリ１５０のデータを選択する。一方、フラグ選択レジスタ２１の値が、フラグ書込み用としてフラグメモリ１５０を選択し、フラグ読出し用としてフラグメモリ１４０を選択している場合、各セレクタ３１〜３４は、上記とは逆のデータ、アドレス、及び制御信号を選択する動作を行う。
【００５０】
次に、動作について説明する。図７は、コンピュータシステムがメモリコピーを行う場合の動作を示すフローチャートである。図７は、図１に示すコンピュータシステムをフォールトトレラントシステムや仮想化システムに適用した場合に、フォールトトレラントシステムでの二重化プロセスや、仮想化システムでのマイグレーションプロセスで、システムを稼働させた状態で、メインメモリ１２０のデータのコピーを行う際に、二重化又はマイグレーションを制御するドライバ等の動作を示している。
【００５１】
コンピュータシステムは、メモリコピーを開始すると（ステップＳ０）、コピーが必要なメインメモリ１２０の領域を特定し、最小ページアドレスレジスタ及び最大ページアドレスレジスタに値を設定する（ステップＳ１）。このとき、ハードウェアで完全にメインメモリの二重化を実現するフォールトトレラントシステムでは、搭載されているメインメモリ１２０全体のページアドレスの最小値、及び最大値が設定される。また、仮想化システムで１つの仮想マシンのマイグレーションを行う場合には、その仮想マシンにアサインされているメモリ領域のページアドレスの最小値、及び最大値が設定される。
【００５２】
その後、コンピュータシステムは、メインメモリ１２０のコピーにおいてハードウェアでダーティフラグを記録及び管理するためにフラグカウンタ２６を”０”にリセットし、フラグ許可レジスタ２２をダーティフラグの書込みを行う値を設定する（ステップＳ２）。なお、フラグ選択レジスタ２１に関してはフローチャートに記載していないが、初期値として、例えば、フラグメモリ１４０をダーティフラグ書込み用として選択する設定がされ、フラグメモリ１５０をダーティフラグ読出し用として選択する設定がされているものとする。
【００５３】
その後、コンピュータシステムは、ＤＭＡモードレジスタ１１に他モジュールと同期するメインメモリ領域全体をコピー（全メモリコピー）することを示す値を設定して、メインメモリ読出し制御部１５にＤＭＡ開始の指示を出す（ステップＳ３）。
【００５４】
ここで、全メモリコピーのＤＭＡ開始後のハードウェアの動作を図８を参照して説明する。図８は、メインメモリ読出し制御部１５が行う動作を示すフローチャートである。メインメモリ読出し制御部１５は、ＤＭＡを開始すると（ステップＳ１００）、ＤＭＡモードレジスタ１１の値を確認して差分メモリコピーかどうかを判断する（ステップＳ１０１）。図７に示すステップＳ３の状態では全メモリコピーであるため判断結果は”ＮＯ”となり、メインメモリ読出し制御部１５は、最小ページアドレスレジスタの値をページアドレスカウンタ１２にセットする（ステップＳ１０３）。一方、ＤＭＡモードレジスタ１１の値が差分メモリコピーでない場合、セレクタ１３は、ページアドレスカウンタ１２の値をメインメモリ読出し制御部１５に出力する。
【００５５】
その後、メインメモリ読出し制御部１５は、オフセットカウンタ１４を”０”にセットし（ステップＳ１０４）、他モジュールと同期するメインメモリ領域の最小のアドレスへの読出し要求のトランザクションを生成し、トランザクション振分部１３１に出力する（ステップＳ１０５）。
【００５６】
また、メインメモリ読出し制御部１５は、トランザクションの出力を完了するとオフセットカウンタ１４の値が最大かどうかを確認する（ステップＳ１０６）。最大でなければ、メインメモリ読出し制御部１５は、オフセットカウンタ１４の値を１つカウントアップする（ステップＳ１０７）。また、メインメモリ読出し制御部１５は、そのカウントアップした値を用いて再度他モジュールと同期するメインメモリ領域の最小のアドレスへの読出し要求のトランザクションを生成し、トランザクション振分部１３１に出力する（ステップＳ１０５）。
【００５７】
メインメモリ読出し制御部１５は、上記の処理のループを繰り返し、オフセットカウンタ１４の値が最大になると、ＤＭＡモードレジスタ１１の値を確認して差分メモリコピーかどうかを判断する（ステップＳ１０８）。図７に示すステップＳ３の状態は全メモリコピーであるため判断結果は”ＮＯ”となり、メインメモリ読出し制御部１５は、ページアドレスカウンタ１２と最大ページアドレスレジスタの値とを比較する（ステップＳ１１１）。
【００５８】
ページアドレスカウンタ１２の値が最大ページアドレスレジスタの値より小さい場合、メインメモリ読出し制御部１５は、ページアドレスカウンタ１２の値を１つカウントアップする（ステップＳ１１２）。また、メインメモリ読出し制御部１５は、オフセットカウンタ１４の値を”０”にセットし（ステップＳ１０４）、次のページアドレスのメインメモリ１２０の読出し要求トランザクションを行う。
【００５９】
上記のように処理を実行して、ページアドレスをカウントアップしながら、ページアドレスカウンタ１２の値が最大ページアドレスレジスタの値と同じになるまで順番にメインメモリ１２０の読出し要求トランザクションの発行（生成）が行われると、ステップＳ１１１におけるページアドレスカウンタ１２と最大ページアドレスレジスタとの値の比較の結果が”ＹＥＳ”となる。
【００６０】
これまでに発行したメインメモリ１２０の読出し要求トランザクションは、トランザクション振分部１３１からプロセッサ１１０内のバスＩ／Ｆ１１５及びプロセッサ内部バス１１３を経由してメモリＩ／Ｆ１１４に渡される（出力される）。メモリＩ／Ｆ１１４は、メインメモリ１２０の読出し要求トランザクションで要求されたアドレスの位置にある、メインメモリ１２０のデータを読み出す。そして、コピー制御部１３０内のＤＭＡ制御部１３３宛のメインメモリ読出しトランザクションとして送信する。
【００６１】
メインメモリ読出しトランザクションは、メインメモリ読出し要求トランザクションの逆の経路をたどり、ＤＭＡ制御部１３３のＤＭＡ制御デコーダ１０に渡される（出力される）。ＤＭＡ制御デコーダ１０は、メインメモリ読出しトランザクションを受ける（入力する）と、メインメモリ読出し制御部１５がメインメモリ読出し要求トランザクション発行時にメインメモリ１２０のアドレスを書込んだ送信バッファ１６の対応する位置にメインメモリ１２０のデータを書込む。
【００６２】
メインメモリ読出し制御部１５は、発行した全てのメインメモリ読出し要求トランザクションに対するメインメモリ読出しトランザクションによるメインメモリ１２０のデータが送信バッファ１６に書込まれるのを待ち（ステップＳ１１３）、ＤＭＡの処理を終了する（ステップＳ１１４）。
【００６３】
メインメモリ１２０のコピー先のモジュール１００にあるＤＭＡ制御部１３３の受信バッファ１７は、コピー元の送信バッファ１６からメインメモリ１２０のアドレス及びデータの値を受ける（受信する）と、メインメモリ書込み制御部１８で該当するメインメモリ１２０のアドレスへの書込みトランザクションを発生させ（生成し）、受信バッファ１７にある該当するメインメモリ１２０へのデータを含めてトランザクション振分部１３１に出力する。
【００６４】
メインメモリ書込みトランザクションは、コピー先のモジュール１００で、プロセッサ１１０内のバスＩ／Ｆ１１５及びプロセッサ内部バス１１３を経由してメモリＩ／Ｆ１１４に送られる（出力される）。そして、メモリＩ／Ｆ１１４は、メインメモリ１２０の書込み要求トランザクションで要求されたアドレスの位置にデータを書込む。
【００６５】
上記のように処理することにより、コピー元のＤＭＡ制御部１３３内のメインメモリ読出し制御部１５で発行した全てのメインメモリ読出し要求トランザクションに対するデータがコピー先のメインメモリ１２０に書込まれると、最小ページアドレスレジスタと最大ページアドレスレジスタとの間にあるメインメモリ１２０のデータが全てコピーされる。
【００６６】
メインメモリ１２０のコピー元のモジュール１００では、このＤＭＡによるメインメモリ１２０のコピー以外にも通常のコンピュータシステムとしての処理を継続している。ここで、コピー元のモジュール１００でメインメモリ１２０への書込みが発生したときには、図２に示すＳｔｏｒｅ命令が実行され、メインメモリ１２０への書込みとともにメインメモリ１２０への書込みアドレスがフラグ制御部１３４にダーティフラグ書込みトランザクションとして送信される。
【００６７】
図９は、フラグ書込み制御部２３が行う動作を示すフローチャートである。図９は、フラグ書込み制御部２３がダーティフラグ書込みの要求を受けた後の動作を示している。フラグ制御デコーダ２０は、ダーティフラグ書込みトランザクションを受ける（入力する）とフラグ書込み制御部２３にダーティフラグの書込みを要求し、フラグ書込み制御部２３は、ダーティフラグの書込み処理を開始する（ステップＳ２００）。ダーティフラグの書込み処理を開始すると、フラグ書込み制御部２３は、フラグ許可レジスタ２２の値をチェックし（ステップＳ２０１）、ダーティフラグの書込みが有効でなければそのまま動作を終了する（ステップＳ２０８）。
【００６８】
ダーティフラグの書込みが有効な場合には、フラグ書込み制御部２３は、書込みが発生したメインメモリ１２０のアドレスと、最小ページアドレスレジスタ及び最大ページアドレスレジスタの値とを比較して、コピーが必要な領域のアドレス範囲内かどうかをチェックし（ステップＳ２０２）、範囲内でなければそのまま動作を終了する（ステップＳ２０８）。
【００６９】
コピーが必要な領域のアドレス範囲内の場合には、フラグ書込み制御部２３は、フラグメモリ１４０，１５０から値を読み出してフラグ書込みレジスタ２４にセットする。この場合、フラグメモリ１４０をダーティフラグ書込み用として選択され、フラグメモリ１５０をダーティフラグ読出し用として選択されている場合、セレクタ３１が要求を受け（入力し）、フラグメモリＩ／Ｆ１３５を経由してフラグメモリ１４０の値を読み出す。そして、フラグ書込み制御部２３は、読み出した値をセレクタ３３を経由してフラグ書込みレジスタ２４にセットする（ステップＳ２０３）。
【００７０】
フラグ書込みレジスタ２４にフラグメモリ１４０，１５０のデータをセットすると、フラグ書込み制御部２３は、ダーティフラグ書込みトランザクションで指定されたメインメモリ１２０のアドレスのうちフラグメモリ１４０，１５０のデータのビット位置に該当する値を参照し、フラグ書込みレジスタ２４の該当するビットをチェックする（ステップＳ２０４）。そして、フラグ書込み制御部２３は、該当するビットが立っていればそのまま動作を終了する（ステップＳ２０８）。
【００７１】
フラグ書込みレジスタ２４の該当するビットが立っていなければ、フラグ書込み制御部２３は、フラグカウンタ２６をカウントアップして（ステップＳ２０５）、フラグ書込みレジスタ２４の該当するビットのフラグを立てる（セットする）（ステップＳ２０６）。
【００７２】
その後、フラグ書込みレジスタ２４の値をフラグメモリ１４０，１５０に書込むが、フラグメモリ１４０をダーティフラグ書込み用として選択され、フラグメモリ１５０をダーティフラグ読出し用として選択されている場合、セレクタ３１が要求を受け（入力し）、フラグ書込み制御部２３は、フラグメモリＩ／Ｆ１３５を経由してフラグメモリ１４０に値を書込み（ステップＳ２０７）、動作を終了する（ステップＳ２０８）。
【００７３】
上記のように処理することにより、フラグ許可レジスタ２２の値がダーティフラグ書込み有効を示す間、コピーが必要なメインメモリ１２０の領域へ書込んだページアドレスをフラグメモリ１４０，１５０に記録することができる。
【００７４】
図７のステップＳ３でＤＭＡが完了すると、コンピュータシステムは、ＤＭＡ中にコピーが必要なメインメモリ１２０の領域へ書込まれたページアドレス（ダーティページ）の数がフラグカウンタ２６に記録されており、予め設定された閾値以内に差分が入っているかどうか判断する（ステップＳ４）。差分が閾値より大きい場合には、コンピュータシステムは、フラグカウンタ２６を”０”にリセットし、フラグ選択レジスタ２１の設定に関してフラグメモリ１４０，１５０のダーティフラグ書込み用とダーティフラグ読出し用との設定を逆に切り替える（ステップＳ５）。
【００７５】
その後、コンピュータシステムは、ＤＭＡモードレジスタ１１の値をダーティフラグが立っている（セットされている）ページのみコピー（差分メモリコピー）することを示す値に設定して、メインメモリ読出し制御部１５にＤＭＡ開始の指示を出す（出力する）（ステップＳ６）。
【００７６】
差分メモリコピーのＤＭＡ開始後のハードウェアの動作を、図８に示すメインメモリ読出し制御部１５のフローチャートを用いて説明する。メインメモリ読出し制御部１５は、ＤＭＡを開始すると（ステップＳ１００）、ＤＭＡモードレジスタ１１の値を確認して差分メモリコピーかどうかを判断する（ステップＳ１０１）。図７に示すステップＳ６の状態は差分メモリコピーであるため判断結果は”ＹＥＳ”となり、フラグ制御部１３４のフラグ読出し機能のリセットによりアドレスポインタ２８には最小ページアドレスレジスタのページアドレスの上位１６ｂｉｔが設定され、フラグ読出しレジスタ２９は”０”に設定され、メインメモリ読出し制御部１５は、メインメモリ１２０にアクセスすべきページアドレスの読出しを行う（ステップＳ１０２）。
【００７７】
図１０は、フラグ読出し制御部２７が行う動作を示すフローチャートである。フラグ制御部１３４のフラグ読出し制御部２７は、図１０に示すフローチャートの動作により、メインメモリ１２０にアクセスすべきページアドレスの読出しを行う。フラグ読出し制御部２７は、ＤＭＡ制御部１３３からの読み出し要求により動作を開始し（ステップＳ３００）、フラグ読出しレジスタ２９の値が”０”かどうかチェックする（ステップＳ３０１）。初期状態ではフラグ読出しレジスタ２９が”０”にリセットされており、フラグ読出し制御部２７は、アドレスポインタ２８と最大ページアドレスレジスタとの値を比較する（ステップＳ３０２）。
【００７８】
初期状態ではアドレスポインタ２８には最小ページアドレスレジスタ値が入っているため判断結果は”ＮＯ”となり、フラグ読出し制御部２７は、フラグメモリ１４０，１５０から値を読み出してフラグ読出しレジスタ２９に値をセットする（ステップＳ３０３）。
【００７９】
フラグ選択レジスタ２１は、初期値としてフラグメモリ１４０がフラグ書込み用に設定され、フラグメモリ１５０がフラグ読出し用に設定されているのであるが、全メモリコピーが終了して差分メモリコピーが開始される時点で切替る。そのため、フラグメモリ１５０がフラグ書込み用に設定され、フラグメモリ１４０がフラグ読出し用に設定されており、フラグ読出しレジスタ２９にはフラグメモリ１４０から読み出されたデータとして、例えば２進数の”００００−１０００−０１００−０００１”が書き込まれる。
【００８０】
その後、フラグ読出し制御部２７は、読み出したフラグメモリ１４０のアドレスに”０”を書込むことで、フラグメモリ１４０の値をクリアし（ステップＳ３０４）、次のフラグメモリ１４０，１５０からの読出しに備えてアドレスポインタ２８を１つカウントアップする（ステップＳ３０５）。
【００８１】
その後、フラグ読出し制御部２７は、ステップＳ３０１に戻りフラグ読出しレジスタ２９の値をチェックする。ここでは、フラグ読出しレジスタ２９の値が”０”ではないため、フラグ読出し制御部２７は、アドレスエンコーダ３０によりアドレスポインタ２８が示すページアドレスの上位１６ｂｉｔの値と、フラグ読出しレジスタ２９の中でフラグが立っている最小のビットであるｂｉｔ０の位置を示すページアドレスの下位４ｂｉｔの値として２進数の”００００”を合わせて、ＤＭＡ制御部１３３に出力する（ステップＳ３０７）。
【００８２】
その後、フラグ読出し制御部２７は、次の読出しに備えてフラグ読出しレジスタ２９の中でフラグが立っている最小のビットであるｂｉｔ０を”０”にクリアし、フラグ読出しレジスタ２９の値を２進数の”００００−１０００−０１００−００００”とする（ステップＳ３０８）。
【００８３】
ＤＭＡモードレジスタ１１の値が差分メモリコピーの場合、セレクタ１３は、上記により読み出したフラグ制御部１３４の値をメインメモリ読出し制御部１５に出力する。その後、メインメモリ読出し制御部１５は、オフセットカウンタ１４を”０”にセットする（ステップＳ１０４）。また、メインメモリ読出し制御部１５は、ダーティフラグがセットされていたメインメモリのページ領域の最小のアドレスへの読出し要求のトランザクションを生成し、トランザクション振分部１３１に出力する（ステップＳ１０５）。
【００８４】
トランザクションの出力を完了すると、メインメモリ読出し制御部１５は、オフセットカウンタ１４の値が最大かどうかを確認する（ステップＳ１０６）。最大でなければ、メインメモリ読出し制御部１５は、オフセットカウンタ１４の値を１つカウントアップする（ステップＳ１０７）。また、メインメモリ読出し制御部１５は、そのカウントアップした値を用いて再度他モジュールと同期するメインメモリ領域の最小のアドレスへの読出し要求のトランザクションを生成し、トランザクション振分部１３１に出力する（ステップＳ１０５）。
【００８５】
メインメモリ読出し制御部１５は、上記の処理のループを繰り返し、オフセットカウンタ１４の値が最大になると、ＤＭＡモードレジスタ１１の値を確認して差分メモリコピーかどうかを判断する（ステップＳ１０８）。図７に示すステップＳ６の状態は差分メモリコピーであるため判断結果は”ＹＥＳ”となり、メインメモリ読出し制御部１５は、フラグ制御部１３４から次のアドレスを読み出す（ステップＳ１０９）。
【００８６】
フラグ制御部１３４のフラグ読出し制御部２７は、次のアドレスの読出し要求により処理を開始すると（ステップＳ３００）、フラグ読出しレジスタ２９の値を確認する（ステップＳ３０１）。ここでは、最初の読出しの後の値として２進数の”００００−１０００−０１００−００００”となっているため、フラグ読出し制御部２７は、アドレスエンコーダ３０によりアドレスポインタ２８が示すページアドレスの上位１６ｂｉｔの値と、フラグ読出しレジスタ２９の中でフラグが立っている最小のビットであるｂｉｔ６の位置を示すページアドレスの下位４ｂｉｔの値として２進数の”０１１０”を合わせて、ＤＭＡ制御部１３３に出力する（ステップＳ３０７）。
【００８７】
その後、フラグ読出し制御部２７は、次の読出しに備えてフラグ読出しレジスタ２９の中でフラグが立っている最小のビットであるｂｉｔ６を”０”にクリアし、フラグ読出しレジスタ２９の値を２進数の”００００−１０００−００００−００００”とする（ステップＳ３０８）。
【００８８】
ここでは、図８に示すステップＳ１０９の処理を実行した後でフラグ制御部１３４からコピー終了通知ではないため（ステップＳ１１０）、メインメモリ読出し制御部１５は、ステップＳ１０４の処理に戻る。メインメモリ読出し制御部１５は、ステップＳ１０９で読み出したページアドレスのページ全体に対して、これまでと同様にオフセットアドレスをカウントアップしながら読出し要求トランザクションを行うと、またステップＳ１０９の処理に戻りフラグ制御部１３４から次のアドレスの読出しを行う。
【００８９】
メインメモリ読出し制御部１５は、ステップＳ１０９でアドレスを読み出すたびに、図１０に示す処理でフラグ読出しレジスタ２９にフラグが立っているビットが残っている間には、フラグの立っている最小のビットに合わせてアドレスを発生（ステップＳ３０７）させながらフラグをクリア（ステップＳ３０８）していく。そして、メインメモリ読出し制御部１５は、フラグ読出しレジスタ２９が”０”になったら（ステップＳ３０１）、次のフラグメモリの値を読み出して（ステップＳ３０３）、アドレスポインタ２８をカウントアップさせ（ステップＳ３０５）、ダーティページのアドレスの発生を続けていく。
【００９０】
最終的にフラグ読出しレジスタ２９が”０”になり（ステップＳ３０１）、アドレスポインタ２８が最大ページアドレスレジスタの値と同じになったときに（ステップＳ３０２）、メインメモリ読出し制御部１５は、コピー終了をＤＭＡ制御部１３３に通知（出力）する（ステップＳ３０６）。
【００９１】
図８に示すステップＳ１０９の処理でコピー終了を受けると、ＤＭＡ制御部１３３のメインメモリ読出し制御部１５は、ステップＳ１１０の処理でそのコピー終了を検出する。そして、メインメモリ読出し制御部１５は、全メモリコピーの場合と同様に、これまでに発行した全てのメインメモリの読出し要求トランザクションに対するメインメモリ読出しトランザクションにより、メインメモリ１２０のデータが送信バッファ１６に書込まれるのを待ち（ステップＳ１１３）、ＤＭＡの処理を終了する（ステップＳ１１４）。
【００９２】
メインメモリ１２０のコピー先のモジュール１００の動作は全メモリコピーのときと同じ動作となり、受信バッファ１７で受けたメインメモリ１２０のアドレスの位置に合わせてコピー先のメインメモリ１２０にデータを書込む。この様にして、コピー元のＤＭＡ制御部１３３内のメインメモリ読出し制御部１５で発行した全ダーティページのメインメモリ読出し要求トランザクションに対するデータがコピー先のメインメモリ１２０に書込まれる。
【００９３】
この差分メモリコピーの間にも、コピー元のモジュール１００では通常のコンピュータシステムとしての処理を継続している。そして、メインメモリ１２０への書込みが発生したときには、図２に示すＳｔｏｒｅ命令が実行され、メインメモリ１２０への書込みとともにメインメモリ１２０への書込みアドレスがフラグ制御部１３４にダーティフラグ書込みトランザクションとして送信される。このタイミングでは、フラグメモリ１５０がフラグ書込み用に設定され、フラグメモリ１４０がフラグ読出し用に設定されている。そのため、差分メモリコピーのためにフラグメモリ１４０が使用されている間も、全メモリコピーのときと同様にその後に発生したダーティフラグ書込みトランザクションによりフラグメモリ１５０に記録され、ダーティページの数がフラグカウンタ２６でカウントされている。
【００９４】
図７に示すステップＳ６の処理で差分メモリコピーが終わると（ステップＳ６）、コンピュータシステムは、フラグカウンタ２６に記録されている通常の処理で発生したダーティページの数をチェックして、予め設定された閾値以内に差分が入っているかどうか判断する（ステップＳ７）。差分が閾値より大きい場合には、コンピュータシステムは、再度ステップＳ５に戻り差分メモリコピーを行う。一方、ステップＳ５〜Ｓ７の処理を何回か繰り返して、ステップＳ７で閾値以内となった場合には、コンピュータシステムは、通常のコンピュータシステムとしての処理を行う一般プロセスを停止させ（ステップＳ８）、ステップＳ５，Ｓ６と同様にステップＳ９，Ｓ１０で差分メモリコピーを実行する。このときには、ステップＳ８で一般プロセスが停止されているため、これ以上メインメモリ１２０への書込みが行われず、ＤＭＡが完了した時点でコピー先のモジュール１００に必要な全てのメインメモリ領域の値がコピーされた状態となる。
【００９５】
その後、コンピュータシステムは、フラグ許可レジスタ２２にダーティフラグの書込みを無効にする設定を行い（ステップＳ１１）、メモリコピーの処理を終了する（ステップＳ１２）。
【００９６】
以上に説明したように、本実施形態によれば、フォールトトレラントシステムでの二重化プロセスや、仮想化システムでのマイグレーションプロセスで、システムを稼働させたままメインメモリ１２０のデータをコピーする際に、ダーティフラグの記録及び管理を全てハードウェアで実行する。そのため、ＯＳやソフトウェアによるメインメモリ１２０上でのダーティフラグの記録や管理が不要となり、ＤＭＡの起動やＤＭＡが完了したときのダーティページの数のチェックを行う程度でメモリコピーを実施することができる。従って、ＣＰＵ（プロセッサ１１０）の負荷を抑えることができる。
【００９７】
また、コンピュータシステムでは、ソフトウェアでダーティページを記録及び管理する場合、１度のメインメモリ１２０への書込みアクセスに対して、ダーティフラグのあるメモリアドレスからデータを読出し、書込みアクセスに対応するビットにダーティフラグをセットし、ダーティフラグのあるメモリアドレスにデータを書き戻すという３つの処理が発生する。このことに対して、本実施形態では、フラグ制御部１３４における書込みアクセスしたアドレスを書込むという処理の追加のみで実現可能となる。例えば、メインメモリ１２０への書込み時間が１０ｎｓであり、読出し時間が５０ｎｓであり、演算処理時間が５ｎｓであり、メインメモリ１２０以外への書込み時間が２０ｎｓであるとした場合、ソフトウェアによりダーティページを記録及び管理を行うと、通常では１度のインメモリ１２０への書込みで１０＋５０＋５＋１０＝７５ｎｓかかる。これに対して、本実施形態によれば、１０＋２０＝３０ｎｓとなり、ＣＰＵの負荷は半分以下となる。
【００９８】
また、本実施形態によれば、フラグ制御部１３４とＤＭＡ制御部１３３とが連携することにより、ダーティページのみの差分メモリコピーを完全にハードウェアで実現することが可能となる。そのため、ＯＳやソフトウェアによりＣＰＵを使用しながらメモリコピーを行う場合に比べて、ＣＰＵにはほとんど負荷がかからずにコピーを行うことができる。
【００９９】
また、コンピュータシステムでは、ソフトウェアでダーティページを記録及び管理する場合、１度のメインメモリ１２０のコピーの際に、ダーティページアドレス取得のためのメモリ読出し、ダーティページのデータのメモリ読出し、コピー先へのデータ書込みという処理が必要となる。これに対して、本実施形態によれば、ハードウェアで全て実行するためＣＰＵへの負荷がかからなくなる。
【０１００】
また、本実施形態によれば、プロセッサやメモリなど主要なデバイスは標準的な機能により実現でき、唯一プロセッサのマイクロコードに手を入れることでメインメモリ１２０への書込みの際にそのアドレスを外部バスに出力させる機能を追加することができる。
【０１０１】
また、本実施形態によれば、本発明によるメモリコピー方法を適用したコンピュータシステムを実現するために必要な機能は、コピー制御部１３０及びフラグメモリ１４０，１５０だけである。そのため、これらのデバイスをシステムに新規に追加することで実現可能となり、通常の処理で必要となる主要なハードウェアデバイスはそのまま使用することができる。
【０１０２】
以上のことから、本実施形態によれば、ＣＰＵの負担を抑えつつメモリのデータ転送の時間を短縮することができる。
【０１０３】
次に、本発明によるメモリコピー方法を適用したコンピュータシステムの最小構成について説明する。図１１は、コンピュータシステムの最小の構成例を示すブロック図である。図１１に示すように、コンピュータシステムは、二重化されたコンピュータシステムであって、フラグ制御部１３４と、コピー制御部１３０と、チップセット１６０とを備える。
【０１０４】
フラグ制御部１３４は、データが書き換えられたか否かを示すダーティ情報（ダーティフラグ）を用いて、メインメモリの記憶領域を管理する機能を備える。また、コピー制御部１３０は、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送する機能を備える。また、チップセット１６０は、コピー制御以外におけるデータの転送を行う機能を備える。また、コピー制御部１３０は、ハードウェアにより構成され、チップセット１６０とは異なるバスに接続されている。なお、例えば、チップセット１６０の中にコピー制御部１３０を含むように構成してもよい。
【０１０５】
図１１に示す最小構成のコンピュータシステムによれば、ＣＰＵの負担を抑えつつメモリのデータ転送の時間を短縮することができる。
【０１０６】
なお、上記に示した実施形態では、以下の（１）〜（６）に示すようなコンピュータシステムの特徴的構成が示されている。
【０１０７】
（１）コンピュータシステムは、二重化されたコンピュータシステムであって、データが書き換えられたか否かを示すダーティ情報（例えば、ダーティフラグ）を用いて、メインメモリ（例えば、メインメモリ１２０）の記憶領域を管理する記憶領域管理部（例えば、フラグ制御部１３４）と、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部（例えば、コピー制御部１３０）と、コピー制御以外におけるデータの転送を行う通常用データ転送部（例えば、チップセット１６０）とを備え、コピー用データ転送部は、ハードウェアにより構成され、通常用データ転送部とは異なるバスに接続されていることを特徴とする。
【０１０８】
（２）コンピュータシステムは、ダーティ情報を記憶するダーティ情報記憶部（例えば、フラグメモリ１４０，１５０）を備え、記憶領域管理部は、ダーティ情報記憶部が記憶するダーティ情報に、データが書き換えられたことを示す情報を書き込むように構成されていてもよい。
【０１０９】
（３）コンピュータシステムは、ハードウェアにより構成され、当該コンピュータシステム以外のコンピュータシステムとのデータの転送を中継する転送中継部（例えば、ＤＭＡ制御部１３３）を備え、記憶領域管理部と転送中継部とが連携して処理を実行することによって、データが書き換えられた領域のデータのみを転送するように構成されていてもよい。
【０１１０】
（４）コンピュータシステムは、マイクロコード（例えば、図２に示すマイクロコード）に従ってメインメモリの記憶領域にデータを書き込むとともに、該マイクロコードに従ってダーティ情報を書き込むように構成されていてもよい。
【０１１１】
（５）コンピュータシステムは、フォールトトレラントシステムでの二重化プロセスにおけるコピー制御を行うように構成されていてもよい。
【０１１２】
（６）コンピュータシステムは、仮想化システムでのマイグレーションプロセスにおけるコピー制御を行うように構成されていてもよい。
【産業上の利用可能性】
【０１１３】
本発明は、コンピュータシステムにおいて、ミッションクリティカルな用途のため少しのダウンタイムも許されないシステムとして使用される装置や、１つの装置で複数のゲストシステムを構築するような仮想化システムに適用することができる。
【符号の説明】
【０１１４】
１０  ＤＭＡ制御デコーダ
１１  ＤＭＡモードレジスタ
１２  ページアドレスカウンタ
１３  セレクタ
１４  オフセットカウンタ
１５  メインメモリ読出し制御部
１６  送信バッファ
１７  受信バッファ
１８  メインメモリ書込み制御部
２０  フラグ制御デコーダ
２１  フラグ選択レジスタ
２２  フラグ許可レジスタ
２３  フラグ書込み制御部
２４  フラグ書込みレジスタ
２５  フラグ検出部
２６  フラグカウンタ
２７  フラグ読出し制御部
２８  アドレスポインタ
２９  フラグ読出しレジスタ
３０  アドレスエンコーダ
３１，３２，３３，３４  セレクタ
１００  モジュール
１１０  プロセッサ
１１１  ＣＰＵコア
１１２  マイクロコード
１１３  内部バス
１１４  メモリＩ／Ｆ
１１５  バスＩ／Ｆ
１２０  メインメモリ
１３０  コピー制御部
１３１  トランザクション振分部
１３２  制御レジスタ群
１３３  ＤＭＡ制御部
１３４  フラグ制御部
１３５，１３６  フラグメモリＩ／Ｆ
１４０，１５０  フラグメモリ
【図１】
2018165915.tif 000003
【図２】
2018165915.tif 000004
【図３】
2018165915.tif 000005
【図４】
2018165915.tif 000006
【図５】
2018165915.tif 000007
【図６】
2018165915.tif 000008
【図７】
2018165915.tif 000009
【図８】
2018165915.tif 000010
【図９】
2018165915.tif 000011
【図１０】
2018165915.tif 000012
【図１１】
2018165915.tif 000013
【手続補正書】
【提出日】平成30年2月28日(2018.2.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
二重化されたコンピュータシステムであって、
データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理する記憶領域管理部と、
当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、前記ダーティ情報に基いて、前記メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部と、
前記コピー制御以外におけるデータの転送を行う通常用データ転送部とを備え、
当該コンピュータシステムは、マイクロコードに従って、前記コピー用データ転送部に前記ダーティ情報を書き込み、
前記コピー用データ転送部は、ハードウェアにより構成され、前記通常用データ転送部とは異なるバスに接続されている
ことを特徴とするコンピュータシステム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
コンピュータシステムは、マイクロコードに従ってメインメモリの記憶領域にデータを書き込む
請求項１から請求項３のうちのいずれか１項に記載のコンピュータシステム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
二重化されたコンピュータシステムにおいて、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理し、
当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、前記ダーティ情報に基いて、前記メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送し、
当該コンピュータシステムが、マイクロコードに従って、前記コピー制御を行うときにデータの転送を行うコピー用データ転送部に前記ダーティ情報を書き込み、
前記コピー用データ転送部が、ハードウェアにより構成され、前記コピー制御以外におけるデータの転送を行う通常用データ転送部とは異なるバスに接続されている
ことを特徴とするメモリコピー方法。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明によるコンピュータシステムは、二重化されたコンピュータシステムであって、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理する記憶領域管理部と、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送するコピー用データ転送部と、コピー制御以外におけるデータの転送を行う通常用データ転送部とを備え、当該コンピュータシステムは、マイクロコードに従って、コピー用データ転送部にダーティ情報を書き込み、コピー用データ転送部は、ハードウェアにより構成され、通常用データ転送部とは異なるバスに接続されていることを特徴とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明によるメモリコピー方法は、二重化されたコンピュータシステムにおいて、データが書き換えられたか否かを示すダーティ情報を用いて、メインメモリの記憶領域を管理し、当該コンピュータシステム以外のコンピュータシステムにデータをコピーするコピー制御を行うときに、ダーティ情報に基いて、メインメモリの記憶領域のうちデータが書き換えられた領域のデータのみを転送し、当該コンピュータシステムが、マイクロコードに従って、コピー制御を行うときにデータの転送を行うコピー用データ転送部にダーティ情報を書き込み、コピー用データ転送部が、ハードウェアにより構成され、コピー制御以外におけるデータの転送を行う通常用データ転送部とは異なるバスに接続されていることを特徴とする。