KR20190064290A - Method and Apparatus for acceleration of data sending and receiving based on network interface card - Google Patents

Method and Apparatus for acceleration of data sending and receiving based on network interface card Download PDF

Info

Publication number
KR20190064290A
KR20190064290A KR1020170163727A KR20170163727A KR20190064290A KR 20190064290 A KR20190064290 A KR 20190064290A KR 1020170163727 A KR1020170163727 A KR 1020170163727A KR 20170163727 A KR20170163727 A KR 20170163727A KR 20190064290 A KR20190064290 A KR 20190064290A
Authority
KR
South Korea
Prior art keywords
data
storage
lba
stored
nic
Prior art date
Application number
KR1020170163727A
Other languages
Korean (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 한국전자통신연구원
Priority to KR1020170163727A priority Critical patent/KR20190064290A/en
Publication of KR20190064290A publication Critical patent/KR20190064290A/en

Links

Images

Classifications

    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0024Peripheral component interconnect [PCI]

Abstract

The present invention relates to a data transmission/reception acceleration method and an apparatus thereof and, more specifically, to a method for simultaneously processing a data input/output function, which is conventionally processed in only a CPU, in a CPU and a network interface card (NIC), and an apparatus thereof. According to the present invention, the data transmission/reception acceleration apparatus comprises: a storage storing data; a CPU managing a data address in the storage; and an NIC checking a valid data address from the CPU when storing data in the storage or reading the stored data and using the checked valid data address to directly store or read the data to or from the storage. According to one embodiment of the present invention, CPU resources used for data input/output can be minimized, thereby providing an effect of increasing the total system performance.

Description

네트워크 인터페이스 카드를 이용한 데이터 송수신 가속 방법 및 장치 {Method and Apparatus for acceleration of data sending and receiving based on network interface card}[0001] The present invention relates to a method and apparatus for accelerating data transmission and reception using a network interface card,

본 발명은 데이터 가속 기술에 관한 것으로, 특히, 기존 중앙처리장치(CPU)에서 전담하여 처리하던 데이터 입출력 기능을, 네트워크 인터페이스 카드(NIC, Network Interface Card)와 함께 분담하여 처리하는 방법 및 장치에 관한 것이다. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to data acceleration technology, and more particularly, to a method and apparatus for sharing data I / O functions dedicated to a central processing unit (CPU) together with a network interface card (NIC) will be.

기존의 컴퓨터 시스템은 주로 컴퓨트-인텐시브 (compute-intensive) 워크로드 (workload)만을 대상으로 하였다. 따라서 CPU 대역폭에 비해 상대적으로 낮은 속도의 I/O 디바이스를 가정하고 있어 적은 양의 CPU 자원으로도 데이터 입출력 작업을 충분히 감당할 수 있었다. Existing computer systems were primarily intended for compute-intensive workloads only. Therefore, I / O devices are assumed to be relatively low in comparison with the CPU bandwidth, so data input / output operations can be sufficiently handled with a small amount of CPU resources.

하지만, 최근 들어, 빅데이터(BigData), 맵리듀스(MapReduce)와 같이 컴퓨트-인텐시브 워크로드와 데이터-인텐시브 (data-intensive) 워크로드 양쪽을 모두 만족시켜야 하는 새로운 응용이 등장하였다. 또한, CCN (Content Centric Network)이나 NDN (Named Data Network)과 같이 데이터 캐싱에 기반한 새로운 네트워크 구조도 개발되는 추세이다. Recently, however, new applications have emerged that require both compute-intensive workloads and data-intensive workloads, such as BigData and MapReduce. In addition, a new network structure based on data caching such as CCN (Content Centric Network) or NDN (Named Data Network) is also being developed.

또한 디바이스 측면에서도 NVMe 스토리지와 같은 고속의 저장 장치와 수 십 기가(giga)를 지원하는 고성능의 네트워크 인터페이스 카드 등이 시장에 출시되고 있다. 하지만, 기존의 데이터 입출력 구조로는 이런 고성능의 디바이스를 채택함에도 불구하고 시스템 성능이 충분히 개선되지 못하는 한계가 있었다. On the device side, high-speed storage devices such as NVMe storage and high-performance network interface cards supporting dozens of giga are also on the market. However, the conventional data input / output structure has a limitation in that the system performance can not be sufficiently improved despite adopting such a high-performance device.

도 1을 참조하여, 종래 일반적인 데이터 송수신 가속 장치 장치 및 이를 활용한 데이터 입출력 방법을 설명하면 다음과 같다. 일반적으로 로컬 스토리지(20)에 저장된 데이터를 연결된 외부 네트워크(50)으로 송신하기 위해서는, 우선 응용 프로그램이 로컬 스토리지(20)로부터 데이터를 독출하여 이를 운영체제(Operating System)의 네트워크 스택(network stack)에 전달하게 된다. 상기 네트워크 스택은 전달된 데이터를 패킷(packet)으로 변환하여 NIC(30)로 전달하고, 이후 NIC(30)는 전달된 데이터 패킷을 물리적 신호로 변환하여 네트워크(50)을 통해 최종 목적지로 송신하게 된다. Referring to FIG. 1, a conventional data transmission / reception accelerator device and a data input / output method using the same will be described. Generally, in order to transmit data stored in the local storage 20 to the connected external network 50, an application program first reads data from the local storage 20 and transmits the read data to a network stack of an operating system . The network stack converts the transferred data into a packet and transmits it to the NIC 30. The NIC 30 converts the transferred data packet into a physical signal and transmits the packet to the final destination through the network 50 do.

또한, 데이터를 수신하는 과정은, NIC(30)에서 네트워크(50)을 통해 데이터 패킷을 수신하면 이를 호스트(10)에 전달하고, 호스트내 운영체제의 네트워크 스택을 거쳐 응용 프로그램에 전달되고, 이를 최종적으로 스토리지(20)에 저장하게 된다. When receiving the data packet through the network 50 in the NIC 30, the data is transmitted to the host 10 and is transmitted to the application program via the network stack of the operating system in the host. In the storage 20.

상기 모든 과정에서, NIC(30)는 네트워크(50)와의 통신 연결 기능만을 수행하고, 실제 스토리지(20)로 데이터 입출력 과정은 호스트 CPU(10U) 자원이 전담하게 된다. 따라서, 데이터 송수신 속도가 증가하거나, 데이터 량이 증가하게 되면, CPU(10) 자원의 사용량 또한 비례적으로 증가하게 되는 구조이다. 또한, 상기 데이터 송신 및/또는 수신 과정에서, 여러 번의 메모리 복제를 수행하게 되는 다단계 구조이다. In the above process, the NIC 30 only performs a communication connection function with the network 50, and the data input / output process to the actual storage 20 is performed by the host CPU 10U. Therefore, when the data transmission / reception speed increases or the data amount increases, the usage amount of the CPU 10 resource also increases proportionally. In addition, it is a multi-stage structure in which the memory copying is performed a plurality of times during the data transmission and / or reception.

최근 들어, CPU의 성능 증가 속도에 비해 상대적으로 데이터 송수신 및 저장 장치의 성능이 훨씬 빠르게 증가하고 있다. NVMe와 같이 대역폭이 매우 큰 스토리지를 최대한 활용하기 위해서는 그에 상응하는 CPU 자원의 사용량이 증가하게 된다. 결국, CPU 자원이 데이터 입출력을 위해 과도하게 사용되어 지게 되고, 이는 다시 컴퓨트-워크로드의 처리 속도가 느려지게 되어 전체적인 성능 저하가 발생하게 되는 문제점이 있다. In recent years, the performance of data transmission / reception and storage devices has increased much more rapidly than the rate of CPU performance increase. In order to make the best use of very high bandwidth storage such as NVMe, the corresponding CPU resource usage increases. As a result, the CPU resources are excessively used for data input / output, which causes the processing speed of the compute-workload to be slowed down, resulting in a deterioration in overall performance.

구체적으로는, 빈번한 데이터 입출력 요청은 CPU와 메모리 자원의 사용량을 증가시켜 자원 경쟁을 컴퓨트 워크로드와 데이터 워크로드 간 자원 경쟁을 야기함으로써 시스템 성능 저하를 초래한다. 또한, CPU 속도의 증가는 점점 정체되고 있는 반면 데이터 입출력 장치의 속도는 상대적으로 빠르게 상승함에 따라 제한된 CPU 자원에 대한 경쟁은 점점 더 심해지고 있다. 또한, 데이터 입출력을 위해서는 반드시 운영체제의 소프트웨어 스택을 거쳐야 하기 때문에, 이로 인해서도 상당한 지연(latency)이 발생하게 되는 문제점이 있다. Specifically, frequent data I / O requests increase CPU and memory resource usage, causing resource competition between the compute workload and data workload, resulting in system performance degradation. In addition, while the increase in CPU speed is becoming stagnant, the speed of data I / O devices is rising relatively fast, and competition for limited CPU resources is getting worse. In addition, since data input / output must go through the software stack of the operating system, there is a problem in that latency is considerable.

관련하여, 전술한 기술분야에서, 종래 제안된 내용으로는, 선행특허 '데이터 고속 입출력을 위한 데이터 입출력 가속 장치 및 그 운용 방법 (출원번호 10-2005-0044270, 2005년5월25일)'이 있다. 단, 상기 선행특허는 네트워크 저장 장치와 서버 간 연결을 위한 iSCSI(Internet Small Computer System Interface) 처리 과정에서의 읽기 및 쓰기 명령 수행시 부하가 큰 부분에 대해서 각각 전용 하드웨어를 사용하여 부하를 분산시키고, 데이터 처리 과정에서의 데이터 이동경로를 최적화하는 부분에 대해 개시하고 있으나, 상기 선행특허 개시로도 전술한 상기 종래 문제점을 모두 해결하지 못하는 문제점이 있다.In relation to the above-mentioned technical field, conventionally proposed contents include a data input / output accelerator for data high-speed input / output and its operation method (Application No. 10-2005-0044270, May 25, 2005) have. However, in the prior art, the load is distributed using dedicated hardware for a large load during a read / write command in an Internet Small Computer System Interface (iSCSI) process for connection between a network storage device and a server, The present invention is directed to a method of optimizing a data movement path in a data processing process.

따라서, 본 발명의 목적은, 전술한 종래 기술의 문제점을 해결함과 동시에, 고속 및 저지연 데이터 송수신이 가능하도록 하는 데이터 가속 방법 및 장치를 제공하는 데 있다. SUMMARY OF THE INVENTION It is therefore an object of the present invention to provide a data acceleration method and apparatus that can solve the problems of the above-described conventional techniques and enable high-speed and low-delay data transmission and reception.

또한, 본 발명의 다른 목적은, 고속의 데이터 송수신을 지원함에 있어, 네트워크 인터페이스 카드(NIC)에서 데이터 송수신을 직접 처리함으로써, 데이터 송수신을 위한 CPU 부하를 최소화하는, 데이터 가속 방법 및 장치를 제공하는 데 있다. It is another object of the present invention to provide a data acceleration method and apparatus for minimizing the CPU load for data transmission and reception by directly processing data transmission and reception in a network interface card (NIC) in supporting high speed data transmission and reception There is.

또한, 본 발명의 또 다른 목적은, 데이터 송수신 과정에서 CPU 운영체제의 네트워크 스택을 활용하지 않고도, 고속의 데이터 송수신을 지원하는 데이터 입출력 가속 방법 및 장치을 제공하는 데 있다.It is still another object of the present invention to provide a data input / output acceleration method and apparatus for supporting high-speed data transmission / reception without using a network stack of a CPU operating system in a data transmission / reception process.

본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허청구범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.Other objects and advantages of the present invention will become apparent from the following description, and it will be understood by those skilled in the art that the present invention is not limited thereto. It will also be readily apparent that the objects and advantages of the invention may be realized and attained by means of the instrumentalities and combinations particularly pointed out in the appended claims.

상기 목적을 달성하기 위한, 본 발명의 데이터 송수신 가속 장치는, 데이터를 저장하는 스토리지, 상기 스토리지내 데이터 어드레스를 관리하는 중앙처리장치(CPU), 및 스토리지내에 데이터를 저장하거나 저장된 데이터를 독출하고자 하는 경우, 상기 중앙처리장치로부터 유효한 데이터 어드레스를 확인하고, 상기 확인된 유효한 데이터 어드레스를 활용하여 스토리지내 데이터를 직접 저장하거나 독출하는 네트워크 인터페이스 카드(NIC)를 포함하여 구성된 것을 특징으로 한다. According to an aspect of the present invention, there is provided a data transmission / reception accelerating apparatus comprising: a storage for storing data; a central processing unit (CPU) for managing data addresses in the storage; And a network interface card (NIC) for confirming a valid data address from the central processing unit and directly storing or reading data in the storage using the valid data address.

여기서, 상기 스토리지, 중앙처리장치(CPU) 및 네트워크 인터페이스 카드(NIC)는 PCI 버스(Peripheral Component Interconnect Bus)를 통해 내부 통신을 수행한다. Here, the storage, the central processing unit (CPU), and the network interface card (NIC) perform internal communication through a PCI bus (Peripheral Component Interconnect Bus).

여기서, 상기 데이터 어드레스는 논리적 블록 어드레스 (LBA, Logical Block Address)를 포함한다. Here, the data address includes a logical block address (LBA).

여기서, 상기 중앙처리장치(CPU)는, 스토리지에 저장될 데이터 또는 스토리지내에 저장된 데이터를 일시 저장하는 임시 저장 수단과, 데이터 가속 기능을 수행하는 I/O 가속 컨트롤러를 포함하되, 상기 CPU내 I/O 가속 컨트롤러는, 상기 스토리지에 저장될 데이터 논리적 블록 어드레스(LBA) 또는 스토리지내에 저장된 논리적 블록 어드레스(LBA)를 확인하는 데이터 LBA 변환부, 및 상기 네트워크 인터페이스 카드(NIC)와의 통신을 수행하는 NIC 통신부를 포함한다. The central processing unit (CPU) includes temporary storage means for temporarily storing data to be stored in the storage or storage, and an I / O acceleration controller for performing a data acceleration function. The I / O accelerating controller includes a data LBA converter for confirming a data logical block address (LBA) to be stored in the storage or a logical block address (LBA) stored in the storage, and a NIC communication part for performing communication with the network interface card (NIC) .

여기서, 상기 임시 저장 수단은 메모리 블록 풀(memory block pool)로도 불려진다. Here, the temporary storage means may also be referred to as a memory block pool.

여기서, 상기 네트워크 인터페이스 카드(NIC)는 데이터 가속 기능을 수행하는 I/O 가속 엔진를 포함하되, 상기 NIC내 I/O 가속 엔진는, 네트워크으로부터 데이터를 수신하거나 데이터 출력 요청을 수신하는 네트워크 데이터 수신부(receiver), 네트워크를 통해 데이터를 송신하는 네트워크 데이터 송신부(sender), 상기 중앙처리장치(CPU)와의 통신을 수행하는 호스트 통신부, 데이터 송수신 가속 기능을 위해, 상기 논리적 블록 어드레스(LBA)를 저장하는 세션 테이블(session table), 상기 세션 테이블에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 데이터를 저장하는 데이터 기록부(writer), 및 상기 세션 테이블에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 저장된 데이터를 독출하는 데이터 독출부(reader)를 포함한다. The network interface card (NIC) includes an I / O acceleration engine for performing a data acceleration function. The I / O acceleration engine in the NIC includes a network data receiver (receiver) for receiving data from a network or receiving a data output request, A network data transmission unit for transmitting data through a network, a host communication unit for performing communication with the central processing unit (CPU), a session table for storing the logical block address (LBA) a data writer for storing data in the storage using a logical block address (LBA) stored in the session table, and a logical block address (LBA) stored in the session table, And a data reader for reading the stored data.

또한, 상기 목적을 달성하기 위한, 본 발명의 네트워크 인터페이스 카드(NIC)를 이용한 데이터 송수신 가속 방법은, 스토리지에 저장될 데이터를 수신하는 단계, 상기 수신된 데이터를 일시 저장하는 단계, 호스트로부터 상기 데이터가 저장될 스토리지의 논리적 블록 어드레스(LBA)를 수신하여 저장하는 단계, 및 상기 논리적 블록 어드레스(LBA)를 이용하여, 상기 일시 저장된 데이터를 스토리지에 저장하는 단계를 포함하여 구성된 것을 특징으로 한다. According to another aspect of the present invention, there is provided a method for accelerating data transmission / reception using a network interface card (NIC), comprising the steps of: receiving data to be stored in a storage; temporarily storing the received data; Receiving and storing a logical block address (LBA) of a storage to be stored, and storing the temporarily stored data in the storage using the logical block address (LBA).

여기서, 상기 수신된 데이터를 일시 저장한 후, 세션 테이블에 해당 데이터 수신을 등록하는 단계를 더 포함한다. Here, the method may further include temporarily storing the received data and then registering the received data in the session table.

여기서, 스토리지내 저장 공간이 없을 경우, 호스트로부터 수신되는 스토리지의 논리적 블록 어드레스(LBA)는 널(null) 값을 가진다. Here, when there is no storage space in the storage, the logical block address (LBA) of the storage received from the host has a null value.

여기서, 상기 스토리지내에 데이터 저장이 완료된 후, 데이터 저장 요청자에 완료 정보(ACK) 를 전송하는 단계를 더 포함한다. Here, the method further includes transmitting completion information (ACK) to the data storage requester after the data storage in the storage is completed.

여기서, 상기 데이터 요청자에 전송되는 완료 정보(ACK)는, 해당 데이터의 세션 정보를 참조하여 생성한다. Here, the completion information (ACK) transmitted to the data requestor is generated by referring to the session information of the data.

또한, 상기 목적을 달성하기 위한, 본 발명의 또 다른 네트워크 인터페이스 카드(NIC)를 이용한 데이터 송수신 가속 방법은, 스토리지내에 저장된 데이터에 대한 데이터 독출 요청을 수신하는 단계, 호스트로부터 상기 데이터가 저장된 스토리지의 논리적 블록 어드레스(LBA)를 수신하여 저장하는 단계, 상기 논리적 블록 어드레스(LBA)를 이용하여, 상기 스토리지에 저장된 데이터를 독출하여 일시 저장하는 단계, 및 상기 일시 저장된 데이터를 데이터 독출 요청자에게 전송하는 단계를 포함하여 구성된 것을 특징으로 한다. According to another aspect of the present invention, there is provided a method for accelerating data transmission / reception using another network interface card (NIC), comprising the steps of: receiving a data read request for data stored in a storage; Receiving and storing a logical block address (LBA), reading and temporarily storing data stored in the storage using the logical block address (LBA), and transmitting the temporarily stored data to a data read requestor And a control unit.

여기서, 상기 데이터 독출 요청을 수신하면, 세션 테이블에 해당 데이터 요청을 등록하는 단계를 더 포함한다. The method further includes registering the data request in the session table upon receipt of the data read request.

여기서, 스토리지내 저장된 데이터가 없을 경우, 호스트로부터 수신되는 스토리지의 논리적 블록 어드레스(LBA)는 널(null) 값을 가진다. Here, if there is no stored data in the storage, the logical block address (LBA) of the storage received from the host has a null value.

여기서, 데이터 전송이 완료된 후, 상기 데이터 독출 요청자로부터 완료 정보(ACK)를 수신하는 단계를 더 포함한다. Here, after completing the data transfer, receiving the acknowledgment information (ACK) from the data read requestor.

여기서, 상기 수신된 완료 정보(ACK)를 세션 테이블에 저장하는 단계를 더 포함한다. Here, the method further includes storing the received complete information (ACK) in a session table.

본 발명의 실시에에 따르면 다음과 같은 효과가 있다.According to the embodiment of the present invention, the following effects can be obtained.

첫째, 데이터 입출력 또는 송수신에 CPU 자원을 최소화하는 것이 가능하다. 이는 전체적인 시스템 성능을 향상시키는 효과가 있다.First, it is possible to minimize CPU resources for data input / output or transmission / reception. This has the effect of improving overall system performance.

둘째, 본 발명의 데이터 송수신 장치는, CPU자원의 최소 활용을 통해, 빅데이터(BigData), 맵리듀스(MapReduce), 오브젝트 스토리지(Object storage) 등과 같이 고속의 데이터 송수신을 필요로 하는 응용에 활용될 수 있다. Second, the data transmitting and receiving apparatus of the present invention can be utilized for applications requiring high-speed data transmission and reception such as BigData, MapReduce, Object storage, etc. through the minimum utilization of CPU resources .

세째, 본 발명의 데이터 송수신 장치는, CPU자원의 최소 활용을 통해, CCN이나 NDN과 같이 네트워크 노드에서의 데이터 캐싱에 기반하여 고속의 데이터 송수신이 필요한 네트워크 노드에 활용될 수 있다. Third, the data transmitting / receiving apparatus of the present invention can be utilized for a network node that requires high-speed data transmission / reception based on data caching in a network node such as a CCN or an NDN through minimum utilization of CPU resources.

도 1은 종래 일반적인 데이터 송수신 가속 장치를 도시한 것이다.
도 2는 본 발명에 따른 데이터 송수신 가속 장치를 도시한 것이다.
도 3은 본 발명에 따른 호스트내 I/O 가속 컨트롤러를 도시한 것이다.
도 4는 본 발명에 따른 네트워크 인터페이스 카드(NIC)내 I/O 가속 엔진을 도시한 것이다.
도 5는 본 발명에 따른 데이터 독출(출력) 과정을 흐름도를 도시한 것이다.
도 6은 본 발명에 따른 데이터 저장(입력) 과정을 흐름도를 도시한 것이다.
FIG. 1 illustrates a conventional data transmission / reception acceleration apparatus.
FIG. 2 illustrates a data transmission / reception accelerating apparatus according to the present invention.
3 illustrates an I / O acceleration controller in a host according to the present invention.
4 illustrates an I / O acceleration engine in a network interface card (NIC) according to the present invention.
FIG. 5 is a flowchart of a data readout (output) process according to the present invention.
FIG. 6 is a flowchart illustrating a data storage (input) process according to the present invention.

이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein.

본 발명의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.In the following description, well-known functions or constructions are not described in detail since they may obscure the subject matter of the present invention. In the drawings, parts not related to the description of the present invention are omitted, and like parts are denoted by similar reference numerals.

본 발명에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 발명의 범위에 포함된다. In the present invention, the components that are distinguished from each other are intended to clearly describe the respective features, and do not necessarily mean that the components are separated. That is, a plurality of components may be integrated into one hardware or software unit, or a single component may be distributed into a plurality of hardware or software units. Accordingly, such integrated or distributed embodiments are included within the scope of the present invention, unless otherwise noted.

본 발명에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시 예도 본 발명의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 발명의 범위에 포함된다. In the present invention, the components described in the various embodiments are not necessarily essential components, and some may be optional components. Accordingly, embodiments consisting of a subset of the components described in one embodiment are also included in the scope of the present invention. Also, embodiments that include other components in addition to the components described in the various embodiments are also included in the scope of the present invention.

이하, 첨부한 도면을 참조하여 본 발명의 실시 예들에 대해서 설명한다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.

도 2는 본 발명에 따른 데이터 송수신 가속 장치를 도시한 것이다. 본 발명의 데이터 송수신 가속 장치는, 호스트 또는 중앙처리장치(10, CPU), 로컬 스토리지(20), 네트워크 인터페이스 카드(30,NIC)를 포함한다. 또한, 상기 스토리지(20), 중앙처리장치(10, CPU) 및 네트워크 인터페이스 카드(30, NIC)는 모두 PCI 버스(40, Peripheral Component Interconnect Bus)를 통해 내부 통신을 수행한다. 또한, 상기 NIC(30)는 다른 네트워크(50)와 연결되어 있다. FIG. 2 illustrates a data transmission / reception accelerating apparatus according to the present invention. The data transmission and reception accelerating apparatus of the present invention includes a host or a central processing unit (CPU) 10, a local storage 20, and a network interface card 30 (NIC). In addition, the storage 20, the central processing unit 10, the CPU, and the network interface card 30 (NIC) all perform internal communication via a PCI bus (Peripheral Component Interconnect Bus) 40. In addition, the NIC 30 is connected to another network 50.

또한, 상기 CPU(10)는 데이터 입출력 가속 기능을 위해, I/O 어플리케이션(11)내에 본 발명 실시예에 따른 I/O 가속 컨트롤러(111)를 구비한다. 또한, CPU(10)는 데이터 입출력 가속 기능을 위해, 메인 메모리(12)내에 본 발명 실시예에 따른 임시 저장 수단으로서 메모리 블록 풀(121, memory block pool)을 구비한다.In addition, the CPU 10 includes an I / O acceleration controller 111 according to the embodiment of the present invention in the I / O application 11 for data input / output acceleration function. In addition, the CPU 10 has a memory block pool 121 as temporary storage means according to the embodiment of the present invention in the main memory 12 for the data input / output acceleration function.

또한, 상기 NIC(30)는, 본 발명 실시예에 따른 데이터 입출력 가속 기능을 위해, 별도의 I/O 가속 엔진(31)을 더 구비한다.The NIC 30 further includes a separate I / O acceleration engine 31 for the data input / output acceleration function according to the embodiment of the present invention.

구체적으로, CPU(10)내 I/O 가속 컨트롤러(111)는, 상기 스토리지(20)내 데이터를 저장 또는 독출하기 위해 필요한 정보로서, 데이터 어드레스(data address)를 관리한다. 이하, 상기 데이터 어드레스는 논리적 블록 어드레스 (LBA, Logical Block Address)로 표현한다. 단 본 발명은 이에 반드시 한정되는 것은 아니고, 다른 데이터 어드레스 표현 방식을 사용하는 것도 가능하다. Specifically, the I / O acceleration controller 111 in the CPU 10 manages a data address as information necessary for storing or reading data in the storage 20. Hereinafter, the data address is represented by a logical block address (LBA). However, the present invention is not limited to this, and it is also possible to use another data address representation scheme.

만약, 네트워크(50)을 통해 데이터 송수신 요청이 있는 경우, 상기 NIC(30)내 I/O 컨트롤러(31)는, 상기 CPU(10)내 I/O 가속 컨트롤러(111)로부터 유효한 논리적 블록 어드레스 (LBA)를 확인하고, 상기 확인된 유효한 LBA를 활용하여 스토리지(20)내 데이터를 직접 저장하거나 독출하는 기능을 수행하게 된다. If there is a data transmission / reception request through the network 50, the I / O controller 31 in the NIC 30 receives a valid logical block address (I / O) from the I / O acceleration controller 111 in the CPU 10 LBA), and performs a function of directly storing or reading data in the storage 20 by utilizing the validated LBA.

도 3은 본 발명에 따른 호스트 CPU(10)내의 I/O 가속 컨트롤러(111)를 도시한 것이다. 상기 I/O 가속 컨트롤러(111)는, 상기 스토리지(20)에 저장될 데이터의 논리적 블록 어드레스(LBA) 또는 스토리지(20)내에 저장된 논리적 블록 어드레스(LBA)를 확인하는, 데이터 LBA 변환부(1111, Data to LBA converter), 및 상기 네트워크 인터페이스 카드(NIC)와의 통신을 수행하는 NIC 통신부(1114, NIC communicator)를 포함한다. 또한, 상기 I/O 가속 컨트롤러(111)는, 상기 블록 메모리 풀(121)을 관리하는 블록 메모리 제어부(1113, block memory manager) 및 상기 스토리지(20)를 구동하는 스토리지 드라이버(1112, storage driver)를 더 포함할 수 있다. 3 shows an I / O acceleration controller 111 in the host CPU 10 according to the present invention. The I / O acceleration controller 111 includes a data LBA conversion unit 1111 (LBA) for verifying a logical block address (LBA) of data to be stored in the storage 20 or a logical block address A Data to LBA converter, and a NIC communicator 1114 for performing communication with the network interface card (NIC). The I / O acceleration controller 111 includes a block memory controller 1113 for managing the block memory pool 121 and a storage driver 1112 for driving the storage 20, As shown in FIG.

구체적으로, 상기 NIC 통신부(1114)는 NIC(30)와의 통신을 담당하며 본 발명은 특정 통신 프로토콜에 한정되지 않는다. 상기 블록 메모리 제어부(1113)는 I/O 가속을 위해 메모리 블록 풀(121)을 메인 메모리(12)에서 할당 받아, 상기 NIC(30)내 I/O 가속 엔진(31)에 전달한다. 상기 NIC(30)내 I/O 가속 엔진(31)은 전달 받은 메모리 블록 풀(121)을 스토리지(20)에 저장된 데이터를 읽거나 또는 스토리지에 데이터를 저장하기 위한 중간 버퍼(buffer)로 사용한다.Specifically, the NIC communication unit 1114 performs communication with the NIC 30, and the present invention is not limited to a specific communication protocol. The block memory controller 1113 allocates the memory block pool 121 from the main memory 12 for I / O acceleration and transfers it to the I / O acceleration engine 31 in the NIC 30. The I / O acceleration engine 31 in the NIC 30 uses the received memory block pool 121 as an intermediate buffer for reading data stored in the storage 20 or storing data in the storage 20 .

또한, 상기 데이터 LBA 변환부(1111)는 호스트 CPU(10) 운영체제의 파일 시스템을 통해 데이터가 저장된 (데이터 송신의 경우), 또는 저장할 (데이터 수신의 경우) 스토리지(20) 상의 논리적 블록 어드레스(LBA) 리스트를 전달 받아 이를 상기 NIC(30)내 I/O 가속 엔진(31)에 전달한다. 상기 NIC(30)내 I/O 가속 엔진(31)은 전달 받은 주소 정보(LBA)를 이용해 스토리지에 직접 데이터를 읽거나 쓸 수 있게 된다. The data LBA conversion unit 1111 converts the logical block address LBA (LBA) on the storage 20 to the logical address of the storage 20 through the file system of the operating system of the host CPU 10 ) List and delivers it to the I / O acceleration engine 31 in the NIC 30. The I / O acceleration engine 31 in the NIC 30 can directly read or write data to the storage using the received address information (LBA).

즉, 상기 호스트 CPU(10)내 I/O 가속 컨트롤러(111)의 주된 역할은 I/O 가속에 필요한 사전 준비를 진행하고 I/O 어플리케이션(11)으로부터 특정 세션(session)에 관한 I/O 가속 명령을 전달 받아 이를 후술할 NIC(30)내 I/O 가속 엔진(31)에 전달함과 동시에 상기 NIC(30)내 I/O 가속 엔진(31)로부터 데이터 논리적 블록 어드레스(LBA) 정보 요청을 수신하여 요청된 데이터의 저장 주소(LBA)를 알려주는 역할을 수행한다. That is, the main role of the I / O acceleration controller 111 in the host CPU 10 is to advance preparation for I / O acceleration and to perform I / O processing for a specific session from the I / And transmits an acceleration command to the I / O acceleration engine 31 in the NIC 30 to be described later. At the same time, the I / O acceleration engine 31 in the NIC 30 receives a data logical block address (LBA) information request And informs the storage address (LBA) of the requested data.

따라서, 상기 호스트 CPU(10)내의 I/O 가속 컨트롤러(111)는, 직접적인 데이터송수신 기능을 수행하기 보다는, 오히려 상기 NIC(30)내 I/O 가속 엔진(31)의 데이터 입출력 기능을 단순히 관리하는 기능만을 수행하게 된다. 따라서, 상기 호스트 CPU(10)는 데이터 입출력에 따른 CPU 자원 부담을 줄일 수 있게 된다. Therefore, the I / O acceleration controller 111 in the host CPU 10 rather merely manages the data input / output function of the I / O acceleration engine 31 in the NIC 30, rather than performing a direct data transmission / . Therefore, the host CPU 10 can reduce the CPU resource burden due to data input / output.

도 4는 본 발명에 따른 NIC(30)내 I/O 가속 엔진(31)를 구체적으로 도시한 것이다. 상기 I/O 가속 엔진(31)은, 네트워크(50)으로부터 데이터를 수신하거나 또는 데이터 출력 요청을 수신하는 네트워크 데이터 수신부(315, receiver)와, 네트워크(5)로 데이터를 송신하는 네트워크 데이터 송신부(316, sender)와, 상기 호스트 CPU(10)와의 통신을 수행하는 호스트 통신부(311, Host communicatior)와, 상기 외부 네트워크(50)으로부터 요청된 데이터 송수신 기능을 위해, 상기 호스트 CPU(10)로부터 전달받은 논리적 블록 어드레스(LBA)를 저장하는 세션 테이블(314, session table)을 포함한다. 4 shows a detailed illustration of the I / O acceleration engine 31 in the NIC 30 according to the present invention. The I / O acceleration engine 31 includes a network data receiving unit 315 for receiving data from the network 50 or receiving a data output request, a network data transmitting unit for transmitting data to the network 5 A host communication unit 311 for communicating with the host CPU 10 and a host communication unit 311 for transmitting and receiving data requested by the external network 50 And a session table 314 for storing a received logical block address (LBA).

또한, 상기 I/O 가속 엔진(31)은, 상기 세션 테이블(314)에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 데이터를 저장하는 데이터 기록부(313, writer) 및 상기 세션 테이블(314)에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 저장된 데이터를 독출하는 데이터 독출부(312, reader)를 포함한다. Also, the I / O acceleration engine 31 includes a data recording unit 313 (writer) for storing data in the storage using the logical block address (LBA) stored in the session table 314, and the session table 314 And a data reading unit 312 for reading the data stored in the storage using the logical block address (LBA) stored in the logical block address (LBA).

또한, 상기 I/O 가속 엔진(31)은, I/O 가속 엔진(31)에서 데이터를 재사용할 필요성이 있는 경우 데이터 캐시(317, data cache)를 더 포함할 수 있다. 예를 들어, 동일한 데이터에 대한 요청이 여러 곳에서 오는 경우 스토리지(20)에서 읽은 데이터를 데이터 캐시(317)에 저장한 후 재사용하는 것이 효과적이다.The I / O acceleration engine 31 may further include a data cache 317 when there is a need to reuse data in the I / O acceleration engine 31. For example, when a request for the same data comes from several places, it is effective to store the data read from the storage 20 in the data cache 317 and reuse it.

이하, 도 5 및 도 6을 참조하여, 본 발명의 실시예에 따른 데이터 송수신 방법에 대해 상세히 설명한다. 관련하여, 도 5는 본 발명에 따른 데이터 독출(출력) 과정을 흐름도를 도시한 것이고, 도 6은 본 발명에 따른 데이터 저장(입력) 과정을 흐름도를 도시한 것이다.Hereinafter, a data transmitting / receiving method according to an embodiment of the present invention will be described in detail with reference to FIG. 5 and FIG. FIG. 5 is a flowchart of a data reading (output) process according to the present invention, and FIG. 6 is a flowchart of a data storing (input) process according to the present invention.

우선, 도 5를 참조하여, 본 발명에 따른 데이터 독출(출력) 처리 과정을 설명하면 다음과 같다. 상기 네트워크 데이터 수신부(315, receiver)에서 네트워크(50)을 통해 데이터 요청을 수신하면(S100, Data request), 세션 테이블(314)에 해당 데이터 요청을 등록하고(S101, Create session), 호스트내 I/O 가속 컨트롤러(111)에 해당 데이터가 저장된 스토리지(20)의 논리적 블록 어드레스(LBA)를 요청한다(S102, LBA request). 상기 호스트내 I/O 가속 컨트롤러(111)는 운영체제의 파일 시스템을 통해 요청된 데이터가 스토리지 상에 저장되어 있다면 해당 데이터의 LBA를 I/O 가속 엔진(31)내 호스트 통신부(311, Host communicator)에 전달한다(S103, LBA reply). 만일 해당 데이터가 스토리지에 존재하지 않는 경우에는 LBA 대신에 널(null) 값으로 전달할 수 있다. Referring to FIG. 5, a data read (output) process according to the present invention will now be described. When the network data receiving unit 315 receives a data request through the network 50 (S100, Data request), it registers a corresponding data request in the session table 314 (S101, Create session) (LBA request) of the storage 20 in which the corresponding data is stored in the / O acceleration controller 111 (S102, LBA request). If the requested data is stored in the storage system through the file system of the operating system, the host I / O acceleration controller 111 transmits the LBA of the data to the host communicator 311 in the I / O acceleration engine 31, (S103, LBA reply). If the data does not exist in the storage, it can be passed as a null value instead of LBA.

상기 호스트 통신부(311)는 수신한 LBA 값이 널(null)이 아닌 경우 이를 세션 테이블(314)에 저장하고, 데이터 독출부(312, Rreader)에게 데이터를 읽게한다(S104, LBA store). 상기 데이터 독출부(312)는 세션 테이블(314)에 저장되어 있는 LBA값을 이용하여(S105) 스토리지 컨트롤러를 통해 스토리지(20)에 저장되어 있는 데이터를 읽어 상기 메모리 블록 풀(121)에 저장한 후(S106, S107), 이를 네트워크 데이터 송신부(316, Sender)에게 알린다(S108). 이 때 해당 데이터의 세션 정보도 함께 전달된다. 상기 네트워크 데이터 송신부(316)는 세션 정보를 참조하여 상기 메모리 블록 풀(121)에 저장되어 있는 데이터를 읽어 패킷(packet)을 형성하고, 이를 데이터 독출 요청자에게 네트워크(50)을 통해 전송한다(S109). 상기 데이터 전송이 완료된 후, 상기 데이터 독출 요청자로부터 완료 정보(ACK)를 수신하고(S110), 상기 수신된 완료 정보(ACK)를 세션 테이블(314)에 저장한다. If the received LBA value is not null, the host communication unit 311 stores the received LBA value in the session table 314 and causes the data reading unit 312 to read data (S104, LBA store). The data reading unit 312 reads the data stored in the storage 20 via the storage controller using the LBA value stored in the session table 314 and stores the read data in the memory block pool 121 (S106, S107), and notifies the network data transmission unit 316 (Sender) (S108). At this time, the session information of the corresponding data is also transmitted. The network data transmitting unit 316 reads the data stored in the memory block pool 121 by referring to the session information to form a packet and transmits the packet to the data read requestor through the network 50 ). After completion of the data transfer, the ACK is received from the data read requestor (S110), and the received ACK is stored in the session table (314).

도 6을 참조하여, 본 발명에 따른 데이터 저장(입력) 과정을 설명하면 다음과 같다. 상기 네트워크 데이터 수신부(315, receiver)에서 네트워크(50)을 통해 데이터를 수신하면(S200, Data Receive), 수신된 데이터를 메모리 블록 풀(121)에 저장한 후(S201), 세션 테이블(314)에 해당 데이터 수신을 등록한다(S202, Create session). 이후 수신된 데이터를 저장할 스토리지(20)의 논리적 블록 어드레스(LBA)를 상기 호스트 CPU(10)내 I/O 가속 컨트롤러(111)에 요청한다(S203, LBA Request). The data storing (input) process according to the present invention will be described with reference to FIG. After the network data receiver 315 receives data through the network 50 (S200, Data Receive), the received data is stored in the memory block pool 121 (S201), and the session table 314 (S202, Create session). The I / O acceleration controller 111 in the host CPU 10 requests the logical block address (LBA) of the storage 20 to store the received data (S203, LBA Request).

상기 호스트 CPU(10)내 I/O 가속 컨트롤러(111)는, 운영체제의 파일 시스템을 통해 데이터를 저장할 스토리지(20)의 LBA를 NIC(30)내 호스트 통신부(311, Host communicator)에 전달한다(S204, LBA Reply). 만일 해당 데이터가 저장될 스토리지에 여유 공간이 없는 경우에는, LBA 대신에 널(null) 값을 전달할 수 있다. The I / O acceleration controller 111 in the host CPU 10 transfers the LBA of the storage 20 to the host communicator 311 in the NIC 30 to store data through the file system of the operating system S204, LBA Reply). If there is no free space in the storage to which the data is to be stored, a null value may be passed instead of the LBA.

상기 NIC(30)내 호스트 통신부(311)는 수신한 LBA 값이 널(null)이 아닌 경우 이를 세션 테이블(314)에 저장하고(S205), 데이터 기록부(313, writer)에 수신된 데이터를 저장하도록 한다(S207), 상기 데이터 기록부(313)는 세션 테이블(314)에 저장되어 있는 LBA값을 활용하여 메모리 블록 풀(121)에 저장되어 있는 데이터를 스토리지(20)에 저장한다(S208). 또한, NIC(30)내 I/O 가속 엔진(31)은 세션 테이블(314)dp 저장된 세션 정보와 함께 네트워크 데이터 송신부(316, Sender)에게 완료 정보(ACK) 전송을 요청한다(S209). 상기 네트워크 데이터 송신부(316)는 상기 세션 정보를 참조하여 완료 정보(ACK) 패킷을 생성하고 이를 데이터 저장 요청자에게 네트워크(50)을 통해 전달한다(S210). If the received LBA value is not null, the host communication unit 311 in the NIC 30 stores it in the session table 314 (S205), and stores the received data in the data recording unit 313 (writer) The data recording unit 313 stores the data stored in the memory block pool 121 in the storage 20 using the LBA value stored in the session table 314 in step S208. The I / O acceleration engine 31 in the NIC 30 requests the network data transmission unit 316 (Sender) to transmit completion information (ACK) together with the session information stored in the session table 314 dp (S209). The network data transmitter 316 generates a completion information (ACK) packet by referring to the session information, and transmits the packet to the data storage requester through the network 50 (S210).

따라서, 본 발명의 실시예에 의하면, 스토리지 데이터의 송신과 수신된 데이터의 스토리지 저장을 NIC(30)에서 직접 처리함으로써 호스트 CPU(10)의 자원 사용을 최소화함과 동시에 패킷 송수신에 있어 운영체제의 네트워크 스택을 거치지 않기 때문에 저지연 패킷 송수신을 가능하게 된다Therefore, according to the embodiment of the present invention, the use of resources of the host CPU 10 is minimized by transmitting the storage data and storing the received data in the NIC 30 directly, and at the same time, It is possible to transmit and receive a low-delay packet because it does not go through the stack

상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.The method of the present invention as described above may be embodied as a program and stored in a computer-readable recording medium (such as a CD-ROM, a RAM, a ROM, a floppy disk, a hard disk, or a magneto-optical disk). Such a process can be easily carried out by those skilled in the art and will not be described in detail.

이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention. The present invention is not limited to the drawings.

Claims (15)

데이터 송수신 가속 장치에 있어서,
데이터를 저장하는 스토리지,
상기 스토리지내 데이터 어드레스를 관리하는 중앙처리장치(CPU), 및
스토리지내에 데이터를 저장하거나 저장된 데이터를 독출하고자 하는 경우, 상기 중앙처리장치로부터 유효한 데이터 어드레스를 확인하고, 상기 확인된 유효한 데이터 어드레스를 활용하여 스토리지내 데이터를 직접 저장하거나 독출하는 네트워크 인터페이스 카드(NIC)를 포함하는, 데이터 송수신 가속 장치.
A data transmission / reception accelerating apparatus comprising:
Storage to store data,
A central processing unit (CPU) for managing data addresses in the storage, and
A network interface card (NIC) for verifying valid data addresses from the central processing unit and directly storing or reading data in the storage utilizing the valid data addresses identified when the data is to be stored or read in the storage, And a data transmission / reception unit.
제1항에 있어서,
상기 스토리지, 중앙처리장치(CPU) 및 네트워크 인터페이스 카드(NIC)는 PCI 버스(Peripheral Component Interconnect Bus)를 통해 내부 통신을 수행하는, 데이터 송수신 가속 장치.
The method according to claim 1,
Wherein the storage, the central processing unit (CPU), and the network interface card (NIC) perform internal communication through a PCI bus (Peripheral Component Interconnect Bus).
제1항에 있어서,
상기 데이터 어드레스는 논리적 블록 어드레스 (LBA, Logical Block Address)를 포함하는 데이터 송수신 가속 장치.
The method according to claim 1,
Wherein the data address includes a logical block address (LBA).
제 3항에 있어서,
상기 중앙처리장치(CPU)는,
스토리지에 저장될 데이터 또는 스토리지내에 저장된 데이터를 일시 저장하는 임시 저장 수단과,
데이터 가속 기능을 수행하는 I/O 가속 컨트롤러를 포함하되, 상기 CPU내 I/O 가속 컨트롤러는, 상기 스토리지에 저장될 데이터 논리적 블록 어드레스(LBA) 또는 스토리지내에 저장된 논리적 블록 어드레스(LBA)를 확인하는 데이터 LBA 변환부, 및 상기 네트워크 인터페이스 카드(NIC)와의 통신을 수행하는 NIC 통신부를 포함하는, 데이터 송수신 가속 장치.
The method of claim 3,
The central processing unit (CPU)
Temporary storage means for temporarily storing data to be stored in the storage or data stored in the storage,
And an I / O acceleration controller for performing a data acceleration function, wherein the I / O acceleration controller in the CPU confirms a data logical block address (LBA) to be stored in the storage or a logical block address (LBA) stored in the storage A data LBA conversion unit, and a NIC communication unit for performing communication with the network interface card (NIC).
제 3항에 있어서,
상기 네트워크 인터페이스 카드(NIC)는 데이터 가속 기능을 수행하는 I/O 가속 컨트롤러를 포함하되, 상기 NIC내 I/O 가속 엔진은,
네트워크으로부터 데이터를 수신하거나, 데이터 출력 요청을 수신하는 네트워크 데이터 수신부(receiver),
외부 네트워크로 데이터를 송신하는 네트워크 데이터 송신부(sender),
상기 중앙처리장치와의 통신을 수행하는 호스트 통신부,
데이터 송수신 가속 기능을 위해, 상기 논리적 블록 어드레스(LBA)를 저장하는 세션 테이블(session table),
상기 세션 테이블에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 데이터를 저장하는 데이터 기록부(writer), 및
상기 세션 테이블에 저장된 논리적 블록 어드레스(LBA)를 이용하여, 스토리지내에 저장된 데이터를 독출하는 데이터 독출부(reader)를 포함하는, 데이터 송수신 가속 장치.
The method of claim 3,
The network interface card (NIC) includes an I / O acceleration controller performing a data acceleration function, wherein the I / O acceleration engine in the NIC includes:
A network data receiver for receiving data from the network or receiving a data output request,
A network data transmitter (sender) for transmitting data to an external network,
A host communication unit for performing communication with the central processing unit,
For the data transmission / reception acceleration function, a session table for storing the logical block address (LBA)
A data writer for storing data in the storage using the logical block address (LBA) stored in the session table,
And a data reading unit that reads data stored in the storage using a logical block address (LBA) stored in the session table.
네트워크 인터페이스 카드(NIC)를 이용한 데이터 송수신 가속 방법에 있어서,
스토리지에 저장될 데이터를 수신하는 단계,
상기 수신된 데이터를 일시 저장하는 단계,
호스트로부터 상기 데이터가 저장될 스토리지의 논리적 블록 어드레스(LBA)를 수신하여 저장하는 단계, 및
상기 논리적 블록 어드레스(LBA)를 이용하여, 상기 일시 저장된 데이터를 스토리지에 저장하는 단계를 포함하여 구성된, 데이터 송수신 가속 방법.
A method for accelerating data transmission / reception using a network interface card (NIC)
Receiving data to be stored in the storage,
Temporarily storing the received data,
Receiving and storing a logical block address (LBA) of the storage from which the data is to be stored from the host, and
And storing the temporarily stored data in a storage using the logical block address (LBA).
제 6항에 있어서,
수신된 데이터를 일시 저장한 후, 세션 테이블에 해당 데이터 수신을 등록하는 단계를 더 포함하는 데이터 송수신 가속 방법.
The method according to claim 6,
Further comprising the step of temporarily storing the received data and registering the reception of the corresponding data in the session table.
제 6항에 있어서,
스토리지내 저장 공간이 없을 경우, 호스트로부터 수신되는 스토리지의 논리적 블록 어드레스(LBA)는 널(null) 값을 가지는 데이터 송수신 가속 방법.
The method according to claim 6,
Wherein the logical block address (LBA) of the storage received from the host is null if there is no storage space in the storage.
제 6항에 있어서,
상기 스토리지내에 데이터 저장이 완료된 후, 데이터 저장 요청자에 완료 정보(ACK) 를 전송하는 단계를 더 포함하는 데이터 송수신 가속 방법.
The method according to claim 6,
Further comprising transmitting completion information (ACK) to the data storage requester after the data storage in the storage is completed.
제 9항에 있어서,
상기 데이터 저장 요청자에 전송되는 완료 정보(ACK)는, 해당 데이터의 세션 정보를 참조하여 생성하는 데이터 송수신 가속 방법.
10. The method of claim 9,
And generating completion information (ACK) transmitted to the data storage requester with reference to session information of the data.
네트워크 인터페이스 카드(NIC)를 이용한 데이터 송수신 가속 방법에 있어서,
스토리지내에 저장된 데이터에 대한 데이터 독출 요청을 수신하는 단계,
호스트로부터 상기 데이터가 저장된 스토리지의 논리적 블록 어드레스(LBA)를 수신하여 저장하는 단계,
상기 논리적 블록 어드레스(LBA)를 이용하여, 상기 스토리지에 저장된 데이터를 독출하여 일시 저장하는 단계, 및
상기 일시 저장된 데이터를 데이터 독출 요청자에게 전송하는 단계를 포함하여 구성된, 데이터 송수신 가속 방법.
A method for accelerating data transmission / reception using a network interface card (NIC)
Receiving a data read request for data stored in the storage,
Receiving and storing a logical block address (LBA) of the storage in which the data is stored from a host,
Reading and temporarily storing data stored in the storage using the logical block address (LBA); and
And transmitting the temporarily stored data to a data read requestor.
제 11항에 있어서,
상기 데이터 독출 요청을 수신하면, 세션 테이블에 해당 데이터 요청을 등록하는 단계를 더 포함하는 데이터 송수신 가속 방법.
12. The method of claim 11,
And registering the data request in the session table upon receiving the data read request.
제 11항에 있어서,
스토리지내 저장된 데이터가 없을 경우, 호스트로부터 수신되는 스토리지의 논리적 블록 어드레스(LBA)는 널(null) 값을 가지는 데이터 송수신 가속 방법.
12. The method of claim 11,
Wherein the logical block address (LBA) of the storage received from the host is null if there is no stored data in the storage.
제 11항에 있어서,
데이터 전송이 완료된 후, 상기 데이터 독출 요청자로부터 완료 정보(ACK)를 수신하는 단계를 더 포함하는 데이터 송수신 가속 방법.
12. The method of claim 11,
Receiving acknowledgment information (ACK) from the data read requestor after the data transfer is completed.
제 14항에 있어서,
상기 수신된 완료 정보(ACK)를 세션 테이블에 저장하는 단계를 더 포함하는 데이터 송수신 가속 방법.
15. The method of claim 14,
And storing the received complete information (ACK) in a session table.
KR1020170163727A 2017-11-30 2017-11-30 Method and Apparatus for acceleration of data sending and receiving based on network interface card KR20190064290A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170163727A KR20190064290A (en) 2017-11-30 2017-11-30 Method and Apparatus for acceleration of data sending and receiving based on network interface card

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170163727A KR20190064290A (en) 2017-11-30 2017-11-30 Method and Apparatus for acceleration of data sending and receiving based on network interface card

Publications (1)

Publication Number Publication Date
KR20190064290A true KR20190064290A (en) 2019-06-10

Family

ID=66848503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170163727A KR20190064290A (en) 2017-11-30 2017-11-30 Method and Apparatus for acceleration of data sending and receiving based on network interface card

Country Status (1)

Country Link
KR (1) KR20190064290A (en)

Similar Documents

Publication Publication Date Title
CN110402568B (en) Communication method and device
US11403247B2 (en) Methods and apparatus for network interface fabric send/receive operations
KR100758272B1 (en) File movement method supporting data zero-copy technique
CN117171073A (en) Method and computer device for processing remote direct memory access request
US9390036B2 (en) Processing data packets from a receive queue in a remote direct memory access device
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
CN111404931B (en) Remote data transmission method based on persistent memory
CN109857545B (en) Data transmission method and device
US20230152978A1 (en) Data Access Method and Related Device
CN115934625B (en) Doorbell knocking method, equipment and medium for remote direct memory access
CN117178263A (en) Network-attached MPI processing architecture in SmartNIC
US8549274B2 (en) Distributive cache accessing device and method for accelerating to boot remote diskless computers
KR100936918B1 (en) TCP Offload Engine Apparatus and Method for System Call Processing for Static File Transmission
US20220300448A1 (en) Peripheral component interconnect express device and method of operating the same
US10402364B1 (en) Read-ahead mechanism for a redirected bulk endpoint of a USB device
US20230014415A1 (en) Reducing transactions drop in remote direct memory access system
US20060242258A1 (en) File sharing system, file sharing program, management server and client terminal
WO2022199357A1 (en) Data processing method and apparatus, electronic device, and computer-readable storage medium
KR20190064290A (en) Method and Apparatus for acceleration of data sending and receiving based on network interface card
KR102426416B1 (en) Method for processing input and output on multi kernel system and apparatus for the same
CN116601616A (en) Data processing device, method and related equipment
US11849005B2 (en) Method and apparatus for accelerating network transmission in memory-disaggregated environment
CN115933973B (en) Method for remotely updating data, RDMA system and storage medium
CN115174673B (en) Data processing device, data processing method and apparatus having low-latency processor
CN108762666B (en) Access method, system, medium and device of storage system