JP2014206883A - Computing system - Google Patents
Computing system Download PDFInfo
- Publication number
- JP2014206883A JP2014206883A JP2013084460A JP2013084460A JP2014206883A JP 2014206883 A JP2014206883 A JP 2014206883A JP 2013084460 A JP2013084460 A JP 2013084460A JP 2013084460 A JP2013084460 A JP 2013084460A JP 2014206883 A JP2014206883 A JP 2014206883A
- Authority
- JP
- Japan
- Prior art keywords
- data
- port
- computer
- data transfer
- controller
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
Description
本発明は、複数の計算機を汎用バスを用いて接続する計算機システムのネットワークスイッチに関するものである。 The present invention relates to a network switch of a computer system that connects a plurality of computers using a general-purpose bus.
計算機システムの性能向上の手段の一つとして、ブレードサーバやクラスタシステムなど多数の計算機を接続する方法がある。多数の計算機を接続する際、従来の汎用の技術では、イーサーネットワークに代表されるネットワークカードを計算機の汎用バスであるPCIeで接続し、PCIeのプロトコルでデータ転送を行う。さらに、ネットワーク拡張カード同士、ネットワーク拡張カードとネットワークスイッチ、ネットワークスイッチ同士を専用のネットワークケーブルで多段階に接続し、既定された専用のプロトコルでデータ転送を行う。 One means for improving the performance of a computer system is to connect a large number of computers such as blade servers and cluster systems. When connecting a large number of computers, the conventional general-purpose technology connects a network card typified by an Ethernet network with PCIe, which is a general-purpose bus of the computer, and performs data transfer using the PCIe protocol. Further, network expansion cards, network expansion cards and network switches, and network switches are connected in multiple stages with dedicated network cables, and data transfer is performed using a predetermined dedicated protocol.
従来の汎用の技術では、このようにネットワークスイッチ同士を汎用技術を組み合わせることで接続可能となるため、計算機システムにつながる計算機の台数を増やしたい時、容易に計算機の台数を増やすことが可能である。しかし、計算機システムの性能向上を目的として、多数の計算機を接続する選択は必ずしも有効となるとは限らず、有効であるかどうかは、計算機システムで採用されているネットワークの設計に依存し、多数の計算機を接続して性能向上を目指した計算機システムが期待される処理性能に近い実性能を出すには、採用するネットワークにおいて解決すべき問題がある。 In conventional general-purpose technology, network switches can be connected by combining general-purpose technologies in this way, so when you want to increase the number of computers connected to the computer system, you can easily increase the number of computers. . However, for the purpose of improving the performance of a computer system, the choice of connecting a large number of computers is not always effective, and whether it is effective depends on the design of the network adopted in the computer system, There is a problem to be solved in the adopted network in order to obtain an actual performance close to the expected processing performance of a computer system that aims to improve performance by connecting computers.
例えばデータ転送において、データを格納しているパケットがネットワーク機器を経由する時、プロトコルの変換やデータの変更を必要とする場合があり、このような状況で接続する計算機や、経由するネットワーク機器が増えると、プロトコルの変換コストが増大し、ネットワークの性能が低下する問題がある。
また、接続する計算機の台数を増やすほど、データ転送の頻度が指数関数的に高くなるプログラムもあり、このようなプログラムに対しては、接続する計算機の台数を増やしても、データ転送のたびにCPU演算機能、メモリ空間、バスの帯域、同期のための時間などの計算機資源を消費し、使用したいプログラムに対して計算機資源を割り当てられなくなり、計算機システムの性能が期待される処理性能より大幅に低下する問題もある。
このようなネットワークが抱える問題を解決すべく、専用ハードウェアを設計し、それをCPUに近い場所に設置するために計算機に専用ハードウェアを組み込み、結果として、計算機単体の高価格化を招くという問題もある。
For example, in data transfer, when a packet storing data passes through a network device, protocol conversion or data change may be required. If it increases, there is a problem that the cost of protocol conversion increases and the performance of the network decreases.
In addition, there are programs that increase the frequency of data transfer exponentially as the number of connected computers increases. For such programs, even if the number of connected computers is increased, every time data is transferred. Consumes computer resources such as CPU computing functions, memory space, bus bandwidth, synchronization time, etc., and computer resources cannot be allocated to programs that you want to use, and the performance of the computer system is significantly higher than expected processing performance. There is also a problem that decreases.
In order to solve such network problems, dedicated hardware is designed, and the dedicated hardware is built into the computer to install it near the CPU. As a result, the price of the computer alone increases. There is also a problem.
前述の通り、計算機システムの性能向上を目指して、ネットワークを構築しても、期待される処理性能が出せるとは限らない。しかし、InfiniBandは計算機のメモリにデータを読み出し、書き込み可能なDMA(Direct Memory Access)機能をネットワークカードに内蔵させ、データ転送機能をInfiniBandネットワークカード側で実現することで、データ転送時に計算機資源の消費を抑え、高速なデータ転送と低いレイテンシを実現している。また、公開番号 特開2005-182818のようなオンチップバスは、分散バスシステムを構築することで、分散バスシステム上にあるデバイスは計算機を介さずにデータ転送が可能となる。これを利用して、複数の計算機を分散バスシステムで接続し、分散バスシステムそのものをネットワークの代わりとし、データ転送のプロトコルの変換プロセスを削減することが可能である。 As described above, even if a network is constructed with the aim of improving the performance of a computer system, the expected processing performance is not always achieved. However, InfiniBand uses a DMA (Direct Memory Access) function that reads and writes data to the computer's memory, and realizes the data transfer function on the InfiniBand network card side, thereby consuming computer resources during data transfer. To achieve high-speed data transfer and low latency. Further, by constructing a distributed bus system for an on-chip bus such as the publication number JP-A-2005-182818, devices on the distributed bus system can transfer data without going through a computer. By utilizing this, it is possible to connect a plurality of computers with a distributed bus system and use the distributed bus system itself instead of a network to reduce the data transfer protocol conversion process.
計算機システムの性能向上を目的として、多数の計算機を接続する選択は必ずしも有効となるとは限らない。有効であるかどうかは、計算機システムで採用されているネットワークの設計に依存し、多数の計算機を接続して性能向上を目指した計算機システムが期待される処理性能を出すには、採用するネットワークにおいて解決すべき問題がある。 For the purpose of improving the performance of a computer system, the selection of connecting a large number of computers is not always effective. Whether it is effective depends on the design of the network used in the computer system, and in order to obtain the processing performance expected by a computer system that aims to improve performance by connecting many computers, There is a problem to be solved.
本発明の目的は、計算機システムの性能向上のために複数の計算機を接続する際に、データ転送で使用するプロトコルの変換コストが小さく、接続した計算機の処理性能を引き出すにあたってデータ転送の処理に必要とされる計算機資源の消費が少ないネットワークスイッチを実現することにある。 The purpose of the present invention is to reduce the conversion cost of the protocol used for data transfer when connecting multiple computers in order to improve the performance of the computer system, and it is necessary for data transfer processing to extract the processing performance of the connected computers It is to realize a network switch that consumes less computer resources.
多数の計算機を接続するネットワークの構築に、計算機の汎用バスに接続可能なポートを複数持つ汎用バス直接結合型ネットワークスイッチを採用する。 A general-purpose bus direct-coupled network switch that has multiple ports that can be connected to the general-purpose bus of the computer is used to construct a network that connects many computers.
汎用バス直接結合型ネットワークスイッチは、直接、計算機のメモリ内のデータを読み出し・書き込み可能なDMAコントローラを持ち、計算機のデータ転送の際に計算機が送信側計算機のメモリに有る読み出しデータエリアのアドレスとサイズ、受信側計算機のメモリにある書き込みデータエリアのアドレスを汎用バス直接結合型ネットワークスイッチに通知し、汎用バス直接結合型ネットワークスイッチがデータ転送の処理を全て実行し、データ転送の完了通知を計算機に送信する。この時、送信側も受信側も計算機も完了通知の受信待機状態となる。 The general-purpose bus direct-coupled network switch has a DMA controller that can directly read and write data in the computer's memory. When transferring data to the computer, the computer uses the address of the read data area in the memory of the sending computer. The size and the address of the write data area in the memory of the receiving computer are notified to the general-purpose bus direct-coupled network switch, the general-purpose bus direct-coupled network switch performs all data transfer processing, and the data transfer completion notification is calculated by the computer. Send to. At this time, the transmission side, the reception side, and the computer are all in a standby state for receiving a completion notification.
完了通知の受信待機状態の計算機はデータ転送のための制御する必要がない。よって、計算機は計算機資源をデータ転送のために割く必要がなくなり、データ転送とは関係のない計算に遷移することが可能となり、計算機資源を効率よく使用可能となる。また、汎用バス直接結合型ネットワークスイッチは、内部にメモリを持つ。従来のネットワークスイッチでは、サイズの小さいパケットに区切って細切れにして送信する。この時、受信側計算機のデータ転送の経路が混雑していると、例え、送信側計算機のデータ転送の経路が混雑しておらず、送信側計算機でデータの送信処理が可能であっても、送信側計算機からのデータ転送の送信処理を完了させることができない。 The computer in the standby state for receiving the completion notification does not need to be controlled for data transfer. Therefore, it is not necessary for the computer to divide the computer resource for data transfer, it is possible to shift to a calculation unrelated to the data transfer, and the computer resource can be used efficiently. The general-purpose bus direct coupling type network switch has a memory inside. In the conventional network switch, the packet is divided into small packets and transmitted in pieces. At this time, if the data transfer path of the receiving computer is congested, for example, the data transfer path of the transmitting computer is not congested, and even if data transmission processing is possible on the transmitting computer, The transmission process of data transfer from the sending computer cannot be completed.
しかし、汎用バス直接結合型ネットワークスイッチは、送信側計算機のメモリからスイッチ側にデータを転送する際に、一度にまとめて送信側計算機のメモリから読み出し、一度にまとめてスイッチ内部のメモリに書き込むことが可能となる。また、スイッチ側から受信側計算機のメモリにデータを転送する際に、一度にまとめてスイッチ内部のメモリから読み出し、一度にまとめて受信側計算機のメモリに書き込むことが可能となる。このように、汎用バス直接結合型ネットワークスイッチにデータ転送の機能を担うDMAコントローラを備えることで、計算機は、データ転送の処理に必要とされる計算機資源を最小化でき、データ転送の際のデータをメモリに確保可能とすることで、データ転送のための経路の効率の良い使用が可能となる。その結果、計算機資源を本来の実行したい計算に割り当てが可能となったことと、データ転送の処理に対する待ち時間を減ったことで、計算機システムとしての性能向上を目指すことが可能となる。 However, general-purpose bus direct-coupled network switches read data from the sending computer memory all at once and write them to the memory inside the switch at once when transferring data from the sending computer memory to the switch side. Is possible. Further, when transferring data from the switch side to the memory of the receiving computer, it is possible to read the data from the memory inside the switch all at once and write it to the memory of the receiving computer all at once. In this way, the general-purpose bus direct-coupled network switch is equipped with a DMA controller that handles the data transfer function, so that the computer can minimize the computer resources required for data transfer processing, and the data at the time of data transfer Can be secured in the memory, the path for data transfer can be used efficiently. As a result, it becomes possible to assign the computer resources to the calculation to be originally executed, and to reduce the waiting time for the data transfer process, so that it is possible to improve the performance of the computer system.
本発明における汎用バス直接結合型ネットワークスイッチによれば、接続する計算機の数が増えるほど制御が難しくなるデータ転送を計算機側が制御するのではなく、ネットワークスイッチ側で主体的に制御が可能となる。 According to the general-purpose bus direct coupling type network switch of the present invention, data transfer, which becomes difficult to control as the number of computers to be connected increases, is not controlled by the computer side, but can be controlled independently on the network switch side.
以下で本発明を実施するための形態を、図面を参照しながら解説する。 Hereinafter, embodiments for carrying out the present invention will be described with reference to the drawings.
本発明の汎用バス直接結合型ネットワークスイッチの一形態の実施例を図1に示す。汎用バス直接結合型ネットワークスイッチ1000は、ノードを接続するための汎用バスであるPCIeの電気信号を処理をするポート1022、1042、1062をN個有し、ノード1020、1040、1060はPCIeの各信号線1021、1041、1061を介して各ポート1022、1042、1062と接続する。
FIG. 1 shows an embodiment of a general-purpose bus direct coupling network switch according to the present invention. The general-purpose bus direct coupling
汎用バス直接結合型ネットワークスイッチ1000はN個のポート1022、1042、1062に対し、デバイスエミュレータ1024、1044、1064、データコントローラ1026、1046、1066、ポートメモリ1028、1048、1068、パケットルータ1030、1050、1070をそれぞれ有する。
The general-purpose bus direct coupling
デバイスエミュレータ1024、1044、1064は、ノード1020、1040、1060と信号線1021、1041、1061、ポート1022、1042、1062、信号線1023、1043、1063を介して接続され、ノード1020、1040、1060はデバイスエミュレータ1024、1044、1064をネットワーク機能を有したデバイスと認識する。
The
データコントローラ1026、1046、1066はノード1020、1040、1060内のメモリに対してデータの直接の読み出しと書き込みが可能なDMA機能を有し、ノード1020、1040、1060とデータコントローラ1026、1046、1066の間のデータ転送とデータコントローラ1026、1046、1066の間のデータ転送の機能を有する。
The
ポートメモリ1028、1048、1068は、データコントローラ1026、1046、1066と信号線1027、1047、1067を介して接続され、データコントローラ1026、1046、1066の受信したデータを保管する機能を有する。
The
パケットルータ1030、1050、1070は、データコントローラ1026、1046、1066と信号線1029、1049、1069を介して接続され、データコントローラ1026、1046、1066同士の通信の機能を有する。
The
デバイスエミュレータ1024、1044、1064はポート1022、1042、1062と信号線1023、1043、1063を介して接続されている。データコントローラ1026、1046、1066はデバイスエミュレータ1024、1044、1064と信号線1025、1045、1065を介して接続されている。ポートメモリ1028、1048、1068はデータコントローラ1026、1046、1066と信号線1027、1047、1067を介して接続されている。パケットルータ1030、1050、1070はデータ転送の制御を行うデータコントローラ1026、1046、1066と信号線1029、1049、1069を介して接続されている。また、デバイスエミュレータ1024、1044、1064とパケットルータ1030、1050、1070は汎用バス直接結合型ネットワークスイッチ1000内部で同じデバイス装置での接続を実現するデバイスエミュレータ間ネットワーク1031、1051、1071とパケットルータ間ネットワーク1033、1053、1073を有している。
1台目のノードであるノード#1 1020は汎用バス直接結合型ネットワークスイッチ1000のポート#1 1022とポート#1 1021で接続し、ポート#1 1022はノード#1 1020がデバイスのように認識するデバイスエミュレータ#1 1024と信号線1023で接続している。通常PCIeデバイスは1つのノードにしか接続できないが、汎用バス直接結合型ネットワークスイッチ1000に接続可能なノードの台数分のデバイスエミュレータ1024、1044、1064を汎用バス直接結合型ネットワークスイッチ1000に内包させることで、一つの汎用バス直接結合型ネットワークスイッチ1000に複数のノードのPCIeでの接続を実現させている。
デバイスエミュレータ#1 1024は、汎用バス直接結合型ネットワークスイッチ1000内の全てのデバイスエミュレータ1024、1048、1068と完全結合しているデバイスエミュレータ間ネットワーク1031を使用して、デバイスエミュレータ間で制御文を伝送する。また、データ転送は信号線1025を通じて、データコントローラ#1 1026と行われる。
データコントローラ1026、1046、1066は、汎用バス直接結合型ネットワークスイッチ1000とノード1020、1040、1060との間で、ノード1020、1040、1060に負荷をかけないデータ転送を実現するために、DMA転送機能を有する。また、汎用バス直接結合型ネットワークスイッチ1000内でのデータ転送機能も有する。
The
データコントローラ#1 1026はデバイスエミュレータ#1 1024ないし、パケットルータ#1 1030とのデータ送受信の際に、信号線1027を使用して、ポートメモリ#1 1028へデータを読み出し・書き込みする。デバイスエミュレータ#1 1024ないし、パケットルータ#1 1030からデータコントローラ#1 1026へデータが送信されるたびに、送信されたデータをポートメモリ#1 1028に保存することで、汎用バス直接結合型ネットワークスイッチ1000とノード1020、1040、1060との間と、汎用バス直接結合型ネットワークスイッチ1000内のまとまった量のデータ転送を実現している。データコントローラ間におけるデータ転送の際、データコントローラ#1は信号線1029を使用して、パケットルータ#1 1030を介してデータコントローラ間のデータ通信を実現する。パケットルータ#1 1030は完全結合のパケットルータ間ネットワーク1033を保持し、パケットルータ間でデータを伝送する。また、デバイスエミュレータ間ネットワーク1031とパケットルータ間ネットワーク1033は、内部の通信を実現する信号線とは別に、外部へのポート1032、1034を使用して、複数の汎用バス直接結合型ネットワークスイッチ1000の接続を実現する。なお、ノード#2 1040及びノード#N 1060はノード#1 1020と同様の構成をとる。
The
図1の実施例について登場したデバイスエミュレータ1024、1044、1064、データコントローラ1026、1046、1066、ポートメモリ1028、1048、1068、パケットルータ1030、1050、1070の内部構成について詳しく図2〜5で示す。示す図はi番目のノード、ノード#iに属するそれぞれの詳細構成図とし、図2ではデバイスエミュレータ#i 1100、図3ではデータコントローラ#i 1200、図4ではポートメモリ#i 1300、図5ではパケットルータ#i 1400について説明する。
The
図2にて、デバイスエミュレータ#i 1100の内部構成を説明する。デバイスエミュレータ#i 1100は内部に、PCIe通信部1110、トランザクション管理部1111、デバイスエミュレータ間通信部1112、ネットワーク管理部1113を有する。
The internal configuration of the device emulator #i 1100 will be described with reference to FIG. The device emulator #i 1100 includes a
デバイスエミュレータ#i 1100はPCIeの電気的な信号処理を行うポート#i 1102と信号線1103で接続され、ポート#i 1102とi番目のノードのノード#i は、PCIe#i 1101で接続される。信号線1103はデバイスエミュレータ#i 1100の中にあるPCIe通信部1110に接続されている。PCIe通信部1110は、PCIeの通信に必要な情報処理の機能を提供する。PCIe通信部1110とトランザクション管理部1111は、信号線1114で接続される。トランザクション管理部1111は、ノード間通信において、ノードからデータ転送リクエストを受けてから、ノード間セッションの構築、データ転送、ノード間セッションの解除、ノードへのデータ転送完了通知までをトランザクションとして管理する。ノード間のセッションの構築、解除において、デバイスエミュレータ間通信を行う。
The device emulator #i 1100 is connected to a port #i 1102 that performs electrical signal processing of PCIe via a
この時、トランザクション管理部1111は、信号線1115で接続されたデバイスエミュレータ間通信部1112を経由して、デバイスエミュレータ間通信を実現する。デバイスエミュレータ間通信部1112は汎用バス直接結合型ネットワークスイッチ内部の全てのデバイスエミュレータとの直接通信と、外部との通信のための複数の信号線で構成され、この複数の信号線をデバイスエミュレータ間ネットワーク1105としている。この時、データ転送に必要なネットワークの物理情報及び論理情報を、トランザクション管理部1111は、信号線1116を通じてネットワーク管理部1113より取得する。トランザクションのうち、データ転送については、信号線1104を通じて図3のデータコントローラ#i 1200に処理を委託している。
At this time, the
図3にて、データコントローラ#i 1200の内部構成を説明する。データコントローラ#i 1200は、DMAコントローラ1210、メモリコントローラ1215を有する。DMAコントローラ1210は図2のデバイスエミュレータ#i 1100のトランザクション管理部1111と信号線1104で接続されている。トランザクション管理部1111がセッションの構築と解除の際、データ転送のための準備とその解除の知らせをDMAコントローラ1210はトランザクション管理部1111より知らされる。この時、DMAコントローラ1210はDMAコントローラ1210内のバッファ1211の未使用エリアから確保する。また、信号線1214を経由してメモリコントローラ1215にポートメモリ1300でのメモリ確保を依頼する。メモリコントローラ1215は信号線1202、1203を経由してポートメモリ1300と通信を行う。DMAコントローラ間データ転送の送信の際、メモリーコントローラ1215からデータを読み出し、バッファ1211に読み出し・書き込みを実行し、信号線1201を経由して、パケットルータ#i 1400にデータを送信する。
The internal configuration of the data controller #i 1200 will be described with reference to FIG. The data controller #i 1200 includes a
DMAコントローラ間データ転送の受信の際、信号線1201を経由して、パケットルータ#i 1400がデータを受信し、バッファ1211に書き込み・読み出しを実行し、メモリーコントローラ1215へデータの書き込みを実行する。データの読み出し・書き込みにおいては、データの先頭アドレスはアドレスレジスタ1212で管理し、データ処理の経過についてはインデックスレジスタ1213で管理している。
When receiving data transfer between DMA controllers, the packet router #i 1400 receives data via the
図4にて、ポートメモリ#i 1300の内部構成を説明する。ポートメモリ#i 1300は、サブメモリコントローラ#1 1310、サブメモリコントローラ#2 1311、ローカルメモリ#1インサイドメモリ1314、ローカルメモリ#2アウトサイドメモリ1315を有する。
The internal configuration of the port memory #i 1300 will be described with reference to FIG. The port memory #i 1300 includes a sub
サブメモリコントローラ1310、1311は信号線1202、1203を経由して、図3のデータコントローラ#i 1200の中のメモリコントローラ1215と通信している。サブメモリコントローラ1310、1311は信号線1312、1313を経由して、ローカルメモリ#1インサイドメモリ1314とローカルメモリ#2アウトサイドメモリ1315通信している。
The
ノード#i が送信元ノードの時、ノード#i からデータコントローラ#i へ送信されたデータは、データの一時保存のために、ローカルメモリ#1インサイドメモリ1314へ書き込まれる。その後、送信先ノードに転送するために、データは、データコントローラ#i 1200に読み出され、信号線1201を経由して、パケットルータ#i 1400に送信される。
When the node #i is the transmission source node, the data transmitted from the node #i to the data controller #i is written to the
ノード#i が送信先ノードの時、データコントローラ#i 1200が受信したデータは、データの一時保存のために、ローカルメモリ#2アウトサイドメモリ1315に書き込まれる。その後、送信先ノードであるノード#i に転送するために、データは、データコントローラ#i 1200に読み出され、信号線1104を経由して、デバイスエミュレータ#i 1100に送信される。
When the node #i is a destination node, the data received by the data controller #i 1200 is written in the
図5にて、パケットルータ#i 1400の内部構成を説明する。パケットルータ#i 1400は、データルーティング部1410を有する。
The internal configuration of the packet router #i 1400 will be described with reference to FIG. The packet router #i 1400 includes a
ノード#i が送信元ノードの時、データルーティング部1410は、信号線1201を経由して、データコントローラ#i 1200から送信されてきたデータをバッファ1411に書き込み・読み出しを実行し、送信先ノードにつながるデータルーティング部へパケットルータ間ネットワーク1401を通して送信する。
ノード#i が送信先ノードの時、データルーティング部1410は、パケットルータ間ネットワーク1401を経由して、送信元ノードにつながるデータルーティング部から送信されてきたデータをバッファ1411に書き込み・読み出しを実行し、データコントローラ#i 1200へ信号線1201を通して送信する。データの読み出し・書き込みにおいては、データの先頭アドレスはアドレスレジスタ1412で管理し、データ処理の経過についてはインデックスレジスタ1413で管理している。
When the node #i is the transmission source node, the
When the node #i is a destination node, the
図6にて、2台のノードが接続された汎用バス直接結合型ネットワークスイッチ1000を例に,ハードウェア、ソフトウェアの階層概念について説明する。
With reference to FIG. 6, the hierarchical concept of hardware and software will be described using a general-purpose bus direct
ノードは、汎用バス直接結合型ネットワークスイッチ1000とそれぞれPCIe1525、1545で接続され、ハードウェア1520、1540を持ち、その中にメモリ1521、1541を含む。また、ハードウェア1520、1540上では、OS1522、1542が稼働している。各OS1522、1542は汎用バス直接結合型ネットワークスイッチ1000を制御するためのドライバ1523、1543がインストールされている。各OS1522、1542上ではユーザプログラム1524、1544が稼働しており、ユーザプログラム1524、1544で通信要求があった場合、その要求はドライバ1523、1543に送信される。ドライバ1523、1543は要求内容に従い、PCIe1525、1545を経由して、汎用バス直接結合型ネットワークスイッチ1000と通信を行う。ドライバ1523、1543は、OS1522、1542及びユーザプログラム1524、1544に対して、通常のネットワークカードのドライバのように振る舞い、OS1522、1542及びユーザプログラム1524、1544にドライバ1523、1543のインストール以外に特別なソフトウェアを必要としない構成となっている。
The node is connected to the general-purpose bus direct-coupled
図7では、本発明の汎用バス直接結合型ネットワークスイッチの実装の一例を示す。 FIG. 7 shows an example of implementation of the general-purpose bus direct coupling network switch of the present invention.
図1-6にて汎用バス直接結合型ネットワークスイッチ1000とした本発明の汎用バス直接結合型ネットワークスイッチを図7では、スイッチ#1 1601とし、ブレードサーバのバックプレーンボード1600上に設置したものとする。
The general-purpose bus direct-coupled network switch of the present invention, which is the general-purpose bus direct-coupled
バックプレーンボード1600上にはノード#1、2、3、N 1620、1630、1640、1650があり、PCIeソケット#1、2、3、N 1621、1631、1641、1651とPCIe信号線束#1、2、3、N 1622、1632、1642、1652を経由して、スイッチ#11601と接続されている。また、スイッチ間信号線束1602はスイッチの拡張でネットワークの拡張のためのものである。
On the
図8-10では、ノード間通信における、セッション構築プロセス、セッション解除プロセス、データ転送プロセスを図1と図6を元に説明する。汎用バス直接結合型ネットワークスイッチ1000の構成については図1を元とし、使用するノードはノード#1、#2 1020、1040とし、内部構成を図6を元とする。説明において、ノード#1を送信ノード、ノード#2は受信ノードとし、次の部位を使用する。ノード#1ドライバ2000、ノード#1メモリ2001、ポート#1 2002、ポート#1デバイスエミュレータ#1 2003、ポート#1ポートメモリ#1 2004、ポート#1データコントローラ#1 2005、ノード#2ドライバ2010、ノード#2メモリ2011、ポート#2 2012、ポート#2デバイスエミュレータ#2 2013、ポート#2ポートメモリ#2 20014、ポート#2データコントローラ#2 2015。また、
図8-10のノード#1ドライバ2000、ノード#2ドライバ2010は図6においてドライバ1523、1543を意味する。図8-10のノード#1メモリ2001、ノード#2メモリ2011は図6におけるメモリ1521、1541を意味する。図8-10のポート#1 2002、ポート#2 2012は図1におけるポート1022、1042を意味する。図8-10のポート#1デバイスエミュレータ2003、ポート#2デバイスエミュレータ2013は図1におけるメモリ1024、1044を意味する。図8-10のポート#1ポートメモリ#1 2004、ポート#2ポートメモリ#1 20014は図1におけるポートメモリ1028、1048を意味する。図8-10のポート#1データコントローラ#1 2005、ポート#2データコントローラ#2 2015は図1におけるメモリ1026、1046を意味する。
8-10, a session construction process, a session release process, and a data transfer process in inter-node communication will be described with reference to FIGS. 1 and 6. FIG. The configuration of the general-purpose bus direct
The
図8では、汎用バス直接結合型ネットワークスイッチ1000を介してデータ転送を実行する前のセッション構築のプロセスについて説明する。
FIG. 8 illustrates a process of session construction before data transfer is performed via the general-purpose bus direct coupling
ノード#1からノード#2へデータ転送を実行する際、セッション構築を実行する。その時、ノード#1、#2において処理を管理するのはノード#1、2ドライバ2000、2010となる。まず、ノード#1ドライバ2000はポート#1 2002を経由してポート#1デバイスエミュレータ#1 2003へセッション接続要求2020を送信する。セッション接続要求には、送信元データのアドレス、データサイズ、送信先宛先、送信先など、データ転送において必要な情報が含まれる。
When executing data transfer from
セッション接続要求2020を受信したポート#1デバイスエミュレータ#1 2003は、セッション構築、データ転送、セッション解除の一連の作業を送信ノードから見た1つのトランザクションとして管理する。トランザクションの情報には、送信ノード、受信ノード、データサイズ、読み出し元アドレス、書き込み先アドレス、データ転送経路情報、バッファなどの情報を管理する。
The
データ転送において、データ転送経路や中継部位でのバッファが必要となる。送信ノード側で、これらの資源の確保のため、ポート#1デバイスエミュレータ#1 2003はポート#1データコントローラ#1 2005へデータ転送準備要求2021を送信する。データ転送準備要求2021を受信したポート#1データコントローラ#1 2005は、データ転送に必要な経路や中継部位でのバッファを確保し、データ転送準備完了通知とデータ転送の際に必要な情報が記載されたデータ転送準備情報2022を送信する。その後、ポート#1デバイスエミュレータ#1 2003は、ノード#1ドライバ2000から受信したセッション接続情報2020とポート#1データコントローラ#1 2005から受信したデータ転送準備情報2022をデバイスエミュレータ間ネットワーク1031、1051を経由してポート#2デバイスエミュレータ#2 2013へ送信2023する。セッション接続要求とポート#1データコントローラ#1 2005からのデータ転送準備情報2023を受信したポート#2デバイスエミュレータ#2 2013は、ポート#1デバイスエミュレータ#1 2003と同様に、セッション構築、データ転送、セッション解除の一連の作業を受信ノードから見た1つのトランザクションとして管理する。
In data transfer, a buffer at the data transfer path or relay part is required. In order to secure these resources on the transmission node side, the
受信ノード側で、これらの資源の確保のため、ポート#2デバイスエミュレータ#2 2013はポート#2データコントローラ#2 2015へデータ転送準備要求とポート#1データコントローラ#1 2005からのデータ転送準備情報を送信2024する。データ転送準備要求とポート#1データコントローラ#1 2005からのデータ転送準備情報2024を受信したポート#2データコントローラ#2 2015は、データ転送に必要な経路や中継部位でのバッファを確保し、ポート#1データコントローラ#1 2005からのデータ転送準備情報を元に、データ転送元の経路を把握する。その後、データ転送準備完了通知とデータ転送の際に必要な情報が記載されたデータ転送準備情報2025をポート#2デバイスエミュレータ#2 2013へ送信する。その後、セッション接続要求とポート#2データコントローラ#2 2015からのデータ転送準備情報2025を受信したポート#2デバイスエミュレータ#2 2013は、ポート#2 2012を経由してノード#2ドライバ2010へセッション接続要求2026を送信する。
In order to secure these resources on the receiving node side,
以上のプロセスにより、ノード#1からノード#2へセッション接続要求の送信を完了とする。この後、ノード#2ドライバ2010によりノード#2からノード#1へのセッション接続許可通知を送信するプロセスに入る。まず、ノード#2ドライバ2010はポート#2 2012を経由してポート#2デバイスエミュレータ#2 2013へセッション接続許可通知2027を送信する。ノード#2ドライバ2010からセッション接続許可通知2027を受信したポート#2デバイスエミュレータ#2 2013はノード#2ドライバ2010からのセッション接続許可通知2027とポート#2データコントローラ#2 2015からのデータ転送準備情報2025をデバイスエミュレータ間ネットワーク1031、1051を経由してポート#1デバイスエミュレータ#12003へ送信2028する。セッション接続許可通知2027とポート#2データコントローラ#2 2015からのデータ転送準備情報2025を受信2028したポート#1デバイスエミュレータ#12003は、ポート#2データコントローラ#2 2015からのデータ転送準備情報2025をポート#1データコントローラ#1 2005へ送信2029する。ポート#2データコントローラ#2 2015からのデータ転送準備情報2025を受信したポート#1データコントローラ#1 2005はポート#2データコントローラ#2 2015からのデータ転送準備情報2025を元に、データ転送先の経路を把握する。その後、ポート#1デバイスエミュレータ#1 2003はポート#1 2002を経由して、ノード#1ドライバ2000へセッション接続許可通知2027を送信2030する。
以上のプロセスを経て、ノード#1ドライバ2000がセッション接続許可通知2030を受信し、ノード#1、#2間でのセッション構築を完了とする。
Through the above process, the transmission of the session connection request from the
Through the above process, the
図9では、汎用バス直接結合型ネットワークスイッチ1000を介してデータ転送を実行した後のセッション解除のプロセスについて説明する。ノード#1、#2間でデータ転送が終了した後、ノード#1ドライバ2010とノード#2ドライバ2010の間のセッションを解除する。
FIG. 9 illustrates a process for canceling a session after data transfer is performed via the general-purpose bus direct coupling
まず最初にポート#1デバイスエミュレータ#1 2003から、ポート#2デバイスエミュレータ#2 2013及び、ポート#2 2012を経由して、セッション解除要求2120を送信する。
First, a
セッション解除要求2120を受信したノード#2ドライバ2010は、ポート#2 2012を経由して、セッション解除通知2121をポート#2デバイスエミュレータ#2 2013へ送信する。
The
セッション解除通知2121を受信したポート#2デバイスエミュレータ#2 2013は、データ転送において、ポート#2データコントローラ#2 2015で確保したデータ転送経路や中継部位でのバッファなどの資源を開放するためにポート#2データコントローラ#2 2015へデータ転送終了処理要求2122を送信し、これら資源の解放後、ポート#2デバイスエミュレータ#2 2013はポート#2データコントローラ#2 2015からのデータ転送終了処理開放通知2123を受信する。
The
その後、ポート#2デバイスエミュレータ#2 2013はデバイスエミュレータ間ネットワーク1031、1051を経由してポート#1デバイスエミュレータ#1 2003へセッション解除通知2124を送信する。
Thereafter, the
ポート#2デバイスエミュレータ#2 2013からセッション解除通知を受信したポート#1デバイスエミュレータ#1 2003はデータ転送において、ポート#1データコントローラ#1 2005で確保したデータ転送経路や中継部位でのバッファなどの資源を開放するためにポート#1データコントローラ#1 2005へデータ転送終了処理要求2125を送信し、これら資源の解放後、ポート#1デバイスエミュレータ#1 2003はポート#1データコントローラ#1 2005からのデータ転送終了処理開放通知2126を受信する。
最後に、ポート#1デバイスエミュレータ#1 2003は、ポート#1 2002を経由してノード#1ドライバ2000へセッション解除通知2127を送信し、セッション解除プロセスを終了する。
Finally, the
図10では、汎用バス直接結合型ネットワークスイッチ1000を介してのデータ転送プロセスについて説明する。
In FIG. 10, a data transfer process via the general-purpose bus direct
ノード#1、#2間でセッション構築の成立後、データ転送プロセスを開始する。セッション構築の際、送信元ノード、データの読み出し先のアドレス、サイズ、送信先ノード、データの書き込み先のアドレスがポート#1デバイスエミュレータ#1 2003のトランザクションで管理される。そのため、ノード#1ドライバ2000は、ポート#1 2002を経由して、ポート#1デバイスエミュレータ#1 2003にデータ転送トランザクション開始要求2220を送信し、ポート#1デバイスエミュレータ1 2003は、DMAコントローラを内蔵するポート#1データコントローラ#1 2005にデータ転送開始要求2221を送信する。データ転送開始要求2221を受信したポート#1データコントローラ#1 2005はノード#1メモリ2001に対しDMA Read2222を要求し、ノード#1メモリ2001からの指定区間のデータ転送2223を受信する。
After the session construction is established between the
その後、ポート#1データコントローラ#1 2005は、受信したデータをポート#1ポートメモリ#1 2004へ書き込み2224を実行し、ポート#1データコントローラ#1上のバッファからデータ消えるなどした時、必要なら、ポート#1ポートメモリ#12004から読み出し2225を実行する。
After that, the
その後、ポート#1ポートメモリ#1 2004からポート#2ポートメモリ#2 2014へパケットルータ#1、#2 1030、1050を経由しデータを転送2226する。
Thereafter, the data is transferred 2226 from the
その後、ポート#2データコントローラ#2 2015は、ポート#2ポートメモリ#2に受信したデータの書き込み2227を実行し、ポート#2データコントローラ#2上のバッファからデータ消えるなどした時、必要なら、ポート#2ポートメモリ#2 2014から読み出し2228を実行する。
After that, when the
その後、データを受信したポート#2データコントローラ#2 2015はノード#2メモリ2011に対しデータ転送(DMA Write)2229を実行し、ノード#2メモリ2011へ指定区間のデータ転送後、ポート#2データコントローラ#2 2015からポート#2データコントローラ#1 2005へ指定区間のデータ転送が完了したことの通知2230を送信する。データ転送において、データ転送が完了するまで、処理2222から2230を繰り返す。
Thereafter, the
データ転送の終了後、ポート#1データコントローラ#1 2005はトランザクションを管理しているポート#1デバイスエミュレータ#1 2003、ポート#1 2002を経由してノード#1ドライバ2000へデータ転送終了通知2232を送信する。その後、ポート#1デバイスエミュレータ#1 2003はノード#1ドライバ2000とノード#2ドライバ2010へデータ転送トランザクション終了通知2233、2234を送信し、データ転送プロセスが終了となる。
After the data transfer ends, the
図11では、図3、4を元にデータコントローラ1200がポートメモリ1300に対して読み出し・書き込みを実行するプロセスについて説明する。
FIG. 11 illustrates a process in which the
データコントローラ1200は、データ受信後、すぐにデータ送信できるとは限らず、データコントローラ1200に内蔵しているDMAコントローラ1210が所持するバッファ1211も有限であるため、データ受信時に、必ずポートメモリ1300にデータの書き込みを実行し、データ送信時にバッファ上からデータが消えている場合,ポートメモリ1300よりデータの読み出しをする。データをデバイスエミュレータ1100から受信し、パケットルータ1400に送信する際には、ポートメモリ1300に内蔵しているインサイドメモリ1314にデータを書き込み・読み出しを実行し、データをパケットルータ1400から受信し、デバイスエミュレータ1100に送信する際には、ポートメモリ1300に内蔵しているアウトサイドメモリ1315にデータを書き込み・読み出しをする。
The
ポートメモリの書き込みにおいて、ポート#1DMAコントローラ#1 2300がメモリの書き込みの許可を問い合わせる送信許可要求を外部より受信する。
In port memory writing, the
受信後、ポート#1DMAコントローラ#1 2300はポート#1メモリコントローラ#1 2301を経由してポート#1サブメモリコントローラ#1 2302に送信許可要求2320を送信し、応答として、ポート#1サブメモリコントローラ#1 2302から送信許可2321を受信する。
After receiving, the
その後、ポート#1DMAコントローラ#1 2300は、ポート#1メモリコントローラ#1 2301とポート#1サブメモリコントローラ#1 2302を経由し、ポート#1ローカルメモリ#1 2303へデータを送信、書き込みを実行2322し、応答として、受信完了通知2323を受信する。
Thereafter, the
ポートメモリの読み出しにおいて、ポート#1DMAコントローラ#1 2300がメモリへの読み出し要求を行うデータ送信要求を外部より受信する。
In reading the port memory, the
受信後、ポート#1DMAコントローラ#1 2300はポート#1メインコントローラ#1 2301とポート#1サブメモリコントローラ#2 2304を経由して、ポート#1ローカルメモリ#2 2305へ先頭アドレスと指定サイズを含んだデータ送信要求2340を送信し、応答として、ポート#1ローカルメモリ#2 2305からのデータ送信2341を受信する。
After reception, the
図8-10で説明したノード間通信におけるセッション構築プロセス、セッション解除プロセス、データ転送プロセスをフローチャートで図12-14に示す。 The session construction process, session release process, and data transfer process in the inter-node communication described with reference to FIG.
図12-14はブロックを左右2列に配置しており、ノード#1側、#2側を意味している。図8-10と同様にノード#1を送信ノード、ノード#2は受信ノードとする。
In FIG. 12-14, blocks are arranged in two rows on the left and right sides, meaning the
図12でセッション構築プロセスのフローチャートを説明する。ノード間データ転送において、最初にセッション構築を行う。ステップ2400をセッション構築プロセスの開始とし、ステップ2401に遷移する。
A flowchart of the session construction process will be described with reference to FIG. In node-to-node data transfer, session construction is first performed.
ステップ2401では、ノード#1ドライバ1523、2000からポート#1デバイスエミュレータ#1 1024、2003にセッション接続要求を送信2020する。
In
セッション接続要求には、送信ノードであるノード#1 1020のメモリ1521の中にあるデータを受信ノードであるノード#2 1040のメモリ1541に複製するために、送信ノード内のデータの先頭アドレス、サイズ、受信ノード宛先が含まれる。
In the session connection request, in order to copy the data in the
ポート#1デバイスエミュレータ#1 1024、2003内で、セッション接続要求は、PCIe通信部1110を経由して、トランザクション管理部1111に送信される。トランザクション管理部1111は、セッション接続要求の中にある宛先情報を元に、汎用バス直接結合型ネットワークスイッチ1000内での経路情報をネットワーク管理部1113より経路情報を取得する。次にステップ2402に遷移する。ステップ2402では、ポート#1デバイスエミュレータ#1 1024、1100のトランザクション管理部1111は、ポート#1データコントローラ#1 1026、1200から信号2021、2022を以って、データ転送準備情報を受信する。これにより、汎用バス直接結合型ネットワークスイッチ1000内の送信ノード側で使用する経路やバッファを確保完了となる。次にステップ2403に遷移する。
In the
ステップ2403では、ポート#1デバイスエミュレータ#1 1024、1100からポート#2デバイスエミュレータ#2 1044、1100へデバイスエミュレータ間ネットワーク1031、1051を経由してセッション接続要求とポート#1データコントローラ#1 1026、1200からのデータ転送準備情報を送信する。その後、ポート#1デバイスエミュレータ#1 1024、1100は、ポート#2デバイスエミュレータ#2 1044、1100からのセッション接続許可の受信を待機するステップ2404に遷移する。
In
次に、ステップ2403にてポート#1デバイスエミュレータ#1 1024、1100がポート#2デバイスエミュレータ#2 1044、1100へセッション接続要求とポート#1データコントローラ#1 1026、1200からのデータ転送準備情報を送信した後のポート#2デバイスエミュレータ#2の処理ステップ2405について説明する。
Next, in
ステップ2405では、ポート#2デバイスエミュレータ#2 1044、1100はポート#1デバイスエミュレータ#1 1024、1100からデバイスエミュレータ間ネットワーク1031、1051を経由してセッション接続要求とポート#1データコントローラ#1 1026、1200からのデータ転送準備情報を受信する。
In
その後、ステップ2406で、ポート#2デバイスエミュレータ#2 1044、1100のトランザクション管理部1111は、ポート#2データコントローラ#2 1046、1200から信号2024、2025を以って、データ転送準備情報を取得する。これにより、汎用バス直接結合型ネットワークスイッチ1000内の送信ノード側で使用する経路やバッファを確保完了となる。この時、取得したポート#1データコントローラ#1 1026、1200からのデータ転送準備情報を利用して,データ転送に使用する経路の設定を行い,次にステップ2407に遷移する。
Thereafter, in
ステップ2407では、ポート#2デバイスエミュレータ#2 1044、2013からノード#2ドライバ1543、2010へセッション接続要求を送信2026する。次に、ステップ2408に遷移する。
In
ステップ2408では、セッション接続要求を受信したノード#2ドライバ1543、2010は、ポート#2デバイスエミュレータ#2 1044、2013にセッション接続許可通知を送信2027する。
In
セッション接続要求には、送信ノードであるノード#1 1020のメモリ1521の中にあるデータを受信ノードであるノード#2 1040のメモリ1521に複製するための受信ノード内での書き込みエリアの先頭アドレスが含まれる。
In the session connection request, the start address of the write area in the receiving node for replicating the data in the
ポート#2デバイスエミュレータ#2 1044、2013内で、セッション接続要求は、PCIe通信部1110を経由して、トランザクション管理部1111に送信される。トランザクション管理部1111は、セッション接続要求の中にある宛先情報を元に、汎用バス直接結合型ネットワークスイッチ1000内での経路情報をネットワーク管理部1113より経路情報を取得する。次にステップ2409に遷移する。
In the
ステップ2409では、ポート#2デバイスエミュレータ#2 1044、1100からポート#1デバイスエミュレータ#1 1024、1100へデバイスエミュレータ間ネットワーク1031、1051を経由してセッション接続許可通知とポート#2データコントローラ#2 1046、1200からのデータ転送準備情報を送信する。
In
次に、ステップ2409にてポート#2デバイスエミュレータ#2 1044、1100がポート#1デバイスエミュレータ#1 1024、1100へセッション接続許可通知とポート#2データコントローラ#2 1046、1200からのデータ転送準備情報を送信した後のポート#1デバイスエミュレータ#1の処理ステップ2410について説明する。
Next, in
ステップ2410では、ポート#1デバイスエミュレータ#1 1024、1100はポート#2デバイスエミュレータ#2 1044、1100からデバイスエミュレータ間ネットワーク1031、1051を経由してセッション接続許可通知とポート#2データコントローラ#2 1046、1200からのデータ転送準備情報を受信2028する。
In
その後、ステップ2411で、ポート#1デバイスエミュレータ#1 1024、1100のトランザクション管理部1111は、ポート#1データコントローラ#1 1026、1200へ信号2029を以って、ポート#2データコントローラ#2 1046、1200からのデータ転送準備情報を送信する。これにより、取得したポート#2データコントローラ#2 1046、1200からのデータ転送準備情報を利用して,データ転送に使用する経路の設定を行い,次にステップ2412に遷移する。
Thereafter, in
ステップ2412において、汎用バス直接結合型ネットワークスイッチ1000内部で、データ転送のために必要な経路やバッファが確保されており、ポート#1デバイスエミュレータ#1 1024、1100からノード#1ドライバ1523、2000へセッション接続許可通知2030を送信する。
In
最後にステップ2413において以上の処理を確認し、セッション構築プロセスの終了となる。
Finally, in
図13でセッション解除プロセスのフローチャートを説明する。ノード間データ転送において、最後にセッション解除を行う。ステップ2500をセッション解除プロセスの開始とし、ステップ2501に遷移する。
A flowchart of the session release process will be described with reference to FIG. In the data transfer between nodes, the session is finally released.
ステップ2501では、ポート#1デバイスエミュレータ#1 1024、2003からポート#2デバイスエミュレータ#2 1044、2013にデバイスエミュレータ間ネットワークを経由して、セッション解除要求を送信2120する。
In
セッションを区別する情報はポート#1デバイスエミュレータ#1 1024、2003内のトランザクション管理部1111が所持しているため、セッション解除要求はトランザクション管理部1111から送信する。
Since the information for identifying the session is possessed by the
その後、ポート#1デバイスエミュレータ#1 1024、1100は、ポート#2デバイスエミュレータ#2 1044、1100からのセッション解除通知の受信を待機するステップ2502に遷移する。
Thereafter, the
次に、ステップ2501にてポート#1デバイスエミュレータ#1 1024、1100がポート#2デバイスエミュレータ#2 1044、1100へセッション接続要求を送信した後のポート#2デバイスエミュレータ#2の処理ステップ2503について説明する。ステップ2503では、ポート#2デバイスエミュレータ#2 1044、1100はポート#1デバイスエミュレータ#1 1024、1100からデバイスエミュレータ間ネットワーク1031、1051を経由してセッション解除要求を受信2120する。
Next, processing
その後、ステップ2504では、ポート#2デバイスエミュレータ#2 1044、2013からノード#2ドライバ1543、2010へセッション解除要求を送信2120する。次に、ステップ2505に遷移する。
Thereafter, in
セッション解除要求を受信したノード#2ドライバ1543、2010は、ポート#2デバイスエミュレータ#2 1044、2013にセッション解除通知を送信2121する。ポート#2デバイスエミュレータ#2 1044、2013内で、セッション解除通知は、PCIe通信部1110を経由して、トランザクション管理部1111に送信される。
The
その後、ステップ2506で、ポート#2デバイスエミュレータ#2 1044、1100のトランザクション管理部1111は、ポート#2データコントローラ#2 1046、1200から信号2122、2123を以って、データ転送終了処理完了通知を受信する。これにより、汎用バス直接結合型ネットワークスイッチ1000内の受信ノード側で使用した経路やバッファが解除完了となる。次にステップ2507に遷移する。
Thereafter, in
ステップ2507では、ポート#2デバイスエミュレータ#2 1044、1100からポート#1デバイスエミュレータ#1 1024、1100へデバイスエミュレータ間ネットワーク1031、1051を経由してセッション解除通知を送信2124する。
In
次に、ステップ2507にてポート#2デバイスエミュレータ#2 1044、1100がポート#1デバイスエミュレータ#1 1024、1100へセッション接続許可通知を送信した後のポート#1デバイスエミュレータ#1の処理ステップ2508について説明する。
Next, in
ステップ2508では、ポート#1デバイスエミュレータ#1 1024、1100はポート#2デバイスエミュレータ#2 1044、1100からデバイスエミュレータ間ネットワーク1031、1051を経由してセッション解除通知を受信する。
In
その後、ステップ2509で、ポート#1デバイスエミュレータ#1 1024、1100のトランザクション管理部1111は、ポート#1データコントローラ#1 1026、1200から信号2125、2126を以って、データ転送終了処理完了通知を受信する。これにより、汎用バス直接結合型ネットワークスイッチ1000内の送信ノード側で使用した経路やバッファが解除完了となる。次にステップ2510に遷移する。
Thereafter, in
ステップ2510において、最後に、ポート#1デバイスエミュレータ#1 1024、1100からノード#1ドライバ1523、2000へセッション接続許可通知2030を送信する。
In
ステップ2511において以上の処理を確認し、セッション解除プロセスの終了となる。
In
図14aと図14bと図14cでデータ転送プロセスのフローチャートを説明する。ステップ2600をデータ転送プロセスを開始とし、ステップ2601に遷移し、ノード#1ドライバにてセッション接続が完了していることを確認する。次にステップ2602に遷移する。
A flowchart of the data transfer process is described with reference to FIGS. 14a, 14b and 14c. In
ステップ2602にてノード#1ドライバ1523からポート#1デバイスエミュレータ#1 1024、1100へデータ転送トランザクション開始要求を送信2220する。
In
次にステップ2603にてポート#1デバイスエミュレータ#1 1024、1100からポート#1データコントローラ#1 1026、1200へデータ転送開始要求を送信2221し、ステップ2604へ遷移する。
In
ステップ2604では、DMAで読み出し・書き込みできる分轄された区間にあるデータを転送するためポート#1データコントローラ#1 1026、1200からノード#1メモリ1521へDMA Readを送信2222し、データを受信2223する。
In
ステップ2605では、DMA Readで要求したデータが取得しているかを確認し、未完了であればステップ2604に遷移し、完了であればステップ2606に遷移する。
In
ステップ2606では、信号2224で、ポート#1ポートメモリ#1 1028、1300にデータを保存する。次にステップ2607にて、ポート#1データコントローラ#1 1026、1200からポート#2データコントローラ#2 1046、1200へポート#1パケットルータ#1 1030、1400、ポート#2パケットルータ#2 1050、1400、パケットルータ間ネットワーク1033、1053を経由してデータ送信2226を開始する。
In
ただし、ステップ2608にてポート#1データコントローラ#1 1026、1200がポート#1パケットルータ#1 1030、1400よりデータの転送一時停止割込みを受信しているかを確認し、Yesならステップ2609へ遷移し、Noならステップ2613へ遷移し、ポート#1データコントローラ#1 1026、1200からポート#2データコントローラ#2 1046、1200へのデータ送信を完了とする。
However, in
ステップ2609にてポート#1データコントローラ#1 1026、1200がポート#2データコントローラ#2 1046、1200からのデータ転送一時停止割込みを受信したならステップ2610にてポート#1データコントローラ#1 1026、1200からポート#2データコントローラ#2 1046、1200へのデータ送信を一時停止する。その後、ステップ2611にてポート#1データコントローラ#1 1026、1200がポート#2データコントローラ#2 1046、1200からの転送再開許可通知を受信する。ただし、ステップ2612にてポート#1データコントローラ#1 1026、1200のバッファからデータが消えている場合、ポート#1ポートメモリ#1 1028、1300からデータの読み出し2225を実行し、ステップ2607へ戻る。
If
ポート#1データコントローラ#1 1026、1200にてデータ送信を完了した場合、ステップ2613へ戻る。
When data transmission is completed at
次に、ステップ2607にてポート#1データコントローラ#1 1026、1200がポート#2データコントローラ#2 1046、1200へデータ送信をし始めた時のポート#2データコントローラ#2 1046、1200について説明する。
Next,
ステップ2614にてポート#2データコントローラ#2 1046、1200がポート#1データコントローラ#1 1026、1200からのデータ受信2226を開始する。ただし、ステップ2615にてポート#2データコントローラ#2 1046、1200がポート#2パケットルータ#2 1050、1400よりデータの転送一時停止割込みを送信するかを決定し、Yesならステップ2616へ遷移し、Noならステップ2619へ遷移し、ポート#2データコントローラ#2 1046、1200のポート#1データコントローラ#1 1026、1200からのデータ受信を継続とする。
In
ステップ2616にてポート#2データコントローラ#2 1046、1200がポート#1データコントローラ#1 1026、1200へデータ転送一時停止割込みを送信したならステップ2617にてポート#2データコントローラ#2 1046、1200はポート#1データコントローラ#1 1026、1200からのデータ受信を一時停止する。
If
その後、ステップ2618にてポート#2データコントローラ#2 1046、1200がポート#1データコントローラ#1 1026、1200へ転送再開許可通知を送信し、ステップ2614へ戻る。ステップ2615にて、転送一時停止割込を送信しなかった場合、ステップ2619にてポート#2データコントローラ#2 1046、1200はポート#1データコントローラ#1 1026、1200からのデータ受信を継続する。
Thereafter, in step 2618, the
その後、ステップ2620にて、受信したデータのポート#2ポートメモリ#2 1048、1300への書き込み2227を開始する。
Thereafter, in
ステップ2622にて、ポート#2データコントローラ#2 1046、1200がノード#2メモリ1541へデータをDMA Write出来る状況かを判定し、Yesならステップ2624、Noならステップ2623へ遷移する。
In
ステップ2623では、動作を一時停止し、その後、再び、ステップ2622へ戻る。ステップ2622でポート#2データコントローラ#2 1046、1200がノード#2メモリ1541へデータをDMA Write出来る状況かの判定で、Yesならステップ2624に遷移し、ポート#2ポートメモリ#2 1048、1300からデータの読み出し2228を実行する。
In
その後、ステップ2625にてポート#2データコントローラ#2 1046、1200からノード#2メモリ1541への分轄された区間におけるデータのDMA Write完了し、データ転送の終了通知をポート#1データコントローラ#1 1026、1200へ送信2230する
次に、ステップ2625にてポート#2データコントローラ#2 1046、1200がポート#1データコントローラ#1 1026、1200へデータ転送終了通知を送信2230した後のポート#1データコントローラ#1 1026、1200について説明する。
Thereafter, in
まず、ステップ2626にて、ポート#1データコントローラ#1 1026、1200がポート#2データコントローラ#2 1046、1200からのデータ転送終了通知を受信2230し、ステップ2627にて、全データの転送が終了しているかを判定し、Noならステップ2604に戻り、動作を繰り返し、Yesならステップ2628に遷移する。
First, in
ステップ2628では、ポート#1データコントローラ#1 1026、1200からポート#2データコントローラ#2 1046、1200へデータ転送終了通知を送信2231する
ステップ2629では、ポート#1データコントローラ#1 1026、1200からポート#1デバイスエミュレータ#1 1024、1100を経由して、ノード#1ドライバ1523へデータ転送終了通知を送信2232する。
In
ステップ2630ではポート#1デバイスエミュレータ#1 1024、1100からポート#2デバイスエミュレータ#2 1044、1100へデバイスエミュレータ間ネットワーク1031、1051、1105を経由してデータ転送トランザクション終了通知2234を送信し、ステップ2631にて、ポート#1デバイスエミュレータ#1 1024、1100からノード#1ドライバ1523へ同様に、データ転送トランザクション終了通知を送信2233する。
In
次に、ステップ2628にてポート#1データコントローラ#1 1026、1200がポート#2データコントローラ#2 1046、1200へデータ転送終了通知を送信2231した後のポート#2データコントローラ#2 1046、1200について説明する。
Next, in
ステップ2632では、ポート#2データコントローラ#2 1046、1200はポート#1データコントローラ#1 1026、1200からデータ転送終了通知を受信2231する。
In
ステップ2633では、ポート#2データコントローラ#1 1046、1200からポート#2デバイスエミュレータ#1 1044、1100を経由して、ノード#2ドライバ1543へデータ転送終了通知を送信2231する。
In
ステップ2634ではポート#2デバイスエミュレータ#2 1044、1100はポート#1デバイスエミュレータ#1 1024、1100からデバイスエミュレータ間ネットワーク1031、1051、1105を経由してデータ転送トランザクション終了通知を受信2234し、ステップ2635にて、ポート#2デバイスエミュレータ#1 1044、1100からノード#2ドライバ1543へ同様に、データ転送トランザクション終了通知を送信2234する。最後にステップ2632にてこれら全ての処理を持ってデータ転送終了となる。
In
図15で、汎用バス直接結合型ネットワークスイッチ1000を介して、ノード1020、104、1060が通信する際に使用するプロトコルの構成と、そのプロトコルが、汎用バス直接結合型ネットワークスイッチ1000内部のデバイスエミュレータ1024、1044、1064、データコントローラ1026、 1046、 1066、ポートメモリ1028、1048、1068、パケットルータ1030、1050、1070などの各部位にてどのように使用されるかについて説明する。
In FIG. 15, the configuration of the protocol used when the
汎用バス直接結合型ネットワークスイッチ1000とノード1020、1040、1060の経路はPCIeで接続されているため、データ転送で使用されるパケットの構造はPCIeのプロトコルに依存し、パケットはPCIeパケットエリア1710と非PCIeパケットエリア1720の2つに分けられる。この時、PCIeの経路上では、PCIeパケットエリア1710の情報だけを参照し、汎用バス直接結合型ネットワークスイッチ1000とノード1020、1040、1060の間のデータ転送を実現する。この時、非PCIeパケットエリアはPCIeバス上でのデータ転送におけるパケットの振る舞いに影響を及ぼさない 。
Since the general-purpose bus direct coupling
汎用バス直接結合型ネットワークスイッチはポート1022、1042、1062で PCIeのプロトコルに従う電気信号を送受信し、論理信号に変換したパケットをデバイスエミュレータ1024、1044、1064と送受信する。その後、デバイスエミュレータ1024、1044、1064内のPCIe通信部1110にてPCIeのプロトコルに従う信号の処理を行い、PCIeパケットエリア1710を削除した非PCIeパケットエリアのみでトランザクション管理1111とデータ転送を行う。この後のデバイスエミュレータ1024、1044、1064、データコントローラ1026、1046、1066、ポートメモリ1028、1048、1068、パケットルータ1030、1050、1070の間では、非PCIパケットエリアを参照し、データ転送を実現する。
The general-purpose bus direct coupling type network switch transmits and receives electrical signals in accordance with the PCIe protocol at
非PCIeパケットエリア2720は、パケットレングス2730、ローカル・トランザクションエリア2740、グローバルトランザクションエリア2750、データエリア2760で構成される。
The
パケットレングス2720は、非PCIeパケットエリア2720のサイズを示す。
The
ローカル・トランザクションエリア2740は、パケットタイプ2741、ステータス2742、リクエスタID2743、リクエスタ・トランザクション識別子2744、コンプリータID2745、コンプリータ・トランザクション識別子2746、信号処理方向識別子2747で構成される。
The
ローカル・トランザクションエリア2740は、汎用バス直接結合型ネットワークスイッチ1000内部のデバイスエミュレータ1024、1044、1064、データコントローラ1026、1046、1066、ポートメモリ1028、1048、1068、パケットルータ1030、1050、1070の信号線で接続された部位間でのデータ転送の制御に使用される。パケットタイプ2741は、パケットがなんの機能のために発行されたかを示す。各デバイスはパケットタイプ2741に従い、パケットを受信したデバイスは挙動を決定する。リクエスタID2743とコンプリータID2745は、パケットを送信するデバイスと受信するデバイスを意味する。リクエスタ・トランザクション識別子2744とコンプリータ・トランザクション識別子2746は、各デバイスがデバイス間のローカルなトランザクションを識別するために使用する。
The
リクエスタは、パケットをはじめて送信する際にリクエスタ内で固有の値になるようにリクエスタ・トランザクション識別子2744を決定し、コンプリータ・トランザクション識別子2746は未指定パラメータを設定する。コンプリータは受信したパケットに未知のリクエスタ・トランザクション識別子2744と未指定パラメータのコンプリータ・トランザクション識別子2746がある判定した時、リクエスタ内で固有の値になるようにコンプリータ・トランザクション識別子2746を設定する。リクエスタID2743とコンプリータID2745とリクエスタ・トランザクション識別子2744は、ローカルなトランザクションを開始する際に、リクエスタによって決定され、ローカルなトランザクションが終了するまで変更されない。
When the requester transmits a packet for the first time, the
コンプリータ・トランザクション識別子2746はローカルなトランザクションが開始された時、未指定パラメータで、コンプリータが信号の返信を行った際にコンプリータによって決定され、ローカルなトランザクションが終了するまで変更されない。 The completer transaction identifier 2746 is an unspecified parameter when a local transaction is started, and is determined by the completer when the completer returns a signal, and is not changed until the local transaction ends.
信号処理方向識別子2747は、信号の向きを設定する。グローバル・トランザクションエリア2750は、パケットタイプ2751、ステータス2752、リクエスタID2753、リクエスタ・トランザクション識別子2754、コンプリータID2755、コンプリータ・トランザクション識別子2756、信号処理方向識別子2757で構成さる。
The signal
グローバル・トランザクションエリア2750は、ノード間通信の制御に使用される。
The
パラメータID2751-2757の使用方法についてはローカルトランザクション・エリアのパラメータ2741-2747と同じである。ただし、グローバル・トランザクションエリア2750のリクエスタID2753とコンプリータID2755はパケットを送信するノードと受信するノードを意味する。
The usage method of the parameter IDs 2751-2757 is the same as the parameters 2741-2747 in the local transaction area. However, the
データエリア2760はデータレングス2761、データ2762で構成される。
The
データレングス2761はデータ2760のサイズを示す。データ2762は、ローカルトランザクションエリアの2740パケットタイプ2741によって内容が異なる。内容については2810〜2826で構成されたデータフォーマット表2800にて示す。
図16で、汎用バス直接結合型ネットワークスイッチ1000を介して、ノード1020、104、1060が通信する際に使用するプロトコルにあるデータエリアのデータフォーマットとそのデータがどのように使用されるかについて説明する。
データフォーマット表2800はローカルトランザクションエリアのパケットタイプ2810とデータエリアのデータ2820で対応付けられている。RTS(Request To Send)2811は送信許可要求であり、データ2762には送信データのメモリの読込先の先頭アドレス、サイズ2821がある。CTS(Clear To Send)2812は送信許可通知であり、データ2762には受信データのメモリの書込先の先頭アドレス2822がある。
FIG. 16 explains the data format of the data area in the protocol used when the
The data format table 2800 is associated with the
DMAr(DMA read)2813はダイレクトメモリアクセスでの読み出しで、データ2762には送信データのメモリの読込先の先頭アドレス、サイズ2823がある。
A DMAr (DMA read) 2813 is a direct memory access read, and the
DMAw(DMA write)2814はダイレクトメモリアクセスでの書き込みで、データ2762にはメモリの書き込み先の先頭アドレス、データ2824がある。ACK/NACK2815は処理の成否を意味するAcknowledgement/No-Acknowledgementで、データ2762には成功の可否、シーケンス番号2825がある。
DMAw (DMA write) 2814 is a write by direct memory access, and
DATA2816はデータを送信する時に使用し、データ2762にはシーケンス番号、サイズ、データ2826がある。
ELSE2817はデバイス固有に必要とする命令のために用意されており、データ2762はデバイス依存2826となる。
The
1000…汎用バス直接結合型ネットワークスイッチ
1020、1040、1060…ノード
1022、1042、1062、1102…ポート
1024、1044、1064、1100…デバイスエミュレータ
1026、1046、1066、1200…データコントローラ
1028、1048、1068、1300…ポートメモリ
1030、1050、1070、1400…パケットルータ
1031…デバイスエミュレータ間ネットワーク
1033…パケットルータ間ネットワーク
1051…デバイスエミュレータ間ネットワーク
1053…パケットルータ間ネットワーク
1071…デバイスエミュレータ間ネットワーク
1073…パケットルータ間ネットワーク
1100…デバイスエミュレータ#i
1102…ポート#i 1102
1105…デバイスエミュレータ間ネットワーク
1110…PCIe通信部
1111…トランザクション管理部
1112…デバイスエミュレータ間通信部
1113…ネットワーク管理部
1200…データコントローラ#i
1210…データコントローラ#i 1200に内蔵されるDMAコントローラ
1211…DMAコントローラ#i 1210に内蔵されるバッファ
1212…DMAコントローラ#i 1210に内蔵されるアドレスレジスタ
1213…DMAコントローラ#i 1210に内蔵されるインデックスレジスタ
1215…メモリコントローラ
1300…ポートメモリ#i
1310…サブメモリコントローラ#1
1311…サブメモリコントローラ#2
1314…ポートメモリ#i 1300に内蔵されるローカルメモリ#1
1315…ポートメモリ#i 1300に内蔵されるローカルメモリ#2
1400…パケットルータ#i
1401…パケットルータ間ネットワーク
1410…データルーティング部
1411…バッファ
1412…アドレスレジスタ
1413…インデックスレジスタ
1520…ノード#1ハードウェア
1521…メモリ
1522…OS
1523…ドライバ
1524…ユーザプログラム
1540…ノード#2ハードウェア
1600…バックプレーンボード
1601…スイッチ#1
1620…ノード#1
1621…PCIeソケット#1
1650…ノード#N
1651…PCIeソケット#N
1000: General-purpose bus direct
1102 ...
1105:
1210:
1310: Sub
1311 ... Sub
1314:
1315:
1400: Packet router #i
1401 ... Network between
1523 ...
1620 ...
1621 ...
1650: Node #N
1651 ... PCIe socket #N
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013084460A JP2014206883A (en) | 2013-04-15 | 2013-04-15 | Computing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013084460A JP2014206883A (en) | 2013-04-15 | 2013-04-15 | Computing system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014206883A true JP2014206883A (en) | 2014-10-30 |
Family
ID=52120379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013084460A Pending JP2014206883A (en) | 2013-04-15 | 2013-04-15 | Computing system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014206883A (en) |
-
2013
- 2013-04-15 JP JP2013084460A patent/JP2014206883A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022105884A1 (en) | Data transmission method and apparatus, network device, and storage medium | |
JP5601601B2 (en) | Communication control system, switch node, and communication control method | |
EP3032787B1 (en) | Method, device, system and storage medium for implementing packet transmission in pcie switching network | |
CN111104775B (en) | Network-on-chip topological structure and implementation method thereof | |
US9842075B1 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
JP6475625B2 (en) | Inter-core communication apparatus and method | |
CN109933438B (en) | High-speed shared memory data receiving and transmitting system | |
JP3807250B2 (en) | Cluster system, computer and program | |
CN112291293B (en) | Task processing method, related equipment and computer storage medium | |
CN114546913B (en) | Method and device for high-speed data interaction between multiple hosts based on PCIE interface | |
CN110636139B (en) | Optimization method and system for cloud load balancing | |
JP7311280B2 (en) | Storage system and its host storage drive and data storage method | |
CN110119304B (en) | Interrupt processing method and device and server | |
CN113472624A (en) | Method for realizing virtual network data packet forwarding based on vDPA and application | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
CN115827524A (en) | Data transmission method and device | |
US20090292856A1 (en) | Interserver communication mechanism and computer system | |
CN112867998B (en) | Operation accelerator, switch, task scheduling method and processing system | |
JP4927104B2 (en) | Packet switching for system power mode control | |
KR20050080704A (en) | Apparatus and method of inter processor communication | |
JP2014206883A (en) | Computing system | |
JP2023529831A (en) | Separate switch control path using directly attached dispatch | |
CN112463680A (en) | Data transfer method and device | |
CN111427813A (en) | Inter-core communication method based on serial port, terminal and storage medium | |
US11698878B1 (en) | Highspeed shared-memory optical network interfaces and topology |