KR20150070046A - 데이터 처리 시스템 및 데이터 처리 방법 - Google Patents

데이터 처리 시스템 및 데이터 처리 방법 Download PDF

Info

Publication number
KR20150070046A
KR20150070046A KR1020147032585A KR20147032585A KR20150070046A KR 20150070046 A KR20150070046 A KR 20150070046A KR 1020147032585 A KR1020147032585 A KR 1020147032585A KR 20147032585 A KR20147032585 A KR 20147032585A KR 20150070046 A KR20150070046 A KR 20150070046A
Authority
KR
South Korea
Prior art keywords
address
data
processing system
data processing
pcie
Prior art date
Application number
KR1020147032585A
Other languages
English (en)
Other versions
KR101670342B1 (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 KR20150070046A publication Critical patent/KR20150070046A/ko
Application granted granted Critical
Publication of KR101670342B1 publication Critical patent/KR101670342B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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

Abstract

본 발명의 실시예는 데이터 처리 시스템 및 데이터 처리 방법을 제공한다. PCIe 저장 장치에 저장되어 있는 데이터를 MMIO 어드레스로부터 직접적으로 획득할 수 있는, 데이터 요구의 MMIO 어드레스를 획득하며, 이 MMIO 어드레스에 따라, 네트워크 어댑터는 데이터 처리 시스템의 PCIe 저장 장치로부터 데이터를 직접 판독하고, 이 데이터를 제2 데이터 처리 시스템에 전송하거나, 제2 데이터 처리 시스템으로부터 수신된 데이터를 PCIe 저장 장치에 직접 기록할 수 있다. 그러므로 처리 시스템은, 네트워크를 통해 통신하는 2개의 데이터 처리 시스템 간의 데이터 전송을 수행할 때, 메모리를 사용하지 않고서도 PCIe 저장 장치로부터 네트워크 어댑터로 데이터를 직접 전송하는 것을 수행할 수 있다. 2개의 데이터 처리 시스템 간에 데이터를 전송하는 동안, 메모리 및 CPU와 같은 자원의 사용 비율이 감소하고 데이터 전송 효율성이 향상된다.

Description

데이터 처리 시스템 및 데이터 처리 방법{DATA PROCESSING SYSTEM AND DATA PROCESSING METHOD}
본 발명은 정보 기술 분야에 관한 것이며, 특히 데이터 처리 시스템 간의 데이터 전송을 위한 장치, 방법, 및 시스템에 관한 것이다.
대용량 데이터의 경향으로, 다중 복사 방식을 통상적으로 사용하여 데이터 신뢰성을 향상시킨다. 그렇지만, 노드 간의 많은 데이터 이동 동작은 통상적으로 다중 복사 방식이 사용될 때 일어난다.
원격 직접 메모리 액세스(Romote Direct Memory Access: RDMA) 기술은 네트워크상의 2개의 노드 사이에서 데이터 판독을 실행하는 기술이다. RDMA는 데이터를 네트워크를 통해 컴퓨터의 메모리에 직접적으로 전송하고, 운영체제에 어떠한 영향을 주지 않으면서 이 데이터를 로컬 노드로부터 원격 노드의 메모리로 고속 이동시킨다.
네트워크상에서 전송되는 RDMA 정보는 목적지 가상 어드레스, 메모리 키 및 데이터 그 자체를 포함한다. 요구 완료는 사용자 공간에서 완전하게 처리될 수 있거나(배치는 폴링 사용자 수준(polling user level)을 사용해서 완료된다), 애플리케이션이 휴면인 경우에는 요구가 완료될 때까지 커널 메모리를 사용해서 처리된다. RDMA 동작을 수행함으로써, 애플리케이션은 원격 애플리케이션의 메모리로부터 데이터를 판독하거나 데이터를 메모리에 기록할 수 있다. 목표 호스트의 네트워크 어댑터는 메모리 키를 결정하고, 데이터를 애플리케이션 캐시에 직접적으로 기록한다.
RDMA에서는 서로 통신하는 2개의 서버 간의 데이터 전송이 메모리를 사용함으로써 전송된 데이터에 대해 수행되어야만 한다. 메모리가 사용되지 않으면, 데이터 전송이 수행될 수 없다. 그 결과, 데이터 전송의 지연 및 메모리의 사용 비율이 상대적으로 높다.
본 발명의 실시예는 데이터 처리 시스템 및 데이터 처리 방법을 제공하여, 2개의 데이터 처리 시스템 간의 데이터 전송에 대한 효율성 및 장치 활용성을 향상시킨다.
본 발명의 실시예는 데이터 처리 시스템을 제공하며, 상기 데이터 처리 시스템은, 중앙처리장치(CPU), 메모리, 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기, 네트워크 어댑터, 및 적어도 하나의 PCIe 저장 장치를 포함하며,
상기 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있는 관리 유닛
을 더 포함하며,
상기 제1 저장 어드레스는 메모리 맵핑 입력/출력(MMIO) 어드레스이며, 상기 네트워크 어댑터는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치로부터 데이터를 직접 판독하고, 상기 데이터를 제2 데이터 처리 시스템에 전송하거나, 상기 제2 데이터 처리 시스템으로부터 수신되는 데이터를 상기 PCIe 저장 장치에 직접 기록하며, 상기 제2 데이터 처리 시스템은 네트워크를 통해 상기 제1 데이터 처리 시스템과 통신하는 데이터 처리 시스템이다.
선택적으로, 상기 PCIe 저장 장치는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 데이터 요구에 의해 요구된 데이터의 제2 저장 어드레스를 획득하도록 구성되어 있는 어드레스 번역 유닛을 포함한다.
선택적으로, 상기 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서(linear ordering)가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
선택적으로, 상기 어드레스 번역 유닛은 제1 BAR 어드레스 레지스터를 구성하도록 추가로 구성되어 있고, 상기 제1 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 선형의 연속적인 저장 어드레스이다.
선택적으로, 상기 어드레스 번역 유닛은 제2 BAR 어드레스 레지스터를 구성하도록 추가로 구성되어 있고, 상기 제2 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 상기 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 비선형의 연속적인 저장 어드레스이며, 상기 제2 저장 어드레스의 가상 어드레스는 상기 제2 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스이다.
선택적으로, 상기 CPU는 각각의 PCIe 저장 장치에 고유 식별자를 할당하며, 상기 고유 식별자는 각각의 PCIe 저장 장치를 식별하는 데 사용된다.
선택적으로, 상기 제1 어드레스 정보는 상기 고유 식별자 및 상기 PCIe 저장 장치의 논리 블록 어드레스(logical block address: LBA)를 포함한다.
선택적으로, 상기 관리 유닛은 상기 고유 식별자와 상기 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하도록 추가로 구성되어 있다.
상기 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 상기 고유 식별자는 상기 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리(hashing processing)가 수행된 후 획득되는 식별자이다.
선택적으로, 상기 관리 유닛은 베이스 어드레스 획득 유닛 및 저장 어드레스 획득 유닛을 포함하며,
상기 베이스 어드레스 획득 유닛은, 상기 데이터 처리 시스템이 상기 네트워크를 통해 상기 데이터 처리 시스템과 통신하는 상기 제2 데이터 처리 시스템의 제1 데이터 요구를 수신하면, 상기 제1 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하도록 구성되어 있으며,
상기 저장 어드레스 획득 유닛은, 상기 BAR 내의 베이스 어드레스 및 상기 제1 데이터 요구에 수반되어 있는 LBA 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있으며, 상기 제1 저장 어드레스는 MMIO 어드레스이다.
선택적으로, 상기 CPU는 상기 획득된 제1 저장 어드레스를 상기 네트워크 어댑터에 등록한다.
선택적으로, 상기 데이터 처리 시스템은 송신 유닛을 더 포함하며, 상기 송신 유닛은 상기 관리 유닛에 의해 획득된 제1 저장 어드레스를 상기 제2 데이터 처리 시스템에 송신하도록 구성되어 있다.
선택적으로, 상기 PCIe 제어기는, 상기 네트워크 어댑터에 의해 송신되고 상기 제1 저장 어드레스를 수반하는 데이터 요구를 획득하며, 상기 어드레스 번역 유닛은 상기 제2 저장 어드레스의 데이터를 획득하고, 상기 획득된 데이터를 상기 네트워크 어댑터에 반환하거나, 상기 네트워크 어댑터에 의해 송신된 데이터를 상기 제2 저장 어드레스에 기록한다.
선택적으로, 상기 관리 유닛은 글로벌 베이스 어드레스 획득 유닛 및 글로벌 저장 어드레스 획득 유닛을 더 포함하며,
상기 글로벌 베이스 어드레스 획득 유닛은, 상기 데이터 처리 시스템이 제2 데이터 요구를 수신하면, 상기 제2 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 제2 데이터 처리 시스템의 BAR 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하도록 구성되어 있으며, 상기 제2 데이터 요구는 상기 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 상기 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구이며, 그리고
상기 글로벌 저장 어드레스 획득 유닛은, 상기 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 상기 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하도록 구성되어 있다.
선택적으로, 상기 제2 데이터 처리 시스템의 PCIe 제어기 내의 데이터 변환 유닛은, 상기 제2 데이터 처리 시스템 내의 상기 데이터 처리 시스템에 의해 송신되는 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
본 발명의 실시예는 데이터 처리 방법을 제공하며, 상기 방법은, 중앙처리장치(CPU), 메모리, 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기, 네트워크 어댑터, 및 적어도 하나의 PCIe 저장 장치를 포함하는 데이터 처리 시스템에 적용되며, 상기 방법은:
상기 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보를 획득하는 단계;
상기 제1 어드레스 정보에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계 - 상기 제1 저장 어드레스는 메모리 맵핑 입력/출력(MMIO) 어드레스임 -; 및
상기 네트워크 어댑터가, 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치로부터 데이터를 직접 판독하고, 상기 데이터를 제2 데이터 처리 시스템에 전송하거나, 상기 제2 데이터 처리 시스템으로부터 수신되는 데이터를 상기 PCIe 저장 장치에 직접 기록하는 단계
를 포함하며,
상기 제2 데이터 처리 시스템은 네트워크를 통해 상기 제1 데이터 처리 시스템과 통신하는 데이터 처리 시스템이다.
선택적으로, 상기 PCIe 저장 장치는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 데이터 요구에 의해 요구된 데이터의 제2 저장 어드레스를 획득한다.
선택적으로, 상기 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득된다.
선택적으로, 상기 방법은:
상기 PCIe 제어기가 제1 BAR 어드레스 레지스터를 구성하는 단계
를 더 포함하며,
상기 제1 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 선형의 연속적인 저장 어드레스이다.
선택적으로, 상기 방법은:
상기 PCIe 제어기가 제2 BAR 어드레스 레지스터를 구성하는 단계
를 더 포함하며,
상기 제2 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 상기 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 비선형의 연속적인 저장 어드레스이며, 상기 제2 저장 어드레스의 가상 어드레스는 상기 제2 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스이다.
선택적으로, 상기 CPU는 각각의 PCIe 저장 장치에 고유 식별자를 할당하며, 상기 고유 식별자는 각각의 PCIe 저장 장치를 식별하는 데 사용된다.
선택적으로, 상기 제1 어드레스 정보는 상기 고유 식별자 및 상기 PCIe 저장 장치의 논리 블록 어드레스(LBA)를 포함한다.
선택적으로, 상기 방법은:
상기 고유 식별자와 상기 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하는 단계
를 더 포함한다.
선택적으로, 상기 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 상기 고유 식별자는 상기 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리가 수행된 후 획득되는 식별자이다.
선택적으로, 상기 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계는,
상기 제1 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하는 단계; 및
상기 BAR 내의 베이스 어드레스 및 상기 제1 데이터 요구에 수반되어 있는 LBA 어드레스에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계
를 포함하며, 상기 제1 저장 어드레스는 MMIO 어드레스이다.
선택적으로, 상기 CPU는 상기 획득된 제1 저장 어드레스를 상기 네트워크 어댑터에 등록한다.
선택적으로, 상기 방법은:
상기 데이터 처리 시스템이, 상기 획득된 제1 저장 어드레스를 상기 제2 데이터 처리 시스템에 송신하는 단계
를 더 포함한다.
선택적으로, 상기 PCIe 제어기는, 상기 네트워크 어댑터에 의해 송신되고 상기 제1 저장 어드레스를 수반하는 데이터 요구를 획득하며, 상기 제2 저장 어드레스의 데이터를 획득하고, 상기 획득된 데이터를 상기 네트워크 어댑터에 반환하거나, 상기 네트워크 어댑터에 의해 송신된 데이터를 상기 제2 저장 어드레스에 기록한다.
선택적으로, 상기 방법은:
상기 데이터 처리 시스템이 제2 데이터 요구를 수신하면, 상기 제2 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 제2 데이터 처리 시스템의 BAR 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하는 단계 - 상기 제2 데이터 요구는 상기 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 상기 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구임 - ; 및
상기 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 상기 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하는 단계
를 더 포함한다.
선택적으로, 상기 제2 데이터 처리 시스템의 PCIe 제어기는, 상기 제2 데이터 처리 시스템 내의 상기 데이터 처리 시스템에 의해 송신되는 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
본 발명의 실시예에서 제공하는 데이터 처리 시스템 및 데이터 처리 방법에서는, PCIe 저장 장치에 저장되어 있는 데이터를 MMIO 어드레스로부터 직접적으로 획득할 수 있는, 데이터 요구의 MMIO 어드레스를 획득하며, 이 MMIO 어드레스에 따라, 네트워크 어댑터는 데이터 처리 시스템의 PCIe 저장 장치로부터 데이터를 직접 판독하고, 이 데이터를 제2 데이터 처리 시스템에 전송하거나, 제2 데이터 처리 시스템으로부터 수신된 데이터를 PCIe 저장 장치에 직접 기록할 수 있다. 그러므로 처리 시스템은, 네트워크를 통해 통신하는 2개의 데이터 처리 시스템 간의 데이터 전송을 수행할 때, 메모리를 사용하지 않고서도 PCIe 저장 장치로부터 네트워크 어댑터로 데이터를 직접 전송하는 것을 수행할 수 있다. 2개의 데이터 처리 시스템 간에 데이터를 전송하는 동안, 메모리 및 CPU와 같은 자원의 사용 비율이 감소하고 데이터 전송 효율성이 향상된다.
본 발명의 실시예 또는 종래기술의 기술적 솔루션을 더 명확하게 설명하기 위해, 이하에서는 본 발명의 실시예를 설명하는 데 필요한 첨부된 도면에 대해 간략하게 설명한다. 당연히, 이하의 실시예의 첨부된 도면은 본 발명의 일부의 실시예에 지나지 않으며, 당업자라면 창조적 노력 없이 첨부된 도면으로부터 다른 도면을 도출해낼 수 있을 것이다.
도 1은 종래기술에서 원격 노드 저장 장치 내의 데이터를 로컬 노드 저장 장치로 이동시키는 것을 나타내는 개략적인 흐름도이다.
도 2는 본 발명의 실시예에 따른 데이터 처리 시스템에 대한 개략적인 구조도이다.
도 3은 본 발명의 실시예에 따른 데이터 처리 시스템의 특정한 실행에 대한 개략적인 구조도이다.
도 4는 본 발명의 실시예에 따른 데이터 처리 방법에 대한 개략적인 흐름도이다.
도 5는 본 발명의 실시예에 따른 데이터 처리 시스템의 실행 방식의 기본 하드웨어에 대한 개략적인 구조도이다.
도 6은 본 발명의 실시예에 따라 관리 유닛에 저장되어 있는 PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계에 대한 예시적인 도면이다.
도 7은 본 발명의 실시예에 따라 PCIe 저장 장치에 구성되어 있는 어드레스로부터 CPU의 MMIO 어드레스로 맵핑하는 구조적 관계를 나타내는 도면이다.
도 8은 본 발명의 실시예에 따라 2개의 데이터 처리 시스템 간의 데이터 전송의 데이터 흐름 방향에 대한 개략적인 흐름도이다.
이하에서는 본 발명의 실시예에 첨부된 도면을 참조하여 본 발명의 실시예의 기술적 솔루션에 대해 명확하고 완전하게 설명한다. 당연히, 설명된 실시예는 본 발명의 모든 실시예가 아닌 일부에 지나지 않는다. 당업자가 창조적 노력 없이 본 발명의 실시예에 기초하여 획득하는 모든 다른 실시예는 본 발명의 보호 범위 내에 있게 된다.
도 1은 종래기술에서 원격 노드 저장 장치 내의 데이터를 로컬 노드 저장 장치로 이동시키는 것을 나타내는 개략적인 흐름도이다. 노드는 서버와 같이, 컴퓨팅 기능 또는 저장 기능을 실행하는 장치일 수 있다. 노드 1(Node 1)이, 네트워크를 통해 노드 2(Node 2)로부터, Node 2의 저장 장치에 저장되어 있는 데이터를 판독해야 하면, 그 실행 프로세스는 다음과 같다:
단계 1: Node 1의 CPU는 데이터를 판독하는 원격 접속 요구를 개시한다.
단계 2: Node 1 내의 네트워크 어댑터는 특정한 노드(즉, Node 2)의 네트워크 어댑터에 요구 패킷을 송신한다.
단계 3: Node 2의 네트워크 어댑터는 상기 요구 패킷을 Node 2의 CPU에 포워딩한다.
단계 4: Node 2의 CPU는 상기 요구 패킷을 분석한 다음, Node 2의 CPU의 PCIe 제어기에 데이터 요구를 개시한다.
단계 5: PCIe 제어기는 요구된 데이터를 DMA 방식으로 메모리에서 판독한다.
단계 6: Node 2의 CPU는 메모리에서 판독된 그 요구된 데이터를 Node 2의 네트워크 어댑터에 송신한다.
단계 7: Node 2의 네트워크 어댑터는 그 요구된 데이터를 네트워크를 통해 Node 1의 네트워크 어댑터에 송신한다.
단계 8: Node 1의 CPU는 Node 1의 네트워크 어댑터로부터 그 요구된 데이터를 판독한 다음, 그 데이터를 메모리에 버퍼링한다.
단계 9; Node 1의 CPU는 메모리에 버퍼링되어 있는 데이터를 PCIe 제어기에 송신하여 그 데이터를 저장 장치에 기록하도록 요구한다.
단계 10: Node 1의 CPU는 그 수신된 데이터를 저장 장치에 기록한다.
종래기술의 전술한 데이터 원격 판독 프로세스에서 알 수 있는 바와 같이, 판독에 참여하는 노드의 CPU는 데이터 판독 및 기록에 참여하며, 각각의 노드는 메모리 공간의 세그먼트에 신청하여 CPU에 의해 판독되거나 기록되는 데이터를 저장한다. 이 경우, 데이터 이동의 전체 프로세스에서, 데이터가 여러 번 이동되기 때문에, 지연이 불가피하게 증가하게 되고, CPU 및 메모리의 사용 비율이 높게 유지된다.
종래기술에서의 원격 데이터 이동 동안 CPU 및 메모리의 많은 지연 및 높은 사용 비율의 문제를 해결하기 위해, 본 발명의 실시예는 데이터 처리 시스템을 제공하여, 종래기술에서의 데이터 처리 시스템 간의 데이터 판독 및 기록 동안 메모리 및 CPU의 점유로 야기되는 자원 소비 및 지연의 문제를 해결한다.
종래기술에서의 노드를 횡단하는 데이터 전송 동안 많은 CPU 및 메모리 자원의 점유의 문제 및 긴 전송 지연의 문제를 해결하기 위해, 본 발명의 실시예는 데이터 처리 시스템을 제공한다. 네트워크 기술과 PCIe 저장 장치의 MMIO 어드레스 맵핑 기술을 결합함으로써, 노드 간의 데이터 원격 다이렉트 액세스 기술을 사용하여 데이터를 직접 복사한다. 복사 프로세스 동안, CPU는 데이터 이동에 참여하지 않으며, CPU는 단지 제어만 수행하면 되며; 동시에, 처리를 위해 미리 메모리에 이동되는 데이터는 없으므로, CPU 및 메모리의 사용이 감소하게 된다. 또한, CPU와 메모리 간의 데이터의 이동 프로세스가 감소하고, 데이터 처리의 지연이 감소하며, 데이터 전송의 효율성이 향상된다.
도 2를 참조하면, 도 2는 본 발명의 실시예에 따른 데이터 처리 시스템(200)에 대한 개략적인 구조도이다. 데이터 처리 시스템(200)은 중앙처리장치(CPU), 메모리(206), 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기(203), 네트워크 어댑터(205), 및 적어도 하나의 PCIe 저장 장치(204)를 포함하며,
상기 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보에 따라 상기 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있는 관리 유닛(201)
을 더 포함하며, 상기 제1 저장 어드레스는 메모리 맵핑 입력/출력(Memory mapping input/output: MMIO) 어드레스이며,
상기 네트워크 어댑터(205)는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치(204)로부터 데이터를 직접 판독하고, 상기 데이터를 제2 데이터 처리 시스템에 전송하거나, 상기 제2 데이터 처리 시스템으로부터 수신되는 데이터를 상기 PCIe 저장 장치(204)에 직접 기록하며, 상기 제2 데이터 처리 시스템은 네트워크를 통해 상기 제1 데이터 처리 시스템과 통신한다.
전술한 데이터 처리 시스템에서 데이터 요구의 MMIO 어드레스는 관리 유닛(201)에 의해 획득되며, PCIe 저장 장치에 저장되어 있는 데이터는 MMIO 어드레스로부터 직접 획득될 수 있으며, MMIO 어드레스에 따라, 네트워크 어댑터(205)는 데이터 처리 시스템(200)의 PCIe 저장 장치(204)로부터 데이터를 직접 판독하고, 이 데이터를 제2 데이터 처리 시스템에 전송하거나, 제2 데이터 처리 시스템으로부터 수신된 데이터를 PCIe 저장 장치(204)에 기록할 수 있다. 그러므로 처리 시스템은, 네트워크를 통해 통신하는 2개의 데이터 처리 시스템 간의 데이터 전송을 수행할 때, 메모리를 사용하지 않고서도 PCIe 저장 장치로부터 네트워크 어댑터로 데이터를 직접 전송하는 것을 수행할 수 있다. 2개의 데이터 처리 시스템 간에 데이터를 전송하는 동안, 메모리 및 CPU와 같은 자원의 사용 비율이 감소하고 데이터 전송 효율성이 향상된다.
도 3을 참조하면, 도 3은 본 발명의 실시예에 따른 데이터 처리 시스템(200)의 특정한 실행에 대한 개략적인 구조도이다. 도 3에 도시된 바와 같이, PCIe 저장 장치(203)는 제1 저장 어드레스에 따라 PCIe 저장 장치 내의 데이터 요구에 의해 요구되는 데이터의 제2 저장 어드레스를 획득하도록 구성되어 있는 어드레스 번역 유닛(2031)을 더 포함한다. 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서(linear ordering)가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
어드레스 번역 유닛(2031)은 제1 저장 어드레스, 즉 MMIO 어드레스를 제2 저장 어드레스로 번역하고, 이 제2 저장 어드레스는 PCIe 저장 장치(203)의 액세스 가능한 매체의 물리 어드레스이며, 이에 따라 PCIe 저장 장치는 네트워크 어댑터(205)의 데이터 요구를 수신하며, PCIe 저장 장치는, 이 데이터 요구에 수반되어 있는 MMIO 어드레스에 따라, MMIO 어드레스에 대응하는 액세스 가능한 매체의 물리 어드레스를 획득하고, 이 물리 어드레스를 사용하여 데이터를 판독한다. PCIe 저장 장치에서, 액세스 가능한 매체 어드레스가 MMIO 어드레스에 의해 지시되지 않을 때, 네트워크 어댑터는 그 요구된 데이터의 액세스 가능한 매체 어드레스를 획득하여, 데이터의 판독 및 기록을 직접 수행할 수 있다.
선택적 실행 방식으로서, 어드레스 번역 유닛(2031)은 제1 베이스 어드레스 레지스터(base address register: BAR)를 구성하도록 추가로 구성되어 있으며, 제1 BAR 어드레스 레지스터는 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하고, 제2 저장 어드레스는 선형의 연속적인 저장 어드레스이다. 제2 저장 어드레스가 비선형의 연속적인 저장 어드레스이면, 어드레스 번역 유닛은 제2 BAR 어드레스 레지스터를 구성하도록 구성되어 있으며, 제2 BAR 어드레스 레지스터는 제1 저장 어드레스와 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 제2 저장 어드레스의 가상 어드레스는 제2 저장 어드레스에 대해 선형 순서가 수행된 후 획득되는 어드레스이다.
전술한 어드레스 번역 유닛(2031)은 BAR 어드레스 레지스터를 구성하고, 이에 따라 PCIe 저장 장치에서, 선형의 연속적인 물리 어드레스는 일대일 방식으로 MMIO 어드레스에 대응하게 되며, PCIe 저장 장치에서, 비선형의 연속적인 물리 어드레스에 대해 선형 순서가 수행된 후 획득되는 논리 어드레스는 일대일 방식으로 MMIO 어드레스에 대응하게 되어, MMIO 어드레스와 PCIe 저장 장치의 액세스 가능한 매체 어드레스의 맵핑을 수행한다. 그러므로 네트워크 어댑터는, PCIe 제어기를 사용함으로써 MMIO 어드레스에 따라, 일대일 방식으로 MMIO 어드레스에 대응하는 PCIe 액세스 가능한 저장 매체 어드레스에 맵핑하고, 이에 의해 데이터의 직접 판독 및 기록을 수행한다.
선택적 실행 방식으로서, CPU(202)는 각각의 PCIe 저장 장치에 고유 식별자를 할당하며, 이 고유 식별자는 각각의 저장 장치를 식별하는 데 사용된다. 이에 대응해서, 관리 유닛(201)은 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하도록 추가로 구성되어 있다. PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 사용함으로써, 관리 유닛(201)은, 데이터 처리 시스템(200)에 의해 수신되는 데이터 요구 메시지에 포함되어 있는 PCIe 저장 장치의 고유 식별자에 따라, 이 고유 식별자에 대응하면서 PCIe 저장 장치의 BAR 내에 있는 베이스 어드레스를 획득할 수 있다. 데이터 처리 시스템에 의해 수신되는 데이터 요구 내의 제1 어드레스 정보는 고유 식별자 및 PCIe 저장 장치의 논리 블록 어드레스(logical block address: LBA) 어드레스를 포함하기 때문에, 관리 유닛(201)은 BAR 내의 획득된 베이스 어드레스 및 PCIe 저장 장치의 LBA 어드레스를 사용함으로써 그 요구된 데이터의 MMIO 어드레스를 획득할 수 있다.
선택적으로, 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 상기 고유 식별자는 상기 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리(hashing processing)가 수행된 후 획득되는 식별자이다.
선택적 실행 방식으로서, 도 3에 도시된 바와 같이, 관리 유닛(201)은 베이스 어드레스 획득 유닛(2011) 및 저장 어드레스 획득 유닛(2012)을 포함하며, 상기 베이스 어드레스 획득 유닛(2011)은, 데이터 처리 시스템(200)이 네트워크를 통해 데이터 처리 시스템(200)과 통신하는 제2 데이터 처리 시스템의 제1 데이터 요구를 수신하면, 제1 데이터 요구에 수반되어 있는 PCIe 저장 장치(204)의 고유 식별자에 따라 그 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하도록 구성되어 있으며, 상기 저장 어드레스 획득 유닛(2012)은, BAR 내의 베이스 어드레스 및 제1 데이터 요구 내의 LBA 어드레스에 따라 저장 장치 내의 그 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있으며, 여기서 제1 저장 어드레스는 MMIO 어드레스이다.
선택적 실행 방식으로서, CPU(202)는 획득된 제1 저장 어드레스를 네트워크 어댑터에 등록한다. 제1 저장 어드레스는 네트워크 어댑터에 등록된다. 네트워크 어댑터(205)는 제1 저장 어드레스를 수반하는 제2 데이터 처리 시스템의 데이터 요구를 CPIe 버스 상에서 제1 저장 어드레스를 공개할 수 있다. PCIe 제어기(203)는 네트워크 어댑터(205)에 의해 송신되고 제1 저장 어드레스를 수반하는 요구를 수신하면 데이터 요구를 획득하고, 요구된 데이터를 네트워크 어댑터(205)에 송신하거나, 네트워크 어댑터에 수신되고 제2 데이터 처리 시스템에 의해 송신되는 데이터를 PCIe 저장 장치 내의 제1 저장 어드레스에 대응하는 위치에 기록한다.
선택적 실행 방식으로서, 데이터 처리 시스템(200)은 송신 유닛(207)을 더 포함하며, 송신 유닛(207)은 관리 유닛(200)에 의해 획득된 제1 저장 어드레스를 제2 데이터 처리 시스템에 송신하도록 구성되어 있다.
선택적으로, PCIe 제어기(203)는 네트워크 어댑터(205)에 의해 송신되고 제1 저장 어드레스를 수반하는 데이터 요구를 획득하고, 어드레스 번역 유닛(2031)은 제2 저장 어드레스의 데이터를 획득하며, 그 획득된 데이터를 네트워크 어댑터에 반환하거나, 네트워크 어댑터에 의해 송신된 데이터를 제2 저장 어드레스에 기록한다.
본 발명의 실시예에서, 데이터 처리 시스템(200) 및 다른 데이터 시스템, 예를 들어, 제2 데이터 처리 시스템은 네트워크를 통해 통신하여, 상이한 데이터 처리 시스템 간의 데이터 전송을 실행한다. 네트워크는 이더넷, 다중 동시 링크를 지원하는 컨버전 케이블 기술 IB 네트워크, 섬유 채널(fiber channel: FC) 네트워크 등을 포함하되, 이에 제한되지 않는다. 전술한 제2 데이터 처리 시스템은 본 발명의 실시예의 솔루션을 실행하는 시스템일 수 있고, 종래기술의 데이터 처리 시스템일 수도 있다. 제2 데이터 처리 시스템이 본 발명의 실시예의 솔루션을 실행하는 시스템일 때, 제2 데이터 처리 시스템은 네트워크 어댑터로부터 PCIe 저장 장치로 데이터를 직접 판독 또는 기록하는 것을 실행할 수도 있다.
선택적 실행 솔루션으로서, 관리 유닛(203)은 글로벌 베이스 어드레스 획득 유닛(2033) 및 글로벌 저장 어드레스 획득 유닛(2034)을 더 포함하며, 여기서,
상기 글로벌 베이스 어드레스 획득 유닛(2033)은, 데이터 처리 시스템이 제2 데이터 요구를 수신하면, 제2 데이터 요구에 수반되어 있는 PCIe 저장 장치의 고유 식별자에 따라 제2 데이터 처리 시스템의 BAR 내의 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하도록 구성되어 있으며, 상기 제2 데이터 요구는 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구이며, 그리고 상기 글로벌 저장 어드레스 획득 유닛(2034)은, 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 제2 데이터 처리 시스템 내의 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하도록 구성되어 있다.
이에 대응해서, 제2 데이터 처리 시스템의 PCIe 제어기 내의 데이터 변환 유닛은, 제2 데이터 처리 시스템 내의 상기 데이터 처리 시스템에 의해 송신되는 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스에 따라, 제2 데이터 처리 시스템 내의 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
전술한 실시예에서, 관리 유닛(203)은 PCIe 저장 장치의 고유 식별자와 제2 데이터 처리 시스템 내의 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 더 저장하며, 데이터 처리 시스템(200)이 제2 데이터 처리 시스템에 데이터를 송신하거나 제2 데이터 처리 시스템으로부터 데이터를 판독하기 위한 제2 데이터 요구를 수신하면, 데이터 처리 시스템(200)은 제2 데이터 처리 시스템의 BAR 내의 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하고, 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 더 획득할 수 있으므로, CPU 또는 메모리의 참여없이 2개의 데이터 처리 시스템 간의 직접 전송을 실행할 수 있으며, 이에 의해 CPU 및 메모리 자원을 절감하고, 데이터 전송의 효율성을 향상시킨다. 예를 들어, 도 8은 제1 데이터 처리 시스템과 제2 데이터 처리 시스템 간의 데이터 전송이 실행되는 것을 도시하고 있으며, 여기서 검음 파선 부분은 2개의 데이터 처리 시스템 간의 데이터 전송의 트랙 및 흐름 방향이다.
본 발명의 실시예에서의 데이터 처리 시스템(200)은 통신 네트워크를 통해 복수의 데이터 처리 시스템에 접속되어 데이터 전송을 수행할 수도 있다. 데이터 처리 시스템(200)은 다른 복수의 데이터 처리 시스템에 의해 송신되는, PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 획득할 수 있으므로, 데이터 처리 시스템 간의 직접 전송을 수행할 수 있다. 데이터 처리 시스템(200)은 또한 PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 다른 복수의 데이터 처리 시스템에 요구하여, 데이터 처리 시스템 간의 직접 전송을 수행할 수도 있다. 당연히, 데이터 처리 시스템(200)이 다른 복수의 데이터 처리 시스템 내에 있는 PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 획득하고, 다른 복수의 데이터 처리 시스템 내에 있는 PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계가 변경되면, 변경이 일어나는 데이터 처리 시스템은 그 변경된 대응관계를 데이터 처리 시스템(200)에 송신할 수 있다.
도 4를 참조하면, 도 4는 본 발명의 실시예에 따른 데이터 처리 방법에 대한 개략적인 흐름도이다. 본 발명의 실시예에서의 데이터 처리 방법은 중앙처리장치(CPU), 메모리, 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기, 네트워크 어댑터, 및 적어도 하나의 PCIe 저장 장치에 적용되며, 상기 방법은 이하를 포함한다:
단계 400: 데이터 처리 시스템이 데이터 요구를 수신하면, 데이터 요구에 수반되어 있는 제1 어드레스 정보를 획득한다.
단계 402: 제1 어드레스 정보에 따라 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하고, 여기서 제1 저장 어드레스는 MMIO 어드레스이다.
단계 404: 네트워크 어댑터는 제1 저장 어드레스에 따라 PCIe 저장 장치로부터 데이터를 획득하고, 이 데이터를 제2 데이터 처리 시스템에 전송하거나, 제2 데이터 처리 시스템으로부터 수신된 데이터를 PCIe 저장 장치에 직접 기록하며, 여기서 제2 데이터 처리 시스템은 네트워크를 통해 제1 데이터 처리와 통신하는 데이터 처리 시스템이다.
전술한 방법 실시예에서의 단계 400 및 단계 402는 데이터 처리 시스템 내의 관리 유닛에 의해 실행될 수 있다. 관리 유닛은 CPU 내의 모듈 또는 논리 유닛이며, 데이터 처리 시스템 내의 개별적인 하드웨어 엔티티일 수도 있다. 관리 유닛의 실행 방식은 본 발명의 실시예에서 제한되지 않는다.
전술한 실시예의 단계 402에서 데이터 요구의 MMIO 어드레스가 획득되며, PCIe 저장 장치에 저장되어 있는 데이터는 MMIO 어드레스로부터 직접 획득될 수 있으며, MMIO 어드레스에 따라, 네트워크 어댑터는 데이터 처리 시스템의 PCIe 저장 장치로부터 데이터를 직접 판독하고, 이 데이터를 제2 데이터 처리 시스템에 전송하거나, 제2 데이터 처리 시스템으로부터 수신된 데이터를 PCIe 저장 장치에 기록할 수 있다. 그러므로 처리 시스템은, 네트워크를 통해 통신하는 2개의 데이터 처리 시스템 간의 데이터 전송을 수행할 때, 메모리를 사용하지 않고서도 PCIe 저장 장치로부터 네트워크 어댑터로 데이터를 직접 전송하는 것을 수행할 수 있다. 2개의 데이터 처리 시스템 간에 데이터를 전송하는 동안, 메모리 및 CPU와 같은 자원의 사용 비율이 감소하고 데이터 전송 효율성이 향상된다.
선택적 실행 방식으로서, 데이터 처리 방법은: PCIe 저장 장치가, 제1 저장 어드레스에 따라 PCIe 저장 장치 내의 데이터 요구에 의해 요구되는 데이터의 제2 저장 어드레스를 획득하는 단계를 더 포함한다. 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
선택적으로, PCIe 제어기는 제1 BAR 어드레스 레지스터를 구성하며, 제1 BAR 어드레스는 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하며, 제2 저장 어드레스는 선형의 연속적인 저장 어드레스이다. 대안으로, PCIe 제어기는 제2 BAR 어드레스 레지스터를 구성하며, 제2 BAR 어드레스는 제1 저장 어드레스와 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 제2 저장 어드레스는 비선형의 연속적인 저장 어드레스이고, 제2 저장 어드레스의 가상 어드레스는 제2 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스이다.
BAR 어드레스 레지스터를 구성하고, 이에 따라 PCIe 저장 장치에서, 선형의 연속적인 물리 어드레스는 일대일 방식으로 MMIO 어드레스에 대응하게 되며, PCIe 저장 장치에서, 비선형의 연속적인 물리 어드레스에 대해 선형 순서가 수행된 후 획득되는 논리 어드레스는 일대일 방식으로 MMIO 어드레스에 대응하게 되어, MMIO 어드레스와 PCIe 저장 장치의 액세스 가능한 매체 어드레스의 맵핑을 수행한다. 그러므로 네트워크 어댑터는, PCIe 제어기를 사용함으로써 MMIO 어드레스에 따라, 일대일 방식으로 MMIO 어드레스에 대응하는 PCIe 액세스 가능한 저장 매체 어드레스에 맵핑하고, 이에 의해 데이터의 직접 판독 및 기록을 수행한다.
선택적 실행 방식으로서, 데이터 처리 방법은: CPU가, 각각의 PCIe 저장 장치에 고유 식별자를 할당하는 단계 - 상기 고유 식별자는 PCIe 저장 장치를 식별하는 데 사용됨 - ; 및 상기 고유 식별자에 따라, 상기 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하는 단계를 더 포함한다.
선택적으로, 제1 어드레스 정보는 고유 식별자와 PCIe 저장 장치의 논리 블록 어드레스(LBA)를 포함한다.
선택적으로, 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 고유 식별자는 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리가 수행된 후 획득되는 식별자이다.
PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 사용함으로써, 데이터 처리 시스템에 의해 수신되는 데이터 요구 메시지에 포함되어 있는 PCIe 저장 장치의 고유 식별자에 따라, 고유 식별자에 대응하면서 PCIe 저장 장치의 BAR 내에 있는 베이스 어드레스가 획득될 수 있다. 데이터 처리 시스템에 의해 수신되는 데이터 요구 내의 제1 어드레스 정보는 고유 식별자 및 PCIe 저장 장치의 LBA 어드레스를 포함하기 때문에, 그 요구된 데이터의 MMIO 어드레스는 BAR 내의 획득된 베이스 어드레스 및 PCIe 저장 장치의 LBA 어드레스를 사용함으로써 획득될 수 있다.
선택적 실행 방식으로서, 상기 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계는,
제1 데이터 요구에 수반되어 있는 PCIe 저장 장치의 고유 식별자에 따라 상기 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하는 단계; 및
BAR 내의 베이스 어드레스 및 제1 데이터 요구에 수반되어 있는 LBA 어드레스에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계
를 포함하며, 상기 제1 저장 어드레스는 MMIO 어드레스이다.
선택적으로, CPU는 획득된 제1 저장 어드레스를 네트워크 어댑터에 등록한다. 데이터 처리 시스템은 획득된 제1 저장 어드레스를 제2 데이터 처리 시스템에 송신한다. 데이터 처리 시스템의 네트워크 어댑터가 제1 저장 어드레스를 수반하고 제2 데이터 처리 시스템에 의해 송신되는 데이터 요구를 수신하면, 네트워크 어댑터는 그 수신된 요구를 CPIe 버스 상에서 공개할 수 있으며, 상기 요구는 데이터 처리 시스템 내의 PCIe 제어기에 의해 수신될 수 있다. PCIe 제어기가 제1 저장 어드레스를 수반하고 네트워크 어댑터에 의해 송신되는 데이터 요구를 획득한 후, PCIe 제어기는 제1 저장 어드레스에 따라 대응하는 제2 저장 어드레스를 획득하고, 제2 저장 어드레스로부터 데이터를 획득하며, 그 획득된 데이터를 네트워크 어댑터에 반환하거나, 네트워크 어댑터에 의해 송신되는 데이터를 제2 저장 어드레스에 기록한다.
선택적 실행 방식으로서, 상기 방법은:
데이터 처리 시스템이 제2 데이터 요구를 수신하면, 상기 제2 데이터 요구에 수반되어 있는 PCIe 저장 장치의 고유 식별자에 따라 제2 데이터 처리 시스템의 BAR 내의 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하는 단계 - 상기 제2 데이터 요구는 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구임 - ; 및
상기 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 상기 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 제2 데이터 처리 시스템 내의 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하는 단계
를 더 포함한다.
이에 대응해서, 제2 데이터 처리 시스템의 PCIe 제어기는, 제2 데이터 처리 시스템 내의 데이터 처리 시스템에 의해 송신된 제2 데이터 요구에 의해 요구되는 요구의 MMIO 어드레스에 따라, 제2 데이터 처리 시스템 내의 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스이다.
PCIe 저장 장치의 고유 식별자와 제2 데이터 처리 시스템 내의 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계가 전술한 바와 같이 획득되며, 이에 따라 제2 데이터 처리 시스템의 BAR 내의 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득할 수 있고, 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 더 획득할 수 있으므로, CPU 또는 메모리의 참여없이 2개의 데이터 처리 시스템 간의 직접 전송을 실행할 수 있으며, 이에 의해 CPU 및 메모리 자원을 절감하고, 데이터 전송의 효율성을 향상시킨다.
도 5는 본 발명의 실시예에 따른 데이터 처리 시스템의 실행 방식의 기본 하드웨어에 대한 개략적인 구조도이다. 데이터 처리 시스템은 중앙처리장치(CPU), 메모리, 주변 구성요소, PCIe 제어기, PCIe 버스, PCIe 저장 장치, 및 네트워크 어댑터를 포함하는 기본적인 하드웨어에 의해 형성된다. 데이터 처리 시스템 내의 네트워크 어댑터는 네트워크 다이렉트 액세스 기술을 지원하고 PCIe 버스 기술에 기초하는 네트워크 어댑터이다. 네트워크 다이렉트 액세스 기술은 원격 직접 메모리 액세스(Romote Direct Memory Access: RDMA) 등을 포함하되 이에 제한되는 않는다. 네트워크 어댑터는 이더넷 카드, 인피니밴드 호스트 채널 어댑터((Infiniband Host Channel Adapter: IB HCA, 복수의 동시 공존 링크를 지원하는 변환 케이블 기술 호스트 채널 어댑터), 인터넷 광대역 RDMA 프로토콜 호스트 채널 어댑터(internet wide area RDMA protocol Host Channel Adapter: iWarp HCA), 급속 IO 호스트 채널 어댑터(Rapid IO Host Channel Adapter: Rapid IO HCA) 등을 포함하되, 이에 제한되지 않는다. 네트워크 어댑터가 PCIe 버스 기술에 기반을 둔다는 것은 네트워크 어댑터의 업링크 버스 인터페이스가 PCIe이다는 것을 나타낸다. 데이터 처리 시스템은 PCIe 버스에 기반한 적어도 하나의 PCIe 저장 장치를 더 포함한다. PCIe 저장 장치는 메모리, 하드디스크, 솔리드스테이트디스크(Solid State Disk: SSD), 플래시, 비휘발성 랜덤 액세스 메모리(Non-volatile Random Access Memory: NVRAM) 등을 포함하되 이에 제한되지 않는다. 데이터 처리 시스템의 실행 방식은 서버와 같은 장치(랙 서버(rack server), 툴 터렛 서버(too turret server), 쉘프 서버(shelf server) 등), 저장 장치 또는 중간급 컴퓨터를 포함하되 이에 제한되지 않는다.
본 발명의 실시예에서의 데이터 처리 시스템에 따르면, 관리 유닛은 도 5에 도시된 바와 같이 하드웨어의 기본적인 아키텍처에 기초해서 부가된다. 관리 유닛은 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보에 따라 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있으며, 상기 제2 저장 어드레스는 MMIO 어드레스이다. 관리 유닛은 CPU에서 실행될 수 있으며, 별도의 하드웨어를 사용해서 실행될 수도 있다. 데이터 처리 시스템 내의 관리 유닛의 실행 방식은 본 발명의 실시예에 제한되지 않는다.
구체적으로, 관리 유닛은, PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 구축된 대응관계에 따라, PCIe 저장 장치 내의 데이터 처리 시스템에 의해 수신되는 데이터 요구의 데이터의 어드레스를 획득한다.
PCIe 저장 장치의 고유 식별자는 예를 들어 세계적 고유 식별자(Globally Unique Identifier: GUID)는 데이터 처리 시스템에 의해 각각의 PCIe 저장 장치에 할당되면서 PCIe 저장 장치를 고유하게 결정하는 식별자이다. 고유 식별자는 CPU에 의해 할당된 고유 식별자일 수도 있고, 관리 유닛에 의해 할당된 고유 식별자일 수도 있다. 고유 식별자는 PCIe 저장 장치의 벤더 식별자(Vender ID) 및 장치 식별자(Divice ID)에 의해 형성되는 고유 세트의 캐릭터 스트링일 수 있고, PCIe 저장 장치에 장착되어 있는 저장 장치의 고유 식별자 ID(예를 들어, 하드디스크 시리얼 넘버)일 수 있거나, 캐릭터 스트링에 대해 해싱이 수행된 후에 획득된 식별자일 수 있다. 고유 식별자의 구성은 노드 내측의 저장 장치의 정보가 고유하게 표시될 수 있는 한 본 발명의 실시예에서 제한되지 않는다.
데이터 처리 시스템이 개시하면 PCIe 저장 장치의 BAR 내의 베이스 어드레스가 할당된다. 데이터 처리 시스템이 개시를 완료한 후, 관리 유닛은 각각의 PCIe 저장 장치의 BAR 내의 베이스 어드레스를 획득한다. 관리 유닛은 데이터 처리 시스템 내의 모든 PCIe 저장 장치를 스캐닝함으로써 각각의 PCIe 저장 장치의 BAR 내의 베이스 어드레스 및 PCIe 저장 장치의 고유 식별자를 획득한다.
관리 유닛은 각각의 PCIe 저장 장치의 BAR 내의 베이스 어드레스 및 PCIe 저장 장치의 고유 식별자에 따라, 각각의 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 기록한다.
데이터 처리 시스템이 데이터 요구를 수신하면, 데이터 요구는 PCIe 저장 장치 내의 요구된 데이터의 논리 블록 어드레스(Logical Block Address: LBA) 및 고유 어드레스를 수반한다. 유닛은 데이터 요구에 수반되어 있는 고유 식별자 및 각각의 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 구축된 대응관계에 따라, PCIe 저장 장치의 BAR 내의 요구된 데이터의 베이스 어드레스를 획득하고, LBA 어드레스를 참조하여 그 요구된 데이터의 MMIO 어드레스를 획득한다. 관리 유닛은 그 요구된 데이터의 MMIO 어드레스의 시작 어드레스 및 종료 어드레스를 이하의 방식으로 획득할 수 있다:
시작 어드레스 = BAR 내의 맵핑된 베이스 어드레스 + (LBA × 블록 크기)
종료 어드레스 = BAR 내의 맵핑된 베이스 어드레스 + (LBA × 블록 수) × 블록 크기) -1
관리 유닛은 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 유지하고, PCIe 저장 장치의 BAR 내의 베이스 어드레스가 변경되면 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 리프레싱하도록 추가로 구성되어 있다. 예를 들어, PCIe 저장 장치의 BAR 내의 베이스 어드레스가 데이터 처리 시스템의 재시작으로 인해 변경될 수 있고, 이것은 데이터 처리 시스템에 의해 각각의 PCIe 저장 장치에 할당되며, 최종 할당되는 베이스 어드레스와는 다를 수 있다. 관리 유닛은 각각의 PCIe 저장 장치의 고유 식별자에 따라 PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 리프레싱해야 한다.
관리 유닛은 또한 다른 처리 시스템 내의 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 획득할 수 있다. 다른 처리 시스템 내의 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 사용함으로써, 다른 데이터 처리 시스템 상에서 데이터 판독 및 기록을 수행할 때, 다른 데이터 처리 시스템 내의 PCIe 저장 장치의 저장 어드레스를 획득할 수 있다. 다른 처리 시스템 내의 PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 대응관계를 획득하는 단계는 다른 데이터 처리 시스템에 대한 요구를 능동적으로 개시하는 방식으로 실행될 수 있으며, 다른 데이터 처리 시스템에 의해 능동적으로 송신되는 대응관계가 수신된 후 실행될 수도 있다. 특정한 획득 방식은 본 발명의 실시예에서 제한되지 않는다.
도 6을 참조하면, 도 6은 본 발명의 실시예에 따라 PCEe 저장 장치이면서 관리 유닛에 저장되어 있는 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계에 대한 예시적인 도면이다. 본 예시적 실시예에서, IP 어드레스는 데이터 처리 시스템이 위치하는 네트워크 상에서 데이터 처리 시스템의 고유 식별자를 확인하는 데 사용되고, 여기서 GUID는 PCIe 저장 장치의 고유 식별자이고, 맵핑 공간 시작 어드레스는 CPU 어드레싱 공간으로부터 맵핑된 영역에서 PCIe 저장 장치 어드레스의 시작 어드레스이고; 장치 논리 어드레스는 저장 장치 내측의 논리 시작 어드레스를 말하며; 공간 길이는 시스템에서 맵핑된 영역의 전체 길이를 말한다.
본 발명의 실시예에서, PCIe 저장 장치의 고유 식별자와 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계는 PCIe 저장 장치의 드라이브에 의해 구축될 수 있고, 관리 유닛에 의해 구축될 수도 있다. 구체적으로, 스크립트를 부가하는 방식은 데이터 처리 시스템이 개시한 후 자동 로딩에 사용될 수 있으며, 수동 방식도 로딩에 사용될 수 있다. 대응관계가 PCIe 저장 장치의 드라이브에 의해 구축되면, 먼저 PCIe 저장 장치의 드라이브는 PCIe BAR 어드레스 레지스터를 구성하고, 관리 유닛은 구성된 맵핑 관계를 판독한다. 대응관계가 관리 유닛에 의해 구축되면, 구축되는 대응관계는 PCIe 저장 장치의 레지스터를 구성함으로써 실현된다.
본 발명의 실시예의 PCIe 저장 장치는 제1 저장 어드레스에 따라 PCIe 저장 장치 내의 데이터 요구에 의해 요구된 데이터의 제2 저장 어드레스를 획득하도록 구성되어 있는 어드레스 번역 유닛을 더 포함한다.
어드레스 번역 유닛은 PCIe 장치 제어기에서 실현될 수 있다. 매체 액세스 가능 어드레스와 PCIe 저장 장치의 MMIO 어드레스 간의 대응관계가 구축되고, PCIe 저장 장치의 MMIO 어드레스에 대응하는 매체 가능한 어드레스는 MMIO 어드레스에 대한 데이터 판독 및 기록 요구가 수신되면, MMIO 어드레스에 따라, 예를 들어 데이터 판독 및 기록을 수행하기 위해, PCIe 저장 장치의 저장 어드레스에 따라 획득될 수 있다.
PCIe NVRAM이 PCIe 저장 장치의 역할을 하는 것을 예를 들어 설명하면, PCIe NVRAM이 따르는 PCIe 프로토콜 사양에 따라, PCIe NVRAM 내측의 액세스 가능한 매체의 어드레스 공간이 CPU의 MMIO 어드레스 공간에 직접 맵핑되며, 이에 따라 PCIe NVRAM에 대한 모든 기록 및 판독 요구는 MMIO 어드레스에 대한 요구와 같다. MMIO 어드레스 공간은 VNRAM의 모든 액세스 가능한 공간에 대응하고, 즉, 매체 가능한 어드레스와 PCIe 저장 장치 내의 MMIO 어드레스 간의 대응관계가 구축된다. MMIO 어드레스 공간에 액세스함으로써, MMIO 어드레스 공간에 대응하는 NVRAM 공간이 직접 액세스될 수 있다. PCIe NVRAM 내측의 액세스 가능한 매체의 어드레스 공간을 CPU의 MMIO 어드레스 공간에 직접 맵핑하는 것은 BAR 어드레스 레지스터를 구성하는 방식으로 실현될 수 있다.
도 7에 도시된 바와 같이, 도 7은 본 발명의 실시예에 따라 PCIe 저장 장치에 구성되어 있는 어드레스로부터 CPU의 MMIO 어드레스로 맵핑하는 구조적 관계를 나타내는 도면이다.
도면에서, PCIe 제어기 내의 PCIe 종료 점은 어드레스 번역 유닛으로 사용되고, PCIe 저장 장치 내의 어드레스를 CPU 내의 MMIO 어드레스에 맵핑하도록 PCIe BAR 어드레스 레지스터를 구성하며, 이에 따라 CPU 어드레스(DMA를 제공하기 위한 어드레스) 공간에의 액세스는 PCIe 저장 장치의 액세스 가능한 매체 어드레스에 직접 맵핑될 수 있다.
본 발명의 실시예에서, PCIe 저장 장치 내의 매체 액세스 가능 어드레스와 MMIO 어드레스 간의 대응관계가 구축되는데, 즉 PCIe 저장 장치의 어드레스 공간과 CPU 내의 MMIO 어드레스 공간 간의 맵핑 관계가 구축된다. PCIe 저장 장치의 물리 어드레스가 선형의 연속적인 저장 어드레스인지에 기초하여, 맵팽 관계를 구축하기 위한 실행 방식이 다르다.
PCIe 저장 장치의 물리 어드레스가 선형의 연속적인 저장 어드레스일 때, 어드레스 번역 유닛에 의해 구성되는 BAR 어드레스 레지스터는 실제의 저장 장치의 크기와 일치하는 크기를 가지는 CPU 어드레스 저장 공간의 세그먼트를 맵핑한다. PCIe 저장 장치의 어드레스는 선형으로 연속적이므로, PCIe 저장 장치의 어드레스는 그 맵핑된 CPU 어드레스 공간의 어드레스에 일대일 방식으로 대응한다. 이러한 어드레스 공간의 세그먼트 상에서의 CPU의 동작은 어드레스 번역 유닛에 의해 획득되며, 여기서 어드레스 번역 유닛은 수신된 요구를 PCIe 저장 장치의 실제의 물리 어드레스로 변환한다.
PCIe 저장 장치의 물리 어드레스가 선형의 연속적인 저장 어드레스가 아니면, 어드레스 번역 유닛은 선형 순서가 수행된 후에 획득되는 저장 어드레스와 CPU 어드레스 간의 맵핑을 구축한다. 즉, BAR 어드레스 레지스터는 가상 어드레스의 크기와 일치하는 크기를 가지는 CPU 어드레스 저장 공간의 세그먼트를 맵핑하도록 구성되어 있으며, 여기서 가상 어드레스는 비선형의 연속적인 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스이다. 예를 들어, 다른 최소 유닛의 섹터, 블록 또는 유닛은 "가상" 선형 공간을 형성하도록 연속적으로 라벨이 붙으며, CPU 어드레스 공간과의 맵핑 관계를 구축하는 데 사용된다.
PCIe 저장 장치의 BAR 내의 베이스 어드레스와 PCIe 저장 장치의 고유 식별자 간의 그리고 전술한 데이터 처리 시스템 내의 관리 유닛에 의해 구축되는 대응관계에 따라, 관리 유닛은 데이터 처리 시스템에 의해 수신되는 데이터 요구에 의해 수신되는 데이터의 MMIO 어드레스를 획득하고, MMIO 어드레스에 따라 PCIe 제어기에 대한 데이터 요구를 개시할 수 있다. PCIe 제어기 내의 어드레스 번역 유닛은, PCIe 저장 장치 내의 매체 액세스 가능 어드레스와 MMIO 어드레스 간의 구축된 대응관계에 따라, PCIe 저장 장치 내의 그 요구된 데이터의 매체 액세스 가능 어드레스, 즉 실제의 물리 어드레스를 획득한다. 데이터 판독 또는 데이터 기록은 매체 액세스 가능 어드레스를 사용함으로써 직접 수행될 수 있다.
이에 대응해서, 데이터 처리 시스템 내의 네트워크 어댑터는 전술한 MMIO 어드레스에 따라 직접 PCIe 저장 장치로부터 데이터를 판독하거나 PCIe 저장 장치에 데이터를 기록할 수 있다. 종래기술에서 메모리 및 CPU 자원의 소모, 및 PCIe 저장 장치 내의 관련 데이터를 물리 메모리로부터 판독해야하고, 그런 다음 물리 메모리를 사용하여 원격 데이터 처리 시스템에 전송할 때 전송 지연의 문제가 회피된다.
이하에서는 제1 데이터 처리 시스템이 PCIe SSD F의 오프셋 어드레스 0x1000-0x2000의 4 Kbyte의 데이터를 제2 데이터 처리 시스템의 PCIe SSD G의 0x3000-0x4000의 위치에 기록해야 하는 것을 사용하여, 본 발명의 실시예에서의 데이터 처리 시스템 및 데이터 처리 방법의 실행 방식에 대해 상세히 설명한다. PCIe SSD는 PCIe 저장 장치의 특정한 실행 방식이다. 본 실시예에서는, 제1 데이터 처리 시스템이 제1 데이터 처리 시스템의 PCIe SSD의 고유 식별자와 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계를 구축할 뿐만 아니라, 제2 데이터 처리 시스템의 PCIe SSD의 고유 식별자와 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계도 획득하는 것을 예로 해서 설명한다.
단계 500: 제1 데이터 처리 시스템은 PCIe SSD의 BAR 내의 베이스 어드레스를 획득한다.
제1 데이터 어드레스 시스템은, 관리 유닛 내의 PCIe SSD의 고유 식별자 간의 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계에 따라, PCIe SSD F의 PCIe BAR 내의 베이스 어드레스 0xff00 0000를 획득하여, 오프셋 어드레스 0x1000에 대응하는 MMIO 어드레스를 획득하며; PCIe SSD의 PCIe BAR 내의 베이스 어드레스 0xfe00 0000을 더 획득하여, 오프셋 어드레스 0x3000-0x4000에 대응하는 MMIO 어드레스, 예를 들어, 0xfe00 3000을 획득한다.
단계 502: 제1 데이터 처리 시스템의 네트워크 어댑터는 데이터 기록 요구를 개시한다.
제1 데이터 처리 시스템의 네트워크 어댑터는 PCIe SSD F의 새로운 MMIO 어드레스 0xff00 1000를 사용하여 PCIe SSD F에 대한 데이터 요구를 개시하고, PCIe SSD F 장치 내측의 PCIe 인터페이스는 MMIO 어드레스를 내부의 액세스 가능한 저장 매체 어드레스 XXX로 변환하며, 여기서 XXX의 결과는 맵핑 유닛의 다른 실행에 따라 다를 수 있다. PCIe SSD는 저장 매체 어드레스 XXX에 대응하는 데이터를 판독하고, 이 데이터를 판독이 완료된 후에 PCIe 버스를 사용하여 네트워크 어댑터에 송신한다. 이 전체 프로세스에서, CPU는 데이터 전송의 프로세스에 참여하지 않으며, 동시에 메모리도 점유하지 않는다.
단계 504: 제2 데이터 처리 시스템의 네트워크 어댑터는 제1 데이터 처리 시스템의 네트워크 어댑터에 의해 송신되는 데이터를 수신하고, 이 데이터를 PCIe SSD G에 송신한다.
제2 데이터 처리 시스템의 네트워크 어댑터는 PCIe SSD G의 새로운 MMIO 어드레스 0xfe00 3000을 사용함으로써 PCIe SSD G 장치에 대한 데이터 기록 요구를 개시하고, PCIe SSD G 장치의 PCIe 인터페이스는 MMIO 어드레스를 내부의 액세스 가능한 저장 매체 어드레스 YYY로 변환하고, 여기서 YYY의 결과는 맵핑 유닛의 다른 실행에 따라 다를 수 있다. PCIe SSD G는 네트워크 어댑터에 의해 송신되는 데이터를 저장 매체 어드레스 YYY에 기록한다. 이 전체의 프로세스에서, CPU는 데이터 전송의 프로세스에 참여하지 않으며, 메모리는 점유되지 않는다.
PCIe SSD F 장치 내측의 PCIe 인터페이스가 MMIO 어드레스를 내부의 액세스 가능한 저장 매체 어드레스 XXX로 변환하고, PCIe SSD G 장치의 PCIe 인터페이스가 MMIO 어드레스를 내부의 액세스 가능한 저장 매체 어드레스 YYY로 변환하는 것은 제2 저장 어드레스가 선형의 연속적인 물리 어드레스인 경우에 적용된다.
제2 저장 어드레스가 논리 어드레스일 때, PCIe SSD F 장치 내측의 PCIe 인터페이스가 MMIO 어드레스를 내부의 액세스 가능한 저장 매체 어드레스 XXX로 변환하는 것은 논리 어드레스로부터 비선형의 연속적인 어드레스로의 변환을 필요로 하며, 이에 대해서는 여기서 반복 설명하지 않는다.
제1 데이터 처리 시스템이 제2 데이터 처리 시스템 내의 PCIe SSD의 고유 식별자와 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계를 획득하지 않는 경우에 있어서, 제2 데이터 처리 시스템의 관리 유닛은 제2 데이터 처리 시스템 내의 PCIe SSD의 고유 식별자와 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하고, 제2 데이터 처리 시스템의 네트워크 어댑터가 제1 데이터 처리 시스템에 의해 송신되는 데이터 판독 및 기록 요구를 수신할 때, 제2 데이터 처리 시스템 내의 PCIe SSD의 고유 식별자와 PCIe SSD의 BAR 내의 베이스 어드레스 간의 대응관계에 따라, 기록되어야 하고 PCIe SSD의 BAR 내에 있는 베이스 어드레스를 획득하며, 이 데이터를 대응하는 PCIe SSD에 직접 기록한다.
본 발명의 전술한 실시예에서는, 상이한 데이터 처리 시스템 간의 데이터 전송 동안 데이터를 직접 판독 또는 기록하기 위한 실행 방식을 설명하기 위해 PCIe 저장 장치를 예로 사용한다.
메모리 인터페이스를 통과하는 저장 장치, 예를 들어, 저장 클래스 메모리(Storage Class Memory: SCM), 저항성 랜덤 액세스 메모리(Resistive Random Access Memory: RRAM), 또는 비휘발성 DIMM(Non-volitile DIMM)에 대해서는, 전술한 PCIe 저장 장치의 실행 방식을 참조할 수 있으며, 관리 유닛은 SCM, RRAM, 및 NVDIMM 상에서 데이터의 판독 및 기록 처리를 직접 수행하는 데 사용된다. 시스템이 시작하면, 초기화 동안, 저장 장치(NVDIMM\RRAM\SCM)는 시스템 내의 저장 장치에 의해 액세스되는 공간을 등록할 수 있다. 등록된 어드레스에 액세스함으로써, 저장 장치는 액세스될 수 있다. 전술한 실시예와는 달리, PCIe 저장 장치 내의 액세스 가능 매체 어드레스와 MMIO 어드레스 간의 맵핑을 수행하지 않아도 되며, 어드레스 번역도 수행하지 않아도 되지만, 네트워크 상의 다른 데이터 처리 시스템이 액세스될 데이터의 어드레스를 획득할 수 있도록 하기 위해, 시스템 내의 저장 장치(NVDIMM\RRAM\SCM)의 어드레스가 획득되어야 하며, 다른 데이터 처리 시스템이 동기화되어야 한다.
당업자라면 본 명세서에 개시된 실시예에 설명된 예들을 조합해서, 유닛 및 알고리즘은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이것들의 조합에 의해 실현될 수 있다는 것을 이해할 수 있을 것이다. 하드웨어와 소프트웨어 간의 상호교환성을 명확하게 설명하기 위해, 전술한 바에서는 대체적으로 기능에 따라 각각의 예의 구성 및 단계를 설명하였다. 기능이 하드웨어로 수행되는지 소프트웨어로 수행되는지는 특별한 애플리케이션 및 기술적 솔루션의 설계 제약 조건에 따라 다르다. 당업자라면 다른 방법을 사용하여 각각의 특별한 애플리케이션에 대한 설명된 기능을 실행할 수 있을 것이나, 그 실행은 본 발명의 범위를 넘어서는 것으로 파악되어서는 안 된다.
당업자라면 설명을 편리하고 간략하게 하기 위해, 전술한 시스템, 장치, 및 유닛의 상세한 작업 프로세스에 대해서는, 전술한 방법 실시예에서의 대응하는 프로세스를 참조할 수 있다는 것을 이해할 수 있으므로, 여기서 다시 설명하지 않는다.
본 발명의 실시예에서 제공하는 수 개의 실시예에서, 설명된 시스템, 장치, 및 방법은 다른 방식으로도 실행될 수 있음은 물론이다. 를 들어, 설명된 장치 실시예는 단지 예시에 불과하며, 예를 들어, 유닛 분할은 단지 논리적 기능 분할이며 실제의 실행에 있어서는 다른 분할일 수도 있다. 예를 들어, 복수의 유닛 또는 구성요소는 다른 시스템에 결합되거나 통합될 수 있거나, 또는 일부의 특징이 무시되거나 수행되지 않을 수 있다. 또한, 도시되거나 논의된 상호 커플링 또는 다이렉트 커플링 도는 통신 접속은 일부의 인터페이스를 통해 실행될 수 있다. 장치 또는 유닛 간의 다이렉트 커플링 또는 통신 접속은 전자식, 기계식, 또는 다른 형태로 실행될 수 있다.
본 출원에서 제공하는 수 개의 실시예에서, 전술한 시스템, 장치, 및 방법은 다른 방식으로도 실현될 수 있다는 것은 물론이다. 예를 들어, 설명된 장치 실시예는 단지 예시에 불과하다. 예를 들어, 유닛의 분할은 단지 일종의 논리적 기능 분할일 뿐이며, 실제의 실행 동안 다른 분할 방식으로 있을 수 있다. 예를 들어, 복수의 유닛 또는 구성요소를 다른 시스템에 결합 또는 통합할 수 있거나, 또는 일부의 특징은 무시하거나 수행하지 않을 수도 있다. 또한, 도시되거나 논의된 상호 커플링 또는 직접 결합 또는 통신 접속은 일부의 인터페이스를 통해 실현될 수 있다. 장치 또는 유닛 간의 직접 결합 또는 통신 접속은 전자식, 기계식 또는 다른 형태로 실현될 수 있다.
별도의 부분으로 설명된 유닛들은 물리적으로 별개일 수 있고 아닐 수도 있으며, 유닛으로 도시된 부분은 물리적 유닛일 수도 있고 아닐 수도 있으며, 한 위치에 위치할 수도 있고, 복수의 네트워크 유닛에 분산될 수도 있다. 유닛 중 일부 또는 전부는 실제의 필요에 따라 선택되어 실시예의 솔루션의 목적을 달성할 수 있다.
또한, 본 발명의 실시예에서의 기능 유닛은 하나의 프로세싱 유닛으로 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수도 있거나, 2개 이상의 유닛이 하나의 유닛으로 통합될 수도 있다. 통합 유닛은 하드웨어의 형태로 실현될 수도 있고, 소프트웨어 기능 유닛의 형태로 실현될 수도 있다.
통합 유닛이 소프트웨어 기능 유닛의 형태로 실현되어 독립 제품으로 시판되거나 사용되면, 이 통합 유닛은 컴퓨터 판독 가능형 저장 매체에 저장될 수 있다. 이러한 이해를 바탕으로, 본 발명의 필수적 기술적 솔루션 또는, 또는 종래기술에 기여하는 부분, 또는 기술적 솔루션의 일부는 소프트웨어 제품의 형태로 실현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되고, 본 발명의 실시예에 설명된 방법의 단계 중 일부 또는 전부를 수행하도록 컴퓨터 장치(이것은 퍼스널 컴퓨터, 서버, 또는 네트워크 장치 등이 될 수 있다)에 명령하는 수개의 명령어를 포함한다. 전술한 저장 매체는: 프로그램 코드를 저장할 수 있는 임의의 저장 매체, 예를 들어, USB 플래시 디스크, 휴대형 하드디스크, 리드-온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기디스크 또는 광디스크를 포함한다.
전술한 설명은 단지 본 발명의 특정한 실행 방식에 불과하며, 본 발명의 보호 범위를 제한하려는 것이 아니다. 본 발명에 설명된 기술적 범위 내에서 당업자가 용이하게 실현하는 모든 변형 또는 대체는 본 발명의 보호 범위 내에 있게 된다. 그러므로 본 발명의 보호 범위는 특허청구범위의 보호 범위에 있게 된다.

Claims (30)

  1. 데이터 처리 시스템으로서,
    중앙처리장치(CPU), 메모리, 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기, 네트워크 어댑터, 및 적어도 하나의 PCIe 저장 장치를 포함하며,
    상기 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있는 관리 유닛
    을 더 포함하며,
    상기 제1 저장 어드레스는 메모리 맵핑 입력/출력(MMIO) 어드레스이며,
    상기 네트워크 어댑터는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치로부터 데이터를 직접 판독하고, 상기 데이터를 제2 데이터 처리 시스템에 전송하거나, 상기 제2 데이터 처리 시스템으로부터 수신되는 데이터를 상기 PCIe 저장 장치에 직접 기록하며,
    상기 제2 데이터 처리 시스템은 네트워크를 통해 상기 제1 데이터 처리 시스템과 통신하는 데이터 처리 시스템인, 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 PCIe 저장 장치는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 데이터 요구에 의해 요구된 데이터의 제2 저장 어드레스를 획득하도록 구성되어 있는 어드레스 번역 유닛을 포함하는, 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서(linear ordering)가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스인, 데이터 처리 시스템.
  4. 제2항 또는 제3항에 있어서,
    상기 어드레스 번역 유닛은 제1 BAR 어드레스 레지스터를 구성하도록 추가로 구성되어 있고, 상기 제1 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 선형의 연속적인 저장 어드레스인, 데이터 처리 시스템.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    상기 어드레스 번역 유닛은 제2 BAR 어드레스 레지스터를 구성하도록 추가로 구성되어 있고, 상기 제2 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 상기 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 비선형의 연속적인 저장 어드레스이며, 상기 제2 저장 어드레스의 가상 어드레스는 상기 제2 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스인, 데이터 처리 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 CPU는 각각의 PCIe 저장 장치에 고유 식별자를 할당하며, 상기 고유 식별자는 각각의 PCIe 저장 장치를 식별하는 데 사용되는, 데이터 처리 시스템.
  7. 제6항에 있어서,
    상기 제1 어드레스 정보는 상기 고유 식별자 및 상기 PCIe 저장 장치의 논리 블록 어드레스(logical block address: LBA)를 포함하는, 데이터 처리 시스템.
  8. 제6항에 있어서,
    상기 관리 유닛은 상기 고유 식별자와 상기 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하도록 추가로 구성되어 있는, 데이터 처리 시스템.
  9. 제6항 내지 제8항 중 어느 한 항에 있어서,
    상기 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 상기 고유 식별자는 상기 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리(hashing processing)가 수행된 후 획득되는 식별자인, 데이터 처리 시스템.
  10. 제7항 또는 제8항에 있어서,
    상기 관리 유닛은 베이스 어드레스 획득 유닛 및 저장 어드레스 획득 유닛을 포함하며,
    상기 베이스 어드레스 획득 유닛은, 상기 데이터 처리 시스템이 상기 네트워크를 통해 상기 데이터 처리 시스템과 통신하는 상기 제2 데이터 처리 시스템의 제1 데이터 요구를 수신하면, 상기 제1 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하도록 구성되어 있으며,
    상기 저장 어드레스 획득 유닛은, 상기 BAR 내의 베이스 어드레스 및 상기 제1 데이터 요구에 수반되어 있는 LBA 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 요구된 데이터의 제1 저장 어드레스를 획득하도록 구성되어 있으며,
    상기 제1 저장 어드레스는 MMIO 어드레스인, 데이터 처리 시스템.
  11. 제1항 또는 제10항에 있어서,
    상기 CPU는 상기 획득된 제1 저장 어드레스를 상기 네트워크 어댑터에 등록하는, 데이터 처리 시스템.
  12. 제1항 또는 제10항에 있어서,
    상기 데이터 처리 시스템은 송신 유닛을 더 포함하며,
    상기 송신 유닛은 상기 관리 유닛에 의해 획득된 제1 저장 어드레스를 상기 제2 데이터 처리 시스템에 송신하도록 구성되어 있는, 데이터 처리 시스템.
  13. 제2항 또는 제11항에 있어서,
    상기 PCIe 제어기는, 상기 네트워크 어댑터에 의해 송신되고 상기 제1 저장 어드레스를 수반하는 데이터 요구를 획득하며,
    상기 어드레스 번역 유닛은 상기 제2 저장 어드레스의 데이터를 획득하고, 상기 획득된 데이터를 상기 네트워크 어댑터에 반환하거나, 상기 네트워크 어댑터에 의해 송신된 데이터를 상기 제2 저장 어드레스에 기록하는, 데이터 처리 시스템.
  14. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 관리 유닛은 글로벌 베이스 어드레스 획득 유닛 및 글로벌 저장 어드레스 획득 유닛을 더 포함하며,
    상기 글로벌 베이스 어드레스 획득 유닛은, 상기 데이터 처리 시스템이 제2 데이터 요구를 수신하면, 상기 제2 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 제2 데이터 처리 시스템의 BAR 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하도록 구성되어 있으며,
    상기 제2 데이터 요구는 상기 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 상기 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구이며, 그리고
    상기 글로벌 저장 어드레스 획득 유닛은, 상기 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 상기 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하도록 구성되어 있는, 데이터 처리 시스템.
  15. 제14항에 있어서,
    상기 제2 데이터 처리 시스템의 PCIe 제어기 내의 데이터 변환 유닛은, 상기 제2 데이터 처리 시스템 내의 상기 데이터 처리 시스템에 의해 송신되는 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며,
    상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스인, 데이터 처리 시스템.
  16. 중앙처리장치(CPU), 메모리, 주변 구성요소 상호접속 고속(Peripheral Component Interconnect Exprress: PCIe) 제어기, 네트워크 어댑터, 및 적어도 하나의 PCIe 저장 장치를 포함하는 데이터 처리 시스템에 적용되는 데이터 처리 방법으로서,
    상기 데이터 처리 시스템이 데이터 요구를 수신하면, 상기 데이터 요구에 수반되는 제1 어드레스 정보를 획득하는 단계;
    상기 제1 어드레스 정보에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계 - 상기 제1 저장 어드레스는 메모리 맵핑 입력/출력(MMIO) 어드레스임 -; 및
    상기 네트워크 어댑터가, 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치로부터 데이터를 직접 판독하고, 상기 데이터를 제2 데이터 처리 시스템에 전송하거나, 상기 제2 데이터 처리 시스템으로부터 수신되는 데이터를 상기 PCIe 저장 장치에 직접 기록하는 단계
    를 포함하며,
    상기 제2 데이터 처리 시스템은 네트워크를 통해 상기 제1 데이터 처리 시스템과 통신하는 데이터 처리 시스템인, 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 PCIe 저장 장치는 상기 제1 저장 어드레스에 따라 상기 PCIe 저장 장치 내의 상기 데이터 요구에 의해 요구된 데이터의 제2 저장 어드레스를 획득하는, 데이터 처리 방법.
  18. 제17항에 있어서,
    상기 제2 저장 어드레스는 물리 어드레스 또는 논리 어드레스이고, 상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스인, 데이터 처리 방법.
  19. 제17항 또는 제18항에 있어서,
    상기 PCIe 제어기가 제1 BAR 어드레스 레지스터를 구성하는 단계
    를 더 포함하며,
    상기 제1 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 제2 저장 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 선형의 연속적인 저장 어드레스인, 데이터 처리 방법.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 PCIe 제어기가 제2 BAR 어드레스 레지스터를 구성하는 단계
    를 더 포함하며,
    상기 제2 BAR 어드레스 레지스터는 상기 제1 저장 어드레스와 상기 제2 저장 어드레스의 가상 어드레스 간의 대응관계를 저장하며, 상기 제2 저장 어드레스는 비선형의 연속적인 저장 어드레스이며, 상기 제2 저장 어드레스의 가상 어드레스는 상기 제2 저장 어드레스에 대해 선형 순서가 수행된 후에 획득되는 어드레스인, 데이터 처리 방법.
  21. 제16항 내지 제20항 중 어느 한 항에 있어서,
    상기 CPU는 각각의 PCIe 저장 장치에 고유 식별자를 할당하며, 상기 고유 식별자는 각각의 PCIe 저장 장치를 식별하는 데 사용되는, 데이터 처리 방법.
  22. 제21항에 있어서,
    상기 제1 어드레스 정보는 상기 고유 식별자 및 상기 PCIe 저장 장치의 논리 블록 어드레스(LBA)를 포함하는, 데이터 처리 방법.
  23. 제21항에 있어서,
    상기 고유 식별자와 상기 PCIe 저장 장치의 BAR 내의 베이스 어드레스 간의 대응관계를 구축하는 단계
    를 더 포함하는 데이터 처리 방법.
  24. 제21항 내지 제23항 중 어느 한 항에 있어서,
    상기 고유 식별자는 벤더 식별자(Vender ID), 장치 식별자(Device ID), 및 하드디스크 시리얼 넘버 중 적어도 하나를 포함하거나; 상기 고유 식별자는 상기 Vender ID, Device ID, 및 하드디스크 시리얼 넘버 중 적어도 하나에 대해 해싱 처리가 수행된 후 획득되는 식별자인, 데이터 처리 방법.
  25. 제22항 또는 제23항에 있어서,
    상기 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계는,
    상기 제1 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 요구된 데이터의 BAR 내의 베이스 어드레스를 획득하는 단계; 및
    상기 BAR 내의 베이스 어드레스 및 상기 제1 데이터 요구에 수반되어 있는 LBA 어드레스에 따라 상기 PCIe 저장 장치 내의 요구된 데이터의 제1 저장 어드레스를 획득하는 단계
    를 포함하며,
    상기 제1 저장 어드레스는 MMIO 어드레스인, 데이터 처리 방법.
  26. 제16항 또는 제25항에 있어서,
    상기 CPU는 상기 획득된 제1 저장 어드레스를 상기 네트워크 어댑터에 등록하는, 데이터 처리 방법.
  27. 제17항 또는 제25항에 있어서,
    상기 데이터 처리 시스템이, 상기 획득된 제1 저장 어드레스를 상기 제2 데이터 처리 시스템에 송신하는 단계
    를 더 포함하는 데이터 처리 방법.
  28. 제16항 또는 제26항에 있어서,
    상기 PCIe 제어기는, 상기 네트워크 어댑터에 의해 송신되고 상기 제1 저장 어드레스를 수반하는 데이터 요구를 획득하며, 상기 제2 저장 어드레스의 데이터를 획득하고, 상기 획득된 데이터를 상기 네트워크 어댑터에 반환하거나, 상기 네트워크 어댑터에 의해 송신된 데이터를 상기 제2 저장 어드레스에 기록하는, 데이터 처리 방법.
  29. 제22항 또는 제25항에 있어서,
    상기 데이터 처리 시스템이 제2 데이터 요구를 수신하면, 상기 제2 데이터 요구에 수반되어 있는 상기 PCIe 저장 장치의 고유 식별자에 따라 상기 제2 데이터 처리 시스템의 BAR 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 베이스 어드레스를 획득하는 단계 - 상기 제2 데이터 요구는 상기 제2 데이터 처리 시스템에 데이터를 송신하는 요구 또는 상기 제2 데이터 처리 시스템으로부터 데이터를 판독하는 요구임 - ; 및
    상기 제2 데이터 처리 시스템의 BAR 내의 베이스 어드레스 및 상기 제2 데이터 요구에 수반되어 있는 LBA 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스를 획득하는 단계
    를 더 포함하는 데이터 처리 방법.
  30. 제29항에 있어서,
    상기 제2 데이터 처리 시스템의 PCIe 제어기는, 상기 제2 데이터 처리 시스템 내의 상기 데이터 처리 시스템에 의해 송신되는 상기 제2 데이터 요구에 의해 요구되는 데이터의 MMIO 어드레스에 따라, 상기 제2 데이터 처리 시스템 내의 상기 제2 데이터 요구에 의해 요구되는 데이터의 물리 어드레스 또는 논리 어드레스를 획득하며,
    상기 물리 어드레스는 데이터가 직접 판독될 수 있는 선형의 연속적인 어드레스이며, 상기 논리 어드레스는 선형 순서가 비선형의 연속적인 물리 어드레스에 대해 수행된 후에 획득되는 어드레스인, 데이터 처리 방법.
KR1020147032585A 2013-10-29 2013-10-29 데이터 처리 시스템 및 데이터 처리 방법 KR101670342B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/086170 WO2015061971A1 (zh) 2013-10-29 2013-10-29 数据处理系统和数据处理的方法

Publications (2)

Publication Number Publication Date
KR20150070046A true KR20150070046A (ko) 2015-06-24
KR101670342B1 KR101670342B1 (ko) 2016-10-28

Family

ID=51193110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032585A KR101670342B1 (ko) 2013-10-29 2013-10-29 데이터 처리 시스템 및 데이터 처리 방법

Country Status (8)

Country Link
US (3) US9459798B2 (ko)
EP (2) EP2889780B1 (ko)
JP (1) JP6014271B2 (ko)
KR (1) KR101670342B1 (ko)
CN (2) CN106933775B (ko)
AU (1) AU2013388031C1 (ko)
ES (2) ES2628328T3 (ko)
WO (1) WO2015061971A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101670342B1 (ko) * 2013-10-29 2016-10-28 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 시스템 및 데이터 처리 방법
US10162786B2 (en) 2014-12-01 2018-12-25 SK Hynix Inc. Storage node based on PCI express interface
US9792245B2 (en) * 2014-12-09 2017-10-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express (PCIe) devices with efficient memory mapping by remapping a plurality of base address registers (BARs)
CN104657299B (zh) * 2015-02-26 2018-01-12 新华三技术有限公司 Ict融合设备及其存储板管理方法和装置
US20160283156A1 (en) * 2015-03-23 2016-09-29 Kabushiki Kaisha Toshiba Key-value drive hardware
US9886194B2 (en) * 2015-07-13 2018-02-06 Samsung Electronics Co., Ltd. NVDIMM adaptive access mode and smart partition mechanism
CN105183684B (zh) * 2015-09-09 2019-01-25 成都思鸿维科技有限责任公司 数据处理装置、方法及系统
CN105404597B (zh) * 2015-10-21 2018-10-12 华为技术有限公司 数据传输的方法、设备及系统
US10054636B2 (en) * 2015-10-23 2018-08-21 Intel IP Corporation Device, system and method to support communication of test, debug or trace information with an external input/output interface
CN106713183B (zh) * 2015-10-30 2020-03-17 新华三技术有限公司 网络设备的接口板以及该网络设备和报文转发方法
CN105353989B (zh) 2015-11-19 2018-12-28 华为技术有限公司 存储数据访问方法及相关的控制器、设备、主机和系统
US10877674B2 (en) * 2016-01-29 2020-12-29 Hewlett Packard Enterprise Development Lp Determining layout templates identifying storage drives
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
US10042720B2 (en) 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration
US10002018B2 (en) 2016-02-23 2018-06-19 International Business Machines Corporation Migrating single root I/O virtualization adapter configurations in a computing system
US10042723B2 (en) 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10025584B2 (en) 2016-02-29 2018-07-17 International Business Machines Corporation Firmware management of SR-IOV adapters
CN105824761B (zh) * 2016-03-10 2019-01-08 珠海豹趣科技有限公司 一种物理内存信息获取方法及装置
CN105893289B (zh) * 2016-03-30 2019-02-12 华为技术有限公司 内存映射输入输出地址分配方法、装置及计算机系统
US10409754B2 (en) * 2016-04-28 2019-09-10 Smart Modular Technologies, Inc. Interconnected memory system and method of operation thereof
CN106020731B (zh) * 2016-05-23 2019-07-02 中国科学技术大学 存储设备、存储设备阵列和网络适配器
US20170351639A1 (en) * 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
DK3358463T3 (da) * 2016-08-26 2020-11-16 Huawei Tech Co Ltd Fremgangsmåde, anordning og system til implementering af hardwareaccelerationsbehandling
US9760512B1 (en) 2016-10-21 2017-09-12 International Business Machines Corporation Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9740647B1 (en) 2016-10-21 2017-08-22 International Business Machines Corporation Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9715469B1 (en) 2016-10-21 2017-07-25 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9720862B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9720863B1 (en) * 2016-10-21 2017-08-01 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9785451B1 (en) 2016-10-21 2017-10-10 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
CN113655952A (zh) 2016-11-26 2021-11-16 华为技术有限公司 数据迁移的方法、主机、及固态存储设备
CN107273213B (zh) * 2017-06-27 2024-04-19 联想(北京)有限公司 一种计算控制方法、网卡及电子设备
US10387347B2 (en) 2017-08-18 2019-08-20 Quanta Computer Inc. Method to locate SAS JBOD cable routing
CN107579892A (zh) * 2017-08-29 2018-01-12 郑州云海信息技术有限公司 一种基于RapidIO协议和RDMA技术的通信方法
KR101980190B1 (ko) 2017-09-25 2019-05-21 서울대학교산학협력단 입출력 디바이스 제어 장치, 그것의 동작 방법 및 입출력 디바이스 제어 장치 드라이버의 동작 방법
CN107844435A (zh) * 2017-11-08 2018-03-27 北京锐安科技有限公司 一种缓存系统、方法及装置
US11321249B2 (en) * 2018-03-26 2022-05-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDS in an array
US10838763B2 (en) * 2018-07-17 2020-11-17 Xilinx, Inc. Network interface device and host processing device
CN110764688B (zh) * 2018-07-27 2023-09-05 杭州海康威视数字技术股份有限公司 对数据进行处理的方法和装置
TWI673610B (zh) * 2018-11-09 2019-10-01 財團法人資訊工業策進會 遠端工作系統及其工作方法
CN113468090B (zh) * 2020-03-30 2024-04-05 浙江宇视科技有限公司 一种PCIe通信方法、装置、电子设备及可读存储介质
CN111586034B (zh) * 2020-04-30 2022-06-03 龙芯中科技术股份有限公司 数据处理系统及方法
CN112445735A (zh) * 2020-11-20 2021-03-05 深圳致星科技有限公司 一种联邦学习数据传输方法、计算机设备、系统及存储介质
EP4254207A4 (en) * 2020-12-21 2024-01-10 Huawei Tech Co Ltd DATA PROCESSING DEVICE AND METHOD AND ASSOCIATED DEVICE
CN112597094A (zh) * 2020-12-24 2021-04-02 联想长风科技(北京)有限公司 一种提高rdma传输效率的装置及方法
EP4365748A1 (en) * 2021-07-23 2024-05-08 Huawei Technologies Co., Ltd. Data access method and related device
CN115048227B (zh) * 2022-08-15 2022-12-09 阿里巴巴(中国)有限公司 数据处理方法、系统及存储介质
CN117453117A (zh) * 2022-08-17 2024-01-26 北京超弦存储器研究院 一种网络存储处理设备、存储服务器、数据存储及读取方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457121B1 (en) * 1999-03-17 2002-09-24 Intel Corporation Method and apparatus for reordering data in X86 ordering
US20100146222A1 (en) * 2008-12-10 2010-06-10 Michael Brian Cox Chipset Support For Non-Uniform Memory Access Among Heterogeneous Processing Units
WO2012167531A1 (zh) * 2011-10-27 2012-12-13 华为技术有限公司 一种数据快速分发方法和装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1149736A (zh) * 1995-06-05 1997-05-14 北京航空航天大学 一种分布式存储器共享管理方法
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US7711793B1 (en) * 2001-07-17 2010-05-04 Adaptec, Inc. No single point of failure RAID box using SATA drives
JP2003280825A (ja) * 2002-03-22 2003-10-02 Fujitsu Ltd ストレージシステム
JP2005149082A (ja) * 2003-11-14 2005-06-09 Hitachi Ltd ストレージ制御装置、及びストレージ制御装置の制御方法
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US7269708B2 (en) * 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
US20080098197A1 (en) * 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
US8112582B2 (en) * 2008-03-10 2012-02-07 Lsi Corporation Redundant array of inexpensive disks configuration using simple network management protocol
JP2010039644A (ja) * 2008-08-01 2010-02-18 Nec Electronics Corp 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
CN101819543A (zh) * 2010-02-01 2010-09-01 成都市华为赛门铁克科技有限公司 快照数据处理方法和系统以及存储设备
US8799519B2 (en) * 2011-06-27 2014-08-05 Via Technologies, Inc. Network-to-network bridge
CN104094244B (zh) * 2011-09-30 2017-05-31 英特尔公司 用于对于系统协处理器的直接i/o访问的方法和装置
BR112014017543A2 (pt) * 2012-01-17 2017-06-27 Intel Corp técnicas de validação de comando para o acesso a um dispositivo de armazenamento por um cliente remoto
US8554963B1 (en) * 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US8645594B2 (en) * 2012-06-29 2014-02-04 Intel Corporation Driver-assisted base address register mapping
US10496152B2 (en) * 2013-09-27 2019-12-03 Intel Corporation Power control techniques for integrated PCIe controllers
KR101670342B1 (ko) * 2013-10-29 2016-10-28 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 시스템 및 데이터 처리 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457121B1 (en) * 1999-03-17 2002-09-24 Intel Corporation Method and apparatus for reordering data in X86 ordering
US20100146222A1 (en) * 2008-12-10 2010-06-10 Michael Brian Cox Chipset Support For Non-Uniform Memory Access Among Heterogeneous Processing Units
KR20100067067A (ko) * 2008-12-10 2010-06-18 엔비디아 코포레이션 이종 프로세싱 유닛들 사이의 불균일 메모리 액세스를 위한 칩셋 서포트
WO2012167531A1 (zh) * 2011-10-27 2012-12-13 华为技术有限公司 一种数据快速分发方法和装置

Also Published As

Publication number Publication date
ES2779551T3 (es) 2020-08-18
EP2889780A1 (en) 2015-07-01
CN103946828A (zh) 2014-07-23
ES2628328T3 (es) 2017-08-02
CN106933775B (zh) 2021-08-20
US9329783B2 (en) 2016-05-03
US20150234597A1 (en) 2015-08-20
US9678918B2 (en) 2017-06-13
AU2013388031C1 (en) 2016-04-28
EP3125126A1 (en) 2017-02-01
US20170017607A1 (en) 2017-01-19
WO2015061971A1 (zh) 2015-05-07
JP2015537310A (ja) 2015-12-24
EP2889780B1 (en) 2017-04-12
CN103946828B (zh) 2017-02-22
CN106933775A (zh) 2017-07-07
US20150120969A1 (en) 2015-04-30
AU2013388031B2 (en) 2016-02-04
EP2889780A4 (en) 2015-07-01
JP6014271B2 (ja) 2016-10-25
EP3125126B1 (en) 2020-01-01
US9459798B2 (en) 2016-10-04
AU2013388031A1 (en) 2015-05-14
KR101670342B1 (ko) 2016-10-28

Similar Documents

Publication Publication Date Title
KR101670342B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
KR102427561B1 (ko) Fpga 기반 가속화를 위한 새로운 ssd 구조
US10241951B1 (en) Device full memory access through standard PCI express bus
US10372340B2 (en) Data distribution method in storage system, distribution apparatus, and storage system
TWI718969B (zh) 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品
CN112130748B (zh) 一种数据访问方法、网卡及服务器
CN100454283C (zh) 虚拟通用串行总线设备系统及其数据传输方法
CN105556930A (zh) 针对远程存储器访问的nvm express控制器
US9087162B2 (en) Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
CN115374046B (zh) 一种多处理器数据交互方法、装置、设备及存储介质
CN103577125A (zh) 一种应用于高端磁盘阵列的跨控制器组写镜像方法和装置
JP2007004710A (ja) ストレージアクセス方式、データ転送装置、ストレージアクセス方法、及びプログラム
CN105765542A (zh) 访问文件的方法、分布式存储系统和存储节点
US11093153B1 (en) Inter-drive data transfer
KR20200143922A (ko) 메모리 카드 및 이를 이용한 데이터 처리 방법
CN111642137A (zh) 快速发送写数据准备完成消息的方法、设备和系统
CN110221995B (zh) 一种集成智能网卡的数据管理方法及系统
CN107155307B (zh) 访问文件的方法、系统和主机
CN110737396A (zh) 数据复制的方法、设备和计算机程序产品

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