JPH09212474A - Method for data transfer between processors and computer system suitable to same - Google Patents

Method for data transfer between processors and computer system suitable to same

Info

Publication number
JPH09212474A
JPH09212474A JP8315848A JP31584896A JPH09212474A JP H09212474 A JPH09212474 A JP H09212474A JP 8315848 A JP8315848 A JP 8315848A JP 31584896 A JP31584896 A JP 31584896A JP H09212474 A JPH09212474 A JP H09212474A
Authority
JP
Japan
Prior art keywords
data
transfer
transfer destination
node
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8315848A
Other languages
Japanese (ja)
Inventor
Naonobu Sukegawa
直伸 助川
Masanao Ito
昌尚 伊藤
Yoshiko Tamaoki
由子 玉置
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP8315848A priority Critical patent/JPH09212474A/en
Publication of JPH09212474A publication Critical patent/JPH09212474A/en
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

PROBLEM TO BE SOLVED: To enable a reception area which is not fixed to be used as a main storage and reduce synchronous processing as well. SOLUTION: A transfer source node 10 transmits data, the virtual address of a data transfer destination area which is not fixed as the main storage, the address of a transfer control flag in use, a comparison value, and a method for comparison. At a reception-side node 210, a network adapter 30 decides that conditions are met according to a semaphore in a transfer control flag 330 specified with the received transfer control flag address and the received comparison value and comparing method. The received virtual address of the transfer destination area and an address conversion table 140 are used to inspect whether or not the transfer destination area 340 that the virtual address indicates is in the main storage 50. When the conditions are not met or when the transfer destination area 340 is not in the main storage 50, the received data are stored in a transfer buffer 370 in an area for an OS. When a reception- side program issues a specific system call or when the program issues a read instruction for data in the transfer destination area and a page fault is caused, the OS transfers the received data from the transfer buffer 370 to the transfer destination area 340.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術の分野】本発明は、それぞれプロセ
ッサを有する複数のノードをデータ転送ネットワークで
接続した計算機システムにおけるデータ転送方法および
それに適した計算機システムに関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data transfer method in a computer system in which a plurality of nodes each having a processor are connected by a data transfer network, and a computer system suitable therefor.

【0002】[0002]

【従来の技術】並列計算機においては、プロセッサ間の
データ転送を高速化することが、システム全体の高速化
につながる。プロセッサ間データ転送の性能を決める要
素としては、(1)データ転送レートと、(2)転送起
動遅延との、2つがある。転送起動遅延とは、データ転
送を開始するのにあたり、必要となるハードウェア/ソ
フトウェア処理のオーバヘッドである。
2. Description of the Related Art In a parallel computer, speeding up data transfer between processors leads to speeding up of the entire system. There are two factors that determine the performance of data transfer between processors: (1) data transfer rate and (2) transfer activation delay. The transfer start delay is an overhead of hardware / software processing required to start data transfer.

【0003】大量のデータを一度に転送する場合には、
データ転送レートを高めることで高速にデータを転送で
きる。しかし、短いデータを繰り返し転送する場合は、
転送起動遅延を小さくしないと、データ転送レートが高
くても性能が出ない。データ転送レートが転送データ幅
など物理的な要因で決まるのに対し、転送起動遅延の大
小は主に転送方法に因ることから、短いデータの転送に
おいては転送方法自体が重要になる。
When transferring a large amount of data at once,
Data can be transferred at high speed by increasing the data transfer rate. However, when repeatedly transferring short data,
If the transfer activation delay is not reduced, the performance will not be obtained even if the data transfer rate is high. While the data transfer rate is determined by a physical factor such as the transfer data width, the size of the transfer start delay mainly depends on the transfer method, and therefore the transfer method itself becomes important in transferring short data.

【0004】現在の並列計算機では、一般にSEND/
RECEIVE型と呼ばれるデータ転送を採用する。S
END/RECEIVE型では、データ送信側のプロセ
ッサが送信要求命令(SEND)を実行すると、転送デ
ータが受信側に送信される。受信側のプロセッサは受信
要求命令(RECEIVE)を実行することで、転送デ
ータを受け入れる。転送データを読み出す領域(転送元
領域)はSEND命令の中で指定し、転送データを書き
込む領域(転送先領域)はRECEIVE命令の中で指
定する。領域の指定方法としては、領域の開始論理アド
レスと転送データサイズを用いるのが一般的である。
In current parallel computers, SEND /
A data transfer called RECEIIVE type is adopted. S
In the END / RECEIVE type, when the processor on the data transmission side executes the transmission request command (SEND), the transfer data is transmitted to the reception side. The processor on the receiving side receives the transfer data by executing the reception request instruction (RECEIVE). The area from which transfer data is read (transfer source area) is specified in the SEND instruction, and the area to which transfer data is written (transfer destination area) is specified in the RECEIVE instruction. As a method for designating an area, it is general to use the start logical address of the area and the transfer data size.

【0005】SEND/RECEIVE型転送には、
(1)送信側は受信側のRECEIVE命令実行のタイ
ミングに依らずにSEND命令が実行できる(非同期転
送)のでプログラムが記述しやすい、(2)受信側がR
ECEIVE命令で書き込み領域を指定するまでデータ
が書き込まれないため送信側のプログラムバグで受信側
のデータが壊される危険性が低い、というメリットがあ
り、ワークステーションクラスタから大規模並列計算機
まで幅広く用いられている。
For SEND / RECEIVE type transfer,
(1) The sending side can execute the SEND instruction regardless of the timing of the receiving side's RECEIVE instruction execution (asynchronous transfer), making it easy to write a program. (2) The receiving side uses R
Since the data is not written until the write area is specified by the ECEIVE command, there is a low risk that the data on the receiving side will be destroyed by a program bug on the transmitting side, which is widely used from workstation clusters to large-scale parallel computers. ing.

【0006】しかし、SEND/RECEIVE型転送
では、データ送信側から送られたデータを受信側のRE
CEIVE命令実行まで転送先領域に書き込めないとい
う問題がある。このためSEND/RECEIVE型転
送では、転送データを受信側ノード内に一旦バッファリ
ングする方法が一般的に採られる。
However, in the SEND / RECEIVE type transfer, the data sent from the data sending side is transmitted to the RE on the receiving side.
There is a problem that the transfer destination area cannot be written until the execution of the CEIVE instruction. Therefore, in the SEND / RECEIVE type transfer, a method of temporarily buffering the transfer data in the receiving side node is generally adopted.

【0007】このバッファリングの簡単な管理方法とし
て、受信側プロセッサで転送データを必ず一旦バッファ
リングし、その内RECEIVE命令が実行されている
データをバッファから転送先領域にコピーするというが
ある。しかし、この方法ではデータ転送に伴い必ずメモ
リコピーが発生し、性能が出ない。
As a simple management method for this buffering, there is a method in which the receiving processor always buffers the transfer data, and the data in which the RECEIVE instruction is executed is copied from the buffer to the transfer destination area. However, in this method, the memory copy is always generated along with the data transfer, and the performance does not appear.

【0008】特開平6−324998は、RECEIV
E命令が実行されてから受信側に到着するデータを転送
先領域に直接書き込み、RECEIVE命令が実行され
る前に到着したデータのみバッファリングする手段につ
いて開示する。これにより、メモリコピーが削減でき、
高い性能が発揮できる。
Japanese Unexamined Patent Publication No. 6-324998 discloses RECEIV.
A means for directly writing the data arriving at the receiving side after the execution of the E instruction to the transfer destination area and buffering only the data arriving before the execution of the RECEIVE instruction is disclosed. This reduces memory copy,
High performance can be demonstrated.

【0009】しかし、特開平6−324998の並列計
算機では、受信側のノードは転送データを受信した時
に、そのデータに対応するRECEIVE命令がすでに
発行されているかいないかをチェックし、更に発行され
ている場合にはそのRECEIVE命令により指定され
た情報を検索し、その情報により指定される転送先領域
に転送データを書き込む必要がある。このように、SE
ND/RECEIVE型では、非同期転送を実現する上
で必要になるハードウェア/ソフトウェア処理が多く、
転送起動遅延は小さくならない。
However, in the parallel computer of Japanese Patent Laid-Open No. 6-324998, when the receiving node receives the transfer data, it checks whether or not the RECEIVE command corresponding to the data has already been issued, and further issues it. If so, it is necessary to retrieve the information specified by the RECEIVE command and write the transfer data in the transfer destination area specified by the information. In this way, SE
In the ND / RECEIVE type, there are many hardware / software processes required to realize asynchronous transfer,
The transfer activation delay does not decrease.

【0010】この問題に対する解決策として、PUT型
データ転送がある。PUT型データ転送では、送信先の
プロセッサの送信要求命令(PUT)の中で転送元領域
だけでなく、転送先領域まで指定する。領域の指定の方
法としては、領域の開始論理アドレスと転送データサイ
ズを用いるのが一般的である。転送起動後は、無条件に
転送先領域にデータを書き込むため、受信側が受信要求
命令を発行する必要が無く、かつ受信データのためのバ
ッファも必要ない。
As a solution to this problem, there is PUT type data transfer. In PUT-type data transfer, not only the transfer source area but also the transfer destination area is specified in the transmission request command (PUT) of the destination processor. As a method of designating an area, it is general to use a start logical address of the area and a transfer data size. After the transfer is started, the data is unconditionally written in the transfer destination area, so that the receiving side does not need to issue the reception request command and the buffer for the received data is not necessary.

【0011】PUT型データ転送では、(1)受信側が
転送データを受け入れられる状態になってから送信側が
PUT命令を実行することをユーザ責任で守る必要があ
る(同期転送)、(2)送信側のプログラムにバグがあ
ると容易に受信側のデータが破壊される、という問題が
ある。しかし、受信側の処理は、転送データのヘッダ情
報に従い転送先領域にデータを書き込むだけであること
から、転送起動遅延が小さくでき、短いデータの転送で
はSEND/RECEIVE型よりも高性能が発揮でき
る。
In PUT type data transfer, (1) it is necessary for the user to protect the execution of the PUT instruction from the transmitting side after the receiving side is ready to accept the transferred data (synchronous transfer), (2) transmitting side There is a problem that if there is a bug in the program, the data on the receiving side will be easily destroyed. However, since the processing on the receiving side only writes the data in the transfer destination area according to the header information of the transfer data, the transfer start delay can be made small, and the performance of the short data transfer can be higher than that of the SEND / RECEIVE type. .

【0012】「PUT/GETインタフェースのハード
ウェアサポートによる並列プログラムの効率的実行」
(並列処理シンポジウムJSPP‘94論文集、pp.
233−240、1994年5月)は、PUT型データ
転送の実施方法を開示している。このPUT命令では、
転送元領域、転送先領域を仮想アドレスで指定する。
"Efficient Execution of Parallel Programs by Hardware Support of PUT / GET Interface"
(Parallel Processing Symposium JSPP'94 Proceedings, pp.
233-240, May 1994) discloses a method of implementing PUT type data transfer. In this PUT instruction,
The transfer source area and transfer destination area are specified by virtual addresses.

【0013】ここで、仮想アドレス管理を行う計算機
で、プロセッサ間のデータ転送を行う場合を考える。主
記憶の実サイズ以上に広い仮想アドレス空間を用意する
場合、もしくは同時に動く複数プロセスが必要とするメ
モリ容量が主記憶のサイズを超える場合、転送元/転送
先領域が主記憶ではなく、ハードディスクなどの外部記
憶装置上に存在する場合があり得る。
Now, consider a case where a computer for managing virtual addresses transfers data between processors. If a virtual address space wider than the actual size of the main memory is prepared, or if the memory capacity required by multiple processes running simultaneously exceeds the size of the main memory, the transfer source / destination area is not the main memory but a hard disk, etc. It may exist on the external storage device of.

【0014】この問題に対し、送信側は、転送元領域が
一部でも外部記憶装置上に存在する場合には、送信動作
を開始せずに、全領域を主記憶までロードした後に転送
を開始するという手順をソフトウェア/ハードウェアで
容易に実現できる。これにより、送信途中で中断するこ
となく、データを送り出せる。しかし、受信側は、デー
タが到着した時点で受信領域の一部もしくは全部が外部
記憶装置上に存在すると、受信動作が行えないことにな
る。これにより、プロセッサ間ネットワーク上にデータ
が保留されると、ネットワークの輻輳が発生し、性能上
問題になる。
In response to this problem, if the transfer source area is partially present in the external storage device, the transmission side does not start the transmission operation but loads the entire area to the main storage and then starts the transfer. This procedure can be easily realized by software / hardware. This allows the data to be sent out without interruption during transmission. However, the receiving side cannot perform the receiving operation if part or all of the receiving area exists in the external storage device at the time when the data arrives. As a result, when data is reserved on the interprocessor network, network congestion occurs, which causes a performance problem.

【0015】特開平6−110845で開示されるよう
に、OSにより転送先領域が必ず主記憶上に存在するこ
とを保証する手段がある(主記憶固定)。これにより、
転送を中断することなくデータを受信できるため、ネッ
トワークの輻輳が防げる。
As disclosed in Japanese Patent Laid-Open No. 6-110845, there is a means for ensuring that the transfer destination area always exists in the main memory by the OS (main memory fixed). This allows
Since data can be received without interrupting the transfer, network congestion can be prevented.

【0016】しかし、PUT型データ転送では、転送デ
ータが到着するまで受信側は転送先領域がどこであるか
判別不能である。このため、大きなデータを受信する可
能性があるデータ領域は、その全体を主記憶固定としな
ければならない。例えば実際には行列データの1列分の
データを受信するだけなのにも拘わらず、受信するデー
タがどの列に属するか判別不能の場合には行列データを
受信する可能性のあるデータ受信領域の全体を主記憶固
定せざるを得ない。これは、仮想メモリ管理の自由度を
著しく妨げる。
However, in the PUT type data transfer, the receiving side cannot determine where the transfer destination area is until the transfer data arrives. For this reason, the data area that may receive a large amount of data must be fixed in the main memory. For example, if it is impossible to determine which column the received data belongs to, even though only one column of the matrix data is actually received, the entire data reception area that may receive the matrix data I cannot help fixing my main memory. This significantly impedes the flexibility of virtual memory management.

【0017】データを受信する可能性のあるデータ領域
の全てを主記憶固定としない技術が、特開平4−291
660に記載されている。ここでは、受信したデータを
格納すべきデータ領域がスワップアウトされていて主記
憶上に無い場合にその領域に格納すべきデータを受信し
たときには、OS管理の受信バッファにそのデータを一
旦バッファリングし、バッファリング終了後に割込みを
ハードウェアが発生する。これを契機にOSが実行中の
プログラムの実行を中断した後で、OS内の割り込み処
理を実行する。この処理の中でこのデータの受信領域を
ページインし、ページインが完了し次第、上記受信バッ
ファ内の受信データをそのデータ受信領域に転送する。
A technique in which the main memory is not fixed to all of the data areas that may receive data is disclosed in Japanese Patent Laid-Open No. 4-291.
660. Here, when the data area for storing the received data is swapped out and is not in the main memory and the data to be stored in the area is received, the data is temporarily buffered in the reception buffer of the OS management. , Hardware generates an interrupt after buffering is completed. With this as an opportunity, the OS interrupts the execution of the program being executed and then executes the interrupt processing in the OS. In this process, the reception area of this data is paged in, and as soon as the page-in is completed, the reception data in the reception buffer is transferred to the data reception area.

【0018】以上の受信領域のスワップアウトの技術と
は別に、PUT型通信を用いた基本的なプログラミング
について、次に述べる。PUT型データ転送を行うシス
テムでは、送信側のプロセッサからデータが書き込まれ
るであろう領域が、そのデータを受信側のプロセッサが
読み出すためには、必ず送信側のプログラムと受信側の
プログラムとで同期をとり、書き込みの終了を保証しな
ければならない。これを行わないと、受信側のプロセッ
サがデータ受信領域を読み出している途中で送信側のプ
ロセッサから書き込まれるなどの不整合が発生する。た
とえば、ノードA内のデータMの内容と、ノードB内の
データNの内容とを交換する場合、ノードAとBのプロ
セッサは、図21に示すようなプログラムを実行する。
各ノードA、BはそれぞれデータM、データNのコピー
を取る命令3000A、3000Bを実行する。これ
は、交換動作の為のPUT命令3020A、3020B
において直接データM,Nに書き込むことを前提とした
からである。このように書き込み先領域を最初に確保
し、その後にノードAとノードBとの間でバリア同期を
取る命令3010A、3010Bを実行する必要があ
る。これを行わないとPUT命令3020A(あるいは
3020B)で書き込まれるべき領域が確保されていな
いうちに、他ノードがPUT命令3020B(あるいは
3020A)を実行し、データを書き込む可能性があ
る。特に大きなデータを転送する場合には、書き込まれ
るべき領域はあらかじめ確保できないことが多く、場合
によってはPUT転送を行う度に、その直前で領域を確
保し、同期をとらなければならない。次に、各ノードで
PUT命令3020A、3020Bを実行する。各ノー
ドは、他ノードから書かれたデータを読み出す前に、再
びバリア同期を取る命令3030A、3030Bを実行
する必要がある。これは、相手からのPUT命令による
データ書き込みが終了したかどうかを知る手段がない為
である。同期後には、双方のノードでのPUT命令の完
了が保証できるため、双方のノードは書き込まれたデー
タ(交換されたデータ)を読み出すことができる。
Aside from the above-mentioned receiving area swap-out technique, basic programming using PUT type communication will be described below. In a PUT-type data transfer system, the area where data is to be written from the processor on the sending side must be synchronized between the program on the sending side and the program on the receiving side in order for the data to be read by the receiving side processor. To guarantee the end of writing. If this is not done, inconsistency will occur, such as writing from the sending processor while the receiving processor is reading the data receiving area. For example, when exchanging the contents of the data M in the node A and the contents of the data N in the node B, the processors of the nodes A and B execute a program as shown in FIG.
The nodes A and B execute the instructions 3000A and 3000B for copying the data M and the data N, respectively. This is a PUT instruction 3020A, 3020B for exchange operation.
This is because it is premised that the data is directly written in the data M and N. Thus, it is necessary to first secure the write destination area and then execute the instructions 3010A and 3010B between the node A and the node B for barrier synchronization. If this is not done, there is a possibility that another node may execute the PUT instruction 3020B (or 3020A) and write data while the area to be written by the PUT instruction 3020A (or 3020B) is not secured. In particular, when transferring a large amount of data, it is often impossible to secure the area to be written in advance, and in some cases, every time PUT transfer is performed, the area must be secured immediately before the PUT transfer to achieve synchronization. Next, the PUT instructions 3020A and 3020B are executed in each node. Each node needs to execute the instructions 3030A and 3030B for obtaining the barrier synchronization again before reading the data written from another node. This is because there is no means for knowing whether or not the data writing by the PUT command from the other party has been completed. After synchronization, the completion of the PUT instruction at both nodes can be guaranteed, so that both nodes can read the written data (exchanged data).

【0019】[0019]

【発明が解決しようとする課題】上記の特開平4−29
1660が開示する方法では、 CPUは、スワップア
ウトされているデータ領域に書き込むべきデータを受信
する度に、割り込まれ、割り込み処理を実行する必要が
ある。このために、そのときに実行中のプログラムの実
行が中断されるという問題がある。とくに、このスワッ
プアウトされたページをスワップインするには、外部記
憶装置をアクセスする必要があり、そのために、実行中
のプログラムの中断が長くなる。この中断時点では、実
行中のプログラムが受信したデータを利用する状態にな
いこともありうる。したがって、このような状態での実
行中のプログラムの中断は、プログラムの実行効率から
みると、望ましくない。さらに、実行中のプログラムが
その受信データを保持するページをスワップインされた
後もしばらくの間アクセスしなければ、そのページは再
びスワップアウトされてしまうことも起こる可能性があ
る。このことが起きると、受信直後のスワップインが無
駄になる。
DISCLOSURE OF THE INVENTION Problems to be Solved by the Invention
In the method disclosed by 1660, each time the CPU receives data to be written to the swapped-out data area, the CPU needs to be interrupted and execute interrupt processing. For this reason, there is a problem that the execution of the program being executed at that time is interrupted. In particular, swapping in the swapped-out page requires accessing the external storage device, which causes a long interruption of the program being executed. At the time of this interruption, the program being executed may not be in a state of using the received data. Therefore, interruption of the program being executed in such a state is not desirable from the viewpoint of program execution efficiency. Further, if the executing program does not access the page holding the received data for a while even after the page is held, the page may be swapped out again. When this happens, the swap-in immediately after reception is wasted.

【0020】また、従来のPUT型データ転送では、バ
リア同期のような大きなオーバヘッドを有するプロセッ
サ間の同期を頻繁に行う必要がある。PUT型データ転
送のために頻繁にプロセッサ間の同期を行うと、PUT
型データ転送が持つ低オーバヘッドという特長が活かせ
ない。
In the conventional PUT type data transfer, it is necessary to frequently perform synchronization between processors having a large overhead such as barrier synchronization. Frequent synchronization between processors for PUT-type data transfer causes PUT
The advantage of low overhead of type data transfer cannot be utilized.

【0021】従って、本発明の目的は、主記憶に固定さ
れていないデータ受信領域にデータを転送可能で、か
つ、データ受信時に実行中のプログラムへ大きな影響を
与えないPUT型のデータ転送方法およびそれに適した
計算機システムを提供することである。
Therefore, an object of the present invention is to provide a PUT type data transfer method capable of transferring data to a data receiving area which is not fixed in the main memory and having no great influence on a program being executed at the time of data reception. It is to provide a computer system suitable for it.

【0022】さらに、本発明の他の目的は、プロセッサ
間の同期のオーバヘッドがより少なく、PUT型のデー
タ転送に適したデータ転送方法およびそれに適した計算
機システムを提供することである。
Still another object of the present invention is to provide a data transfer method suitable for PUT type data transfer and a computer system suitable for the same, which has less synchronization overhead between processors.

【0023】[0023]

【課題を解決するための手段】上記目的を達成するため
に、本発明の第1の動作態様のデータ転送方法は、以下
のステップを実行する。
In order to achieve the above object, the data transfer method of the first operation mode of the present invention executes the following steps.

【0024】データとそのデータを格納すべき転送先領
域の仮想アドレスとを転送元のノードから転送先のノー
ドに転送し、転送先のノードにおいて、上記データを受
信した時点で受信した仮想アドレスが割り当てられた上
記領域が転送先のノード内の主記憶内に存在するとき、
受信したデータを該領域に格納し、上記転送先領域が転
送先のノードの主記憶内に存在しないとき、転送先のノ
ード内に設けられた受信したデータを一時的に保持する
ための転送バッファ領域に受信したデータを格納し、上
記転送先領域が転送先ノードの上記主記憶に存在しない
とき、上記転送先ノードで実行されているプログラムか
らその後発行された所定の命令が実行されたときに、該
転送先領域に該転送バッファ領域に格納された受信した
データを転送する。ここで、この転送は、上記転送先領
域を主記憶に割り当てられた後に実行される。
The data and the virtual address of the transfer destination area in which the data should be stored are transferred from the transfer source node to the transfer destination node, and the virtual address received at the time of receiving the data at the transfer destination node is When the above-mentioned allocated area exists in the main memory in the transfer destination node,
A transfer buffer for storing the received data in the area and temporarily holding the received data provided in the transfer destination node when the transfer destination area does not exist in the main memory of the transfer destination node When the received data is stored in the area, the transfer destination area does not exist in the main memory of the transfer destination node, and when a predetermined instruction issued subsequently from the program executed in the transfer destination node is executed , The received data stored in the transfer buffer area is transferred to the transfer destination area. Here, this transfer is executed after the transfer destination area is assigned to the main memory.

【0025】本発明の第2の動作態様のデータ転送方法
は、以下のステップを実行する。
The data transfer method of the second operation mode of the present invention executes the following steps.

【0026】データと、そのデータを格納すべき転送先
領域の仮想アドレスと比較値を転送元のノードから転送
先のノードに転送し、転送先のノードで実行中のプログ
ラムにより指定されたセマフォ値を転送先ノードにより
記憶し、転送先のノードが上記比較値と、該記憶されて
いるセマフォの値とが、上記データを転送先流域に書き
込むためにあらかじめ定めた条件を満たすか否かを判別
し、上記判別の結果、該条件が満たされると判断された
ときには、転送先のノード内の上記仮想アドレスを割り
当てられた該転送先領域に受信したデータを格納し、該
条件が満たされないとき、転送先のノード内に設けられ
たデータを一時的に保持するためのバッファ領域に受信
したデータを格納し、上記プログラムからその後発行さ
れた転送要求に応答して、上記バッファ領域から上記デ
ータを該転送先領域に転送する。
The data, the virtual address of the transfer destination area in which the data should be stored, and the comparison value are transferred from the transfer source node to the transfer destination node, and the semaphore value specified by the program being executed in the transfer destination node. Is stored by the transfer destination node, and the transfer destination node determines whether or not the comparison value and the stored semaphore value satisfy a predetermined condition for writing the data in the transfer destination basin. If, as a result of the determination, it is determined that the condition is satisfied, the received data is stored in the transfer destination area to which the virtual address in the transfer destination node is allocated, and when the condition is not satisfied, Store the received data in the buffer area for temporarily holding the data provided in the transfer destination node, and respond to the transfer request issued later from the above program. And forwards the data to the destination area from the buffer area.

【0027】[0027]

【発明の実施の形態】以下、本発明に係るデータ転送方
法および計算機システムを図面に示した発明の実施の形
態を参照してさらに詳しく説明する。
BEST MODE FOR CARRYING OUT THE INVENTION The data transfer method and computer system according to the present invention will be described below in more detail with reference to the embodiments of the invention shown in the drawings.

【0028】<1.装置と動作の概要> <1.1装置の概要>図1は本発明に係るデータ転送方
法を採用する並列計算機システムの概略構成を示す。本
システムは、CPU20、主記憶50、およびネットワ
ークアダプタ30を持つノード10を複数個、プロセッ
サ間ネットワーク1000で結合する。各ノードは、そ
れ自体のOSを持つ。ネットワークアダプタ30はノー
ド間データ転送を担当するユニットであり、CPU20
により起動されることで、他のノード、例えばノード2
10にデータを転送する。また他のノード、例えばノー
ド210から送られてきたデータを主記憶50に書き込
む機能を持つ。なお、ノード、例えばノード10とノー
ド210は、完全に同一のハードウェアでも、別のハー
ドウェアでもかまわないが、本実施の形態では各ノード
が同じ構造を有するとしている。但し、図1では、ノー
ド10のネットワークアダプタ30および主記憶50の
中には、ノード10の転送元領域120に格納されるデ
ータをノード210の転送先領域340に転送するとき
の送信側の動作を説明する上で必要になる要素を記入し
た。同様に、受信側となるノード210のネットワーク
アダプタ230および主記憶50の中には、受信側ノー
ドの動作を説明する上で必要になる要素を記入した。各
ノード、たとえば10には、CPU20、ネットワーク
アダプタ30、主記憶制御部40、主記憶50がある。
更に、ノード毎に外部記憶装置60を用意する。主記憶
50の内部には、ユーザ制御領域90(主記憶固定)と
ユーザデータ領域100(仮想記憶管理)がある。ユー
ザデータ領域100に存在するデータは恒常的に存在す
るのではなく、必要に応じて外部記憶装置60にスワッ
プアウトされる。このため、転送元領域120、転送先
領域340は主記憶50に存在する場合もあれば、外部
記憶装置60にスワップアウトされている場合もある。
OS用の領域としては、OS領域130をユーザ領域と
は別に設け、主記憶固定となるように管理する。
<1. Overview of Device and Operation><1.1 Overview of Device> FIG. 1 shows a schematic configuration of a parallel computer system that employs a data transfer method according to the present invention. In this system, a plurality of nodes 10 each having a CPU 20, a main memory 50, and a network adapter 30 are connected by an interprocessor network 1000. Each node has its own OS. The network adapter 30 is a unit in charge of data transfer between nodes, and the CPU 20
Is started by another node, for example, node 2
Transfer the data to 10. Further, it has a function of writing data sent from another node, for example, the node 210, into the main memory 50. Note that the nodes such as the node 10 and the node 210 may be completely the same hardware or different hardware, but in the present embodiment, each node has the same structure. However, in FIG. 1, in the network adapter 30 and the main memory 50 of the node 10, the operation on the transmission side when the data stored in the transfer source area 120 of the node 10 is transferred to the transfer destination area 340 of the node 210. I have filled in the necessary elements to explain. Similarly, in the network adapter 230 and the main memory 50 of the node 210 on the receiving side, the elements necessary for explaining the operation of the receiving side node are entered. Each node, for example 10, has a CPU 20, a network adapter 30, a main memory control unit 40, and a main memory 50.
Furthermore, an external storage device 60 is prepared for each node. Inside the main memory 50, there are a user control area 90 (main memory fixed) and a user data area 100 (virtual memory management). The data existing in the user data area 100 does not always exist, but is swapped out to the external storage device 60 as needed. Therefore, the transfer source area 120 and the transfer destination area 340 may exist in the main memory 50 or may be swapped out to the external storage device 60.
As the area for the OS, the OS area 130 is provided separately from the user area and managed so that the main memory is fixed.

【0029】<1.2>ノードの詳細 主記憶50上に用意する要素は、次の7つである。<1.2> Details of Node The following seven elements are prepared in the main memory 50.

【0030】(1)転送元領域120 送信側ノード10の転送データを格納する領域である。
ユーザデータ領域100に用意し、仮想記憶として管理
する。
(1) Transfer source area 120 This is an area for storing transfer data of the transmitting side node 10.
It is prepared in the user data area 100 and managed as a virtual memory.

【0031】(2)転送先領域340 受信側ノード210の転送データを書き込むべき領域で
ある。ユーザデータ領域100に用意し、仮想記憶とし
て管理する。
(2) Transfer destination area 340 This is an area in which the transfer data of the receiving side node 210 should be written. It is prepared in the user data area 100 and managed as a virtual memory.

【0032】(3)転送バッファ370 受信側ノード210の転送データを一時的に記録する領
域である。OS領域130に用意し、主記憶に固定す
る。
(3) Transfer buffer 370 This is an area for temporarily recording the transfer data of the receiving side node 210. It is prepared in the OS area 130 and fixed in the main memory.

【0033】(4)アドレス変換テーブル140 送信/受信双方のノードでアドレス変換情報を記録する
領域である。OS領域130に用意し、主記憶に固定す
る。
(4) Address conversion table 140 This is an area for recording address conversion information at both the transmitting and receiving nodes. It is prepared in the OS area 130 and fixed in the main memory.

【0034】(5)転送元フラグ110 送信側ノード10のデータ転送動作状況(送信中/終了
など)を記録するフラグである。記録する値を図12に
示す。<2.2>で詳細を説明する。ユーザ制御領域9
0に用意し、主記憶に固定する。転送元ノード10のユ
ーザプログラムは、このフラグを読むことで、転送動作
の現状を把握することができる。
(5) Transfer source flag 110 This is a flag for recording the data transfer operation status (transmission / end, etc.) of the transmission-side node 10. The recorded values are shown in FIG. Details will be described in <2.2>. User control area 9
It is prepared in 0 and fixed in the main memory. The user program of the transfer source node 10 can grasp the current status of the transfer operation by reading this flag.

【0035】(6)転送先フラグ320 受信側ノード210のデータ転送動作状況(受信中/バ
ッファリング済みなど)を記録するフラグである。記録
する値を図13に示す。<2.2>でこのフラグの詳細
を説明する。このフラグはユーザ制御領域90に用意
し、主記憶に固定する。受信側のノード210のユーザ
プログラムは、このフラグを読むことで、転送動作の現
状を把握することができる。
(6) Transfer destination flag 320 This is a flag for recording the data transfer operation status of the receiving-side node 210 (such as receiving / buffering completed). The recorded values are shown in FIG. The details of this flag will be described in <2.2>. This flag is prepared in the user control area 90 and fixed in the main memory. The user program of the receiving-side node 210 can grasp the current state of the transfer operation by reading this flag.

【0036】(7)転送制御フラグ330 受信側ノードにおいてデータの受信とそのノード内での
プログラムの進捗とを同期させるためのセマフォ、バッ
ファリング数などを含むフラグであり、このフラグの構
成を図9に示す。<2.2>でその詳細を説明する。こ
のフラグはユーザ制御領域90に用意し、主記憶に固定
する。セマフォ2010は、具体的には、データを受信
した時点で、転送先領域340を受信側ノード210が
まだ使用終了していないで、そのためそのデータを転送
先領域340に転送出来ない状態にあるか否かを判断す
るのに使用される。本実施の形態では、転送先領域34
0を受信側ノード210が使用終了していない場合な
ど、この転送先領域340がデータ転送を受け付けられ
ない状態にある場合には、強制的に転送データを転送バ
ッファ370に一時的に格納する方法を採る。
(7) Transfer control flag 330 This is a flag including a semaphore, a buffering number, etc. for synchronizing the reception of data at the receiving side node with the progress of the program in that node, and the configuration of this flag is shown. 9 shows. The details will be described in <2.2>. This flag is prepared in the user control area 90 and fixed in the main memory. Specifically, the semaphore 2010 is in a state where it cannot transfer the data to the transfer destination area 340 because the receiving side node 210 has not finished using the transfer destination area 340 at the time of receiving the data. It is used to judge whether or not. In this embodiment, the transfer destination area 34
A method for forcibly storing transfer data in the transfer buffer 370 when the transfer destination area 340 is in a state in which data transfer cannot be accepted, such as when the receiving side node 210 has not finished using 0. Take.

【0037】ネットワークアダプタ30の構成を図2に
示す。主な要素を次に挙げる。
The structure of the network adapter 30 is shown in FIG. The main elements are listed below.

【0038】(1)送信制御レジスタ70 CPU20からの送信要求を記録する。その内部構成は
図3に示す。
(1) Transmission control register 70 The transmission request from the CPU 20 is recorded. The internal structure is shown in FIG.

【0039】(2)送信制御部410 送信制御レジスタ70の情報を元に送信動作を行う。(2) Transmission control unit 410 Performs a transmission operation based on the information in the transmission control register 70.

【0040】(3)ネットワーク送信部430、ネット
ワーク受信部450 プロセッサ間ネットワーク1000との接続を担当す
る。
(3) Network transmitter 430, network receiver 450 In charge of connection with the interprocessor network 1000.

【0041】(4)受信制御レジスタ170 他ノードからの転送データが届いた場合に、転送制御情
報を記録する。その内部構成は図4に示す。
(4) Reception control register 170 When transfer data from another node arrives, transfer control information is recorded. The internal structure is shown in FIG.

【0042】(5)受信制御部440 受信制御レジスタ170の情報を元に受信動作を行う。(5) Reception control section 440 The reception operation is performed based on the information in the reception control register 170.

【0043】(6)主記憶アクセス部400 送信制御部410や受信制御部440などからの主記憶
50をアクセスする要求に応答して主記憶をアクセスす
る。
(6) Main memory access unit 400 The main memory is accessed in response to a request from the transmission control unit 410 or the reception control unit 440 to access the main memory 50.

【0044】(7)テーブル管理レジスタ80 アドレス変換テーブル140の実アドレス情報、具体的
にはそのテーブルの先頭アドレス1510を持つ。その
内部構成は図5に示す。
(7) Table management register 80 It has real address information of the address conversion table 140, specifically, the head address 1510 of the table. The internal structure is shown in FIG.

【0045】(8)アドレス変換部480 主記憶アクセス部400からのアクセス要求に対してア
ドレス変換テーブル140の情報に基づき仮想−実アド
レス変換を担当する。
(8) Address translation unit 480 It is in charge of virtual-real address translation based on the information in the address translation table 140 in response to the access request from the main memory access unit 400.

【0046】(9)バッファ管理レジスタ190 転送バッファ370のアドレス情報を持つ。その内部構
成は図6に示す。
(9) Buffer management register 190 It holds the address information of the transfer buffer 370. The internal structure is shown in FIG.

【0047】(10)バッファ制御部470 バッファ管理レジスタ190の情報に基づき、転送デー
タを転送バッファ370に格納する動作をする。
(10) Buffer control section 470 Based on the information in the buffer management register 190, it operates to store the transfer data in the transfer buffer 370.

【0048】なお、以上の構成要素の動作は、<2.2
>で説明する。
The operation of the above components is <2.2.
>.

【0049】<1.3>データ転送命令 図20に本実施の形態で使用するデータ転送命令(PU
T命令)のフォーマットを示す。命令が指定するパラメ
ータとしては、以下に示す9つを持つ。
<1.3> Data Transfer Command FIG. 20 shows a data transfer command (PU) used in this embodiment.
(T instruction) format is shown. The command has the following nine parameters.

【0050】(1)転送データ長2710 転送するデータのバイト数を指定する。ハードウェア上
の最大転送長は1MBである(詳細後述)。
(1) Transfer data length 2710 Designates the number of bytes of data to be transferred. The maximum transfer length on the hardware is 1 MB (details will be described later).

【0051】(2)転送元領域開始アドレス2720 転送元領域120の送信側ノード10における仮想アド
レスを指定する。
(2) Transfer source area start address 2720 The virtual address in the transmission side node 10 of the transfer source area 120 is designated.

【0052】(3)転送元フラグアドレス2730 転送元フラグ110の送信側ノード10における仮想ア
ドレスを指定する。
(3) Transfer source flag address 2730 The virtual address of the transfer source flag 110 in the transmitting side node 10 is designated.

【0053】(4)転送先プロセッサ番号2740 データ転送先のノードの番号(ノード210の番号)を
指定する。
(4) Transfer destination processor number 2740 Specify the node number of the data transfer destination (node 210 number).

【0054】(5)転送制御フラグアドレス2750 転送制御フラグ330の受信側ノード210における仮
想アドレスを指定する。
(5) Transfer control flag address 2750 The virtual address of the transfer control flag 330 in the receiving side node 210 is designated.

【0055】(6)比較値2760 本実施の形態で新規に使用される情報で、転送制御フラ
グ330内のセマフォア値(図9の2010)と比較さ
れる値を指定する。符号なしの32ビットデータであ
る。
(6) Comparison value 2760 Information newly used in the present embodiment specifies a value to be compared with the semaphore value (2010 in FIG. 9) in the transfer control flag 330. It is 32-bit data without a code.

【0056】(7)比較方法2770 本実施の形態で新規に使用される情報で、セマフォア2
010と比較値2770との比較方法を示す。この比較
方法2770の値と実行される比較方法の関係を図10
に示す。この比較方法の値2770と比較値2760を
用いて、いろいろいろの条件を指定して、データの受信
と受信側プログラムの進捗との間の同期を簡単に行え
る。具体的には、これらの情報は、データを受信した時
点で、転送先領域340を受信側ノード210が使用終
了していない状態にあり、そのためそのデータを転送先
領域340に転送出来ないか否かを判断するのに使用さ
れる。このために、本実施の形態では、後に説明するよ
うに、受信側のプロセスは、そのプログラムの進捗に応
じてセマフォア2010を書き換えるように構成されて
る。データを受信した時点でこの比較方法2770が指
定する条件が成立しなければ、比較方法2770の値に
よらずに、強制的に転送データを転送バッファ370に
格納する。それにより転送データを転送先領域340に
転送しないで、転送バッファ370に転送し、後にこの
転送データを転送バッファ370から転送先領域340
に転送する。これにより、データの転送に必要なプロセ
ス間の同期処理のオーバヘッドを軽減している。
(7) Comparison method 2770 Information newly used in the present embodiment is semaphore 2
A method of comparing 010 and the comparison value 2770 will be described. The relationship between the value of this comparison method 2770 and the comparison method executed is shown in FIG.
Shown in By using the value 2770 and the comparison value 2760 of this comparison method, various conditions can be specified and the synchronization between the data reception and the progress of the reception side program can be easily performed. Specifically, these pieces of information are in a state in which the receiving side node 210 has not finished using the transfer destination area 340 at the time of receiving the data, and therefore, whether or not the data cannot be transferred to the transfer destination area 340. Used to determine if. Therefore, in the present embodiment, as will be described later, the receiving side process is configured to rewrite the semaphore 2010 according to the progress of the program. If the condition specified by the comparison method 2770 is not satisfied at the time of receiving the data, the transfer data is forcibly stored in the transfer buffer 370 regardless of the value of the comparison method 2770. As a result, the transfer data is not transferred to the transfer destination area 340 but is transferred to the transfer buffer 370, and this transfer data is transferred from the transfer buffer 370 to the transfer destination area 340 later.
Transfer to This reduces the overhead of synchronization processing between processes required for data transfer.

【0057】(8)転送先領域開始アドレス2780 転送先領域340の受信側ノード210における仮想ア
ドレスを指定する。
(8) Transfer destination area start address 2780 The virtual address in the receiving side node 210 of the transfer destination area 340 is designated.

【0058】(9)転送先フラグアドレス2790 転送先フラグ320の受信側ノード210における仮想
アドレスを指定する。
(9) Transfer destination flag address 2790 Specifies the virtual address of the transfer destination flag 320 in the receiving side node 210.

【0059】なお、本実施の形態ではページ境界(1M
Bバウンダリ)をまたがるデータ転送を許さない。よっ
て、転送元領域や転送先領域の少なくとも一方がページ
をまたがる場合、データの転送は、複数回のデータ転送
で実現する必要がある。同様に、1MBを超える長大デ
ータも、複数回のデータ転送で対処する。
In the present embodiment, page boundaries (1M
Do not allow data transfer across B boundary). Therefore, when at least one of the transfer source area and the transfer destination area extends over a page, the data transfer needs to be realized by a plurality of data transfers. Similarly, long data exceeding 1 MB can be dealt with by multiple times of data transfer.

【0060】図20に示したPUT命令は、データ転送
元のユーザプログラム内に設けられた通信ライブラリに
対する関数呼び出しを表す。図に示したいろいろのパラ
メータは、この関数呼び出しの引数を表す。しかし、以
下では簡単化のために、命令あるいはパラメータという
用語を使用する。この通信ライブラリは、ユーザプログ
ラムから呼び出されると、これらのパラメータをそれぞ
れ適当なレジスタに格納した後に、ネットワークアダプ
タ30をこのPUT動作のために起動する。このアダプ
タ30は、PUT動作のために起動されると、後に示す
ように上記のいろいろのパラメータをしようしてPUT
動作を実行する。
The PUT instruction shown in FIG. 20 represents a function call to the communication library provided in the user program of the data transfer source. The various parameters shown in the figure represent the arguments of this function call. However, in the following, the term instruction or parameter will be used for simplicity. This communication library, when called from the user program, stores these parameters in appropriate registers and then activates the network adapter 30 for this PUT operation. When this adapter 30 is activated for PUT operation, it will use the various parameters described above to
Perform the action.

【0061】<1.4>転送制御フラグの具体的使用例 次に、転送制御フラグ330、比較値2760、比較方
法2770を用いたプロセッサ間のデータ転送を、図2
2に示す具体的なプログラム例を用いて説明する。この
図は、ノードA内のデータMの内容と、ノードB内のデ
ータNの内容とをスワップするためのプログラムである
点は図21に示した従来技術による場合と同様である
が、図21と異なり図20に示すPUT命令を用いてい
る。但し、図22では、図20と異なりPUT命令の表
記を簡単化している。すなわち、PUT命令3120A
あるいは3120B中の、dataM、flag(s
a)、nodeBは、図20のPUT命令内の転送元領域
開始アドレス2720、転送元フラグアドレス273
0、転送先プロセッサ番号2740を表す。when
flag(b)>0は、転送制御フラグアドレス275
0で、転送制御フラグbを指定し、比較値2760で0
を指定し、比較方法2770で">"を指定することを表
す。また、dataN、flag(rb)は、転送先領
域開始アドレス2780、転送先フラグアドレス279
0を示す。なお、図20の転送データ長2710は、図
22では省略している。
<1.4> Specific Usage Example of Transfer Control Flag Next, data transfer between processors using the transfer control flag 330, the comparison value 2760, and the comparison method 2770 will be described with reference to FIG.
Description will be made using a specific program example shown in FIG. 21 is similar to the case of the conventional technique shown in FIG. 21 in that it is a program for swapping the contents of the data M in the node A and the contents of the data N in the node B. Unlike the above, the PUT instruction shown in FIG. 20 is used. However, in FIG. 22, unlike FIG. 20, the notation of the PUT instruction is simplified. That is, PUT instruction 3120A
Alternatively, in 3120B, dataM, flag (s
a) and nodeB are the transfer source area start address 2720 and the transfer source flag address 273 in the PUT instruction of FIG.
0 represents the transfer destination processor number 2740. when
flag (b)> 0 is the transfer control flag address 275.
The transfer control flag b is specified by 0, and the comparison value 2760 is 0.
Is designated, and ">" is designated by the comparison method 2770. Also, dataN and flag (rb) are the transfer destination area start address 2780 and the transfer destination flag address 279.
Indicates 0. The transfer data length 2710 of FIG. 20 is omitted in FIG.

【0062】転送元のユーザプログラムの先頭の命令列
3100Aおよび転送先のユーザプログラムの先頭の命
令列3100Bは、これらのプログラムが使用する転送
制御フラグ(a,b)、転送元フラグ(sa,sb)、
転送先フラグ(ra,rb)を初期化する。双方で初期
化できたことを保証するために、プロセッサ間でバリア
同期を実現するための命令3110A、3110Bを実
行する。フラグ群はサイズが小さくプログラムの先頭で
初期化しておくことが容易にでき、これに伴いバリア同
期命令3110A、3110Bによるバリア同期もこれ
らのプログラムの先頭の方で取っておくことができる。
ノードAとBは、その後いろいろのプログラム命令を実
行した後の適当な時点でPUT命令3102A、310
2Bを実行する。
The first instruction sequence 3100A of the transfer source user program and the first instruction sequence 3100B of the transfer destination user program have a transfer control flag (a, b) and a transfer source flag (sa, sb) used by these programs. ),
The transfer destination flag (ra, rb) is initialized. In order to ensure that both sides can be initialized, the instructions 3110A and 3110B for realizing barrier synchronization between the processors are executed. The flag group has a small size and can be easily initialized at the beginning of the program, and accordingly, the barrier synchronization by the barrier synchronization instructions 3110A and 3110B can also be reserved at the beginning of these programs.
Nodes A and B then execute PUT instructions 3102A, 310 at appropriate points after executing various program instructions.
Perform 2B.

【0063】ノードAが実行するPUT命令3120A
は、「データ領域Mの転送データをフラグsaを転送元
フラグとして使用して、ノードBの転送先領域NへPU
Tする。但し、ノードBにある転送制御フラグb内のセ
マフォ値が0より大きくなければ、転送データを一旦転
送バッファに蓄積するという条件をつける。書き込みの
終了は、ノードBにある転送先フラグrbに記録す
る。」という意味を持つ。同様に、ノードBが実行する
PUT命令3120Bは、「データ領域Nの転送データ
をflag(sb)を転送元フラグとして使用して、ノ
ードAのデータ領域MへPUTする。但し、ノードAに
ある転送制御フラグa内のセマフォ値が0より大きくな
ければ、転送データを一旦転送バッファに蓄積するとい
う条件をつける。書き込みの終了は、ノードAにある転
送先フラグraに記録する。」という意味を持つ。
PUT instruction 3120A executed by node A
"Uses the transfer data of the data area M as the transfer source flag and the PU as the transfer source area N of the node B.
T. However, if the semaphore value in the transfer control flag b in the node B is not larger than 0, the condition that the transfer data is temporarily stored in the transfer buffer is added. The end of writing is recorded in the transfer destination flag rb in the node B. Has the meaning. Similarly, the PUT instruction 3120B executed by the node B “PUTs the transfer data of the data area N to the data area M of the node A by using flag (sb) as the transfer source flag. If the semaphore value in the transfer control flag a is not greater than 0, the condition is set that the transfer data is temporarily stored in the transfer buffer. The end of writing is recorded in the transfer destination flag ra in the node A. " To have.

【0064】後に詳細に説明するように、ノードAのP
UT命令3120Aが実行されると、その実行の過程
で、送信元フラグsaの値がデータ領域M内の転送デー
タの転送状態に応じて図12に従い更新される。さら
に、ノードB内の転送先フラグrbの値が、この転送デ
ータの転送状態に応じて図13に従い更新される。同様
に、ノードBのPUT命令3120Bが実行されると、
その実行の過程で、ノードB内の転送元フラグsbの値
がデータ領域M内の転送データの転送状態に応じて図1
2に従い更新される。さらに、ノードA内の転送先フラ
グraの値が、この転送データの転送状態に応じて図1
3に従い更新される。
As will be described in detail later, P of node A
When the UT instruction 3120A is executed, the value of the transmission source flag sa is updated according to the transfer state of the transfer data in the data area M according to FIG. Further, the value of the transfer destination flag rb in the node B is updated according to the transfer state of this transfer data according to FIG. Similarly, when the PUT instruction 3120B of the node B is executed,
In the process of execution, the value of the transfer source flag sb in the node B changes according to the transfer state of the transfer data in the data area M.
Updated according to 2. Further, the value of the transfer destination flag ra in the node A is set according to the transfer state of the transfer data shown in FIG.
Updated according to 3.

【0065】後に受信ノードの動作説明で詳しく説明す
るように、ノードAでのPUT命令3120Aの実行に
より、ノードA内のデータ領域MのデータがノードBに
転送されとき、ノードBでの転送制御フラグa内のセマ
フォ値が、このPUT命令が指定する比較方法(>)に
従い、この命令が指定する値0と比較され、このセマフ
ォ値が0より大きくないとき、あるいはこのセマフォ値
が0より大きいが、このPUT命令が指定するデータ領
域Nが主記憶に存在しない時には、この転送データはノ
ードBの転送バッファに格納される。このセマフォ値が
0より大きく、かつ、このPUT命令が指定するデータ
領域Nが主記憶に存在する時には、この転送データは、
データ領域Nに直ちに格納される。ノードBでのPUT
命令3120Bの実行により、ノードB内のデータ領域
NのデータがノードAに転送されるときも同様である。
When the data in the data area M in the node A is transferred to the node B by the execution of the PUT instruction 3120A in the node A, the transfer control in the node B will be described in detail later in the description of the operation of the receiving node. The semaphore value in the flag a is compared with the value 0 specified by this instruction according to the comparison method (>) specified by this PUT instruction, and when this semaphore value is not greater than 0 or when this semaphore value is greater than 0. However, when the data area N designated by this PUT instruction does not exist in the main memory, this transfer data is stored in the transfer buffer of the node B. When this semaphore value is larger than 0 and the data area N designated by this PUT instruction exists in the main memory, this transfer data is
It is immediately stored in the data area N. PUT on Node B
The same applies when the data in the data area N in the node B is transferred to the node A by the execution of the instruction 3120B.

【0066】ノードAでの転送制御フラグa内のセマフ
ォおよびノードBでの転送制御フラグb内のセマフォの
更新は、命令列3130A、3130Bにより次のよう
にして行われる。ノードAのPUT命令3120Aの後
に適当な命令を実行した後に命令列3130Aが実行さ
れる。この命令列3130A中のWAIT命令は、ノー
ドAで実行されたPUT命令3120Aが指定する転送
データの転送が完了するまで待つ命令である。具体的に
は、このデータの転送状態が、図12に示す送信完了バ
ッファリング済み状態もしくは送信完了着信完了状態に
なるまで待つ。すなわち、転送元フラグsaの値が、図
12に示した送信完了バッファリング済み状態を表すフ
ラグ値0010(2進数)と送信完了着信完了状態を表
すフラグ値1010の内のより小さな値0010以上に
なるのを待つ。なお、WAIT命令中のSFINはこの
特定のフラグ値0010を示す。SET命令は、WAI
T命令の待ちが成功した時点で、転送制御フラグa内の
セマフォ値を1にセットする命令である。
The semaphore in the transfer control flag a at the node A and the semaphore in the transfer control flag b at the node B are updated by the instruction sequences 3130A and 3130B as follows. After executing the appropriate instruction after the PUT instruction 3120A of the node A, the instruction sequence 3130A is executed. The WAIT instruction in the instruction sequence 3130A is an instruction to wait until the transfer of the transfer data designated by the PUT instruction 3120A executed in the node A is completed. Specifically, it waits until the data transfer state becomes the transmission completion buffering state or the transmission completion incoming call completion state shown in FIG. That is, the value of the transfer source flag sa is equal to or larger than the smaller value 0010 of the flag value 0010 (binary number) indicating the transmission completion buffered state and the flag value 1010 indicating the transmission completion incoming completion state shown in FIG. Wait to become. SFIN in the WAIT instruction indicates this specific flag value 0010. The SET command is WAI
It is an instruction to set the semaphore value in the transfer control flag a to 1 when the waiting of the T instruction is successful.

【0067】同様に、ノードBのPUT命令3120B
の後に適当な命令を実行した後に命令列3130Bが実
行される。この命令列中のWAIT命令は、ノードBで
実行されたPUT命令3120Bが指定する転送データ
の転送が完了するまで待つ命令である。具体的には、転
送元フラグsbの値が、上記特定のフラグ値0010以
上になるのを待つ。SET命令は、WAIT命令の待ち
が成功した時点で、転送制御フラグb内のセマフォ値を
1にセットする命令である。
Similarly, the PUT instruction 3120B of the node B
After executing the appropriate instruction, the instruction sequence 3130B is executed. The WAIT instruction in this instruction sequence is an instruction to wait until the transfer of the transfer data designated by the PUT instruction 3120B executed by the node B is completed. Specifically, it waits until the value of the transfer source flag sb becomes equal to or more than the specific flag value 0010. The SET instruction is an instruction to set the semaphore value in the transfer control flag b to 1 when the wait of the WAIT instruction succeeds.

【0068】従って、ノードBからPUT命令3120
Bにより転送された、ノードBのデータ領域Nのデータ
がノードAで受信された時点までに、ノードA内で命令
列3130Aがすでに実行されているときには、転送制
御フラグa内のセマフォの値が1になっているために、
この転送データは、ノードBで実行されたPUT命令3
120Bが指定する条件を満たすことになる。従って、
この転送データは、ノードA内のデータ領域Mが主記憶
に存在するか否かに依存してノードAのこのデータ領域
Mあるいは転送バッファ370のいずれかに書き込まれ
ることになる。このようにして、ノードA側でのプログ
ラムによるデータ領域Mの使用終了前に、他のノードか
ら転送されるデータがそのデータ領域へ書き込まれるの
を、ノードAのネットワークアダプタ30が防ぐことに
なる。このことは、ノードBに関しても同様である。
Therefore, from the node B, the PUT instruction 3120
By the time the data in the data area N of the node B transferred by B is received by the node A, if the instruction sequence 3130A has already been executed in the node A, the value of the semaphore in the transfer control flag a is Because it is 1,
This transfer data is the PUT instruction 3 executed by the node B.
The condition specified by 120B is satisfied. Therefore,
This transfer data is written in either the data area M of the node A or the transfer buffer 370 depending on whether or not the data area M in the node A exists in the main memory. In this way, the network adapter 30 of the node A prevents the data transferred from another node from being written to the data area M before the end of the use of the data area M by the program on the node A side. . This also applies to the node B.

【0069】ノードA内のデータMとノードB内のデー
タNとをスワップするようなデータ転送の場合には、従
来のPUT型データ転送による図21のプログラムで
は、バリア同期命令3010、3030を実行する必要
があったが、図22のプログラムは、そのような命令を
必要としない。このように、本実施の形態では、プロセ
ッサ間のデータ転送に関して、プロセッサ間の同期のた
めの命令を削減することができる。これは、図22に示
すように、受信側のノードのプログラムにより、そのプ
ログラムによるデータ領域の使用を終了した時点で、そ
の使用終了を示すセマフォを転送制御フラグにセット
し、受信側ノードのネットワークアダプタが、そのセマ
フォの値に基づいて、受信側ノードのプログラムが転送
データを書き込むべきデータ領域を使用終了したか否か
を判断し、受信側ノードのプログラムが転送データを書
き込むべきデータ領域を使用終了する前には転送された
データをそのデータ領域に書き込むことを防ぐからであ
る。本実施の形態では、送信側のノードのプログラムが
実行するPUT命令の中で、転送先領域に転送データを
書き込むか否かの判定に使用する転送制御フラグを指定
し、さらに、その判定の条件と判定に使用する比較値も
指定し、より自由度のある制御を実現している。
In the case of data transfer in which the data M in the node A and the data N in the node B are swapped, the barrier synchronization instructions 3010 and 3030 are executed in the conventional PUT type data transfer program of FIG. However, the program of FIG. 22 does not require such an instruction. As described above, according to the present embodiment, regarding data transfer between processors, it is possible to reduce instructions for synchronization between processors. As shown in FIG. 22, when the program of the receiving side node finishes using the data area by the program, a semaphore indicating the end of use is set in the transfer control flag, and the network of the receiving side node is set. Based on the value of the semaphore, the adapter determines whether the program of the receiving node has finished using the data area to write the transfer data, and the program of the receiving node uses the data area to write the transfer data. This is to prevent the transferred data from being written in the data area before the end. In the present embodiment, in the PUT instruction executed by the program of the node on the transmission side, the transfer control flag used to determine whether or not to write the transfer data in the transfer destination area is specified, and the determination condition is further specified. The comparison value used for the judgment is also specified to realize more flexible control.

【0070】さらに、図21のプログラムでは、命令3
000A、3000Bのごとく、データ転送命令を実行
する前に明示的にデータをコピーする命令を実行する必
要があったが、本実施の形態では、そのような命令を必
要としない。これも上述のように、受信側のネットワー
クアダプタ30が転送制御フラグを使用して、転送され
たデータの、データ領域への書き込みを行うか否かを制
御していることによる。
Further, in the program of FIG. 21, the instruction 3
Although it is necessary to explicitly execute an instruction to copy data before executing a data transfer instruction, such as 000A and 3000B, this embodiment does not require such an instruction. This is also because, as described above, the network adapter 30 on the receiving side uses the transfer control flag to control whether to write the transferred data in the data area.

【0071】さて、ノードAは、そのデータ領域Mへデ
ータがPUTされたかどうかを、ノードA自身が持つ転
送先フラグの値により確認する。すなわち、ノードAの
後続のWAIT命令3140Aは、ノードBのPUT命
令3120BによるノードAへのデータ転送の完了を待
つ命令である。具体的には、この命令は、このPUT命
令3120Bが指定するデータの転送状態が、図13に
示す受信完了バッファリング済み状態もしくは受信完了
状態になるのを待つ、すなわち、ノードBのPUT命令
がデータ領域Mのデータの転送先フラグとして指定する
フラグraの値が、図13に示した受信完了バッファリ
ング済み状態を示すフラグ値0110と受信完了書き込
み完了状態を示すフラグ値0100の内の小さな値01
00以上になることを待つ。なお、WAIT命令中のR
FINは、この特定のフラグ値0100を示す。次のI
F命令3150Aは、転送先フラグraの値がRFIN
に等しくないとき、すなわち、この値が0110のと
き、すなわち、データ領域MにノードBから転送すべき
データがノードAの転送バッファに書き込まれたが、デ
ータ領域Mにまだ書き込まれていない時に、転送バッフ
ァ370からこの転送データをデータ領域Mに引き出す
ことをOSに要求するシステムコールを含む。OSは、
このシステムコールに応答して、このデータの引き出し
を実行する。このときに、データ領域Mが、主記憶から
スワップアウトされているときには、データ領域Mに主
記憶を割り当てた上で、このデータの引き出しを行う。
なお、転送先フラグraの値が0100であるときに
は、このIF命令は実行されない。
Now, the node A confirms whether or not the data is put into the data area M by the value of the transfer destination flag of the node A itself. That is, the subsequent WAIT instruction 3140A of the node A is an instruction to wait for the completion of the data transfer to the node A by the PUT instruction 3120B of the node B. Specifically, this instruction waits until the transfer state of the data specified by this PUT instruction 3120B becomes the reception completion buffered state or the reception completion state shown in FIG. 13, that is, the PUT instruction of the node B is The value of the flag ra designated as the transfer destination flag of the data in the data area M is the smaller value of the flag value 0110 indicating the reception completion buffered state and the flag value 0100 indicating the reception completion write completion state shown in FIG. 01
Wait for 00 or more. Note that R in the WAIT command
FIN indicates this specific flag value 0100. Next I
In the F instruction 3150A, the value of the transfer destination flag ra is RFIN.
, That is, when this value is 0110, that is, when the data to be transferred from the node B to the data area M has been written in the transfer buffer of the node A, but has not yet been written to the data area M, It includes a system call that requests the OS to extract this transfer data from the transfer buffer 370 to the data area M. OS is
In response to this system call, this data retrieval is executed. At this time, when the data area M is swapped out from the main memory, the main memory is allocated to the data area M and then this data is extracted.
When the value of the transfer destination flag ra is 0100, this IF instruction is not executed.

【0072】ノードAでは、IF命令3150Aの後
に、このデータ領域M内のデータの読み出しを要求する
READ命令3160Aを発行する。ノードAでのRE
AD命令3160Aの実行時には、転送先データ領域M
は主記憶にすでに存在し、そこに転送データがすでに書
き込まれているので、このREAD命令は直ちに実行さ
れる。
At the node A, after the IF instruction 3150A, a READ instruction 3160A requesting the reading of the data in the data area M is issued. RE at node A
When the AD instruction 3160A is executed, the transfer destination data area M
Already exists in the main memory and the transfer data has already been written therein, the READ instruction is immediately executed.

【0073】同様に、ノードBは、データ領域Nへデー
タがPUTされたかどうかを、ノードB自身が持つ転送
先フラグの値により確認する。すなわち、ノードBの後
続のWAIT命令3140Bは、ノードAのPUT命令
3120AによるノードBへのデータ転送が終了するの
を待つ命令である。この命令は、具体的には、転送すべ
きデータの転送状態が、受信完了バッファリング済み状
態もしくは受信完了状態になる、すなわち、ノードAの
PUT命令3110Aがデータ領域Nのデータの転送先
フラグとして指定するフラグrbの値が、上記特定のフ
ラグ値0100以上になることを待つ。次のIF命令3
150Bは、転送先フラグrbの値がRFINに等しく
ないとき、すなわち、データ領域NにノードAから転送
すべきデータが、ノードBの転送バッファに書き込まれ
たがデータ領域Mにまだ書き込まれていない時に、転送
バッファからこの転送データをデータ領域に引き出すこ
とをOSに要求するシステムコールである。ノードBで
も、IF命令3150Bの後に、データ領域N内のデー
タの読み出しを要求するREAD命令3160Bを発行
する。
Similarly, the node B confirms whether or not the data is put into the data area N by the value of the transfer destination flag of the node B itself. That is, the subsequent WAIT instruction 3140B of the node B is an instruction to wait for the end of data transfer to the node B by the PUT instruction 3120A of the node A. Specifically, this instruction is such that the transfer state of the data to be transferred becomes the reception completion buffering state or the reception completion state, that is, the PUT instruction 3110A of the node A is used as the transfer destination flag of the data of the data area N. It waits until the value of the designated flag rb becomes equal to or more than the specific flag value 0100. Next IF instruction 3
In 150B, when the value of the transfer destination flag rb is not equal to RFIN, that is, the data to be transferred from the node A to the data area N is written in the transfer buffer of the node B, but not yet written in the data area M. At times, this is a system call that requests the OS to extract this transfer data from the transfer buffer to the data area. The node B also issues the READ instruction 3160B requesting the reading of the data in the data area N after the IF instruction 3150B.

【0074】これらの命令3140A、3150A、3
160A、3140B、3150B、3160Bの実行
態様から分かるように、各ノードで他のノードからの転
送データを読み出す場合においても、転送先フラグによ
りデータの着信が確認できるため、これらのノードのプ
ログラムの間で同期を取る必要がない。
These instructions 3140A, 3150A, 3
As can be seen from the execution modes of 160A, 3140B, 3150B, and 3160B, even when each node reads transfer data from another node, the arrival of the data can be confirmed by the transfer destination flag. There is no need to synchronize with.

【0075】<2.装置の詳細>本節では、本計算機シ
ステムのメモリ空間管理方法、装置構成およびユーザイ
ンタフェースについて簡単に説明する、 <2.1>メモリ管理方法 図14に、本実施の形態における各ノード内の実アドレ
ス空間を示す。主記憶が存在する範囲にOS領域211
0とユーザ領域2120とを持つ。I/O領域として
は、OSのみがアクセスできるOS専用I/O領域21
40と、ユーザモードでもアクセスできるユーザ用I/
O領域2150とを持つ。OS専用I/O領域2140
に対するユーザモードからのアクセスに対しては、アド
レス変換において割込を発生することでプロテクトをか
ける。その詳細は後述する。
<2. Device Details> In this section, a memory space management method, device configuration, and user interface of the computer system will be briefly described. <2.1> Memory management method FIG. 14 shows real addresses in each node in the present embodiment. Indicates a space. OS area 211 in the range where main memory exists
It has 0 and a user area 2120. As the I / O area, the OS-dedicated I / O area 21 that can be accessed only by the OS
40 and user I / O that can be accessed in user mode
And an O region 2150. OS dedicated I / O area 2140
Access from the user mode is protected by generating an interrupt in address translation. The details will be described later.

【0076】図15に、本実施の形態における仮想アド
レス空間の実アドレス空間へのマッピング方法を示す。
なお、仮想アドレス空間から実アドレス空間へのマッピ
ングは、各ノード毎に行う。図15は、1つのノードで
プロセスAとプロセスBとが動作している場合のマッピ
ング方法を示す。各プロセスA(またはB)用に、実ア
ドレス空間2330内に制御領域2290(または23
10)とデータ領域2300(または2320)とを用
意する。このうち、制御領域2290、2310はOS
が実アドレス空間に固定する。つまり、主記憶上に常に
存在することをOS保証で実現する。制御領域229
0、2310にはそれぞれプロセスAの転送制御領域2
210、2240が割り当てられる。これに対し、デー
タ領域2300、2320は仮想記憶管理を行う。つま
り、必ずしも実アドレス空間に存在せず、外部記憶装置
にスワップアウトされることを許す。これらのデータ領
域2300,2320には、転送先領域2220などが
割り当てられる。なお、本実施の形態では、OSが使用
するOS領域2280については実アドレス空間に固定
する。つまり、必ず主記憶にあることをOS管理で実現
する。
FIG. 15 shows a mapping method of the virtual address space to the real address space in this embodiment.
The mapping from the virtual address space to the real address space is performed for each node. FIG. 15 shows a mapping method when process A and process B are operating in one node. For each process A (or B), the control area 2290 (or 23
10) and the data area 2300 (or 2320) are prepared. Of these, the control areas 2290 and 2310 are OSs.
Fixed in the real address space. That is, the OS guarantees that it always exists in the main memory. Control area 229
0 and 2310 include the transfer control area 2 of the process A, respectively.
210 and 2240 are allocated. On the other hand, the data areas 2300 and 2320 manage virtual storage. In other words, it does not always exist in the real address space and is allowed to be swapped out to the external storage device. A transfer destination area 2220 and the like are assigned to these data areas 2300 and 2320. In this embodiment, the OS area 2280 used by the OS is fixed in the real address space. That is, the fact that it is always in the main memory is realized by OS management.

【0077】本実施の形態では、仮想記憶管理における
スワップイン/スワップアウトの単位サイズ(これはペ
ージサイズに等しい)を1MBとする。つまり、各プロ
セスのデータ領域2300、2320は、ページサイズ
(1MB)単位で外部記憶装置と主記憶との間でスワッ
プイン/スワップアウトされる。また、各仮想アドレス
空間は32ビットのアドレスを有する、すなわち4GB
のサイズを有するとする。つまり、各仮想アドレス空間
は、1MB×4Kページで構成される。
In this embodiment, the swap-in / swap-out unit size (which is equal to the page size) in virtual memory management is 1 MB. That is, the data areas 2300 and 2320 of each process are swapped in / out between the external storage device and the main storage in page size (1 MB) units. Also, each virtual address space has a 32-bit address, that is, 4 GB.
Have a size of. That is, each virtual address space is composed of 1 MB × 4K pages.

【0078】<2.2>動作の詳細 本節では、OSの動作、送信側ノードの動作、受信側ノ
ードの動作の順に説明する。
<2.2> Details of Operation In this section, the operation of the OS, the operation of the transmitting side node, and the operation of the receiving side node will be described in this order.

【0079】<2.2.1>OSの動作 OSが行う重要な動作の一つは、アドレス変換テーブル
140の作成である。アドレス変換について説明する前
に、OSが各プロセスにつける管理番号であるプロセス
番号について述べる。プロセス番号として0〜15まで
用意する。0は常にOS自身用として確保するので、他
のプロセスとしては番号1〜15のプロセスまでが同時
に動作できる。
<2.2.1> Operation of OS One of the important operations performed by the OS is the creation of the address conversion table 140. Before explaining the address conversion, the process number which is a management number given to each process by the OS will be described. Prepare 0 to 15 as the process number. Since 0 is always reserved for the OS itself, the processes of numbers 1 to 15 can simultaneously operate as other processes.

【0080】まず、本実施の形態におけるアドレス変換
方法を、図16を用いて説明する。なお、本アドレス変
換はネットワークアダプタ30のアドレス変換部480
(図2)により行われる。アドレス変換部480自体の
動作は、<2.2.2>、<2.2.3>で説明する。
First, the address conversion method in this embodiment will be described with reference to FIG. The address conversion is performed by the address conversion unit 480 of the network adapter 30.
(FIG. 2). The operation of the address conversion unit 480 itself will be described in <2.2.2> and <2.2.3>.

【0081】本実施の形態では32ビット仮想空間を1
MBページで管理するため、変換すべき仮想アドレス
は、その上位2430の12ビットである。この12ビ
ットと、テーブル管理レジスタ80(図2)に保持され
たアドレス変換テーブルアドレス1510(図5)と、
アドレス変換を要求したプロセスのプロセス番号242
0とより、アドレス変換テーブル140(図1)を引
き、そこで得た実ページ番号2460を用いて、実アド
レス2470を求める。
In the present embodiment, the 32-bit virtual space is set to 1
Since it is managed by the MB page, the virtual address to be translated is 12 bits of the upper 2430. The 12 bits, the address conversion table address 1510 (FIG. 5) held in the table management register 80 (FIG. 2),
Process number 242 of the process that requested address translation
The address conversion table 140 (FIG. 1) is subtracted from 0, and the real address 2470 is obtained using the real page number 2460 obtained there.

【0082】ここで、仮想アドレス上位2430、テー
ブル管理レジスタ情報2410、プロセス番号情報24
20より、アドレス変換テーブル140内のエントリを
引くための実アドレス計算方法を図17を参照して説明
する。最下位ビットを自動的に0にする。アドレス変換
テーブル140の各エントリが16ビットであるためで
ある。その上に、仮想アドレス上位2430、プロセス
番号2420、テーブル管理レジスタ情報2410の順
に積み上げ、これを実アドレスとしてアドレス変換テー
ブル140をアクセスする。アドレス変換テーブル14
0は、各プロセス毎に8KBのテーブル(=16ビット
×4Kエントリ)が16個存在する形式になる。
Here, the virtual address upper 2430, the table management register information 2410, the process number information 24
20, a real address calculation method for drawing an entry in the address conversion table 140 will be described with reference to FIG. The least significant bit is automatically set to 0. This is because each entry of the address conversion table 140 has 16 bits. The virtual address upper 2430, the process number 2420, and the table management register information 2410 are piled up in that order, and the address conversion table 140 is accessed using this as a real address. Address conversion table 14
0 has a format in which 16 8 KB tables (= 16 bits × 4K entries) exist for each process.

【0083】アドレス変換テーブル140の各エントリ
の内容を、図18に示す。各エントリは、アドレス変換
のための実ページ番号2460の他に、Vビット261
0、Rビット2620、Mビット2630とを持つ。各
ビットの意味を図19に示す。
The contents of each entry of the address conversion table 140 are shown in FIG. Each entry has a V bit 261 in addition to the real page number 2460 for address translation.
0, R bit 2620, and M bit 2630. The meaning of each bit is shown in FIG.

【0084】本実施の形態でもう一つ重要な動作は、デ
ータ転送の前に、ネットワークアダプタ30中の送信制
御レジスタ70にあらかじめプロセス番号およびノード
番号をセットしておく動作である。送信制御レジスタ7
0の構成を図3に示す。これは複数のレジスタからな
る。これらは、ユーザI/O領域2150にマッピングさ
れ、たレジスタ群70Bと、OS専用のI/O領域215
0にマッピングされたレジスタ群70Aとからなる。各
レジスタはいわゆるI/Oマッピング方法により実アドレ
ス空間の中にマッピングされている。ユーザプロセスか
らのアクセスの可否は、アクセスしようとするアドレス
がOS専用I/O領域2140にマッピングされるか、
ユーザ用I/O領域2150にマッピングされるかによ
り決まる。言い換えれば、ユーザプロセスから見ると、
OS専用I/O領域に属するアドレスを有するレジスタ
をアクセスする為のエントリがアドレス変換テーブル1
40に存在しないか、もしくはそのエントリが存在した
としてもVビットが0であるために、アドレス変換時点
でアクセスが拒否されることになる。
Another important operation in this embodiment is an operation of setting the process number and the node number in the transmission control register 70 in the network adapter 30 in advance before data transfer. Transmission control register 7
0 is shown in FIG. It consists of multiple registers. These are mapped to the user I / O area 2150, the register group 70B, and the OS-dedicated I / O area 215.
Register group 70A mapped to 0. Each register is mapped in the real address space by the so-called I / O mapping method. Whether the access from the user process is permitted or not is whether the address to be accessed is mapped to the OS dedicated I / O area 2140,
It is determined depending on whether it is mapped to the user I / O area 2150. In other words, from the perspective of the user process,
The address conversion table 1 is an entry for accessing a register having an address belonging to the OS-dedicated I / O area.
40 does not exist, or even if the entry exists, the V bit is 0, so access is denied at the time of address translation.

【0085】図3に示す送信制御レジスタ70内の、O
S専用I/O領域2140に属するアドレスにマッピン
グされたレジスタ群70Bには、現在実行中のプロセス
番号を記録するフィールド1210と、そのネットワー
クアダプタ30が載っているノードの番号を記録するフ
ィールド1220とが存在する。図1の例では、ノード
10に与えられたノード番号が送信制御レジスタ70の
フィールド1220に保持される。ノード番号はシステ
ム立ち上げ時にセットし、プロセス番号はプロセススイ
ッチの際にOSが設定する。
O in the transmission control register 70 shown in FIG.
In the register group 70B mapped to the address belonging to the S-dedicated I / O area 2140, a field 1210 for recording the process number of the currently executing process and a field 1220 for recording the number of the node on which the network adapter 30 is mounted are provided. Exists. In the example of FIG. 1, the node number given to the node 10 is held in the field 1220 of the transmission control register 70. The node number is set at system startup, and the process number is set by the OS at the time of process switch.

【0086】また、図2のテーブル管理レジスタ80、
バッファ管理レジスタ190にもOSが値をセットす
る。図5に示すように、テーブル管理レジスタ80に
は、アドレス変換テーブル140の先頭の実アドレスを
格納する。OSがOS領域130の中に転送バッファ3
70のための領域を、1MBの倍数分、ページ境界に合
わせて確保する。この領域の確保の際、バッファ管理レ
ジスタ190内のカレントバッファアドレス1610
(図6)にその領域の先頭アドレスをセットし、バッフ
ァエンドアドレス1620(図6)にその領域の末尾ア
ドレスより1MB+28Bを引いた値をセットする。O
Sは、転送バッファ370に転送データを格納する度
に、格納したデータの長さだけカレントバッファアドレ
ス1610を増加させる。その動作は<2.2.3>に
示す。この時、カレントバッファアドレス1610の値
がバッファエンドアドレス1620を超えると、CPU
20に割込要求を出す。前述の通り、転送データ長は最
大1MBであり、後述するパケットヘッダと合わせて
も、一度にバッファに格納する最大長は、1MB+28
Bである。よって以上の処理により、最後の1転送につ
いては、完全に転送バッファ370に格納できることが
保証できる。
Further, the table management register 80 of FIG.
The OS also sets a value in the buffer management register 190. As shown in FIG. 5, the table management register 80 stores the first real address of the address conversion table 140. The OS transfers the transfer buffer 3 in the OS area 130.
An area for 70 is reserved for a page boundary for a multiple of 1 MB. When securing this area, the current buffer address 1610 in the buffer management register 190
The start address of the area is set in (FIG. 6), and the value obtained by subtracting 1MB + 28B from the end address of the area is set in the buffer end address 1620 (FIG. 6). O
Each time S stores transfer data in the transfer buffer 370, the current buffer address 1610 is increased by the length of the stored data. The operation is shown in <2.2.3>. At this time, if the value of the current buffer address 1610 exceeds the buffer end address 1620, the CPU
Issue an interrupt request to 20. As described above, the maximum transfer data length is 1 MB, and the maximum length that can be stored in the buffer at one time is 1 MB + 28 even with the packet header described later.
B. Therefore, by the above processing, it can be guaranteed that the last one transfer can be completely stored in the transfer buffer 370.

【0087】転送バッファ管理における上記の割込を受
けると、OSは新たに主記憶上にバッファ領域を用意
し、これを転送バッファ370の末尾アドレスからつな
がる領域になるようアドレス変換テーブル140を用い
て設定し、それに合わせてバッファエンドアドレス16
20を更新する。このときの動作は<2.2.3>にも
示す。
When the above-mentioned interrupt in the transfer buffer management is received, the OS newly prepares a buffer area in the main memory, and uses the address conversion table 140 so that this area becomes an area connected from the end address of the transfer buffer 370. Set and end buffer end address 16
Update 20. The operation at this time is also shown in <2.2.3>.

【0088】テーブル管理レジスタ80、バッファ管理
レジスタ190も、図14および<2.1>で説明した
OS専用I/O領域2140内にマッピングされ、OS
しかアクセスできない。
The table management register 80 and the buffer management register 190 are also mapped in the OS-dedicated I / O area 2140 described in FIG.
Only accessible.

【0089】実際にCPU20が送信制御レジスタ7
0、テーブル管理レジスタ80、バッファ管理レジスタ
190をアクセスする上で発生する信号の流れと、CP
U20がネットワークアダプタ30中の上記レジスタ群
にアクセスする手順とを図1、図2を用いて説明する。
The CPU 20 actually causes the transmission control register 7
0, the flow of signals generated when accessing the table management register 80, the buffer management register 190, and the CP
A procedure for the U20 to access the register group in the network adapter 30 will be described with reference to FIGS.

【0090】CPU20は、線a10に、OS専用I/
O領域に存在するレジスタ群の一つのレジスタに対する
アドレスのリクエストを出す。このアドレス値は、図1
4に示すOS専用I/O領域2140内に用意した、送
信制御レジスタ70、テーブル管理レジスタ80、バッ
ファ管理レジスタ190の一つへのアドレスであること
から、主記憶制御部40は、受け取ったリクエストをネ
ットワークアダプタ30へ線a20を通して出す。リク
エストは、ネットワークアダプタ30内のセレクタ42
0に伝達される。セレクタ420はアドレス値より、リ
クエストが送信制御レジスタ70へのものか、テーブル
管理レジスタ80へのものか、バッファ管理レジスタ1
90へのものか判断し、それに応じて線c30、c5
5、c75の内の対応する一つをアクティブにする。以
上の一連の動作に伴い、線d10、主記憶制御部40、
線d20を通して、CPU20と送信制御レジスタ7
0、テーブル管理レジスタ80、バッファ管理レジスタ
190との間でデータをやり取りすることができるよう
になる。
The CPU 20 displays the I / O dedicated to the OS on the line a10.
A request for an address is issued to one of the registers existing in the O area. This address value is
4 is an address to one of the transmission control register 70, the table management register 80, and the buffer management register 190 prepared in the OS-dedicated I / O area 2140 shown in FIG. To the network adapter 30 through the line a20. The request is made by the selector 42 in the network adapter 30.
0 is transmitted. Based on the address value, the selector 420 determines whether the request is for the transmission control register 70, the table management register 80, or the buffer management register 1
90 to determine the lines c30 and c5 accordingly
The corresponding one of 5 and c75 is activated. With the above series of operations, the line d10, the main memory control unit 40,
Through the line d20, the CPU 20 and the transmission control register 7
0, the table management register 80, and the buffer management register 190 can exchange data.

【0091】<2.2.2>送信側ノードの動作 送信側の動作を、図1のノード10、および図2を中心
にして、順を追って説明する。なお、以下の説明におけ
る””で囲む数字は、2進数表示の値である。 [1]送信起動 ユーザプログラム中からデータ転送命令PUT(図2
0)が発行されたのを契機にして、CPU20は送信起
動処理を開始する。CPU20は、線a10に、送信制
御レジスタ70のうちユーザ用I/O領域に存在するレ
ジスタ群70Aに対応するアドレスのリクエストを出
す。このアドレス値は、図14に示すユーザ用I/O領
域2150内に用意した、送信制御レジスタ70へ格納
すべき情報へのアドレスであることから、主記憶制御部
40は、受け取ったリクエストをネットワークアダプタ
30へ線a20を通して出す。リクエストは、ネットワ
ークアダプタ30内のセレクタ420に伝達される。セ
レクタ420はアドレス値より送信制御レジスタ70へ
のCPU20からのアクセスリクエストであることを判
別し、線c30をアクティブにする。以上の一連の動作
に伴い、線d10、主記憶制御部40、線d20を通し
て、CPU20と送信制御レジスタ70との間でデータ
をやり取りすることができるようになる。
<2.2.2> Operation of Transmission-Side Node The operation of the transmission-side node will be described step by step, focusing on the node 10 in FIG. 1 and FIG. The numbers enclosed by "" in the following description are values in binary notation. [1] Transmission start Data transfer instruction PUT (see FIG. 2) from the user program.
0) is issued, the CPU 20 starts the transmission start processing. The CPU 20 issues to the line a10 a request for an address corresponding to the register group 70A existing in the user I / O area of the transmission control register 70. Since this address value is an address to information to be stored in the transmission control register 70 prepared in the user I / O area 2150 shown in FIG. 14, the main memory control unit 40 sends the received request to the network. The line a20 is put out to the adapter 30. The request is transmitted to the selector 420 in the network adapter 30. Based on the address value, the selector 420 determines that it is an access request from the CPU 20 to the transmission control register 70, and activates the line c30. With the series of operations described above, it becomes possible to exchange data between the CPU 20 and the transmission control register 70 through the line d10, the main memory control unit 40, and the line d20.

【0092】CPU20の送信制御レジスタ70へのア
クセスは次の通りである。まず、CPU20は制御レジ
スタ状態1010をリードする。制御レジスタ状態フィ
ールド1010に、以前起動したデータ転送のために送
信制御レジスタ70の使用が終了していない場合には1
がすでにセットされている。送信制御レジスタ70の使
用が終了したときには、0がセットされている。もし、
読み出した情報がこのレジスタの使用が終了していない
ことを示すときには、CPU20は送信制御レジスタ7
0が使用可能になるまで、制御レジスタ状態1010に
対するポーリングを行い、待つ。このレジスタが使用可
能となったときには、CPUは、ユーザプログラム中の
データ転送命令PUT(図20)により指定された9つ
のパラメータを送信制御レジスタ70内にセットする。
最後にCPU20は、送信制御レジスタ70中の転送起
動フィールド1020に対して、転送起動状態にあるこ
とを示す”00”をライトする。これにより、送信制御
部410が起動され、ネットワークアダプタ30が次の
ようにしてデータ送信動作を開始する。
The access of the CPU 20 to the transmission control register 70 is as follows. First, the CPU 20 reads the control register status 1010. The control register status field 1010 is set to 1 if the use of the transmission control register 70 has not been completed due to the previously activated data transfer.
Has already been set. When the use of the transmission control register 70 is completed, 0 is set. if,
When the read information indicates that the use of this register is not completed, the CPU 20 determines that the transmission control register 7
Poll and wait for control register state 1010 until 0 is available. When this register becomes available, the CPU sets in the transmission control register 70 nine parameters specified by the data transfer instruction PUT (FIG. 20) in the user program.
Finally, the CPU 20 writes “00” indicating that the transfer is in the transfer start state in the transfer start field 1020 in the transmission control register 70. As a result, the transmission control unit 410 is activated, and the network adapter 30 starts the data transmission operation as follows.

【0093】[2]転送元フラグの更新(1) 送信制御部410は、起動されると、転送起動処理を受
けて、送信制御レジスタ70の転送元フラグアドレス1
040(図3)で指定される、主記憶50上の転送元フ
ラグ110に、送信動作開始を表す値0001(図12
参照)を書き込むことを要求する書き込み要求を、線a
50を通して主記憶アクセス部400に出す。、この書
き込み要求は、上記フィールド1040内の転送先フラ
グアドレスと、すでにOSにより設定されていた、送信
制御レジスタ70内のプロセス番号1210との組を主
記憶アドレスとして指定する。主記憶アクセス部400
は、線a70を通して、転送元フラグ110の仮想アド
レスおよびプロセス番号をアドレス変換部480に出
す。アドレス変換部480は、前述の方法によりアドレ
ス変換テーブル140内のエントリのアドレスを計算
し、その結果得られる実アドレスを線a75を通して、
主記憶アクセス部400に出す。主記憶アクセス部40
0は、その実アドレスを有するデータの読み出しリクエ
ストを線a55、ミキサ490、線a30、主記憶制御
部40、線a40を通じて、アドレス変換テーブル14
0に対して出す。同時に、主記憶アクセス部400は、
線c45を通して、スイッチ500をアドレス変換部4
80に切り替える。アドレス変換テーブル140から読
み出された、アドレス変換情報(図18参照)は線d5
0,主記憶制御部40、線d30、スイッチ500、線
d80を通して、アドレス変換部480に入る。アドレ
ス変換部480は得られたアドレス変換情報の内、Vビ
ット2610が0であれば線c10を通してCPU20
に割込をかける。これは、Vビット2610が0である
ということは、ユーザが指定した転送要求が不当であっ
たことを示すからである。よって、OSに処理を渡し、
プロセスのキルなどの適切な処理をとる。また、Rビッ
ト2620、Mビット2630がともに0である場合に
も、CPU20にc10を通して割込をかける。転送元
フラグ110はユーザ制御領域90、つまり主記憶固定
の領域に存在する必要があるため、OSはこの割込を受
けると、ユーザが指定した転送要求が不当であったとみ
なし、プロセスのキルなどの適切な処理をとる。
[2] Update of transfer source flag (1) When the transmission control unit 410 is activated, the transmission control unit 410 receives the transfer activation process, and transfers the transmission source flag address 1 of the transmission control register 70.
In the transfer source flag 110 on the main memory 50 designated by 040 (FIG. 3), a value 0001 (FIG.
A write request requesting to write
50 to the main memory access unit 400. The write request designates a set of the transfer destination flag address in the field 1040 and the process number 1210 in the transmission control register 70, which has already been set by the OS, as a main storage address. Main memory access unit 400
Outputs the virtual address and process number of the transfer source flag 110 to the address conversion unit 480 via the line a70. The address translation unit 480 calculates the address of the entry in the address translation table 140 by the method described above, and the real address obtained as a result is passed through the line a75,
The data is output to the main memory access unit 400. Main memory access unit 40
0 indicates a read request for data having the real address through the line a55, the mixer 490, the line a30, the main memory control unit 40, and the line a40 to obtain the address conversion table 14
Put out for 0. At the same time, the main memory access unit 400
The switch 500 is connected to the address conversion unit 4 through the line c45.
Switch to 80. The address translation information (see FIG. 18) read from the address translation table 140 is the line d5.
0, the main memory control unit 40, the line d30, the switch 500, and the line d80 to enter the address conversion unit 480. If the V bit 2610 is 0 among the obtained address translation information, the address translation unit 480 sends the CPU 20 through the line c10.
Interrupt. This is because the V bit 2610 being 0 indicates that the transfer request designated by the user was invalid. Therefore, the process is passed to the OS,
Take appropriate action such as killing the process. Also, when both the R bit 2620 and the M bit 2630 are 0, the CPU 20 is interrupted through c10. Since the transfer source flag 110 needs to exist in the user control area 90, that is, the area fixed to the main memory, when the OS receives this interrupt, the OS considers that the transfer request specified by the user is invalid, and kills the process. Take appropriate treatment of.

【0094】正当にアドレス変換テーブル情報がアクセ
スできると、その中の実ページ番号2460(図18)
に基づき、アドレス変換部480は転送元フラグ110
の実アドレスを計算し、そのアドレスに対して送信開始
を表す値”0001”(図12参照)を書き込むこと
を、線a75を通して主記憶アクセス部400に要求す
る。主記憶アクセス部400は、線a55、ミキサ49
0、線a30、主記憶制御部40、線a40を通し、主
記憶上の転送元フラグ110に対してライトリクエスト
を出すと共に、送信開始を表す値”0001”を線d8
5、ミキサ460、線d40、主記憶制御部40、線d
50を通して転送元フラグ110に対して送出する。
When the address translation table information can be accessed legitimately, the real page number 2460 (FIG. 18) in it can be accessed.
The address conversion unit 480 determines that the transfer source flag 110
The main memory access unit 400 is requested through line a75 to calculate the real address of and write the value "0001" (see FIG. 12) indicating the start of transmission to that address. The main memory access unit 400 has a line a55 and a mixer 49.
0, the line a30, the main memory control unit 40, and the line a40, a write request is issued to the transfer source flag 110 in the main memory, and the value "0001" indicating the start of transmission is set to the line d8
5, mixer 460, line d40, main memory control unit 40, line d
It is sent to the transfer source flag 110 through 50.

【0095】[3]データ転送の開始 次に、送信制御部410は、データ転送パケットを作る
上で必要となる送信制御レジスタ70に蓄えられた情報
を、線c40を通してネットワーク送信部430に送
る。この必要となる情報は、具体的には、図3に示す情
報の内、制御レジスタ状態1010、転送起動ビット1
020以外の情報である。。
[3] Start of Data Transfer Next, the transmission control section 410 sends the information stored in the transmission control register 70, which is necessary for creating a data transfer packet, to the network transmission section 430 through the line c40. This required information is specifically the control register status 1010, transfer start bit 1 among the information shown in FIG.
This is information other than 020. .

【0096】これと同時に、送信制御部410は、転送
元領域120の読み出し要求を主記憶アクセス部400
に出す。主記憶アクセス部400とアドレス変換部48
0は、前記と同様の手順で、アドレス変換テーブル14
0からアドレス変換情報を読み出す。ここで、アドレス
変換部480は、Vビット2610もしくはMビット2
630が0であれば、線c10を通してCPU20に割
込をかける。OSは、Vビット2610が0の場合に
は、プロセスのキルなどの適切な処理をとる。Mビット
が0であれば、外部記憶装置60から転送元領域120
を含むページをスワップインし、転送動作を再開する。
At the same time, the transmission control unit 410 sends a read request for the transfer source area 120 to the main memory access unit 400.
Put out Main memory access unit 400 and address conversion unit 48
0 is the same as the above, and the address conversion table 14
Address translation information is read from 0. Here, the address conversion unit 480 uses the V bit 2610 or the M bit 2
If 630 is 0, the CPU 20 is interrupted through the line c10. When the V bit 2610 is 0, the OS takes appropriate processing such as killing the process. If the M bit is 0, the transfer source area 120 is transferred from the external storage device 60.
Swap in the page containing and restart the transfer operation.

【0097】正当にアドレス変換テーブル情報がアクセ
スできると、その情報に基づき、アドレス変換部480
は転送元領域120の実アドレスが計算できるようにな
る。前記の通り、ハードウェア的にはページをまたがる
データ転送は禁止しているため、転送あたり一度アドレ
ス変換テーブル140をアクセスすればよい。
When the address conversion table information can be accessed legitimately, the address conversion unit 480 is based on the information.
Allows the real address of the transfer source area 120 to be calculated. As described above, data transfer across pages is prohibited in terms of hardware, so the address translation table 140 may be accessed once for each transfer.

【0098】この状態で、次に主記憶アクセス部400
は転送元領域120から転送データを読み出すために、
線a70、アドレス変換部480、線a65、ミキサ4
90、線a30、主記憶制御部40、線a40を通し
て、転送元領域120に対してリードリクエストを転送
データ分だけ発行するとともに、線c45を通してスイ
ッチ500の出力をネットワーク送信部430に切り替
える。転送元領域120から読み出された転送データ
は、線d50,主記憶制御部40、線d30、スイッチ
500、線d70を通してネットワーク送信部430に
伝達する。ネットワーク送信部430は、読み出された
転送データと、送信制御部410から先に送られた、送
信制御レジスタ70内のデータとから、図7に示すパケ
ットを生成し、線c10を通して、プロセッサ間ネット
ワーク1000に出す。なお、図7のパケットフォーマ
ットの内、有効ビット1710は1(有効)にセットさ
れる。また、パケットタイプ1720には、データ送信
を示す”00”が入れられる。パケットタイプ1720
について、その値と意味とを図11に示す。リプライパ
ケットについては、後に[5]に記述する。
In this state, next, the main memory access unit 400
To read the transfer data from the transfer source area 120,
Line a70, address conversion unit 480, line a65, mixer 4
90, the line a30, the main memory control unit 40, and the line a40, a read request for the transfer data is issued to the transfer source area 120, and the output of the switch 500 is switched to the network transmission unit 430 through the line c45. The transfer data read from the transfer source area 120 is transmitted to the network transmission unit 430 through the line d50, the main memory control unit 40, the line d30, the switch 500, and the line d70. The network transmission unit 430 generates the packet shown in FIG. 7 from the read transfer data and the data in the transmission control register 70 that was previously transmitted from the transmission control unit 410, and the packet shown in FIG. Send to network 1000. In the packet format of FIG. 7, the valid bit 1710 is set to 1 (valid). Further, "00" indicating data transmission is entered in the packet type 1720. Packet type 1720
FIG. 11 shows the values and meanings of the above. The reply packet will be described later in [5].

【0099】プロセッサ間ネットワーク1000は、パ
ケットの先頭の情報を元に、転送先となるノード210
のネットワークアダプタ230へと、線n20を通して
伝達する。これから先のノード210側の動作について
は、<2.2.3>に記述する。
The interprocessor network 1000 uses the information at the beginning of the packet to transfer the node 210 that is the transfer destination.
To the network adapter 230 of the above through the line n20. The operation on the node 210 side from now on is described in <2.2.3>.

【0100】[4]転送元フラグの更新(2) [2]と同じ手順で、送信制御部410は転送元フラグ
110を、送信完了を表す”0010”に更新する。
[4] Update of transfer source flag (2) By the same procedure as in [2], the transmission control unit 410 updates the transfer source flag 110 to "0010" indicating completion of transmission.

【0101】[5]書込完了通知の受信と転送元フラグ
の更新(3) 受信側ノード210において、転送データを主記憶50
に書き終えた際に(<2.2.3>参照)、リプライパ
ケット(図8参照)を受信制御部440より返す。リプ
ライパケットには、(1)受信側ノード210で転送デ
ータを転送先領域340に書き込んだ場合に返される、
パケットタイプ1910が”01”のパケット(図11
参照)と、(2)受信側ノード210で転送データを転
送バッフ370に書き込んだ場合に返るパケットタイプ
1910が”10”のパケットとがある。受信側ノード
210がこれらのパケットを送る動作は、<2.2.3
>で説明する。
[5] Reception of write completion notification and update of transfer source flag (3) In the receiving side node 210, transfer data is stored in the main memory 50.
Upon completion of writing (see <2.2.3>), a reply packet (see FIG. 8) is returned from the reception control unit 440. The reply packet is (1) returned when the transfer data is written in the transfer destination area 340 by the receiving side node 210,
A packet whose packet type 1910 is "01" (see FIG. 11)
2) and (2) a packet whose packet type 1910 is “10” which is returned when the transfer data is written in the transfer buffer 370 by the receiving side node 210. The operation by the receiving node 210 to send these packets is <2.2.3.
>.

【0102】これらのパケットを送信側のノード10の
ネットワークアダプタ30内のネットワーク受信部45
0が、プロセッサ間ネットワーク1000より線n20
を通して受け取ると、そのパケットの情報は一旦受信制
御レジスタ170に格納される。受信制御レジスタの構
成を図4に示す。なお、パケットに含まれない情報、例
えば、転送データ長1350のフィールドについて
は、”0”が入る。受信制御レジスタ170にパケット
情報が入ると、その情報に基づき受信制御部440は線
a60を通して、転送元フラグ110の更新を主記憶ア
クセス部400に要求する。後は、[3]と同様に転送
元フラグ110が更新される。パケットタイプ1910
が”01”のパケットに対しては、転送元フラグ110
を”1010”に更新し、。パケットタイプ1910
が”10”のパケットに対しては、転送元フラグ110
を”0110”に更新する。
The network receiving unit 45 in the network adapter 30 of the node 10 on the transmission side transmits these packets.
0 is the line n20 from the interprocessor network 1000.
When the packet is received through, the packet information is temporarily stored in the reception control register 170. The structure of the reception control register is shown in FIG. It should be noted that "0" is entered for information not included in the packet, for example, for the field of the transfer data length 1350. When the packet information is stored in the reception control register 170, the reception control unit 440 requests the main memory access unit 400 to update the transfer source flag 110 through the line a60 based on the information. After that, the transfer source flag 110 is updated as in [3]. Packet type 1910
For the packet with “01”, the transfer source flag 110
Is updated to "1010". Packet type 1910
For the packet with “10”, the transfer source flag 110
Is updated to "0110".

【0103】<2.2.3>受信側ノードの動作 [1]受信起動 受信側ノードのネットワークアダプタ230では、転送
データがプロセッサ間ネットワーク1000よりネット
ワーク受信部450に到着すると、受信動作が起動され
る。受信した転送データパケットの先頭の情報(図7参
照)は、線c65を通して受信制御レジスタ170に記
録される。
<2.2.3> Operation of Receiving Side Node [1] Activation of Receiving In the network adapter 230 of the receiving side node, when transfer data arrives at the network receiving section 450 from the interprocessor network 1000, the receiving operation is activated. It The top information (see FIG. 7) of the received transfer data packet is recorded in the reception control register 170 through the line c65.

【0104】[2]フラグチェック 受信制御レジスタ170の情報に従い、受信制御部44
0が起動される。受信制御部440は、<2.2.2>
[5]と同様にして転送制御フラグ330へアクセスリ
クエストを出す。但し、本アクセス動作は<2.2.2
>[5]の動作がライト動作であるのに対し、リード動
作である。リードしたデータは、ネットワークアダプタ
230内のスイッチ500を通り、受信制御部440に
格納される。受信制御部440は、転送制御フラグ33
0内のセマフォア値2010と到着パケット内の比較値
1080とが、到着パケット内の比較方法1090で示
される方法で比較する(図10参照)。
[2] Flag check According to the information in the reception control register 170, the reception control unit 44
0 is activated. The reception control unit 440 uses <2.2.2>
An access request is issued to the transfer control flag 330 similarly to [5]. However, this access operation is <2.2.2
The operation of [5] is a write operation, while the operation is a write operation. The read data passes through the switch 500 in the network adapter 230 and is stored in the reception control unit 440. The reception control unit 440 uses the transfer control flag 33.
The semaphore value 2010 in 0 and the comparison value 1080 in the arrival packet are compared by the method shown by the comparison method 1090 in the arrival packet (see FIG. 10).

【0105】[3]転送先領域340が主記憶50内に
存在することの確認 受信制御部440は、上記比較の結果、上記比較方法1
090が示す条件が成立する場合には、転送先領域34
0が主記憶50上に存在するかどうか確認する。具体的
には、<2.2.2>[3]でデータ転送を開始するの
にあたり、転送元領域120が主記憶50に存在するか
否かを確認する場合と同様にアドレス変換部480をこ
の確認に使用する。違いは、転送元領域120が主記憶
50上に存在しない場合には、アドレス変換部480は
線c10を通してCPU20に割込をかけていたが、転
送先領域340が主記憶50上に存在しない場合には、
アドレス変換部480は線c50を通して受信制御部4
40にその旨を伝える。
[3] Confirmation that the transfer destination area 340 exists in the main memory 50 The reception control unit 440, as a result of the above comparison, the above comparison method 1
When the condition indicated by 090 is satisfied, the transfer destination area 34
It is confirmed whether 0 exists in the main memory 50. Specifically, when starting data transfer in <2.2.2> [3], the address conversion unit 480 is set in the same manner as in the case of confirming whether or not the transfer source area 120 exists in the main memory 50. Used for this confirmation. The difference is that when the transfer source area 120 does not exist in the main memory 50, the address conversion unit 480 interrupts the CPU 20 through the line c10, but the transfer destination area 340 does not exist in the main memory 50. Has
The address translation unit 480 sends the reception control unit 4 through the line c50.
Tell 40 to that effect.

【0106】なお、受信制御部440は、上記比較の結
果、上記比較方法1090が示す条件が成立しない場合
には、転送先領域340の主記憶50内の存在確認は行
わない。
Note that the reception control unit 440 does not confirm the existence of the transfer destination area 340 in the main memory 50 if the condition indicated by the comparison method 1090 is not satisfied as a result of the comparison.

【0107】[4]転送先フラグの更新(1) 次に説明するように、受信制御部440は、上記[2]
で、上記比較方法1090が示す条件が成立すると判定
し、かつ、上記[3]で、転送先領域340が主記憶5
0内に存在すると確認した場合には、転送データを主記
憶50上の転送先領域340に書き込む動作を起動す
る。それ以外の場合には、転送データを転送バッファ3
70に蓄える動作を起動する。受信制御部440は、こ
れらの動作の前に、いずれの動作を行うかに従って、転
送先フラグ320を更新する。これは、<2.2.2>
における転送元フラグの更新と同様の動作で実現する。
なお、更新後のフラグの値は、図13に示すように、受
信中書き込み中の状態あるいは受信中バッファリング中
を示す0001または0011である。
[4] Update of transfer destination flag (1) As described below, the reception control section 440 causes the reception control section 440 to perform the above [2].
Then, it is determined that the condition indicated by the comparison method 1090 is satisfied, and the transfer destination area 340 is stored in the main memory 5 in [3].
If it is confirmed that it exists in 0, the operation of writing the transfer data to the transfer destination area 340 in the main memory 50 is activated. Otherwise, transfer data is transferred to the transfer buffer 3
The operation stored in 70 is started. The reception control unit 440 updates the transfer destination flag 320 according to which operation is performed before these operations. This is <2.2.2>
This is realized by the same operation as the updating of the transfer source flag in.
The value of the updated flag is 0001 or 0011, which indicates the state of writing during reception or the state of buffering during reception, as shown in FIG.

【0108】更に、転送制御フラグ330との比較の結
果、転送バッファ370にデータを蓄えることになった
場合には、転送制御フラグ330のバッファリング数フ
ィールド(図9の2020)をカウントアップする。こ
のバッファリング数の値は、プログラムでセマフォア値
2010を更新する際に、転送バッファ370にデータ
が蓄積されているかどうか判断するための目安に使用す
る。このカウントアップ動作も他のフラグ更新と同様の
手順を必要とする。
Furthermore, if the transfer buffer 370 stores data as a result of comparison with the transfer control flag 330, the buffering number field (2020 in FIG. 9) of the transfer control flag 330 is counted up. The value of the buffering number is used as a standard for determining whether or not data is accumulated in the transfer buffer 370 when the semaphore value 2010 is updated by the program. This count-up operation also requires the same procedure as other flag updates.

【0109】[5]転送データの主記憶50への書き込
み 受信制御部440は、上記[2]で、上記比較方法10
90が示す条件が成立すると判定したが、上記[3]
で、転送先領域340が主記憶50内に存在しないと確
認した場合は、あるいは上記[2]で、上記比較方法が
示す条件が成立しないと判定した場合には、転送データ
を主記憶50上の転送バッファ370に書き込む動作を
起動する。
[5] Writing Transfer Data to Main Memory 50 The reception control section 440 uses the comparison method 10 described in [2] above.
It was determined that the condition indicated by 90 was satisfied, but the above [3]
When it is confirmed that the transfer destination area 340 does not exist in the main memory 50, or when it is determined in [2] that the condition indicated by the comparison method is not satisfied, the transfer data is stored in the main memory 50. The write operation to the transfer buffer 370 is started.

【0110】すなわち、転送先領域340が主記憶50
内に存在しない場合、転送データを転送バッファ370
に書き込むことにより、転送先領域340が主記憶から
スワップアウトされていても、転送受信データを有効に
利用可能である。
That is, the transfer destination area 340 is the main memory 50.
If not, the transfer data is transferred to the transfer buffer 370.
By writing the data in, the transfer reception data can be effectively used even if the transfer destination area 340 is swapped out from the main memory.

【0111】また、上記[2]で、上記比較方法109
0が示す条件が成立しない場合は、転送先領域340が
転送先のプロセスが使用中である等の理由により転送先
領域340が書き込みに使用できない場合である。本実
施の形態では、すでに例示したように、受信側のプロセ
スは、そのプログラムの進捗に応じてセマフォア201
0を書き換えるように構成されてる。データを受信した
時点でこの比較方法が指定する条件が成立しなければ、
比較方法2770の値によらずに、強制的に転送データ
を転送バッファ370に格納し、転送データを転送先領
域340に転送しない。後にこの転送データを転送バッ
ファ370から転送先領域340に転送する。これによ
り、データの転送に必要なプロセス間の同期処理のオー
バヘッドを軽減している。
Further, in the above [2], the comparison method 109
If the condition indicated by 0 is not satisfied, the transfer destination area 340 cannot be used for writing because the transfer destination process is in use by the transfer destination process. In the present embodiment, as described above, the process on the receiving side receives the semaphore 201 according to the progress of the program.
It is configured to rewrite 0. If the condition specified by this comparison method is not satisfied when the data is received,
Regardless of the value of the comparison method 2770, the transfer data is forcibly stored in the transfer buffer 370, and the transfer data is not transferred to the transfer destination area 340. Later, this transfer data is transferred from the transfer buffer 370 to the transfer destination area 340. This reduces the overhead of synchronization processing between processes required for data transfer.

【0112】受信制御部440は、転送データの転送バ
ッファ370への書き込みを起動するために、線c70
を通してバッファ制御部470にバッファ書き込み要求
を出す。バッファ制御部470はこの要求を受けて、バ
ッファ管理レジスタ190をチェックし、カレントバッ
ファアドレス1610より現在の書き込み開始アドレス
(仮想アドレス)を把握する。このアドレスは線a80
を通して主記憶アクセス部400に伝わる。主記憶アク
セス部400により、仮想アドレスから実アドレスに変
換するのだが、転送バッファはOS領域130に存在す
るため、プロセス番号としては”0000”を用いて変
換を行う。変換の手順(アドレス変換部480まで変換
情報をフェッチする手段など)は前記と同じ手順を必要
とする。変換したアドレスを線a70、アドレス変換部
480、線a65、ミキサ490などを通して主記憶上
の転送バッファ370に対して出力すると同時に、受信
制御部440は線c60を通して、転送されてきたパケ
ットそのものをネットワーク受信部450から線d9
0,ミキサ460を通して転送バッファ370に落とす
ようにネットワーク受信部450を制御する。
The reception controller 440 activates the line c70 to activate the writing of the transfer data to the transfer buffer 370.
A buffer write request is issued to the buffer control unit 470 through. In response to this request, the buffer control unit 470 checks the buffer management register 190 and grasps the current write start address (virtual address) from the current buffer address 1610. This address is line a80
Through the main memory access unit 400. Although the virtual address is converted to the real address by the main memory access unit 400, since the transfer buffer exists in the OS area 130, the conversion is performed using "0000" as the process number. The conversion procedure (such as means for fetching the conversion information up to the address conversion unit 480) requires the same procedure as described above. The converted address is output to the transfer buffer 370 on the main memory through the line a70, the address conversion unit 480, the line a65, the mixer 490, and the like, and at the same time, the reception control unit 440 transmits the transferred packet itself to the network via the line c60. The line d9 from the receiving unit 450
0, the network receiving unit 450 is controlled so as to be dropped into the transfer buffer 370 through the mixer 460.

【0113】転送バッファ370に転送データを落とし
た場合には、バッファ制御部470は、それに応じてバ
ッファ管理レジスタ190のカレントバッファアドレス
を更新する。その結果カレントバッファアドレス161
0がバッファエンドアドレス1620(ここには、本当
のバッファの末端から1MB+α少ない値を格納してあ
る)よりも大きく成った場合には、バッファ制御部47
0から線c10を通してCPUに割込をかける。CPU
は新たなページをバッファ用に確保し、これを確保済み
の転送バッファ370に連結し、このバッファの領域を
拡大する。
When the transfer data is dropped to the transfer buffer 370, the buffer control unit 470 updates the current buffer address of the buffer management register 190 accordingly. As a result, the current buffer address 161
When 0 becomes larger than the buffer end address 1620 (here, a value 1 MB + α less than the end of the true buffer is stored), the buffer control unit 47.
Interrupt the CPU from 0 through line c10. CPU
Secures a new page for the buffer, connects it to the secured transfer buffer 370, and expands the area of this buffer.

【0114】受信制御部440は、上記[2]で、上記
比較方法が示す条件が成立すると判定し、かつ、上記
[3]で、転送先領域340が主記憶50内に存在する
と確認した場合には、転送データを主記憶50上の転送
先領域340に書き込む動作を起動する。すなわち、こ
の場合は、転送先領域340が主記憶50内にスワップ
インされており、かつ、転送先領域340を転送先のプ
ロセスが使用終了した場合であり、この場合には転送デ
ータは直ちに、転送先領域340に書き込む。この書き
込み動作も、上に述べた、転送データを転送バッファ3
70に格納する動作と同様に行われる。但しアドレス変
換に用いるプロセス番号は、転送されてきたパケットに
付加されてきた転送先のプロセスの番号を用いる。ま
た、転送バッファ370への書き込みと違い、転送され
てきたパケットの制御情報を切り落とした、データのみ
転送先領域340に書き込む。
When the reception control unit 440 determines in [2] that the condition indicated by the comparison method is satisfied and also in [3] that the transfer destination area 340 exists in the main memory 50. First, the operation of writing the transfer data to the transfer destination area 340 on the main memory 50 is activated. That is, in this case, the transfer destination area 340 is swapped into the main memory 50, and the transfer destination process is finished using the transfer destination area 340. In this case, the transfer data is immediately transferred. Write to the transfer destination area 340. This write operation also applies to the transfer data transfer buffer 3 described above.
The same operation as that of storing in 70 is performed. However, as the process number used for the address conversion, the number of the transfer destination process added to the transferred packet is used. Further, unlike writing to the transfer buffer 370, only the data in which the control information of the transferred packet is cut off is written to the transfer destination area 340.

【0115】[6]転送先フラグの更新(2) 主記憶50への書き込み終了後、転送先フラグ320を
更新する。これは、<2.2.2>における転送元フラ
グの更新と同様の動作で実現する。なお、更新後の値
は、図13に示すように、受信完了バッファリング済み
の状態あるいは受信完了書き込み完了の状態を示す01
10または0100である。
[6] Update of transfer destination flag (2) After the completion of writing to the main memory 50, the transfer destination flag 320 is updated. This is realized by the same operation as the update of the transfer source flag in <2.2.2>. It should be noted that the updated value is 01 indicating the reception completion buffered state or the reception completion write completed state, as shown in FIG.
It is 10 or 0100.

【0116】[7]リプライパケットの返送 主記憶50への書き込み完了を、送信側ノード10に通
達するため、リプライパケット(図8)を返送する。こ
れは、受信制御部440より、リプライパケット生成に
必要な情報を線d65で送信制御レジスタ70に送り、
線c35で起動をかけることで実行する。起動のかけ方
は、<2.2.2>でCPU20が行ったのと同様の手
順を踏む必要がある。
[7] Return of reply packet In order to notify the sender node 10 of the completion of writing to the main memory 50, a reply packet (FIG. 8) is returned. This is because the reception control unit 440 sends information necessary for reply packet generation to the transmission control register 70 by a line d65,
It is executed by activating the line c35. The activation procedure needs to follow the same procedure as that performed by the CPU 20 in <2.2.2>.

【0117】[8]転送バッファ370から転送先領域
340への転送データの移動 上記動作[5]において、転送データを転送先領域34
0に書き込めた場合は、以上で受信ノードの動作は終了
する。しかし、転送バッファ370に転送データを格納
した場合には、この転送データを適当なタイミング転送
バッファ370から転送先領域340へ引き出す必要が
ある。転送バッファはOS管理領域に存在するため、引
き出すのはOSが行うしかない。引き出す契機は、転送
データを転送バッファ370に転送したときの事情に依
存して異なる。以下ではそれぞれの契機に関して説明す
る。
[8] Transfer of Transfer Data from Transfer Buffer 370 to Transfer Destination Area 340 In the above operation [5], transfer data is transferred to the transfer destination area 34.
When it is possible to write 0, the operation of the receiving node is completed. However, when the transfer data is stored in the transfer buffer 370, it is necessary to extract this transfer data from the appropriate timing transfer buffer 370 to the transfer destination area 340. Since the transfer buffer exists in the OS management area, the OS can only pull it out. The trigger for withdrawing differs depending on the circumstances when the transfer data is transferred to the transfer buffer 370. Each trigger will be described below.

【0118】(1)転送データの受信時に、転送先領域
340が主記憶50内に存在しなかったとき この場合には、転送先領域340を含むページに対して
転送先プロセスが後にデータ読み出し命令(たとえば、
ロード命令)を発行したときに、転送バッファ370か
ら転送先領域340へ転送データを移動する。すなわ
ち、この場合には、CPU20がこの命令を実行すると
きに、この命令が指定する仮想アドレスを実アドレスに
変換する過程でページフォールトが発生する。このペー
ジフォールトの処理の中で、転送バッファ370から転
送先領域340へ転送データを移動する。
(1) When the transfer destination area 340 does not exist in the main memory 50 at the time of receiving the transfer data In this case, the transfer destination process sends a data read instruction to the page including the transfer destination area 340. (For example,
When the load command) is issued, the transfer data is moved from the transfer buffer 370 to the transfer destination area 340. That is, in this case, when the CPU 20 executes this instruction, a page fault occurs in the process of converting the virtual address designated by this instruction into a real address. In the processing of this page fault, the transfer data is moved from the transfer buffer 370 to the transfer destination area 340.

【0119】このページフォルトを契機にOSに処理が
移る。本実施の形態では図23のようにページフォール
ト処理を実行するルーチンをOS内に設ける。すなわ
ち、ページフォールトに対応して空きページを用意した
後、上記命令が要求するページのデータが転送バッファ
370中に存在するかどうかについて、全ての転送バッ
ファ370を検査する(ステップ4020)。転送バッ
ファ370に蓄積されたデータは、パケットヘッダ情報
を含む形で残っている。OSは蓄積されたデータがいず
れのページに対するデータであるかをこの情報を使用し
て検索できる。
The processing shifts to the OS triggered by this page fault. In this embodiment, a routine for executing page fault processing is provided in the OS as shown in FIG. That is, after preparing an empty page corresponding to a page fault, all the transfer buffers 370 are inspected as to whether or not the data of the page requested by the above instruction exists in the transfer buffer 370 (step 4020). The data accumulated in the transfer buffer 370 remains in the form including the packet header information. The OS can use this information to search which page the stored data is for.

【0120】このページのデータが転送バッファ370
中に全く存在しなかった場合には、外部記憶装置60よ
りスワップインする(ステップ4030)。要求された
ページのデータの全体が転送バッファ370に存在する
場合には、スワップインを行わずに、転送バッファ37
0内のこのページのデータを転送先領域340へメモリ
コピーする(図中4060)。なお、引き出したデータ
については、パケットヘッダの有効ビット1710に相
当するデータを0(無効)にしておくことで、次回以降
の検索ではそのデータをソフトウェア的に無視すること
ができる。また、可能な場合には、メモリコピーを行わ
ず、仮想アドレスの付け替えだけで済ましてもよい。ま
た、要求されたページの一部が転送バッファ370に存
在した場合には、外部記憶装置60よりそのページのデ
ータをスワップインし(ステップ4040)、その後、
転送バッファ370に存在する、その一部のデータをメ
モリコピーする(ステップ4050)。以上の処理が終
了した後、アドレス変換テーブル140のうち、そのペ
ージ関するMビット2630(図18)を1にセットす
るようにアドレス変換テーブル140を更新する(ステ
ップ4070)。以上により、ページフォルト時に転送
バッファ370から転送データを引き出すことができ
る。
The data of this page is transferred to the transfer buffer 370.
If it does not exist at all, it is swapped in from the external storage device 60 (step 4030). If the entire data of the requested page exists in the transfer buffer 370, the swap-in is not performed and the transfer buffer 37
The data of this page in 0 is memory copied to the transfer destination area 340 (4060 in the figure). Regarding the extracted data, by setting the data corresponding to the valid bit 1710 of the packet header to 0 (invalid), the data can be ignored by software in the subsequent searches. If possible, the memory copy may not be performed and only the virtual address may be replaced. If a part of the requested page exists in the transfer buffer 370, the data of the page is swapped in from the external storage device 60 (step 4040), and then,
A part of the data existing in the transfer buffer 370 is memory copied (step 4050). After the above processing is completed, the address conversion table 140 is updated so that the M bit 2630 (FIG. 18) relating to the page in the address conversion table 140 is set to 1 (step 4070). As described above, the transfer data can be retrieved from the transfer buffer 370 at the time of page fault.

【0121】従来の通常のSEND/RECEIVE型
のデータ転送では、RECEIVE命令を実行した時、
つまり、ユーザプロセスが明示的に引き出しをOSに要
求したときのみ、受信バッファからデータを引き出すの
に対し、PUT型データ転送を用いる本実施の形態で
は、受信側のユーザプロセスが主記憶内のデータに対す
るデータ読み出し命令(たとえば、ロード命令)を発行
するだけで、転送データの引き出し動作が開始され得
る。これは、PUT型データ転送を採用するシステムで
は、受信側プロセスが転送データが転送先領域に書き込
まれたか否かを把握することなく、転送先領域アクセス
できてしまうことに因る。また、従来の通常のSEND
/RECEIVE型のデータ転送では、ユーザプロセス
が転送データの引き出しをOSに要求したとき、OS
は、受信バッファを検索して、要求された転送データが
転送バッファに存在するか否かを検出し、もしそのデー
タが転送バッファに存在する時には、その転送データを
転送すべきページが主記憶に存在するかを検出する。し
かし、PUT型データ転送を用いる本実施の形態では、
ユーザプロセスがデータ読み出し命令を発行し、ページ
フォールトが発生した時点で、この命令で要求されるデ
ータが属するページが転送バッファに存在するか否かを
判定する。この点でも本実施の形態でのデータ転送の利
用手順は、従来の通常のSEND/RECEIVE型の
データ転送における転送データの利用手順とは異なる。
In the conventional normal SEND / RECEIVE type data transfer, when the RECEIVE instruction is executed,
That is, only when the user process explicitly requests the OS to pull out data, the data is pulled out from the reception buffer, whereas in the present embodiment using the PUT type data transfer, the user process on the receiving side stores the data in the main memory. A read operation of transfer data can be started only by issuing a data read command (for example, a load command) to. This is because in the system that employs the PUT type data transfer, the receiving side process can access the transfer destination area without knowing whether or not the transfer data is written in the transfer destination area. In addition, conventional normal SEND
In the / RECEIVE type data transfer, when a user process requests the OS to retrieve transfer data, the OS
Searches the receive buffer to detect whether the requested transfer data exists in the transfer buffer, and if the data exists in the transfer buffer, the page to which the transfer data should be transferred is stored in the main memory. Detect if it exists However, in the present embodiment using PUT type data transfer,
When a user process issues a data read command and a page fault occurs, it is determined whether the page to which the data requested by this command belongs exists in the transfer buffer. Also in this respect, the procedure for using data transfer in the present embodiment is different from the procedure for using transfer data in the conventional normal SEND / RECEIVE type data transfer.

【0122】(2)転送データの受信時に、セマフォ2
010が転送命令が指定する条件を満たさなかったとき この場合は、転送データの受信時に受信側のユーザプロ
セスが転送先領域340を使用中であった場合に生じ
る。この場合には、後に受信側のプロセスが、転送先領
域340の使用を終了した後、転送先領域340に格納
すべき転送データを利用する時点で、受信側のユーザプ
ロセスが転送先フラグ320を検索し、転送バッファ3
70にデータがすでに転送されているか否かを判別す
る。転送バッファ370に転送データが転送されたこと
を検出できた時点で、転送バッファ370から転送先領
域340へ転送データを引き出すことを要求するシステ
ムコールを発行する。ユーザプロセスは、転送データの
受信状態を判別するために、転送先フラグ320を指定
して、それを読み出すことができる。このシステムコー
ルに応答して、OSがこの引き出しを実行する。このと
きの処理は図22に示した具体的なプログラムの例を用
いて先に説明したとおりである。そのプログラムでは、
システムコールは、GETBUF命令であった。命令列
3150Aまたは3150Bに含まれたIF文から転送
先フラグの読み出しを行う命令が生成される。
(2) When the transfer data is received, the semaphore 2
010 does not satisfy the condition specified by the transfer command. This case occurs when the user process on the receiving side is using the transfer destination area 340 at the time of receiving the transfer data. In this case, after the receiving side process finishes using the transfer destination area 340 and then uses the transfer data to be stored in the transfer destination area 340, the receiving side user process sets the transfer destination flag 320. Search and transfer buffer 3
It is determined whether data has already been transferred to 70. When it is detected that the transfer data has been transferred to the transfer buffer 370, a system call requesting that the transfer data be drawn from the transfer buffer 370 to the transfer destination area 340 is issued. The user process can specify the transfer destination flag 320 and read it in order to determine the reception state of the transfer data. The OS executes this withdrawal in response to this system call. The processing at this time is as described above using the specific program example shown in FIG. In that program,
The system call was a GETBUF instruction. An instruction for reading the transfer destination flag is generated from the IF statement included in the instruction sequence 3150A or 3150B.

【0123】なお、転送データの受信時に転送先領域が
主記憶に存在しないで、かつ、セマフォ2010が上記
条件を満たさなかった場合には、システムコール命令あ
るいは前述のメモリアクセス命令のいずれかが実行され
たときに、転送データの移動が行われる。システムコー
ル命令が発行されたときには、ページイン動作を行う必
要がある。
If the transfer destination area does not exist in the main memory when the transfer data is received and the semaphore 2010 does not satisfy the above condition, either the system call instruction or the above memory access instruction is executed. When this is done, the transfer data is moved. When the system call instruction is issued, it is necessary to perform the page-in operation.

【0124】(3)以上の場合以外にも、上記転送デー
タの移動を行わせることが出来る。たとえば、ユーザプ
ロセスが転送制御フラグ330のセマフォア値2010
を更新するのをきっかけに、古いセマフォア値のために
転送バッファ370に蓄積していた転送データを一気に
転送先領域340に移したいとき、ユーザプロセスがシ
ステムコールを発行し、上記転送データの移動をOSが
行う。
(3) In addition to the above case, the transfer data can be moved. For example, if the user process has the semaphore value 2010 of the transfer control flag 330.
When the user wants to transfer the transfer data accumulated in the transfer buffer 370 due to the old semaphore value to the transfer destination area 340 all at once, the user process issues a system call to move the transfer data. The OS does it.

【0125】[9]着信完了に相当するリプライパケッ
トの返送 上記[8]を実行した場合には、<2.2.2>の送信
動作と同様の動作を行うことで、OSのソフトウェア処
理によりリプライパケットを返送する。データ転送パケ
ット送信時と異なり、送信制御レジスタ70の転送起動
フィールド1020に”01”を書き込むことで、リプ
ライパケット(着信確認)が送信できる。必要性はない
はずだが、”10”を書き込めば、ソフトウェア的にバ
ッファリング確認パケットを送信することもできる。
[9] Return of Reply Packet Corresponding to Completion of Incoming Call When the above [8] is executed, the same operation as the transmitting operation of <2.2.2> is performed, and the software processing of the OS is performed. Returns the reply packet. Unlike when transmitting a data transfer packet, by writing "01" in the transfer activation field 1020 of the transmission control register 70, a reply packet (confirmation of arrival) can be transmitted. Although it should not be necessary, if "10" is written, the buffering confirmation packet can be transmitted by software.

【0126】以上説明したところにより、図20に例示
したプログラムが先に説明したように実行される。この
結果、先に説明したように、転送先領域を主記憶に常駐
させなくてもPUT命令を実行できる。さらに、送信側
のユーザプログラムと受信側のユーザプログラムの間の
同期も簡単に行える。
As described above, the program illustrated in FIG. 20 is executed as described above. As a result, as described above, the PUT instruction can be executed without making the transfer destination area resident in the main memory. Further, synchronization between the user program on the transmitting side and the user program on the receiving side can be easily performed.

【0127】<3.変形例>本発明は、以上の実施の形
態に限定されるものではなく、いろいろの変形をカバー
することが可能である。その一つを次に示す。なお、次
に説明するは、ハードウェア構成は変更することなく実
現できる。以下では、先の実施例と異なる部分のみ示
す。
<3. Modifications> The present invention is not limited to the above embodiments, and can cover various modifications. One of them is shown below. Note that, as will be described next, the hardware configuration can be realized without changing. In the following, only parts different from the previous embodiment will be shown.

【0128】<3.1>変形の基本的な思想 転送制御フラグの値は、ユーザプログラムが制御する。
よって、転送制御フラグの値が要因で転送データが転送
バッファ370にバッファリングされたか否かはユーザ
に見えることが必須である。しかし、転送先領域340
が主記憶上に存在するかどうかについては、通常はユー
ザは管理できず、OSの主記憶管理に依る。つまり、転
送先領域340が主記憶上に存在しないことが原因でバ
ッファリングされたことは、転送元フラグ、転送先フラ
グによりユーザに見せる必要はない。
<3.1> Basic Idea of Modification The value of the transfer control flag is controlled by the user program.
Therefore, it is essential for the user to see whether the transfer data is buffered in the transfer buffer 370 due to the value of the transfer control flag. However, the transfer destination area 340
Whether or not exists in the main memory cannot be usually managed by the user and depends on the main memory management of the OS. That is, it is not necessary to show to the user that the transfer destination area 340 has been buffered because it does not exist in the main memory by the transfer source flag and the transfer destination flag.

【0129】<3.2>変形の基本ポイント <1.4>に示した転送制御フラグの具体的使用例で
は、(1)PUT命令3120A(図22)で指定され
た比較値と転送制御フラグbとの比較の結果により、P
UT命令で指定された比較条件を満たさないことから転
送バッファ370に受信データを書き込むケース、およ
び(2)転送先領域340がスワップアウトされていた
ケースの双方とも、転送先フラグrbには転送バッファ
370への書き込み中を表す値0011もしくはそのバ
ッファへの書込完了を表す0110(図13)を設定し
ていた。
<3.2> Basic point of modification In the specific use example of the transfer control flag shown in <1.4>, (1) the comparison value and the transfer control flag designated by the PUT instruction 3120A (FIG. 22). According to the result of comparison with b, P
In both the case where the received data is written in the transfer buffer 370 because the comparison condition specified by the UT instruction is not satisfied, and (2) the case where the transfer destination area 340 is swapped out, the transfer buffer is set in the transfer destination flag rb. The value 0011 indicating that writing to 370 or 0110 (FIG. 13) indicating that writing to the buffer has been completed is set.

【0130】これを変更し、転送先フラグrbに転送バ
ッファ370への書き込み中を表す値0011およびそ
のバッファへの書込完了を表す0110を設定するケー
スを、上記第1のケースに限定する。PUT命令が指定
した比較値が上記条件を満したが、転送先領域が主記憶
になかったときは、上記第1のケースと同様に扱う。第
2のケースの場合には、転送先フラグrbに転送先領域
340への書き込み中を表す値0001あるいはそこへ
の書込完了を表す0100を書き込む。
The case where this is changed and the value 0011 representing the writing to the transfer buffer 370 and 0110 representing the completion of writing to the buffer are set in the transfer destination flag rb is limited to the first case. When the comparison value designated by the PUT instruction satisfies the above condition, but the transfer destination area is not in the main memory, the same processing as in the first case is performed. In the case of the second case, the value 0001 indicating that writing is being performed to the transfer destination area 340 or 0100 that indicates the completion of writing to the transfer destination area 340 is written in the transfer destination flag rb.

【0131】転送元フラグsaの値も、上記第2のケー
スでは、受信データが転送バッファ370にバッファリ
ングされたことを表す値0110(図12)から転送先
領域340への書き込み完了を表す値1010に変更す
る。
In the second case, the value of the transfer source flag sa is also a value from the value 0110 (FIG. 12) indicating that the received data has been buffered in the transfer buffer 370, indicating the completion of writing to the transfer destination area 340. Change to 1010.

【0132】なお、転送元フラグの設定値に関する変更
は、受信側ノードから返答するリプライパケットの値を
変更することにより実現する。つまり、本変形は受信側
ノードの動作のみ変更することにより実現する。以上
は、PUT命令3120B(図22)に関しても全く同
様である。
The change of the set value of the transfer source flag is realized by changing the value of the reply packet returned from the receiving node. That is, this modification is realized by changing only the operation of the receiving side node. The above is exactly the same for the PUT instruction 3120B (FIG. 22).

【0133】<3.3>受信側ノードのプログラム動作
の変更 本変形例において図22に示すプログラムを実行したと
きには、転送制御フラグbまたはaの値は、それぞれP
UT命令3120A、3120Bにより指定された条件
を満たしていたにも関わらず、転送先領域340がスワ
ップアウトされていたために転送バッファ370に受信
データを書き込んだ場合には、受信を待つwait命令
3140A、3140Bが成立した後では転送制御フラ
グbまたはaの値は0100=RFINになっており、
3150Aまたは3150BのIF文ではGETBUF
命令が起動されない。しかし、3160Aまたは316
0BのREAD文で受信データを読み出す際にページフ
ォルトを発生するので、これを契機にOS制御により転
送バッファ370より受信データを読み出す。
<3.3> Change in Program Operation of Receiving Node When the program shown in FIG. 22 is executed in this modification, the value of the transfer control flag b or a is P, respectively.
When the received data is written in the transfer buffer 370 because the transfer destination area 340 has been swapped out even though the conditions specified by the UT commands 3120A and 3120B are satisfied, the wait command 3140A that waits for reception, After 3140B is established, the value of the transfer control flag b or a is 0100 = RFIN,
GETBUF in the IF statement of 3150A or 3150B
The instruction does not fire. However, 3160A or 316
Since a page fault occurs when reading the received data with the READ statement of 0B, the received data is read from the transfer buffer 370 by the OS control triggered by this.

【0134】転送バッファ内のデータを転送先領域に移
動することは、データ読み出し命令が実行された場合に
限らず、転送先領域にデータを書き込む命令が実行され
た場合でも同様である。このことは、先に記載した実施
の形態においても同じである。
Moving the data in the transfer buffer to the transfer destination area is not limited to the case where the data read instruction is executed, and is the same when the instruction for writing the data in the transfer destination area is executed. This also applies to the embodiments described above.

【0135】具体的には、次の4点について、受信側ノ
ードの動作を変更する。
Specifically, the operation of the receiving side node is changed for the following four points.

【0136】A)<2.2.3>[4]に示す転送先フ
ラグの更新(1)において、転送先領域340がスワッ
プアウトされていたことが原因で転送バッファ370に
受信データを書き込んだ場合にも、転送先フラグraま
たはrbに転送先領域340への書き込み中を表す値0
001を書き込む。
A) In the transfer destination flag update (1) shown in <2.2.3> [4], the received data is written in the transfer buffer 370 because the transfer destination area 340 was swapped out. Also in this case, the transfer destination flag ra or rb has a value of 0 indicating that the transfer destination area 340 is being written.
Write 001.

【0137】B)<2.2.3>[6]に示す転送先フ
ラグの更新(2)において、転送先領域340がスワッ
プアウトされていたことが原因で転送バッファ370に
受信データを書き込んだ場合にも、転送先フラグraま
たはrbに転送先領域340への書き込み完了を表す値
0100を書き込む。
B) <2.2.3> In the update (2) of the transfer destination flag shown in [6], the received data was written in the transfer buffer 370 because the transfer destination area 340 was swapped out. Also in this case, the value 0100 indicating the completion of writing to the transfer destination area 340 is written in the transfer destination flag ra or rb.

【0138】C)<2.2.3>[7]に示すリプライ
パケットの返送において、転送先領域340がスワップ
アウトされていたことが原因で転送バッファ370に受
信データを書き込んだ場合にも、リプライパケットには
着信確認を表す値01を付ける。
C) <2.2.3> In returning the reply packet shown in [7], even when the received data is written in the transfer buffer 370 because the transfer destination area 340 was swapped out, The reply packet is provided with a value 01 indicating the confirmation of the incoming call.

【0139】D)<2.2.3>[8]に示す着信完了
を示すリプライパケットの返送については、GETBU
F関数で強制的に受信データを転送バッファ370から
引き出した場合にはOSによりリプライパケットを返送
するが、READ命令を契機に引き出した場合には返送
する必要がなくなる。
D) Regarding the return of the reply packet indicating the completion of the incoming call shown in <2.2.3> [8], GETBU
When the F function forcibly extracts the received data from the transfer buffer 370, the OS returns a reply packet, but when the READ command is used as a trigger, there is no need to return it.

【0140】[0140]

【発明の効果】以上の実施例および変形例から明からよ
うに、本発明によれば、受信データ領域を主記憶固定に
しなくてもPUT型データ転送を行える。
As is apparent from the above embodiments and modifications, according to the present invention, PUT type data transfer can be performed without fixing the reception data area to the main memory.

【0141】また、少ないプロセッサ間の同期のための
オーバヘッドでもってPUT型データ転送を実行でき
る。
Also, PUT type data transfer can be executed with a small overhead for synchronization between processors.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明に係る並列計算機の概略構成図。FIG. 1 is a schematic configuration diagram of a parallel computer according to the present invention.

【図2】図1の装置に使用するネットワークアダプタ3
0の概略構成図。
FIG. 2 is a network adapter 3 used in the apparatus of FIG.
The schematic block diagram of 0.

【図3】ネットワークアダプタ30中の送信制御レジス
タ70内の情報を示す図。
FIG. 3 is a diagram showing information in a transmission control register 70 in the network adapter 30.

【図4】ネットワークアダプタ30中の受信制御レジス
タ170内の情報を示す図。
FIG. 4 is a diagram showing information in a reception control register 170 in the network adapter 30.

【図5】ネットワークアダプタ30中のテーブル管理レ
ジスタ80内の情報を示す図。
5 is a diagram showing information in a table management register 80 in the network adapter 30. FIG.

【図6】ネットワークアダプタ30中のバッファ管理レ
ジスタ内の情報を示す図。
6 is a diagram showing information in a buffer management register in the network adapter 30. FIG.

【図7】プロセッサ間ネットワーク1000用のデータ
送信パケット内の情報を示す図。
FIG. 7 is a diagram showing information in a data transmission packet for the interprocessor network 1000.

【図8】プロセッサ間ネットワーク1000用のリプラ
イパケット内の情報を示す図。
FIG. 8 is a diagram showing information in a reply packet for the interprocessor network 1000.

【図9】主記憶50に設ける転送制御フラグ330内の
情報を示す図。
9 is a diagram showing information in a transfer control flag 330 provided in the main memory 50. FIG.

【図10】送信制御レジスタ70内の比較方法1090
の値と意味を説明するための図。
10 is a comparison method 1090 in the transmission control register 70. FIG.
The figure for explaining the value and meaning of.

【図11】パケットタイプ1700の値と意味を説明す
るための図。
FIG. 11 is a diagram for explaining values and meanings of a packet type 1700.

【図12】主記憶50に設ける転送元フラグ110の値
と意味を説明するための図。
FIG. 12 is a diagram for explaining the value and meaning of a transfer source flag 110 provided in the main memory 50.

【図13】主記憶50に設ける転送先フラグ320の値
と意味を説明するための図。
FIG. 13 is a diagram for explaining the value and meaning of a transfer destination flag 320 provided in the main memory 50.

【図14】図1の装置に使用する実アドレス空間を説明
するための図。
14 is a diagram for explaining a real address space used in the device of FIG.

【図15】図1の装置に使用する、仮想アドレス空間か
ら実アドレス空間へのマッピング方法を説明するための
図。
FIG. 15 is a diagram for explaining a mapping method from a virtual address space to a real address space, which is used in the device of FIG.

【図16】図1の装置に使用するアドレス変換方法を説
明するための図。
16 is a diagram for explaining an address conversion method used in the device of FIG.

【図17】アドレス変換テーブル140をアクセスする
アドレスの生成方法を説明するための図。
FIG. 17 is a diagram for explaining a method of generating an address for accessing the address conversion table 140.

【図18】アドレス変換テーブル140内に用意する情
報を示す図。
FIG. 18 is a diagram showing information prepared in the address conversion table 140.

【図19】図18に示した情報の意味を説明するための
図。
19 is a diagram for explaining the meaning of the information shown in FIG.

【図20】図1の装置に使用するデータ転送命令PUT
のフォーマットを示す図。
20 is a data transfer instruction PUT used in the apparatus of FIG. 1;
FIG.

【図21】従来のPUT命令を使用するプログラムの例
を示す図。
FIG. 21 is a diagram showing an example of a program using a conventional PUT instruction.

【図22】図1の装置に使用するプログラムの例を示す
図。
22 is a diagram showing an example of a program used in the apparatus of FIG.

【図23】図1の装置で実行するページフォルト処理の
フローチャート。
23 is a flowchart of page fault processing executed by the device of FIG.

Claims (27)

【特許請求の範囲】[Claims] 【請求項1】データ転送ネットワークにより相互に接続
された複数のノードを有し、各ノードが少なくとも一つ
のプロセッサと主記憶とを持つ計算機システムにおい
て、 データとそのデータを格納すべき転送先領域の仮想アド
レスとを転送元のノードから転送先のノードに送出し、 転送先のノードにおいて、該データの受信時に、該受信
した仮想アドレスが割り当てられた該転送先領域が転送
先のノードの主記憶内に存在するときには、該仮想アド
レスが割り当てられた該転送先領域に該データを記憶
し、 該データの受信時に、該転送先領域が該転送先のノード
の主記憶内に存在しないときには、転送先のノード内に
設けられた一時的保持のためのバッファ領域に上記デー
タを記憶し、 上記データを該バッファ領域に記憶した後に、転送先の
ノードで実行中のユーザプログラムにより所定の命令が
その後発行されたときに、該バッファ領域に格納された
上記データを該転送先領域に転送し、 上記転送は、上記転送先領域を上記主記憶に割り当てた
後に実行されるデータ転送方法。
1. In a computer system having a plurality of nodes interconnected by a data transfer network, each node having at least one processor and a main memory, data and a transfer destination area for storing the data. The virtual address and the virtual address are sent from the transfer source node to the transfer destination node, and when the transfer destination node receives the data, the transfer destination area to which the received virtual address is allocated is the main memory of the transfer destination node. When the data is received, the data is stored in the transfer destination area to which the virtual address is assigned, and when the transfer destination area is not in the main memory of the transfer destination node when the data is received, the data is transferred. The data is stored in the buffer area for temporary holding provided in the destination node, and after the data is stored in the buffer area, the data is transferred to the transfer destination. When a predetermined command is subsequently issued by the user program running on the node, the data stored in the buffer area is transferred to the transfer destination area, and the transfer is performed by transferring the transfer destination area to the main memory. Data transfer method that is executed after being assigned to.
【請求項2】上記所定の命令は、上記転送先領域へのア
クセスを要求するメモリアクセス命令である請求項1記
載のデータ転送方法。
2. The data transfer method according to claim 1, wherein the predetermined instruction is a memory access instruction requesting access to the transfer destination area.
【請求項3】上記転送ステップは、 上記転送先領域が上記主記憶に存在しないときに上記ア
クセス命令を実行した結果発生するページフォールトに
応答して、ページフォールト処理を実行し、 このページフォールト処理の中で、上記割り当てを行
い、 上記バッファ領域から上記主記憶内に割り当てられた上
記転送先領域に上記データを移動するステップを有する
請求項2記載のデータ転送方法。
3. The transfer step executes page fault processing in response to a page fault generated as a result of executing the access instruction when the transfer destination area does not exist in the main memory, and the page fault processing is executed. 3. The data transfer method according to claim 2, further comprising the step of allocating the data and moving the data from the buffer area to the transfer destination area allocated in the main memory.
【請求項4】上記所定の命令は、上記転送先ノードを制
御するオペレーティングシステムに対する所定のシステ
ムコールである請求項1記載のデータ転送方法。
4. The data transfer method according to claim 1, wherein the predetermined instruction is a predetermined system call to an operating system controlling the transfer destination node.
【請求項5】上記転送ステップは、上記転送先ノードを
制御するオペレーティングシステムに該OSにより実行
され、 上記転送ステップ以外のステップは、転送先ノードのプ
ロセッサ、主記憶、上記ネットワークとに接続された回
路により実行される請求項1記載のデータ転送方法。
5. The transfer step is executed by the operating system controlling the transfer destination node by the OS, and the steps other than the transfer step are connected to the processor of the transfer destination node, the main memory, and the network. The data transfer method according to claim 1, which is executed by a circuit.
【請求項6】転送先ノードの上記主記憶内に転送先フラ
グを記憶するステップをさらに有し、 上記転送先フラグは、上記転送先ノードにおける上記デ
ータの受信状態を指示し、 上記転送先フラグは、上記データが上記バッファ領域及
び転送先領域に格納されたときにそれぞれ第1,第2の
値を有する請求項1記載のデータ転送方法。
6. The method further comprising the step of storing a transfer destination flag in the main memory of the transfer destination node, the transfer destination flag indicating a reception state of the data at the transfer destination node, and the transfer destination flag. The data transfer method according to claim 1, wherein said data has first and second values respectively when said data is stored in said buffer area and transfer destination area.
【請求項7】データ転送ネットワークにより相互に接続
された複数のノードを有し、各ノードが少なくとも一つ
のプロセッサと主記憶とを持つ計算機システムにおい
て、 データと、そのデータを格納すべき転送先領域の仮想ア
ドレスと、比較値とを転送元のノードから転送先のノー
ドに送出し、 転送先のノードにおいて、そこで実行中のユーザプログ
ラムにより指定されたセマフォ値を記憶し、 転送元ノードから送られた上記比較値と上記転送先ノー
ドに記憶されている上記セマフォの値が、上記データを
上記仮想アドレスを割り当てられた転送先領域に記憶す
ることを許すためのあらかじめ定めた条件を満たすか否
かを判別し、 上記判別ステップにより該条件が満たされないと判断さ
れたときに、該転送先ノード内に設けられた一時保持用
のバッファ領域に上記データを格納し、 上記プログラムによりその後に発行される転送要求に応
答して上記データを上記バッファ領域から上記転送先領
域に転送するデータ転送方法。
7. In a computer system having a plurality of nodes interconnected by a data transfer network, each node having at least one processor and a main memory, data and a transfer destination area in which the data is to be stored. Sent from the transfer source node to the transfer destination node, the transfer destination node stores the semaphore value specified by the user program being executed there, and is sent from the transfer source node. Whether the comparison value and the value of the semaphore stored in the transfer destination node satisfy a predetermined condition for allowing the data to be stored in the transfer destination area to which the virtual address is allocated. When the determination step determines that the condition is not satisfied, the temporary holding provided in the transfer destination node is determined. A data transfer method for storing the above data in a buffer area for data and transferring the above data from the above buffer area to the above destination area in response to a transfer request issued thereafter by the above program.
【請求項8】上記セマフォは、ユーザプログラムにより
アクセス可能な位置に保持され、その位置のアドレス
は、転送元ノードから上記データと一緒に送出される請
求項7記載のデータ転送方法。
8. The data transfer method according to claim 7, wherein the semaphore is held at a position accessible by a user program, and the address of the position is sent together with the data from the transfer source node.
【請求項9】転送先ノードの上記主記憶のユーザプログ
ラムがアクセス可能な領域内に転送先フラグを記憶する
ステップをさらに有し、 上記転送先フラグは、上記転送先ノードにおける上記デ
ータの受信状態を指示し、 上記転送先フラグは、上記データが上記バッファ領域お
よび該転送先領域に格納されたときにそれぞれ第1,第
2の値を有する請求項7記載のデータ転送方法。
9. The transfer destination node further comprises a step of storing a transfer destination flag in an area accessible by a user program in the main memory of the transfer destination node, wherein the transfer destination flag is a reception state of the data in the transfer destination node. 8. The data transfer method according to claim 7, wherein said transfer destination flag has first and second values when said data is stored in said buffer area and said transfer destination area, respectively.
【請求項10】上記転送先フラグが保持される位置のア
ドレスは、転送元ノードから上記データと一緒に送出さ
れる請求項9記載のデータ転送方法。
10. The data transfer method according to claim 9, wherein the address at the position where the transfer destination flag is held is sent together with the data from the transfer source node.
【請求項11】転送先ノードにおける上記データの受信
の進捗を表す受信状態情報を転送先ノードから転送元ノ
ードに通知し、 転送元ノードは、転送先ノードから通知された上記受信
状態情報に応答して、転送元ノードの主記憶のユーザプ
ログラムがアクセスできる領域内に転送元フラグを記憶
するステップをさらに有し、 上記転送元フラグは、上記データが上記バッファおよび
上記転送先領域に記憶されたときにそれぞれ第1、第2
の値を有する請求項9記載のデータ転送方法。
11. The transfer destination node notifies the transfer source node of reception status information indicating the progress of reception of the data at the transfer destination node, and the transfer source node responds to the reception status information notified from the transfer destination node. And further storing the transfer source flag in an area accessible by the user program in the main memory of the transfer source node, wherein the transfer source flag is such that the data is stored in the buffer and the transfer destination area. Sometimes the first and second
10. The data transfer method according to claim 9, which has a value of.
【請求項12】上記セマフォは、上記転送先ノードの主
記憶内の、ユーザプログラムによりアクセス可能な位置
に保持され、 上記セマフォが保持される上記位置のアドレスと、上記
転送先フラグが保持される位置のアドレスと、上記転送
元フラグが保持される、転送元ノードの主記憶内の位置
のアドレスは、転送元ノードから上記データと一緒に送
出され、 上記通知するステップは、上記上記転送元ノードから通
知された転送元フラグが保持される上記位置のアドレス
を上記転送元ノードに通知するステップを有する請求項
11記載のデータ転送方法。
12. The semaphore is held in a main memory of the transfer destination node at a position accessible by a user program, and the address of the position where the semaphore is held and the transfer destination flag are held. The address of the position and the address of the position in the main memory of the transfer source node in which the transfer source flag is held are sent from the transfer source node together with the data, and the step of notifying is performed by the transfer source node. 12. The data transfer method according to claim 11, further comprising the step of notifying the transfer source node of the address at the position where the transfer source flag notified from is held.
【請求項13】転送先ノードにおける上記データの受信
の進捗を表す受信状態情報を転送先ノードから転送元ノ
ードに通知し、 転送元ノードは、転送先ノードから通知された上記受信
状態情報に応答して、転送元ノードの主記憶のユーザプ
ログラムがアクセスできる領域内に、転送元フラグを記
憶するステップをさらに有し、 上記転送元フラグは、上記データが上記バッファおよび
上記転送先領域に記憶されたときにそれぞれ第1、第2
の値を有する請求項9記載のデータ転送方法。
13. The transfer destination node notifies the transfer source node of reception state information indicating the progress of reception of the data at the transfer destination node, and the transfer source node responds to the reception state information notified from the transfer destination node. And further storing the transfer source flag in an area accessible by the user program in the main memory of the transfer source node, wherein the transfer source flag stores the data in the buffer and the transfer destination area. When the first and second
10. The data transfer method according to claim 9, which has a value of.
【請求項14】転送先ノードにおいて、上記仮想アドレ
スを割り当てられた上記転送先領域が上記データの受信
時に上記転送先ノードの上記主記憶に存在するか否かを
検出し、 上記転送先領域が転送先ノードの主記憶に存在しないこ
とが上記検出ステップにより検出されたときまたは上記
条件が満たされないと上記判定ステップにより判定され
たときに、上記データを上記バッファ領域に格納するス
テップをさらに有し、 上記データを上記転送先領域に格納する上記ステップ
は、上記転送先領域が上記データの受信時に上記転送先
ノードの上記主記憶に存在し、かつ、上記条件が満たさ
れたと上記判定ステップにより判定されたときに実行さ
れる請求項7記載のデータ転送方法。
14. The transfer destination node detects whether or not the transfer destination area assigned with the virtual address exists in the main memory of the transfer destination node when the data is received. The method further comprises a step of storing the data in the buffer area when it is detected by the detection step that the data does not exist in the main memory of the transfer destination node or when the determination step determines that the condition is not satisfied. In the step of storing the data in the transfer destination area, the determination step determines that the transfer destination area exists in the main memory of the transfer destination node at the time of receiving the data and the condition is satisfied. The data transfer method according to claim 7, which is executed when the data transfer is performed.
【請求項15】転送先ノードの上記主記憶のユーザプロ
グラムがアクセス可能な領域内に転送先フラグを記憶す
るステップをさらに有し、 上記転送先フラグは、上記転送先ノードにおける上記デ
ータの受信状態を指示する請求項14記載のデータ転送
方法。
15. The method further comprises the step of storing a transfer destination flag in an area accessible by a user program in the main memory of the transfer destination node, wherein the transfer destination flag is a reception state of the data in the transfer destination node. 15. The data transfer method according to claim 14, further comprising the step of:
【請求項16】上記転送先フラグは、上記データが上記
バッファおよび上記転送先領域に記憶されたときに、そ
れぞれ第1、第2の値を有する請求項15記載のデータ
転送方法。
16. The data transfer method according to claim 15, wherein said transfer destination flag has a first value and a second value when said data is stored in said buffer and said transfer destination area, respectively.
【請求項17】上記転送先フラグは、上記条件が満たさ
れなかったために上記データが上記バッファに記憶され
たときには上記転送先領域が上記転送先ノードの上記主
記憶に存在するか否かによらないで第1の値を有し、 上記転送先フラグは、上記転送先領域が上記転送先ノー
ドの上記主記憶に存在し、かつ、上記条件が満たされた
ために上記データが上記転送先領域に記憶されたときあ
るいは上記条件が満たされたが上記転送先領域が上記転
送先ノードの上記主記憶に存在しないときには第2の値
を有する請求項15記載のデータ転送方法。
17. The transfer destination flag is determined depending on whether the transfer destination area exists in the main memory of the transfer destination node when the data is stored in the buffer because the condition is not satisfied. Has a first value, the transfer destination flag indicates that the data is stored in the transfer destination area because the transfer destination area exists in the main memory of the transfer destination node, and the condition is satisfied. 16. The data transfer method according to claim 15, wherein the data transfer method has a second value when stored or when the condition is satisfied but the transfer destination area does not exist in the main memory of the transfer destination node.
【請求項18】上記転送先フラグが保持される位置のア
ドレスは、転送元ノードから上記データと一緒に送出さ
れる請求項15記載のデータ転送方法。
18. The data transfer method according to claim 15, wherein the address at the position where the transfer destination flag is held is sent from the transfer source node together with the data.
【請求項19】転送先ノードにおける上記データの受信
の進捗を表す受信状態情報を転送先ノードから転送元ノ
ードに通知し、上記受信状態情報は、上記データが上記
バッファ領域に格納されたか上記転送先領域に格納され
たか否かを少なくとも指示し、 転送元ノードは、転送先ノードから通知された上記受信
状態情報に応答して、転送元ノードの主記憶のユーザプ
ログラムがアクセスできる領域内に転送元フラグを記憶
するステップをさらに有する請求項15記載のデータ転
送方法。
19. The transfer destination node notifies the transfer source node of reception status information indicating the progress of reception of the data at the transfer destination node, and the reception status information indicates whether the data is stored in the buffer area or not. At least indicating whether or not the data is stored in the destination area, and the transfer source node transfers the data in an area accessible by the user program in the main memory of the transfer source node in response to the reception status information notified from the transfer destination node. The data transfer method according to claim 15, further comprising the step of storing the original flag.
【請求項20】上記転送元フラグは、上記データが上記
バッファおよび上記転送先領域に記憶されたときに、そ
れぞれ第1、第2の値を有する請求項19記載のデータ
転送方法。
20. The data transfer method according to claim 19, wherein said transfer source flag has a first value and a second value, respectively, when said data is stored in said buffer and said transfer destination area.
【請求項21】上記転送元フラグは、上記条件が満たさ
れなかったために上記データが上記バッファに記憶され
たときには、上記転送先領域が上記転送先ノードの上記
主記憶に存在するか否かによらないで第1の値を有し、 上記転送元フラグは、上記転送先領域が上記転送先ノー
ドの上記主記憶に存在し、かつ、上記条件が満たされた
ために上記データが上記転送先領域に記憶されたときあ
るいは上記条件が満たされたが上記転送先領域が上記転
送先ノードの上記主記憶に存在しないときには第2の値
を有する請求項19記載のデータ転送方法。
21. The transfer source flag indicates whether or not the transfer destination area exists in the main memory of the transfer destination node when the data is stored in the buffer because the condition is not satisfied. The transfer source flag has a first value, and the transfer source flag has the transfer destination area in the main memory of the transfer destination node, and the data is transferred to the transfer destination area because the condition is satisfied. 20. The data transfer method according to claim 19, wherein the data transfer method has a second value when the data is stored in the storage device or when the condition is satisfied but the transfer destination area does not exist in the main memory of the transfer destination node.
【請求項22】上記セマフォは、転送先ノードの主記憶
のユーザプログラムによりアクセス可能な位置に記憶さ
れ、 上記セマフォが保持される上記位置のアドレスと、上記
転送先フラグが保持される位置のアドレスと、上記転送
元フラグが保持される、転送元ノードの主記憶内の位置
のアドレスは、転送元ノードから上記データと一緒に送
出され、 上記通知するステップは、上記転送元ノードから通知さ
れた転送元フラグが保持される上記位置のアドレスを上
記転送元ノードに通知するステップを有する請求項19
記載のデータ転送方法。
22. The semaphore is stored at a position accessible by a user program in the main memory of the transfer destination node, and the address of the position where the semaphore is held and the address of the position where the transfer destination flag is held. And the address of the position in the main memory of the transfer source node in which the transfer source flag is held is sent together with the data from the transfer source node, and the step of notifying is notified from the transfer source node. 20. The step of notifying the transfer source node of the address of the position where the transfer source flag is held is set.
Data transfer method described.
【請求項23】複数のノードと、 該複数のノードを相互に接続するためのデータ転送ネッ
トワークとを有し、 各ノードは、 それぞれ少なくとも一つのプロセッサと、 そのプロセッサに接続された主記憶と、 上記主記憶と上記プロセッサと上記ネットワークに接続
されたネットワークアダプタとを有し、 上記ネットワークアダプタは、 データとそのデータを格納すべき転送先領域の仮想アド
レスとを上記ネットワークを介して上記複数のノードの
一つに送出する、上記プロセッサと上記値とワークに接
続された送信部と、 上記一つのノードから転送されたデータおよび転送先領
域の仮想アドレスを上記ネットワークを介して受信す
る、上記ネットワークに接続された受信部と、 上記受信部により受信された仮想アドレスをその仮想ア
ドレスを割り当てられた実ページの実アドレスに変換す
る、上記各ノードの上記主記憶に接続されたアドレス変
換ユニットと、 上記各ノードの上記アドレス変換ユニットと上記主記憶
に接続され、上記実ページが上記主記憶に存在するとき
に、上記アドレス変換ユニットにより得られた上記実ア
ドレスに応答して上記受信部により受信された上記デー
タを上記実ページに書き込ませ、該実ページがその各ノ
ードの主記憶内に存在しないときに、受信したデータ
を、その各ノードの主記憶内の所定のバッファ領域に格
納させる制御回路とを有し、 上記プロセッサは、上記データの受信時に上記仮想アド
レスを割り当てられた実ページが存在しないときに、そ
こで実行されているプログラムにより発行された要求に
応答して、上記主記憶内の実ページを上記仮想アドレス
に割り当て、上記データを上記バッファ領域から上記実
ページに、上記割り当ての後に転送するようにプログラ
ムされている計算機システム。
23. A plurality of nodes, and a data transfer network for connecting the plurality of nodes to each other, wherein each node has at least one processor and a main memory connected to the processor. The main memory, the processor, and a network adapter connected to the network. The network adapter stores data and a virtual address of a transfer destination area in which the data is to be stored, via the network. To the processor, the value, and a transmitter connected to the work, and the data transferred from the one node and the virtual address of the transfer destination area to be received via the network, to the network. The connected receiver and the virtual address received by the receiver are stored in the virtual address. To the real address of the allocated real page, connected to the main memory of each node, the address translation unit of each node and the main memory, and the real page is When present in the main memory, in response to the real address obtained by the address translation unit, the data received by the receiving unit is written in the real page, and the real page is stored in the main memory of each node. And a control circuit for storing the received data in a predetermined buffer area in the main memory of each node when the data is not present inside the processor, and the processor is assigned the virtual address when receiving the data. In response to a request issued by the program executing in the real page when the real page does not exist, the real page in the main storage To the virtual address and the computer system is programmed to transfer the data from the buffer area to the real page after the allocation.
【請求項24】上記要求はメモリアクセスリクエストで
あり、 上記プロセッサは、そのメモリアクセスリクエストの実
行時に上記アドレス変換ユニットにより生成されるペー
ジフォールトを処理するページフォールト処理の実行中
に、上記仮想アドレスに実ページを割り当てるように、
さらに、上記データを上記バッファ領域から上記仮想ア
ドレスを割り当てられた上記実ページに転送するように
プログラムされている請求項23記載の計算機システ
ム。
24. The request is a memory access request, and the processor assigns a virtual address to the virtual address during execution of a page fault process for processing a page fault generated by the address translation unit at the time of executing the memory access request. To allocate real pages,
24. The computer system according to claim 23, which is further programmed to transfer the data from the buffer area to the real page allocated with the virtual address.
【請求項25】上記要求は上記各ノードのオペレーティ
ングシステムに対するシステムコールであり、 上記プロセッサは、そのシステムコールを上記オペレー
ティングシステムにより処理している中で上記仮想アド
レスに実ページを割り当てるように、さらに、上記デー
タを上記バッファ領域から上記仮想アドレスを割り当て
られた上記実ページに転送するようにプログラムされて
いる請求項23記載の計算機システム。
25. The request is a system call to the operating system of each node, the processor further allocating a real page to the virtual address while processing the system call by the operating system. 24. The computer system of claim 23, wherein the computer system is programmed to transfer the data from the buffer area to the real page assigned the virtual address.
【請求項26】複数のノードと、 該複数のノードを相互に接続するためのデータ転送ネッ
トワークとを有し、 各ノードは、 それぞれ少なくとも一つのプロセッサと、 そのプロセッサに接続された主記憶と、 上記主記憶と上記プロセッサと上記ネットワークに接続
されたネットワークアダプタとを有し、 上記ネットワークアダプタは、 その各ノードで実行中のプログラムにより指定された、
データとそのデータを格納すべき転送先領域の仮想アド
レスと上記データに対する比較値とを上記ネットワーク
を介して上記複数のノードの一つに送出する、上記プロ
セッサと上記値とワークに接続された送信部と、 上記一つのノードから転送されたデータおよび転送先領
域の仮想アドレスとそのデータに対する比較値とを上記
ネットワークを介して受信する、上記ネットワークに接
続された受信部と、 上記受信部により受信された仮想アドレスをその仮想ア
ドレスを割り当てられた実ページの実アドレスに変換す
る、上記各ノードの上記主記憶に接続されたアドレス変
換ユニットと、 上記各ノードの上記受信部と上記アドレス変換ユニット
と上記主記憶に接続され、上記各ノードで実行中の上記
プログラムにより指定されたセマフォ値に基づいて、上
記受信された比較値が所定の条件を満たすか否かを判断
し、その条件が満たされているときに、上記受信された
仮想ページに対して上記アドレス変換ユニットにより得
られた上記実アドレスを有する転送先領域に、上記受信
部により受信された上記データを書き込ませ、さらに、
その条件が満たされないと判断されたときには、上記各
ノードの上記主記憶内に予め定められたバッファ領域バ
ッファ領域に格納させる受信制御回路とを有し、 上記プロセッサは、そこで実行されている上記プログラ
ムにより発行された要求に応答するように、さらに、上
記データを上記バッファ領域から上記実ページに転送す
るようにプログラムされている計算機システム。
26. A plurality of nodes, and a data transfer network for connecting the plurality of nodes to each other, wherein each node has at least one processor and a main memory connected to the processor. It has the main memory, the processor, and a network adapter connected to the network, and the network adapter is designated by a program running on each node,
Sending the data, the virtual address of the transfer destination area where the data is to be stored, and the comparison value for the data to one of the plurality of nodes via the network, the transmission being connected to the processor, the value, and the work. Section, a receiving section connected to the network for receiving the data transferred from the one node and the virtual address of the transfer destination area and the comparison value for the data via the network, and received by the receiving section. An address translation unit connected to the main memory of each of the nodes, which translates the virtual address into a real address of the real page to which the virtual address is assigned; the reception unit of the node and the address translation unit. The semaphore value specified by the program running on each node connected to the main memory Then, it is determined whether the received comparison value satisfies a predetermined condition, and when the condition is satisfied, the address obtained by the address translation unit with respect to the received virtual page. Write the data received by the receiving unit in a transfer destination area having a real address, and further,
When it is determined that the condition is not satisfied, the main memory of each node has a reception control circuit for storing the buffer area in a predetermined buffer area, and the processor executes the program executed therein. A computer system further programmed to transfer the data from the buffer area to the real page in response to a request issued by the.
【請求項27】上記受信制御回路は、上記各ノードの主
記憶内の、その各ノードで実行中の上記プログラムによ
りアクセス可能な領域に転送先フラグを記憶させ、 上記転送先フラグは、上記各ノードでの上記データの受
信状態を指示し、 上記転送フラグは、上記データが上記バッファ領域と転
送先領域に格納されたときにそれぞれ第1,第2の値を
有する請求項26記載の計算機システム。
27. The reception control circuit stores a transfer destination flag in an area in the main memory of each of the nodes, which is accessible by the program executing in each node, and the transfer destination flag is stored in each of the above-mentioned respective nodes. 27. The computer system according to claim 26, which indicates a reception state of the data at a node, and the transfer flag has a first value and a second value when the data is stored in the buffer area and the transfer destination area, respectively. .
JP8315848A 1995-11-27 1996-11-27 Method for data transfer between processors and computer system suitable to same Pending JPH09212474A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8315848A JPH09212474A (en) 1995-11-27 1996-11-27 Method for data transfer between processors and computer system suitable to same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-307713 1995-11-27
JP30771395 1995-11-27
JP8315848A JPH09212474A (en) 1995-11-27 1996-11-27 Method for data transfer between processors and computer system suitable to same

Publications (1)

Publication Number Publication Date
JPH09212474A true JPH09212474A (en) 1997-08-15

Family

ID=26565235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8315848A Pending JPH09212474A (en) 1995-11-27 1996-11-27 Method for data transfer between processors and computer system suitable to same

Country Status (1)

Country Link
JP (1) JPH09212474A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6235348B1 (en) * 1998-05-13 2001-05-22 Shin-Etsu Chemical Co., Ltd. Rust prevention
US7136933B2 (en) 2001-06-06 2006-11-14 Nec Corporation Inter-processor communication systems and methods allowing for advance translation of logical addresses

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6235348B1 (en) * 1998-05-13 2001-05-22 Shin-Etsu Chemical Co., Ltd. Rust prevention
US7136933B2 (en) 2001-06-06 2006-11-14 Nec Corporation Inter-processor communication systems and methods allowing for advance translation of logical addresses

Similar Documents

Publication Publication Date Title
EP1396792B1 (en) Memory copy command specifying source and destination of data executed in the memory controller
KR100326864B1 (en) Network communication method and network system
JP2977688B2 (en) Multi-processing device, method, and processor used for the same
JP3697831B2 (en) Computer system
KR100840113B1 (en) Processing modules for computer architecture for broadband networks
EP0889623B1 (en) System and method for efficient remote disk I/O
JP2003178039A (en) Distributed shared virtual memory and its constituting method
JPH04308956A (en) Receiving buffer
CN111182008B (en) Establishing socket connections in user space
JPH06309252A (en) Interconnection interface
JPH1185710A (en) Server device and file management method
JPH07182260A (en) Frame buffer method of network packet
JPH06187299A (en) Parallel processing system
JPH1185618A (en) Method for controlling virtual memory conversion
WO2024082944A1 (en) Method and apparatus for data exchange between multiple processors, device, and storage medium
US5978894A (en) Method of interprocessor data transfer using a network, virtual addresses and paging, a buffer, flags, data transfer status information and user accessible storage areas in main memory
CN111176855A (en) Establishing queues between threads in user space
US6108694A (en) Memory disk sharing method and its implementing apparatus
JP3376956B2 (en) Communication device between processors
JPH09212474A (en) Method for data transfer between processors and computer system suitable to same
JPH1173365A (en) Method for optimizing data moving operation
JP2736237B2 (en) Remote memory access controller
JP2002366427A (en) Inter-processor communication system, and inter- processor communication method to be used for the system
US6961837B2 (en) Method and apparatus for address translation pre-fetch
KR100898345B1 (en) Packet receiver hardware apparatus for tcp offload engine and system and method based on ??? packet receive hardware