(57)【要約】【課題】  メモリ領域間のデータ複写に要する時間を削減する。【解決手段】  副複写サイズ算出手段１１、複写元アドレス算出手段１３および複写先アドレス算出手段１４を起動し、複写処理を行うデータ単位となる副複写サイズ、このデータ単位についての複写元アドレスと複写先アドレスを取得する。そして、取得した副複写サイズと複写元アドレスを指定してリクエスト発行手段１５に対しデータの読み出し要求を行い、該当データを取得し、副複写サイズと複写先アドレスを指定して、リクエスト発行手段１５に対し、読み出されたデータの書き込み要求を行って、データを複写する。次に、残り複写サイズから副複写サイズを減算して更新し、更新された残り複写サイズに基づいて複写処理を続行するか終了するかを判定する。【選択図】  図１
2005084763.tif 000002
【特許請求の範囲】
【請求項１】
複写指示によって、複写元メモリ領域のデータを読み出し、複写先メモリ領域に前記データを書き込むメモリ間複写制御装置において、
複写未完了のデータ量を示す残り複写サイズに応じて処理単位となる副複写サイズを算出する副複写サイズ算出手段と、
前記副複写サイズを用いて処理ごとの前記複写元メモリ領域を示す複写元アドレスと前記複写先メモリ領域を示す複写先アドレスを算出する複写アドレス算出手段と、
所定の記憶装置のメモリ領域をアクセスアドレスとアクセスサイズに関する制約なしに読み出しあるいは書き込みを行うメモリアクセス装置に対し、読み出しまたは書き込み要求を発行するリクエスト発行手段と、
外部から前記複写指示が入力されると前記残り複写サイズ、前記複写元アドレスおよび前記複写先アドレスを初期化するとともに、前記副複写サイズ算出手段および前記複写アドレス算出手段を動作させ、算出された前記副複写サイズと前記複写元アドレスを指定して前記リクエスト発行手段にデータ読み出しを要求し、前記副複写サイズと前記複写先アドレスを指定して前記リクエスト発行手段に読み出されたデータの書き込み要求をして複写処理を制御し、前記副複写サイズを用いて前記残り複写サイズを更新し、前記残り複写サイズに基づいて複写処理の続行／終了を判定する複写制御手段と、
を具備することを特徴とするメモリ間複写制御装置。
【請求項２】
前記副複写サイズ算出手段は、
前記残り複写サイズと、予め設定されている処理単位のデータサイズを比較し、前記残り複写サイズを超えない最も大きい前記処理単位のデータサイズを前記副複写サイズとして設定する、
ことを特徴とする請求項１記載のメモリ間複写制御装置。
【請求項３】
前記複写アドレス算出手段は、
前記複写元アドレスの値を保持する複写元アドレス保持手段と、前記複写元アドレス保持手段の保持する値と前記副複写サイズの値とを加算する加算手段と、を有する複写元アドレス算出手段と、
前記複写先アドレスの値を保持する複写先アドレス保持手段と、前記複写先アドレス保持手段の保持する値と前記副複写サイズの値とを加算する加算手段と、を有する複写先アドレス算出手段と、
を具備することを特徴とする請求項１記載のメモリ間複写制御装置。
【請求項４】
複写指示によって、複写元メモリ領域のデータを読み出し、複写先メモリ領域に前記データを書き込むメモリ領域間の複写処理を行うメモリ間複写処理プログラムにおいて、
コンピュータに、
外部から前記複写指示が入力されると、前記複写指示に基づいて複写未完了のデータ量を示す残り複写サイズ、データ読み出し領域を示す複写元アドレスおよびデータ書き込み領域を示す複写先アドレスを初期化し、
前記残り複写サイズに応じて処理単位となる副複写サイズを算出し、
所定の記憶装置のメモリ領域をアクセスアドレスとアクセスサイズに関する制約なしに読み出しあるいは書き込みを行うメモリアクセス装置に対し、前記副複写サイズと前記複写元アドレスを指定してデータの読み出しを要求して読み出しデータを取得し、
前記副複写サイズと前記複写先アドレスを指定して前記メモリアクセス装置に対し、前記読み出しデータの書き込みを要求して前記副複写サイズ分の複写処理を行い、
前記副複写サイズを用いて前記残り複写サイズ、前記複写元アドレスおよび前記複写先アドレスを更新し、
更新された前記残り複写サイズに基づいて複写処理の続行または終了を判定し、
続行する場合には、前記残り複写サイズに応じて前記副複写サイズの算出からの処理を行う、
手順を実行させることを特徴とするメモリ間複写処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ間複写制御装置およびメモリ間複写処理プログラムに関し、特に複写指示によって、複写元メモリ領域のデータを読み出し、複写先メモリ領域に読み出したデータを書き込むメモリ間複写制御装置およびメモリ間複写処理プログラムに関する。
【背景技術】
【０００２】
従来、コンピュータシステムにおいて、ソフトウェアまたはＤＭＡ（Direct Memory Access）の制御によって、所定のメモリ領域に書き込まれたメモリ内容を他のメモリ領域に複写するメモリ領域間の複写処理が行われてきたが、複写されるメモリ領域に比例して増大する複写処理時間を短縮することが課題であった。
【０００３】
そこで、二重化されたコンピュータシステムなどでは、オンライン側のメモリ内容の待機側への複写処理効率を上げるため、所定のメモリ空間ごとに複写要否の判断を行うものもある（たとえば、特許文献１参照。）。
【０００４】
しかしながら、複写の際にはアライメント制約と呼ばれるアクセス制限がある。アライメント制約とは、読み出しや書き込みなど、メモリへのアクセスの際に生じるアクセスアドレスとアクセスサイズとの関係についての制約を言う。
【０００５】
図４は、アライメント制約について示した図である。図は、３２ビットアドレス、６４ビットデータ幅のプロセッサあるいはＤＳＰ（Digital Signal Processor）におけるアライメント制約の例である。なお、アドレスは、１６進表記してある。
【０００６】
図の例では、最大は６４ビット（８バイト）のデータ幅で、以下、４バイト、２バイト、１バイトのデータ幅でアクセスが可能である。一般的にも、８バイトを基準とした８の倍数あるいは約数がデータ幅に設定される。アクセスアドレスの最下位桁の値が０または８の場合、全てのデータ幅での読み出しまたは書き込みが可能である。ところが、最下位桁の値が４とｃの場合は１、２、４バイト、２とｅの場合は１、２バイト、それ以外の場合には、１バイト、のデータ幅でのアクセスのみが可能という制約がある。これは、アクセスサイズが１バイトであれば、すべてのアクセスアドレスの読み出し／書き込みが可能であるが、２バイトでは最下位桁の値が０、２、４、６、８、ａ、ｃ、ｅについて、４バイトでは最下位桁の値が０、４、８、ｃについて、８バイトでは最下位桁の値が０、８についての読み出し／書き込みのみが可能であると言い換えることもできる。
【０００７】
このような従来のアライメント制約がある場合のメモリ間複写処理手順について説明する。図５は、従来のメモリ間複写処理手順を示したフローチャートである。以下、処理の単位を８バイトとして説明する。
【０００８】
複写処理が開始されると、複写サイズとアクセスアドレスに基づいてアライメント判定を行い（ステップＳ１０１）、判定に応じて複写処理を分岐させる（ステップＳ１０２）。複写処理では、複写元および複写先の両方のアクセスアドレスの最下位桁が０、８である場合には、８バイト読み出し、８バイト書き込みの複写処理を行う（ステップＳ１０３）。アクセスアドレスの最下位桁が、複写元０、８および複写先４、ｃの場合には、８バイト読み出し、４バイト書き込み２回の複写処理を行う（ステップＳ１０４）。逆に、アクセスアドレスの最下位桁が複写元で４、ｃ、複写先で０、８の場合には、４バイト読み出し２回、８バイト書き込みの複写処理になる（ステップＳ１０５）。以下、アライメント制約に応じた複写処理が選択される。複写処理の種類は、読み出しまたは書き込みの少なくとも一方の処理のデータ幅が８バイトの複写処理だけで１６通りある。続いて、この複写処理により全てのメモリ領域の複写処理が終了したかどうかが判定され、終了していない場合には、ステップＳ１０１からの処理を繰り返す（ステップＳ１０６）。
【特許文献１】特開平６−１６１９０３号公報（段落番号〔０００６〕〜〔００１５〕、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、従来のメモリ間複写制御装置およびそのメモリ間複写処理には、アライメント制約により複写処理に多大な時間がかかるという問題点があった。
上記の説明のように、メモリ領域間のデータ複写の際に、アライメント制約に合わせるため、複写元および複写先の両方のアクセスアドレスについてアライメント制約を満たす処理ルーチンを用意しなければならない。このため、処理ルーチンの数は多くなり、分岐のための判定条件の数も多くなる。例えば、図４に示したアライメント制約の場合、データ幅が８バイトで１６通り、４バイトで６通り、２バイトで３通りの処理ルーチンを用意しなければならない。処理ルーチンが多岐になると、分岐のための処理に時間がかかるという問題が生じる。
【００１０】
また、このようにアライメントケースごとに処理ルーチンを持つことにより、ケースが増えるため、ソフトウェアパイプラインなど、実行効率を向上させるための最適化が適用しにくくなるという問題や、命令コードが肥大化し、命令キャッシュのヒット率が下がるという問題もある。
【００１１】
さらに、アライメント制約により、複写処理自体にも時間がかかるという問題がある。例えば、８バイトのデータ幅でメモリへのアクセスが可能なメモリ間複写制御装置において、アクセスアドレス「０００００００１」から「００００００２２」に８バイトのデータを複写する場合の手順について説明する。まず、データの読み出しでは、アライメント制約により、（１）「０００００００１」から１バイトの読み出し、（２）「０００００００２」から２バイトの読み出し、（３）「０００００００４」から４バイトの読み出し、（４）「０００００００８」から１バイトの読み出し、の４つの手順が行われる。続く書き込みでは、（１）「００００００２２」から２バイトの書き込み、（２）「００００００２４」から４バイトの書き込み、（３）「００００００２８」から２バイトの書き込み、の３つの手順が行われる。このように、８バイト単位でアクセス可能な装置であっても、アライメント制約によって８バイト一括しての読み出し／書き込みができないため、複写処理に時間がかかる。
【００１２】
また、複写の要否の判断を行う場合であっても、複写を実行する際には、同様の制約を受けるため、複写実行時の処理時間を短縮することは難しい。
以上、ソフトウェアによる複写処理について説明したが、ＤＭＡによる処理の場合も同様のアライメント制約を受ける。このため、ＤＭＡによる複写処理についても、その性能を上げることは難しかった。
【００１３】
本発明はこのような点に鑑みてなされたものであり、メモリ領域間のデータ複写に要する時間を削減することが可能なメモリ間複写制御装置およびメモリ間複写処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明では上記問題を解決するために、図１に示すようなメモリ間複写制御装置が提供される。本発明に係るメモリ間複写制御装置１は、メモリ領域をアクセスアドレスとアクセスサイズに関するアライメント制約なしに読み出しあるいは書き込み制御を行うメモリアクセス装置２を介してメモリ３の所定の複写元メモリ領域３１に格納されたデータを複写先メモリ領域３２に複写する。
【００１５】
メモリ間複写制御装置１は、外部から入力された複写指示に基づいて、複写元アドレスからのデータ読み出しおよび複写先アドレスへのデータ書き込みを要求して複写処理を制御する複写制御手段１０と、残り複写サイズに応じて処理単位である副複写サイズを算出する副複写サイズ算出手段１１と、副複写サイズを用いて複写元のメモリ領域を指示する複写元アドレスを算出する複写元アドレス算出手段１３および複写先のメモリ領域を指示する複写先アドレスを算出する複写先アドレス算出手段１４を有する複写アドレス算出手段１２と、メモリアクセス装置２に対してデータ読み出し要求またはデータ書き込み要求を発行するリクエスト発行手段１５を具備する。
【００１６】
このようなメモリ間複写制御装置１によれば、外部から複写指示が入力されると、複写制御手段１０は、残り複写サイズ、複写元アドレスおよび複写先アドレスを複写指示によって指定された値に初期化する。
【００１７】
その後、副複写サイズ算出手段１１、複写アドレス算出手段１２を構成する複写元アドレス算出手段１３および複写先アドレス算出手段１４を起動し、副複写サイズ、複写元アドレスおよび複写先アドレスを取得する。ここで、副複写サイズとは、１回の複写処理で実行するデータサイズの処理単位を言う。通常、一度にアクセス可能な最大のデータ幅はメモリごとに決まっており、１回の複写処理では、最大のデータ幅に相当するデータサイズから最小のデータ幅に相当するデータサイズの間の所定のデータサイズを処理単位として処理を行う。副複写サイズ算出手段１１は、この処理単位となるデータサイズを残り複写サイズに応じて算出し、副複写サイズとする。また、複写元アドレス算出手段１３および複写先アドレス算出手段１４は、この副複写サイズに基づいてアドレス算出を行っている。複写制御手段１０は、このようにして算出された副複写サイズと複写元アドレスを指定してリクエスト発行手段１５に対しデータの読み出し要求を行い、該当データを取得する。続いて、副複写サイズと複写先アドレスを指定して、リクエスト発行手段１５に対し、読み出されたデータの書き込み要求を行って、対象のメモリ領域にデータを複写し、複写処理を１回終了する。
【００１８】
次に、残り複写サイズから副複写サイズを減算して更新し、更新された残り複写サイズに基づいて複写処理を続行するか終了するかを判定する。続行する場合は、副複写サイズ算出手段１１、複写元アドレス算出手段１３および複写先アドレス算出手段１４の起動からの処理を行う。
【００１９】
このように、残り複写サイズによってのみ規定される副複写サイズを処理単位とする複写処理が繰り返され、複写元メモリ領域３１のデータが複写先メモリ領域３２に複写される。
【００２０】
また、上記課題を解決するために、図１に示したメモリ間複写制御装置１の処理機能をコンピュータに実行させるためのメモリ間複写処理プログラムが提供される。メモリ間複写処理プログラムは、コンピュータに、以下の処理手順を実行させることができる。
【００２１】
コンピュータは、外部から複写指示が入力されると、複写指示に基づいて、残り複写サイズ、複写元アドレスおよび複写先アドレスを初期化する。次に、初期化された残り複写サイズに基づいて、最初の処理単位となる副複写サイズが算出される。そして、副複写サイズと複写元アドレスを指定して、データの読み出し要求を発行する。これに伴って、アクセスアドレスとアクセスサイズに関するアライメント制約のないメモリアクセス装置２が起動し、メモリ３からのデータ読み出しが実行される。続いて、副複写サイズと複写先アドレスを指定して、読み出されたデータの書き込み要求を発行する。これに伴って、メモリアクセス装置２によって、読み出された複写元アドレスのデータが複写先アドレスに複写される。次に、副複写サイズを用いて、残り複写サイズ、複写元アドレスおよび複写先アドレスを更新する。そして、更新された残り複写サイズをチェックし、複写処理を続行するか終了するかの判定を行う。続行する場合には、残り複写サイズに基づいた次の処理単位の副複写サイズ算出からの処理手順を繰り返す。
【発明の効果】
【００２２】
本発明は、残りサイズによってのみ規定される副複写サイズに基づいて複写処理が行われるので、処理ルーチンの分岐に要する処理時間を削減することができるばかりでなく、副複写サイズを最適化することができるため複写自体の処理時間も短縮できる結果、メモリ領域の複写処理が高速化されるという利点がある。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は本発明を適用したメモリ間複写制御装置の動作原理を示す説明図である。
【００２４】
本発明が適用されるメモリ間複写制御装置１は、メモリ間複写制御装置１が発行するデータ読み出し要求あるいはデータ書き込み要求によって、メモリ領域へのアクセスを制御するメモリアクセス装置２を介して、メモリ３の所定領域のデータ読み出し／書き込みを行う。メモリ間複写処理では、１回にアクセス可能な所定の処理単位（データ幅）の複写を繰り返し行うことによって要求されたメモリ間の複写を実現する。
【００２５】
メモリアクセス装置２は、アライメント制約が撤廃されており、アクセスアドレスとアクセスサイズとの関係に制約がない。すなわち、メモリ３の任意のアドレスから始まるメモリ領域からのデータ読み出しおよびデータ書き込みがアクセスサイズの制約なく可能である。
【００２６】
メモリ３は、各種データを保存する所定の記憶装置で、メモリアクセス装置２によってデータの読み出しと書き込みが行われる。
メモリ間複写制御装置１は、データの複写処理を行う装置で、複写処理を制御する複写制御手段１０、処理単位となる副複写サイズを算出する副複写サイズ算出手段１１、複写アドレス算出手段１２を構成する処理単位ごとに複写元アドレスを算出する複写元アドレス算出手段１３と処理単位ごとに複写先アドレスを算出する複写先アドレス算出手段１４、およびメモリアクセス装置２へのリクエストを発行するリクエスト発行手段１５を具備する。
【００２７】
複写制御手段１０は、外部からの複写指示に従って、一連の複写処理の実行を制御する。外部から複写指示が入力されると、元データが格納されている複写元メモリ領域３１を示す複写元アドレス、複写したデータを格納する複写先メモリ領域３２を示す複写先アドレス、複写するデータ量を示す複写サイズを含む複写情報が入力され、初期化処理が行われる。複写情報は初期値として設定されるので、以下の説明では、外部から複写指示された情報は、それぞれ、複写元アドレス（初期値）、複写先アドレス（初期値）、複写サイズ（初期値）と表記する。初期化処理では、処理単位ごとの複写元を示す複写元アドレスに複写元アドレス（初期値）が設定され、処理単位ごとの複写先を示す複写先アドレスに複写先アドレス（初期値）が設定される。また、複写未完了のデータ量を示す残り複写サイズには、複写サイズ（初期値）が設定される。
【００２８】
初期化処理が終了すると、処理単位ごとの複写処理を開始する。副複写サイズ算出手段１１、複写元アドレス算出手段１３および複写先アドレス算出手段１４を起動し、処理単位ごとの副複写サイズ、複写元アドレス、複写先アドレスを取得する。そして、副複写サイズと複写元アドレスを指定してデータ読み出し要求をリクエスト発行手段１５に対して行い、処理単位（副複写サイズ分）の読み出しデータを取得する。続いて、副複写サイズと複写先アドレスを指定してデータの書き込み要求をリクエスト発行手段１５に対して行い、読み出された処理単位のデータの書き込みを行う。書き込みが終了した後、残り複写サイズから副複写サイズを減算し、残り複写サイズを更新する。更新された残り複写サイズをチェックし、残り複写サイズが０であれば、複写処理を終了する。０でなければ、処理単位ごとの複写処理手順の最初に戻って、次の処理単位の複写処理を開始する。
【００２９】
副複写サイズ算出手段１１は、残り複写サイズに応じた副複写サイズを判定し、処理単位のデータ量を設定する。メモリごとに一度にアクセス可能な最大のデータ幅は決められているので、副複写サイズには、最大のデータ幅から最小のデータ幅の間で残り複写サイズを超えない、アクセス可能な最も大きい値が設定される。例えば、最大のデータ幅を８バイトとして、８、４、２、１というように、アクセス可能な処理単位のデータサイズが予め決められている場合には、これらの処理単位のうち、残り複写サイズを超えない最大の処理単位を選択する。
【００３０】
複写元アドレス算出手段１３は、この処理単位における複写元のメモリ領域を指示する複写元アドレスを算出する。
複写先アドレス算出手段１４は、この処理単位における複写先のメモリ領域を指示する複写先アドレスを算出する。
【００３１】
リクエスト発行手段１５は、複写制御手段１０から、アクセスするメモリ領域を示すアドレス（複写元アドレスまたは複写先アドレス）、アクセスするサイズ（副複写サイズ）および指示（読み出しあるいは書き込み）を入力すると、入力情報に基づいて、読み出しあるいは書き込みのリクエストをメモリアクセス装置２に対して発行する。そして、メモリアクセス装置２より得られた読み出しデータあるいは応答は、複写制御手段１０へ伝える。
【００３２】
このような構成のメモリ間複写制御装置１の動作について説明する。
外部のアプリケーションなどから、メモリ間複写制御装置１に対して、複写元メモリ領域３１を示す複写元アドレス（初期値）、複写先メモリ領域３２を示す複写先アドレス（初期値）および複写サイズ（初期値）を含む複写指示が出され、処理が開始される。
【００３３】
複写制御手段１０は、複写指示に基づいて、処理単位ごとの複写処理におけるポインタとなる複写元アドレス、複写先アドレス、および複写未完了のデータ量を示す残り複写サイズを初期化する。初期化終了時、複写元アドレスおよび複写先アドレスは、複写指示されたメモリ領域の先頭アドレスを示し、残り複写サイズは、複写指示された複写サイズを示している。
【００３４】
初期化終了後、複写処理が開始され、複写制御手段１０により副複写サイズ算出手段１１、複写元アドレス算出手段１３および複写先アドレス算出手段１４が起動される。副複写サイズ算出手段１１は、残り複写サイズを参照し、残り複写サイズを超えない最大のデータ幅を処理単位として選択する。複写元アドレス算出手段１３および複写先アドレス算出手段１４は、この処理単位における複写元メモリ領域３１を示す複写元アドレスと、複写先メモリ領域３２を示す複写先アドレスを算出する。
【００３５】
複写制御手段１０は、リクエスト発行手段１５に対し、副複写サイズと複写元アドレスを指定してデータ読み出し要求を行う。リクエスト発行手段１５は、副複写サイズをアクセスサイズ、複写元アドレスをアクセスアドレスとして、データの読み出し要求のリクエストをメモリアクセス装置２に対して発行する。リクエストを受けたメモリアクセス装置２は、メモリ３の指定されたメモリ領域のデータを読み出す。読み出されたデータは、リクエスト発行手段１５経由で複写制御手段１０へ送られる。続いて、複写制御手段１０は、リクエスト発行手段１５に対し、副複写サイズと複写先アドレスを指定して読み出されたデータの書き込み要求を行う。リクエスト発行手段１５は、副複写サイズをアクセスサイズ、複写先アドレスをアクセスアドレスとして、データの書き込み要求のリクエストをメモリアクセス装置２に対して発行する。リクエストを受けたメモリアクセス装置２は、メモリ３の指定されたメモリ領域にデータを書き込む。書き込みの終了信号が、リクエスト発行手段１５経由で複写制御手段１０へ送られ、処理単位の複写処理が終了する。
【００３６】
続いて、複写制御手段１０は、副複写サイズを用いて残り複写サイズを更新するとともに、更新された残り複写サイズに基づいて複写処理の続行／終了の判定を行う。続行する場合には、副複写サイズ算出手段１１、複写元アドレス算出手段１３および複写先アドレス算出手段１４の起動からの処理が繰り返される。
【００３７】
上記の説明の処理が繰り返され、残り複写サイズに応じた最大のデータ幅で複写処理が繰り返され、複写指示されたメモリ領域のメモリ間複写処理が終了する。
このように、処理単位である副複写サイズは、残り複写サイズの大きさによってのみ決まるため、複写元および複写先アドレスと副複写サイズに関する制約を判定する煩雑な処理を行う必要がなく、処理分岐に要する判定時間を短縮することができる。また、分岐する複写処理ルーチンもデータ幅の種類に応じた数だけ用意すればよいため、命令コードが肥大化することがない。さらに、アクセスアドレスに応じて処理を行うデータ幅が制約されることがないため、最大のデータ幅での複写処理が可能となり、複写処理自体の時間を短縮することができる。
【００３８】
以上のように、本発明によれば、メモリアドレスのアライメントの確認・アライメントを合わせるための処理を行う必要がなくなり、メモリ領域の複写処理を高速に行うことができる。この結果、メモリ領域の複写を伴ったシステム全体性能を向上できる。
【００３９】
なお、上記の説明では、複写元アドレス算出手段１３と複写先アドレス算出手段１４の起動を処理単位ごとの複写処理開始時としたが、残り複写サイズを更新する際に起動して次処理単位の複写元アドレスと複写先アドレスを更新しておいてもよい。
【００４０】
ところで、メモリ間複写制御装置１は、メモリ領域間のデータ複写を行うためのデータ処理機能を有しており、ＣＰＵ（Central Processing Unit）によって装置全体が制御されている。ＣＰＵには、バスを介してＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）が接続している。また、外部のプロセッサ・ＤＳＰ、メモリアクセス装置にもバスを介して接続する。ＲＯＭには、ＣＰＵに実行させるプログラムが格納される。  また、ＲＡＭには、ＣＰＵによる処理に必要な各種データが格納される。このようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００４１】
なお、メモリ間複写制御装置１は、その処理機能をハードウェアによって実現することもできる。
次に、本発明を３２ビットアドレス、６４ビット（８バイト）データ幅のシステムに適用した場合を例にとり、実施の形態を説明する。この場合、処理単位のデータ幅は、８バイト、４バイト、２バイト、１バイトの４種類のうち、いずれかが選択できるとする。
【００４２】
図２は、本発明の実施の形態のメモリ間複写制御装置の構成図である。図１と同じものには同じ符号を付し、説明は省略する。
本発明に係るメモリ間複写制御装置１は、複写制御手段１０、副複写サイズを保持する副複写サイズ保持手段１１ａ、複写元アドレスを保持する複写元アドレス保持手段１３ａと加算器１３ｂを有する複写元アドレス算出手段、複写先アドレスを保持する複写先アドレス保持手段１４ａと加算器１４ｂを有する複写先アドレス算出手段、リクエスト発行手段１５および残り複写サイズを保持する残り複写サイズ保持手段１６ａと減算器１６ｂを具備する。
【００４３】
複写制御手段１０は、複写処理を制御する。副複写サイズ保持手段１１ａ、複写元アドレス保持手段１３ａ、複写先アドレス保持手段１４ａおよび残り複写サイズ保持手段１６ａは各データ保持手段に保持されたデータの読み出しおよび必要に応じて書き込みが可能で、これらの保持データを参照して複写処理を行う。なお、ここでは、副複写サイズの算出は複写制御手段１０で行うとする。
【００４４】
副複写サイズ保持手段１１ａは、複写制御手段１０が算出した副複写サイズの値を保持するレジスタである。ここでは、８バイト、４バイト、２バイト、あるいは１バイトのデータ幅値が保持される。必要に応じて、保持されている副複写サイズの値を加算器１３ｂ、１４ｂおよび減算器１６ｂへ出力する。
【００４５】
複写元アドレス保持手段１３ａは、処理単位における複写元のメモリ領域を指示する複写元アドレスを保持するレジスタである。初期化信号により外部から入力する複写元アドレス（初期値）をセットする。また、複写制御手段１０に従って保持された複写元アドレスの値を加算器１３ｂに出力する。加算器１３ｂによって副複写サイズ分だけ加算された複写元アドレスは、次処理時の複写元アドレスとして複写元アドレス保持手段１３ａに格納される。
【００４６】
複写先アドレス保持手段１４ａは、処理単位における複写先のメモリ領域を指示する複写先アドレスを保持するレジスタである。初期化信号により外部から入力する複写先アドレス（初期値）をセットする。また、複写制御手段１０に従って保持された複写先アドレスの値を加算器１４ｂに出力する。加算器１４ｂによって副複写サイズ分だけ加算された複写先アドレスは、次処理時の複写先アドレスとして複写先アドレス保持手段１４ａに格納される。
【００４７】
残り複写サイズ保持手段１６ａは、未完了の複写データ量を示す残り複写サイズを保持するレジスタである。初期化信号により外部から入力する複写サイズ（初期値）をセットする。また、複写制御手段１０に従って保持された残り複写サイズの値を減算器１６ｂに出力する。処理単位の複写処理が終了すると、減算器１６ｂによって副複写サイズ分だけ減算された残り複写サイズが残り複写サイズ保持手段１６ａに格納される。
【００４８】
このような構成のメモリ間複写制御装置１の動作について説明する。
メモリ間複写制御装置１は、プロセッサ・ＤＳＰなどの外部装置から、複写サイズ（初期値）、複写元アドレス（初期値）、複写先アドレス（初期値）、複写開始信号を含む複写指示を入力する。複写制御手段１０の初期化信号により、複写サイズ（初期値）が残り複写サイズ保持手段１６ａ、複写元アドレス（初期値）が複写元アドレス保持手段１３ａおよび複写先アドレス（初期値）が複写先アドレス保持手段１４ａに格納され、初期化処理が終了する。
【００４９】
初期化終了後、複写処理が開始される。
複写制御手段１０は、残り複写サイズ保持手段１６ａに保持された残り複写サイズを読み出し、複写処理の実行／終了の判定と、実行の場合の副複写サイズの選択を行う。残り複写サイズが０の場合、複写終了信号を外部に出力して複写処理を終了する。
【００５０】
一方、残り複写サイズが０以外の場合、複写処理を行う。残り複写サイズが１の場合、副複写サイズ保持手段１１ａに１をセットする。残り複写サイズが２または３の場合、副複写サイズ保持手段１１ａに２をセットする。残り複写サイズが４から７の場合、副複写サイズ保持手段１１ａに４をセットする。そして、残り複写サイズが８以上の場合、副複写サイズ保持手段１１ａに８をセットする。
【００５１】
次に、複写制御手段１０は、リクエスト発行手段１５に対し、複写元アドレス保持手段１３ａに保持された複写元アドレスから、副複写サイズ保持手段１１ａにセットされたデータ幅でのデータ読み出しのリクエストを発行するように通知する。その結果、メモリから該当するデータαが読み出される。
【００５２】
続いて、複写制御手段１０は、リクエスト発行手段１５に対し、複写先アドレス保持手段１４ａの保持された複写先アドレスから、副複写サイズ保持手段１１ａにセットされたデータ幅でデータαを書き込むリクエストを発行するように通知する。その結果、メモリの該当する領域にデータαが書き込まれる。
【００５３】
次に、複写制御手段１０は、減算器１６ｂによって、副複写サイズ保持手段１１ａに保持した副複写サイズ値を残り複写サイズ保持手段１６ａに保持した残り複写サイズの値から減算し、残り複写サイズ保持手段１６ａに反映する。これにより、処理単位の複写処理が終了したデータ量が減算され、残りのデータ量が残り複写サイズ保持手段１６ａに格納される。さらに、加算器１３ｂにより複写元アドレス保持手段１３ａの値に副複写サイズの値を加算し、複写元アドレス保持手段１３ａに反映する。同様に、加算器１４ｂにより複写先アドレス保持手段１４ａの値に副複写サイズの値を加算し、複写先アドレス保持手段１４ａに反映する。これにより、処理単位の複写処理が終了したメモリ領域の次の複写元アドレスおよび複写先アドレスが各保持手段に保持される。
【００５４】
このようにして次処理単位の複写処理のための準備が完了したので、複写処理の実行／終了の判定からの処理を行う。
以上の説明のように、本発明に係るメモリ間複写制御装置１では、残り複写サイズに応じて、最大のデータ幅の副複写サイズで複写処理を実行することができる。例えば、上記の説明の従来のメモリ間複写制御装置において、アクセスアドレス「０００００００１」から「００００００２２」に８バイトのデータを複写する場合、１バイト、２バイト、４バイト、１バイトの４回の読み出しと、２バイト、４バイト、２バイトの３回の書き込みが必要であった。これを本発明に係るメモリ間複写制御装置で実行すれば、８バイト１回の読み出しと、８バイト１回の書き込みで複写処理を終了する。
【００５５】
このように、本発明によれば、最大のデータ幅を用いて複写処理を行うことができるため、複写処理の高速化が可能となる。
次に、本発明に係るメモリ間複写処理プログラムについて説明する。本発明に係るメモリ間複写処理プログラムを実行するコンピュータは、メモリ間複写制御装置として機能する。図３は、本発明の実施の形態のメモリ間複写処理プログラムによる処理手順を示したフローチャートである。
【００５６】
コンピュータは、外部から複写指示が入力されると、本発明に係るメモリ間複写処理プログラムによって、以下の処理を実行する。
［ステップＳ１］  複写指示に含まれる複写元サイズ（初期値）、複写元アドレス（初期値）、複写先アドレス（初期値）を用いて、残り複写サイズ、処理単位ごとの複写元アドレス、複写先アドレスを初期化する。
【００５７】
［ステップＳ２］  残りの複写サイズをチェックし、そのデータ量に応じて処理を分岐する。残り複写サイズが８バイト以上であれば、処理をステップＳ３へ進める。残り複写サイズが７バイトから４バイトであれば、処理をステップＳ４へ進める。残り複写サイズが３バイトまたは２バイトであれば、処理をステップＳ５へ進める。残り複写サイズが１バイトであれば、処理をステップＳ６へ進める。
【００５８】
［ステップＳ３］  残り複写サイズが８バイト以上の場合、データ幅（副複写サイズ）を８バイトとして８バイト複写処理を行う。すなわち、８バイトのデータ読み出しと、８バイトのデータ書き込みを行う。
【００５９】
［ステップＳ４］  残り複写サイズが７から４バイトの場合、データ幅（副複写サイズ）を４バイトとして４バイト複写処理を行う。すなわち、４バイトのデータ読み出しと、４バイトのデータ書き込みを行う。
【００６０】
［ステップＳ５］  残り複写サイズが３または２バイトの場合、データ幅（副複写サイズ）を２バイトとして２バイト複写処理を行う。すなわち、２バイトのデータ読み出しと、２バイトのデータ書き込みを行う。
【００６１】
［ステップＳ６］  残り複写サイズが１バイトの場合、データ幅（副複写サイズ）を１バイトとして１バイト複写処理を行う。すなわち、１バイトのデータ読み出しと、１バイトのデータ書き込みを行う。
【００６２】
［ステップＳ７］  所定のデータ幅（副複写サイズ）での複写処理が終了し、残り複写サイズ、複写元アドレスおよび複写先アドレスを更新する。そして、残り複写サイズをチェックし、サイズが０かどうかによって処理を続行するか、終了するかを判定する。０である場合には、処理を終了する。０でない場合には、ステップＳ２に戻って、次の処理を行う。
【００６３】
以上の説明のように、本発明によれば、複写処理の分岐ルーチンは、８バイト複写処理、４バイト複写処理、２バイト複写処理および１バイト複写処理の４種類であり、分岐のための判定も、残り複写サイズとデータ幅とを比較するだけである。このため、分岐判定のための処理時間を短縮することができるほか、処理ルーチンのためのメモリ量を少なくすることができる。また、最大のデータ幅が選択され複写処理を行うため、複写処理の高速化が可能となる。
【００６４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、メモリ間複写制御装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【００６５】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００６６】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。
【図面の簡単な説明】
【００６７】
【図１】本発明を適用したメモリ間複写制御装置の動作原理を示す説明図である。
【図２】本発明の実施の形態のメモリ間複写制御装置の構成図である。
【図３】本発明の実施の形態のメモリ間複写処理プログラムによる処理手順を示したフローチャートである。
【図４】アライメント制約について示した図である。
【図５】従来のメモリ間複写処理手順を示したフローチャートである。
【符号の説明】
【００６８】
１  メモリ間複写制御装置
２  メモリアクセス装置
３  メモリ
１０  複写制御手段
１１  副複写サイズ算出手段
１１ａ  副複写サイズ保持手段
１２  複写アドレス算出手段
１３  複写元アドレス算出手段
１３ａ  複写元アドレス保持手段
１３ｂ  加算器
１４  複写先アドレス算出手段
１４ａ  複写先アドレス保持手段
１４ｂ  加算器
１５  リクエスト発行手段
１６ａ  残り複写サイズ保持手段
１６ｂ  減算器
【図１】
2005084763.tif 000003
【図２】
2005084763.tif 000004
【図３】
2005084763.tif 000005
【図４】
2005084763.tif 000006
【図５】
2005084763.tif 000007