KR20180063292A - 데이터 전송 방법, 장치 및 시스템 - Google Patents

데이터 전송 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20180063292A
KR20180063292A KR1020187012924A KR20187012924A KR20180063292A KR 20180063292 A KR20180063292 A KR 20180063292A KR 1020187012924 A KR1020187012924 A KR 1020187012924A KR 20187012924 A KR20187012924 A KR 20187012924A KR 20180063292 A KR20180063292 A KR 20180063292A
Authority
KR
South Korea
Prior art keywords
dma
virtual address
host
address
memory address
Prior art date
Application number
KR1020187012924A
Other languages
English (en)
Other versions
KR102209452B1 (ko
Inventor
이징 왕
셰 먀오
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20180063292A publication Critical patent/KR20180063292A/ko
Application granted granted Critical
Publication of KR102209452B1 publication Critical patent/KR102209452B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/282Cycle stealing DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2804Systems and methods for controlling the DMA frequency on an access bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 I/O 장치와 복수의 호스트 장치 간의 DMA 데이터 전송을 수행하는 방법 및 장치 그리고 데이터 전송 시스템을 제공한다. 복수의 호스트의 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되며, 상기 I/O 장치에 의해 송신되고 DMA 가상 어드레스를 운반하는 DMA 패킷이 획득되고, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트가 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라 결정되며, 상기 DMA 패킷 내의 DMA 가상 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정되며; 그리고 상기 수정된 DMA 패킷은 타깃 호스트로 송신된다. 본 발명의 기술적 솔루션이 적용되면, I/O 장치와 복수의 호스트 간의 DMA 데이터 전송이 구현될 수 있으며, I/O 장치의 활용도가 향상되며, 네트워크 전송의 애플리케이션 시나리오가 확장된다.

Description

데이터 전송 방법, 장치 및 시스템
본 발명은 데이터 전송 분야에 관한 것이며, 특히 I/O 장치와 적어도 하나의 호스트 장치 간의 DMA 데이터 전송을 수행하는 방법 및 장치 그리고 데이터 전송 시스템에 관한 것이다.
분산 환경에서, I/O 장치의 확장성 및 활용도를 높이기 위해, 일반적으로 복수의 호스트가 I/O 장치 자원을 공유하는 시나리오가 있다. 복수의 호스트가 I/O 자원을 공유할 때 I/O 자원의 전반적인 사용 효율성이 향상될 수 있으며 호스트는 요구 사항에 따라 자원을 동적으로 신청하고 해제할 수 있다. 또한 호스트는 공유 I/O 자원을 사용하여 데이터를 서로 전송하여 서로 다른 호스트의 데이터 정보와 상태를 동기화할 수 있다.
데이터 전송 동안, I/O 장치는 일반적으로 I/O 장치 상에서 데이터를 전송하기 위해 직접 메모리 액세스(Direct Memory Access, DMA로 약칭) 기술을 사용하여 CPU와 독립적인 백그라운드 배치 데이터 전송을 구현한다. DMA 작동에서, 호스트는 DMA 작동을 위한 DMA 메모리 어드레스 공간을 할당하고, I/O 장치는 DMA 메모리 어드레스 공간에서 데이터 판독/기록을 직접 수행하여 DMA 방식으로 데이터 전송을 완료한다. DMA 작동은 DMA 패킷을 사용하여 구현된다. I/O 장치는 DMA 패킷을 호스트로 전송한다. DMA 패킷은 DMA 어드레스를 포함하고, DMA 어드레스는 DMA 작동을 위해 호스트에 의해 할당되는 DMA 메모리 어드레스 공간에 있다. DMA 패킷 내의 DMA 어드레스에 따라, I/O 장치는 호스트의 DMA 메모리 어드레스 공간에서 직접 데이터를 판독하거나 데이터를 기록할 수 있다. 구체적으로, 예를 들어, 호스트가 I/O 장치에 대해 기록 동작을 수행하는 경우, DMA 패킷은 메모리에 대한 판독 패킷이고, 판독된 패킷에 응답하여 하나 이상의 명령 완료 패킷에 데이터가 운반되고, 메모리에서 I/O 장치로 복사된다. 호스트가 I/O 장치에 대해 판독 동작을 수행할 때, 복사될 필요가 있는 데이터의 크기에 따라, I/O 장치에 의해 생성된 DMA 패킷은 복사될 필요가 있는 데이터를 운반하는 하나 이상의 기록 패킷이다. 기록 패킷은 타깃 호스트의 DMA 메모리 어드레스 공간에 도달하고 패킷의 데이터 로드는 해당 메모리 공간으로 복사된다. DMA 작동에서, 데이터 전송 프로세스는 호스트의 CPU를 포함할 필요가 없기 때문에, I/O 장치에 의한 호스트 데이터의 고속 독립 판독/기록이 구현된다.
복수의 호스트가 동일한 I/O 장치를 공유하는 경우 각각의 호스트는 독립적인 DMA 메모리 어드레스 공간을 가지며 I/O 장치의 경우 여러 DMA 메모리 어드레스 공간 사이에서 충돌이 있을 수 있다. 결과적으로, DMA 작동은 수행될 수 없다. 복수의 호스트에 의해 I/O 자원을 공유하는 기존의 기술은 고속 접속에서 복수의 호스트에 의해 동일한 I/O 장치에 액세스하는 문제를 효과적으로 해결할 수 없다. 예를 들어, 기존 기술에서, 호스트가 고속으로 외부 확장 I/O 자원에 액세스할 수 있지만 호스트가 I/O 장치를 사용할 때 I/O 장치는 여전히 독점적인 상태에 있으며, 즉 하나의 I/O 장치는 한 번에 하나의 호스트에 의해서만 액세스될 수 있다. 다른 예를 들면, 다른 기존의 기술에서 IP 기술을 사용하여 복수의 호스트가 동일한 네트워크 I/O 장치를 공유할 수 있지만 IP 네트워크는 네트워크 프로토콜 계층에서의 처리로 인한 추가의 성능 오버헤드 손실을 초래하며, 또한, IP 네트워크는 네트워크 대역폭에 의해 제한되고 비교적 큰 지연을 가지며, 따라서 단거리 고성능 I/O 데이터 전송 애플리케이션에 부적합하다.
이를 감안해서, 본 발명은 I/O 장치와 적어도 하나의 호스트 장치 간의 DMA 데이터 전송을 수행하는 방법 및 장치 그리고 데이터 전송 시스템을 제공하여, 복수의 호스트가 DMA 데이터 전송 방식으로 동일한 I/O 장치를 공유할 수 있게 하며, 이에 의해 복수의 호스트와 공유 I/O 장치 간의 효과적인 데이터 전송 및 동기화를 구현한다.
제1 관점에 따라, 본 발명의 실시예는 컴퓨터 시스템을 제공하며, 상기 컴퓨터 시스템은 복수의 호스트, 하나 이상의 입출력(I/O) 장치, 및 상기 복수의 호스트와 상기 하나 이상의 I/O 장치에 개별적으로 연결된 데이터 전송 장치를 포함한다. 상기 데이터 전송 장치는 상기 복수의 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑하고, 상기 I/O 장치에 의해 전송되고 DMA 가상 어드레스를 운반하는 DMA 패킷을 획득하고, 상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하며, 그리고 상기 수정된 DMA 패킷을 타깃 호스트로 전송한다. 컴퓨터 시스템을 사용함으로써, I/O 장치는 DMA 가상 어드레스를 운반하는 DMA 패킷을 사용하여 복수의 호스트 상에서 DMA 가상 어드레스를 수행할 수 있고, 종래기술과 비교해서, DMA 메모리 어드레스 간에 충돌이 일어나지 않으며, 따라서 복수의 호스트가 동일한 I/O 장치를 공유할 수 있다는 것을 알 수 있다.
가능한 설계에서, 복수의 호스트의 DMA 메모리 어드레스는 하나 이상의 DMA 메모리 어드레스 구간을 형성하고, 글로벌 가상 어드레스 공간에는, 복수의 호스트의 메모리 어드레스 구간에 일대일 방식으로 대응하는 가상 어드레스 구간이 존재한다. DMA 가상 어드레스를 운반하는 DMA 패킷이 획득된 후, DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라 대응하는 메모리 어드레스 구간을 찾아내어 DMA 가상 어드레스 및 DMA 가상 어드레스가 속하는 호스트를 결정한다. 가상 어드레스, 메모리 어드레스 및 호스트 간의 대응관계가 메모리 어드레스 구간 및 가상 어드레스 구간을 사용하여 구현되어, 대응관계의 복잡도가 감소한다.
가능한 설계에서, 호스트는 타깃 호스트의 DMA 메모리 어드레스에 DMA 작동 시작 요청을 송신하여 타깃 호스트에 DMA 작동을 개시하도록 I/O 장치에 명령함으로써 데이터 전송을 수행한다.
가능한 설계에서, 시스템 내의 하나의 호스트는 다른 호스트의 DMA 메모리 어드레스를 획득하여, 상기 다른 호스트의 DMA 메모리 어드레스를 DMA 어드레스로서 사용하는 DMA 작동 시작 요청을 I/O 장치에 송신할 수 있으며, 이에 따라 상기 호스트는 상기 시스템을 사용하여 상기 다른 호스트와의 데이터 전송을 수행하도록 I/O 장치에 명령할 수 있다.
가능한 설계에서, 시스템 내의 하나의 호스트는 다른 호스트의 DMA 메모리 어드레스를 획득하고, 대응관계에 따라 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하여, 상기 다른 호스트의 DMA 가상 어드레스를 DMA 어드레스로서 사용하는 DMA 작동 시작 요청을 I/O 장치에 송신할 수 있으며, 이에 따라 상기 호스트는 상기 시스템을 사용하여 상기 다른 호스트와의 데이터 전송을 수행하도록 I/O 장치에 명령할 수 있다.
가능한 설계에서, 시스템 내의 하나의 호스트는 다른 호스트의 DMA 메모리 어드레스를 획득하여, 상기 다른 호스트의 DMA 메모리 어드레스를 DMA 어드레스로서 사용하는 DMA 작동 시작 요청을 데이터 전송 장치에 송신할 수 있으며, 데이터 전송 장치는 DMA 작동 시작 요청 내의 DMA 메모리 어드레스를 대응하는 DMA 메모리 어드레스로 변환하며, 다른 호스트에 DMA 작동 시작 요청을 포워딩하며, 이에 따라 상기 호스트는 상기 시스템을 사용하여 상기 다른 호스트와의 데이터 전송을 수행하도록 I/O 장치에 명령할 수 있다. 그러므로 I/O 장치는 상기 시스템을 사용하여 다른 호스트의 DMA 메모리 어드레스에 따라 다른 호스트와의 데이터 전송을 수행하도록 명령받는다.
가능한 설계에서, 시스템 내의 I/O 장치의 데이터가 갱신된 후, 적어도 하나의 DMA 기록 작동 커맨드를 사용함으로써, 시스템 내의 하나의 호스트는 I/O 장치로 하여금 다른 호스트 상에서 DMA 기록 작동을 수행하게 하여, 다른 호스트에 대해 데이터를 동기화할 수 있다.
가능한 설계에서, 데이터 전송 장치는 DMA 패킷의 작동 유형 및 타깃 호스트의 허용 요건에 따라, 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하고, DMA 작동이 허용 요건을 충족할 때만 패킷이 수정되고 송신된다.
가능한 설계에서, DMA 패킷은 허용 식별자를 더 포함하고, DMA 패킷의 작동 유형, 허용 식별자 및 타깃 호스트의 허용 요건에 따라, 허용 식별자를 충족되는지를 결정하며, 상기 패킷은 허용 요건이 충족될 때만 수정되고 송신된다. 허용 제어에 의해, 전송 시스템의 보안이 향상될 수 있고, 특정한 호스트에 대한 포워딩이 구현된다.
제2 관점에 따라, 본 발명의 실시예는 데이터 전송 방법을 제공하며, 상기 데이터 전송 방법은 복수의 호스트가 하나 이상의 입출력(I/O) 장치를 공유하는 컴퓨터 시스템에 적용되며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑된다. 복수의 호스트의 DMA 메모리 어드레스가 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되고, 호스트에 의해 송신되고 DMA 가상 어드레스를 운반하는 DMA 패킷이 획득되며, DMA 패킷 내의 DMA 가상 어드레스가 매핑된 DMA 메모리 어드레스로 들, 상기 수정된 DMA 패킷이 타깃 호스트로 전송된다. 상기 컴퓨터 시스템을 사용함으로써, I/O 장치는 DMA 가상 어드레스를 운반하는 DMA 패킷을 사용하여 복수의 호스트 상에서 DMA 작동을 수행할 수 있다는 것을 알 수 있다. DMA 가상 어드레스는 동일한 글로벌 가상 어드레스 공간에 위치하기 때문에, 종래기술과 비교해서, DMA 메모리 어드레스 사이에서 충돌이 일어나지 않으며 그러므로 복수의 호스트는 동일한 I/O 장치를 공유할 수 있다.
가능한 설계에서, 복수의 호스트의 DMA 메모리 어드레스는 하나 이상의 DMA 메모리 어드레스 구간을 형성하고, 글로벌 가상 어드레스 공간에는, 복수의 호스트의 메모리 어드레스 구간에 일대일 방식으로 대응하는 가상 어드레스 구간이 존재한다. DMA 가상 어드레스를 운반하는 DMA 패킷이 획득된 후, DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라 대응하는 메모리 어드레스 구간을 찾아내어 DMA 가상 어드레스 및 DMA 가상 어드레스가 속하는 호스트를 결정한다. 가상 어드레스, 메모리 어드레스 및 호스트 간의 대응관계가 메모리 어드레스 구간 및 가상 어드레스 구간을 사용하여 구현되어, 대응관계의 복잡도가 감소한다.
가능한 설계에서, 복수의 호스트 중 하나 이상의 호스트의 등록 정보가 획득되며, 여기서 등록 정보는 대응하는 호스트의 식별자 ID 및 DMA 메모리 어드레스를 포함한다. 가상 어드레스는 호스트의 DMA 메모리 어드레스에 따라 호스트에 할당되며, 대응관계에 부가되고 갱신된다.
가능한 설계에서, 복수의 호스트 중 하나 이상의 호스트의 등록 정보가 획득되며, 여기서 등록 정보는 대응하는 호스트의 식별자 ID 및 DMA 메모리 어드레스를 포함한다. 하나 이상의 가상 어드레스 구간은 호스트의 DMA 메모리 어드레스 구간에 따라 호스트에 할당되며, 대응관계에 부가되고 갱신된다.
가능한 설계에서, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계가 갱신된 후, 갱신 정보가 호스트에 송신되어, 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계를 동시에 갱신하도록 호스트에 명령한다.
가능한 설계에서, DMA 패킷의 작동 유형 및 타깃 호스트의 허용 요건에 따라, 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하고, DMA 작동이 허용 요건을 충족할 때만 패킷이 수정되고 송신된다.
가능한 설계에서, DMA 패킷은 허용 식별자를 더 포함하고, DMA 패킷의 작동 유형, 허용 식별자 및 타깃 호스트의 허용 요건에 따라, 허용 식별자를 충족되는지를 결정하며, 상기 패킷은 허용 요건이 충족될 때만 수정되고 송신된다. 허용 제어에 의해, 전송 시스템의 보안이 향상될 수 있고, 특정한 호스트에 대한 포워딩이 구현된다.
가능한 설계에서, 호스트에 의해 송신되고 DMA 메모리 어드레스를 포함하는 질의 커맨드가 수신될 수 있고, 글로벌 가상 어드레스 공간에 있으면서 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스는 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라 획득되며, 그런 다음 DMA 가상 어드레스가 리턴 패킷을 사용해서 송신된다.
DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스는 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라 획득되며, 작동 커맨드 내의 DMA 메모리 어드레스는 DMA 가상 어드레스로 수정되며, 작동 커맨드는 I/O 장치에 송신된다.
제3 관점에 따라, 본 발명은 데이터 전송 방법을 제공하며, 상기 데이터 전송 방법은 복수의 호스트가 데이터 전송 장치를 사용해서 하나 이상의 입출력(I/O) 장치를 공유하는 것에 적용되며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑된다. 타깃 호스트의 DMA 어드레스 정보가 획득되고, 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청이 송신되고, DMA 작동 시작 요청은 글로벌 가상 어드레스 공간의 DMA 가상 어드레스에 대해 DMA 작동을 수행하도록 I/O 장치에 명령하기 위해 DMA 어드레스를 포함하며 DMA 가상 어드레스는 타깃 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간에 맵핑함으로써 획득된 DMA 가상 어드레스이다.
가능한 설계에서, DMA 어드레스 정보는 DMA 메모리 어드레스를 포함한다. 목적지 호스트의 DMA 메모리 어드레스를 포함하는 DMA 작동 시작 요청은 데이터 전송 장치에 송신되어, 타깃 호스트의 DMA 메모리 어드레스로부터 글로벌 가상 어드레스 공간의 대응하는 DMA 가상 어드레스로 DMA 작동 시작 요청의 DMA 어드레스를 수정하도록 데이터 전송 장치에 명령하며, 타깃 호스트에 DMA 작동 시작 요청에 포워딩한다.
가능한 설계에서, DMA 어드레스 정보는 DMA 메모리 어드레스이고, 타깃 호스트의 DMA의 DMA 가상 어드레스는 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라 획득되며, DMA 가상 어드레스를 포함하는 DMA 작동 시작 요청이 I/O 장치에 송신된다.
가능한 설계에서, DMA 어드레스 정보는 목적지 호스트의 DMA 가상 어드레스이고, DMA 가상 어드레스를 포함하는 DMA 작동 시작 요청은 I/O 장치에 송신되어, 타깃 호스트에 대해 DMA 작동을 수행하도록 I/O 장치에 명령한다.
가능한 설계에서, 호스트는 DMA 메모리 어드레스를 할당하고, 호스트의 DMA 메모리 어드레스를 할당하고 호스트의 식별 ID 및 호스트의 DMA 메모리 어드레스를 포함하는 등록 정보를 송신한다.
가능한 설계에서, 호스트는 DMA 메모리 어드레스 구간을 할당하고, 등록 정보를 송신하며, 상기 등록 정보는 호스트의 식별 ID 및 호스트의 DMA 메모리 어드레스 구간을 포함한다.
가능한 설계에서, 호스트는 갱신될 필요가 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계를 포함하는 갱신 정보를 획득하며, 상기 갱신 정보에 따라 상기 대응관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 기존의 대응관계에 부가하거나 갱신한다.
제4 관점에 따라, 본 발명의 실시예는 데이터 전송 장치를 제공하며, 상기 데이터 전송 장치는 복수의 호스트 및 하나 이상의 입출력(I/O) 장치에 개별적으로 접속되며, 상기 복수의 호스트는 상기 하나 이상의 I/O 장치를 공유하며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 장치는 전술한 방법에서의 제1 관점에서 데이터 전송 장치를 구현하기 위한 대응하는 기능 및 제2 관점의 대응하는 방법의 기능을 가진다. 이 기능들은 하드웨어에 의해 구현될 수도 있고, 대응하는 소프트웨어를 실행하는 하드웨어에 의해 구현될 수도 있다. 하드웨어 또는 소프트웨어는 전술한 기능에 대응하는 하나 이상의 모듈을 포함한다.
제5 관점에 따라, 본 발명의 실시예는 데이터 전송 장치를 제공하며, 상기 데이터 전송 장치는 하나 이상의 입출력(I/O) 장치를 공유하도록 구성되어 있으며, 상기 데이터 전송 장치는 전술한 방법의 제1 관점의 호스트를 구현하기 위한 대응하는 기능 및 제3 관점의 대응하는 방법의 기능을 가진다. 이 기능들은 하드웨어에 의해 구현될 수도 있고, 대응하는 소프트웨어를 실행하는 하드웨어에 의해 구현될 수도 있다. 하드웨어 또는 소프트웨어는 전술한 기능에 대응하는 하나 이상의 모듈을 포함한다.
제6 관점에 따라, 본 발명의 실시예는 데이터 전송 장치를 제공하며, 상기 데이터 전송 장치는 하나 이상의 입출력(I/O) 장치를 공유하도록 구성되어 있으며, 상기 데이터 전송 장치의 구조는 프로세서를 포함하며, 상기 프로세서는 제1 관점의 호스트의 대응하는 기능 및 제3 관점의 대응하는 방법을 실행하는 장치를 지원하도록 구성되어 있다. 이 장치의 구조는 제1 관점의 데이터 전송 장치의 대응하는 기능 및 제2 관점의 대응하는 방법을 사용함으로써 다른 장치와 교환된 명령 또는 정보를 송수신하도록 구성되어 있는 전송기 및 수신기를 더 포함한다. 상기 장치는 스토리지를 더 포함할 수 있으며, 상기 스토리지는 프로세서에 결합되도록 구성되어 있으며, 상기 스토리지는 필요한 프로그램 명령 및 기지국의 데이터를 절감한다.
본 발명의 실시예에서, I/O 장치에 의해 송신된 DMA 패킷이 획득되며, DMA 패킷의 DMA 가상 어드레스는 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정되며, 수정된 DMA 패킷은 타깃 호스트로 송신되며, I/O 장치는 DMA 가상 어드레스를 포함하는 DMA 패킷을 사용함으로써 복수의 호스트 상에서 DMA 작동을 수행할 수 있다. DMA 가상 어드레스는 호스트 상에서 DMA 메모리 어드레스에 일대일 방식으로 대응하며, 동일한 글로벌 가상 어드레스 공간에 위치하므로, 종래기술과 비교해서, DMA 메모리 어드레스 사이에서 충돌이 일어나지 않는다. 복수의 호스트가 동일한 I/O 장치를 공유하므로, I/O 자원이 절감되며, I/O 장치의 활용도가 향상된다.
또한, 복수의 호스트는 동일한 I/O 장치에 접속되고 데이터 전송을 수행할 수 있으므로, 호스트 간의 데이터 전송은 I/O 장치의 DMA 작동을 사용함으로써 구현될 수 있으며, 데이터 전송은 호스트 간에 직접적으로 수행될 필요가 없다. 호스트와 I/O 장치 간의 링크 버스는 고 대역폭 및 저 지연의 특징을 가지며, 호스트의 CPU는 DMA 작동 시에 데이터 전송에 간섭할 필요가 없으며, 그러므로 네트워크 전송 성능 및 동기화 성능이 향상된다.
또한, DMA 패킷을 사용함으로써 DMA 작동에 대해 허용 관리가 수행되므로, 전체 네트워크 상에서의 데이터 전송의 신뢰도 및 보안성이 향상된다. 게다가, 허용 제어에 의해, 네트워크 사용 시나리오 역시 확장되며, 서로 다른 DMA 작동이 카테고리별로 관리되어 더 복잡한 네트워크 전개 및 전송 방식을 구현할 수 있다.
본 발명의 실시예 또는 종래기술의 기술적 솔루션을 더 명확하게 설명하기 위해, 이하에서는 실시예 또는 종래기술을 설명하는 데 필요한 첨부된 도면에 대해 간략하게 설명한다. 당연히, 이하의 실시예의 첨부된 도면은 본 발명의 일부의 실시예에 지나지 않으며, 당업자라면 창조적 노력 없이 첨부된 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 본 발명의 실시예에 따른 DMA 메모리 구간과 가상 어드레스 구간 간의 대응관계에 대한 개략도이다.
도 2는 본 발명의 실시예에 따른 데이터 전송 장치의 네트워크 토폴로지 환경에 대한 개략도이다.
도 3은 본 발명의 실시예에 따른 네트워크 전송 장치의 하드웨어 상호접속 아키텍처에 대한 개략도이다.
도 4는 본 발명의 실시예에 따른 제1 데이터 전송 방법에 대한 개략적인 흐름도이다.
도 5는 본 발명의 실시예에 따른 데이터 전송 방법의 특정 실시 방식에 대한 개략적인 흐름도이다.
도 6a는 본 발명의 실시예에 따른 제2 데이터 전송 방법에 대한 개략적인 흐름도이다.
도 6b는 본 발명의 실시예에 따른 제2 데이터 전송 방법에 대한 다른 흐름도이다.
도 7은 본 발명의 실시예에 따른 제3 데이터 전송 방법에 대한 다른 흐름도이다.
도 8은 본 발명의 실시예에 따라 패킷에 대한 허용 제어를 수행하는 실시 프로세스에 대한 다른 흐름도이다.
도 9는 본 발명의 실시예에 따른 제4 데이터 전송 방법에 대한 다른 흐름도이다.
도 10은 본 발명의 실시예에 따른 데이터 전송 장치에 대한 개략적인 구조도이다.
도 11은 본 발명의 실시예에 따른 데이터 전송 장치에 대한 다른 개략적인 구조도이다.
도 12는 본 발명의 실시예에 따른 데이터 전송 시스템에 대한 개략적인 흐름도이다.
도 13은 본 발명의 실시예에 따른 다른 데이터 전송 시스템에 대한 개략적인 흐름도이다.
도 14는 본 발명의 실시예에 따른 다른 데이터 전송 장치에 대한 개략적인 구조도이다.
도 15는 본 발명의 실시예에 따른 또 다른 데이터 전송 장치에 대한 개략적인 구조도이다.
본 발명의 실시예는 복수의 호스트 장치와 I/O 장치 간의 DMA 데이터 전송을 위한 방법을 제공하여, DMA에 의해 복수의 호스트와 I/O 장치 간의 데이터 전송을 구현하며, 복수의 호스트 사이 그리고 상기 복수의 호스트와 I/O 장치 사이의 대역폭 점유 및 데이터 지연을 감소하여, 데이터 전송 성능 및 안정성을 향상시킨다.
본 발명의 실시예는 대응하는 장치 및 데이터 전송 시스템을 추가로 제공하며, 이에 대해서는 이하에 개별적으로 상세히 설명한다.
이하에서는 본 발명의 실시예에 첨부된 도면을 참조하여 본 발명의 실시예의 기술적 솔루션에 대해 명확하고 완전하게 설명한다. 당연히, 설명된 실시예는 본 발명의 모든 실시예가 아닌 일부에 지나지 않는다. 당업자가 창조적 노력 없이 본 발명의 실시예에 기초하여 획득하는 모든 다른 실시예는 본 발명의 보호 범위 내에 있게 된다.
본 발명의 실시예를 쉽게 이해할 수 있도록 하기 위해, 본 발명의 실시예의 상세한 설명에 도입된 일부의 용어에 대해 여기서 먼저 설명한다.
글로벌 가상 어드레스 공간: 본 발명의 기술에서, 복수의 호스트는 동일한 I/O 장치를 공유하며, 배경에서 설명한 바와 같이, 이들 호스트의 DMA 메모리 어드레스는 I/O 장치 상에서 충돌한다. 글로벌 가상 어드레스 공간은 모든 호스트와 독립적이며, 이 공간에서 사용자는 외부 I/O 장치이다. 글로벌 가상 어드레스 공간의 공간 크기는 I/O 장치에 연결된 모든 호스트의 DMA 메모리 어드레스 합계보다 크거나 같다. 그러므로 서로 다른 호스트의 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간에 매핑될 수 있다. 서로 다른 호스트의 DMA 메모리 어드레스가 동일한 글로벌 가상 어드레스 공간에 매핑되기 때문에, 동일한 I/O 장치에서 사용되고 있을 때 서로 다른 호스트의 DMA 어드레스가 충돌하는 문제가 해결된다.
DMA 가상 어드레스: DMA 가상 어드레스는 글로벌 가상 어드레스 공간의 메모리 어드레스이고, DMA 가상 어드레스는 호스트의 DMA 메모리 어드레스에 대응한다. 본 발명에서, I/O 장치가 호스트 상에서 DMA 작동을 수행할 때 I/O 장치에 의해 송신되는 DMA 패킷의 DMA 어드레스는 호스트 상의 DMA 메모리 어드레스가 아니라 DMA 가상 어드레스이다. I/O 장치는 DMA 가상 어드레스를 사용해서 글로벌 가상 어드레스 공간 상에서 DMA 작동을 수행하며, 그러므로 I/O 장치가 복수의 호스트에 접속할 때, 배경에서 설명된 DMA 어드레스 충돌은 일어나지 않는다. 이외에, 본 발명에서, DMA 패킷의 DMA 가상 어드레스는 대응하는 호스트 상의 DMA 메모리 어드레스로 변환되며, 이에 의해 I/O 장치와 복수의 호스트 간의 DMA 데이터 전송이 구현된다.
가상 어드레스 구간: 가능한 시나리오에서 호스트 내의 DMA 메모리 어드레스는 연속적이며, 즉, 하나 이상의 DMA 메모리 어드레스 구간이 형성되고 서로 다른 호스트의 DMA 메모리 어드레스 구간이 글로벌 가상 어드레스 공간에 매핑된다. 각각의 DMA 메모리 어드레스 구간은 글로벌 가상 어드레스 공간의 가상 어드레스 구간에 대응한다. 도 1을 참조하면, 호스트의 DMA 메모리 구간과 가상 어드레스 구간 사이의 대응관계를 보다 직관적으로 이해할 수 있다. 도 1에 도시된 바와 같이, 호스트 1, 호스트 2 및 호스트 3의 DMA 메모리 어드레스 구간은 글로벌 가상 어드레스 공간에서의 호스트 1, 호스트 2 및 호스트 3의 가상 어드레스 구간에 각각 대응한다. 호스트 1 및 호스트 2의 DMA 메모리 어드레스는 각각 연속적인 DMA 메모리 어드레스 구간 내에 있으므로, 가상 어드레스 구간에서는 맵핑에 의해 연속적인 가상 어드레스 구간이 얻어진다. 호스트 3의 DMA 메모리 어드레스는 3개의 DMA 메모리 어드레스 구간으로 분포되고, 상이한 DMA 메모리 어드레스 구간은 불연속이다. 따라서, 3개의 DMA 메모리 어드레스 구간은 3개의 가상 어드레스 구간에 각각 맵핑된다.
가상 어드레스 구간은 글로벌 가상 어드레스 공간에 위치하며, 가상 어드레스 구간의 크기는 호스트의 DMA 메모리 어드레스의 크기이므로, 가상 어드레스 구간 내의 DMA 가상 어드레스는 DMA 메모리 어드레스 구간으로 DMA 메모리 어드레스에 일대일 방식으로 대응할 수 있으며, 글로벌 가상 어드레스 공간은 모든 가상 어드레스 구간의 합계보다 크거나 같다.
본 발명은 I/O 장치가 적어도 하나의 호스트 장치에 접속되는 분산 환경에 적용되며, 분산 환경에서, I/O 장치의 확장성 및 활용도를 높이기 위해, 일반적으로 복수의 호스트가 I/O 장치 자원을 공유하는 시나리오가 있다. 복수의 호스트가 I/O 자원을 공유할 때 I/O 자원의 전반적인 사용 효율성이 향상될 수 있으며 호스트는 요구 사항에 따라 자원을 동적으로 신청하고 해제할 수 있다. 도 2는 본 발명의 네트워크 토폴로지 환경을 설명하며, I/O 장치 1, I/O 장치 2 및 I/O 장치 3에는 호스트 장치 1, 호스트 장치 2 및 호스트 장치 3이 데이터 전송 장치를 이용하여 접속되어 있다. 도 3은 본 발명의 구현에서의 하드웨어 상호 접속 아키텍처를 설명한다. 이 아키텍처에서, 호스트는 주변 구성요소 고속 상호접속(Peripheral Component Interconnect Express, PCIe) 링크를 사용하여 외부 PCIe 하드웨어 상호 연결 장치에 직접 연결되며, PCIe 하드웨어 상호 연결 장치는 PCIe 장치에 연결된다. 본 발명의 실시예에서, 데이터 전송 장치는 PCIe 하드웨어 상호 연결 장치의 기능을 구현할 수 있다. PCIe 하드웨어 상호 연결 아키텍처는 비 PCIe 사양 구현이며, 상호접속 장치의 PCIe 데이터 패킷 전달을 통해 복수의 호스트가 동일한 PCIe 장치에 액세스할 수 있다. 예를 들어, 도면에서 호스트 1, 호스트 2 및 호스트 3은 I/O 장치를 공유한다. 하드웨어 플랫폼은 다른 호스트가 동일한 외부 PCIe 장치에 액세스할 수 있도록 능력을 제공한다. 당연히, 본 발명의 아이디어에 기초하여, 본 발명이 적용되는 네트워크 토폴로지 환경 및 하드웨어 상호접속 아키텍처는 본 발명에서 I/O 장치와 적어도 하나의 호스트 간의 데이터 전송을 구현하기 위해 복수의 변형 및 확장을 가질 수 있다.
본 발명은 I/O 장치와 적어도 하나의 호스트 장치 간의 DMA 데이터 전송에 적용되며, 본 발명을 쉽게 이해할 수 있도록 하기 위해 종래기술의 DMA 작동의 프로세스에 대해 간략히 설명한다.
DMA 작동은 DMA 기록 작동 및 DMA 판독 작동을 포함하고, DMA 기록 작동은 I/O 장치로부터 타깃 호스트의 DMA 메모리 어드레스로 데이터를 복제하는 것을 실행할 수 있으며, DMA 판독 작동은 타깃 호스트의 DMA 메모리 어드레스로부터 I/O 장치로 데이터를 복사하는 데 사용될 수 있다.
DMA 기록 작동은 이하의 단계를 포함한다:
1. I/O 장치 드라이버는 수신된 DMA 작동 시작 요청에 따라 I/O 커맨드 패키지를 생성하고, I/O 커맨드 패키지는 I/O 장치 내의 데이터를 메모리, I/O 장치 상의 소스 데이터 어드레스 및 타깃 메모리 DMA 어드레스에 DMA 방식으로 복제하기 위한 명령 정보를 포함한다.
2. I/O 장치는 커맨드 패키지를 수신하고, 복제되어야 하는 데이터의 볼륨에 따라 하나 이상의 DMA 기록 패킷을 생성하며, 패킷의 타깃 어드레스는 메모리 DMA 어드레스이고 그 패킷은 복제될 데이터를 운반한다.
3. DMA 기록 패킷을 대응하는 채널(일반적으로 pcie 링크이다)에 송신한다.
4. DMA 기록 패킷은 호스트의 물리적 메모리 공간에 도달하면, 패킷 내의 데이터 부하를 대응하는 타깃 메모리 DMA 어드레스에 복사한다.
DMA 판독 작동은 이하의 단계를 포함한다:
1. I/O 장치 드라이버는 수신된 DMA 작동 시작 요청에 따라 I/O 커맨드 패키지를 생성하고, I/O 커맨드 패키지는 메모리 데이터를 I/O 장치, I/O 장치 상의 타깃 어드레스 및 메모리 소스 데이터의 DMA 어드레스에 DMA 방식으로 복제하기 위한 명령 정보를 포함한다(본 발명에서는 전술한 기록 작동 시의 타깃 메모리 DMA 어드레스와 판독 작동 시의 메모리 소스 데이터의 DMA 어드레스를 집합적으로 DMA 어드레스라 칭한다).
2. I/O 장치는 커맨드 패키지를 수신하고, 메모리 판독 패킷을 생성하며(본 발명에서는 전술한 DMA 기록 패킷과 DMA 판독 패킷을 집합적으로 DMA 패킷으로 칭한다), 패킷의 타깃 어드레스는 메모리 소스 데이터의 DMA 어드레스이고, 판독될 데이터의 볼륨이 지정된다.
3. 타깃 호스트에 대응하는 채널(일반적으로 pcie 링크이다)에 메모리 판독 패킷을 송신한다.
4. 호스트의 메모리 제어기는 DMA 판독 패킷을 수신하고, 완료 패킷을 생성하며 완료 패킷의 부하를 지정된 메모리 데이터로 채우며, 완료 패킷은 DMA 판독 패킷 내의 I/O 장치 ID에 따라 I/O 장치로 반환되고, 이에 의해 I/O 장치에 데이터를 복제한다. (본 발명에서 완료 패킷은 DMA 패킷이 아니라는 것에 유의해야 한다.)
도 4를 참조하면, 도 4는 본 발명의 실시예에 따른 제1 데이터 전송 방법에 대한 개략적인 흐름도이다. 상기 데이터 전송 방법은 복수의 호스트가 하나 이상의 입출력(I/O) 장치를 공유하는 컴퓨터 시스템에 적용되며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑된다. 방법을 실행하는 엔티티는 네트워크 토폴로지에서 복수의 구현 방식을 가질 수 있다. 예를 들어, 방법을 실행하는 엔티티는 독립적인 데이터 전송 장치, 또는 I/O 장치에 통합된 데이터 전송 모듈일 수도 있고, 다른 호스트 및 I/O 장치에 접속되는 호스트 상에 통합되는 데이터 전송 장치일 수도 있다. 본 발명의 이 실시예에서의 방법은 다음의 단계를 포함할 수 있다:
S401: I/O 장치에 의해 송신된 DMA 패킷을 획득하며, 상기 DMA 패킷은 DMA 가상 어드레스를 운반하고, 상기 DMA 가상 어드레스는 상기 글로벌 가상 어드레스 공간의 가상 어드레스이다.
배경 기술에서 설명한 바와 같이, 호스트 상의 I/O 장치에 의해 수행되는 DMA 작동은 DMA 패킷을 사용함으로써 구현되는데, 즉, DMA 패킷 내의 DMA 어드레스는 목적지 호스트의 DMA 메모리 어드레스이고, 판독/기록은 DMA 어드레스에 따라 타깃 호스트에 의해 저장되는 데이터에 대해 DMA 어드레스에서 수행된다. 본 발명의 이 실시예에서, DMA 패킷 내의 DMA 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스이며, 전술한 바와 같이, 가상 어드레스는 타깃 호스트의 DMA 메모리 어드레스에 대응한다. I/O 장치에 있어서, I/O 장치가 DMA 패킷을 사용하여 타깃 호스트의 DMA 메모리 어드레스에 대해 DMA 작동을 수행하면, 타깃 호스트의 DMA 메모리 어드레스에 대응하는 가상 어드레스에 대해 판독/기록 동작이 실제로 수행된다. 가상 어드레스 구간은 동일한 글로벌 가상 어드레스 공간에 위치하기 때문에 I/O 장치가 접속된 복수의 호스트 상에서 DMA 작동을 수행하면 DMA 메모리 어드레스 구간 사이에서 충돌이 발생하지 않는다.
S402: DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하며, 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 메모리 어드레스가 속하는 호스트이다.
DMA 가상 어드레스, 호스트 및 호스트의 DMA 메모리 어드레스는 일대일 대응관계에 있다. 그러므로 DMA 패킷 내의 DMA 가상 어드레스에 따라, DMA 메모리 어드레스 및 DMA 메모리 어드레스에 대응하는 타깃 호스트가 결정될 수 있다. 다음의 방식을 포함하는 여러 획득 방식이 있을 수 있으나, 이에 제한되지 않는다: DMA 패킷 내의 DMA 가상 어드레스에 따라 어드레스 변환 테이블에 질의하여 타깃 호스트의 DMA 메모리 어드레스를 획득하고, 타깃 호스트의 반환된 DMA 메모리 어드레스를 획득하는 단계, 또는 미리 설정된 어드레스 변환 규칙에 따라 DMA 가상 어드레스를 타깃 호스트의 DMA 메모리 어드레스로 변환하는 단계.
예를 들어, 관리 시스템이 위치하는 호스트와 같은 다른 장치 또는 DMA 어드레스 변환 기능을 가진 다른 장치에 질의 명령이 송신될 수 있다. 질의 명령은 질의될 DMA 가상 어드레스를 포함한다. 질의 명령을 수신한 후, 장치는 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스를 찾아내고, 명령을 이용해서 DMA 메모리 어드레스를 되돌려보내다. 반환된 명령을 획득한 후, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스가 획득될 수 있다.
다른 예에 있어서, DMA 가상 어드레스는 미리 설정된 어드레스 변환 규칙에 따라 타깃 호스트의 DMA 메모리 어드레스로 변환될 수 있다. 예를 들어, 열거될 수 있는 변환 방식에서, 타깃 호스트의 DMA 메모리 어드레스는 구간을 두고 있으며, 그 구간은 1G와 같은 일정한 크기이다. 글로벌 가상 어드레스 공간에도 대응하는 구간이 할당되고, 그 구간은 타깃 호스트의 DMA 메모리 어드레스에 대응하는 가상 어드레스를 포함한다. 글로벌 가상 어드레스 공간의 시작 어드레스로부터, 호스트 번호에 따라 연속적인 배열이 순서대로 수행되며, 이 경우, DMA 가상 어드레스와 글로벌 가상 어드레스 공간의 시작 어드레스와의 차분의 메모리 크기를 메모리 구간의 크기로 나눈 몫이 타깃 호스트의 번호이고, 나머지는 타깃 호스트의 메모리 구간의 시작 어드레스로부터 DMA 메모리 어드레스까지의 크기이고, 이에 의해 타깃 호스트의 DMA 메모리 어드레스를 획득한다.
구현 방식에서, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑(non-overlapping) 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함한다.
도 1 및 가상 어드레스 구간에 관한 전술한 설명을 참조하면, 이 구현에서의 대응관계를 이해할 수 있다.
구현 방식에서, 대응관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 것은 대응관계 테이블에 질의함으로써 구현될 수 있다.
이 경우, 대응관계 테이블은 DMA 메모리 어드레스, DMA 가상 어드레스 및 대응 호스트 간의 대응관계를 직접적으로 포함할 수 있다. 그러므로 3개의 요소 중 어느 하나에 따라, 그 요소에 대응하는 다른 2개의 요소를 찾아낼 수 있다.
구현 방식에서, 어드레스 변환 테이블은 호스트 ID, 호스트의 DMA 메모리 어드레스 및 DMA 가상 어드레스와 같은 필드를 포함할 수 있으며, 테이블 조회 동안, DMA 가상 어드레스에 따라, 대응하는 DMA 메모리 어드레스 및 대응하는 호스트가 직접 획득될 수 있다. 여기서의 어드레스는 특정 어드레스일 수 있거나 어드레스 구간일 수 있다. 이 구현 방식에서, DMA 메모리 어드레스 구간의 메모리 어드레스와 DMA 가상 어드레스 구간의 가상 어드레스는 모두 불연속적일 수 있다. 다른 구현 예에서, 어드레스 변환 테이블은 호스트 ID, 호스트의 DMA 메모리 어드레스 구간의 시작 어드레스, 가상 어드레스 구간의 시작 어드레스 및 구간 크기와 같은 필드를 포함할 수 있다. 테이블 조회 중에, 가상 어드레스, 가상 어드레스 구간의 시작 어드레스 및 구간 크기에 따라 가상 어드레스와 가상 어드레스 구간의 시작 어드레스 간의 차이를 얻을 수 있으며, 이 차이와 호스트의 DMA 메모리 어드레스 구간의 시작 어드레스에 따라, DMA 메모리 어드레스를 얻을 수 있다. 이 구현 방식은 가상 어드레스 구간과 메모리 어드레스 구간이 연속적이고, 어드레스 변환 테이블의 엔트리 수량을 효과적으로 감소시킬 수 있는 경우에 사용된다.
어드레스 변환 테이블은 어드레스 변환 모듈 하드웨어에 위치하며 사설 레지스터 또는 장치 메모리로 구현되거나 관리 시스템의 메모리에 위치할 수 있다. 어드레스 변환 테이블이 사설 레지스터 또는 장치 메모리에 위치하는 경우, 질의는 어드레스 변환 테이블에 직접 액세스함으로써 수행될 수 있다. 어드레스 변환 테이블이 관리 시스템의 메모리에 위치하고 관리 시스템이 논-로컬 장치에 위치할 때, 가상 어드레스를 운반하는 질의 명령이 전송될 수 있고, DMA 메모리 어드레스를 싣고서 피드백되는 리턴 명령이 수신되고 이에 의해 DMA 메모리 어드레스를 얻는다.
어드레스 변환 테이블은 수동으로 미리 설정될 수 있거나, 어드레스 변환 테이블은 네트워크 상의 다른 장치와의 동기화에 의해 얻어질 수 있다. 다른 구현 방식에서, 어드레스 변환 테이블은 다음의 방식: 호스트의 식별 정보 및 호스트의 DMA 메모리 어드레스 구간을 포함하는 호스트의 등록 정보를 획득하는 단계; 호스트의 DMA 메모리 어드레스 구간에 따라 가상 어드레스 구간을 할당하는 단계 - 가상 어드레스 구간은 글로벌 가상 어드레스 공간에 위치하며, 가상 어드레스 구간의 어드레스는 호스트의 DMA 메모리 어드레스 구간의 어드레스에 대응함 - ; 상기 어드레스 변환 테이블에 호스트 ID, 호스트의 DMA 메모리 어드레스 및 호스트의 가상 어드레스 구간 간의 대응관계를 부가하거나, 상기 대응관계를 이용하여 상기 어드레스 변환 테이블에서 호스트의 기존 대응을 갱신하는 단계로 자동으로 생성 또는 갱신될 수 있다. 호스트의 등록 정보는 호스트가 네트워크에 접속된 후 호스트에 의해 이 방법을 수행하는 장치로 전송되거나, 네트워크에 접속된 호스트의 등록 정보가 관리 시스템을 사용하여 이 방법을 수행하는 장치로 전송될 수 있다. 호스트의 메모리 어드레스 구간은 메모리 어드레스의 시작 어드레스와 구간 크기를 사용하여 표현될 수도 있으며, 특정 연속 또는 불연속 어드레스 또는 어드레스 구간의 집합을 사용하여 표현될 수도 있다. 호스트에 가상 어드레스 구간을 할당하는 것은 호스트의 메모리 어드레스 구간의 크기에 따라 대응하는 크기의 가상 어드레스 구간을 할당하고, 가상 어드레스 구간을 글로벌 가상 어드레스 공간에 추가하거나 글로벌 가상 어드레스 공간에서의 호스트의 기존 가상 어드레스를 가상 어드레스 구간으로 대체하는 것이다. 가상 어드레스 구간이 할당될 때, 호스트의 가상 어드레스 구간과 메모리 어드레스 구간이 일대일 대응 관계에 있음을 보장해야 함을 알 수 있다.
구현 방식에서, 추가 또는 수정은 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 대해 다음과 같은 방식: 복수의 호스트 중 하나 이상의 호스트의 등록 정보를 획득하는 단계 - 상기 등록 정보는 식별자 ID 및 대응하는 호스트의 DMA 메모리 어드레스를 포함함 - ; 호스트의 DMA 메모리 어드레스에 따라 가상 어드레스를 할당하는 단계 - 가상 어드레스는 글로벌 가상 어드레스 공간에 있고, 가상 어드레스는 일대일 방식으로 호스트의 DMA 메모리 어드레스에 대응함 - ; 호스트 ID, 호스트의 DMA 메모리 어드레스 및 호스트의 가상 어드레스 사이의 대응 관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 추가 또는 갱신하는 단계로 수행될 수 있다.
구현 방식에서, 대응관계가 가상 어드레스 구간 또는 메모리 어드레스 구간을 포함할 때, 추가 또는 수정은 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 대해 다음과 같은 방식: 호스트의 하나 이상의 DMA 메모리 어드레스 구간에 따라 하나 이상의 가상 어드레스 구간을 호스트에 할당하는 단계 - 상기 가상 어드레스 구간은 글로벌 가상 어드레스 공간에 있고, 상기 하나 이상의 가상 어드레스 구간은 호스트의 하나 이상의 DMA 메모리 어드레스 구간에 일대일 방식으로 대응하며, 가상 어드레스 구간의 가상 어드레스는 대응하는 DMA 메모리 어드레스의 DMA 메모리 어드레스에 일대일 방식으로 대응함 - ; 호스트 ID, 호스트의 DMA 메모리 어드레스 구간 및 호스트의 가상 어드레스 구간 사이의 대응관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 부가 또는 갱신하는 단계로 수행된다.
구현 방식에서, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계가 갱신된 후, 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계를 동기해서 갱신하도록 호스트에 명령하는 갱신 정보가 호스트에 송신된다.
어드레스 변환 테이블이 갱신된 후 갱신 정보가 호스트에 능동적으로 송신될 수 있다는 것을 알 수 있다. 대안으로, 호스트에 의해 송신된 질의 커맨드가 수신된 후, 대응관계가 갱신될지가 결정되고, 대응관계가 갱신되면, 갱신 정보가 호스트에 송신된다. 갱신 정보는 모든 호스트에 송신될 수도 있고 일부의 특정한 호스트에 송신될 수도 있으며 관리 시스템이 위치하는 호스트에 송신될 수도 있다.
대응관계의 갱신은 데이터 전송 장치를 사용해서 완료될 수도 있고 네트워크 상의 관리 시스템을 사용해서 완료될 수도 있으며 임의의 호스트에 의해 완료될 수도 있다는 것을 알 수 있다. 대응관계를 생성 또는 갱신하는 특정한 구현 방식을 이하에 열거한다. 이 구현 방식에서, 대응관계는 어드레스 변환 테이블에 저장되고, 어드레스 변환 테이블의 갱신은 네트워크 상의 호스트에 의해 완료되며, 갱신된 어드레스 변환 테이블은 다른 장치와 동기화된다. 호스트는 PCIe 버스를 사용해서 데이터 전송 장치 및 I/O 장치와 통신한다. 이 구현 방식은 다음의 단계를 포함한다:
a) 호스트는 데이터 전송 장치의 PCIe 장치 객체를 에뮬레이트한다.
b) 호스트는 원격 단에 의해 공유된 PCIe 장치를 에뮬레이션에 의해 발견한다.
c) 데이터 전송 장치에 액세스함으로써 로컬 호스트의 ID를 획득한다.
d) 호스트는 로컬 호스트의 DMA 어드레스 및 I/O 장치의 ID를 입력으로 사용하여 가상 어드레스 구간을 할당한다.
e) 할당 작용이 완료될 때까지 대기하고 새로운 글로벌 가상 어드레스 공간을 획득한다.
f) 전술한 정보에 따라 호스트의 로컬 메모리에 어드레스 변환 테이블을 생성 또는 갱신한다.
g) 데이터 변환 장치의 인터럽트 정보를 초기화하고, 어드레스 변환 테이블의 엔트리가 이후에 갱신되고, 인터럽트를 통해 현재 호스트에게 알리고, 호스트의 복사 정보를 갱신한다.
h) I/O 장치가 부가 또는 삭제되거나 현재의 호스트가 셧다운되면, 먼저 글로벌 데이터 전송 장치에 관련 정보를 갱신해야 하며, 데이터 전송 장치는 그 정보와 관련된 다른 호스트에 인터럽트를 통해 알린다.
S403: DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하며, 수정된 DMA 패킷을 타깃 호스트로 송신한다.
전술한 단계에서, DMA 메모리 액세스가 획득되면, DMA 메모리 어드레스가 속하는 호스트 역시 획득될 수 있으므로 수정된 DMA 패킷이 호스트에 송신된다. DMA 작동은 DMA 패킷을 사용해서 초기화되거나 수행되므로, I/O 장치에 의해 송신된 DMA 패킷이 타깃 호스트에 송신되면, I/O 장치는 타깃 호스트 상에서 DMA 작동을 수행할 수 있다.
도 5를 참조하면, 도 5는 본 발명의 실시예에 따른 데이터 전송 방법의 특정 실시 방식에 대한 개략적인 흐름도이다. 데이터 전송 장치(503)는 I/O 장치(501)에 의해 송신된 DMA 패깃(502)을 획득하고, DMA 패킷(502)의 DMA 어드레스가 DMA 가상 어드레스 0xabcd이고, 가상 어드레스는 글로벌 가상 어드레스 공간에 있다. 대응관계는 어드레스 변환 테이블을 사용해서 저장되고, 전술한 가상 어드레스 구간을 사용해서 어드레스 할당 및 질의를 수행한다. 가상 어드레스에 따라 어드레스 변환 테이블에 질의함으로써, 데이터 전송 장치(503)는 엔트리(504)를 찾아낼 수 있고, 즉 가상 어드레스는 시작 어드레스 0xa000 및 1G의 크기를 가지는 가상 어드레스 구간에 있다. 호스트 3에 있으면서 시작 어드레스 0x0 및 1G의 크기를 가지는 DMA 메모리 어드레스에 가상 어드레스 구간이 대응한다는 것을 엔트리(504)로부터 알 수 있다. 그러므로 가상 어드레스 구간의 시작 어드레스와 가상 어드레스 간의 차이 bcd, 및 호스트 3의 DMA 메모리 어드레스의 시작 어드레스에 따라, 호스트 3의 DMA 메모리 어드레스 구간으로 가상 어드레스에 대응하는 DMA 메모리 어드레스가 0x0bcd임을 획득할 수 있다. DMA 패킷(502)의 DMA 어드레스는 가상 어드레스 0xabcd로부터 호스트의 DMA 메모리 어드레스 0x0bcd로 수정되어 수정된 DMA 패킷(505)을 획득한다. DMA 패킷(505)은 호스트 3에 송신되므로, I/O 장치는 호스트 3의 DMA 메모리 어드레스 상에서 DMA 작동을 개시 또는 수행한다.
본 발명의 이 실시예에서, I/O 장치에 의해 전송된 DMA 패킷이 얻어지고, DMA 패킷의 DMA 가상 어드레스가 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정되고, 수정된 DMA 패킷은 타깃 호스트로 전송되며; I/O 장치는 DMA 가상 어드레스를 포함하는 DMA 패킷을 이용하여 복수의 호스트에 대해 DMA 작동을 수행할 수 있다는 것을 알 수 있다. DMA 가상 어드레스는 동일한 글로벌 가상 어드레스 공간에 있기 때문에, 종래기술과 비교하여 DMA 메모리 어드레스 간에 충돌이 발생하지 않는다. 복수의 호스트가 I/O 장치와 동시에 데이터 전송을 수행할 수 있으므로 호스트 간의 데이터 전송은 I/O 장치의 DMA 작동을 사용하여 구현될 수 있으며 호스트 사이에서 데이터 전송을 직접 수행할 필요가 없다. 호스트와 I/O 장치 간의 링크 버스는 높은 대역폭과 낮은 지연 기능을 가지고 있으며 호스트의 CPU는 개입할 필요가 없으므로 네트워크 전송의 적시성 및 효율성이 향상되고 네트워크 애플리케이션 시나리오가 확장된다.
또한, 본 발명의 이 실시예에서, DMA 가상 어드레스 및 타깃 호스트는 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라 획득될 수 있다. 대응관계가 국부적으로 저장되면, DMA 가상 어드레스에 대한 질의가 효율적으로 수행될 수 있으며 DMA 패킷 내이 DMA 어드레스를 수정하는 효율성이 향상된다. 대응관계가 원격 관리 시스템에 저장되면, 데이터 전송 장치의 하드웨어 복잡성이 감소될 수 있으므로 데이터 전송 장치의 특정 구현 방식이 확장되고 강화된다.
또한, 본 발명의 이 실시예에서, 대응관계가 갱신된 후, 갱신 정보가 호스트에 송신되므로 호스트 내의 대응관계 및 데이터 전송 장치 내의 어드레스 변환 테이블이 동기해서 갱신된다. 그러므로 호스트는 DMA 가상 어드레스와 대응하는 DMA 메모리 어드레스 간의 변환을 독립적으로 수행할 수 있으며, 이에 의해 본 발명의 애플리케이션 시나리오가 확장된다.
도 6a를 참조하면, 도 6a는 본 발명의 실시예에 따른 제2 데이터 전송 방법에 대한 개략적인 흐름도이다. 이 실시예는 제1 실시예를 참조하여 설명된다. 이 실시예에서의 방법은 제1 실시예에서의 단계 S401, S402 및 S403을 포함하므로 이 단계들과 같거나 유사한 설명에 대해서는 이 실시예에서 반복하지 않는다.
DMA 작동은 호스트에 의해 DMA 작동 시작 요청을 I/O 장치에 송신함으로써 개시될 수 있다. DMA 작동 시작 요청은 DMA 메모리 어드레스를 포함하여, DMA 메모리 어드레스에 대한 DMA 작동을 개시하도록 I/O 장치에 명령한다. 본 발명에서, 제1 실시예의 설명을 참조해서, I/O 장치는 DMA 가상 어드레스에 대한 DMA 작동을 시작해야 하며, 즉 DMA 가상 어드레스를 DMA 장치로 사용하는 DMA 패킷을 송신한다. 그러므로 I/O 장치에 의해 수신된 DMA 작동 시작 요청 역시 DMA 가상 어드레스를 사용해야 한다.
호스트에 의해 I/O 장치에 송신된 DMA 작동 시작 요청은 DMA 가상 어드레스를 직접 사용하므로 I/O 장치는 DMA 가상 어드레스를 포함하는 DMA 작동 시작 요청을 수신할 수 있다. 이 경우, 호스트는 제1 실시예에서 제공하는 방법을 사용해서 데이터 전송 장치와 동기해서 갱신되는 대응관계를 국부적으로 저장하여, 그 대응관계에 따라 DMA 작동 시작 요청 내의 DMA 가상 어드레스를 획득할 수도 있으며, 어드레스 변환 테이블을 저장하는 다른 장치에 질의 커맨드를 송신하여 DMA 가상 어드레스를 획득할 수도 있다. 호스트에 의해 I/O 장치에 송신된 DMA 작동 시작 요청은 또한 타깃 호스트의 DMA 메모리 어드레스를 사용할 수 있으며, 데이터 전송 장치에 작동 커맨드를 송신함으로써, 작동 커맨드 내의 DMA 메모리 어드레스는 대응하는 DMA 가상 어드레스로 수정되고, 수정된 DMA 작동 시작 요청이 I/O에 송신된다.
도 6a를 참조하면, 본 발명의 이 실시예에서의 구현 방식에서, 데이터 전송 장치는 다음의 방식으로 호스트의 질의 커맨드에 응답할 수 있다. 데이터 전송 방법은 다음을 더 포함한다:
S601: 호스트에 의해 송신된 질의 커맨드를 수신하며, 상기 질의 커맨드는 질의받게 될 호스트의 DMA 메모리 어드레스를 포함한다.
S602: DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라, 글로벌 가상 어드레스 공간에 있으면서 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득한다.
S603: 호스트에 리턴 패킷을 송신하며, 리턴 패킷은 글로벌 가상 어드레스 공간에 있으면서 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 포함한다.
글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 복수의 구현 방식이 있으며, 획득 방식은 전술한 DMA 가상 어드레스에 따라 대응하는 DMA 메모리 어드레스를 획득하는 것과 원리가 동일하다. 이에 대해서는 여기서 상세히 설명하지 않는다.
특정한 구현 방식에서, DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 방식은 어드레스 변환 테이블에 질의함으로써 구현될 수 있다. 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 단계는: 타깃 호스트의 DMA 메모리 어드레스에 따라 어드레스 변환 테이블에 질의하여, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 단계를 포함하며, 어드레스 변환 테이블은 글로벌 가상 어드레스 공간 내의 가상 어드레스 구간의 가상 어드레스와 가상 어드레스 구간에 대응하는 호스트의 DMA 메모리 어드레스 구간 내의 메모리 어드레스 간의 대응관계를 포함한다.
어드레스 변환 테이블은 전술한 제1 실시예에서의 어드레스 변환 테이블일 수도 있고, DMA 메모리 어드레스에 따라 대응하는 DMA 가상 어드레스에 질의하기 위한 최적화된 별도의 어드레스 변환 테이블일 수도 있다. 열거될 수 있는 방식에서, 타깃 호스트의 DMA 메모리 어드레스는 0x0bcd이고, 이 어드레스에 따라, 메모리 시작 어드레스 0x0 및 1G의 크기를 갖는 호스트 DMA 메모리 어드레스를 찾아낼 수 있다. 이 엔트리에 대응하는 DMA 가상 어드레스 구간의 시작 어드레스는 0xa000이며, 그러므로 DMA 메모리 어드레스와 메모리 시작 어드레스 간의 차이 및 DMA 가상 어드레스 구간의 시작 어드레스에 따라, 대응하는 DMA 가상 어드레스가 0xabcd임을 획득할 수 있다.
도 6b를 참조하면, 다른 구현 방식에서, 데이터 전송 장치는 호스트에 의해 송신된 DMA 작동 개시 요청을 획득하고, DMA 작동 개시 요청을 수정하고, 수정된 DMA 작동 개시 요청을 I/O 장치에 포워딩할 수 있다. 데이터 전송 방법은 다음을 더 포함한다:
S604: 호스트에 의해 I/O 장치에 송신된 DMA 작동 개시 요청을 획득하고, 상기 작동 커맨드는 타깃 호스트의 DMA 메모리 어드레스를 포함하여, 타깃 호스트 상에서 DMA 작동을 수행하도록 I/O 장치에 명령한다.
S605: DMA 작동 시작 요청 내의 타깃 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간 내의 대응하는 DMA 가상 어드레스로 수정한다.
S606: 수정된 DMA 작동 개시 요청을 I/O 장치에 송신한다.
마찬가지로, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라, 글로벌 가상 어드레스 공간에 있으면서 DMA 작동 시작 요청 내의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하기 위한 방식은 전술한 DMA 가상 어드레스에 따라 대응하는 DMA 메모리 어드레스를 획득하는 원리와 동일하다. 이에 대해서는 여기서 다시 설명하지 않는다.
본 발명의 이 실시예에서, 호스트에 의해 송신된 질의 커맨드가 수신되고, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스가 획득되며, 호스트에 리턴 패킷이 송신되므로, 호스트는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하며, DMA 가상 어드레스를 포함하는 DMA 작동 시작 요청을 송신하여, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스에 대한 DMA 작동을 개시하도록 I/O 장치에 명령한다는 것을 알 수 있다. 대안으로, 호스트에 의해 I/O 장치에 송신된 DMA 작동 시작 요청이 획득되고, DMA 작동 시작 요청 내의 타깃 호스트의 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간 내의 대응하는 DMA 가상 어드레스로 수정되며, 수정된 DMA 작동 시작 요청은 I/O 장치에 송신되므로, 호스트에 의해 송신된 DMA 작동 시작 요청은 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스에 대한 DMA 가상 어드레스를 개시하도록 I/O 장치에 명령하는 데 사용될 수 있다.
도 7a를 참조하면, 도 7a는 본 발명의 실시예에 따른 제3 데이터 전송 방법에 대한 개략적인 흐름도이다. 이 실시예는 제1 실시예 및 제2 실시예를 참조하여 설명된다. 이 실시예에서의 방법은 제1 실시예에서의 단계 S401, S402 및 S403을 포함하고 제2 실시예에서의 S601 내지 S606를 포함한다. 그러므로 이 단계들과 같거나 유사한 설명에 대해서는 이 실시예에서 반복하지 않는다.
이 실시예에 따르면, I/O 장치에 의해 송신되고 목적지 호스트 상에서 DMA 작동을 수행하는 데 사용되는 DMA 패킷에 대해 허용 제어를 실시할 수 있다. 즉, DMA 패킷을 수신한 후, 데이터 전송 장치는 DMA 패킷을 사용해서 목적지 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하고, DMA 패킷이 허용될 띠만 목적지 호스트 상에서 DMA 작동을 수행하도록 DMA 패킷 내의 DMA 어드레스가 수정된다.
도 7을 참조하면, 이 실시예의 구현 방식에서 방법은 다음을 더 포함한다:
S701: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한다.
S702: DMA 패킷의 허용 정보 및 타깃 호스트의 허용 요건에 따라, 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정한다.
S703: DMA 작동이 허용 요건을 충족하면, DMA 패킷 내의 DMA 가상 어드레스를 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정한다.
타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하는 단계는 복수의 방식으로 구현될 수 있다. 예를 들어, 허용 요건이 충족하는지는 호스트 식별자 및 대응하는 DMA 작동 유형을 포함하는 별도의 허용 테이블에 질의함으로써 결정될 수 있다. 전술한 대응관계가 어드레스 변환 테이블에 저장되어 있으면, 허용 요건이 충족되는지는 어드레스 변환 테이블에 질의함으로써 결정될 수 있다. 어드레스 변환 테이블은 전술한 어드레스 변환 테이블과 비교해서 하나 이상의 항목: 작동 유형을 가진다. 어드레스 변환 테이블 내의 엔트리가 DMA 가상 어드레스에 따라 찾아지면, DMA 가상 어드레스에 속하는 가상 어드레스 구간에 대응하는 목적지 어드레스 상에서 수행될 수 있는 DMA 작동의 유형이 획득될 수 있다.
이 실시예의 다른 구현 방식에서, 다음의 정보: DMA 패킷의 유형, DMA 패킷의 허용 식별자 또는 DMA 패킷을 송신하는 호스트의 식별자 중 적어도 하나를 포함한다.
이 구현 방식에서, DMA 작동이 허용을 가지는 것으로 결정되면, 허용 식별자가 고려 인자로서 부가된다. 허용 식별자는 식별자가 위치하는 패킷의 DMA 작동 허용 관련 특징을 식별하기 위한 식별자이다. 허용 식별자는 일반적인 DMA 패킷에 이미 존재하는 정보일 수 있다. 예를 들어, 허용 식별자는 DMA 패킷을 송신하는 I/O 장치의 식별 ID일 수 있으며, 허용 식별자를 결정함으로써, 특정한 I/O 장치가 특정한 호스트 상에서 특정한 DMA 작동을 수행할 수 있는 것이 구현될 수 있다. 허용 식별자는 일반적인 DMA 패킷에 존재하지 않는 새로 추가된 정보일 수도 있다. 예를 들어, 허용 식별자는 DMA 작동 시에 전송될 데이터의 유형의 식별 ID일 수 있으므로 I/O 장치는 특정한 유형의 데이터를 DMA 방식으로 특정한 호스트에 전송할 수 있다. 대안으로, 허용 식별자는 DMA 작동을 개시하도록 I/O 치에 명령하는 호스트의 식별 ID일 수 있으며, 이에 의해 특정한 호스트가 특정한 호스트에 대한 DMA 작동을 수행하도록 허용되는 것이 구현된다. 허용 식별자는 위에서 열거된 하나의 단편 정보의 식별 ID일 수도 있고 여러 가지 유형의 정보의 조합의 식별 ID일 수도 있다. 예를 들어, 허용 식별자는 특정한 I/O 장치에 의해 송신된, 특별한 유형의 데이터를 전송하기 위한 DMA 패킷을 식별하는 데 사용될 수 있다.
마찬가지로, 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하는 단계는 복수의 방식으로 구현될 수 있다. 예를 들어, 허용 요건이 충족되는지는 호스트 ID, 허용 식별자 및 대응하는 DMA 작동 유형을 포함하는 별도의 허용 테이블에 질의함으로써 결정될 수 있거나, 허용 요건이 충족되는지는 어드레스 변환 테이블에 질의함으로써 결정되며, 어드레스 변환 테이블은 전술한 어드레스 변환 테이블에 비교해서 2편 이상의 콘텐츠: 작동 유형 및 허용 식별자를 가진다.
도 8을 참조하면, 어드레스 변환 테이블에 작동 유형 및 허용 식별자가 부가된 후에 패킷에 대한 허용 제어가 수행되는 예가 여기에 열거된다. 데이터 전송 장치는 I/O 장치에 의해 전송된 DMA 패킷(802)을 획득한다. DMA 패킷(802)의 DMA 어드레스는 DMA 가상 어드레스 0xabcd이고, DMA 패킷(802)의 식별 ID는 0001이다. DMA 가상 어드레스에 따르면, DMA 가상 어드레스에 대응하는 가상 어드레스 구간이 시작 어드레스 0xa000 및 1G의 공간 크기를 가지고, DMA 가상 어드레스에 대응하는 호스트의 메모리 구간은 호스트 1의 시작 어드레스, 즉 0x0 및 크기 1G를 갖는 메모리 공간이라는 것을 찾아낼 수 있다. 식별 ID 0001에 따르면, 호스트 1에 대한 식별 ID의 DMA 작동 허가가 R이고, 즉 식별 ID 0001을 갖는 DMA 패킷이 호스트 1의 DMA 메모리 구간에 대한 판독 동작만을 개시하도록 허용된다는 것을 알 수 있다. 그러므로 DMA 패킷(802)의 작동 유형이 기록 동작일 때, 허가 요건이 충족된다. 데이터 송신 장치는 DMA 패킷(802) 내의 DMA 어드레스를 수정하고, 수정된 DMA 패킷을 호스트 1에 송신한다.
이 실시예에서, DMA 패킷의 허용을 결정함으로써, I/O 장치가 호스트 상에서 DMA 작동을 수행할 때 허용 제어가 구현될 수 있다는 것을 알 수 있다. I/O 장치는 복수의 호스트에 접속되기 때문에, 허용 제어에 의해, 전체 네트워크 상에서 데이터 전송의 신뢰도 및 보안성이 향상될 수 있다. 또한, 허용 제어에 의해, 네트워크 사용 시나리오 역시 확장되어 더 복잡한 네트워크 전개 및 전송 방식을 구현할 수 있다.
도 9를 참조하면, 도 9는 본 발명의 실시예에 따른 제4 데이터 전송 방법에 대한 다른 흐름도이다. 이 실시예는 제1, 제2 및 제3 실시예를 참조하여 설명한다. 전술한 실시예에 이미 나타나 있고 동일하거나 유사한 의미를 가지는 이 실시예에서의 개념 또는 용어에 대해서는 이 실시예에서 상세히 설명하지 않는다. 이 실시예에서의 방법은 전술한 실시예에서의 방법의 일부 단계에 대응한다. 그러므로 이 실시예는 전술한 실시예에서의 관련 설명을 참조하여 이해되고 확장될 수 있다.
이 실시예에서 제공하는 데이터 전송 방법은 도 2에 설명된 네트워크 토폴로지에서의 호스트에 의해 수행되고, 호스트는 독립 OS를 실행하고 독립 DMA 어드레스 공간을 가지는 독립적인 물리적 호스트를 나타낸다. 이 방법은 호스트로 하여금 타깃 호스트 상에서 DMA 작동을 수행하도록 I/O 장치에 명령하게 하는 데 사용되며, 방법은 이하의 단계를 포함한다:
S901: 타깃 호스트의 DMA 어드레스 정보를 획득한다.
타깃 호스트는 이 방법을 수행하는 호스트에 의해 DMA 작동을 수행하도록 I/O 장치에 명령하는 타깃 호스트이며, 즉 DMA 메모리 어드레스가 속하는 호스트이며, DMA 메모리 어드레스는 DMA 작동을 수행하기 위해 I/O 장치에 의해 송신되는 DMA 패킷 내의 DMA 가상 어드레스에 대응한다. 가상 시나리오에서, 타깃 호스트는 방법을 수행하는 호스트이고, 이 경우, 호스트는 호스트에 대한 DMA 작동을 개시하도록 I/O 장치에 명령하여, 호스트와 I/O 장치 간의 데이터 교환을 구현한다. 다른 가능한 사나리오에서, 타깃 호스트는 이 방법을 수행하는 호스트와 동일한 I/O 장치에 접속되는 다른 호스트이고, 이 경우, 호스트는 다른 호스트에 대한 DMA 작동을 개시하도록 I/O 장치에 명령하여 I/O 장치와 다른 호스트 간에 데이터 교환을 실행한다.
DMA 어드레스 정보는 타깃 호스트의 DMA 메모리 어드레스 정보일 수도 있고 DMA 가상 어드레스 정보일 수도 있다. 타깃 호스트가 이 방법을 수행하는 호스트이면, DMA 메모리 어드레스 구간의 할당에 의해, DMA 메모리 어드레스 정보가 획득될 수 있으며, 타깃 호스트가 다른 호스트일 때, 타깃 호스트의 DMA 메모리 어드레스 또는 DMA 가상 어드레스는 어드레스 변환 테이블에 질의함으로써 획득될 수도 있고, 다른 장치에 의해 송신된 요청 명령에 포함된 DMA 메모리 어드레스 또는 DMA 가상 어드레스를 수신함으로써 획득될 수도 있다.
S902: 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청을 송신하며, 상기 DMA 작동 시작 요청은 DMA 어드레스를 포함하여, 글로벌 가상 어드레스 공간의 DMA 가상 어드레스에 대한 DMA 작동을 수행하도록 I/O 장치에 명령하며, DMA 가상 어드레스는 타깃 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간에 매핑함으로써 획득된 DMA 가상 어드레스이다.
배경에서 설명된 바와 같이, I/O 장치에 의해 수행되는 DMA 작동은 DMA 작동 시작 요청에 의해 개시될 수 있다. 종래기술에서는 I/O 장치가 하나의 호스트에만 접속되어 DMA 작동을 수행할 수 있다. 그러므로 호스트가 I/O 장치와 데이터를 교환해야 할 때, 호스트는 I/O 장치에 DMA 작동 시작 요청을 송신할 수 있으며, DMA 작동 시작 요청은 I/O 장치에 의해 판독될 데이터의 메모리 어드레스 또는 I/O 장치에 의해 송신될 데이터를 저장하는 메모리 어드레스를 포함한다. DMA 작동 시작 요청을 수신한 후, I/O 장치는 메모리 어드레스에 대해 DMA 작동을 시작하여 데이터를 판독하거나 기록하고 이에 의해 데이터 교환을 완료한다. 본 발명에서는 복수의 호스트가 I/O 장치에 접속되어 DMA 작동을 수행할 수 있다. 그러므로 DMA 작동 시작 요청은 이 방법을 수행하는 호스트에 대해 DMA 작동을 수행하도록 I/O 장치에 명령할 수 있을 뿐만 아니라 다른 호스트에 대해 DMA 작동을 수행하도록 I/O 장치에 명령할 수도 있다. 분산 I/O 장치 공유 시나리오에서, 이 실시예에 의해, 호스트는 호스트와 I/O 장치 사이 그리고 호스트 사이에서 DMA 방식으로 데이터 교환을 수행할 수 있다.
DMA 어드레스 정보가 타깃 호스트의 DMA 메모리 어드레스를 포함할 때, 구현 방식에서, 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청을 송신하는 단계는: 데이터 전송 장치에 DMA 작동 시작 요청을 송신하여 - DMA 작동 시작 요청 내의 DMA 어드레스는 타깃 호스트의 DMA 메모리 어드레스임 - , DMA 작동 시작 요청 내의 DMA 어드레스를 타깃 호스트의 DMA 메모리 어드레스로부터 글로벌 가상 어드레스 공간의 대응하는 DMA 가상 어드레스로 수정하도록 데이터 전송 장치에 명령하고, DMA 작동 시작 요청을 타깃 호스트에 포워딩하는 단계를 포함한다.
전술한 제2 실시예에서의 단계를 참조하면, 이 구현 방식에서, 호스트는 DMA 작동 시작 요청에 의해 지시되는 DMA 작동의 DMA 어드레스로서 DMA 메모리 어드레스를 사용한다. I/O 장치에 의해 송신되고 DMA 작동을 수행하는 데 사용되는 DMA 패킷은 DMA 가상 어드레스를 사용해야 한다. 그러므로 DMA 작동 시작 요청이 데이터 전송 장치에 송신되며, 데이터 전송 장치는 DMA 작동 시작 요청 내의 DMA 메모리 어드레스를 대응하는 DMA 가상 어드레스로 변환하고, 변환 후 획득된 DMA 작동 시작 요청을 I/O 장치에 송신한다.
DMA 어드레스 정보가 타깃 호스트의 DMA 메모리 어드레스를 포함할 때, 다른 구현 방식에서, 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청을 송신하는 단계는: 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청을 송신하는 단계는: DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 따라, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 단계, 및 I/O 장치에 DMA 작동 시작 요청을 송신하는 단계 - DMA 작동 시작 요청은 DMA 가상 어드레스임 - 를 포함한다.
타깃 호스트의 메모리 어드레스에 따라 어드레스 변환 테이블에 질의하여 대응하는 가상 어드레스를 획득하는 단계는 전술한 실시예에서 제공하는 질의 방법을 참조하면 이해될 수 있다. 구체적으로, 예를 들어, 타깃 호스트의 메모리 어드레스가 0x0bcd이면, 어드레스 변환 테이블에 질의함으로써, 메모리 어드레스가 속하는 메모리 어드레스 구간이 시작 어드레스 0x0 및 1G의 크기를 메모리 어드레스 공간이고, 메모리 어드레스 구간에 대응하는 가상 어드레스 구간의 시작 어드레스는 0xa000임을 획득할 수 있다. 그러므로 메모리 어드레스에 대응하는 가상 어드레스는 0xabcd이다.
DMA 작동 시작 요청은 I/O 장치에 송신되면, DMA 작동 시작 요청은 호스트에 접속된 I/O 장치에 직접적으로 송신될 수 있거나, 데이터 전송 장치를 포함하는 다른 장치에 의한 포워딩에 의해, DMA 작동 시작 요청은 호스트에 간접적으로 접속된 I/O 장치에 송신될 수 있다.
DMA 어드레스 정보가 타깃 호스트의 DMA 가상 어드레스를 포함하면, 구현 방식에서, 타깃 호스트의 DMA 어드레스 정보에 따라 DMA 작동 시작 요청을 송신하는 단계는: I/O 장치에 DMA 작동 시작 요청을 송신하는 단계를 포함하며, DMA 작동 시의 DMA 어드레스는 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스이다.
마찬가지로, DMA 작동 시작 요청이 I/O 장치에 송신될 때, DMA 작동 시작 요청은 호스트에 접속된 I/O 장치에 직접적으로 송신될 수 있거나, 데이터 전송 장치를 포함하는 다른 장치에 의한 포워딩에 의해, DMA 작동 시작 요청은 호스트에 간접적으로 접속된 I/O 장치에 송신된다.
이 실시예의 구현 방식에서, 호스트는 DMA 메모리 어드레스를 할당하며, DMA 메모리 어드레스는 하나 이상의 I/O 장치가 직접 메모리 액세스(DMA) 방식으로 DMA 메모리 어드레스에 액세스하는 데 사용되고, 등록 정보를 송신한다. 등록 정보는 호스트의 식별 ID 및 호스트의 DMA 메모리 어드레스를 포함한다. 호스트는 네트워크에 접속된 후 또는 메모리 어드레스 구간을 재할당한 후 등록 정보를 송신할 수 있으며, 데이터 전송 장치에 또는 관리 시스템이 위치하는 호스트에 등록 정보를 송신하여, 데이터 전송 장치 또는 다른 호스트에 의해 저장된 대응관계를 갱신할 수 있다.
다른 구현 방식에서, 호스트는 DMA 메모리 어드레스 구간을 할당하며, DMA 메모리 어드레스 구간은 DMA 메모리 어드레스를 포함하고, DMA 메모리 어드레스는 하나 이상의 I/O 장치가 직접 메모리 액세스(DMA) 방식으로 DMA 메모리 어드레스를 액세스하는 데 사용된다. 또한, 호스트는 등록 정보를 송신하며, 등록 정보는 호스트의 식별 ID 및 호스트의 DMA 메모리 어드레스 구간을 포함한다. 호스트는 네트워크에 접속된 후 또는 메모리 어드레스 구간을 재할당한 후 등록 정보를 송신할 수 있으며, 데이터 전송 장치에 또는 관리 시스템이 위치하는 호스트에 등록 정보를 송신하여, 데이터 전송 장치 또는 다른 호스트에 의해 저장된 대응관계를 갱신할 수 있다.
이 실시예의 다른 구현 방식에서, 호스트는 로컬 어드레스 변환 테이블과 데이터 전송 장치의 어드레스 변환 테이블 간의 동기화를 유지하기 위해, 국부적으로 저장된 어드레스 변환 테이블을 추가로 갱신할 수 있다. 방법은: 갱신될 필요가 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계를 포함하는 갱신 정보를 획득하는 단계; 및 갱신될 필요가 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 기존의 대응관계에 부가 또는 갱신하는 단계를 더 포함한다.
대응관계의 다른 구현 형태에 따르면, 갱신 정보에 있는, DMA 메모리 어드레스 구간과 호스트의 가상 어드레스 구간 사이의 대응관계의 특정한 표현 형태는 이에 대응해야 한다. 어드레스 변환 테이블의 특정한 구현 형태에 대해서는 제1 실시예에서 열거된 방식을 참조하면 된다. 갱신 정보는 데이터 전송 장치로부터 나올 수도 있고 네트워크 상의 다른 장치로부터 나올 수 있으며, 예를 들어, 관리 시스템이 위치하는 호스트 또는 이 호스트에 접속된 다른 호스트로부터 나올 수 있다.
본 발명의 이 실시예에서, 타깃 호스트의 DMA 어드레스 정보가 획득되고, DMA 작동 시작 요청은 타깃 호스트의 DMA 어드레스 정보에 따라 송신되므로, I/O 장치는 타깃 호스트에 대한 DMA 작동을 개시한다는 것을 알 수 있다. 복수의 호스트가 I/O 장치를 공유하는 환경에서, I/O 장치와 타깃 호스트 간의 데이터 전송을 관리할 수 있다. I/O 장치가 데이터 저장 장치로 사용될 때, 호스트와 타깃 호스트 간의 신속한 데이터 동기화가 I/O 장치를 사용해서 추가로 구현될 수 있으며 네트워크 전송 효율을 향상시킨다.
또한, 갱신 정보가 송신되거나 대응관계에 대한 갱신 정보가 획득되므로, 네트워크 토폴로지가 변하거나 호스트의 DMA 메모리 어드레스가 변할 때, 대응관계가 제시간에 갱신될 수 있으며, 갱신 정보는 다른 장치에 동기화된다.
도 10을 참조하면, 도 10은 본 발명의 실시예에 따른 데이터 전송 장치(1001)에 대한 개략적인 구조도이다. 이 실시예에서 제공하는 데이터 전송 장치는 전술한 실시예 중 제1, 제2 및 제3 실시예의 방법을 수행하도록 구성될 수 있다. 그러므로 이 실시예는 전술한 실시예를 참조하면 이해할 수 있다. 전술한 실시예에 이미 나타나 있고 동일하거나 유사한 의미를 가지는 이 실시예에서의 개념 또는 용어에 대해서는 이 실시예에서 다시 설명하지 않는다.
이 데이터 전송 장치는 도 2의 네트워크 토폴로지 구조에서의 데이터 전송 장치로서 사용된다. 이 장치는 호스트 및 I/O 장치에 개별적으로 접속된 독립적인 장치일 수도 있고 I/O 장치 상에 통합된 모듈일 수도 있으며 호스트에 통합되어 있고 이 장치가 네트워크 토폴로지에서 호스트 및 I/O 장치에 접속되는 한 다른 호스트 및 I/O 장치에 접속되는 모듈일 수도 있다. 이 장치는 PCIe 버스와 같은 고속 버스를 사용함으로써 호스트 및 I/O 장치에 접속될 수 있다. 이 장치에 접속된 호스트에 있어서, 가상 PCIe 장치가 에뮬레이트되고, 가상 PCIe 장치의 하드웨어 자원은 공유 PCIe I/O 장치에 대응한다.
데이터 전송 장치(1001)는 복수의 호스트 및 하나 이상의 입출력(I/O) 장치에 개별적으로 접속된다. 상기 복수의 호스트는 상기 하나 이상의 I/O 장치를 공유한다. 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스한다. 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑된다. 상기 장치는:
상기 I/O 장치에 의해 송신된 DMA 패킷을 획득하도록 구성되어 있는 수신 모듈(1002) - 상기 DMA 패킷은 DMA 가상 어드레스를 운반하고, 상기 DMA 가상 어드레스는 상기 글로벌 가상 어드레스 공간의 가상 어드레스임 - ;
DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하며 - 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스가 속하는 호스트임 - ; 상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하도록 구성되어 있는 변환 모듈(1003); 및
상기 수정된 DMA 패킷을 타깃 호스트로 전송하도록 구성되어 있는 송신 모듈(1004)
을 포함한다.
구현 방식에서, 변환 모듈이 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정할 때, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함한다.
DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는 어드레스 변환 테이블을 사용해서 저장될 수 있다. 어드레스 변환 테이블은 전술한 방법 실시예에서 설명된 어드레스 변환 테이블이고, 어드레스 변환 테이블은 데이터 전송 장치의 메모리 또는 레지스터에 저장되어, 변환 모듈(1003)에 의해 판독된 다음 질의받을 수 있다. 데이터 전송 장치가 네트워크 토폴로지에서 독립적인 노드가 아니면, 어드레스 변환 테이블은 데이터 번환 장치가 위치하는 호스트의 메모리 또는 레지스터 또는 I/O 장치에 저장될 수 있으며 변환 모듈(1003)에 의해 판독되고 질의받을 수 있다.
어드레스 변환 테이블은 수동으로 미리 설정될 수도 있고, 어드레스 변환 테이블은 네트워크 상의 다른 장치와의 동기화에 의해 획득된다. 다른 구현 방식에서, 수신 모듈은 복수의 호스트 중 하나 이상의 호스트의 등록 정보를 획득하도록 추가로 구성되어 있으며, 여기서 등록 정보는 대응하는 호스트의 식별 ID 및 DMA 메모리 어드레스를 포함하며, 상기 장치는 호스트의 DMA 메모리 어드레스에 따라 가상 어드레스를 호스트에 할당하도록 구성되어 있는 가상 어드레스 유지 모듈을 더 포함하며, 여기서 가상 어드레스는 글로벌 가상 어드레스 공간에 있으며, 가상 어드레스는 호스트의 DMA 메모리 어드레스에 일대일 방식으로 대응하며, 호스트 ID, 호스트의 DMA 메모리 어드레스 및 호스트의 가상 어드레스 간의 대응관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 부가 또는 갱신한다.
다른 구현 방식에서, 수신 모듈은 복수의 호스트 중 하나 이상의 호스트의 등록 정보를 획득하도록 추가로 구성되어 있으며, 등록 정보는 대응하는 호스트의 식별 ID 및 DMA 메모리 어드레스를 포함한다. 장치는 가상 어드레스 유지 모듈을 더 포함하며, 상기 가상 어드레스 유지 모듈은: 호스트의 하나 이상의 DMA 메모리 어드레스 구간에 따라 호스트에 하나 이상의 가상 어드레스 구간을 할당하며 - 상기 가상 어드레스 구간은 글로벌 가상 어드레스 공간에 있으며, 상기 하나 이상의 가상 어드레스 구간은 호스트의 하나 이상의 DMA 메모리 어드레스 구간에 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스에 일대일 방식으로 대응함 - , 호스트 ID, 호스트의 DMA 메모리 어드레스 구간 및 호스트의 가상 어드레스 구간 간의 대응관계를 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계에 부가 또는 갱신하도록 구성되어 있다.
호스트의 등록 정보는 호스트가 네트워크에 접속된 후 호스트에 의해 이 방법을 수행하는 장치에 송신될 수 있거나, 네트워크에 접속된 호스트의 등록 정보는 관리 시스템을 사용해서 이 방법을 수행하는 장치에 송신될 수 있다. 호스트의 메모리 어드레스 구간은 메모리 어드레스의 시작 어드레스 및 구간 크기를 사용해서 표시될 수 있거나 특정 연속 또는 불연속 어드레스 또는 어드레스 구간의 집합을 사용하여 표현될 수도 있다. 호스트에 가상 어드레스 구간을 할당하는 것은 호스트의 메모리 어드레스 구간의 크기에 따라 대응하는 크기의 가상 어드레스 구간을 할당하고, 가상 어드레스 구간을 글로벌 가상 어드레스 공간에 추가하거나 글로벌 가상 어드레스 공간에서의 호스트의 기존 가상 어드레스를 가상 어드레스 구간으로 대체하는 것이다. 가상 어드레스 구간이 할당될 때, 호스트의 가상 어드레스 구간과 메모리 어드레스 구간이 일대일 대응 관계에 있음을 보장해야 함을 알 수 있다.
실시예에서, 대응관계는 호스트에 동기해서 갱신될 수 있다. 송신 모듈은: DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계가 갱신된 후, 호스트에 갱신 정보를 송신하여, 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 간의 대응관계를 동기해서 갱신하도록 호스트에 명령하도록 추가로 구성되어 있다. 갱신 정보는 대응관계에서 변하는 부분 정보일 수 있으며, 그러한 갱신 정보는 갱신되지 않은 대응관계를 이미 저장하고 있는 장치의 동기 갱신에 사용될 수 있거나, 상기 갱신 정보는 완전한 어드레스 변환 테이블일 수 있다. 갱신 정보는 어드레스 변환 테이블이 갱신된 후 능동적으로 호스트에 송신될 수 있다. 대안으로, 호스트에 의해 송신된 질의 커맨드가 수신된 후, 어드레스 변환 테이블이 갱신되는지를 결정하고, 어드레스 변환 테이블이 갱신되면, 갱신 정보는 모든 호스트에 송신될 수도 있고 일부의 특정한 호스트에 송신될 수도 있으며 관리 시스템이 위치하는 호스트에 송신될 수도 있다.
도 11을 참조하면, 이 실시예의 특정한 구현 방식이 열거되어 있다. 데이터 전송 장치(1108)는 PCIe 브리지(1102)를 사용해서 I/O 장치에 의해 송신된 DMA 패킷(1101)을 수신하며, DMA 패킷(1101)의 DMA 어드레스는 가상 어드레스이다. PCIe 브리지는 DMA 변환 로직 모듈(1103)에 DMA 패킷(1101)을 전송한다. DMA 어드레스 변환 로직 모듈은 프로세싱 칩(1104) 및 레지스터(1105)를 포함한다. 프로세싱 칩(1104)은 레지스터(1105)에 저장되어 있는 어드레스 변환 테이블(1106)에 액세스하여 DMA 패킷(1101)의 DMA 가상 어드레스에 따라, 가상 어드레스에 대응하는 DMA 메모리 어드레스를 획득하고, DMA 패킷(1101)의 DMA 가상 어드레스를 가상 어드레스로부터 메모리 어드레스로 수정하여 수정된 DMA 패킷(1107)을 획득한다. DMA 어드레스 변환 로직 모듈(1103)은 수정된 DMA 패킷(1107)을 PCIeDMA 엔진(1108)에 전송하고, PCIeDMA 엔진(1108)은 타깃 호스트에 DMA 패킷(1101)을 송신하므로, I/O 장치는 타깃 호스트에 대해 DMA 작동을 개시한다. 이 구현 방식에서, PCIe 브리지 및 PCIeDMA 엔진은 전술한 실시예에서의 수신 모듈 및 송신 모듈을 구현할 수 있다.
실시예에서, 네트워크 전송 장치(1001)는 I/O 장치에 의해 송신된 DMA 패킷을 획득하고, DMA 패킷의 DMA 가상 어드레스를 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하고, 수정된 DMA 패킷을 타깃 호스트로 전송하며; I/O 장치는 DMA 가상 어드레스를 포함하는 DMA 패킷을 이용하여 복수의 호스트에 대해 DMA 작동을 수행할 수 있다는 것을 알 수 있다. DMA 가상 어드레스는 동일한 글로벌 가상 어드레스 공간에 있기 때문에, 종래기술과 비교하여 DMA 메모리 어드레스 간에 충돌이 발생하지 않는다. 복수의 호스트가 I/O 장치와 동시에 데이터 전송을 수행할 수 있으므로 호스트 간의 데이터 전송은 I/O 장치의 DMA 작동을 사용하여 구현될 수 있으며 호스트 사이에서 데이터 전송을 직접 수행할 필요가 없다. 호스트와 I/O 장치 간의 링크 버스는 높은 대역폭과 낮은 지연 기능을 가지고 있으며 호스트의 CPU는 개입할 필요가 없으므로 네트워크 전송의 적시성 및 효율성이 향상되고 네트워크 애플리케이션 시나리오가 확장된다.
또한, 본 발명의 이 실시예에서, 대응관계가 갱신된 후, 갱신 정보가 호스트에 송신되므로 호스트 내의 어드레스 변환 테이블 및 데이터 전송 장치에서의 대응관계는 동시에 갱신된다. 그러므로 호스트는 DMA 가상 어드레스와 대응하는 DMA 메모리 어드레스 간의 변환을 독립적으로 수행할 수 있으며, 이에 의해 본 발명의 애플리케이션 시나리오를 확장한다.
실시예에서, 네트워크 전송 장치는 호스트에 의해 송신된 질의 커맨드에 추가로 응답할 수 있다. 수신 모듈은: 호스트에 의해 송신된 질의 커맨드를 수신하고 질의 커맨드를 가상 어드레스 질의 모듈에 전송하도록 추가로 구성되어 있으며, 질의 커맨드는 질의받을 필요가 있는 타깃 호스트의 DMA 메모리 어드레스를 포함한다.
장치는 가상 어드레스 질의 모듈을 더 포함하며, 상기 가상 어드레스 질의 모듈은: 수신 모듈로부터 전송된 질의 커맨드를 획득하고, 타깃 호스트의 DMA 메모리 어드레스에 따라, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 질의하며, 글로벌 가상 어드레스 공간의 DMA 가상 어드레스를 송신 모듈에 전송하도록 구성되어 있다.
송신 모듈은: 가상 어드레스 질의 모듈에 의해 전송되는 글로벌 가상 어드레스 공간의 DMA 가상 어드레스를 획득하고 리턴 패킷을 호스트에 송신하도록 추가로 구성되어 있으며, 리턴 패킷은 글로벌 가상 어드레스 공간의 DMA 가상 어드레스를 포함한다.
글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 복수의 구현 방식이 있으며, 획득 방식은 전술한 DMA 가상 어드레스에 따라 대응하는 DMA 메모리 어드레스를 획득하는 것과 원리가 동일하다. 이에 대해서는 여기서 상세히 설명하지 않는다.
실시예에서, 네트워크 전송 장치는 호스트에 의해 송신된 DMA 작동 시작 요청을 추가로 수정하고 포워딩할 수 있다.
수신 모듈은 임의의 호스트에 의해 I/O 장치에 송신된 DMA 작동 개시 요구를 획득하도록 추가로 구성되어 있으며, 여기서 DMA 작동 개시 요구는 다른 호스트의 DMA 메모리 어드레스를 포함하며, DMA 작동 개시 요구는 다른 호스트에 대해 DMA 작동을 수행하도록 I/O 장치에 명령하는 데 사용된다.
변환 모듈은: DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 따라, 글로벌 가상 어드레스 공간에 있으면서 DMA 작동 개시 요구 내의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하고, DMA 작동 개시 요구 내의 DMA 메모리 어드레스를 결정된 DMA 가상 어드레스로 수정하도록 추가로 구성되어 있다.
송신 모듈은 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하도록 추가로 구성되어 있다.
마찬가지로, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하는 복수의 구현 방식이 있으며, 획득 방식은 전술한 DMA 가상 어드레스에 따라 대응하는 DMA 메모리 어드레스를 획득하는 것과 원리가 동일하다. 이에 대해서는 여기서 상세히 설명하지 않는다.
본 발명의 이 실시예에서, 데이터 전송 장치는 호스트에 의해 송신된 질의 커맨드를 수신하고, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하며, 리턴 패킷을 호스트에 송신하므로, 호스트는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득할 수 있으며, 그러므로 DMA 가상 어드레스를 포함하는 DMA 작동 시작 요청을 송신하여, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스에 대해 DMA 작동을 시작하도록 I/O 장치에 명령할 수 있다. 대안으로, 호스트에 의해 I/O 장치에 송신된 DMA 작동 시작 요청이 획득되며, DMA 작동 시작 요청 내의 타깃 호스트의 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간 내의 대응하는 DMA 가상 어드레스로 수정되며, 수정된 DMA 작동 시작 요청은 I/O 장치에 송신되므로, 호스트에 의해 송신된 DMA 작동 시작 요청은 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스에 대해 DMA 가상 어드레스를 시작하도록 I/O 장치에 명령하는 데 사용될 수 있다.
실시예에서, 네트워크 전송 장치는 DMA 패킷에 대한 허용 제어를 추가로 구현할 수 있다. 특정한 실시 방식에서, 변환 모듈은: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, DMA 패킷의 작동 유형 및 타깃 호스트의 허용 요건에 따라, 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하고, DMA 작동이 허용 요건을 충족하면, DMA 패킷의 DMA 가상 어드레스를 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있다.
타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하는 단계는 복수의 방식으로 구현될 수 있다. 예를 들어, 허용 요건이 충족하는지는 호스트 ID 및 대응하는 DMA 작동 유형을 포함하는 별도의 허용 테이블에 질의함으로써 결정될 수 있거나, 허용 요건이 충족하는지는 어드레스 변환 테이블에 질의함으로써 결정되며, 어드레스 변환 테이블은 전술한 어드레스 변환 테이블과 비교해서 하나 이상의 항목: 작동 유형을 가진다. 어드레스 변환 테이블 내의 엔트리가 DMA 가상 어드레스에 따라 찾아지면, DMA 가상 어드레스에 속하는 가상 어드레스 구간에 대응하는 목적지 어드레스 상에서 수행될 수 있는 DMA 작동의 유형이 획득될 수 있다.
다른 특정한 구현 방식에서, DMA 패킷은 허용 식별자를 더 포함한다. 변환 모듈은: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, DMA 패킷의 작동 유형, 허용 식별자 및 타깃 호스트의 허용 요건에 따라, 허용 식별자를 포함하는 DMA 패킷을 사용해서 타깃 호스트 상에서 수행될 DMA 작동이 허용 요건을 충족하는지를 결정하고, 허용 요건을 충족하면, DMA 패킷의 DMA 가상 어드레스를 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있다.
이 구현 방식에서, DMA 작동이 허용을 가지는 것으로 결정되면, 허용 식별자가 고려 인자로서 부가된다. 허용 식별자는 식별자가 위치하는 패킷의 DMA 작동 허용 관련 특징을 식별하기 위한 식별자이다. 허용 식별자는 일반적인 DMA 패킷에 이미 존재하는 정보일 수 있다. 예를 들어, 허용 식별자는 DMA 패킷을 송신하는 I/O 장치의 식별 ID일 수 있으며, 허용 식별자를 결정함으로써, 특정한 I/O 장치가 특정한 호스트 상에서 특정한 DMA 작동을 수행할 수 있는 것이 구현될 수 있다. 허용 식별자는 일반적인 DMA 패킷에 존재하지 않는 새로 추가된 정보일 수도 있다. 예를 들어, 허용 식별자는 DMA 작동 시에 전송될 데이터의 유형의 식별 ID일 수 있으므로 I/O 장치는 특정한 유형의 데이터를 DMA 방식으로 특정한 호스트에 전송할 수 있다. 대안으로, 허용 식별자는 DMA 작동을 개시하도록 I/O 치에 명령하는 호스트의 식별 ID일 수 있으며, 이에 의해 특정한 호스트가 특정한 호스트에 대한 DMA 작동을 수행하도록 허용되는 것이 구현된다. 허용 식별자는 위에서 열거된 하나의 단편 정보의 식별 ID일 수도 있고 여러 가지 유형의 정보의 조합의 식별 ID일 수도 있다. 예를 들어, 허용 식별자는 특정한 I/O 장치에 의해 송신된, 특별한 유형의 데이터를 전송하기 위한 DMA 패킷을 식별하는 데 사용될 수 있다.
이 실시예에서, DMA 패킷의 허용을 결정함으로써, I/O 장치가 호스트 상에서 DMA 작동을 수행할 때 허용 제어가 구현될 수 있다는 것을 알 수 있다. I/O 장치는 복수의 호스트에 접속되기 때문에, 허용 제어에 의해, 전체 네트워크 상에서 데이터 전송의 신뢰도 및 보안성이 향상될 수 있다. 또한, 허용 제어에 의해, 네트워크 사용 시나리오 역시 확장되어 더 복잡한 네트워크 전개 및 전송 방식을 구현할 수 있다.
본 발명은 데이터 전송 시스템의 실시예를 제공한다. 이 실시예에서 제공하는 데이터 전송 시스템은 전술한 제1, 제2, 제3 및 제4 방법 실시예를 실행하기 위한 장치를 포함한다. 그러므로 이 실시예는 전술한 실시예를 참조하면 이해할 수 있다. 전술한 실시예에 이미 나타나 있고 동일하거나 유사한 의미를 가지는 이 실시예에서의 개념 또는 용어에 대해서는 이 실시예에서 다시 설명하지 않는다.
이 실시예에서 시스템은 적어도 하나의 호스트를 포함한다. 컴퓨터 시스템은 복수의 호스트, 하나 이상의 입출력(I/O) 장치, 및 상기 복수의 호스트와 상기 하나 이상의 I/O 장치에 개별적으로 연결된 데이터 전송 장치를 포함한다.
데이터 전송 장치는 복수의 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑하도록 구성되어 있다. 데이터 전송 장치는: I/O 장치에 의해 전송되고 DMA 가상 어드레스를 운반하는 DMA 패킷을 획득하고 - 상기 DMA 가상 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스임 - ; DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하며 - 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 메모리 어드레스가 속하는 호스트임 - ; 상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하며; 그리고 상기 수정된 DMA 패킷을 타깃 호스트로 전송하도록 추가로 구성되어 있다.
구현 방식에서, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함한다. 상기 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 것은: 상기 DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라, 상기 가상 어드레스 구간에 대응하는 DMA 메모리 어드레스 구간을 결정하는 단계; 및 상기 DMA 메모리 어드레스 구간에 따라, 상기 DMA 메모리 어드레스 구간에 대응하는 호스트 및 상기 DMA 메모리 어드레스 구간 내에 있고 상기 DMA 가상 어드레스에 매핑되는 DMA 메모리 어드레스를 결정하는 단계를 포함한다.
이 시스템은 하나의 호스트가 다른 호스트에 대해 DMA 작동을 개시하도록 I/O 장치에 명령하는 것을 구현할 수 있다. 구현 방식에서, 복수의 호스트는 제1 호스트 및 제2 호스트를 포함한다. 제1 호스트는: 제2 호스트의 DMA 가상 어드레스를 획득하고, 제2 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 DMA 어드레스로 사용함으로써, I/O 장치에 DMA 작동 시작 요청을 송신하도록 구성되어 있으며, DMA 작동 시작 요청은 제2 호스트 상에서 DMA 작동을 수행하도록 I/O 장치에 명령하는 데 사용된다.
이 구현 방식에서, 제1 호스트는 제2 호스트에 의해 송신된 데이터 전송 요청 또는 관리 시스템이 위치하는 호스트에 의해 송신된 데이터 전송 요청을 수신함으로써 제2 호스트의 DMA 가상 어드레스를 획득할 수 있다. 대안으로, 제1 호스트는 어드레스 변환 테이블에 질의함으로써 제2 호스트의 가상 어드레스 구간을 획득하여 제2 호스트의 DMA 가상 어드레스를 획득할 수 있다. 제1 호스트는 I/O 장치에 DMA 작동 시작 요청을 송신한다. I/O 장치가 호스트에 직접적으로 접속되면, DMA 작동 시작 요청은 직접 송신될 수 있다. I/O 장치가 데이터 전송 장치를 사용해서 호스트에 간접적으로 접속되면, DMA 작동 시작 요청은 데이터 전송 장치에 의해 I/O 장치에 포워딩될 수 있다.
구현 방식에서, 복수의 호스트는 제1 호스트 및 제2 호스트를 포함한다. 제1 호스트는: 제2 호스트의 DMA 가상 어드레스를 획득하고, 제2 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 DMA 어드레스로 사용함으로써, I/O 장치에 DMA 작동 시작 요청을 송신하도록 구성되어 있으며, DMA 작동 시작 요청은 제2 호스트 상에서 DMA 작동을 수행하도록 I/O 장치에 명령하는 데 사용된다.
대안으로, 복수의 호스트는 제1 호스트 및 제2 호스트를 포함한다. 제1 호스트는: 제2 호스트의 DMA 메모리 어드레스를 획득하고, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 따라, 글로벌 가상 어드레스 공간에 있으면서 타깃 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하며, I/O 장치에 DMA 작동 시작 요청을 송신하도록 구성되어 있으며, DMA 작동 시작 요청은 DMA 가상 어드레스이다.
이 구현 방식에서, 마찬가지로, 제1 호스트는 제2 호스트에 의해 송신된 데이터 전송 요청 또는 관리 시스템이 위치하는 호스트에 의해 송신된 데이터 전송 요청을 수신함으로써 제2 호스트의 DMA 메모리 어드레스를 획득할 수 있다. 대안으로, 제1 호스트는 어드레스 변환 테이블에 질의함으로써 제2 호스트의 메모리 어드레스 구간을 획득하여, 제2 호스트의 DMA 메모리 어드레스를 획득할 수 있다. 제1 호스트는 데이터 전송 장치에 DMA 작동 시작 요청을 송신한다. DMA 작동 시작 요청을 획득한 후, 제1 방법 실시예에서의 방법을 참조하면, 데이터 전송 장치는 DMA 작동 시작 요청 내의 DMA 메모리 어드레스를 대응하는 DMA 가상 어드레스로 수정하고, 수정된 DMA 작동 시작 요청을 I/O 장치에 송신할 수 있다.
분산 시스템에서, 복수의 호스트는 I/O 장치를 공유하며, I/O 장치는 데이터 저장 장치로 사용될 수 있다. 호스트 사이에서 데이터가 교환되어야 할 때, 이 실시예에서의 데이터 전송 시스템을 사용함으로써 DMA 방식으로 데이터 교환이 신속하게 수행될 수 있다. 도 12를 참조하면, 본 발명의 이 실시예에서의 특정한 구현 방식이 제공된다.
분산 파일 시스템의 시나리오에서, 호스트 1은 분산 파일 시스템의 마스터 노드로서 서빙하고 파일 시스템 메타데이터 정보를 저장한다. 호스트 2는 메인 분산 파일 시스템의 일반 노드이다. 호스트 2는 로컬 파일 시스템 정보를 동기화하기 위해 호스트 1에 데이터 정보를 요청한다. 도 7에 도시된 바와 같이, 프로세스는 다음과 같다:
호스트 1 및 호스트 2는 I/O 장치를 공유하고, 호스트 2는 수신된 데이터에 대한 캐시 공간을 할당하며, DMA 어드레스 변환 테이블을 사용함으로써 글로벌 가상 어드레스 공간의 DMA 가상 어드레스 구간을 획득한다.
S1202: 호스트 2는 호스트 1에 대한 데이터를 획득하기 위한 요청을 개시하고, 호스트 2 역시 DMA 가상 어드레스 구간 내의 DMA 가상 어드레스를 호스트 1에 송신한다.
S1203: 호스트 1은 그 요청을 수신하고 확인하며, DMA 작동 시작 요청의 DMA 어드레스가 호스트 2의 가상 어드레스 구간 내의 DMA 가상 어드레스인 DMA 동작 시작 요청을 국부적으로 생성하고, DMA 작동 시작 요청을 I/O 장치에 송신한다.
S1204: DMA 작동 시작 요청을 수신한 후, I/O 장치는 DMA 작동을 시작하고, 즉 DMA 패킷을 송신하며, 여기서 패킷 내의 DMA 어드레스가 DMA 가상 어드레스이다.
S1205: 데이터 전송 장치는 DMA 작동 시작 요청을 획득하고, DMA 어드레스 변환 테이블에 따라, DMA 패킷의 목적지 호스트가 호스트 2인 것으로 결정하며, DMA 패킷 내의 DMA 어드레스를 호스트 2의 DMA 메모리 어드레스로 수정한다.
S1206: 데이터 전송 장치는 호스트 2에 DMA 패킷을 송신하고, 호스트 2의 메모리 어드레스는 DMA 패킷에 따라 액세스되며, I/O 장치는 호스트 2에 대한 DMA 작동을 개시한다.
구현 방식에서, 전술한 제3 방법 실시예를 참조하면, 이 실시예에서, 허용 제어는 DMA 패킷에 대해 추가로 구현될 수 있다. 데이터 전송 장치에 포함된 변환 모듈은: 데이터 전송 장치는: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, DMA 패킷의 허용 정보 및 타깃 호스트의 허용 요건에 따라, 상기 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하고, 상기 DMA 작동이 상기 허용 요건을 충족하면, 상기 DMA 패킷 내의 DMA 가상 어드레스를 상기 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있다. 대안으로, DMA 패킷은 허용 식별자를 더 포함한다. 데이터 전송 장치는: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, 상기 DMA 패킷의 작동 유형, 허용 식별자 및 상기 타깃 호스트의 허용 요건에 따라, 상기 허용 식별자를 포함하는 DMA 패킷을 사용함으로써 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하고, 상기 허용 요건을 충족하면, DMA 패킷 내의 DMA 가상 어드레스를 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있다.
이 실시예에서, 전체적인 인터랙션 프로세스 동안, 호스트 사이에서 단지 하나의 정보 교환만이 수행된다는 것을 알 수 있다. 타깃 DMA 어드레스 정보를 전달함으로써, 전송될 모든 데이터는 I/O 장치와 호스트 사이에서 DMA 방식으로 전송된다. 또한, I/O 장치와 호스트 사이의 버스는 고 대역폭 및 저 지연을 가지므로, 이 방식에서, 데이터 전송 성능은 상당히 향상된다. 네트워크 상의 호스트 사이에서의 데이터 복사는 생략되며, 또한 CPU는 DMA 작동에 간섭할 필요가 없기 때문에, 호스트 1 및 호스트 2의 CPU 성능은 전체적인 데이터 복사 프로세스 동안 해제될 수 있다.
또한, DMA 패킷에 대한 허용 제어에 의해, 허가된 DMA 패킷만이 포워딩되므로 허가된 DMA 작동만이 제2 호스트에 개시될 수 있다. 이 방법에서, DMA 작동의 보안성이 향상되며, DMA 작동은 필터링될 수 있으므로 네트워크 사용 시나리오가 확장되며 더 복잡한 네트워크 전개 및 전송 방식이 구현된다.
본 발명의 다른 데이터 전송 시스템의 실시예를 제공한다. 이 실시예에서 제공하는 데이터 전송 시스템은 전술한 제1, 제2, 제3, 및 제4 방법 실시예를 실행하기 위한 장치를 포함한다. 그러므로 이 실시예는 전술한 실시예를 참조하여 이해될 수 있다. 전술한 실시예에 이미 나타나 있고 동일하거나 유사한 의미를 가지는 이 실시예에서의 개념 또는 용어에 대해서는 이 실시예에서 상세히 설명하지 않는다.
이 실시예는 분산 협업 환경에 적용된다. 서로 다른 호스트는 공통 I/O 장치 상에서 핫스팟 데이터에 액세스해야 하며, 그 데이터는 복수의 호스트 사이에서 실시간으로 동기화되어야 한다. 적어도 하나의 호스트는 제1 호스트를 포함한다. 제1 호스트는: I/O 장치 상의 데이터가 갱신된 후, 적어도 하나의 DMA 기록 작동 커맨드를 I/O 장치에 송신하도록 구성되어 있으며, 여기서 DMA 작동 시작 요청을 사용하여 제1 호스트를 제외한 다른 호스트에 대한 DMA 기록 작동을 수행하도록 I/O 장치에 명령하여, 그 다른 호스트에 대해 데이터를 동기화한다.
복수의 호스트는 제1 호스트를 포함한다. 제1 호스트는: I/O 장치 상의 데이터가 갱신된 후, 적어도 하나의 DMA 기록 작동 커맨드를 I/O 장치에 송신하도록 구성되어 있으며, 여기서 DMA 작동 시작 요청을 사용하여 제1 호스트를 제외한 다른 호스트에 대한 DMA 기록 작동을 수행하도록 I/O 장치에 명령하여, 그 다른 호스트에 대해 데이터를 동기화한다.
I/O 장치의 데이터 갱신에 대해서는 전술한 실시예에서의 방법을 참조한다. I/O 장치는 DMA 판독 작동에 의해 I/O 장치에 대한 호스트의 DMA 메모리 어드레스에서의 데이터를 판독하고, 이에 의해 데이터 갱신을 구현한다. 특정한 구현 방식에서, I/O 장치가 데이터를 갱신할 때, 갱신하는 데 필요한 데이터 영역은 로킹되고 데이터 갱신 프로세스가 완료된 후 로킹해제되며, 이에 의해 갱신 프로세스 동안 다른 호스트가 그 데이터에 액세스하지 못하게 된다.
구현 방식에서, 데이터 전송 시스템은 관리 시스템을 포함한다. 관리 시스템은 제1 호스트에 위치하며, 호스트 사이에서 핫스팟 데이터의 동기화 관리를 담당하도록 구성되어 있다. 도 13을 참조하면, 열거될 수 있는 구현 방식에서, 제2 호스트는 I/O 장치의 핫스팟 데이터를 갱신하고, 갱신 후 핫스팟 데이터를 다른 호스트와 동기화한다. 데이터 동기화 프로세스는 이하의 단계를 포함한다.
S1301: 제2 호스트는 데이터 동기화 요청을 제1 호스트에 송신하며, 데이터 동기화 요청은 제2 호스트에 의해 갱신될 필요가 있는 데이터의 DMA 메모리 어드레스를 포함한다.
S1302: 제2 호스트에 의해 송신된 데이터 요청을 수신한 후, 제1 호스트 상의 관리 시스템은 I/O 장치 상에서 갱신되어야 하는 핫스팟 데이터 영역을 로킹하고, 로킹 상태를 다른 호스트에 대해 갱신하며, 이에 따라 다른 호스트는 로킹 핫스팟 데이터에 임시로 액세스할 수 없다. 한, 관리 시스템은 어드레스 변환 테이블에 질의함으로써, 제2 호스트의 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 획득하고, DMA 판독 작동 커맨드를 I/O 장치에 송신하며, 여기서 DMA 판독 작동 커맨드의 DMA 어드레스는 제2 호스트에 대해 DMA 판독 작동을 개시하도록 I/O 장치에 명령하기 위한 DMA 가상 어드레스이다.
S1303: I/O 장치는 DMA 판독 작동 커맨드를 수신하고, DMA 패킷을 송신하며, DMA 패킷의 작동 유형은 판독 작동이고, DMA 패킷의 DMA 어드레스는 제2 호스트의 DMA 가상 어드레스이다.
S1304: DMA 어드레스 변환 장치는 DMA 판독 작동 커맨드의 DMA 어드레스를 제2 호스트의 DMA 메모리 어드레스로 수정하고, 수정된 DMA 패킷을 제2 호스트에 송신하므로, I/O 장치는 제2 호스트의 DMA 메모리 어드레스에 대해 DMA 판독 작동을 개시하여, I/O 장치에 대해 핫스팟 데이터를 갱신한다.
S1305: DMA 판독 작동이 완료된 후, 제2 호스트는 제1 호스트 상의 관리 시스템에 통지하며, 관리 시스템은 I/O 상의 핫스팟 데이터를 로킹해제한다.
S1306: 제1 호스트 상의 관리 시스템은 적어도 하나의 DMA 기록 작동 커맨드를 I/O 장치에 송신하며, 여기서 DMA 작동 시작 요청을 사용하여 제1 호스트를 제외한 다른 호스트 상에서 DMA 기록 작동을 수행하도록 I/O 장치에 명령한다.
S1307: I/O 장치는 DMA 기록 작동 커맨드에 따라 DMA 패킷을 송신하며, 여기서 DMA 패킷의 DMA 어드레스는 다른 호스트의 DMA 가상 어드레스이고, 패킷의 작동 유형은 기록 작동이고, 패킷은 다른 호스트에 대해 DMA 기록 작동을 개시하는 데 사용된다.
S1308: 데이터 전송 장치는 DMA 패킷을 획득하고, DMA 패킷의 DMA 어드레스를 다른 호스트의 DMA 메모리 어드레스로 수정하고, 수정된 DMA 패킷을 다른 호스트에 개별적으로 송신하며, 이에 따라 I/O 장치는 다른 호스트에 DMA 기록 작동을 개별적으로 송신하여 갱신된 핫스팟 데이터를 다른 호스트에 기록한다.
구현 방식에서, 전술한 구현 방식과 마찬가지로, 허용 제어가 DMA 패킷 상에서도 수행될 수 있으며, 특정한 구현 방식은 다시 상세히 설명하지 않는다. DMA 패킷에 대한 허용 제어의 특정한 구현에서, 허용 식별자는 복수 유형의 정보를 나타낼 수 있기 때문에, 복수의 특정한 허용 제어 방식이 구현될 수 있다. 예를 들어, 특정한 핫스팟에 있어서, 특정한 I/O 장치만이 DMA 기록 및/또는 판독을 수행할 수 있거나, 특정한 호스트에 있어서, 특정한 유형의 데이터만이 DMA 방식으로 기록 및/또는 판독될 수 있거나, 특정한 호스트에 있어서, 특정한 호스트 또는 관리 시스템에 의해 개시된 DMA 작동만이 DMA 판독 및/또는 기록을 수행하는 데 사용될 수 있다.
이 실시예에서, 관리 시스템은 다른 호스트 상에서 캐시 데이터를 능동적으로 갱신할 수 있고, DMA에 의해, 데이터 프로세싱 성능은 종래기술의 네트워크 전송과 비교해서 향상된다는 것을 알 수 있다. 다른 호스트는 로컬 데이터를 수동적으로 갱신할 수 있기 때문에, 호스트가 간섭하지 않는 경우, 로컬 캐시 공간 내의 데이터는 실시간으로 갱신되며, 이에 의해 전체 네트워크의 데이터 적시성 및 신뢰도가 향상된다.
또한, DMA 패킷에 대한 허용 제어에 의해, DMA 작동을 스크리닝하여 전체 네트워크에서 네트워크 전송의 안정성과 보안을 향상시킬 수 있다. 또한, 허용 제어를 통해 네트워크 사용 시나리오가 확장되어 보다 복잡한 네트워크 전개 및 전송 방식을 구현할 수 있다.
도 14를 참조하면, 본 발명의 실시예는 데이터 전송 장치(1400)를 더 제공한다. 데이터 전송 장치는 복수의 호스트 및 하나 이사의 입출력(I/O) 장치에 개별적으로 접속된다. 복수의 호스트는 하나 이상의 I/O 장치를 공유한다. 하나 이상의 I/O 장치는 복수의 호스트의 각각의 DMA 메모리 어드레스에 직접 메모리 액세스(DMA) 방식으로 액세스한다. 장치의 구조는 프로세서(1401)를 포함한다. 프로세서는 장치를 지원하여 전술한 실시예에서의 데이터 전송 장치에 의해 실행되는 대응하는 방법을 실행하도록 구성되어 있다. 장치의 구조는 전술한 실시예에서의 데이터 전송 장치와 다른 장치 사이에서 교환되는 명령 또는 정보를 송신 또는 수신하도록 구성되어 있는 전송기(1402) 및 수신기(1403)를 더 포함한다. 장치는 스토리지를 더 포함할 수 있으며, 상기 스토리지는 프로세서와 결합되도록 구성되어 있으며, 스토리지는 필요한 프로그램 명령 및 데이터를 절감한다.
도 15를 참조하면, 본 발명의 실시예는 컴퓨터 장치(1500)를 추가로 제공한다. 컴퓨터 장치는 복수의 다른 컴퓨터 장치와 하나 이상의 I/O 장치를 공유하기 위해 데이터 전송 장치에 접속된다. 하나 이상의 I/O 장치는 복수의 호스트의 각각의 DMA 메모리 어드레스에 직접 메모리 액세스(DMA) 방식으로 액세스한다. 장치의 구조는 프로세서(1501)를 포함한다. 프로세서는 장치를 지원하여 전술한 실시예에서의 데이터 전송 장치에 의해 실행되는 대응하는 방법을 실행하도록 구성되어 있다. 장치의 구조는 전술한 실시예에서의 데이터 전송 장치와 다른 장치 사이에서 교환되는 명령 또는 정보를 송신 또는 수신하도록 구성되어 있는 전송기(1502) 및 수신기(1503)를 더 포함한다. 장치는 스토리지를 더 포함할 수 있으며, 상기 스토리지는 프로세서와 결합되도록 구성되어 있으며, 스토리지는 필요한 프로그램 명령 및 데이터를 절감한다.
당업자라면 전술한 방법 실시예에서의 단계 중 일부 또는 전부는 프로그램이 관련 하드웨어 명령을 내림으로써 실행될 수 있다는 것을 이해할 수 있을 것이다. 프로그램은 컴퓨터 판독 가능형 저장 매체에 저장될 수 있다. 저장 매체로는 ROM, RAM, 자기디스크, 또는 광디스크를 들 수 있다.
이상으로 본 발명의 실시예에서 제공하는 데이터 전송 방법과 장치 그리고 데이터 전송 시스템에 대해 상세히 설명하였다. 본 명세서에서는 특정한 예를 사용해서 본 발명의 구현 방식을 설명하였으며 실시예의 상세한 설명은 단지 본 발명의 방법 및 핵심 개념을 이해하는 데 도움을 주기 위해 의도된 것이다. 또한, 당업자라면 본 발명의 개념에 기초해서 특정한 구현 방식 및 응용 범위를 수정할 수 있다. 그러므로 본 명세서의 내용은 본 발명의 제한으로서 파악되어서는 안 된다.

Claims (25)

  1. 컴퓨터 시스템으로서,
    상기 컴퓨터 시스템은 복수의 호스트, 하나 이상의 입출력(I/O) 장치, 및 상기 복수의 호스트와 상기 하나 이상의 I/O 장치에 개별적으로 연결된 데이터 전송 장치를 포함하며,
    상기 데이터 전송 장치는 상기 복수의 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑하도록 구성되며;
    상기 데이터 전송 장치는: 상기 I/O 장치에 의해 전송되고 DMA 가상 어드레스를 운반하는 DMA 패킷을 획득하고 - 상기 DMA 가상 어드레스는 상기 글로벌 가상 어드레스 공간의 가상 어드레스임 - ; DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하며 - 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 메모리 어드레스가 속하는 호스트임 - ; 상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하며; 그리고 상기 수정된 DMA 패킷을 타깃 호스트로 전송하도록 추가로 구성되어 있는, 컴퓨터 시스템.
  2. 제1항에 있어서,
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정할 때, 상기 데이터 전송 장치는 구체적으로 다음을 포함하며:
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함하며,
    상기 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 것은: 상기 DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라, 상기 가상 어드레스 구간에 대응하는 DMA 메모리 어드레스 구간을 결정하는 단계; 및 상기 DMA 메모리 어드레스 구간에 따라, 상기 DMA 메모리 어드레스 구간에 대응하는 호스트 및 상기 DMA 메모리 어드레스 구간 내에 있고 상기 DMA 가상 어드레스에 매핑되는 DMA 메모리 어드레스를 결정하는 단계를 포함하는, 컴퓨터 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 복수의 호스트 중 임의의 호스트는 상기 타깃 호스트의 DMA 메모리 어드레스를 획득하고, 상기 데이터 전송 장치에 DMA 작동 시작 요청을 송신하도록 구성되어 있으며, 상기 DMA 작동 시작 요청은 상기 타깃 호스트의 DMA 메모리 어드레스를 운반하며,
    상기 데이터 전송 장치는 상기 DMA 작동 시작 요청을 수신하고, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하고, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스를 DMA 가상 어드레스로 수정하며, 상기 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하도록 구성되어 있으며,
    상기 I/O 장치는 상기 데이터 전송 장치에 의해 송신된 DMA 작동 시작 요청을 수신하도록 구성되어 있으며, 상기 DMA 작동 시작 커맨드는 상기 타깃 호스트에 대해 DMA 작동을 개시하도록 I/O 장치에 명령하는 데 사용되는, 컴퓨터 시스템.
  4. 제1항 또는 제2항에 있어서,
    상기 복수의 호스트 중 임의의 호스트는 상기 타깃 호스트의 DMA 가상 어드레스를 획득하고, 상기 I/O 장치에 DMA 작동 시작 요청을 송신하도록 구성되어 있으며, 상기 DMA 작동 시작 요청은 상기 타깃 호스트의 DMA 가상 어드레스를 운반하며,
    상기 I/O 장치는 상기 임의의 호스트에 의해 송신된 DMA 작동 시작 요청을 수신하도록 구성되어 있으며, 상기 DMA 작동 시작 커맨드는 상기 타깃 호스트에 대해 DMA 작동을 개시하도록 I/O 장치에 명령하는 데 사용되는, 컴퓨터 시스템.
  5. 제4항에 있어서,
    상기 타깃 호스트의 DMA 가상 어드레스를 획득하는 측면에서, 상기 임의의 호스트는 구체적으로:
    상기 임의의 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 따라 상기 타깃 호스트에 대응하는 DMA 가상 어드레스를 획득하도록 구성되어 있는, 컴퓨터 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 데이터 전송 장치는: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, 상기 DMA 패킷의 허용 정보 및 상기 타깃 호스트의 허용 요건에 따라, 상기 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하고, 상기 DMA 작동이 상기 허용 요건을 충족하면, 상기 DMA 패킷 내의 DMA 가상 어드레스를 상기 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있는, 컴퓨터 시스템.
  7. 제6항에 있어서,
    상기 DMA 패킷의 허용 정보는 다음의 정보: DMA 패킷의 유형, DMA 패킷의 허용 식별자, 또는 DMA 패킷을 송신하는 호스트의 식별자 중 적어도 하나를 포함하는, 컴퓨터 시스템.
  8. 데이터 전송 방법으로서,
    상기 데이터 전송 방법은 복수의 호스트가 하나 이상의 입출력(I/O) 장치를 공유하는 컴퓨터 시스템에 적용되며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되며;
    상기 I/O 장치에 의해 송신된 DMA 패킷을 획득하는 단계 - 상기 DMA 패킷은 DMA 가상 어드레스를 운반하고, 상기 DMA 가상 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스임 - ;
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 단계 - 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스가 속하는 호스트임 - ;
    상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하는 단계; 및
    상기 수정된 DMA 패킷을 타깃 호스트로 전송하는 단계
    를 포함하는 데이터 전송 방법.
  9. 제8항에 있어서,
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함하며,
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 단계는:
    상기 DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라, 상기 가상 어드레스 구간에 대응하는 DMA 메모리 어드레스 구간을 결정하는 단계; 및
    상기 DMA 메모리 어드레스 구간에 따라, 상기 DMA 메모리 어드레스 구간에 대응하는 호스트 및 상기 DMA 메모리 어드레스 구간 내에 있고 상기 DMA 가상 어드레스에 매핑되는 DMA 메모리 어드레스를 결정하는 단계
    를 포함하는, 데이터 전송 방법.
  10. 제8항 또는 제9항에 있어서,
    DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 단계 후에,
    상기 DMA 패킷의 허용 정보 및 상기 타깃 호스트의 허용 요건에 따라, 상기 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하고, 상기 DMA 작동이 상기 허용 요건을 충족하면, 상기 DMA 패킷 내의 DMA 가상 어드레스를 상기 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하는 단계
    를 더 포함하는 데이터 전송 방법.
  11. 제10항에 있어서,
    상기 DMA 패킷의 허용 정보는 다음의 정보: DMA 패킷의 유형, DMA 패킷의 허용 식별자, 또는 DMA 패킷을 송신하는 호스트의 식별자 중 적어도 하나를 포함하는, 데이터 전송 방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    DMA 작동 시작 요청을 수신하는 단계 - 상기 DMA 작동 시작 요청은 상기 타깃 호스트의 DMA 메모리 어드레스를 운반함 - ;
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하고, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스를 DMA 가상 어드레스로 수정하는 단계; 및
    상기 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하는 단계
    더 포함하는, 데이터 전송 방법.
  13. 데이터 전송 방법으로서,
    상기 데이터 전송 방법은 컴퓨터 시스템 내의 임의의 호스트에 적용되며, 상기 컴퓨터 시스템에서, 복수의 호스트가 데이터 전송 장치를 사용해서 하나 이상의 입출력(I/O) 장치를 공유하며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되며;
    상기 글로벌 가상 어드레스 공간의 DMA 가상 어드레스에 대한 DMA 작동을 수행하도록 I/O 장치에 명령하는 DMA 작동 시작 요청을 송신하는 단계
    를 포함하며,
    상기 DMA 가상 어드레스는 타깃 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간에 매핑함으로써 획득되는 DMA 가상 어드레스인, 데이터 전송 방법.
  14. 제13항에 있어서,
    DMA 작동 시작 요청을 송신하는 단계는 구체적으로:
    상기 타깃 호스트의 DMA 메모리 어드레스를 획득하는 단계; 및
    상기 DMA 작동 시작 요청을 상기 데이터 전송 장치에 송신하고 - 상기 DMA 작동 시작 요청은 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하도록 상기 데이터 전송 장치에 명령하기 위해, 상기 타깃 호스트의 DMA 메모리 어드레스를 운반함 - , 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스를 DMA 가상 어드레스로 수정하며, 상기 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하는 단계
    를 포함하는, 데이터 전송 방법.
  15. 제13항에 있어서,
    DMA 작동 시작 요청을 송신하는 단계는 구체적으로:
    상기 타깃 호스트의 DMA 가상 어드레스를 획득하는 단계; 및
    상기 DMA 작동 시작 요청을 I/O 장치에 송신하는 단계
    를 포함하며,
    상기 DMA 작동 시작 요청은 상기 타깃 호스트의 DMA 가상 어드레스를 운반하는, 데이터 전송 방법.
  16. 제15항에 있어서,
    상기 타깃 호스트의 DMA 가상 어드레스를 획득하는 측면에서, 상기 임의의 호스트는 구체적으로:
    상기 임의의 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 따라 상기 타깃 호스트에 대응하는 DMA 가상 어드레스를 획득하도록 구성되어 있는, 데이터 전송 방법.
  17. 데이터 전송 장치로서,
    상기 데이터 전송 장치는 복수의 호스트 및 하나 이상의 입출력(I/O) 장치에 개별적으로 접속되며, 상기 복수의 호스트는 상기 하나 이상의 I/O 장치를 공유하며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되며;
    상기 I/O 장치에 의해 송신된 DMA 패킷을 획득하도록 구성되어 있는 수신 모듈 - 상기 DMA 패킷은 DMA 가상 어드레스를 운반하고, 상기 DMA 가상 어드레스는 상기 글로벌 가상 어드레스 공간의 가상 어드레스임 - ;
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하며 - 상기 DMA 메모리 어드레스는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스이고, 상기 타깃 호스트는 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스가 속하는 호스트임 - ; 상기 DMA 패킷 내의 DMA 가상 어드레스를 DMA 가상 어드레스에 매핑된 DMA 메모리 어드레스로 수정하도록 구성되어 있는 변환 모듈; 및
    상기 수정된 DMA 패킷을 타깃 호스트로 전송하도록 구성되어 있는 송신 모듈
    을 포함하는 데이터 전송 장치.
  18. 제17항에 있어서,
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정할 때, 상기 변환 모듈은 구체적으로 다음과 같이 구성되며:
    DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계는: 복수의 호스트의 DMA 메모리 어드레스가 복수의 DMA 메모리 어드레스 구간을 형성하고, 각각의 호스트는 하나 이상의 DMA 메모리 어드레스 구간에 대응하고, 상기 글로벌 가상 어드레스 공간은 복수의 논-오버래핑 가상 어드레스 구간을 포함하고, 상기 복수의 가상 어드레스 구간은 복수의 DMA 메모리 어드레스 구간과 일대일 방식으로 대응하며, 가상 어드레스 구간 내의 가상 어드레스는 대응하는 DMA 메모리 어드레스 구간 내의 DMA 메모리 어드레스와 일대일 방식으로 대응하는 것을 포함하며,
    상기 DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정하는 것은: 상기 DMA 가상 어드레스가 속하는 가상 어드레스 구간에 따라, 상기 가상 어드레스 구간에 대응하는 DMA 메모리 어드레스 구간을 결정하는 단계; 및 상기 DMA 메모리 어드레스 구간에 따라, 상기 DMA 메모리 어드레스 구간에 대응하는 호스트 및 상기 DMA 메모리 어드레스 구간 내에 있고 상기 DMA 가상 어드레스에 매핑되는 DMA 메모리 어드레스를 결정하는 단계를 포함하는, 데이터 전송 장치.
  19. 제17항 또는 제18항에 있어서,
    상기 변환 모듈은: DMA 가상 어드레스에 대응하는 DMA 메모리 어드레스 및 타깃 호스트를 결정한 후, 상기 DMA 패킷의 허용 정보 및 상기 타깃 호스트의 허용 요건에 따라, 상기 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하고, 상기 DMA 작동이 상기 허용 요건을 충족하면, 상기 DMA 패킷 내의 DMA 가상 어드레스를 상기 DMA 작동의 타깃 호스트의 DMA 메모리 어드레스로 수정하도록 추가로 구성되어 있는, 데이터 전송 장치.
  20. 제19항에 있어서,
    상기 DMA 패킷의 허용 정보 및 상기 타깃 호스트의 허용 요건에 따라, 상기 타깃 호스트 상에서 수행될 DMA 작동이 상기 허용 요건을 충족하는지를 결정하는 측면에서, 상기 변환 모듈은 구체적으로 다음과 같이 구성되며: 상기 DMA 패킷의 허용 정보는 다음의 정보: DMA 패킷의 유형, DMA 패킷의 허용 식별자, 또는 DMA 패킷을 송신하는 호스트의 식별자 중 적어도 하나를 포함하는, 데이터 전송 장치.
  21. 제19항 또는 제20항에 있어서,
    상기 수신 모듈은 DMA 작동 시작 요청을 수신하도록 추가로 구성되어 있으며, 상기 DMA 작동 시작 요청은 상기 타깃 호스트의 DMA 메모리 어드레스를 운반하고, 상기 DMA 작동 시작 요청은 상기 타깃 호스트 상에서 DMA 작동을 수행하도록 I/O 장치에 명령하는 데 사용되며,
    상기 변환 모듈은 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하고, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스를 DMA 가상 어드레스로 수정하도록 추가로 구성되어 있으며,
    상기 송신 모듈은 상기 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하도록 추가로 구성되어 있는, 데이터 전송 장치.
  22. 데이터 전송 장치로서,
    상기 데이터 전송 장치는 데이터 전송 장치를 사용해서 하나 이상의 입출력(I/O) 장치를 공유하며, 상기 하나 이상의 I/O 장치는 직접 메모리 액세스(direct memory access, DMA) 방식으로 복수의 호스트의 각각의 DMA 메모리 어드레스에 액세스하며, 상기 DMA 메모리 어드레스는 글로벌 가상 어드레스 공간의 가상 어드레스에 일대일 방식으로 매핑되며;
    DMA 작동 시작 요청을 생성하도록 구성되어 있는 DMA 작동 시작 요청 생성 모듈 - 상기 DMA 작동 시작 요청은 상기 글로벌 가상 어드레스 공간의 DMA 가상 어드레스에 대한 DMA 작동을 수행하도록 I/O 장치에 명령하는 데 사용되며, 상기 DMA 가상 어드레스는 타깃 호스트의 DMA 메모리 어드레스를 글로벌 가상 어드레스 공간에 매핑함으로써 획득되는 DMA 가상 어드레스임 - ; 및
    상기 DMA 작동 시작 요청을 송신하도록 구성되어 있는 정보 송신 모듈
    을 포함하는 데이터 전송 장치.
  23. 제22항에 있어서,
    상기 DMA 작동 시작 요청을 생성할 때, 상기 DMA 작동 시작 요청 생성 모듈은 구체적으로:
    상기 타깃 호스트의 DMA 메모리 어드레스를 획득하고, 상기 DMA 작동 시작 요청을 상기 데이터 전송 장치에 송신하며 - 상기 DMA 작동 시작 요청은 DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응 관계에 따라, 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스에 대응하는 DMA 가상 어드레스를 결정하도록 상기 데이터 전송 장치에 명령하기 위해, 상기 타깃 호스트의 DMA 메모리 어드레스를 운반함 - , 그리고 상기 DMA 작동 시작 요청에 운반되는 DMA 메모리 어드레스를 DMA 가상 어드레스로 수정하도록 구성되어 있으며,
    상기 정보 송신 모듈은 구체적으로 상기 수정된 DMA 작동 시작 요청을 I/O 장치에 송신하도록 구성되어 있는, 데이터 전송 장치.
  24. 제22항에 있어서,
    상기 DMA 작동 시작 요청을 생성할 때, 상기 DMA 작동 시작 요청 생성 모듈은 구체적으로:
    상기 타깃 호스트의 DMA 가상 어드레스를 획득하고 상기 DMA 가상 어드레스를 운반하는 DMA 작동 시작 요청을 생성하도록 구성되어 있으며,
    상기 정보 송신 모듈은 구체적으로 상기 수정된 DMA 작동 시작 요청을 상기 데이터 전송 장치에 송신하도록 구성되어 있는, 데이터 전송 장치.
  25. 제24항에 있어서,
    상기 DMA 작동 시작 요청을 생성할 때, 상기 DMA 작동 시작 요청 생성 모듈은 구체적으로:
    상기 임의의 호스트에 저장되어 있는, DMA 가상 어드레스, DMA 메모리 어드레스 및 호스트 사이의 대응관계에 따라 상기 타깃 호스트에 대응하는 DMA 가상 어드레스를 획득하도록 구성되어 있는, 데이터 전송 장치.
KR1020187012924A 2015-10-21 2016-10-14 데이터 전송 방법, 장치 및 시스템 KR102209452B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510694821.4A CN105404597B (zh) 2015-10-21 2015-10-21 数据传输的方法、设备及系统
CN201510694821.4 2015-10-21
PCT/CN2016/102163 WO2017067420A1 (zh) 2015-10-21 2016-10-14 数据传输的方法、设备及系统

Publications (2)

Publication Number Publication Date
KR20180063292A true KR20180063292A (ko) 2018-06-11
KR102209452B1 KR102209452B1 (ko) 2021-01-28

Family

ID=55470093

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187012924A KR102209452B1 (ko) 2015-10-21 2016-10-14 데이터 전송 방법, 장치 및 시스템

Country Status (5)

Country Link
US (1) US20180239726A1 (ko)
EP (1) EP3361387B1 (ko)
KR (1) KR102209452B1 (ko)
CN (1) CN105404597B (ko)
WO (1) WO2017067420A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200141948A (ko) * 2019-06-11 2020-12-21 삼성전자주식회사 스토리지내에서의 연산을 위한 효율적인 데이터 이동 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936490B2 (en) * 2017-06-27 2021-03-02 Intel Corporation System and method for per-agent control and quality of service of shared resources in chip multiprocessor platforms
CN108021518B (zh) * 2017-11-17 2019-11-29 华为技术有限公司 一种数据交互方法和计算设备
EP3748926B1 (en) 2018-02-24 2024-05-15 Huawei Technologies Co., Ltd. Communication method and apparatus
US11874782B1 (en) * 2018-07-20 2024-01-16 Robert Gezelter Fast mass storage access for digital computers
US11294825B2 (en) * 2019-04-17 2022-04-05 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210001546A (ko) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법
KR20200139913A (ko) 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
KR20200122086A (ko) 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치
CN110515860A (zh) * 2019-08-30 2019-11-29 苏州浪潮智能科技有限公司 一种内存中存储数据的地址标识方法、系统及装置
CN112540941A (zh) 2019-09-21 2021-03-23 华为技术有限公司 一种数据转发芯片及服务器
WO2021239230A1 (en) * 2020-05-28 2021-12-02 Huawei Technologies Co., Ltd. Method and system for direct memory access
CN111988394B (zh) * 2020-08-18 2022-11-01 北京金山云网络技术有限公司 一种虚拟化环境中优化p2p数据传输的方法、装置及设备
US20210105207A1 (en) * 2020-11-18 2021-04-08 Intel Corporation Direct memory access (dma) engine with network interface capabilities
CN112765053B (zh) * 2021-01-04 2022-11-29 潍柴动力股份有限公司 数据处理方法及装置
CN115269174A (zh) * 2021-04-30 2022-11-01 华为技术有限公司 一种数据传输方法、数据处理方法及相关产品
CN114780466B (zh) * 2022-06-24 2022-09-02 沐曦科技(北京)有限公司 一种基于dma的数据复制延时的优化方法
CN116414568B (zh) * 2023-06-09 2023-10-31 阿里巴巴(中国)有限公司 针对虚拟无线接入网络的内存调整方法、设备及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032190A (ko) * 1996-10-31 1998-07-25 포맨제프리엘 다이나믹 롬의 로드-온-라이트 실행 방법 및 시스템
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
KR20070068796A (ko) * 2005-12-27 2007-07-02 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
KR101002978B1 (ko) * 2005-12-09 2010-12-22 샌디스크 아이엘 엘티디 플래시 메모리 관리 시스템 및 방법
US20150277763A1 (en) * 2014-03-28 2015-10-01 Fortinet, Inc. Virtualization in a multi-host environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060085569A1 (en) * 2004-10-14 2006-04-20 International Business Machines Corporation Method for minimizing the translation overhead for large I/O transfers
US7707385B2 (en) * 2004-12-14 2010-04-27 Sony Computer Entertainment Inc. Methods and apparatus for address translation from an external device to a memory of a processor
CN100342360C (zh) * 2004-12-31 2007-10-10 北京中星微电子有限公司 一种直接存储器存取装置及方法
US7707383B2 (en) * 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
CN102521054B (zh) * 2011-12-15 2013-07-17 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
CN103946828B (zh) * 2013-10-29 2017-02-22 华为技术有限公司 数据处理系统和数据处理的方法
CN103559075B (zh) * 2013-10-30 2016-10-05 华为技术有限公司 一种数据传输方法、装置和系统及内存装置
US20160154756A1 (en) * 2014-03-31 2016-06-02 Avago Technologies General Ip (Singapore) Pte. Ltd Unordered multi-path routing in a pcie express fabric environment
CN104199740B (zh) * 2014-08-28 2019-03-01 浪潮(北京)电子信息产业有限公司 共享系统地址空间的非紧耦合多节点多处理器系统和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032190A (ko) * 1996-10-31 1998-07-25 포맨제프리엘 다이나믹 롬의 로드-온-라이트 실행 방법 및 시스템
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
KR101002978B1 (ko) * 2005-12-09 2010-12-22 샌디스크 아이엘 엘티디 플래시 메모리 관리 시스템 및 방법
KR20070068796A (ko) * 2005-12-27 2007-07-02 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US20150277763A1 (en) * 2014-03-28 2015-10-01 Fortinet, Inc. Virtualization in a multi-host environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200141948A (ko) * 2019-06-11 2020-12-21 삼성전자주식회사 스토리지내에서의 연산을 위한 효율적인 데이터 이동 방법

Also Published As

Publication number Publication date
EP3361387A4 (en) 2018-10-17
US20180239726A1 (en) 2018-08-23
EP3361387B1 (en) 2023-05-03
CN105404597B (zh) 2018-10-12
EP3361387A1 (en) 2018-08-15
WO2017067420A1 (zh) 2017-04-27
KR102209452B1 (ko) 2021-01-28
CN105404597A (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
KR102209452B1 (ko) 데이터 전송 방법, 장치 및 시스템
WO2018045820A1 (zh) 一种文件同步的方法、设备及系统
US9246709B2 (en) Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method
WO2017113960A1 (zh) 一种数据处理方法以及NVMe存储器
KR102193012B1 (ko) 분산 처리 시스템 및 이의 동작 방법
JP6880402B2 (ja) メモリアクセス制御装置及びその制御方法
WO2017113351A1 (zh) 写数据方法和装置以及系统
US9892129B2 (en) Distributed file system and operating method of the same
JPH0816536A (ja) マルチプロセッサシステム
JP6724252B2 (ja) データ処理方法、記憶システムおよび切り換え装置
US10305825B2 (en) Bus control device, relay device, and bus system
JP2008234568A (ja) ファイルレベルの仮想化を行う中間装置
JP6933535B2 (ja) 通信装置、通信方法及びプログラム
WO2016065611A1 (zh) 访问文件的方法、系统和主机
CN110569302A (zh) 一种基于lucene的分布式集群的物理隔离的方法及装置
JP2022505720A (ja) コンテナ化されたリレーショナルデータベースのi/o消費を効果的に減少させる方法
US20160234311A1 (en) Memory access method, device, and system
EP3086512B1 (en) Implementation method and apparatus for vlan to access vf network and fcf
US20180024865A1 (en) Parallel processing apparatus and node-to-node communication method
WO2022057481A1 (zh) 一种存储器资源分配方法和网络设备
WO2015067004A1 (zh) 一种并发访问请求的处理方法及装置
US20150333928A1 (en) Switch device and control method of switch device
JP2006164218A (ja) ストレージシステム及びそのキャッシュ制御方法
US20160306754A1 (en) Storage system
US20190286348A1 (en) Storage device, control method, and control program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant