(57)【要約】【課題】性能を低下させることなく、メモリコピー処理の信頼性を向上させる。【解決手段】複数の命令を同時に処理可能な命令実行ユニット１０２−１乃至１０２−Ｎを備えるプロセッサ１０２において、プロセッサ１０２上で動作するソフトウェアの論理に従って、メモリ読み出し処理を二重化するととともに、プロセッサ１０２上で双方のデータが一致するか否かの判定を実施する。【選択図】図１
2009238132.tif 000002
【特許請求の範囲】
【請求項１】
コピー元に記憶されているデータを前記コピー元からコピー先にコピーするメモリコピー用レジスタ・ファイルであって、
前記コピー元のアドレスをそれぞれ記憶する第１のレジスタ及び第２のレジスタと、
前記コピー先のアドレスを記憶する第３のレジスタと、
前記データの転送サイクル数を記憶する第４のレジスタと、
前記データの１サイクルでの転送データ長を記憶する第５のレジスタと、
前記第１のレジスタにおいて記憶された前記アドレスを介して読み出されたデータを格納する第６のレジスタと、
前記第２のレジスタにおいて記憶された前記アドレスを介して読み出されたデータを格納する第７のレジスタと、
前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を格納する第８のレジスタと、
前記第８のレジスタに格納された排他的論理和と自レジスタが格納している値との論理和を格納する第９のレジスタと、
を備えるレジスタ・ファイル。
【請求項２】
前記第１のレジスタ及び前記第２のレジスタにおけるアドレス計算が正しく実施されたか否かを検証する第１０のレジスタをさらに備えることを特徴とする請求項１に記載のレジスタ・ファイル。
【請求項３】
前記第３のレジスタにおけるアドレス計算が正しく実施されたか否かを検証する第１１のレジスタをさらに備えることを特徴とする請求項１または２に記載のレジスタ・ファイル。
【請求項４】
請求項１乃至３の何れか一項に記載されたレジスタ・ファイルと、
それぞれが同時に命令を実行可能な少なくとも二つの命令実行ユニットを備え、前記レジスタ・ファイルと接続されているプロセッサと、
前記プロセッサと接続されているメモリと、
を備えるデータ処理装置。
【請求項５】
前記プロセッサと前記メモリとの間に接続され、前記メモリに格納されているデータの一部を一時的に格納するキャッシュメモリをさらに備えることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記第１のレジスタにおけるメモリロードの実行回数、前記第２のレジスタにおけるメモリロードの実行回数、前記第８のレジスタにおける排他的論理和演算の実行回数及び前記第９のレジスタにおける論理和演算の実行回数はマシンサイクルの番号に対応して実施されることを特徴とする請求項４または５に記載のデータ処理装置。
【請求項７】
請求項１乃至３の何れか一項に記載されたレジスタ・ファイルにおいて、
前記第１のレジスタ及び前記第２のレジスタに格納されたアドレスを使用して、前記第６のレジスタ及び前記第７のレジスタに前記コピー元から読み出したデータを格納する二つのメモリロードを実行する第一の過程と、
前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を第８のレジスタに格納する第二の過程と、
前記第８のレジスタに格納された前記排他的論理和と前記第９のレジスタに格納された値との論理和を前記第９のレジスタに格納する第三の過程と、
前記第３のレジスタに格納されたアドレスを使用して、前記第６のレジスタに格納されたデータを前記コピー先に格納するメモリストアを実行する第四の過程と、
を備えるコピー元に記憶されているデータを前記コピー元から前記コピー先にコピーする方法。
【請求項８】
前記第１のレジスタ、前記第２のレジスタ及び前記第３のレジスタに格納されたアドレスは、前記第一の過程乃至前記第四の過程の１サイクルにおいて前記コピー先に格納されたデータ長だけ加算する第五の過程と、
前記第４のレジスタに格納されたサイクル回数から１を減算する第六の過程と、
前記第六の過程における減算により前記第４のレジスタに格納されたサイクル回数が零になるまで前記第一の過程乃至第六の過程を繰り返す第七の過程と、
をさらに備え、
前記第五乃至第七の過程は前記第四の過程後に実行されることを特徴とする請求項７に記載の方法。
【請求項９】
前記第１のレジスタにメモリコピー元の先頭アドレスを格納する第八の過程と、
前記第２のレジスタにメモリコピー元の先頭アドレスを格納する第九の過程と、
前記第３のレジスタにメモリコピー先の先頭アドレスを格納する第十の過程と、
前記第５のレジスタにメモリコピーの１サイクルのデータ長を格納する第十一の過程と、
前記第９のレジスタにゼロを格納する第十二の過程と、
をさらに備え、
前記第九乃至第十二の過程は前記第一の過程前に実行されることを特徴とする請求項７または８に記載の方法。
【請求項１０】
前記第４のレジスタにメモリコピーのサイクル回数を格納する第十三の過程をさらに備え、前記第十三の過程は前記第十の過程と前記第十一の過程との間に実行されることを特徴とする請求項９に記載の方法。
【請求項１１】
前記第１のレジスタ及び前記第２のレジスタにおけるアドレス計算が正しく実施されたか否かを検証する過程をさらに備えることを特徴とする請求項７乃至１０の何れか一項に記載の方法。
【請求項１２】
前記第３のレジスタにおけるアドレス計算が正しく実施されたか否かを検証する過程をさらに備えることを特徴とする請求項７乃至１１の何れか一項に記載の方法。
【請求項１３】
前記データ長は、
メモリコピーのデータ長が予め定められたバイト数であるＮバイト以上であるか否かを判定する過程と、
メモリコピーのデータ長がＮバイト未満である場合に、メモリコピーのサイクル回数をメモリコピーのデータ長とする過程と、
メモリコピーの１サイクルのデータ長を１バイトに設定する過程と、
によって定められるものであることを特徴とする請求項９乃至１２の何れか一項に記載の方法。
【請求項１４】
前記データ長は、
メモリコピーのデータ長が予め定められたバイト数であるＮバイト以上であるか否かを判定する過程と、
メモリコピーのデータ長がＮバイト以上である場合に、メモリコピーのサイクル回数を式（１）の商とし、次メモリコピーのデータ長を式（１）の余りとする過程と、
メモリコピーのデータ長÷Ｎ    （１）
メモリコピーの１サイクルのデータ長をＮバイトに設定する過程と、
により定められるものであり、
Ｎバイト単位のメモリコピー処理を実行する過程と、
次メモリコピーのデータ長が零か否かを判定する過程と、
次メモリコピーのデータ長が零である場合に、メモリコピー処理を終了する過程と、
をさらに備えることを特徴とする請求項７乃至１２の何れか一項に記載の方法。
【請求項１５】
前記データ長は、
メモリコピーのデータ長が予め定められたバイト数であるＮバイト以上であるか否かを判定する過程と、
メモリコピーのデータ長がＮバイト以上である場合に、メモリコピーのサイクル回数を式（１）の商とし、次メモリコピーのデータ長を式（１）の余りとする過程と、
メモリコピーのデータ長÷Ｎ    （１）
メモリコピーの１サイクルのデータ長をＮバイトに設定する過程と、
Ｎバイト単位のメモリコピー処理を実行する過程と、
次メモリコピーのデータ長が零か否かを判定する過程と、
次メモリコピーのデータ長が零でない場合に、メモリコピーのサイクル回数を次メモリコピーのデータ長とする過程と、
メモリコピーの１サイクルのデータ長を１バイトに設定する過程と、
によって定められるものであることを特徴とする請求項７乃至１２の何れか一項に記載の方法。
【請求項１６】
請求項１乃至３の何れか一項に記載されたレジスタ・ファイルにおいて、コピー元に記憶されているデータを前記コピー元から前記コピー先にコピーする方法をコンピュータに実行させるためのプログラムであって、
前記プログラムが行う処理は、
前記第１のレジスタ及び前記第２のレジスタに格納されたアドレスを使用して、前記第６のレジスタ及び前記第７のレジスタに前記コピー元から読み出したデータを格納する二つのメモリロードを実行する第一の処理と、
前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を第８のレジスタに格納する第二の処理と、
前記第８のレジスタに格納された前記排他的論理和と前記第９のレジスタに格納された値との論理和を前記第９のレジスタに格納する第三の処理と、
前記第３のレジスタに格納されたアドレスを使用して、前記第６のレジスタに格納されたデータを前記コピー先に格納するメモリストアを実行する第四の処理と、
からなるものであるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコピー用レジスタファイル、データ処理装置、メモリコピー方法及び同方法を実施するプログラムに関する。
【背景技術】
【０００２】
メモリコピー処理は一般のデータ処理装置において広く行われている。
【０００３】
メモリコピー処理とは、対象データをメモリのコピー元からメモリのコピー先にプロセッサを介して転送する処理である。特に、データ転送処理の比重が高い入出力処理装置においては、処理の多くがこのメモリコピー処理であり、このメモリコピー処理の信頼度を向上させることは極めて重要である。
【０００４】
メモリコピー処理の信頼度を向上させる装置の一例として、特開平８−１６４８４号公報（特許文献１）に記載されている二重化メモリシステムがある。
【０００５】
この二重化メモリシステムは、それぞれ二重化されているＣＰＵバス、システムバス制御装置、システムバス及びメモリ装置を備えており、ＣＰＵバス、システムバス制御装置、システムバス及びメモリ装置の各々はデータの比較回路を備えている。これらの比較回路の各々において、二重化処理されたデータが相互に一致するか否かのチェックが行われる。
【０００６】
また、特開昭５６−９８２８号公報（特許文献２）は、データをキーボードからキーボード制御装置に転送する際に、キーボードから同じデータを少なくとも２回キーボード制御装置に転送し、転送された２つのデータが一致するときに、そのデータを有効とするデータ転送読み取り方式を提案している。
【０００７】
また、特開平８−３２８８８８号公報（特許文献３）は、第一の処理装置において処理プログラムを実行した後、同じ処理を行う処理プログラムを第二の処理装置において実行し、双方の出力データを比較して、一致した場合に限り、その出力データを出力装置を介して出力するソフトウェア二重化処理装置を提案している。
【特許文献１】特開平８−１６４８４号公報
【特許文献２】特開昭５６−９８２８号公報
【特許文献３】特開平８−３２８８８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特開平８−１６４８４号公報（特許文献１）に記載されている二重化メモリシステムにおいては、ＣＰＵバス、システムバス制御装置、システムバス及びメモリ装置の各々において二重化処理を行うことが必要になるため、ハードウェア量が非常に多くなってしまうという問題があった。
【０００９】
特開昭５６−９８２８号公報（特許文献２）に記載されているデータ転送読み取り方式は、キーボードからキーボード制御装置へのデータの読み出しにのみ関するものであるため、そのままの構成ではデータ処理装置におけるメモリコピー処理に適用することは困難であるという問題があった。さらに、性能が大きく低下するという問題もあった。
【００１０】
また、特開平８−３２８８８８号公報（特許文献３）に記載されているソフトウェア二重化処理装置によれば、ソフトウェアによる同じ処理を２回繰り返して行わなければならないため、データ処理量が多くなることを避けることができないという問題点があった。さらに、性能が大きく低下するという問題もあった。
【００１１】
本発明は、上述の課題を解決するメモリコピー用レジスタ・ファイル、データ処理装置、メモリコピー方法及び同方法を実施するプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するため、本発明は、第一の態様として、コピー元に記憶されているデータを前記コピー元からコピー先にコピーするメモリコピー用レジスタ・ファイルであって、前記コピー元のアドレスをそれぞれ記憶する第１のレジスタ及び第２のレジスタと、前記コピー先のアドレスを記憶する第３のレジスタと、前記データの転送サイクル数を記憶する第４のレジスタと、前記データの１サイクルでの転送データ長を記憶する第５のレジスタと、前記第１のレジスタにおいて記憶された前記アドレスを介して読み出されたデータを格納する第６のレジスタと、前記第２のレジスタにおいて記憶された前記アドレスを介して読み出されたデータを格納する第７のレジスタと、前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を格納する第８のレジスタと、前記第８のレジスタに格納された排他的論理和と自レジスタが格納している値との論理和を格納する第９のレジスタと、を備えるレジスタ・ファイルを提供する。
【００１３】
さらに、本発明は、第二の態様として、上記のレジスタ・ファイルと、それぞれが同時に命令を実行可能な少なくとも二つの命令実行ユニットを備え、前記レジスタ・ファイルと接続されているプロセッサと、前記プロセッサと接続されているメモリと、を備えるデータ処理装置を提供する。
【００１４】
さらに、本発明は、第三の態様として、上記のレジスタ・ファイルにおいて、前記第１のレジスタ及び前記第２のレジスタに格納されたアドレスを使用して、前記第６のレジスタ及び前記第７のレジスタに前記コピー元から読み出したデータを格納する二つのメモリロードを実行する第一の過程と、前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を第８のレジスタに格納する第二の過程と、前記第８のレジスタに格納された前記排他的論理和と前記第９のレジスタに格納された値との論理和を前記第９のレジスタに格納する第三の過程と、前記第３のレジスタに格納されたアドレスを使用して、前記第６のレジスタに格納されたデータを前記コピー先に格納するメモリストアを実行する第四の過程と、を備えるコピー元に記憶されているデータを前記コピー元から前記コピー先にコピーする方法を提供する。
【００１５】
さらに、本発明は、第四の態様として、上記のレジスタ・ファイルにおいて、コピー元に記憶されているデータを前記コピー元から前記コピー先にコピーする方法をコンピュータに実行させるためのプログラムであって、前記プログラムが行う処理は、前記第１のレジスタ及び前記第２のレジスタに格納されたアドレスを使用して、前記第６のレジスタ及び前記第７のレジスタに前記コピー元から読み出したデータを格納する二つのメモリロードを実行する第一の処理と、前記第６のレジスタに格納されたデータと前記第７のレジスタに格納されたデータとの排他的論理和を第８のレジスタに格納する第二の処理と、前記第８のレジスタに格納された前記排他的論理和と前記第９のレジスタに格納された値との論理和を前記第９のレジスタに格納する第三の処理と、前記第３のレジスタに格納されたアドレスを使用して、前記第６のレジスタに格納されたデータを前記コピー先に格納するメモリストアを実行する第四の処理と、からなるものであるプログラムを提供する。
【発明の効果】
【００１６】
本発明によれば、以下に記載するような効果がある。
【００１７】
第１の効果は、メモリコピー処理において、メモリ読み出しを二重化するとともに、プロセッサ上において双方のデータが一致するか否かを判定しているので、データ化けを防止し、メモリコピー処理の信頼性の向上を図ることができることである。
【００１８】
第２の効果は、メモリコピー処理において、メモリコピー元のアドレス管理レジスタ（第１のレジスタ及び第２のレジスタ）及びメモリコピー先のアドレス管理レジスタ（第３のレジスタ）について、メモリコピー処理終了時の格納値と予め計算した最終アドレスとが一致するか否かの判定を行っているので、メモリコピー処理中のアドレス化けを防止し、メモリコピー処理の信頼性の向上を図ることができることである。
【００１９】
第３の効果は、メモリコピー処理は、複数の命令を同時に処理可能なプロセッサ上のソフトウェアにより実行されるため、メモリコピー処理を実施するための特別なハードウェアを必要とせず、安価にメモリコピー処理を実現することができることである。
【００２０】
第４の効果は、メモリコピー処理は、複数の命令を同時に処理可能なプロセッサ上のソフトウェアにより実行されるため、他の手段によるメモリコピー処理、例えば、同一処理を直列的に２回実行し、結果の一致を確認するメモリコピー処理と比較して、性能低下が発生しないことである。
【００２１】
以上のように、本発明によれば、複数の命令を同時に処理可能な命令実行ユニットを備えるプロセッサにおいて、プロセッサ上で動作するソフトウェアの論理に従って、メモリ読み出し処理を二重化するととともに、プロセッサ上で双方のデータが一致するか否かの判定を実施することにより、性能を低下させることなく、メモリコピー処理の信頼性の向上を図ることができる。
【発明を実施するための最良の形態】
【００２２】
（第一の実施形態）
図１は、本発明の第一の実施形態に係るレジスタ・ファイル１０１を備えたデータ処理装置１００のハードウェア構成を示すブロック図である。
【００２３】
図１に示すデータ処理装置１００は、本発明の第一の実施形態に係るレジスタ・ファイル１０１と、レジスタ・ファイル１０１と接続されているプロセッサ１０２と、プロセッサ１０２と接続されているメモリ１０３と、から構成されている。
【００２４】
メモリ１０３は、データ処理装置１００における主記憶装置として機能するメモリである。
【００２５】
プロセッサ１０２は、それぞれが同時に命令を実行可能なＮ（Ｎは２以上の整数）個の命令実行ユニット１０２−１乃至１０２−Ｎを備えている。
【００２６】
プロセッサ１０２は、データ処理装置１００において、ソフトウェア・プログラムにより指定された命令を実行する。
【００２７】
図２は、本発明の第一の実施形態に係るレジスタ・ファイル１０１の構造を示すブロック図である。
【００２８】
レジスタ・ファイル１０１は各種レジスタを含んでおり、レジスタの種類としては、汎用レジスタ、浮動小数点レジスタ、制御レジスタ、命令ポインタなどがある。
【００２９】
図２に示すように、レジスタ・ファイル１０１は、メモリコピー元のアドレスを管理する第１のレジスタ（マスタ側レジスタ）２０１と、メモリコピー元のアドレスを管理する第２のレジスタ（スレーブ側レジスタ）２０２と、メモリコピー先のアドレスを管理する第３のレジスタ２０３と、メモリコピーの実行処理においてサイクル回数を管理する第４のレジスタ２０４と、１サイクル当たりのデータ長を管理する、すなわち、１サイクルでコピーされるバイト長が格納される第５のレジスタ２０５と、メモリコピーのデータを格納する第６のレジスタ（マスタ側レジスタ）と、メモリコピーのデータを格納する第７のレジスタ（スレーブ側レジスタ）と、排他的論理和の演算結果を格納する第８のレジスタ２０８と、論理和の演算結果を格納する第９のレジスタ２０９と、から構成されている。
【００３０】
レジスタ・ファイル１０１は、メモリの読み出しを二重化するため、メモリコピー元のアドレスを管理するレジスタとして二つのレジスタ、すなわち、マスタ側レジスタとしての第１のレジスタ２０１とスレーブ側レジスタとしての第２のレジスタ２０２とを備えている。
【００３１】
後述するように、第５のレジスタ２０５には「１」または「８」が格納される。
【００３２】
第１のレジスタ２０１及び第２のレジスタ２０２の場合と同様に、レジスタ・ファイル１０１は、メモリの読み出しを二重化するため、メモリコピーのデータを格納するレジスタとして二つのレジスタ、すなわち、マスタ側レジスタとしての第６のレジスタ２０６とスレーブ側レジスタとしての第７のレジスタ２０７とを備えている。
【００３３】
第８のレジスタ２０８及び第９のレジスタ２０９は、メモリから読み出したデータの二重化チェックのために使用される。
【００３４】
図３は、本実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００におけるメモリコピーの開始処理のフローチャートである。
【００３５】
以下、図３を参照して、データ処理装置１００におけるメモリコピーの開始処理を説明する。
【００３６】
先ず、第１のレジスタ２０１にメモリコピー元の先頭アドレスを格納する（ステップＳ３０１）。
【００３７】
次いで、第２のレジスタ２０２にメモリコピー元の先頭アドレスを格納する（ステップＳ３０２）。
【００３８】
次いで、第３のレジスタ２０３にメモリコピー先の先頭アドレスを格納する（ステップＳ３０３）。
【００３９】
次いで、第４のレジスタ２０４にメモリコピーのサイクル回数を格納する（ステップＳ３０４）。
【００４０】
次いで、第５のレジスタ２０５にメモリコピーの１サイクルのデータ長を格納する（ステップＳ３０５）。
【００４１】
次いで、第９のレジスタ２０９にゼロを格納する（ステップＳ３０６）。すなわち、エラー表示をクリアしておく。
【００４２】
図４は、本実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００におけるメモリコピーの実行処理のフローチャートである。
【００４３】
図４に示す各ステップは図３に示したステップの後に実行される。
【００４４】
以下、図４を参照して、データ処理装置１００におけるメモリコピーの実行処理を説明する。
【００４５】
先ず、第１のレジスタ２０１内に格納されているアドレスで指定されたメモリデータを読み出し、読み出したメモリデータを第６のレジスタ２０６に格納する（ステップＳ４０１）。
【００４６】
第２のレジスタ２０２内に格納されているアドレスで指定されたメモリデータを読み出し、読み出したメモリデータを第７のレジスタ２０７に格納する（ステップＳ４０２）。
【００４７】
第１のレジスタ２０１内に格納されているアドレスで指定されたメモリデータの読み出し（ステップＳ４０１）と第２のレジスタ２０２内に格納されているアドレスで指定されたメモリデータの読み出し（ステップＳ４０２）とは並行して行われる。すなわち、これら二つのステップＳ４０１及びＳ４０２は相前後して実行してもよく、あるいは、同時に実行してもよい。
【００４８】
第１のレジスタ２０１及び第２のレジスタ２０２に格納されたアドレスはともにメモリコピー元の先頭アドレス（図３のステップＳ３０１、Ｓ３０２）であり、同一のアドレスである。このため、ハードウェア障害が発生しない限り、第６のレジスタ２０６と第７のレジスタ２０７に格納されたメモリデータも同一である。
【００４９】
次いで、第６のレジスタ２０６に格納されているメモリデータと第７のレジスタ２０７に格納されているメモリデータの排他的論理和演算を行い、その演算結果を第８のレジスタ２０８に格納する（ステップＳ４０３）。
【００５０】
第６のレジスタ２０６に格納されているデータと第７のレジスタ２０７に格納されているデータの内容が一致していれば、排他的論理和演算の演算結果は零となり、不一致であれば、演算結果は非零となる。
【００５１】
次いで、第８のレジスタ２０８に格納されている演算結果と第９のレジスタ２０９に格納されているデータ（最初の段階ではゼロ）との論理和演算を行い、その演算結果を第９のレジスタ２０９に再度格納する（ステップＳ４０４）。
【００５２】
従って、メモリコピーの実行処理において、第６のレジスタ２０６に格納されているデータと第７のレジスタ２０７に格納されているデータの内容の不一致が一度でもあれば、メモリコピー終了時に、第９のレジスタ２０９の内容は非零となる。
【００５３】
一方、第６のレジスタ２０６に格納されているデータと第７のレジスタに格納されているデータの内容の不一致が一度もなかった場合は、メモリコピー終了時に、第９のレジスタ２０９の内容は零となる。
【００５４】
次いで、第６のレジスタ２０６に格納されているメモリデータを第３のレジスタ２０３に格納されているアドレスで指定されたメモリエリアに格納する（ステップＳ４０５）。
【００５５】
次いで、第１のレジスタ２０１、第２のレジスタ２０２及び第３のレジスタ２０３に格納されているアドレスに、第５のレジスタ２０５に格納されているメモリコピーの１サイクルのデータ長をそれぞれ加算し、その加算結果を第１のレジスタ２０１、第２のレジスタ２０２及び第３のレジスタ２０３に再度格納する（ステップＳ４０６）。
【００５６】
本実施形態においては、第５のレジスタ２０５に格納された値は「１」または「８」に設定されている。第５のレジスタ２０５に格納された値が「１」である場合には、対応するメモリコピーは１サイクル当たり１バイトの処理となり、第５のレジスタ２０５に格納された値が「８」である場合には、対応するメモリコピーは１サイクル当たり８バイトの処理となる。
【００５７】
さらに、第４のレジスタ２０４に格納されているメモリコピーのサイクル回数から「１」を減算し、その減算結果を第４のレジスタ２０４に再度格納する（ステップＳ４０６）。
【００５８】
次いで、第４のレジスタ２０４に格納されているメモリコピーのサイクル回数が零か否かを確認する（ステップＳ４０７）。
【００５９】
メモリコピーのサイクル回数が零である場合には（ステップＳ４０７のＹＥＳ）、メモリコピーの実行処理は終了し、後述するメモリコピーの終了処理（図５）に進む。
【００６０】
メモリコピーのサイクル回数が非零である場合には（ステップＳ４０７のＮＯ）、メモリコピーの実行処理を続行する。すなわち、ステップＳ４０１及びＳ４０２乃至ステップＳ４０７の処理を再度実行する。
【００６１】
図５は、本実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００におけるメモリコピーの終了処理のフローチャートである。
【００６２】
図５に示す各ステップは図４に示したステップの後に実行される。
【００６３】
以下、図５を参照して、データ処理装置１００におけるメモリコピーの終了処理を説明する。
【００６４】
以下に述べるように、メモリコピー処理の終了処理は、第４のレジスタ２０４に格納されたサイクル回数が零になった場合に開始され、第９のレジスタ２０９に最後に格納された値が零の場合に正常に終了し、零でない場合にはエラー検出となる。
【００６５】
先ず、第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致するか否かを判定する（ステップＳ５０１）。
【００６６】
第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致していない場合には（ステップＳ５０１のＮＯ）、ハードウェア障害が発生しており、メモリコピー処理が信頼できないことを示している。このため、障害処理を行う（ステップＳ５０５）。
【００６７】
第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致している場合には（ステップＳ５０１のＹＥＳ）、第９のレジスタ２０９に格納されている内容が零か否かを判定する（ステップＳ５０４）。
【００６８】
第９のレジスタ２０９に格納されている内容が零ではない場合（ステップＳ５０４のＮＯ）、メモリ読み出し二重化チェックにおいて、ハードウェア障害が発生したことを示している。このため、障害処理を行う（ステップＳ５０５）。
【００６９】
第９のレジスタ２０９に格納されている内容が零である場合（ステップＳ５０４のＹＥＳ）、メモリコピー処理は正常に終了する。
【００７０】
図６は、本実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００において、メモリコピーのパイプライン処理を行う場合のタイムチャートである。
【００７１】
図６に示すタイムチャートは項目６０１乃至６０７から構成されている。
【００７２】
項目６０１はマシンサイクルを示している。図６においては、マシンサイクル１から１０までを示しており、マシンサイクル１１以降は省略してある。
【００７３】
項目６０２は、ステップＳ４０６（図４）において実行される第４のレジスタ２０４の内容の更新状況を示している。
【００７４】
本実施形態においては、初期値は「７」に設定されている。すなわち、図４に示したメモリコピーの実行処理においては、７サイクルの処理が行われる。
【００７５】
項目６０３はステップＳ４０１（図４）において実行されるメモリロード（マスタ側）の実行回数を示している。
【００７６】
項目６０４はステップＳ４０２（図４）において実行されるメモリロード（スレーブ側）の実行回数を示している。
【００７７】
項目６０３と項目６０４との比較から明らかであるように、同一マシンサイクルにおいては、同一実行回数のメモリロードが行われる。
【００７８】
項目６０５はステップＳ４０３（図４）において実行される排他的論理和演算の実行回数を示している。
【００７９】
項目６０６はステップＳ４０４（図４）において実行される論理和演算の実行回数を示している。
【００８０】
項目６０７はステップＳ４０５（図４）において実行されるメモリストアの回数を示している。
【００８１】
図４に示したフローチャートにおいては、論理的に理解し易くするため、実際の実行順序を入れ替えて示している。マシンサイクルに対応させた場合、メモリコピーの実行処理においては、図６に示したタイムチャートのようにパイプライン処理される。
【００８２】
項目６０３乃至６０７において、実行回数の同一番号は同一のメモリデータに対応している。
【００８３】
例えば、実行回数の１回目に着目すると、「１回目」は、マシンサイクル「１」に対応する項目６０３及び６０４、マシンサイクル「７」に対応する項目６０５及び６０７、マシンサイクル「８」に対応する項目６０６に示されている。すなわち、マシンサイクル「１」に対応する項目６０３及び６０４において１回目のメモリロードでメモリから読み出したデータは、マシンサイクル「７」にそれぞれ対応する項目６０５の１回目の排他的論理和演算と、項目６０７の１回目のメモリストアで使用され、マシンサイクル「８」に対応する項目６０６の１回目の論理和演算においては、マシンサイクル「７」に対応する項目６０５の１回目の排他的論理和演算の結果が使用される。
【００８４】
同様に、実行回数の２回目に着目すると、「２回目」は、マシンサイクル「２」に対応する項目６０３及び６０４、マシンサイクル「８」に対応する項目６０５及び６０７、マシンサイクル「９」に対応する項目６０６に示されている。すなわち、マシンサイクル「２」に対応する項目６０３及び６０４において２回目のメモリロードでメモリから読み出したデータは、マシンサイクル「８」にそれぞれ対応する項目６０５の２回目の排他的論理和演算と、項目６０７の２回目のメモリストアで使用され、マシンサイクル「９」に対応する項目６０６の２回目の論理和演算においては、マシンサイクル「８」に対応する項目６０５の２回目の排他的論理和演算の結果が使用される。
【００８５】
実行回数の「３回目」乃至「７回目」についても同様である。
【００８６】
以上のように、メモリロード（マスタ側）の実行回数、メモリロード（スレーブ側）の実行回数、排他的論理和演算の実行回数、論理和演算の実行回数、メモリストアの回数はマシンサイクルの番号に対応して実施される。
【００８７】
このように、それぞれが同時に命令を実行可能なＮ個の命令実行ユニット１０２−１乃至１０２−Ｎを活用することにより、図６に示したようなメモリコピーのパイプライン処理を行うことが可能になる。
【００８８】
なお、メモリコピー処理の実行処理においては、項目６０２乃至６０７は別々の命令実行ユニットで並列処理される。
【００８９】
図７はメモリコピーの処理分類を行う際のフローチャートである。
【００９０】
一般に、メモリコピーのデータ長、メモリコピー元のアドレス、メモリコピー先のアドレスには制限はない。従って、１サイクルのデータ長を１バイトにして、１バイト単位のメモリコピー処理を実行すれば論理的な矛盾は発生しないが、１バイト単位のメモリコピー処理を全てのケースで実行すると、性能的な問題が発生することが予測される。
【００９１】
このような性能的問題を回避するため、図７に示したフローチャートにより、メモリコピーの処理を分類している。
【００９２】
先ず、メモリコピーのデータ長が８バイト以上であるか否かを判定する（ステップＳ７０１）。
【００９３】
メモリコピーのデータ長が８バイト未満である場合（ステップＳ７０１のＮＯ）、メモリコピーのサイクル回数をメモリコピーのデータ長とする（ステップＳ７０２）。
【００９４】
次いで、メモリコピーの１サイクルのデータ長を１バイトに設定する（ステップＳ７０３）。
【００９５】
次いで、１バイト単位のメモリコピー処理を実行する（ステップＳ７０４）。
【００９６】
これにより、メモリコピー処理は終了する。
【００９７】
メモリコピーのデータ長が８バイト以上である場合には（ステップＳ７０１のＹＥＳ）、メモリコピーのサイクル回数を式（１）の商とし、次メモリコピーのデータ長を式（１）の余りとする（ステップＳ７０５）。
【００９８】
メモリコピーのデータ長÷８    （１）
【００９９】
次いで、メモリコピーの１サイクルのデータ長を８バイトに設定する（ステップＳ７０６）。
【０１００】
次いで、８バイト単位のメモリコピー処理を実行する（ステップＳ７０７）。
【０１０１】
次いで、式（１）の余りとして設定した次メモリコピーのデータ長（ステップＳ７０５）が零か否かを判定する（ステップＳ７０８）。
【０１０２】
次メモリコピーのデータ長が零である場合には（ステップＳ７０８のＹＥＳ）、メモリコピー処理は終了する。
【０１０３】
次メモリコピーのデータ長が零でない場合には（ステップＳ７０８のＮＯ）、メモリコピーのサイクル回数を次メモリコピーのデータ長とする（ステップＳ７０９）。
【０１０４】
次いで、メモリコピーの１サイクルのデータ長を１バイトに設定する（ステップＳ７１０）。
【０１０５】
次いで、１バイト単位のメモリコピー処理を実行する（ステップＳ７１１）。
【０１０６】
これにより、メモリコピー処理は終了する。
【０１０７】
１バイト単位のメモリコピー処理（ステップＳ７０４）は、具体的には、図３乃至図５に示したフローチャートに従って、実行される。
【０１０８】
また、８バイト単位のメモリコピー処理（ステップＳ７０７）は、具体的には、図３乃至図５に示したフローチャートに従って、実行される。
【０１０９】
また、１バイト単位のメモリコピー処理（ステップＳ７１１）は、具体的には、図３乃至図５に示したフローチャートに従って、実行される。
【０１１０】
メモリコピーのサイクル回数（図３のステップＳ３０４）及びメモリコピーの１サイクルのデータ長（図３のステップＳ３０５）は図７のフローチャートに示す各ステップにより決定される。
【０１１１】
以上のように、本実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００によれば、メモリコピー処理において、メモリ読み出しを二重化するとともに、プロセッサ１０２上においてこれら二つのデータが一致するか否かを判定しているので、データ化けを防止し、メモリコピー処理の信頼性の向上を図ることが可能である。
【０１１２】
（第一の実施形態の変形例）
図８は、本発明の第一の実施形態に係るレジスタ・ファイル１０１を備えるデータ処理装置１００の変形例であるデータ処理装置１５０のブロック図である。
【０１１３】
本変形例におけるデータ処理装置１５０は、第一の実施形態におけるデータ処理装置１００と比較して、キャッシュメモリ１０４を追加的に備えている。
【０１１４】
キャッシュメモリ１０４はプロセッサ１０２とメモリ１０３との間に接続されている。
【０１１５】
キャッシュメモリ１０４はメモリ１０３に格納されているデータの一部を一時的に格納する。これにより、プロセッサ１０２からメモリ１０３へのアクセス性能を向上させることができる。
【０１１６】
（第二の実施形態）
図９は、本発明の第二の実施形態に係るレジスタ・ファイル２００の構造を示すブロック図である。
【０１１７】
図９に示すように、本実施形態に係るレジスタ・ファイル２００は、第一の実施形態に係るレジスタ・ファイル１０１を構成する第１乃至第９のレジスタ２０１乃至２０９に加えて、第１のレジスタ２０１及び第２のレジスタ２０２におけるアドレス計算を検証する第１０のレジスタ２１０と、第３のレジスタ２０３におけるアドレス計算を検証する第１１のレジスタ２１１と、を備えている。
【０１１８】
第１０のレジスタ２１０及び第１１のレジスタ２１１は、第１のレジスタ２０１、第２のレジスタ２０２及び第３のレジスタ２０３におけるアドレス計算が正しく実施されたか否かを検証するために使用される。
【０１１９】
第１０のレジスタ２１０及び第１１のレジスタ２１１を追加して備えている点を除いて、本実施形態に係るレジスタ・ファイル２００は第一の実施形態に係るレジスタ・ファイル１０１と同一の構造を有しており、また、本実施形態に係るレジスタ・ファイル２００を含むデータ処理装置も第一の実施形態に係るレジスタ・ファイル１０１を含むデータ処理装置１００と同一の構造を有している。このため、第一の実施形態と同一の構成要素に対しては第一の実施形態における参照符号をそのまま用いる。
【０１２０】
図１０は、本実施形態に係るレジスタ・ファイル２００を備えるデータ処理装置におけるメモリコピーの開始処理のフローチャートである。
【０１２１】
以下、図１０を参照して、本実施形態に係るレジスタ・ファイル２００を備えるデータ処理装置におけるメモリコピーの開始処理を説明する。
【０１２２】
ステップＳ３０１乃至ステップＳ３０６までの各ステップは第一の実施形態の場合と同様に実施される。
【０１２３】
ステップＳ３０６に続けて、第１０のレジスタ２１０にメモリコピー終了時のメモリコピー元のアドレスを格納する（ステップＳ３０７）。
【０１２４】
具体的には、式（２）に示すように、第４のレジスタ２０４に格納されているデータと第５のレジスタ２０５に格納されているデータとの積と第１のレジスタ２０１に格納されているデータとの和を第１０のレジスタ２１０に格納する。
【０１２５】
［第１０のレジスタ］＝
［第１のレジスタ］＋［第４のレジスタ］×［第５のレジスタ］  （２）
【０１２６】
次いで、第１１のレジスタ２１１にメモリコピー終了時のメモリコピー先のアドレスを格納する（ステップＳ３０８）。
【０１２７】
具体的には、式（３）に示すように、第４のレジスタ２０４に格納されているデータと第５のレジスタ２０５に格納されているデータとの積と第３のレジスタ２０３に格納されているデータとの和を第１１のレジスタ２１１に格納する。
【０１２８】
［第１１のレジスタ］＝
［第３のレジスタ］＋［第４のレジスタ］×［第５のレジスタ］  （３）
【０１２９】
第１０のレジスタ２１０及び第１１のレジスタ２１１は、メモリコピー終了時にアドレスの更新が正しく実施されたか否かをチェックするために使用される。
【０１３０】
図１１は、本実施形態に係るレジスタ・ファイル２００を備えるデータ処理装置におけるメモリコピーの終了処理のフローチャートである。
【０１３１】
図１１に示す各ステップは図４に示したステップの後に実行される。
【０１３２】
以下、図１１を参照して、本実施形態に係るレジスタ・ファイル２００を備えるデータ処理装置におけるメモリコピーの終了処理を説明する。
【０１３３】
先ず、第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致するか否かを判定する（ステップＳ５０１）。
【０１３４】
第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致していない場合には（ステップＳ５０１のＮＯ）、ハードウェア障害が発生しており、メモリコピー処理が信頼できないことを示している。このため、障害処理を行う（ステップＳ５０５）。
【０１３５】
第１のレジスタ２０１に格納されている内容と第２のレジスタ２０２に格納されている内容とが一致している場合には（ステップＳ５０１のＹＥＳ）、第２のレジスタ２０２に格納されている内容と第１０のレジスタ２１０に格納されている内容とが一致するか否かを判定する（ステップＳ５０２）。
【０１３６】
第２のレジスタ２０２に格納されている内容と第１０のレジスタ２１０に格納されている内容とが一致していない場合には（ステップＳ５０２のＮＯ）、ハードウェア障害が発生しており、メモリコピー処理が信頼できないことを示している。このため、障害処理を行う（ステップＳ５０５）。
【０１３７】
第２のレジスタ２０２に格納されている内容と第１０のレジスタ２１０に格納されている内容とが一致している場合には（ステップＳ５０２のＹＥＳ）、第３のレジスタ２０３に格納されている内容と第１１のレジスタ２１１に格納されている内容とが一致するか否かを判定する（ステップＳ５０３）。
【０１３８】
第３のレジスタ２０３に格納されている内容と第１１のレジスタ２１１に格納されている内容とが一致していない場合には（ステップＳ５０３のＮＯ）、ハードウェア障害が発生しており、メモリコピー処理が信頼できないことを示している。このため、障害処理を行う（ステップＳ５０５）。
【０１３９】
第３のレジスタ２０３に格納されている内容と第１１のレジスタ２１１に格納されている内容とが一致している場合には（ステップＳ５０３のＹＥＳ）、第９のレジスタ２０９に格納されている内容が零か否かを判定する（ステップＳ５０４）。
【０１４０】
第９のレジスタ２０９に格納されている内容が零ではない場合（ステップＳ５０４のＮＯ）、メモリ読み出し二重化チェックにおいて、ハードウェア障害が発生したことを示している。このため、障害処理を行う（ステップＳ５０５）。
【０１４１】
第９のレジスタ２０９に格納されている内容が零である場合（ステップＳ５０４のＹＥＳ）、メモリコピー処理は正常に終了する。
【０１４２】
以上のように、本実施形態に係るレジスタ・ファイル２００によれば、第１のレジスタ２０１、第２のレジスタ２０２及び第３のレジスタ２０３におけるアドレス計算の検証を行う第１０のレジスタ２１０及び第１１のレジスタ２１１を備えているため、メモリコピー処理の信頼性の向上を図ることができる。
【図面の簡単な説明】
【０１４３】
【図１】本発明の第一の実施形態に係るレジスタ・ファイルを備えたデータ処理装置のハードウェア構成を示すブロック図である。
【図２】本発明の第一の実施形態に係るレジスタ・ファイルの構造を示すブロック図である。
【図３】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置におけるメモリコピーの開始処理のフローチャートである。
【図４】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置におけるメモリコピーの実行処理のフローチャートである。
【図５】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置におけるメモリコピーの終了処理のフローチャートである。
【図６】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置において、メモリコピーのパイプライン処理を行う場合のタイムチャートである。
【図７】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置において、メモリコピーの処理分類を行う際のフローチャートである。
【図８】本発明の第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置の変形例であるデータ処理装置のブロック図である。
【図９】本発明の第二の実施形態に係るレジスタ・ファイルの構造を示すブロック図である。
【図１０】本発明の第二の実施形態に係るレジスタ・ファイルを備えるデータ処理装置におけるメモリコピーの開始処理のフローチャートである。
【図１１】本発明の第二の実施形態に係るレジスタ・ファイルを備えるデータ処理装置におけるメモリコピーの終了処理のフローチャートである。
【符号の説明】
【０１４４】
１００  第一の実施形態に係るレジスタ・ファイルを備えるデータ処理装置
１０１  第一の実施形態に係るレジスタ・ファイル
１０２  プロセッサ
１０２−１乃至１０２−Ｎ  命令実行ユニット
１０３  メモリ
１０４  キャッシュメモリ
１５０  変形例に係るデータ処理装置
２００  第二の実施形態に係るレジスタ・ファイル
【図１】
2009238132.tif 000003
【図２】
2009238132.tif 000004
【図３】
2009238132.tif 000005
【図４】
2009238132.tif 000006
【図５】
2009238132.tif 000007
【図６】
2009238132.tif 000008
【図７】
2009238132.tif 000009
【図８】
2009238132.tif 000010
【図９】
2009238132.tif 000011
【図１０】
2009238132.tif 000012
【図１１】
2009238132.tif 000013