KR20200112422A - Pcie ntb based data share system between multi host and method thereof - Google Patents
Pcie ntb based data share system between multi host and method thereof Download PDFInfo
- Publication number
- KR20200112422A KR20200112422A KR1020190032865A KR20190032865A KR20200112422A KR 20200112422 A KR20200112422 A KR 20200112422A KR 1020190032865 A KR1020190032865 A KR 1020190032865A KR 20190032865 A KR20190032865 A KR 20190032865A KR 20200112422 A KR20200112422 A KR 20200112422A
- Authority
- KR
- South Korea
- Prior art keywords
- host
- data
- hosts
- ntb
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
Abstract
Description
본 발명은 PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템 및 방법에 관한 것으로, 자세하게는, 공유 데이터 영역을 기반으로 다중 호스트간 데이터를 송수신하는 무스위치 네트워크 시스템 및 방법에 관한 것이다.The present invention relates to a PCIe NTB-based data sharing system and method between multiple hosts, and in detail, to a switchless network system and method for transmitting and receiving data between multiple hosts based on a shared data area.
고성능 수퍼컴퓨터(HPC; High Performance Compuiting) 시스템은 다수의 계산노드(Computation Node)를 초고성능 상호연결망(Interconnection Network)으로 연결하여 클러스터 시스템으로 구성하고 있으며, 이러한 상호연결망 기술은 고성능 수퍼컴퓨터 시스템의 성능과 안정성을 결정하는 중요한 기술 요소이다.The high performance supercomputer (HPC) system consists of a cluster system by connecting a number of computation nodes with an ultra-high performance interconnection network, and this interconnection technology is the performance of a high-performance supercomputer system. It is an important technical factor that determines the stability and stability.
이러한 고성능 수퍼컴퓨터의 자체적인 개발을 위해, 기술 의존성이 높은 인터커넥트 기술인 인피니티밴드/이더넷(Infiniband/Ethernet) 대신, 저전력 및 고성능 기능을 구현할 수 있는 PCIe 기반 스위칭 기술을 대체 인터커넥트 기술로서 사용한다.For the self-development of such a high-performance supercomputer, instead of Infiniband/Ethernet, an interconnect technology with high technology dependence, PCIe-based switching technology that can implement low-power and high-performance functions is used as an alternative interconnect technology.
PCIe 기반 스위칭 기술은 컴퓨터 내부의 CPU와 메모리 및 주변장치 등을 연결하는데 사용되는 기술이나, PCIe 스위칭 칩 제조사의 기술지원에 한계가 있어, PCIe 스위칭 기술을 대체 인터커넥트 기술로 활용하기 위해서 PCIe NTB(Non-Transparent Bridge) 기술을 활용하는 방안이 제시되고 있다.PCIe-based switching technology is a technology used to connect the CPU, memory, and peripherals inside a computer, but there is a limitation in technical support from PCIe switching chip manufacturers, so to use PCIe switching technology as an alternative interconnect technology, PCIe NTB (Non -Transparent Bridge) technology is being proposed.
PCIe NTB는 독립된 두 호스트 사이에 분리된 어드레스 영역에서 주소 변환을 통해 직접적 접근을 구현하는 장치로서, 3대 이상의 호스트간 연결의 연구개발이 필요한 실정이다.PCIe NTB is a device that implements direct access through address translation in an address area separated between two independent hosts, and research and development of connections between three or more hosts is required.
본 발명이 이루고자 하는 기술적 과제는 PCIe NTB 기술을 이용하여 3대 이상의 멀티 호스트간 무스위치 인터커넥션 통신방법을 제공함으로써, 고성능 수퍼컴퓨터 상호연결망의 구성에 소요되는 비용을 절감하기 위한 것이다.The technical problem to be achieved by the present invention is to reduce the cost required to construct a high-performance supercomputer interconnection network by providing a switchless interconnection communication method between three or more multi-hosts using PCIe NTB technology.
본 발명의 일 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템은 데이터를 송신하거나 데이터를 수신하는 독립된 컴퓨터로서, 데이터 송신 또는 수신을 처리하는 CPU와, 데이터를 저장하거나 분리된 어드레스 영역인 메모리 윈도우로 할당하는 메모리를 각각 포함하는 적어도 세 개의 호스트, 그리고 상기 적어도 세 개의 호스트에 각각 연결되고, 적어도 두 개의 NTB 포트를각각 구비하여, 상기 적어도 두 개의 NTB 포트 중 어느 하나는 상기 이웃 호스트에 연결된 호스트 아답터의 NTB 포트에 연결되고, 나머지 하나는 또다른 상기 이웃 호스트에 연결된 호스트 아답터의 NTB 포트에 각각 연결되어, 서로 다른 두 개의 이웃 호스트에 NTB 포트를 통해 링 토폴로지 구조로 연결되는 PCIe NTB 기반의 적어도 세 개의 호스트 아답터를 포함하여, 상기 두 호스트에 형성된 호스트 아답터들의 NTB 포트들을 통해 상기 메모리 윈도우가 공유되어 상기 두 호스트간 데이터 송수신이 이루어지는 것을 특징으로 한다.The PCIE NTB-based data sharing system between multiple hosts according to an embodiment of the present invention is an independent computer that transmits or receives data, a CPU that processes data transmission or reception, and an address area that stores or separates data. At least three hosts each including memory allocated as a memory window, and each connected to the at least three hosts, each having at least two NTB ports, and one of the at least two NTB ports is connected to the neighboring host. PCIe NTB-based, which is connected to the NTB port of the connected host adapter, and the other is connected to the NTB port of the host adapter connected to another neighboring host, and is connected to two different neighboring hosts in a ring topology structure through NTB ports. Including at least three host adapters of, the memory window is shared through NTB ports of host adapters formed in the two hosts, so that data transmission/reception between the two hosts is performed.
상기 메모리 윈도우는, 상기 메모리 윈도우가 형성된 호스트의 호스트 아답터를 통해 연결되는 서로 다른 두 개의 이웃 호스트에 대해 각각 형성되어, 상기 서로 다른 두 개의 이웃 호스트에 대해 각각 형성된 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 한다.The memory windows are respectively formed for two different neighboring hosts connected through a host adapter of a host on which the memory window is formed, and data between the two hosts are transmitted through memory windows respectively formed for the two different neighboring hosts. It is characterized by sharing.
상기 메모리 윈도우는, 데이터 수신을 위한 메모리 윈도우와 데이터 송신을 위한 메모리 윈도우를 각각 포함하고, 호스트의 데이터 송신 또는 수신에 따라 상기 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 한다.The memory window includes a memory window for data reception and a memory window for data transmission, and shares data between two hosts through the memory window according to data transmission or reception by the host.
상기 서로 다른 두 개의 이웃 호스트에 대해 각각 형성된 메모리 윈도우는 데이터 수신을 위한 메모리 윈도우와 데이터 송신을 위한 메모리 윈도우를 각각 포함하고, 호스트의 데이터 송신 또는 수신에 따라 상기 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 한다.Each of the memory windows formed for the two different neighboring hosts includes a memory window for data reception and a memory window for data transmission, and data between the two hosts is transmitted through the memory window according to data transmission or reception by the host. It is characterized by sharing.
상기 두 호스트간 데이터 송수신은 DMA를 통해 이루어지는 것을 특징으로 한다.Data transmission/reception between the two hosts is characterized in that it is performed through DMA.
데이터를 송신하는 호스트는 DMA를 통해 데이터를 송신한 이후 도어벨 레지스터를 통해 DMA 데이터 전송을 알리는 인터럽트를 발생하고, 데이터를 수신하는 호스트는 상기 인터럽트를 통해 수신된 데이터를 확인하는 것을 특징으로 한다.The host transmitting data is characterized in that after transmitting the data through the DMA, an interrupt notifying of the DMA data transmission is generated through the doorbell register, and the host receiving the data checks the received data through the interrupt.
상기 CPU는 상기 적어도 세 개의 호스트들의 식별번호를 링 테이블로 형성하고, 상기 호스트가 데이터를 다른 호스트로 송신함에 있어서, 상기 링 테이블을 참조하여 데이터를 송신하는 호스트의 식별번호와 데이터를 수신할 호스트의 식별번호를 정보로서 송신하는 것을 한다.The CPU forms the identification numbers of the at least three hosts as a ring table, and when the host transmits data to another host, the identification number of the host transmitting data and the host to receive the data refer to the ring table. The identification number of is transmitted as information.
상기 정보는 공유할 데이터의 메모리 주소, 전송 데이터 크기를 더 포함하는 것을 특징으로 한다.The information may further include a memory address of data to be shared and a size of transmission data.
한 예에서, 데이터를 송신하는 호스트 및 데이터를 수신하는 호스트 사이를 연결하는 스크래치패드 레지스터를 더 포함하고, 상기 데이터를 송신하는 호스트는 상기 정보를 상기 스크래치패드 레지스터를 통해 상기 데이터를 수신하는 호스트로 송신하는 것을 특징으로 한다.In one example, a scratch pad register is connected between a host transmitting data and a host receiving data, and the host transmitting the data transmits the information to the host receiving the data through the scratch pad register. It is characterized by transmitting.
상기 적어도 세 개의 호스트가 상기 호스트 아답터를 통해 직접 연결되지 않는 호스트 아답터간 링 토폴로지에서, 특정 호스트가 데이터와 상기 정보를 수신함에 따라, 상기 정보에 포함된 상기 데이터를 수신할 호스트의 식별번호를 자신 호스트의 식별번호와 비교하고, 일치하는 경우 상기 메모리 윈도우에서 상기 데이터를 읽어들이고, 일치하지 않는 경우 수신된 데이터를 이웃 호스트로 포워딩하는 것을 특징으로 한다.In a ring topology between host adapters in which the at least three hosts are not directly connected through the host adapter, as a specific host receives data and the information, the identification number of the host that will receive the data included in the information is itself It compares with the identification number of the host, reads the data from the memory window if they match, and forwards the received data to a neighboring host if they do not match.
본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법은 적어도 세 개의 호스트와, 상기 적어도 세 개의 호스트에 각각 연결되고 적어도 두 개의 NTB 포트를 포함하는 적어도 세 개의 호스트 아답터를 포함하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템에서 데이터를 공유하는 방법에 있어서, 송신 호스트가 상기 호스트 아답터들을 통해 데이터를 송신하고, 송신 호스트의 식별번호, 데이터의 목적지 호스트 식별번호를 정보로 송신하는 단계(S100), 상기 송신 호스트에 연결된 호스트가 데이터를 수신하는 단계(S200), 데이터를 수신한 호스트가 상기 정보에 포함된 상기 목적지 호스트 식별번호에 대해, 자신 호스트 식별번호와 일치여부를 판단하는 단계(Q100), 그리고 상기 판단 단계(Q100)의 수행 결과 상기 정보에 포함된 상기 목적지 호스트 식별번호가 자신 호스트 식별번호와 일치함에 따라, 상기 데이터를 수신한 호스트가 메모리 윈도우에 복사된 메모리 영역을 통해 데이터를 확인하는 단계(S310)와, 상기 판단 단계(Q100)의 수행 결과 상기 정보에 포함된 상기 목적지 호스트 식별번호가 자신 호스트 식별번호와 불일치함에 따라, 상기 데이터를 수신한 호스트가 이웃 호스트로 데이터를 포워딩하는 단계(S320) 중 어느 한 단계를 수행하는 단계를 포함하여 이루어지는 것을 특징으로 한다.A method for sharing data between multiple hosts based on PCIE NTB according to an embodiment of the present invention includes at least three hosts and at least three host adapters each connected to the at least three hosts and including at least two NTB ports. In a method for sharing data in a PCIE NTB-based data sharing system between multiple hosts, the step of: a sending host transmits data through the host adapters, and transmits an identification number of a sending host and a destination host identification number of the data as information (S100), the step of receiving data by the host connected to the sending host (S200), the step of the receiving host to determine whether the destination host identification number included in the information matches its own host identification number (Q100), and as a result of performing the determination step (Q100), as the destination host identification number included in the information matches its host identification number, the host that received the data through the memory area copied to the memory window As a result of performing the data verification step (S310) and the determination step (Q100), the destination host identification number included in the information is inconsistent with its own host identification number. It characterized in that it comprises the step of performing any one of the step of forwarding (S320).
이러한 특징에 따르면, 본원 발명의 한 실시예에 따른 PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템 및 방법은 다중 호스트 클러스터가 기존의 인터커넥트 기술에 의존하지 않고 PCIe NTB 기반으로 데이터를 고속으로 공유할 수 있어, 저비용 고성능 슈퍼컴퓨터를 구현할 수 있는 효과가 있다.According to these features, the PCIe NTB-based data sharing system and method between multiple hosts according to an embodiment of the present invention allows multiple host clusters to share data at high speed based on PCIe NTB without relying on the existing interconnect technology. , It has the effect of implementing a low-cost, high-performance supercomputer.
도 1은 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템의 개략적인 구조를 나타낸 블록도이다.
도 2는 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템에서 메모리 윈도우의 구조를 나타낸 블록도이다.
도 3은 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템의 개략적인 구조를 나타낸 블록도이다.
도 4는 본 발명의 한 실시예에 따른 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법의 개략적인 흐름을 나타낸 순서도이다.
도 5는 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법 중 송신 호스트가 데이터를 송신하는 단계를 자세히 나타낸 순서도이다.1 is a block diagram showing a schematic structure of a PCIE NTB-based data sharing system between multiple hosts according to an embodiment of the present invention.
2 is a block diagram showing the structure of a memory window in a data sharing system between multiple hosts based on PCIE NTB according to an embodiment of the present invention.
3 is a block diagram showing a schematic structure of a PCIE NTB-based data sharing system between multiple hosts according to an embodiment of the present invention.
4 is a flowchart illustrating a schematic flow of a method for sharing data between multiple hosts based on PCIE NTB according to an embodiment of the present invention.
5 is a flow chart illustrating in detail a step of a transmitting host transmitting data in a method for sharing data between multiple hosts based on PCIE NTB according to an embodiment of the present invention.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art can easily implement the embodiments of the present invention. However, the present invention may be implemented in various different forms and is not limited to the embodiments described herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and similar reference numerals are assigned to similar parts throughout the specification.
도 1은 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템의 개략적인 구조를 나타낸 블록도이고, 도 2는 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템에서 메모리 윈도우의 구조를 나타낸 블록도이고, 도 3은 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템의 개략적인 구조를 나타낸 블록도이고, 도 4는 본 발명의 한 실시예에 따른 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법의 개략적인 흐름을 나타낸 순서도이고, 도 5는 본 발명의 한 실시예에 따른 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법 중 송신 호스트가 데이터를 송신하는 단계를 자세히 나타낸 순서도이다.1 is a block diagram showing a schematic structure of a PCIE NTB-based multi-host data sharing system according to an embodiment of the present invention, and FIG. 2 is a PCIE NTB-based multi-host data according to an embodiment of the present invention. A block diagram showing the structure of a memory window in a sharing system, and FIG. 3 is a block diagram showing a schematic structure of a PCIE NTB-based data sharing system between multiple hosts according to an embodiment of the present invention, and FIG. A flow chart showing a schematic flow of a method for sharing data between multiple hosts based on PCIE NTB according to an embodiment, and FIG. 5 is a flowchart showing a method for sharing data between multiple hosts based on PCIE NTB according to an embodiment of the present invention. This is a flow chart detailing the steps for transmitting data.
도 1을 참조로 하는 본 실시예에서, PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템(1)은 적어도 세 개의 호스트인 제1 내지 제3 호스트(10, 20, 30)와, 제1 내지 제3 호스트(10, 20, 30)에 각각 연결된 제1 내지 제3 호스트 아답터(100, 200, 300)를 포함한다.In this embodiment with reference to FIG. 1, the PCIe NTB-based multi-host
제1 내지 제3 호스트(10, 20, 30)는 독립된 각각의 컴퓨터로서, 각각의 호스트(10, 20, 30)는 제1 내지 제3 CPU(Central Processing Unit)(11, 21, 31)와 제1 내지 제3 메모리(12, 22, 32)를 포함한다.The first to third hosts 10, 20, and 30 are independent computers, and each of the
제1 내지 제3 CPU(11, 21, 31)는 제1 내지 제3 호스트(10, 20, 30)가 제1 내지 제3 호스트 아답터(100, 200, 300)를 통해 다른 호스트와 데이터를 송수신하도록 처리한다. 한 예에서, 제1 CPU(11)는 제1 호스트(10)가 제1 호스트 아답터(100)를 통해 제2 호스트(20) 및 제3 호스트(30)와 각각 데이터를 송수신하도록 처리하고, 제2 CPU(21)는 제2 호스트(20)가 제2 호스트 아답터(200)를 통해 제1 호스트(10) 및 제3 호스트(30)와 각각 데이터를 송수신하도록 처리하며, 제3 CPU(31)는 제3 호스트(30)가 제3 호스트 아답터(300) 및 제3 NTB(32)를 통해 제1 호스트(10)와 데이터를 송수신하도록 처리하고, 제3 호스트(30)가 제3 호스트 아답터(300) 및 제2 NTB(42)를 통해 제2 호스트(20)와 데이터를 송수신하도록 처리한다.The first to third CPUs (11, 21, 31) transmit and receive data to and from other hosts through the first to third host adapters (100, 200, 300) by the first to third hosts (10, 20, 30) Process to do it. In one example, the
이처럼, 제1 내지 제3 CPU(11, 21, 31)가 제1 내지 제3 호스트 아답터(100, 200, 300)를 통해 호스트간 데이터를 송수신 처리하는 구조를 가지므로, 적어도 세 개 이상의 호스트를 포함하는 다중 호스트 클러스터가 PCIe NTB 기반의 인터커넥트 네트워크로 구현되고, 이에 따라, PCIe NTB 기반의 HPC 시스템을 저비용으로 구현할 수 있는 효과가 있다.As described above, since the first to
제1 내지 제3 호스트(10, 20, 30)의 제1 내지 제3 CPU(11, 21, 31)가 제1 내지 제3 호스트 아답터(100, 200, 300)를 통해 호스트간 데이터 송수신을 처리하는 일 실시예를 자세히 설명하면, 제1 CPU(11)는 제1 호스트 아답터(100)의 제1-1 NTB 포트(101)를 통해 제3 호스트 아답터(300)에 접속하여 제3 호스트(30)와 데이터를 공유하고, 제1 호스트 아답터(100)의 제1-2 NTB 포트(102)를 통해 제2 호스트 아답터(200)에 접속하여 제2 호스트(20)와 데이터를 공유한다.The first to
이때, 제1 내지 제3 호스트 아답터(100, 200, 300)가 도 1에 도시한 것처럼 링 토폴로지 구조를 갖는 일 예에서, 네트워크에 포함된 각 호스트들은 자신 호스트에 연결된 호스트 아답터가 접속하는 다른 호스트 아답터들, 자세하게는, 제1 호스트(10)에 연결된 제1 호스트 아답터(100)가 접속하는 제2 호스트 아답터(200) 또는 제3 호스트 아답터(300)를 통해 자신 호스트 외의 나머지 호스트들과 데이터를 공유하는데, 이때, 하나의 호스트 아답터가 두 개의 서로 다른 호스트 아답터에 연결되는 구조를 가짐에 따라 각 호스트가 네트워크에 형성된 다른 모든 호스트들과 각각 데이터를 공유할 수 있게 된다. At this time, in an example in which the first to
제1 내지 제3 CPU(11, 21, 31)가 호스트간 데이터를 공유하는 일 실시예에서, 제1 내지 제3 CPU(11, 21, 31)는 자신 호스트 외의 다른 호스트에 대한 메모리 어드레스 영역을 생성하고, 생성한 메모리 어드레스 영역을 참조하여 호스트간 데이터를 공유한다. 한 예에서, 제1 내지 제3 CPU(11, 21, 31)는 제1 내지 제3 호스트 아답터(100, 200, 300)를 통해 제1 내지 제3 호스트(10, 20, 30)가 링 토폴로지 구조로 최초 형성될 때 자신 호스트 외의 다른 호스트들에 대해 메모리 어드레스 영역을 생성한다.In an embodiment in which the first to
제1 CPU(11)는 제2 호스트(20)에 대한 메모리 어드레스 영역과 제3 호스트(30)에 대한 메모리 어드레스 영역을 각각 분리된 메모리 어드레스 영역으로 생성하고, 이를 제1 메모리(12)에 저장할 수 있다.The
그리고, 제2 CPU(12)는 제1 호스트(10)에 대한 메모리 어드레스 영역과 제3 호스트(30)에 대한 메모리 어드레스 영역을 각각 분리된 메모리 어드레스 영역으로 생성하여 제2 메모리(12)에 저장하며, 제3 CPU(13)는 1 호스트(10)에 대한 메모리 어드레스 영역과 제2 호스트(20)에 대한 메모리 어드레스 영역을 각각 분리된 메모리 어드레스 영역으로 생성하여 제3 메모리(13)에 저장한다.In addition, the
이때, 제1 내지 제3 CPU(11, 21, 31)는 자신 호스트 외의 다른 호스트에 대한 메모리 어드레스 영역을 각 호스트에 대한 메모리 윈도우로 할당하여 이를 제1 내지 제3 메모리(12, 22, 32)에 저장할 수 있다. 일 예에서, 제1 CPU(11)는 제1 호스트 아답터(100)의 제1-1 NTB 포트(101)에 연결된 제3 호스트(30)에 대한 메모리 윈도우를 생성하여 제1 메모리(12)에 저장하고, 제1 호스트 아답터(100)의 제1-2 NTB 포트(102)에 연결된 제2 호스트(20)에 대한 메모리 윈도우를 생성하여 제1 메모리(12)에 저장한다. At this time, the first to
이와 같이, 호스트에 형성된 CPU가 호스트 아답터의 NTB 포트에 연결된 다른 호스트에 대한 메모리 윈도우를 각각 할당하여 이를 호스트에 형성된 메모리에 저장함에 따라, 제1 CPU(10)는 제1 메모리(12)에 저장된 메모리 윈도우를 참조하여 제1 호스트(10) 및 제2 호스트(20) 사이의 데이터 송수신을 처리하거나 제1 호스트(10) 및 제3 호스트(30) 사이의 데이터 송수신을 처리한다.In this way, as the CPU formed in the host allocates memory windows for other hosts connected to the NTB port of the host adapter and stores them in the memory formed in the host, the
이때, 도 2를 참조로 하는 일 예에서, PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템(1a)은 제1 호스트(10)에 형성되는 메모리 윈도우(120)는 자신 호스트에 연결된 다른 호스트들에 대한 메모리 윈도우를 분리하여 포함하는데, 제2 호스트에 대한 메모리 윈도우(121)와 제3 호스트에 대한 메모리 윈도우(122)를 포함한다. 그리고, 각 호스트에 대한 메모리 윈도우(121, 122)는 데이터 수신을 위한 메모리 윈도우(1211, 1221)와 데이터 송신을 위한 메모리 윈도우(1212, 1222)로 세부 항목을 포함할 수 있다.At this time, in an example with reference to FIG. 2, in the PCIe NTB-based multi-host
서로 다른 호스트와 데이터를 공유하는 메모리 윈도우가 분리되어 형성되고, 그 중에서도 데이터를 수신하는 부분과 데이터를 송신하는 부분을 분리하여 형성하는 구조를 가짐에 따라, 다중 호스트 클러스터에서 PCIe NTB 기반의 인터커넥트 네트워크의 신뢰성이 향상된다.As the memory window that shares data with different hosts is formed separately, and has a structure in which the data receiving part and the data transmitting part are separated and formed, PCIe NTB-based interconnect network in a multi-host cluster The reliability of the product is improved.
그리고, 제1 메모리(12)에 할당된 메모리 윈도우의 주소는 제1 호스트 아답터(100)의 변환 레지스터(Translation Register)를 통해 주소 변환되어 제1 호스트 아답터(100)의 제1-1 NTB 포트(101)에 연결된 제3 호스트(30)의 제3 메모리(32)에 접속되거나, 또는 제1-2 NTB 포트(102)를 통해 연결된 제2 호스트(20)의 제2 메모리(22)에 접속되며, 메모리 윈도우 및 호스트 아답터는 두 호스트간 메모리에 접근할 수 있는 통로가 된다.In addition, the address of the memory window allocated to the
그러나, 도 3을 참조로 하는 다른 일 예에서, 제1 내지 제4 호스트 아답터(100, 200, 300, 400)들은 도 1에 도시한 호스트 아답터들이 링 토폴로지를 갖는 것과 동일하게 링 토폴로지로 형성되지만, 제1 내지 제 호스트 아답터(100, 200, 300, 400)들은 각각 서로 다른 두 개의 호스트 아답터에만 연결되는 구조를 가지므로, 제1 호스트(10)와 제3 호스트(30)는 제1 호스트 아답터(100) 및 제3 호스트 아답터(300)를 통해 직접 연결되지 않는 구조를 갖고, 제2 호스트(20)와 제4 호스트(40) 또한 제2 호스트 아답터(200) 및 제4 호스트 아답터(400)를 통해 직접 연결되지 않는 구조를 갖는다. However, in another example with reference to FIG. 3, the first to
따라서, 도 3과 같이 적어도 네 개의 호스트를 포함하는 구조에서 호스트 아답터를 통해 직접 연결되지 않는 호스트들이 존재하는 경우, 직접 연결되지 않은 호스트간 데이터 공유를 위해 각 호스트에 식별번호(ID)를 부여하고 이를 이용하여 데이터를 공유한다. Therefore, when there are hosts that are not directly connected through host adapters in a structure including at least four hosts as shown in FIG. 3, an identification number (ID) is assigned to each host to share data between hosts that are not directly connected. Use this to share data.
또는, 다른 일 실시예에서, 제1 내지 제4 호스트 아답터(100, 200, 300, 400)가 자신 호스트(10, 20, 30, 40)에 식별번호를 각각 부여하고 이를 호스트의 제1 내지 제4 메모리(12, 22, 32, 42)에 저장할 수 있으며, 링 토폴로지 구조 초기 형성시 제1 내지 제4 호스트(10, 20, 30, 40)에 식별번호를 부여하는 주체를 한정하지는 않아야 할 것이다. Or, in another embodiment, the first to
본 명세서에서는 각 호스트 아답터가 두 개의 NTB 포트를 각각 구비하여 다른 호스트와 연결되는 구조로 구현되는 일 실시예에 대해 설명하지만, 다른 한 예에서, 호스트 아답터 및 이의 NTB 포트는 다른 형태의 토폴로지로 확장 구현될 수 있고, 이 경우, 다중 포트로 연결되는 구조를 확장 구현할 수 있으며, 이를 한정하지는 않는다.In this specification, an embodiment in which each host adapter is implemented in a structure in which each host adapter is connected to another host by having two NTB ports, respectively, is described, but in another example, the host adapter and its NTB port are extended to a different topology. It may be implemented, and in this case, a structure connected by multiple ports may be extended, but is not limited thereto.
일 실시예에서, 제1 호스트(10)와 제3 호스트(30) 사이의 데이터 공유 또는 제2 호스트(20)와 제4 호스트(40) 사이의 데이터 공유를 위해, 제1 호스트(10)의 제1 메모리(12)는 제1 호스트(10)의 식별변호를 저장하고, 제2 호스트(20)의 제2 메모리(22)는 제2 호스트(20)의 식별번호를 저장하고, 제3 호스트(30)의 제3 메모리(32)는 제3 호스트(30)의 식별번호를 저장하며, 제4 호스트(40)의 제4 메모리(42)는 제4 호스트(40)의 식별번호를 저장한다.In one embodiment, for data sharing between the
제1 내지 제4 메모리(12, 22, 32, 42)가 각각 저장하는 제1 내지 제4 호스트(10, 20, 30, 40)의 식별번호는 제1 내지 제4 호스트(10, 20, 30, 40)가 제1 내지 제4 호스트 아답터(100, 200, 300, 400)를 통해 링 토폴로지 구조로 형성될 때 부여될 수 있으며, 제1 내지 제4 호스트(10, 20, 30, 40)에 부여되는 식별번호의 형태를 한정하지는 않는다.The identification numbers of the first to
다중 호스트 클러스터가 링 토폴로지 구조로 형성될 때 제1 내지 제4 호스트(10, 20, 30, 40)가 자신 호스트에 각각 식별번호를 부여하는 일 실시예에서, 제1 내지 제4 호스트(10, 20, 30, 40)의 제1 내지 제4 CPU(11, 21, 31, 41)가 자신 호스트에 각각 식별번호를 부여하고, 이를 제1 내지 제4 메모리(12, 22, 32, 42)에 각각 저장할 수 있다.In an embodiment in which the first to
이때, 제1 내지 제4 CPU(11, 21, 31, 41)는 링 토폴로지를 구성하는 제1 내지 제4 호스트(10, 20, 30, 40)에 대한 식별번호를 각각 매칭하여 링 테이블로 형성하고, 이를 제1 내지 제4 메모리(12, 22, 32, 42)에 저장하며, 호스트간 데이터 공유시 링 테이블을 참조하여 데이터를 송수신 처리할 수 있다. At this time, the first to fourth CPUs (11, 21, 31, 41) form a ring table by matching identification numbers for the first to fourth hosts (10, 20, 30, 40) constituting the ring topology. And, the data is stored in the first to
한 예에서, 제1 CPU(11)는 제1 호스트(10) 외의 나머지 호스트들의 식별번호를 링 테이블로 생성하여 제1 메모리(12)에 저장하고, 제2 CPU(12)는 제2 호스트(20) 외의 나머지 호스트들의 식별번호를 링 테이블로 생성하여 제2 메모리(22)에 저장하며, 제3 CPU(13)는 제3 호스트(30) 외의 나머지 호스트들의 식별번호를 링 테이블로 생성하여 제3 메모리(32)에 저장하고, 제4 CPU(14)는 제4 호스트(40) 외의 나머지 호스트들의 식별번호를 링 테이블로 생성하여 제4 메모리(42)에 저장하여, 제1 내지 제4 CPU(11, 21, 31, 41)가 호스트간 데이터 공유시 제1 내지 제4 메모리(12, 22, 32, 42)에 저장된 링 테이블에서 호스트 식별번호를 참조하여 자신 호스트와 다른 호스트간 데이터 송수신을 처리한다.In one example, the
제1 내지 제4 CPU(11, 21, 31, 41)는 자신 호스트가 다른 호스트로 데이터를 송신하기 위한 식별번호와 자신 호스트가 다른 호스트로부터 데이터를 수신하기 위한 식별번호를 별도로 구비하고, 일 실시예에서, 제1 CPU(11)는 다음의 표 1과 같이 링 테이블을 생성 및 참조할 수 있다. The first to fourth CPUs (11, 21, 31, 41) separately have an identification number for the host to transmit data to another host and an identification number for the host to receive data from another host. In an example, the
표 1과 같이, 제1 CPU(11)가 자신 호스트(10) 외의 다른 호스트들(20, 30, 40)에 대한 식별번호를 링 테이블로 구비하되, 각 호스트에 대한 식별번호를 호스트와의 데이터 송신 및 수신을 위한 식별번호로서 포함함에 따라, 제1 호스트(10)가 제1 호스트(10)와 제1 호스트 아답터(100)를 통해 직접 연결되지 않은 제3 호스트(30)로 데이터를 송신할 때, 링 테이블에 구비된 제3 호스트(30)의 식별번호(31)를 참조하여 제1 호스트(10)와 제3 호스트(30)간 데이터를 공유할 수 있게 된다. 이에 따라, 링 토폴로지 구조로 형성된 다중 호스트 클러스터에서 호스트간 호스트 아답터로 직접 연결되지 않더라도 식별번호를 이용하여 호스트간 데이터를 공유할 수 있는 PCIe NTB 기반의 인터커넥트 네트워크가 구현된다.As shown in Table 1, the
이때, 호스트간 데이터 공유는, 공유할 데이터 영역의 메모리를 복사하는 방법 또는 DMA(direct memory access)를 통해 수행된다.In this case, data sharing between hosts is performed through a method of copying a memory of a data area to be shared or through direct memory access (DMA).
위의 표 1과 도 2 및 도 3을 참조하는 일 실시예에서, 제1 호스트(10)가 호스트 아답터를 통해 직접 연결된 제2 호스트(20)로 데이터를 전송하는 경우, 데이터를 송신하는 소스(source)는 제1 호스트(10)이고 데이터를 수신하는 목적지(destination)는 제2 호스트(20)이므로, 제1 호스트(10)의 제1 CPU(11)는 소스 식별번호(SrcId)를 자신 호스트의 식별번호인 11로 설정하고, 데이터를 수신할 예정인 목적지 식별번호(DestId)를 제2 호스트의 수신 식별번호인 22로 지정한다. In an embodiment referring to Table 1 and FIGS. 2 and 3 above, when the
이때, 제1 호스트(10)와 제2 호스트(20)는 직접 데이터 전송이 가능하도록 연결된 구조를 가지므로, 제1 CPU(11)는 제2 호스트(20)로 송신할 데이터 내용을, 제1 메모리 윈도우(120)의 제2 호스트에 대한 메모리 윈도우(121) 중 데이터 송신을 위한 메모리 윈도우(1212)에 기록한다. 이때, 데이터 송신을 위한 메모리 윈도우(1212)에 기록되는 데이터 내용은 제1 메모리(12)에 저장된 적어도 일부의 데이터로서, 제1 CPU(11)는 해당 데이터가 저장되어 있던 제1 메모리(12)의 데이터 영역의 메모리를 메모리 윈도우(1212)에 복사한다.At this time, since the
또는, 제1 CPU(11)는 제1 호스트(10)에서 제2 호스트(20)로 송신하고자 하는 데이터 내용을 DMA를 통해 제2 호스트(20)로 송신할 수 있는데, 이때, 제1 호스트 아답터(100)를 통해 제2 호스트(20)에 직접 접속하여 송신하고자 하는 데이터를 공유한다.Alternatively, the
이처럼, 제1 호스트 아답터(100)를 통해 연결된 제1 호스트(10) 및 제2 호스트(20)간 공유 메모리인 제1 메모리 윈도우(120)를 통해 데이터를 공유하거나 또는 DMA를 통해 데이터를 공유하고, 소스 식별번호(SrcId), 목적지 식별번호(DestId), 메모리 주소, 전송 데이터 크기와 같은 정보들은 제1 호스트(10) 및 제2 호스트(20) 사이에 연결된 스크래치패드 레지스터(ScratchPad Register)를 통해 제1 호스트(10)에서 제2 호스트(20)로 전송된다. In this way, data is shared through the
한 예에서, 제1 및 제2 호스트(10, 20) 사이를 연결하는 스크래치패드 레지스터는 도면에 도시하지는 않았으나, 링 토폴로지 구조로 형성되는 다중 호스트 클러스터에서 서로 다른 두 호스트 사이에 형성된다.In one example, the scratchpad register connecting the first and
제1 CPU(11)가 DMA를 통해 데이터를 제2 호스트(20)로 송신하는 일 예에서, 제1 CPU(11)는 DMA를 통해 데이터를 전송 완료 후, 도어벨 레지스터(Doorbell Register)를 통해 제2 호스트(20)에게 DMA 데이터 전송을 알리는 인터럽트를 발생시켜, 상대 호스트에게 데이터 전송하였음을 알린다.In an example in which the
이때, 인터럽트를 수신한 호스트는 목적지 식별번호가 자신 호스트인지를 확인하여, 해당 인터럽트와 관련된 데이터 수신자가 자신 호스트인 경우, DMA를 통해 수신한 메모리 주소로부터 자신에게 직접 전송된 데이터를 확인할 수 있다.At this time, the host receiving the interrupt can check whether the destination identification number is its own host, and if the data receiver related to the interrupt is its own host, the data directly transmitted to itself from the memory address received through the DMA can be checked.
그러나 이때, 인터럽트와 관련된 데이터 수신자가 자신 호스트가 아닌 경우, 즉, 목적지 식별번호(DestId)가 자신 호스트의 식별번호와 다른 경우, 전송받은 데이터를 다른 호스트로 포워딩하여, 해당 데이터의 목적지 식별번호와 동일한 호스트가 데이터를 수신할 때까지 데이터를 포워딩한다.However, at this time, if the data receiver related to the interrupt is not the host, that is, if the destination identification number (DestId) is different from the identification number of the host, the transmitted data is forwarded to another host, and the destination identification number of the data Data is forwarded until the same host receives it.
이처럼, 다중 호스트 클러스터가 PCIe NTB 기반의 호스트 아답터를 통해 데이터를 공유하는 구조를 가짐에 따라 고속의 데이터 공유가 가능해지고, 링 토폴로지 구조를 통해 PCIe NTB 기반의 네트워크 구조에서 세 개 이상의 다중 호스트 구조를 구현함으로써, 기술 의존적인 종래의 인터커넥트 기술과 대비되는 고성능 수퍼컴퓨터를 저비용으로 제공할 수 있는 효과가 있다.As such, as multiple host clusters share data through PCIe NTB-based host adapters, high-speed data sharing becomes possible, and three or more multi-host structures in PCIe NTB-based network structure through ring topology structure. By implementing, there is an effect of providing a high-performance supercomputer at low cost compared to the conventional interconnect technology dependent on technology.
다음으로, 도 1 내지 도 3의 구조를 갖는 PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템에서의 데이터 공유방법을 도 4 및 도 5를 참조하여 설명하면, 송신 호스트가 데이터를 송신하는 단계(S100), 송신 호스트와 호스트 아답터로 연결된 호스트가 데이터를 수신하는 단계(S200), 데이터를 수신한 호스트가 목적지 식별번호의 일치여부를 판단하는 단계(Q100)에 따라 수행되는 메모리 윈도우에 복사된 메모리 영역을 통해 데이터를 확인하는 단계(S310) 또는 이웃 호스트로 데이터를 포워딩하는 단계(S320)를 포함하여 이루어진다.Next, the data sharing method in the PCIe NTB-based multi-host data sharing system having the structure of FIGS. 1 to 3 will be described with reference to FIGS. 4 and 5, the step of transmitting data by the transmitting host (S100) , The memory area copied to the memory window performed according to the step of receiving data by the sending host and the host connected by the host adapter (S200), and the step of determining whether the destination identification number is matched by the host receiving the data (Q100) Checking data through (S310) or forwarding data to a neighboring host (S320).
먼저, 송신 호스트가 데이터를 송신하는 단계(S100)는 특정 호스트가 데이터를 송신하는 단계로서, 도 5를 참조하여 자세히 설명하면, 송신 호스트 식별번호, 수신 호스트 식별번호를 소스 식별번호(SrcId)와 목적지 식별번호(DestId)로 설정하는 단계(S110), 송신 호스트의 메모리 윈도우에 송신할 데이터의 메모리 영역을 복사하는 단계(S120), 소스 식별번호, 목적지 식별번호, 메모리 주소, 전송 데이터 크기의 정보를 스크래치패드 레지스터를 통해 전송하는 단계(S130), 그리고 송신 호스트가 데이터 송신을 알리는 인터럽트를 발생하는 단계(S140)를 포함하여 이루어진다.First, the step of transmitting data by a sending host (S100) is a step in which a specific host transmits data, and will be described in detail with reference to FIG. 5, the source identification number and the receiving host identification number Setting the destination identification number (DestId) (S110), copying the memory area of the data to be transmitted to the memory window of the sending host (S120), information on the source identification number, destination identification number, memory address, and transmission data size Transmitting the data through the scratch pad register (S130), and generating an interrupt informing the transmission host of data transmission (S140).
이때, 송신 호스트 식별번호, 수신 호스트 식별번호를 소스 식별번호(SrcId)와 목적지 식별번호(DestId)로 설정하는 단계(S110)는 데이터를 송신하는 송신 호스트가 데이터 송신호스트 및 데이터 수신호스트의 식별번호를 다중 호스트 클러스터 생성시 정의된 표 1의 식별번호 링 테이블을 참조하여 설정하는 단계이다.At this time, the step of setting the sending host identification number and the receiving host identification number as a source identification number (SrcId) and a destination identification number (DestId) (S110) is the identification number of the data transmission host and the data receiving host by the transmission host This is the step of setting by referring to the identification number ring table in Table 1 defined when creating a multi-host cluster.
다음 단계(S120)에서는, 송신 호스트가 송신하고자 하는 데이터의 메모리 영역을 송신 호스트의 메모리 윈도우에 복사하는 단계로서, 송신 호스트의 메모리 윈도우에 데이터 영역을 복사함에 따라, 해당 데이터가 공유되게 된다.In the next step (S120), the transmitting host copies the memory area of the data to be transmitted to the memory window of the transmitting host. As the data area is copied to the memory window of the transmitting host, the corresponding data is shared.
그리고, 소스 식별번호, 목적지 식별번호, 메모리 주소, 전송 데이터 크기의 정보를 스크래치패드 레지스터를 통해 전송하는 단계(S130)에서는, 송신 호스트의 메모리 윈도우를 통해 메모리 영역으로서 전달되는 데이터에 대한 정보들을 스크래치패드 레지스터를 통해 전송하는 단계이고, 마지막으로, 송신 호스트가 데이터 송신을 알리는 인터럽트를 발생하는 단계(S140)는 송신 호스트의 도어벨 레지스터를 통해 데이터 송신을 알리는 인터럽트를 호스트 아답터를 통해 연결된 호스트로 발생한다.And, in the step (S130) of transmitting information on the source identification number, destination identification number, memory address, and transmission data size through the scratch pad register, the information on the data transmitted as the memory area through the memory window of the sending host is scratched. In the step of transmitting through the pad register, and finally, in the step of generating an interrupt notifying data transmission by the sending host (S140), an interrupt notifying data transmission through the doorbell register of the sending host is generated to the connected host through the host adapter. do.
이 단계들(S110, S120, S130, S140)을 통해 송신 호스트가 데이터를 송신(S100)하면, 송신 호스트와 호스트 아답터로 연결된 호스트가 데이터를 수신하는 단계(S200)가 수행되는데, 이때, 송신 호스트에서 발생한 인터럽트(S140)에 의해 데이터가 수신되었음을 알게 되고, 송신 호스트가 스크래치패드 레지스터를 통해 전송(S130)한 소스 식별번호, 목적지 식별번호를 수신하게 된다.When the sending host transmits data (S100) through these steps (S110, S120, S130, S140), the sending host and the host connected by the host adapter receive the data (S200). At this time, the sending host It is recognized that data has been received by the interrupt generated in S140, and the sending host receives the source identification number and the destination identification number transmitted (S130) through the scratchpad register.
그런 다음, 송신 호스트와 호스트 아답터로 연결된 호스트는 송신 호스트가 데이터를 송신하고자 했던 목적지가 자신인지를 확인하는 단계(Q100)를 수행한다.Then, the sending host and the host connected by the host adapter perform a step (Q100) of checking whether the destination to which the sending host intends to transmit data is itself.
이때, 송신 호스트가 송신한 데이터를 수신하는 호스트는 송신 호스트와 호스트 아답터로 연결된 이웃 호스트로서, 송신 호스트가 데이터를 송신하고자 했던 목적지가 맞을수도 또는 아닐수도 있기 때문에, 데이터를 수신한 호스트는 자신 호스트를 목적지 식별번호(DestId)와 비교한다(Q100). 데이터를 수신한 호스트는 스크래치패드 레지스터를 통해 수신한 목적지 식별번호를 자신 호스트와 비교한다.At this time, the host receiving the data transmitted by the sending host is a neighboring host connected to the sending host by the host adapter, and the destination to which the sending host intended to send data may or may not be. Is compared with the destination identification number (DestId) (Q100). The host receiving the data compares the destination identification number received through the scratchpad register with its host.
위 판단단계(Q100)에서, 데이터를 수신한 호스트가 목적지 식별번호와 동일한 경우, 예 화살표 방향을 따라, 메모리 윈도우에 복사된 메모리 영역을 통해 데이터를 확인하는 단계(S310)를 수행하는데, 데이터를 수신한 호스트(데이터 수신 호스트)는 데이터를 송신한 호스트(데이터 송신 호스트)가 데이터를 공유하고자 했던 최종 목적지이므로, 데이터 수신 호스트는 메모리 윈도우에 복사된 메모리 영역에 접속하여 데이터를 확인한다. 데이터 송신 호스트가 데이터 영역을 복사한 메모리 윈도우는 데이터 수신 호스트와 공유된 주소이므로, 데이터 수신 호스트는 데이터 송신 호스트와 공유된 메모리 윈도우에 접속하여 데이터를 확인할 수 있게 된다.In the above determination step (Q100), if the host that received the data is the same as the destination identification number, Yes, in the direction of the arrow, a step (S310) of checking data through the memory area copied to the memory window is performed. The receiving host (data receiving host) is the final destination to which the host (data transmitting host) that transmitted data attempted to share data, so the data receiving host accesses the memory area copied to the memory window to check the data. Since the memory window to which the data transmission host copied the data area is an address shared with the data reception host, the data reception host can access the memory window shared with the data transmission host to check data.
한편, 위 판단단계(Q100)에서, 데이터를 수신한 호스트가 목적지 식별번호와 동일하지 않은 경우, 아니오 화살표 방향을 따라, 이웃 호스트로 데이터를 포워딩하는 단계(S320)를 수행하는데, 이때, 데이터 수신 호스트는 메모리 윈도우에 복사된 데이터 영역과, 스크래치패드 레지스터를 통해 전달받은 정보들을 이웃 호스트로 포워딩한다. 이 단계(S320)는 데이터 수신 호스트의 식별번호가 데이터 송신 호스트의 목적지 식별번호와 동일하여, 위 단계(S310)를 수행하게 될 때까지 반복하여 수행된다. On the other hand, in the above determination step (Q100), if the host receiving the data is not the same as the destination identification number, a step (S320) of forwarding the data to a neighboring host is performed in the direction of the arrow No. In this case, data reception The host forwards the data area copied to the memory window and the information received through the scratchpad register to the neighboring host. This step (S320) is repeatedly performed until the above step (S310) is performed because the identification number of the data receiving host is the same as the destination identification number of the data transmitting host.
즉, 데이터 수신 호스트가 데이터 송신 호스트가 데이터를 공유하고자 하는 목적지가 아닌 경우, 데이터를 전달받은 데이터 수신 호스트는 해당 공유 데이터가 데이터 송신 호스트의 원래 목적지에 도달할 때까지 공유 데이터를 포워딩한다.That is, if the data receiving host is not a destination to which the data transmitting host intends to share data, the data receiving host, which has received the data, forwards the shared data until the corresponding shared data reaches the original destination of the data transmitting host.
도 4 내지 도 5의 순서도를 참고로 하여 설명한 것처럼, 링 토폴로지 구조를 갖는 다중 호스트 클러스터에서 PCIe NTB 기반으로 데이터를 공유할 수 있게 되므로, 종래기술과는 독립적인 인터커넥트 기술로 고성능 수퍼컴퓨터에서 호스트간 데이터를 고속 공유하는 효과를 기대할 수 있다.As described with reference to the flow charts of FIGS. 4 to 5, since data can be shared based on PCIe NTB in a multi-host cluster having a ring topology structure, a high-performance supercomputer is an interconnect technology independent of the prior art. You can expect the effect of sharing data at high speed.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements by those skilled in the art using the basic concept of the present invention defined in the following claims are also provided. It belongs to the scope of rights.
1, 1a : PCIe NTB 기반의 다중 호스트간 데이터 공유 시스템
10 : 제1 호스트
11 : 제1 CPU
12 : 제1 메모리
100 : 제1 호스트 아답터
101 : 제1-1 NTB 포트
102 : 제1-2 NTB 포트
120 : 제1 메모리 윈도우
121 : 제2 호스트에 대한 메모리 윈도우
122 : 제3 호스트에 대한 메모리 윈도우
1211 : 데이터 수신을 위한 메모리 윈도우
1212 : 데이터 송신을 위한 메모리 윈도우1, 1a: PCIe NTB-based data sharing system between multiple hosts
10: first host 11: first CPU
12: first memory 100: first host adapter
101: 1-1 NTB port 102: 1-2 NTB port
120: first memory window 121: memory window for the second host
122: memory window for the third host
1211: Memory window for data reception
1212: Memory window for data transmission
Claims (11)
상기 적어도 세 개의 호스트에 각각 연결되고, 적어도 두 개의 NTB 포트를각각 구비하여, 상기 적어도 두 개의 NTB 포트 중 어느 하나는 상기 이웃 호스트에 연결된 호스트 아답터의 NTB 포트에 연결되고, 나머지 하나는 또다른 상기 이웃 호스트에 연결된 호스트 아답터의 NTB 포트에 각각 연결되어, 서로 다른 두 개의 이웃 호스트에 NTB 포트를 통해 링 토폴로지 구조로 연결되는 PCIe NTB 기반의 적어도 세 개의 호스트 아답터
를 포함하여,
상기 두 호스트에 형성된 호스트 아답터들의 NTB 포트들을 통해 상기 메모리 윈도우가 공유되어 상기 두 호스트간 데이터 송수신이 이루어지는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
An independent computer that transmits or receives data, comprising at least three hosts each including a CPU that processes data transmission or reception, and a memory that stores data or allocates a memory window that is a separate address area; and
Each connected to the at least three hosts, each having at least two NTB ports, one of the at least two NTB ports is connected to an NTB port of a host adapter connected to the neighboring host, and the other is another of the At least three PCIe NTB-based host adapters, each connected to the NTB port of the host adapter connected to the neighboring host, and connected to two different neighboring hosts in a ring topology structure through the NTB port
Including,
PCIE NTB-based multi-host data sharing system, characterized in that the memory window is shared through NTB ports of host adapters formed in the two hosts to transmit and receive data between the two hosts.
상기 메모리 윈도우는, 상기 메모리 윈도우가 형성된 호스트의 호스트 아답터를 통해 연결되는 서로 다른 두 개의 이웃 호스트에 대해 각각 형성되어,
상기 서로 다른 두 개의 이웃 호스트에 대해 각각 형성된 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 1,
The memory windows are respectively formed for two different neighboring hosts connected through a host adapter of a host on which the memory window is formed,
PCIE NTB-based data sharing system between multiple hosts, characterized in that data is shared between two hosts through memory windows respectively formed for the two different neighboring hosts.
상기 메모리 윈도우는, 데이터 수신을 위한 메모리 윈도우와 데이터 송신을 위한 메모리 윈도우를 각각 포함하고,
호스트의 데이터 송신 또는 수신에 따라 상기 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 1,
The memory windows each include a memory window for receiving data and a memory window for transmitting data,
PCIE NTB-based data sharing system between multiple hosts, characterized in that data is shared between two hosts through the memory window according to data transmission or reception by a host.
상기 서로 다른 두 개의 이웃 호스트에 대해 각각 형성된 메모리 윈도우는 데이터 수신을 위한 메모리 윈도우와 데이터 송신을 위한 메모리 윈도우를 각각 포함하고,
호스트의 데이터 송신 또는 수신에 따라 상기 메모리 윈도우를 통해 두 호스트간 데이터를 공유하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 2,
The memory windows respectively formed for the two different neighboring hosts each include a memory window for receiving data and a memory window for transmitting data,
PCIE NTB-based data sharing system between multiple hosts, characterized in that data is shared between two hosts through the memory window according to data transmission or reception by a host.
상기 두 호스트간 데이터 송수신은 DMA를 통해 이루어지는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 1,
PCIE NTB-based data sharing system between multiple hosts, characterized in that the data transmission and reception between the two hosts is performed through DMA.
데이터를 송신하는 호스트는 DMA를 통해 데이터를 송신한 이후 도어벨 레지스터를 통해 DMA 데이터 전송을 알리는 인터럽트를 발생하고, 데이터를 수신하는 호스트는 상기 인터럽트를 통해 수신된 데이터를 확인하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 5,
PCIE, characterized in that the host transmitting data generates an interrupt notifying the DMA data transmission through the doorbell register after transmitting the data through the DMA, and the host receiving the data checks the data received through the interrupt. NTB-based data sharing system between multiple hosts.
상기 CPU는 상기 적어도 세 개의 호스트들의 식별번호를 링 테이블로 형성하고, 상기 호스트가 데이터를 다른 호스트로 송신함에 있어서, 상기 링 테이블을 참조하여 데이터를 송신하는 호스트의 식별번호와 데이터를 수신할 호스트의 식별번호를 정보로서 송신하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 1,
The CPU forms the identification numbers of the at least three hosts as a ring table, and when the host transmits data to another host, the identification number of the host transmitting data and the host to receive the data refer to the ring table. PCIE NTB-based data sharing system between multiple hosts, characterized in that transmitting the identification number as information.
상기 정보는 공유할 데이터의 메모리 주소, 전송 데이터 크기를 더 포함하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 7,
The information further includes a memory address of data to be shared and a size of transmission data. PCIE NTB-based data sharing system between multiple hosts, characterized in that.
데이터를 송신하는 호스트 및 데이터를 수신하는 호스트 사이를 연결하는 스크래치패드 레지스터를 더 포함하고,
상기 데이터를 송신하는 호스트는 상기 정보를 상기 스크래치패드 레지스터를 통해 상기 데이터를 수신하는 호스트로 송신하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 7,
Further comprising a scratch pad register connecting between the host transmitting the data and the host receiving the data,
The host transmitting the data transmits the information to the host receiving the data through the scratchpad register.
상기 적어도 세 개의 호스트가 상기 호스트 아답터를 통해 직접 연결되지 않는 호스트 아답터간 링 토폴로지에서,
특정 호스트가 데이터와 상기 정보를 수신함에 따라, 상기 정보에 포함된 상기 데이터를 수신할 호스트의 식별번호를 자신 호스트의 식별번호와 비교하고, 일치하는 경우 상기 메모리 윈도우에서 상기 데이터를 읽어들이고, 일치하지 않는 경우 수신된 데이터를 이웃 호스트로 포워딩하는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 시스템.
The method of claim 7,
In a ring topology between host adapters in which the at least three hosts are not directly connected through the host adapter,
As a specific host receives the data and the information, the identification number of the host that will receive the data included in the information is compared with the identification number of its own host, and if it matches, the data is read from the memory window and matched. If not, a PCIE NTB-based data sharing system between multiple hosts, characterized in that the received data is forwarded to a neighboring host.
송신 호스트가 상기 호스트 아답터들을 통해 데이터를 송신하고, 송신 호스트의 식별번호, 데이터의 목적지 호스트 식별번호를 정보로 송신하는 단계(S100),
상기 송신 호스트에 연결된 호스트가 데이터를 수신하는 단계(S200),
데이터를 수신한 호스트가 상기 정보에 포함된 상기 목적지 호스트 식별번호에 대해, 자신 호스트 식별번호와 일치여부를 판단하는 단계(Q100), 그리고
상기 판단 단계(Q100)의 수행 결과 상기 정보에 포함된 상기 목적지 호스트 식별번호가 자신 호스트 식별번호와 일치함에 따라, 상기 데이터를 수신한 호스트가 메모리 윈도우에 복사된 메모리 영역을 통해 데이터를 확인하는 단계(S310)와, 상기 판단 단계(Q100)의 수행 결과 상기 정보에 포함된 상기 목적지 호스트 식별번호가 자신 호스트 식별번호와 불일치함에 따라, 상기 데이터를 수신한 호스트가 이웃 호스트로 데이터를 포워딩하는 단계(S320) 중 어느 한 단계를 수행하는 단계
를 포함하여 이루어지는 것을 특징으로 하는 PCIE NTB 기반의 다중 호스트간 데이터 공유 방법.
In a method for sharing data in a data sharing system between multiple hosts based on PCIE NTB comprising at least three hosts and at least three host adapters each connected to the at least three hosts and including at least two NTB ports,
A step in which the sending host transmits data through the host adapters, and transmits the identification number of the sending host and the destination host identification number of the data as information (S100),
Receiving data by a host connected to the sending host (S200),
A step (Q100) of determining, by the host receiving the data, whether the destination host identification number included in the information matches its host identification number, and
As a result of performing the determination step (Q100), when the destination host identification number included in the information matches its host identification number, the host receiving the data checks the data through the memory area copied to the memory window (S310) and, as a result of performing the determination step (Q100), as the destination host identification number included in the information is inconsistent with its own host identification number, the host receiving the data forwards the data to the neighboring host ( Step of performing any one of S320)
PCIE NTB-based data sharing method between multiple hosts, comprising a.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190032865A KR20200112422A (en) | 2019-03-22 | 2019-03-22 | Pcie ntb based data share system between multi host and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190032865A KR20200112422A (en) | 2019-03-22 | 2019-03-22 | Pcie ntb based data share system between multi host and method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200112422A true KR20200112422A (en) | 2020-10-05 |
Family
ID=72809406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190032865A KR20200112422A (en) | 2019-03-22 | 2019-03-22 | Pcie ntb based data share system between multi host and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200112422A (en) |
-
2019
- 2019-03-22 KR KR1020190032865A patent/KR20200112422A/en not_active Application Discontinuation
Non-Patent Citations (1)
Title |
---|
미국 공개특허공보 US2014/0075079(DATA STORAGE DEVICE CONNECTED TO A HOST SYSTEM VIA A PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIE) INTERFACE) |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672143B2 (en) | Remote memory ring buffers in a cluster of data processing nodes | |
US10042804B2 (en) | Multiple protocol engine transaction processing | |
US8412875B2 (en) | Switch and network bridge apparatus | |
US7028106B2 (en) | Remapping routing information entries in an expander | |
US9996491B2 (en) | Network interface controller with direct connection to host memory | |
US6804673B2 (en) | Access assurance for remote memory access over network | |
JP4447892B2 (en) | Data communication system and method incorporating multi-core communication module | |
US9996498B2 (en) | Network memory | |
US10162780B2 (en) | PCI express switch and computer system using the same | |
JP6880402B2 (en) | Memory access control device and its control method | |
US8327055B2 (en) | Translating a requester identifier to a chip identifier | |
US6327637B1 (en) | Interface tap for 1394-enabled serial bus device | |
US20020091865A1 (en) | Electro-optically connected multiprocessor configuration | |
US7131020B2 (en) | Distributed copies of configuration information using token ring | |
US10169279B2 (en) | Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction | |
US7353158B2 (en) | Inter integrated circuit extension via shadow memory | |
TWI791134B (en) | Communication device, information processing system and communication method | |
KR20200112422A (en) | Pcie ntb based data share system between multi host and method thereof | |
US6842817B2 (en) | Method for generating configuration tables and for forwarding packets through a network | |
JP7054807B2 (en) | Data transfer systems, adapters, and system hosts | |
JP2013196593A (en) | Data processing apparatus, data processing method and program | |
US8055813B2 (en) | Flexible and efficient configuration of multiple common interfaces | |
KR20020049331A (en) | Matching Apparatus between Peripheral Processor and Device Controller | |
JPS62154056A (en) | Interface for data communication | |
JPH08166932A (en) | Multiprocessor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E601 | Decision to refuse application |