(57)【特許請求の範囲】
【請求項１】
中央処理装置と、データを記憶する主記憶装置と、仮想アドレスを実アドレスに変換するための変換情報を保持するアドレス変換表と、前記アドレス変換表の変換情報の一部を保持するＴＬＢが組み込まれた前記主記憶装置のデータを読み出して複数の計算機を接続する交換網に送信する送信装置と、前記アドレス変換表の変換情報の一部を保持するＴＬＢが組み込まれた前記交換網からのデータを受信して前記主記憶装置に書き込む受信装置とが実装された複数の計算機を有し、前記複数の計算機間で、データ転送元及び転送先のアドレスを前記仮想アドレスで指定して前記主記憶装置のデータを前記交換網を介して互いに転送するとともに、前記計算機内の前記送信装置及び前記受信装置の内部で、データ転送元及び転送先の仮想アドレスに対応する変換情報を前記アドレス変換表から前記ＴＬＢに登録し、該ＴＬＢに登録した変換情報を用いて前記仮想アドレスから前記実アドレスへのアドレス変換を行う仮想アドレス間データ転送方式において、
前記送信装置は、当該送信装置が実装された計算機内の主記憶装置のデータを他の計算機内の受信装置に送信する場合、当該送信装置が実装された計算機内の主記憶装置からデータを読み出すことと平行して、前記他の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報を前記他の計算機内のＴＬＢに事前登録することを指示することを特徴とする仮想アドレス間データ転送方式。
【請求項２】
前記受信装置は、当該受信装置が実装された計算機内の主記憶装置のデータを要求元の計算機の主記憶装置に転送するリモートリード命令を該要求元の計算機内の送信装置から指示された場合、当該受信装置が実装された計算機内の主記憶装置からのデータ読み出しと平行して、前記要求元の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報を前記要求元の計算機内のＴＬＢに事前登録することを指示することを特徴とする請求項１に記載の仮想アドレス間データ転送方式。
【請求項３】
前記送信装置及び前記受信装置は、前記主記憶装置における予め決められた記憶空間の大きさであるページ毎に前記アドレス変換を行うことを特徴とする請求項２に記載の仮想アドレス間データ転送方式。
【請求項４】
前記送信装置は、当該送信装置が実装された計算機内の主記憶装置のデータを他の計算機内の受信装置に送信する場合、データ送信開始時に前記他の計算機内の受信装置に対して前記ＴＬＢへの事前登録を指示し、更に、前記他の計算機内の前記主記憶装置の転送先の仮想アドレスがページ境界越えを起こした時にも、該他の計算機内の受信装置に対して前記ＴＬＢへの事前登録を指示することを特徴とする請求項３に記載の仮想アドレス間データ転送方式。
【請求項５】
前記送信装置は、他の計算機の主記憶装置内のデータを前記送信装置が実装された計算機内の主記憶装置を転送先として転送するために、他の計算機に転送要求を送信する際、転送要求元である前記転送先の仮想アドレスがページ境界越えを起こした場合に、他の計算機の受信装置に対してアドレス変換情報の事前登録を指示するフラグをパケットに付加した転送要求を送信し、前記他の計算機の受信装置は、前記先読みを指示するフラグがパケットに付加されている場合にのみ、前記転送要求を送信した計算機の受信装置に対して前記ＴＬＢへの事前登録を指示するパケットを送信することを特徴とする請求項３または請求項４に記載の仮想アドレス間データ転送方式。
【請求項６】
前記送信装置は、前記ＴＬＢへの事前登録を指示する際に、データ転送先の仮想アドレスを含むＴＬＢ先読みパケットを送信することを特徴とする請求項１乃至５のいずれか１項に記載の仮想アドレス間データ転送方式。
【請求項７】
前記受信装置は、前記ＴＬＢへの事前登録を指示する際に、データ転送先の仮想アドレスを含むＴＬＢ先読みパケットを送信することを特徴とする請求項２乃至６のいずれか１項に記載の仮想アドレス間データ転送方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送元及び転送先のアドレスを仮想アドレスで指定して互いにデータ転送を行う複数の計算機を有する仮想アドレス間データ転送方式に関し、特に、各計算機内の送信装置及び受信装置が、仮想アドレスを実アドレスに変換するための変換情報の一部を保持するＴＬＢをそれぞれ具備し、前記ＴＬＢに保持された変換情報を用いて仮想アドレスを実アドレスに変換する仮想アドレス間データ転送方式に関する。
【０００２】
【従来の技術】
近年、単一のプロセッサの処理能力を超える処理が計算機システムに要求され、更に、計算機システムに要求される処理能力の向上分が単一のプロセッサの性能向上分をも上回る傾向にある。
【０００３】
このため、計算機システムとして、複数のＣＰＵを使用し、複数のＣＰＵでメモリ空間を共有するメモリ共有型のマルチプロセッサ装置が、より広範囲に使用されつつある。
【０００４】
しかしながら、メモリ共有型のマルチプロセッサ装置においては、プロセッサに組み込まれているメモリアクセス性能の向上のためのキャッシュ間の整合性、いわゆるキャッシュ・コヒーレンシを維持しようとすると、その他の性能が低下する場合があり、特に大規模のマルチプロセッサ装置でその傾向が高い。このため、メモリ共有型のマルチプロセッサ装置においては、メモリ空間を共有するプロセッサの台数を無制限に増加できないという第１の問題がある。
【０００５】
前記第１の問題を解決するために、研究用途等に用いる大規模数値演算装置として、複数の計算機を交換網で接続することにより、複数の計算機でメモリ空間を共有する必要がないマルチ計算機装置が使用されている。最近では、一般の計算機においても、キャッシュの整合性を保証しない複数の計算機を交換網で接続したマルチ計算機装置を利用する機会が増えている。
【０００６】
しかしながら、上記のマルチ計算機装置においては、複数の計算機のそれぞれで処理したデータを別の計算機に転送する必要があるため、データ量が増加した場合には、データ処理をするためのプロセッサにおける計算機間のデータ転送に消費する時間が増加し、マルチ計算機装置全体としての処理性能が低下するという第２の問題が発生する。
【０００７】
前記第２の問題を解決するために、前記マルチ計算機装置においては、各計算機内にデータ転送専用の転送装置を組み込み、前記転送装置によりプロセッサが一度に処理するデータサイズよりも大きな単位でデータ転送を行うことで、転送性能を向上させるとともにプロセッサがデータ転送に消費する時間を短縮し、マルチホスト装置全体の性能を向上させる装置が開発されている。
【０００８】
一方、オペレーティング・システムは、初期は小型で簡単な構成であったが、最近は大型で複雑な構成となってきており、ユーザー・プロセスからオペレーティング・システム・プロセス（ＯＳプロセス）に対して、上記のデータ転送を依頼する時のプロセス間の移行のためのコンテキストスイッチのオーバーヘッドを無視することができないという第３の問題がある。
【０００９】
前記第３の問題を解決するために、データ転送時の転送元／転送先アドレスをユーザ・プロセスのアドレス空間である仮想アドレスで指定し、上記の転送装置にて仮想アドレスを実アドレスに変換する方式が開発されている。
【００１０】
前記方式によれば、データ転送指示を行う度に、毎回オペレーティングシステムに仮想アドレスを実アドレスに変換する依頼の必要性を無くすことが可能となるため、コンテキストスイッチの頻度を下げることが可能となる。
【００１１】
前記転送装置は、仮想アドレスを実アドレスに変換するための変換情報を保持するアドレス変換機能を備えるが、仮想アドレス全体の変換情報は巨大であるため、転送装置内に仮想アドレス全体の変換情報を保持するアドレス変換表を実装することは困難であるという第４の問題がある。
【００１２】
前記第４の問題を解決するため、転送装置の外部に、仮想アドレス全体の変換情報を保持するアドレス変換表を配置し、前記転送装置内に、アドレス変換表の中から最近使用された一部の仮想アドレスに対する変換情報のみを保持する小さなアドレス変換表、すなわちＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋ  ａｓｉｄｅ  ｂｕｆｆｅｒ）を組み込んだ方式が広く使用されている。
【００１３】
【発明が解決しようとする課題】
しかしながら、ＴＬＢを使用した方式では、ＴＬＢ内に必要な仮想アドレスの変換情報が保持されていない場合、すなわちＴＬＢミスである場合は、転送装置外部のアドレス変換表から必要な変換情報を読み出す必要があるが、前記読み出し速度が低速であるため、アドレス変換を高速に行うことができないことにより、ＴＬＢミス時の性能が低下するという第５の問題がある。
【００１４】
さらに、データ転送開始時や、仮想アドレスの管理単位であるページ境界越えを起こした時には、ＴＬＢミスを発生する可能性が高いため、仮想アドレス間のデータ転送機能を使用する際の性能低下が発生するという第６の問題がある。
【００１５】
前記第５の問題及び第６の問題を解決するため、仮想アドレスを用いてデータ転送を行う仮想アドレス間転送の性能を、物理アドレスを用いてデータ転送を行う物理アドレス間転送の性能と同等にする方式が望まれている。
【００１６】
本発明は、前記第５の問題及び第６の問題を解決するため、転送データがデータの受信装置に届く前にアドレス変換情報の先読み要求を事前に送信することにより、アドレス変換に要する時間をデータ送信部のデータ読み出し時間の中に隠蔽し、アドレス変換を見かけ上高速に実行し、データ転送に要する時間を短縮するとともに、データ転送開始時及びページ境界越え時にＴＬＢミスが発生する可能性を低減させる仮想アドレス間データ転送方式を提供することを目的とする。
【００１７】
【課題を解決するための手段】
前記目的を達成するために本発明は、中央処理装置と、データを記憶する主記憶装置と、仮想アドレスを実アドレスに変換するための変換情報を保持するアドレス変換表と、前記アドレス変換表の変換情報の一部を保持するＴＬＢが組み込まれた前記主記憶装置のデータを読み出して交換網に送信する送信装置と、前記アドレス変換表の変換情報の一部を保持するＴＬＢが組み込まれた前記交換網からのデータを受信して前記主記憶装置に書き込む受信装置とが実装された複数の計算機を有し、前記複数の計算機間で、データ転送元及び転送先のアドレスを前記仮想アドレスで指定して前記主記憶装置のデータを前記交換網を介して互いに転送するとともに、前記計算機内の前記送信装置及び前記受信装置の内部で、データ転送元及び転送先の仮想アドレスに対応する変換情報を前記アドレス変換表から前記ＴＬＢに登録し、該ＴＬＢに登録した変換情報を用いて前記仮想アドレスから前記実アドレスへのアドレス変換を行う仮想アドレス間データ転送方式において、前記送信装置は、当該送信装置が実装された計算機内の主記憶装置のデータを他の計算機内の受信装置に送信する場合、当該送信装置が実装された計算機内の主記憶装置からデータ読み出しと平行して、前記他の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報を前記他の計算機内のＴＬＢに事前登録することを指示することを特徴とする。
【００１８】
また、要求元となる他の計算機内の送信装置から、自計算機内の主記憶装置のデータを前記要求元計算機内の主記憶装置に転送するリモート・リード命令を受け付けた前記受信装置は、前記自計算機内の主記憶装置からのデータ読み出しと平行して、前記要求元の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報を前記要求元の計算機内のＴＬＢに事前登録することを指示することを特徴とする。
【００１９】
また、前記送信装置及び前記受信装置は、前記主記憶装置における予め決められた記憶空間の大きさであるページ毎に前記アドレス変換を行うことを特徴とする。
【００２０】
また、前記送信装置は、当該送信装置が実装された計算機内の主記憶装置のデータを他の計算機内の受信装置に送信する場合、データ送信開始時に前記他の計算機内の受信装置に対して前記ＴＬＢへの事前登録を指示し、更に、前記他の計算機内の前記主記憶装置の転送先の仮想アドレスがページ境界越えを起こした時にも、該他の計算機内の受信装置に対して前記ＴＬＢへの事前登録を指示することを特徴とする。
【００２１】
また、要求元となる他の計算機内の送信装置から、自計算機内の主記憶装置のデータを前記要求元計算機内の主記憶装置に転送するリモート・リード命令を受け付けた前記受信装置は、前記要求元の計算機の仮想アドレスがページ境界越えを起こした時に、該要求元の計算機内の受信装置に対して前記ＴＬＢへの事前登録を指示することを特徴とする。
【００２２】
また、前記送信装置は、前記ＴＬＢへの事前登録を指示する際に、計算機間に専用線を設けて行う方式、あるいはデータ転送先の仮想アドレスを含むＴＬＢ先読みパケットを交換網を通して前記受信装置に送信する。
【００２３】
また、前記受信装置は、前記ＴＬＢへの事前登録を指示する際に、計算機間に専用線を設けて行う方式、あるいはデータ転送先の仮想アドレスを含むＴＬＢ先読みパケットを交換網を通して前記受信装置に送信する。
【００２４】
（作用）
本発明においては、データ送信元の計算機内の送信装置において、データ送信先の計算機内の受信装置に対してデータを送信する場合、データ送信元の計算機内の主記憶装置からのデータ読み出しと平行して、データ送信先の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報をＴＬＢへ事前登録することを指示することにより、データ送信元の計算機における主記憶装置からのデータ読み出しと、データ送信先の計算機におけるアドレス変換表からＴＬＢへの変換情報の読み出しとが並行して行われることになるため、データ受信装置におけるアドレス変換のためのアドレス変換表読み出しが、データ送信装置におけるデータ読み出し時間に隠蔽されるため、見かけ上のアドレス変換時間が短縮され、データ転送にかかる総所要時間が短縮される。
【００２５】
【発明の実施の形態】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２６】
（第１の実施の形態）
図１は、本発明の仮想アドレス間データ転送方式の第１の実施の形態を示す図である。
【００２７】
図１に示すように本実施形態においては、交換網６００を介して互いにデータ交換を行う計算機７００ａ，７００ｂ（以下、それぞれ「計算機１」「計算機２」と称する場合もある）が設けられている。
【００２８】
以下に、計算機７００ａの内部構成について説明する。なお、図１においては、計算機７００ｂの内部構成が省略されているが、計算機７００ｂの内部構成も計算機７００ａと同様である。
【００２９】
計算機７００ａは、種々の命令を処理する中央処理装置であるＣＰＵ１００と、種々の命令及びデータを保持する主記憶装置３００と、交換網６００を介して他計算機７００ｂとの間でデータを送受信する転送装置４００と、ＣＰＵ１００、主記憶装置３００及び転送装置４００に接続され、主記憶装置３００へのデータの書き込み及び読み出しを行うシステム制御装置２００と、転送装置４００に接続され、データ転送元及び転送先の論理アドレス（仮想アドレス）を物理アドレス（実アドレス）に変換するための変換情報として実アドレスベース５１１（図３、図４等参照）を保持するアドレス変換表５００とから構成されている。
【００３０】
図２を参照して転送装置４００の構成について説明する。
【００３１】
転送装置４００は、交換網６００を介して他計算機７００ｂにデータを送信する送信装置４１０と、他計算機７００ｂから交換網６００を介して送信されてきたデータを受信する受信装置４２０とから構成されている。
【００３２】
送信装置４１０及び受信装置４２０には、アドレス変換表５００内部のアドレス変換表エントリのうち最近使用された一部のアドレス変換表エントリをアドレス変換に使用した仮想アドレスの一部である仮想アドレスベースと共にＴＬＢエントリとして保持するアドレス変換用バッファＴＬＢ４３０，４４０がそれぞれ組み込まれている。ＴＬＢはアドレス変換用の小容量のバッファを示し、Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ  Ａｓｉｄｅ  Ｂｕｆｆｅｒの頭文字の略号である。以降ではＴＬＢをアドレス変換バッファを示すものとして使用する。
【００３３】
図３を参照して転送装置４００内の送信装置４１０の構成について説明する。
【００３４】
送信装置４１０は、システム制御装置を経由して主記憶装置３００からのデータを登録するデータバッファ４１１と、ＣＰＵ１００からの転送指示をシステム制御装置１００を経由して登録する転送指示処理部４１２と、ユーザプロセスの仮想アドレスで指定された転送元アドレスを、主記憶装置３００上のアドレスである実アドレスに変換するアドレス変換用バッファＴＬＢ４３０と、転送指示処理部４１２からの仮想アドレスとＴＬＢ内の各エントリの仮想アドレスベース４３１を比較し、一致した場合には実アドレスベース４３２から実アドレスを生成して転送指示処理部４１２に返却し、不一致の場合にはアドレス変換表５００内の対応する実アドレスベースを読み出し、前記転送指示処理部から受け取った仮想アドレスと前記アドレス変換表５００から読み出した実アドレスベース５１１を１組のＴＬＢエントリとしてＴＬＢに登録し、再度ＴＬＢを索引した後に一致した仮想アドレスベース４３１を持つＴＬＢエントリの実アドレスベース４３２から実アドレスを生成し転送指示処理部４１２に返却する、ＴＬＢ４３０内に実装されているアドレス比較部４３３と、転送指示処理部４１２から指示された実アドレスの主記憶装置３００上のデータをシステム制御装置２００を経由して読み出す要求を発行するデータ読出部４１８と、転送指示処理部４１２からの指示とデータバッファ４１１から受け取ったデータからパケットを生成し、交換網６００に出力するデータ出力部４１７とから構成されている。
【００３５】
データバッファ４１１は、主記憶装置３００から読み出されたデータをシステム制御装置２００を経由して受け付け、一時的に保持し、前記読み出されたデータをデータ出力部４１７に転送する。
【００３６】
転送指示処理部４１２は、ＣＰＵ１００からの転送指示をシステム制御装置２００を経由して受け付け、前記転送指示を命令８００に保持する。命令８００は命令コード８０１、転送先仮想アドレス（ＲＶ）４１３、転送回数４１４（ＬＥＮ）、転送元仮想アドレス（ＳＶ）４１５、及び宛先計算機番号（ＤＳＴ）４１６から構成される。転送指示処理部４１２は命令８００に従ってデータ出力部４１７に転送パケットの生成及び交換網６００への出力を指示する。
【００３７】
また、転送指示処理部４１２は、予め決められたデータ長分のデータを転送回数４１４で指示された回数分転送するまでの間、１パケット分のデータを転送する度に転送先仮想アドレス４１３及び転送元仮想アドレス４１５を再計算する。なお、転送先仮想アドレス４１３及び転送元仮想アドレス４１５の再計算は、あらかじめ定められた１パケットのデータ転送長を元に再計算され、例えば１回のデータ転送長を６４バイトとすると、新仮想アドレス＝（旧仮想アドレス＋６４）により計算する。
【００３８】
ＴＬＢ４３０は、転送指示処理部４１２内の転送元仮想アドレス４１５を実アドレスに変換するために、アドレス変換表５００内のアドレス変換表エントリである実アドレスベース５１１の一部のアドレス変換表エントリと、前記アドレス変換表エントリである実アドレスベース４４２を読み出す際に使用した仮想アドレスの一部である仮想アドレスベースを１組とするＴＬＢエントリとして保持する。各ＴＬＢエントリは、仮想アドレスの一部である仮想アドレス・ベース４３１及び実アドレスの一部である実アドレス・ベース４３２として保持される。
【００３９】
アドレス比較部４３３は、ＴＬＢ４３０の仮想アドレス・ベース４３１と転送元仮想アドレス４１５の一部である仮想アドレス・ベースとを比較し、該比較結果に基づいてＴＬＢヒット／ミスを判定する。転送元仮想アドレス４１５の一部である仮想アドレス・ベースと一致するＴＬＢエントリが仮想アドレス・ベース４３１に登録されていた場合をＴＬＢヒットとし、登録されていない場合をＴＬＢミスとする。
【００４０】
データ読出部４１８は、アドレス比較部４３３にてＴＬＢヒットと判定された場合に、ＴＬＢ４３０の実アドレス・ベース４３２と転送元仮想アドレス４１５の一部であるオフセットとから実アドレスを生成し、主記憶装置３００の前記生成された実アドレスからのデータ読み出しをシステム制御装置２００に要求する。
【００４１】
データ出力部４１７は、転送指示処理部４１２にて受け付けられた命令８００に従い、データバッファ４１１からデータ出力部４１７に転送されるデータと、転送指示処理部４１２内の命令コード８０１と、転送先アドレス４１３と、転送元アドレス４１５と、宛先計算機番号４１６とを用いてリモート・ライト・パケット、リモート・リード・パケット及びＴＬＢ先読みパケットを生成し、交換網６００に送信する。なお、リモート・ライト・パケット、リモート・リード・パケット及びＴＬＢ先読みパケットについての詳細な説明は後述する。
【００４２】
図３を参照して、アドレス変換表５００について説明する。
【００４３】
アドレス変換表５００は複数のアドレス変換表エントリから構成され、アドレス変換表エントリは実アドレスベース５１１を保持する。複数の実アドレスベース５１１はそれそれの実アドレスベース番号が付けられ、送信装置４１０あるいは受信装置４２０からの実アドレスベース読み出し要求内の仮想アドレスベースを実アドレスベース番号として実アドレスベースを読み出し、読み出した実アドレスベースを返却される。
【００４４】
図４を参照して転送装置４００内の受信装置４２０の構成について説明する。
【００４５】
受信装置４２０は、交換網６００からの転送されてきたパケットのデータを受け取るデータバッファ４２１と、交換網６００から転送されてきたパケットのデータ以外の部分を受け取り、受け取ったパケット内の命令項目の内容がリモートライト命令であった場合には、宛先仮想アドレスをＴＬＢ４４０を使用して実アドレスに変換し、該変換した実アドレスに対してデータバッファ４２１が交換網６００から受け取ったデータをメモリアクセス部４２３を経由してシステム制御装置２００に主記憶装置３００に書き込むことを指示し、前記受け取ったパケット内の命令項目の内容がリモートリード命令であった場合には、メモリアクセス部４２３に対してシステム制御装置２００を経由して主記憶装置３００内のデータの読み出しを指示し、前記読み出したデータを交換網出力部４２５を経由して交換網６００に転送することを指示し、前記受け取ったパケット内の命令項目がＴＬＢ先読みであった場合には、前記受け取ったパケット内の宛先仮想アドレスを実アドレスに変換することをＴＬＢ４４０に指示し、前記仮想アドレスを実アドレスに変換するためのＴＬＢエントリを事前に登録することを指示するコマンドアドレスバッファ４２２と、コマンドアドレスバッファ４２２からの指示によりデータバッファ４２１からのデータをシステム制御装置２００を経由して主記憶装置３００にライトするか、システム制御装置２００を経由して主記憶装置３００内のデータを読み出し、前記読み出したデータをアドレス・コマンド・バッファ４２２に返却するメモリアクセス部４２３と、コマンド・アドレスバッファ４２２からの指示により交換網６００にパケットを出力する交換出力部４２５と、コマンド・アドレスバッファ４２２の指示により仮想アドレスを実アドレスに変換するＴＬＢ４４０とから構成されている。
【００４６】
ＴＬＢ４４０はコマンド・アドレス・バッファ４２２からの指示によりＴＬＢエントリを検索し、ヒットであればＴＬＢ内の実アドレスベース４４２を用いて実アドレスを生成し、ＴＬＢミスした場合、アドレス変換表５００から読み出した実アドレスベースにより、実アドレスを生成し、前記生成した実アドレスをコマンドアドレスバッファ４２２に返却するアドレス比較部４４３と、仮想アドレスベース４４１と実アドレスベース４４２を１組のＴＬＢエントリとし、複数あるいは単数のＴＬＢエントリを保持するＴＬＢエントリ配列４４４とから構成される。
【００４７】
データバッファ４２１は、他計算機７００ｂから交換網６００を介して送信されてきたデータを受信し、一時的に保持し、前記受信データをメモリアクセス部４２３に転送する。
【００４８】
ＴＬＢ４４０は、コマンドアドレスバッファ４２２に受信された転送先仮想アドレスを実アドレスに変換するために、アドレス変換表５００におけるエントリの一部を保持する。各エントリは、仮想アドレスの一部である仮想アドレス・ベース４４１及び実アドレスの一部である実アドレス・ベース４４２として保持される。
【００４９】
アドレス比較部４４３は、ＴＬＢ４４０の仮想アドレス・ベース４４１とコマンドアドレスバッファ４２２に受信された転送先仮想アドレスの一部である仮想アドレス・ベースとを比較し、その比較結果に基づいてＴＬＢヒット／ミスを判定する。コマンドアドレスバッファ４２２に受信された転送先仮想アドレスの一部である仮想アドレス・ベースと一致するエントリが仮想アドレス・ベース４４１に存在した場合をＴＬＢヒットとし、存在しない場合をＴＬＢミスとする。
【００５０】
メモリアクセス部４２３は、アドレス比較部４３３にてＴＬＢヒットと判定された場合に、ＴＬＢ４４０の実アドレス・ベース４４２とコマンドアドレスバッファ４２２に受信された転送先仮想アドレスの一部であるオフセットとから実アドレスを生成し、主記憶装置３００の実アドレスへのデータ書き込みをシステム制御装置２００に要求する。
【００５１】
交換網出力部４２５は、コマンドアドレスバッファ４２２に受信された転送先仮想アドレス等を用いてリモート・ライト・パケット及びＴＬＢ先読みパケットを生成し、交換網６００に送信する。なお、リモート・ライト・パケット及びＴＬＢ先読みパケットについての詳細な説明は後述する。
【００５２】
図５を参照して、本実施形態における仮想アドレスを実アドレスに変換するアドレス変換動作を説明する。
【００５３】
仮想アドレスを実アドレスに変換する場合は、送信装置４１０及び受信装置４２０にそれぞれ組み込まれているＴＬＢ４３０，４４０を用いる。
【００５４】
ＴＬＢ４３０，４４０は、ＴＬＢエントリ配列４３４，４４４を持ち、複数或いは単数のＴＬＢエントリを仮想アドレス・ベース４３１，４３２、実アドレス・ベース４４１，４４２として保持している。
【００５５】
図５では仮想アドレスがビット３１からビット１３までの１９ビットの仮想アドレスベースとビット１２からビット０までの１３ビットのオフセットで構成されているが、前記ビット数は説明のためであり、仮想アドレスベースとオフセットのビット数及び仮想アドレス全体のビット数は任意のビット数を使用することができる。
【００５６】
ＴＬＢ索引時には、全てのＴＬＢエントリの仮想アドレス・ベース０〜Ｎと、実アドレスに変換しようとする変換対象の仮想アドレスの仮想アドレス・ベースとが比較され、前記変換対象の仮想アドレスの仮想アドレス・ベースと一致するＴＬＢエントリが仮想アドレス・ベース０〜Ｎのいずれかに存在した場合をＴＬＢヒットとし、存在しない場合をＴＬＢミスとする。
【００５７】
ＴＬＢヒットの場合は、上記の一致したＴＬＢエントリ内の実アドレス・ベースを変換後の実アドレスの実アドレス・ベースとし、前記変換対象の仮想アドレスの下位１３ビットのオフセットを変換せずにそのまま上記の実アドレス・ベースと結合したものを変換後の実アドレスとする。
【００５８】
一方、ＴＬＢミスの場合は、アドレス変換表５００内のアドレス変換表エントリの中から前記変換対象仮想アドレスの仮想アドレスベースの値を実アドレスベース番号とし、アドレス変換表エントリを読み出し、前記読み出したアドレス変換表エントリの実アドレスベース５１１をＴＬＢ４３０，４４０のＴＬＢエントリに登録した後、再度ＴＬＢ４３０，４４０を索引して前記アドレス変換を行う。前記ＴＬＢエントリ登録後のアドレス再度のアドレス変換は、エントリ登録済みであるため、必ずＴＬＢヒットとなる。
【００５９】
次に、図６を参照して、アドレス変換表５００におけるアドレス変換表エントリをＴＬＢ４３０，４４０のＴＬＢエントリに登録する動作について説明する。
【００６０】
アドレス変換表５００におけるアドレス変換表エントリ（図６では「実アドレス・ベース１〜Ｎ」）を変換対象の仮想アドレスの仮想アドレス・ベースを実アドレスベース番号として索引し、前記仮想アドレス・ベースに対応する実アドレス・ベース５１１を読み出す。
【００６１】
続いて、ＴＬＢ４３０，４４０のＴＬＢエントリからＬＲＵ等の予め決められた手順でＴＬＢエントリを選択し、前記選択されたＴＬＢエントリに、前記読み出された実アドレス・ベースと該実アドレス・ベースの読み出しに用いた仮想アドレス・ベースとを１組のＴＬＢエントリとして登録する。本ＴＬＢエントリ登録動作により、ＴＬＢ４３０，４４０の値が更新される。
【００６２】
なお、登録ＴＬＢエントリの選択方法としては、ランダム、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）、或いはラウンドロビン等の幾つかの方法を用いることができる。
【００６３】
また、アドレス変換表５００は、転送装置４００を使用するユーザ・プロセスによる初期化時に、図示しない経路で更新される。
【００６４】
次に、図７を参照して、自計算機のデータを他計算機に書き込むリモート・ライト動作について説明する。
【００６５】
図７は計算機１のデータを計算機２に書き込む場合のリモート・ライト動作を示す。
【００６６】
まず、計算機１のＣＰＵ１００及び計算機２のＣＰＵ１００は、計算機１、計算機２内のそれぞれのアドレス変換表５００に、データ転送を命令する各プロセスのアドレス変換に必要となるアドレス変換表５００内の実アドレス・ベース５１１を設定する（順序１）。
【００６７】
次に、計算機１のＣＰＵ１００は、送信装置４１０に対してリモート・ライト命令を、転送指示装置４１２内の命令８００に、命令コード８０１、転送元仮想アドレス４１５、転送先仮想アドレス４１３、及びデータ転送長４１４、宛先計算機番号４１６として設定する（順序２）。
【００６８】
次に、計算機１の送信装置４１０は、順序２で設定された転送先仮想アドレスを仮想アドレスとして含むＴＬＢ先読みパケットを生成し、計算機２の受信装置４２０へ転送することにより、計算機２の受信装置４２０にＴＬＢ先読みを要求する（順序３）。
【００６９】
次に、計算機１の送信装置４１０は、順序２で設定された転送元仮想アドレスをＴＬＢ４３０を使用して転送元実アドレスに変換する（順序４）
また、順序４においては、計算機２の受信装置４２０は、順序３で計算機１の送信装置４１０から転送されてきたＴＬＢ先読みパケットを受信し、前記ＴＬＢ先読みパケット内の仮想アドレスでＴＬＢ４４０を索引して仮想アドレスを実アドレスに変換する。
【００７０】
順序４におけるＴＬＢ索引がＴＬＢミスである場合、計算機１の送信装置４１０はアドレス変換表５００の実アドレス・ベース５１１の中から転送元仮想アドレスに対応する実アドレス・ベースを読み出し、該読み出した実アドレス・ベースと前記転送元仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４３０に登録し、再度ＴＬＢ４３０を索引してアドレス変換を行う（順序５）。ＴＬＢエントリ登録後のＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する。
【００７１】
また、順序５においては、計算機２の受信装置４２０は、順序４におけるＴＬＢ索引がＴＬＢミスである場合、アドレス変換表５００の実アドレス・ベース５１１の中から仮想アドレスに対応する実アドレス・ベースを読み出し、読み出した実アドレス・ベースと仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４４０に登録し、再度ＴＬＢ４４０を索引してアドレス変換を行う。前記ＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する。
【００７２】
次に、計算機１の送信装置４１０は、システム制御装置２００を経由して主記憶装置３００の転送元実アドレスから書き込みデータを読み出す（順序６）。
【００７３】
次に、計算機１の送信装置４１０は、順序２で設定された転送先仮想アドレスと、順序６で読み出した書き込みデータとを含むリモート・ライト・パケットを生成し、計算機２の受信装置４２０へ転送する（順序７）。
【００７４】
次に、計算機２の受信装置４２０は、順序７で計算機１の送信装置４１０から転送されたリモート・ライト・パケットを受信し、該リモート・ライト・パケット内の転送先仮想アドレスでＴＬＢ４４０を索引し、転送先仮想アドレスを転送先実アドレスに変換する（順序８）。
【００７５】
順序８におけるＴＬＢ索引がＴＬＢミスである場合、計算機２の受信装置４２０はアドレス変換表５００の実アドレス・ベース５１１の中から転送先仮想アドレスに対応する実アドレス・ベースを読み出し、読み出した実アドレス・ベースと転送元仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４４０に登録し、再度ＴＬＢ４４０を索引してアドレス変換を行う。前記ＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する（順序９）。
【００７６】
順序７で受信されたリモート・ライト・パケット内の書き込みデータを計算機２の受信装置４２０がシステム制御装置２００を経由して主記憶装置３００の転送先実アドレスに書き込む（順序１０）。
【００７７】
なお、計算機１の送信装置４１０と計算機２の受信装置４２０との間では、コマンド及びデータがパケット単位で転送される。
【００７８】
図８を参照して、計算機１，２間で転送されるパケットの形式を説明する。
【００７９】
本実施形態においては、リモート・リード・パケットと、リモート・ライト・パケットと、ＴＬＢ先読みパケットとの３つのパケット形式を定義する。
【００８０】
図８（ａ）は、リモート・ライト・パケットのパケット形式を示す。
【００８１】
リモート・ライト・パケットは、命令項目の命令がＷｒｉｔｅ、命令項目のデータ長がデータ項目の個数である４、計算機項目が本パケットの送信（発信）計算機番号及び受信（宛先）計算機番号、アドレス項目が転送先仮想アドレス、データ項目が４つの転送データである。データ項目の数は転送するデータ項目の個数によって代わり、本実施形態におけるデータ項目の個数４は一例である。
【００８２】
図８（ｂ）は、リモート・リード・パケットのパケット形式を示す。
【００８３】
リモート・リード・パケットは、命令項目の命令がＲｅａｄ、命令項目のデータ長が１、計算機項目が本パケットの送信（発信）計算機番号及び受信（宛先）計算機番号、アドレス項目が転送元仮想アドレス、データ項目が転送先仮想アドレスである。
【００８４】
図８（ｃ）は、ＴＬＢ先読みパケットのパケット形式を示す。
【００８５】
ＴＬＢ先読みパケットは、命令項目の命令がＴＬＢ、データ長が０、計算機項目が本パケットの送信（発信）計算機番号及び受信（宛先）計算機番号、アドレス項目が仮想アドレスであり、データ項目は存在しない。
【００８６】
図８（ｄ）は、図８（ａ）〜（ｃ）に示した各パケットによる命令の動作を示す。
【００８７】
リモート・ライト・パケットは、命令発行元の計算機のデータを宛先計算機へ転送する。
【００８８】
また、リモート・リード・パケットは、宛先計算機のデータを命令発行元の計算機内に転送する。
【００８９】
また、ＴＬＢ先読みパケットは、宛先計算機の受信装置に対し、仮想アドレスでＴＬＢを索引し、ＴＬＢミスの場合はアドレス変換表５００から必要な変換情報を読み出し、ＴＬＢ４４０に登録するよう命令する。
【００９０】
次に、図９を参照して、他計算機からデータを読み出し、前記データを自計算機に書き込むリモート・リード動作について説明する。
【００９１】
図９は、計算機２からデータを読み出し、前記データを計算機１に書き込む場合のリモート・リード動作を説明する。
【００９２】
まず、計算機１のＣＰＵ１００及び計算機２のＣＰＵ１００は、計算機１，計算機２内のそれぞれのアドレス変換表５００に、各プロセスのアドレス変換に必要となる実アドレス・ベース５１１を設定する（順序１）。
【００９３】
次に、計算機１のＣＰＵ１００は、送信装置４１０に対してリモート・リード命令を、転送指示装置４１２内の命令８００に、命令コード８０１、転送元仮想アドレス４１５、転送先仮想アドレス４１３、及びデータ転送長４１４、宛先計算機番号４１６として設定する（順序２）。
【００９４】
次に、計算機１の送信装置４１０は、順序２で設定された命令８００内の命令コード８０１、宛先計算機番号４１６、転送元仮想アドレス４１５及び転送先仮想アドレス４１３を含むリモート・リード・パケットを生成し、計算機２の受信装置４２０へ交換網６００を経由して転送する（順序３）。
【００９５】
次に、計算機２の受信装置４２０は、順序３で計算機１の送信装置４１０から転送されてきたリモート・リード・パケットを受信し、前記リモート・リード・パケット内の転送先仮想アドレスを宛先仮想アドレスとして含むＴＬＢ先読みパケットを生成し、前記リモート・リード・パケットの送信元である計算機１へ転送する（順序４）。
【００９６】
次に、計算機２の受信装置４２０は、順序４で受信したリモート・リード・パケット内の転送元仮想アドレスでＴＬＢ４４０を索引して転送元仮想アドレスを転送元実アドレスに変換する（順序５）。
【００９７】
また、順序５においては、計算機１の受信装置４２０は、順序４で計算機２の受信装置４２０から転送されてきたＴＬＢ先読みパケットを受信し、前記ＴＬＢ先読みパケット内の宛先仮想アドレスでＴＬＢ４３０を索引して仮想アドレスを実アドレスに変換する。
【００９８】
順序５におけるＴＬＢ索引がＴＬＢミスであった場合、計算機１の受信装置４２０はアドレス変換表５００の実アドレス・ベース５１１の中から転送元仮想アドレスに対応する実アドレス・ベースを読み出し、前記読み出した実アドレス・ベースと仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４３０に登録し、再度ＴＬＢ４３０を索引してアドレス変換を行う（順序６）。前記ＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する。
【００９９】
また、順序６においては、計算機２の受信装置４２０は、順序５におけるＴＬＢ索引がＴＬＢミスであった場合、アドレス変換表５００の実アドレス・ベース５１１の中から仮想アドレスに対応する実アドレス・ベースを読み出し、読み出した実アドレス・ベースと転送元仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４４０に登録し、再度ＴＬＢ４４０を索引してアドレス変換を行う。前記ＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する。
【０１００】
次に、計算機２の受信装置４２０は、システム制御装置２００を経由して主記憶装置３００の前記アドレス変換後の転送元実アドレスから転送データを読み出す（順序７）。
【０１０１】
次に、計算機２の受信装置４２０は、順序４で受信したリモート・リード・パケット内の転送先仮想アドレスと、順序７で主記憶装置３００から読み出した転送データとを含むリモート・ライト・パケットを生成し、リモート・リード・パケットの送信元である計算機１へ転送する（順序８）。
【０１０２】
次に、計算機１の受信装置４２０は、順序８で計算機２の受信装置４２０から転送されてきたリモート・ライト・パケットを受信し、前記リモート・ライト・パケット内の転送先仮想アドレスでＴＬＢ４３０を索引し、転送先仮想アドレスを転送先実アドレスに変換する（順序９）。
【０１０３】
順序９におけるＴＬＢ索引がＴＬＢミスであった場合、計算機１の受信装置４２０はアドレス変換表５００の実アドレス・ベース５１１の中から転送先仮想アドレスに対応する実アドレス・ベースを読み出し、読み出した実アドレス・ベースと転送先仮想アドレスの仮想アドレス・ベースとを１組のＴＬＢエントリとしてＴＬＢ４３０に登録し、再度ＴＬＢ４３０を索引してアドレス変換を行う（順序１０）。前記ＴＬＢ再索引は、必要な仮想アドレス・ベースを登録した直後に行われるため、ＴＬＢヒットとなり、アドレス変換が完了する。
【０１０４】
その後、計算機１の受信装置４２０は、順序８で受信したリモート・ライト・パケット内の読み出しデータをシステム制御装置２００を経由して主記憶装置３００の前記アドレス変換後の転送先実アドレスに書き込む（順序１１）。
【０１０５】
図１０を参照して、送信装置４１０の動作について詳細に説明する。
【０１０６】
まず、転送指示処理部４１２がＣＰＵ１００からの転送命令８００を受け付け（ステップＳ１１０）、前記転送命令８００を、命令コード８０１、転送先仮想アドレス（ＲＶ）４１３、転送回数４１４（ＬＥＮ）、転送元仮想アドレス（ＳＶ）４１５、及び宛先計算機番号（ＤＳＴ）４１６として保持する。
【０１０７】
次に、転送指示処理部４１２に受け付けられた転送指示がリモート・ライト命令であるか否かが判断され（ステップＳ１２０）、リモート・ライト命令である場合、データ出力部４１７は、転送指示処理部４１２内の転送先仮想アドレス４１３及び宛先計算機番号４１６と、自計算機の送信計算機番号とを含むＴＬＢ先読みパケットを生成し、交換網６００に送信する（ステップＳ１３０）。前記ＴＬＢ先読みパケットは、交換網６００により宛先計算機番号４１６の他計算機内の受信装置４２０に転送される。
【０１０８】
次に、アドレス比較部４３３は、転送指示処理部４１２内の転送元仮想アドレス４１５でＴＬＢ４３０を索引し（ステップＳ１４０）、前記索引がＴＬＢミスであるか否かを判定する（ステップＳ１５０）。ＴＬＢ索引時、アドレス比較部４３３は、転送元仮想アドレス４１５の一部である仮想アドレス・ベースと、ＴＬＢ４３０の仮想アドレス・ベース４３１とを比較し、前記比較結果が全てのＴＬＢエントリにおいて不一致であった場合はＴＬＢミスと判定し、一致したＴＬＢエントリがある場合はＴＬＢヒットと判定する。
【０１０９】
ステップＳ１５０にてＴＬＢミスと判定されると、図６に示したように、アドレス変換表５００の実アドレス・ベース５１１の中から転送元仮想アドレス４１５に対応する実アドレス・ベースが読み出され、読み出された実アドレス・ベースと転送元仮想アドレス４１５の一部である仮想アドレス・ベースとが、それぞれ実アドレス・ベース４３２及び仮想アドレス・ベース４３１に１組のＴＬＢエントリとして登録される（ステップＳ１６０）。ＴＬＢエントリ登録後に再度、ＴＬＢ４３０を索引すると、必要な仮想アドレス・ベースを登録した直後であるため、ＴＬＢヒットとなる。
【０１１０】
ステップＳ１５０或いはステップＳ１６０にてＴＬＢヒットと判定されると、データ読出部４１８は、図５に示したように、ＴＬＢ４３０の実アドレス・ベース４３２のうち転送元仮想アドレス４１５の仮想アドレス・ベースに一致した実アドレス・ベースと、転送元仮想アドレス４１５の一部であるオフセットとから、転送元実アドレスを生成し、システム制御装置２００を経由して主記憶装置３００の前記転送元実アドレスから転送データを読み出し、データバッファ４１１に登録する（ステップＳ１７０）。
【０１１１】
次に、データ出力部４１７は、データバッファ４１１内の転送データと、転送指示処理部４１２内の転送先仮想アドレス４１３及び宛先計算機番号４１６と、自計算機の送信計算機番号とを含むリモート・ライト・パケットを生成し、交換網６００に送信する（ステップＳ１８０）。前記リモート・ライト・パケットは、交換網６００を経由して宛先計算機番号４１６の他計算機内の受信装置４２０に転送される。
【０１１２】
ステップＳ１８０における転送が終了すると、転送指示処理部４１２は、転送回数４１４を１減算して転送回数４１４を更新し（ステップＳ１９０）、更新した転送回数４１４が０よりも大きいか否かを判断する（ステップＳ２００）。
【０１１３】
ステップＳ２００にて転送回数４１４が０である場合は転送命令を終了し、また、転送回数４１４が０よりも大きい場合、すなわち転送命令を継続する場合は、転送先仮想アドレス４１３及び転送元仮想アドレス４１５を１パケットのデータ長を加算することで更新した後（ステップＳ２１０）、ステップＳ１４０における処理に戻る。例えば、１パケットのデータ長が１６バイトの場合、新仮想アドレス＝（旧仮想アドレス＋１６）により更新する。
【０１１４】
一方、ステップＳ１２０にて転送指示処理部４１２に受け付けられた転送命令がリモート・ライト命令ではなく、リモート・リード命令であると判断された場合、データ出力部４１７は、転送指示処理部４１２内の転送先仮想アドレス４１３、転送元仮想アドレス４１５及び宛先計算機番号４１６と、自計算機の送信計算機番号とを含むリモート・リード・パケットを生成し、交換網６００に送信する（ステップＳ３００）。前記リモート・リード・パケットは、交換網６００により宛先ホスト番号４１６の他計算機内の受信装置４２０に転送される。
【０１１５】
ステップＳ３００における転送が終了すると、転送指示処理部４１２は、転送回数４１４を１減算して転送回数４１４を更新し（ステップＳ３１０）、更新した転送回数４１４が０よりも大きいか否かを判断する（ステップＳ３２０）。
【０１１６】
ステップＳ３２０にて転送回数４１４が０である場合は転送命令を終了し、また、転送回数４１４が０よりも大きい場合、すなわち転送命令を継続する場合は、転送先仮想アドレス４１３及び転送元仮想アドレス４１５を１パケットのデータ長を加算することで更新した後（ステップＳ３３０）、ステップＳ３００における処理に戻る。例えば、１パケットのデータ長が１６バイトの場合、新仮想アドレス＝（旧仮想アドレス＋１６）により更新する。
【０１１７】
図１１を参照して、受信装置４２０の動作について詳細に説明する。
【０１１８】
まず、コマンドアドレスバッファ４２２が交換網６００からパケットを受信する（ステップＲ１１０）。
【０１１９】
次に、コマンドアドレスバッファ４２２に受信されたパケットがリモート・リード・パケットであるか否かが判断され（ステップＲ１２０）、リモート・リード・パケットである場合、交換網出力部４２５は、リモート・リード・パケット内の発信元計算機番号及び転送先仮想アドレスをそれぞれ宛先計算機番号及び仮想アドレスとして含むＴＬＢ先読みパケットを生成し、交換網６００に送信する（ステップＲ１３０）。前記ＴＬＢ先読みパケットは、交換網６００により宛先計算機番号の他計算機内の受信装置４２０に転送される。
【０１２０】
次に、アドレス比較部４４３は、リモート・リード・パケット内の転送元仮想アドレスでＴＬＢ４４０を索引し（ステップＲ１４０）、前記索引がＴＬＢミスであるか否かを判定する（ステップＲ１５０）。ステップＲ１５０のＴＬＢ索引時、アドレス比較部４４３は、リモート・リード・パケット内の転送元仮想アドレスの一部である仮想アドレス・ベースと、ＴＬＢ４４０の仮想アドレス・ベース４４１とを比較し、前記比較結果が全てのＴＬＢエントリにおいて不一致であった場合はＴＬＢミスと判定し、一致したＴＬＢエントリがある場合はＴＬＢヒットと判定する。
【０１２１】
ステップＲ１５０にてＴＬＢミスと判定された場合は、図６に示したように、アドレス変換表５００の実アドレス・ベース５１１の中からリモート・リード・パケット内の転送元仮想アドレスに対応する実アドレス・ベースが読み出され、読み出された実アドレス・ベースとリモート・リード・パケット内の転送元仮想アドレスに対応する仮想アドレスの一部である仮想アドレス・ベースとが、それぞれ実アドレス・ベース４４２及び仮想アドレス・ベース４４１に１組のＴＬＢエントリとして登録される（ステップＲ１６０）。前記ＴＬＢエントリ登録後、再度、ＴＬＢ４４０を索引すると、必要な仮想アドレス・ベースを登録した直後であるため、ＴＬＢヒットとなる。
【０１２２】
ステップＲ１５０或いはステップＲ１６０にてＴＬＢヒットと判定されると、メモリアクセス部４２３は、図５に示したように、ＴＬＢ４４０の実アドレス・ベース４４２のうちリモート・リード・パケット内の転送元仮想アドレスの仮想アドレス・ベースに一致した実アドレス・ベースと、リモート・リード・パケット内の転送元仮想アドレスの一部であるオフセットとから、転送元実アドレスを生成し、システム制御装置２００を経由して主記憶装置３００の前記転送元実アドレスから転送データを読み出す（ステップＲ１７０）。
【０１２３】
交換網出力部４２５は、主記憶装置３００から読み出した転送データと、宛先計算機番号（リモート・リード・パケット内の発信計算機番号）と、リモート・リード・パケット内の転送先仮想アドレスとを含むリモート・ライト・パケットを生成し、交換網６００に送信する（ステップＲ１８０）。前記リモート・ライト・パケットは、交換網６００により宛先計算機番号の計算機内の受信装置４２０に転送される。
【０１２４】
以上で、リモート・リード・パケットの処理が完了する。
【０１２５】
一方、ステップＲ１２０にてコマンドアドレスバッファ４２２に受信されたパケットがリモート・リード・パケット以外であると判断された場合、そのパケットがリモート・ライト・パケットであるか否かが判断される（ステップＲ３００）。
【０１２６】
ステップＲ３００にてコマンドアドレスバッファ４２２に受信されたパケットがリモート・ライト・パケットであると判断された場合、アドレス比較部４４３は、リモート・ライト・パケット内の転送先仮想アドレスでＴＬＢ４４０を索引し（ステップＲ３１０）、前記索引がＴＬＢミスであるか否かを判定する（ステップＲ３２０）。前記ＴＬＢ索引時、アドレス比較部４４３は、リモート・ライト・パケット内の転送先仮想アドレスの一部である仮想アドレス・ベースと、ＴＬＢ４４０の仮想アドレス・ベース４４１とを比較し、前記比較結果が全てのＴＬＢエントリにおいて不一致であった場合はＴＬＢミスと判定し、一致したエントリがある場合はＴＬＢヒットと判定する。
【０１２７】
ステップＲ３２０にてＴＬＢミスと判定された場合は、図６に示したように、アドレス変換表５００の実アドレス・ベース５１１の中からリモート・ライト・パケット内の転送先仮想アドレスに対応する実アドレス・ベースが読み出され、読み出された実アドレス・ベースとリモート・ライト・パケット内の転送先仮想アドレスの一部である仮想アドレス・ベースとがそれぞれ実アドレス・ベース４４２及び仮想アドレス・ベース４４１に１組のＴＬＢエントリとして登録される（ステップＲ３３０）。ＴＬＢ４４０の再索引では、必要な仮想アドレス・ベースを登録した直後であるため、ＴＬＢヒットとなる。
【０１２８】
ステップＲ３２０或いはステップＲ３３０にてＴＬＢヒットと判定されると、メモリアクセス部４２３は、ＴＬＢ４４０の実アドレス・ベース４４２のうちリモート・ライト・パケット内の転送先仮想アドレスの仮想アドレス・ベースに一致した実アドレス・ベースと、リモート・ライト・パケット内の転送先仮想アドレスの一部であるオフセットとから、図５に示したように転送先実アドレスを生成し、システム制御装置２００を経由して主記憶装置３００の前記転送先実アドレスにデータバッファ４２１内の転送データをメモリアクセス部４２３に転送し、メモリアクセス部４２３はシステム制御装置２００を経由して主記憶装置３００に書き込む（ステップＲ３４０）。
【０１２９】
以上で、リモート・ライト・パケットの処理が完了する。
【０１３０】
一方、ステップＲ３００にてコマンドアドレスバッファ４２２に受信されたパケットがリモート・ライト・パケットでなく、ＴＬＢ先読みパケットであると判断された場合、アドレス比較部４４３は、ＴＬＢ先読みパケット内の仮想アドレスでＴＬＢ４４０を索引し（ステップＲ４００）、前記索引がＴＬＢミスであるか否かを判定する（ステップＲ４１０）。前記ＴＬＢ索引時、アドレス比較部４４３は、ＴＬＢ先読みパケット内の仮想アドレスの仮想アドレス・ベースと、ＴＬＢ４４０の仮想アドレス・ベース４４１とを比較し、前記比較結果が全てのＴＬＢエントリにおいて不一致であった場合はＴＬＢミスと判定し、一致したエントリがある場合はＴＬＢヒットと判定する。
【０１３１】
ステップＲ４１０にてＴＬＢミスと判定された場合は、図６に示したように、アドレス変換表５００の実アドレス・ベース５１１の中からＴＬＢ先読みパケット内の仮想アドレスに対応する実アドレス・ベースが読み出され、読み出された実アドレス・ベースとＴＬＢ先読みパケット内の仮想アドレスの一部である仮想アドレス・ベースとが、それぞれ実アドレス・ベース４４２及び仮想アドレス・ベース４４１に１組のＴＬＢエントリとして登録される（ステップＲ４２０）。
【０１３２】
以上で、ＴＬＢ先読みパケットの処理が完了する。
【０１３３】
（第２の実施の形態）
上述した第１の実施形態においては、送信装置４１０は、ＣＰＵ１００からのリモート・ライト指示を受け付けた後、データ送信開始時にのみＴＬＢ先読みパケットを送信し、また、受信装置４２０は、全てのリモート・リード・パケットに対してＴＬＢ先読みパケットを送信している。
【０１３４】
しかしながら、データ送信開始時にのみＴＬＢ先読みパケットを送信する構成では、アドレス変換をページと呼ばれる予め決められた主記憶空間の大きさ毎に行う場合に、データ送信中に仮想アドレス・ベースが変化する時、即ちページ境界越え時にＴＬＢミスとなる可能性が高いため、ページ境界越え時にデータ転送速度が低下する問題がある。
【０１３５】
また、全てのリモート・リード・パケットに対してＴＬＢ先読みパケットを送信する構成では、交換網の帯域幅の浪費、及びＴＬＢ索引頻度の無意味な増加を引き起こす問題がある。
【０１３６】
本実施形態は、前記２つの問題を解決するために、送信装置４１０は、データ送信開始時、及びデータ転送先の仮想アドレスがページ越えをした時に、ＴＬＢ先読みパケットを送信し、また、受信装置４２０は、データ転送先の仮想アドレスがページ越えをした時にのみ、リモート・リード・パケットに対してＴＬＢ先読みパケットを送信する構成とすることで、ページ境界越え時の性能低下、交換網帯域幅浪費及びＴＬＢ索引頻度増の問題を解消するものである。
【０１３７】
図１２に、第１の実施形態からの相違点を明確にするために、送信装置４１０内の転送指示処理部４１２の転送先仮想アドレス計算部分のみを示す。
【０１３８】
第１の実施形態における転送指示処理部４１２は、転送先仮想アドレス４１３と１パケットのデータ長であるパケット当たりのデータ長７１０とを仮想アドレス加算部７１１で加算し、仮想アドレス加算部７１１の出力を転送先仮想アドレス４１３としている。
【０１３９】
これに対して、本実施形態における転送指示処理部４１２は、仮想アドレス加算部７１１の出力を転送先仮想アドレス４１３とするとともに、ページ境界越え検出信号７１２としてデータ出力部４１７に入力する。
【０１４０】
すなわち、転送先仮想アドレス４１３がページ境界越えを起こした場合には、更新された転送先仮想アドレス４１３によるＴＬＢ先読み要求をページ境界越え検出信号７１２としてデータ出力部４１７に送信する。
【０１４１】
ページ境界検出機能により、データ出力部４１７は、リモート・ライト命令の最初のリモート・ライト・パケット送信時、あるいは転送指示処理部４１２からのＴＬＢ先読み要求を受け付けた場合にも、ＴＬＢ先読みパケットを交換網６００を経由して宛先計算機に送信する。
【０１４２】
また、データ出力部４１７は、リモート・リード・パケット送信中に、転送指示処理部４１２からのＴＬＢ先読み要求を受け付けた場合には、ＴＬＢ先読み要求フラグをセットしたリモート・リード・パケットを送信し、また、リモート・リード・パケット送信中に、ＴＬＢ先読み要求を受け付けてない場合には、ＴＬＢ先読み要求フラグをセットしないリモート・リード・パケットを送信する。
【０１４３】
ＴＬＢ先読み要求フラグ付きのリモート・リード・パケットを図８（ｅ）に示す。
【０１４４】
図８（ｅ）ではＴＬＢ先読み要求フラグＰＦが命令項目に追加されており、前記ＰＦ＝１のリモート・リード・パケットを受け付けた受信装置４２０は、前記リモート・リード・パケット送信元にＴＬＢの先読みパケットを送信し、前記ＰＦ＝０のリモート・リード・パケットを受け付けた受信装置４２０は前記ＴＬＢ先読みパケットを送信しない。
【０１４５】
第２の実施形態の受信装置４２０の動作を第１の実施形態の相違点のみを示すフローチャートを図１３に示す。なお、図１３において、「Ｒ＋数字」のステップが第１の実施形態のステップを示し、「ＲＸ＋数字」のステップが第２の実施形態で修正されたステップを示す。
【０１４６】
図１３を参照して、第２の実施形態における受信装置４２０の動作を説明する。
【０１４７】
受信装置４２０がリモート・リード・パケットを受信した場合、（ステップＲ１２０）、ステップＲＸ１００において、ＴＬＢ先読み要求フラグＰＦを確認し、前記ＰＦ＝１の場合はステップＲ１３０に遷移する。ステップＲＸ１００において、前記ＰＦ＝０の場合はステップＲ１４０に遷移する。
【０１４８】
【発明の効果】
以上説明したように本発明においては、計算機間のデータを転送する場合、データ送信元の計算機内の主記憶装置からのデータ読み出しと同時に、データ送信先の計算機内の受信装置に対して、データ転送先の仮想アドレスに対応する変換情報をＴＬＢへ事前登録することを指示する構成とし、データ送信元の計算機における主記憶装置からのデータ読み出しと、データ送信先の計算機におけるアドレス変換表からＴＬＢへの仮想アドレス変換情報の読み出しとが並行して行うことにより、データ送信先の計算機でデータが受信されてからアドレス変換情報を読み出しＴＬＢへの登録を行う従来方式と比較して、アドレス変換時間を見かけ上短縮する第１の効果がある。
【０１４９】
更に、データ送信先の計算機におけるＴＬＢ読み出し時間の一部或いは全てが、データ送信元の計算機におけるデータ読み出し時間に隠蔽されることから、データ送信先の計算機内では、受信したデータを一時的に保持するためのデータバッファにてデータがアドレス変換表読み出しを待つ時間が短縮されるため、データ送信先の計算機内でのデータ待ちバッファの容量を縮小することができ、使用するハードウェアの量を削減することができる第２の効果がある。
【０１５０】
また、データ送信元の計算機内の受信装置において、データ送信先の計算機内の送信装置からの指示に従って該データ送信先の計算機内の受信装置に対してデータを送信する場合にも、データ送信元の計算機内の主記憶装置からのデータ読み出しと同時に、データ送信先の計算機内の受信装置に対して、当該データの転送先の仮想アドレスに対応する変換情報をＴＬＢへ事前登録することを指示する構成とすることで、上記と同様の効果が得られる第３の効果がある。
【０１５１】
また、データ送信元の計算機内の送信装置において、データ送信先の計算機内の受信装置にデータを送信する場合、データ送信開始時にデータ送信先の計算機内の受信装置にＴＬＢへの事前登録を指示し、更に、データ送信先の計算機内の主記憶装置の仮想アドレスがページ境界越えを起こした時にもＴＬＢへの事前登録を指示する構成とすることにより、データ送信開始時及びページ境界越え時に、ＴＬＢ内に必要な仮想アドレスの変換情報が登録されていない状態、すなわちＴＬＢミスが発生することによる性能低下の可能性を低減することができるという第４の効果がある。
【０１５２】
また、データ送信元の計算機内の受信装置において、データ送信先の計算機内の送信装置からの指示に従って該データ送信先の計算機内の受信装置に対してデータを送信する場合、データ送信先の計算機内の主記憶装置の仮想アドレスがページ境界越えを起こした時にのみ、ＴＬＢへの事前登録を指示する構成とすることにより、ＴＬＢ索引頻度の過剰な増加を抑制することができるとともに、交換網の帯域幅を低下させることができるという第５の効果がある。
【図面の簡単な説明】
【図１】本発明における仮想アドレス間データ転送方式の第１の実施の形態を示す図である。
【図２】図１に示した転送装置の構成を説明するための図である。
【図３】図２に示した送信装置の構成を説明するための図である。
【図４】図２に示した受信装置の構成を説明するための図である。
【図５】図１に示した仮想アドレス間データ転送方式における、ＴＬＢを用いたアドレス変換動作を説明するための図である。
【図６】図１に示した仮想アドレス間データ転送方式における、アドレス変換表の読み出し動作を説明するための図である。
【図７】図１に示した仮想アドレス間データ転送方式におけるリモート・ライト動作を説明するための図である。
【図８】本発明の仮想アドレス間データ転送方式に用いられるパケットのパケット形式を説明するための図であり、（ａ）はリモート・ライト・パケットのパケット形式を示す図、（ｂ）はリモート・リード・パケットのパケット形式を示す図、（ｃ）はＴＬＢ先読みパケットのパケット形式を示す図、（ｄ）は（ａ）〜（ｃ）に示した各パケットによる命令の動作を示す図、（ｅ）は先読み指示フラグ付きのリモート・リードパケットを示す図である。
【図９】図１に示した仮想アドレス間データ転送方式におけるリモート・リード動作を説明するための図である。
【図１０】図３に示した送信装置の動作を説明するためのフローチャートである。
【図１１】図４に示した受信装置の動作を説明するためのフローチャートである。
【図１２】本発明の仮想アドレス間データ転送方式の第２の実施の形態に用いられる送信装置内の転送処理部を説明するための図である。
【図１３】本発明の仮想アドレス間データ転送方式の第２の実施の形態に用いられる受信装置の動作を説明するためのフローチャートである。
【符合の説明】
１００    中央処理装置
２００    システム制御装置
３００    主記憶装置
４００    データ転送装置
４１０    送信装置
４１１    送信装置のデータバッファ
４１２    送信装置の転送指示処理部
４１３    転送先仮想アドレス
４１４    転送回数
４１５    転送元仮想アドレス
４１６    宛先計算機番号
４１７    送信装置のデータ出力部
４１８    送信装置のデータ読出部
４３３    送信装置のアドレス比較部
４２０    受信装置
４２１    受信装置のデータバッファ
４２２    受信装置のコマンドアドレスバッファ
４２３    受信装置のメモリアクセス部
４４３    受信装置のアドレス比較部
４２５    受信装置の交換網出力部
４３０    送信装置のＴＬＢ
４３１    送信装置のＴＬＢの仮想アドレス・ベース部
４３２    送信装置のＴＬＢの実アドレス・ベース部
４４０    受信装置のＴＬＢ
４４１    受信装置のＴＬＢの仮想アドレス・ベース部
４４２    受信装置のＴＬＢの実アドレス・ベース部
５００    アドレス変換表
６００    交換網
７００ａ，７００ｂ    計算機
７１０    データ長
７１１    仮想アドレス加算部
７１２    ページ境界越え検出信号
【図１】
0003594082.tif 000002
【図２】
0003594082.tif 000003
【図３】
0003594082.tif 000004
【図４】
0003594082.tif 000005
【図５】
0003594082.tif 000006
【図６】
0003594082.tif 000007
【図７】
0003594082.tif 000008
【図８】
0003594082.tif 000009
【図９】
0003594082.tif 000010
【図１０】
0003594082.tif 000011
【図１１】
0003594082.tif 000012
【図１２】
0003594082.tif 000013
【図１３】
0003594082.tif 000014