(57)【要約】【課題】ページ単位のデータ移動を行うことで、コピー処理にかかる処理時間（ＣＰＵ時間）の短縮を図る。【解決手段】仮想アドレス６０１をもとに実メモリ６０１，６０２をアクセスするとき、アクセスする毎にドレス変換手段を介して仮想アドレスをアドレス変換して実アドレスを求め、求めた実アドレスをもとに実メモリをアクセスするアドレス変換方式を用いたデータ処理装置であって、前記アドレス変換手段は、ページ管理情報を書き換えるページ管理情報書き換え手段を備え、該ページ情報書き換え手段はデータの異動元及び異動先を管理しているアドレス変換テーブル上のページ管理情報６１５，６１７を書き換え、仮想空間上でページ単位のデータ移動を行う。【選択図】        図６
2004206424.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスをもとに実メモリをアクセスするとき、アクセスする毎にアドレス変換手段を介して仮想アドレスをアドレス変換して実アドレスを求め、求めた実アドレスをもとに実メモリをアクセスするアドレス変換方式を用いたデータ処理装置であって、
前記アドレス変換手段は、ページ管理情報を書き換えるページ管理情報書き換え手段を備え、該ページ情報書き換え手段はデータの異動元及び異動先を管理しているアドレス変換テーブル上のページ管理情報を書き換え、仮想空間上でページ単位のデータ移動を行うことを特徴とするデータ処理装置。
【請求項２】
仮想アドレスをもとに実メモリをアクセスするとき、アクセスする毎にアドレス変換手段を介して仮想アドレスをアドレス変換して実アドレスを求め、求めた実アドレスをもとに実メモリをアクセスするアドレス変換方式を用いたデータ処理装置におけるデータ転送方法であって、
前記アドレス変換手段は、ページ管理情報を書き換えるページ管理情報書き換え手段を備え、
該ページ管理情報書き換え手段は、データの異動元及び異動先を管理しているアドレス変換テーブル上のページ管理情報を書き換え、仮想空間上でページ単位のデータ移動を行うことを特徴とするデータ処理装置におけるデータ転送方法。
【請求項３】
請求項２の記載において、
ページ管理情報書き換え手段による処理は、異動元メモリ及び異動先メモリの容量を比較してページテーブル交換可能性を事前に確認するステップと、
メモリ内にパラメタ領域を準備することが可能か否かを判定し、準備可能な場合には、パラメタとして異動元メモリ先頭仮想アドレス及び異動先メモリ先頭仮想アドレス並びにサイズを設定するステップと、
ソフトウエアまたはハードウエアを用いてページテーブル内のページ管理情報を交換するステップを備えたことを特徴とするデータ処理装置におけるデータ転送方法。
【請求項４】
請求項２の記載において、
ページ管理情報書き換え手段による処理は、異動元メモリ及び異動先メモリの容量を比較してページテーブル交換可能性を事前に確認するステップと、
メモリ内にパラメタ領域を準備することが可能か否かを判定し、準備不可能な場合には、パラメタとして異動元メモリ先頭仮想アドレス及び異動先メモリ先頭仮想アドレス並びにサイズをレジスタに設定するステップと、
ページテーブル内のページ管理情報を交換する命令語を用いてページ管理情報を交換するステップを備えたことを特徴とするデータ処理装置におけるデータ転送方法。
【請求項５】
請求項２ないし請求項４の何れか１の記載において、異動元メモリの先頭仮想アドレス及び異動先メモリの先頭仮想アドレスはそれぞれページ境界アドレスであることをデータ処理装置におけるデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理装置及びデータ処理装置におけるデータ転送方法に係り、特に大量のデータを速やかに移動することのできるデータ処理装置及びデータ処理装置におけるデータ転送方法に関する。
【０００２】
【従来の技術】
主記憶上でデータの移動処理を行うときは、通常データのコピー処理が行なわれる。この処理は移動するデータ量が少量である場合は問題とはならない。しかし、近年、主記憶容量の増大に伴い、主記憶上で扱うデータ量も増大している。移動するデータ量が増大すると主記憶間で行われる大量のデータのコピーに要する処理時間（ＣＰＵ時間）が増大する。特にユーザプログラム等で作成された大量のデータの記録媒体への出力、タスク間でのデータ供用、あるいはジョブステップ間でのデータ共用の場合、システムにより共通領域や入出力用バッファにデータコピーが行なわれる。このデータコピーに要する処理時間はデータ量が増大するにつれて増大し、これらの処理にＣＰＵ処理時間が大幅に費やされることになる。
【０００３】
【発明が解決しようとする課題】
ユーザプログラムが主記憶上に作成したデータをデータ管理を経由して、記録媒体に書き出すとき、オペレーティングシステム（ＯＳ）はユーザプログラムで作成したデータをバッファリング又はブロッキングした後、記録媒体への書き込みを開始するためのデータコピーを行う。しかし、バッファリング又はブロッキングするデータ量が大量になるにつれ、データコピー処理に大量のＣＰＵ時間を費やすことになる。
本発明は、これらの問題点に鑑みてなされたもので、ページ単位のデータ移動を行うことで、データのコピー処理にかかる処理時間（ＣＰＵ時間）の短縮を図ることのできるデータ処理装置及びデータ処理装置におけるデータ転送方法を提供する。
【０００４】
【課題を解決するための手段】
本発明は、上記の課題を解決するために次のような手段を採用した。
【０００５】
仮想アドレスをもとに実メモリをアクセスするとき、アクセスする毎にアドレス変換手段を介して仮想アドレスをアドレス変換して実アドレスを求め、求めた実アドレスをもとに実メモリをアクセスするアドレス変換方式を用いたデータ処理装置であって、前記アドレス変換手段は、ページ管理情報を書き換えるページ管理情報書き換え手段を備え、該ページ情報書き換え手段はデータの異動元及び異動先を管理しているアドレス変換テーブル上のページ管理情報を書き換え、仮想空間上でページ単位のデータ移動を行う。
【０００６】
【発明の実施の形態】
以下、本発明の実施形態を添付図面を参照しながら説明する。図１は、メモリアクセスの概要を説明する図である。プロセスａ（１０１）が仮想アドレスを用いてバッファａ（１０９）をアクセスするとき、アクセスするごとにアドレス変換部（１１２）を介して仮想アドレスをアドレス変換（１０７）し、実アドレス（１０８）を求め、実アドレスをもとにバッファａに対応する実メモリａ（１０９）をアクセスする。プロセスｂ（１０２）も同様にバッファｂ（１１０）を仮想アドレスを用いてアクセスする場合、通常時はアドレス変換部（１１２）でアドレス変換（１０７）を行い、仮想アドレスを実アドレス（１０８）に変換した後、バッファｂに対応する実メモリｂ（１１０）をアクセスする。
【０００７】
アドレス変換部（１１２）で行うアドレス変換（１０７）は、ＯＳ（１１１）で行うこともできる。プロセスｂ（１０２）がバッファｂ（１１０）をアクセスする際、事前にＯＳ内（１１１）でアドレス変換（１０５）を行ない、仮想アドレスを実アドレス（１０６）に変換した後、アドレス変換部（１１２）を用いたアドレス変換（１０７）を行うことなく、バッファｂに対応する実メモリｂ（１１０）を直接アクセスすることができる。
【０００８】
図２は、本発明によるデータ移動処理を適用した計算機を説明する図である。この例では、プロセスａ（２０１）により加工、編集したデータを補助記憶装置（２１１）に出力するプログラムを備えている。
【０００９】
プロセスａ（２０１）が加工、編集したデータを出力（２０３）すると、実メモリａ（２１２）へのブロッキング（データの一時記憶）が行なわれる。実メモリａ（２１２）に対してブロッキングが行なわれる際、仮想アドレスのままでは主記憶装置にデータを書き込めないため、アドレス変換部（２１８）で仮想アドレスをアドレス変換（２０８）することによって、実アドレス（２０９）に変換し、この実アドレスを元に実メモリａ（２１２）に対してデータのブロッキングを行なう。
【００１０】
ブロッキングを行なうと、ブロッキング用のバッファが満杯となる。実際には満杯になった時点で補助記憶装置（２１１）に出力すれば良いが、補助記憶装置（２１１）のＩ／Ｏ時間（入出力時間）は低速であるため、直ぐにデータを出力することはスループットの低下に繋がる。このため、前記補助記憶装置（２１１）へのデータ出力を、バッファの満杯時点とは非同期で行うこととする。
【００１１】
すなわち、前記バッファが満杯となってもプロセスａ（２０１）のデータ出力処理を止めないことが必要である。データ出力処理を止めない方法として、ブロッキング用のバッファに常に空きがあるようにしておくことが必要である。このための方法として、ブロッキング用のバッファを複数面用意し、ブロッキング用バッファが満杯になった時点でバッファの交代（２０４）を行えばよい。バッファの交代（２０４）が行なわれた後に、満杯となったバッファを補助記憶装置（２１１）に出力するために、Ｉ／Ｏ制御（２１０）を非同期で動作させる。
【００１２】
非同期で動作させる方法として、待ち状態になっているプロセスｂ（２０２）に起動通知（２０５）を行う。プロセスｂ（２０２）は、プロセスａ（２０１）からの起動通知（２０５）を受信すると、受信した時点でプロセスｂ（２０２）を起動する。起動したプロセスｂ（２０２）は、起動通知（２０５）をうけた際、満杯となったバッファアドレスを受け取る。次いで、このアドレスから、Ｉ／Ｏ用バッファへのデータコピー（２０６）を行い、Ｉ／Ｏバッファ（２１４）を介して補助記憶装置（２１１）に対する出力要求（２０７）が発行される。入出力制御部（２１７）は、このＩ／Ｏ要求（２０７）をもとに、指定されたＩ／Ｏバッファ（２１４）のアドレスから、補助記憶装置（２１１）へ出力（２１０）を行なう。
【００１３】
プロセスａ（２０１）とプロセスｂ（２０２）は、非同期に動作し、インタフェースとしてバッファアドレスが使用される。プロセスｂ（２０２）は、受け取ったバッファアドレスの内容（２１３）がＩ／Ｏを発行するまでに破壊されないように、直ぐにＩ／Ｏバッファ（２１４）に移動させるために、データのコピー処理を行ない、出力データの保証を行う。このためには、Ｉ／Ｏバッファ（２１４）は複数面用意する場合が多い。また、プロセスａ（２０１）では、データ出力処理で待ちが発生させないために、ブロッキング用のバッファ（２１２，２１３）を複数面用意する場合が多い。
【００１４】
プロセスａ（２０１）及びプロセスｂ（２０２）では共にバッファのコピー処理が実施される。プロセスａ（２０１）ではバッファの交代（２０４）処理が該当し、プロセスｂ（２０２）では、バッファ（２１３）からＩ／Ｏバッファ（２１４）へのコピー（２０６）が該当する。前述のように、コピー処理ではコピーするデータ量が大量になるにつれて処理時間が長くなる。これは、ＣＰＵ性能が向上しても主記憶装置へのアクセスに要するアクセス時間が大きいためである。
【００１５】
図３は、仮想アドレスから実アドレスにアドレス変換する方法を説明する図である。仮想アドレス（３０２）から実アドレス（３０５）を求めるためには、セグメントテーブル（３０３）とページテーブル（３０４）を用いる。セグメントテーブル（３０３）は、主記憶上の大きな領域枠を管理するテーブルであり、各領域枠に対して一つのレコードからなる。セグメントテーブル（３０３）の先頭アドレスは、セグメントテーブル起点（３０１）からポイントされている。セグメントテーブル（３０３）内の個々のレコードは、セグメントテーブル（３０３）内の一つのレコードが管理している主記憶の大きな領域枠を更にページ単位で管理するページテーブル（３０４）の先頭アドレスを指す。
【００１６】
ページテーブル（３０４）は、セグメントテーブル（３０３）と同様に複数のレコードから構成されており、一つのレコードは主記憶の１ページに対応する。仮想アドレス（３０２）は、アドレス自体がセグメントフィールド、ページフィールド、変位フィールドから構成される。セグメントフィールドはセグメントテーブル（３０３）内のカレントのレコード位置を示しており、ページフィールドは同様にページテーブル（３０４）のカレントのレコード位置を示す。変位フィールドは、ページ内のカレント位置を示す。
【００１７】
ある仮想アドレス（３０２）から実アドレス（３０５）を求める場合、初めに仮想アドレス（３０２）をセグメントフィールド、ページフィールド、変位フィールドに分ける。次に、セグメントテーブル（３０３）のカレント位置を求めるために、セグメントフィールドをセグメントテーブル（３０３）のレコード長で倍数化（３０８）する。図３の例ではｎ倍（３０８）することになる。この後セグメントテーブル起点（３０１）の値を加算（３０９）ことにより、セグメントテーブル（３０３）のカレントなレコード位置（３０６）を求めることができる。  次に、ページテーブル（３０４）のカレントなレコード位置を決めるために、仮想アドレス（３０２）のページフィールドをページテーブル（３０４）のレコード長で倍数化（３１０）する。図３の例ではｍ倍（３１０）することになる。このｍ倍した値に、前述で求めたセグメントテーブル（３０３）のカレント位置の値（３０６）であるページテーブル起点を加算（３１１）することによりページテーブル（３０４）のカレントなレコード位置（３０７）を求めることができる。
【００１８】
ページテーブル（３０４）のカレントなレコード位置（３０７）を求めたら、そのレコード内のページアドレス値（３０７）が、実ページのページ番号である。このページ番号に仮想アドレス（３０２）の変位フィールドを加算することにより実アドレス（３０５）を求めることができる。このように、仮想アドレス（３０２）から実アドレス（３０５）を求めることが可能なテーブル構造をアドレス変換テーブルと称する。
【００１９】
図４は、アドレス変換テーブルのページ管理情報であるページテーブルの交換方法の概要を説明する図である。図４の例では４ページ分のバッファａ（４０２）から４ページ分のバッファｂ（４０３）にデータコピー（４０４）が行なわれることを示している。従来の例であれば、移動元であるバッファａ（４０２）内のデータを移動先であるバッファｂ（４０３）にコピー処理（４０４）を行うことでデータの移動が完了するが、この場合は前述のようにコピー処理（４０４）に使用されるＣＰＵ時間が増大する。
【００２０】
本実施形態では、このコピー処理を削減しＣＰＵ時間の消費を抑えるために、バッファ間でのコピー（４０４）処理を行なわず、コピー処理と同等の効果を提供するものである。
【００２１】
バッファ間でのコピー処理（４０４）を行なわずにデータの移動を行うためには、アドレス変換テーブルのページテーブル群（４０１）内で移動元バッファａ（４０２）のページを管理しているページテーブル（４０５）と、移動先バッファｂ（４０３）のページを管理しているページテーブル（４０６）のページ管理情報を交換（４０７）することによりページの移動を完了させることができる。
【００２２】
データの移動処理を開始するときには、移動元であるページテーブル（４０５）と移動先であるページテーブル（４０６）を互いに求める。互いのページテーブルが求まった後は、システムにより移動元バッファａ（４０２）と移動先バッファｂ（４０３）が他タスクにより使用されないように排他制御を行なった後、移動元であるページテーブル（４０５）と移動先であるページテーブル（４０６）のページ管理情報の交換（４０７）を行う。これにより、コピー処理（４０４）を行なうことなくデータの移動を完了することができる。
【００２３】
図５は、ページテーブルにおけるページ管理情報の交換方法を説明する図である。図５（ａ）はページテーブルの情報交換前を示しており、図５（ｂ）はページテーブルの情報交換後を示している。
【００２４】
図５（ａ）は、移動元ページａ（５０３）を移動先ページｂ（５０４）に移動する前の状態を示しており、移動元ページａ（５０３）はページテーブル（５０１）で管理されている。また、移動先ページｂ（５０４）は、ページテーブル（５０２）で管理されている。ページテーブルａ（５０１）及びページテーブルｂ（５０２）は、ページの管理情報としてページ番号を格納する。すなわち、ページテーブルａ（５０１）には移動元ページａ（５０３）の実アドレスａのページ番号を格納し、ページテーブルｂ（５０２）には移動先ページｂ（５０４）の実アドレスｂのページ番号を格納する。ページ番号は、主記憶上の全てのページに対してユニークに管理されている。このためページ番号が重複することはない。
【００２５】
本実施形態におけるデータの移動の方法はページ管理情報であるページ番号のの相互交換（５０５）を行なうことにある。これにより、移動元ページａ（５０３）を移動先ページｂ（５０４）にデータを移動するとき、データのコピーを行うのではなく、移動元ページａ（５０３）を管理しているページテーブル（５０１）と移動先ページｂ（５０４）を管理しているページテーブル（５０２）の情報を入れ替える（５０５）ことのみによりデータの移動が完了することになる。
【００２６】
図５（ｂ）は前述の方法でページテーブルのページ番号を入れ替えた後の状態を示している。図に示すように、移動元と移動先のページテーブル（５０６，５０７）のページ番号を入れ替えたため、入れ替え前には移動元ページａ（５０８）を管理していたページテーブルａ（５０６）には移動先ページｂ（５０９）のページ番号が格納されることになる。また、入れ替え前には移動先ページｂ（５０９）を管理していたページテーブルｂ（５０７）には移動元ページａ（５０８）のページ番号が格納されることになる。
【００２７】
この方法によるデータの移動は、ページ番号の入れ替えのみで実現できる。このため、移動元ページａ（５０８）と移動先ページｂ（５０９）の主記憶上の実アドレスは変更はない。すなわち、移動元ページａ（５０８）を管理していたページテーブル（５０６）は、移動先ページｂ（５０９）のページテーブルとなる。このため、ページテーブルａ（５０６）を経由してデータの存在する主記憶上のメモリを参照しようとすると、ページ番号の入れ替え前では移動元ページａ（５０８）を参照するが、ページ番号の入れ替え後では移動先ページｂ（５０９）を参照することになる。これにより、データが存在している移動元ページａ（５０８）と移動先ページｂ（５０９）間でコピー処理を行なう必要はなくなる。
【００２８】
図６は、仮想アドレスからデータの存在する実アドレスへの参照経路を説明する図である。図６（ａ）は、ページテーブルの入れ替え前の実アドレスの参照経路を示しており、図６（ｂ）は、ページテーブルの入れ替え後の実アドレスの参照経路を示している。
【００２９】
図６（ａ）では、ある仮想アドレス（６０１）が実アドレスａ（６０２）に対応している場合、アドレス変換の過程を辿ると、仮想アドレス（６０１）から該当するセグメントテーブル（６０４）を求め、セグメントテーブル（６０４）から該当するページテーブル（６０５）を求め、更に実アドレスａ（６０２）を管理しているページテーブル（６０７）を求める。これらの情報をもとにアドレス変換を実施したのち、実アドレスを求め実アドレスａ（６０２）を参照することになる。この過程を示したのが矢印（６０６）である。
【００３０】
次に、本実施形態により、実アドレスａ（６０２）のデータを実アドレスｂ（６０３）に（見かけ上）移動させるとする。この結果が図６（ｂ）である。実アドレスａ（６０９）を管理していたページテーブル（６１５）は、実アドレスｂ（６１０）を管理していたページテーブル（６１６）とページ番号を相互交換（６１４）したため、ページテーブル（６１５）の実ページ番号は実アドレスｂ（６１０）を示すことになる。このような状態で前述のアドレス変換の過程を辿ると、仮想アドレス（６０８）から該当するセグメントテーブル（６１１）を求め、セグメントテーブル（６１１）から該当するページテーブル（６１２）を求め、更に実アドレスａを管理するページテーブル（６１５）を求める。これらの情報からアドレス変換を実施する。ここで、前述と異なるのは参照するページテーブル（６１５）は同じ場所であるが、ページテーブル（６１５）のページ番号が異なることである。これはページ番号の相互交換（６１４）の結果である。このためアドレス変換の結果（６１３）、求まる実アドレスは実アドレスｂ（６１０）となる。このため、ページテーブルの相互交換（６１４）を実施した後には、仮想アドレス（６０８）は変わらず、実ページだけが入れ替わったように見えることになる。
【００３１】
図７は、ページテーブルにおけるページ管理情報交換のためのパラメタ及び、ページテーブルにおけるページ管理情報交換のための命令語の形式を示したものである。図７（ａ）は、ページテーブルのページ管理情報の相互交換するためのパラメタ（７０１）であり、パラメタ（７０１）はページ管理情報の交換をソフトウェアで行う場合に用いる。
【００３２】
ページテーブルを相互に交換するためには、バッファサイズ（７０２）、移動元バッファ先頭仮想アドレス（７０３）、移動先バッファ先頭仮想アドレス（７０４）が必要である。これらの情報を格納したパラメタ（７０１）によって、ＯＳ内部でページテーブルの相互交換の処理プログラムを呼び出すことによりページテーブルを相互に交換することができる。
【００３３】
パラメタ（７０１）は、移動対象である仮想領域で連続したデータに対して１個用意する。バッファサイズ（７０２）は移動対象となるデータの総バイト数であり、その値はページ長の倍数値である。なお、バッファサイズ（７０２）はページ数であってもよい。ただし、この場合のページは仮想アドレスで連続した領域でなければならない。移動元バッファ先頭仮想アドレス（７０３）は、移動元の先頭仮想アドレスを指定し、移動先バッファ先頭仮想アドレス（７０４）は、移動先の先頭仮想アドレスを指定する。各々のアドレスは、ページ境界アドレスになっていなければならない。
【００３４】
図７（ｂ）は、ページテーブルの相互交換をハードウェアで実施するための命令語の形式を説明する図である。命令語は２種類用意し、命令語１（７０５）には、パラメタリストアドレス（７０６）のみを指定できるようにする。パラメタリストアドレスには、ソフトウェアで実施できるパラメタ（７０１）と同じ形式のインタフェースを用意し、このアドレスを指定する。
【００３５】
命令語２（７０７）は、パラメタ（７０１）を準備できない場合に使用できるようにするものである。領域サイズ、移動元バッファ先頭アドレス、移動先バッファ先頭アドレスを汎用レジスタで指定できるようにする。アドレスは移動元アドレス、移動先アドレスの両方とも仮想アドレスを指定する。これらの命令語を発行することで、ハードウェア内部で（見かけ上の）データの移動が行なわれることになる。これらの方法を準備することで、ソフトウェアあるいはハードウェアのいずれの方法を用いてもデータ移動を実現することができる。
【００３６】
図８は、データ移動処理を説明する図であり、データの移動を要求する処理プログラム側の処理フローを示している。まず、ステップ８０１において、データ移動を要求する処理プログラムは、処理対象の移動元バッファ（５０１）と移動先バッファ（５０２）のバッファの確認を行う。この確認は、移動対象である移動元（５０１）のバッファ長がページ長の倍数であるか、連続した領域であるか、あるいは移動先（５０２）のバッファサイズに収まるデータ量であるか等のページテーブルにおけるページ管理情報を相互交換するための事前確認である。ここでページ管理情報の相互交換の対象となるバッファが存在すればステップ８０９に進み、そうでなければ処理を終了する。
【００３７】
次に、ステップ８０９以降において、相互交換の要求を発行する方法を決める。図７に示すように相互交換の要求を発行するする方法は３通り存在する。図８に示すフローでは、３通りの発行方法の何れかを選択するものとしている。まず、ステップ８０９において、相互交換に際してパラメタ（７０１）を使用するものとパラメタ（７０１）を使用しないもので２通りに分別が可能である。パラメタを使用する方法はパラメタ領域を準備することが可能な場合であり、パラメタを使用しない方法は、パラメタ領域を準備できない場合が該当する。ここで、パラメタ（７０１）領域を準備することが可能な場合はステップ８０２に進み、そうでない場合はステップ８０３に進む。
【００３８】
ステップ８０２において、移動元（５０１）及び移動先（５０２）の仮想アドレスとサイズをパラメタ（７０１）に設定する。ステップ８１０において、相互交換要求を発行する方法として、ソフトウェアで相互交換する方法とハードウェアで相互交換するための命令語１（７０５）を発行する方法の何れかを選択する。ここで、ソフトウェアで相互交換の要求を発行するする方法を選択した場合はステップ８０４に進み、ハードウェアで相互交換するための命令語１（７０５）を発行する（８０５）方法を選択した場合はステップ８０５に進む。なお、前記ソフトウェアでページテーブルにおけるページ管理情報の相互交換の要求を発行する方法はソフトウェア内で特殊な制御を必要とするような場合に使用すると効果的である。また、ハードウェアで命令１（７０５）を使用して相互交換の要求を発行するする方法はソフトウェア内で特殊な制御は不要で純粋にデータ移動を目的とする場合に使用すると効果的である。ここで言う特殊な制御は、主にメモリ管理方式であるページテーブルをソフトウェア内で制御するプログラムを指す。ステップ８０４において、ソフトウエアによるページ管理情報の相互交換を要求する。ステップ８０５において、命令語１（７０５）を発行してハードウェアによる相互交換を要求する。
【００３９】
前記ステップ８０９でパラメタ（７０１）を使用しない場合または使用できない場合は、ステップ８０３において、汎用レジスタに移動元（５０１）及び移動先（５０２）の仮想アドレスとサイズを設定し、ステップ８０６において、命令語２（７０７）を発行して相互交換の要求を行う。
【００４０】
前記何れの相互交換の要求を発行する方法を用いても交換処理の完了報告が発せられる。ステップ８０７において、この完了報告を受信し、ページテーブルのページ管理情報の相互交換が正常に終了したか否かを確認する。正常に終了した場合、データ移動が完了し、移動前の移動元（５０１）バッファと移動先（５０２）バッファは、ページテーブルの管理情報が交換されて、図５（ｂ）に示す状態が完成する。ステップ８０７において相互交換が正常に終了したことを確認した場合はステップ８０１に進み、そうでない場合はステップ８０８に進む。ステップ８０８において、処理を中断する。この際、エラー処理として、障害発生メッセージを出力する。また、異常終了時のダンプ出力等を行う。また、全ての対象バッファに対する処理が正常終了した場合は、処理を終了させる。
【００４１】
図９は、ページテーブルにおけるページ管理情報の交換処理を説明する図である。交換処理は、図７で示すパラメタ（７０１）あるいは命令語２（７０７）のレジスタに格納した情報を元にして処理を行う。この処理はソフトウェアあるいはハードウェアの双方で行うことができる。
【００４２】
まず、ステップ９０１において、前記パラメタ（７０１）からバッファサイズを求める。命令語２（７０７）を使用している場合は第１オペランドで指定された領域サイズの汎用レジスタから求めることができる。ステップ９０２において、求めたバッファサイズがページ長の整数倍であるか確認を行う。整数倍でない場合、ページ単位の情報交換ができないため、ステップ９１２においてエラー処理（処理を中断）する。ステップ９０３において、移動元仮想アドレスをパラメタから求める。命令語２（７０７）を使用している場合は第２オペランドで指定された移動元アドレスの汎用レジスタから求める。ステップ９０４において、求めた移動元仮想アドレスの妥当性を確認する。ここでは、指定された仮想アドレスに対する実ページが主記憶上に存在するか確認をする。もし、存在しなければ、指定された仮想アドレスは不当アドレスとなるため、ステップ９１２においてエラー処理する。ステップ９０４で移動元の仮想アドレスの妥当性チェックを完了すると、ステップ９０５において、移動元バッファを管理しているページテーブルの実アドレスを算出する。
【００４３】
ステップ９０６において、移動先仮想アドレスをパラメタから求める。命令語２（７０７）を使用している場合は第３オペランドで指定された移動先アドレスの汎用レジスタから求める。ステップ９０７において、求めた移動先仮想アドレスの妥当性を確認する。ここでは、指定された仮想アドレスに対する実ページが主記憶上に存在するか確認をする。もし、存在しなければ、指定された仮想アドレスは不当アドレスとなるため、ステップ９１２においてエラー処理する。ステップ９０７で移動先の仮想アドレスの妥当性チェックが完了すると、ステップ９０８において、移動先バッファを管理しているページテーブルの実アドレスを算出する。全ての妥当性確認が終了したら、ステップ９０９において、相互交換時に他プロセスからバッファの参照が行なわれないようにするために、システム間ロックを確保する。ロックの確保ができたあとは、ステップ９１０において、交換対象のページを一時的に無効化し、この間にページテーブルの交換処理を行なった後、無効化したページを有効化する。ページテーブルの相互交換が完了したあとは、ステップ９１１において、確保していたシステム間ロックを解除して処理を終了する。
【００４４】
以上説明したように、本実施形態によれば、アドレス変換テーブルのページテーブルにおけるページ管理情報のみを相互交換することで、１ページ単位のデータ移動が行われたのと同じ結果を得ることができる。これにより、従来であればコピーするデータ量が増大するにつれて増大することとなるＣＰＵ時間を大幅に削減することができる。
【００４５】
【発明の効果】
以上説明したように本発明によれば、コピー処理にかかる処理時間（ＣＰＵ時間）の短縮を図ることのできるデータ処理装置及びデータ処理装置におけるデータ転送方法を提供することができる。
【図面の簡単な説明】
【図１】メモリアクセスの概要を説明する図である。
【図２】データ移動処理を適用した計算機を説明する図である。
【図３】仮想アドレスから実アドレスにアドレス変換する方法を説明する図である。
【図４】アドレス変換テーブルのページ管理情報であるページテーブルの交換方法の概要を説明する図である。
【図５】ページテーブルにおけるページ管理情報の交換方法を説明する図である。
【図６】仮想アドレスからデータの存在する実アドレスへの参照経路を説明する図である。
【図７】データ移動処理を説明する図である。
【図８】ページテーブルにおけるページ管理情報の交換処理を説明する図である。
【図９】ページテーブルにおけるページ管理情報の交換処理を説明する図である。
【符号の説明】
１１１，２１６  ＯＳ
１１２，２１８  アドレス変換部
１１３，２１９  主記憶装置
１１４，２１５  計算機
２１１  補助記憶装置
３０１  セグメントテーブル起点
３０２，６０１，６０８  仮想アドレス
３０３，６０４，６１１  セグメントテーブル
３０４  ページテーブル
３０５  実アドレス
４０１  、６０５，６１２  ページテーブル群
４０５，４０６、６０７，６０９，６１５，６１６  ページテーブル
４０２  バッファａ
４０３  バッファｂ
５０１，５０６  ページテーブルａ
５０２，５０７  ページテーブルｂ
５０３，５０８  移動元ページａ
５０４，５０９  移動先ページｂ
【図１】
2004206424.tif 000003
【図２】
2004206424.tif 000004
【図３】
2004206424.tif 000005
【図４】
2004206424.tif 000006
【図５】
2004206424.tif 000007
【図６】
2004206424.tif 000008
【図７】
2004206424.tif 000009
【図８】
2004206424.tif 000010
【図９】
2004206424.tif 000011