KR102536943B1 - 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템 - Google Patents

데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템 Download PDF

Info

Publication number
KR102536943B1
KR102536943B1 KR1020230001413A KR20230001413A KR102536943B1 KR 102536943 B1 KR102536943 B1 KR 102536943B1 KR 1020230001413 A KR1020230001413 A KR 1020230001413A KR 20230001413 A KR20230001413 A KR 20230001413A KR 102536943 B1 KR102536943 B1 KR 102536943B1
Authority
KR
South Korea
Prior art keywords
data
request
reduction
kernel
data reduction
Prior art date
Application number
KR1020230001413A
Other languages
English (en)
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 주식회사 망고부스트
Application granted granted Critical
Publication of KR102536943B1 publication Critical patent/KR102536943B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Power Engineering (AREA)

Abstract

데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템이 개시된다. 본 발명의 실시예에 따른 데이터 절감 장치는, 본 발명의 실시예에 따른 데이터 절감 장치는, 호스트 요청에 대응되는 제1 커널 요청(kernel request) 또는 제2 커널 요청을 외부로부터 수신하고 상기 제1 커널 요청 또는 상기 제2 커널 요청에 대응되는 제어 신호를 생성하는 제어 모듈(control module); 상기 제어 신호에 응답하여 상기 호스트 요청에 대응되는 요청 데이터를 외부로부터 독출하는 DMA 엔진(Direct Memory Access Engine); 각각, 제1 연산을 통해 상기 요청 데이터를 절감하여 제1 절감 데이터로 생성하는 제1 연산 로직, 및 상기 제1 절감 데이터가 유일한 값(unique value)인 경우 제2 연산을 통해 상기 제1 절감 데이터를 절감하여 제2 절감 데이터로 생성하는 제2 연산 로직 중 적어도 하나의 로직을 포함하는 다수의 데이터 절감 코어(data reduction core); 및 상기 제1 커널 요청 또는 상기 제2 커널 요청에 따라 상기 다수의 데이터 절감 코어 중 하나가 상기 제1 연산 및 상기 제2 연산 중 대응되는 연산을 수행하도록 스케줄링하는 트래픽 스케줄러(traffic scheduler);를 포함한다.

Description

데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템 {Data Reduction Device, Data Reduction Method And System Including Data Reduction Device}
본 발명은 데이터 처리 가속에 관한 것으로, 특히 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템에 관한 것이다.
빅데이터 또는 인공지능이 적용되는 분야가 확대되고 OTT(Over-The-Top) 서비스 등 대용량 데이터 또는 스트리밍 데이터의 이용이 일상화되고 있다. 이에, 사용자 단말, 웹 서버(web server), 웹 어플리케이션 서버(Web Application Server: WAS), 스토리지 서버(storage server), 데이터베이스 서버(database server) 등 상호 연결 가능한 다양한 사용자 단말 또는 시스템에 대해, 요구되는 데이터의 처리 양이 급증하고 있다. 반면, 이러한 요구와 대비하여 해당 단말 또는 시스템이 활용할 수 있는 자원은 제한적일 수 있다.
본 발명은 상술한 과제를 해결하기 위한 것으로서, 제한된 자원으로 동작하는 단말 또는 시스템에서, 처리하여야 하는 데이터를 절감시킬 수 있는 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템을 제공하고자 한다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 데이터 절감 장치는, 호스트 요청에 대응되는 제1 커널 요청(kernel request) 또는 제2 커널 요청을 외부로부터 수신하고 상기 제1 커널 요청 또는 상기 제2 커널 요청에 대응되는 제어 신호를 생성하는 제어 모듈(control module); 상기 제어 신호에 응답하여 상기 호스트 요청에 대응되는 요청 데이터를 외부로부터 독출하는 DMA 엔진(Direct Memory Access Engine); 각각, 제1 연산을 통해 상기 요청 데이터를 절감하여 제1 절감 데이터로 생성하는 제1 연산 로직, 및 상기 제1 절감 데이터가 유일한 값(unique value)인 경우 제2 연산을 통해 상기 제1 절감 데이터를 절감하여 제2 절감 데이터로 생성하는 제2 연산 로직 중 적어도 하나의 로직을 포함하는 다수의 데이터 절감 코어(data reduction core); 및 상기 제1 커널 요청 또는 상기 제2 커널 요청에 따라 상기 다수의 데이터 절감 코어 중 하나가 상기 제1 연산 및 상기 제2 연산 중 대응되는 연산을 수행하도록 스케줄링하는 트래픽 스케줄러(traffic scheduler);를 포함한다.
상기 다수의 데이터 절감 코어는, 상기 제1 연산 로직을 포함하는 적어도 하나의 제1 데이터 절감 코어; 및 상기 제2 연산 로직을 포함하는 적어도 하나의 제2 데이터 절감 코어;를 포함할 수 있다.
상기 다수의 데이터 절감 코어는, 상기 제1 연산 로직을 포함하는 적어도 하나의 제1 데이터 절감 코어; 및 상기 제1 연산 로직 및 상기 제2 연산 로직을 모두 포함하는 적어도 하나의 제2 데이터 절감 코어;를 포함할 수 있다.
상기 제1 연산은 해시(hash) 연산일 수 있다.
상기 제2 연산은 압축(compression) 연산일 수 있다.
상기 트래픽 스케줄러는,
다수의 상기 제1 커널 요청에 대응되는 다수의 상기 제1 연산 중 n번째 제1 연산이 수행되는 중에 상기 제2 연산에 대한 제2 커널 요청이 수신되는 경우, 상기 n번째 제1 연산의 수행이 완료된 후 n-1번째 제1 연산이 수행되기 전에 상기 제2 연산이 수행되도록 스케줄링 할 수 있다.
상기 트래픽 스케줄러는, 다수의 상기 제1 커널 요청에 대응되는 다수의 상기 제1 연산 중 n번째 제1 연산이 수행되는 중에 상기 제2 연산에 대한 제2 커널 요청이 수신되는 경우, 상기 n번째 제1 연산의 수행을 종료시키고 상기 제2 연산이 수행되도록 스케줄링 할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 시스템은, 제1 호스트 요청(host request)을 생성하는 프로세서; 상기 제1 호스트 요청에 대응되는 요청 데이터가 로딩(loading)되는 시스템 메모리; 및 상기 제1 호스트 요청에 대응되는 제1 커널 요청 또는 제2 커널 요청에 응답하여, 제1 절감 데이터 또는 제2 절감 데이터를 생성하는 데이터 절감 장치;를 포함하고, 상기 데이터 절감 장치는, 상기 제1 커널 요청 또는 상기 제2 커널 요청을 수신하여 제어 신호를 생성하는 제어 모듈; 상기 제어 신호에 응답하여 상기 요청 데이터를 상기 시스템 메모리로부터 리드하는 DMA 엔진; 각각, 제1 연산을 통해 상기 요청 데이터를 절감하여 제1 절감 데이터로 생성하는 제1 연산 로직, 및 상기 제1 절감 데이터가 유일한 값(unique value)인 경우 제2 연산을 통해 상기 제1 절감 데이터를 절감하여 제2 절감 데이터로 생성하는 제2 연산 로직 중 적어도 하나의 로직을 포함하는 다수의 데이터 절감 코어; 및 상기 제1 커널 요청 또는 상기 제2 커널 요청에 따라 상기 다수의 데이터 절감 코어 중 하나가 상기 제1 연산 및 상기 제2 연산 중 대응되는 연산을 수행하도록 스케줄링하는 트래픽 스케줄러;를 포함한다.
상기 요청 데이터가 저장될 수 있는 다수의 저장 장치;를 더 포함하고, 상기 다수의 데이터 절감 코어 중 적어도 일부는, 상기 다수의 저장 장치 중 대응되는 저장 장치에 대한 상기 제1 연산 또는 상기 제2 연산을 수행할 수 있다.
상기 트래픽 스케줄러는, 상기 다수의 저장 장치의 용량 또는 액세스 빈도에 따라 상기 다수의 데이터 절감 코어가 할당 또는 변경되도록 스케줄링 할 수 있다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
본 발명의 실시예에 따른 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템에 의하면, 데이터 절감 동작을 통해 한정된 자원에 대해 데이터 절감 장치에서의 데이터 처리 효율을 향상시킬 수 있다.
본 발명의 실시예에 따른 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템에 의하면, CPU 집약적인 데이터 절감 동작을 오프로드(offload)함으로써 CPU 사용을 줄일 수 있다. 이에 데이터 절감 장치에서의 데이터 처리 속도가 향상될 수 있다.
도 1은 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 시스템을 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 데이터 절감 방법을 나타내는 도면이다.
도 4는 유일 값 판단 유닛을 포함하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 5는 호스트 인터페이스 유닛을 포함하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 6은 기입 요청에 대한 본 발명의 실시예에 따른 데이터 절감 방법을 나타내는 도면이다.
도 7은 독출 요청에 대한 본 발명의 실시예에 따른 데이터 절감 방법을 나타내는 도면이다.
도 8은 도 7의 데이터 절감 방법으로 동작하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 9는 본 발명의 실시예에 따른 데이터 절감 코어를 나타내는 도면이다.
도 10은 트래픽 스케줄러를 포함하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 11 및 도 12는 각각 본 발명의 실시예에 따른 트래픽 스케줄러의 동작을 나타내는 도면이다.
도 13은 다수의 데이터 절감 코어를 구비하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 14 내지 도 16은 각각 본 발명의 실시예에 따른 다수의 데이터 절감 코어를 나타내는 도면이다.
도 17은 컴플리션 컨트롤러를 포함하는 본 발명의 실시예에 따른 데이터 절감 장치를 나타내는 도면이다.
도 18은 본 발명의 실시예에 따른 데이터 절감 동작을 수행하기 위한 커널의 구조를 설명하기 위한 도면이다.
도 19는 본 발명의 실시예에 따른 제1 커널 요청 또는 제2 커널 요청의 포맷을 나타내는 도면이다.
도 20은 장치 맵퍼에서 호출되는 본 발명의 실시예에 따른 오프로드 해시 함수의 예를 나타내는 도면이다.
도 21는 본 발명의 실시예에 따른 제1 장치 응답 또는 제2 장치 응답의 포맷을 나타내는 도면이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이고, 도 2는 본 발명의 실시예에 따른 시스템(200)을 나타내는 도면이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(data reduction device, 100)는 시스템(200)에 포함될 수 있다. 칩(chip) 또는 카드(card) 등 하드웨어(hardware)로 구현되는 데이터 절감 장치(100)는 요청 데이터(RDTA)에 대한 절감(reduction) 동작을 오프로딩(offloading)함으로써 시스템(200)에서의 데이터 처리 효율을 향상시킬 수 있다.
본 발명의 실시예에 따른 시스템(200)은 데이터 절감 장치(100)와 함께, 제1 호스트 요청(host request, HREQ1)을 생성하는 CPU(Central Processing Unit, 220) 및 제1 호스트 요청(HREQ1)에 대응되는 요청 데이터(RDTA)가 로딩(loading)되는 시스템 메모리(220)를 포함할 수 있다. 본 발명의 실시예에 따른 시스템(200)은 컴퓨팅 시스템, 서버 시스템, SmartSSD, SmartNIC 등일 수 있다.
도 2는 본 발명의 실시예에 따른 시스템(200)이 CPU(210), 시스템 메모리(220) 및 데이터 절감 장치(100)를 상호 연결하는 인터커넥트(interconnect, 230), 및 인터커넥트(230)와 연결되는 다수의 저장 장치(240)를 더 포함하는 것으로 도시하고 있다. 다만, 이에 한정되는 것은 아니다. 본 발명의 실시예에 따른 시스템(200)에서 데이터 절감 장치(100)에 연결되는 구성 및 방식이 도 2와 상이할 수 있다. 또한, 본 발명의 실시예에 따른 시스템(200)은 데이터 절감 장치(100)와 연결되는 저장 장치(240)를 가상화하여 가상 환경 내 사용자가 기존 환경과 동일한 디바이스 드라이버(예를 들어, NVMe device driver)를 사용하면서 데이터 절감 효과를 얻을 수 있는 추가적인 구성을 더 포함할 수 있다.
본 발명의 실시예에 따른 데이터 절감 장치(100)는 제어 모듈(control module, 110), DMA 엔진(Direct Memory Access Engine, 120) 및 데이터 절감 코어(data reduction core, 130)을 포함한다.
제어 모듈(110)은 외부로부터 수신되는 제1 커널 요청(kernel request, KREQ1)에 응답하여 제어 신호(XCON)를 생성한다. 제1 커널 요청(KREQ1)은 본 발명의 실시예에 따른 데이터 절감 장치(100)가 연결되는 시스템(200)의 커널(kernel)로부터 수신될 수 있다. 다시 말해, 제1 커널 요청(KREQ1)은 시스템(200)의 시스템 메모리(220)에 상주하는 운영체제의 일부로서, CPU(210)와 데이터 절감 장치(100)를 인터페이스하는 커널로부터 수신될 수 있다. 제1 커널 요청(KREQ1)의 포맷 및 생성 동작에 대한 더 자세한 설명은 후술된다.
DMA 엔진(120)은 제어 신호(XCON)에 응답하여 제1 커널 요청(KREQ1)에 대응되는 요청 데이터(RDTA)를 외부로부터 독출한다. 요청 데이터(RDTA)는 CPU(210)의 제1 호스트 요청(HREQ1)에 대응되어 시스템 메모리(220)에 기입되는 데이터일 수 있다. 예를 들어, 요청 데이터(RDTA)는 CPU(210)의 기입 요청에 대응되어 저장 장치(240)에 기입되는 데이터일 수 있다. 즉, 요청 데이터(RDTA)는 CPU(210)의 기입 요청에 따라 저장 장치(240)로 기입하기 위해 시스템 메모리(220)에 로딩(loading)되는 데이터일 수 있다.
제어 신호(XCON)는 시스템 메모리(220)에서의 요청 데이터(RDTA)의 위치에 대한 정보와 크기에 대한 정보를 포함할 수 있다. 요청 데이터(RDTA)는 다양한 크기 중 하나로 설정되는 블록(block) 단위로 규정될 수 있다. 데이터 절감 장치(100)의 DMA 엔진(120)은 CPU(210)와 독립적으로 시스템 메모리(220)로 접근하여 해당 위치의 요청 데이터(RDTA)를 해당 크기로 독출할 수 있다.
데이터 절감 코어(130)는 제1 절감 데이터(DTA1) 또는 제2 절감 데이터(DTA2)를 생성할 수 있다. 제1 절감 데이터(DTA1)는 제1 연산을 통해 요청 데이터(RDTA)를 절감하여 생성될 수 있다. 제2 절감 데이터(DTA2)는 제2 연산을 통해 제1 절감 데이터(DTA1)를 절감하여 생성될 수 있다.
제1 연산은 임의의 크기를 가진 요청 데이터(RDTA)를 고정된 크기로 변환하는 해시(hash) 연산일 수 있다. 예를 들어, 본 발명의 실시예에 따른 해시 연산은 제1 연산은 SHA1, SHA2, SHA3, SHA256 또는 SHA512 등 안전한 해시 알고리즘(Secure Hash Algorithm, SHA)이거나, MD5(Message-Digest 5) 해시 알고리즘 등 다양한 해시 알고리즘 중 하나 또는 그 이상일 수 있다.
제2 연산은 압축(compression) 연산일 수 있다. 예를 들어, 본 발명의 실시예에 따른 압축 연산은 gzip(GUN zip), snappy, lz4, zstd, zlib 등 다양한 압축 알고리즘 중 하나 또는 그 이상일 수 있다.
데이터 절감 코어(130)는 제1연산 결과인 제1 절감 데이터(DTA1)에 따라 제2 연산의 수행 여부를 달리할 수 있다.
도 3은 본 발명의 실시예에 따른 데이터 절감 방법(300)을 나타내는 도면이다.
도 1 내지 도 3을 참조하면, 본 발명의 실시예에 따른 데이터 절감 방법(300)은 해시 연산을 오프로드하는 단계(S320) 및 압축 연산을 오프로드하는 단계(S340)를 포함할 수 있다. 해시 연산을 오프로드하는 단계(S320) 및 압축 연산을 오프로드하는 단계(S340)는 데이터 절감 장치(100)에 의해 수행될 수 있다.
전술된 바와 같이, 데이터 절감 코어(130)가 제1 호스트 요청(HREQ1)에 대응되는 요청 데이터(RDTA)에 대한 해시 연산을 수행하여 제1 절감 데이터(DTA1)를 생성하거나, 제1 절감 데이터(DTA1)를 압축 연산하여 제2 절감 데이터(DTA2)로 생성할 수 있다. 제1 호스트 요청(HREQ1)은 CPU(210)의 저장 장치(240)에 대한 요청 데이터(RDTA)의 기입 요청일 수 있다. 이때, 데이터 절감 코어(130)는 제1 절감 데이터(DTA1)가 유일한 값(unique value)인 때에 한해 압축 연산을 수행할 수 있다.
제1 절감 데이터(DTA1)가 유일한 값이라 함은, 시스템 메모리(220)에 동일한 값이 기입되어 있지 아니함을 의미할 수 있다. 예를 들어, 제1 연산이 해시 연산인 경우, 제1 절감 데이터(DTA1)가 유일한 값이라 함은 동일한 해시 값을 갖는 데이터 또는 동일한 해시 값에 대해 제2 연산 처리된 데이터가 시스템 메모리(220)에 기입되어 있지 않음을 나타낼 수 있다.
도 4는 유일 값 판단 유닛(112)을 포함하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이다.
도 2 및 도 4를 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(100)의 제어 모듈(110)은 유일 값 판단 유닛(112)을 포함할 수 있다. 유일 값 판단 유닛(112)은 제1 절감 데이터(DTA1)가 유일한 값인지를 판단할 수 있다. 유일 값 판단 유닛(112)은 데이터 절감 코어(130)로부터 제1 절감 데이터(DTA1)가 수신되면 제1 맵핑 테이블(미도시)에 제1 절감 데이터(DTA1)와 동일한 값이 존재하는지를 비교하여 판단 동작을 수행할 수 있다.
유일 값 판단 유닛(112)의 판단 결과에 따라 제어 모듈(110)은 제어 신호(XCON)를 데이터 절감 코어(130)에 전달할 수 있다. 데이터 절감 코어(130)는 제1 절감 데이터(DTA1)가 유일한 값임을 나타내는 제어 신호(XCON)에 응답하여 제2 절감 데이터(DTA2)를 생성할 수 있다.
제어 모듈(110)은 제1 절감 데이터(DTA1)가 유일한 값이 아닌 경우, 제1 절감 데이터(DTA1)의 생성으로 제1 커널 요청(KREQ1)에 대한 동작이 완료되었음을 나타내는 제1 장치 응답(DRSP1)을 출력할 수 있다. 이때, 요청 데이터(RDTA)는 중복 데이터로 처리될 수 있다. 즉, 시스템(200)은 중복 데이터에 대해 시스템 메모리(220)에 별도의 기입 동작을 수행하지 아니하고, 요청 데이터(RDTA)의 시스템 메모리(220) 내 위치에 대한 정보를 중복된 데이터가 저장된 위치로 설정할 수 있다. 요청 데이터(RDTA)의 위치에 대한 정보는 맵핑 테이블(mapping table)의 형태 등으로 시스템 메모리(220)에 저장될 수 있다.
제어 모듈(110)은 제1 절감 데이터(DTA1)가 유일한 값인 경우, 제2 절감 데이터(DTA2)의 생성으로 제1 커널 요청(KREQ1)에 대한 동작이 완료되었음을 나타내는 제1 장치 응답(DRSP1)을 출력할 수 있다. 제2 절감 데이터(DTA2)는 DMA 엔진(120)을 통해 외부로 출력될 수 있다. 예를 들어, DMA 엔진(120)은 제2 절감 데이터(DTA2)를 도 2의 시스템 메모리(220)에 기입할 수 있다.
도 5는 호스트 인터페이스 유닛(140)을 포함하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이다.
도 5를 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(100)은 도 1 등의 경우와 마찬가지로, 제어 모듈(110), DMA 엔진(120) 및 데이터 절감 코어(130)를 포함한다. 나아가, 도 5의 데이터 절감 장치(100)는 호스트 인터페이스 유닛(140)을 더 포함할 수 있다. 일 예로 호스트 인터페이스 유닛(140)은 제어 모듈(110)에 포함되어 구현될 수도 있다.
호스트 인터페이스 유닛(140)은 외부로부터 제1 커널 요청(KREQ1)을 수신하여 제어 모듈(110)에 전달하고, 데이터 절감 코어(130)의 동작 결과를 제1 커널 요청(KREQ1)에 대한 제1 장치 응답(DRSP1)으로 출력할 수 있다. 예를 들어, 호스트 인터페이스 유닛(140)은 제1 절감 데이터(DTA1)의 생성이 완료되었음을 나타내는 제1 장치 응답(DRSP1)을 출력할 수 있다.
호스트 인터페이스 유닛(140)은 또한, 외부로부터 제2 커널 요청(KREQ2)을 수신하여 제어 모듈(110)에 전달할 수 있다. 제2 커널 요청(KREQ2)은 제1 장치 응답(DRSP1)이 출력된 후 제1 절감 데이터(DTA1)가 유일한 값인 때에 수신되는 요청일 수 있다.
제어 모듈(110)은 제2 커널 요청(KREQ2)에 응답하여 제어 신호(XCON)를 데이터 절감 코어(130)에 전달할 수 있다. 데이터 절감 코어(130)는 제1 절감 데이터(DTA1)가 유일한 값임을 나타내는 제어 신호(XCON)에 응답하여 제2 절감 데이터(DTA2)를 생성할 수 있다.
제어 모듈(110)은 제1 절감 데이터(DTA1)가 유일한 값임을 나타내는 제2 커널 요청(KREQ2)에 응답하여, 제2 절감 데이터(DTA2)의 생성으로 제2 커널 요청(KREQ2)에 대한 동작이 완료되었음을 나타내는 제2 장치 응답(DRSP2)을 생성할 수 있다. 이와 함께, 제어 모듈(110)은 제1 절감 데이터(DTA1) 또는 제2 절감 데이터(DTA2)가 DMA 엔진(120)을 통해 외부로 출력되도록 제어할 수 있다. DMA 엔진(120)은 제1 절감 데이터(DTA1) 또는 제2 절감 데이터(DTA2)를 도 2의 시스템 메모리(220)에 기입할 수 있다.
도 5의 호스트 인터페이스 유닛(140)은 도 1 또는 도 4의 데이터 절감 장치(100)에도 구비될 수 있다. 예를 들어, 도 4의 데이터 절감 장치(100)에 포함되는 호스트 인터페이스 유닛(140)은 제1 커널 요청(KREQ1)을 제어 모듈(110)로 전달하고, 제1 절감 데이터(DTA1)의 생성 또는 제2 절감 데이터(DTA2)의 생성에 대한 정보를 제1 커널 요청(KREQ1)에 대한 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)의 형태로 출력할 수 있다.
이하에서는 달리 언급하지 아니하는 한 도 5의 예를 전제로 기술된다.
도 6은 기입 요청에 대한 본 발명의 실시예에 따른 데이터 절감 방법(300)을 나타내는 도면이다.
도 2, 도 5 및 도 6을 참조하면, 본 발명의 실시예에 따른 데이터 절감 방법(300)은 기입 요청인 제1 호스트 요청(HREQ1)에 대응되는 제1 커널 요청(KREQ1)을 호스트 인터페이스 유닛(140)이 수신하는 단계(S322)를 포함할 수 있다. 제1 커널 요청(KREQ1)은 해시 연산에 대한 요청일 수 있다. 이 경우, 데이터 절감 코어(130)는 제1 커널 요청(KREQ1)에 응답하여 요청 데이터(RDTA)에 대한 해시 연산을 수행할 수 있다(S324). 해시 연산 결과는 제1 절감 데이터(DTA1)로 생성될 수 있다.
해시 연산 결과에 근거하여 요청 데이터(RDTA)에 대한 데이터 중복 여부가 확인될 수 있다(S330). 예를 들어, 해시 연산 결과가 유일한 값인지에 근거하여 데이터 중복 여부가 판단될 수 있다. 전술된 바와 같이, 해시 연산 결과, 즉 제1 절감 데이터(DTA1)가 유일한 값인지 여부는 유일 값 판단 유닛(112) 또는 제2 커널 요청(KREQ2)에 의해 확인될 수 있다.
요청 데이터(RDTA)가 중복된 데이터가 아닌 것으로 판단되는 경우(S330의 "NO"), 즉 요청 데이터(RDTA)에 대한 제1 절감 데이터(DTA1)가 유일한 값인 경우, 데이터 절감 코어(130)에 의해 압축 연산이 수행될 수 있다(S342). 제1 절감 데이터(DTA1)에 대한 압축 연산이 수행되어, 제2 절감 데이터(DTA2)가 생성될 수 있다. 압축 연산이 완료되었음을 나타내는 제2 장치 응답(DRSP2)이 제2 커널 요청(KREQ2)에 대한 응답으로 출력되고, 요청 데이터(RDTA)의 시스템 메모리(220) 내의 위치에 대한 정보가 제2 절감 데이터(DTA2)가 기입되는 위치로 업데이트될 수 있다(S350). 요청 데이터(RDTA)의 시스템 메모리(220) 내의 위치에 대한 정보를 업데이트 하는 동작은 시스템(200)의 커널을 통해 수행될 수 있다.
요청 데이터(RDTA)가 중복된 데이터인 것으로 판단되는 경우(S330의 "YES"), 즉 요청 데이터(RDTA)에 대한 제1 절감 데이터(DTA1)가 유일한 값이 아닌 경우, 요청 데이터(RDTA)의 시스템 메모리(220) 내의 위치에 대한 정보를 중복된 데이터가 기입된 위치로 업데이트할 수 있다(S350).
이상에서는 제1 커널 요청(KREQ1) 또는 제1 호스트 요청(HREQ1)이 CPU(210)의 저장 장치(240)에 대한 기입 요청인 경우에 대하여 기술되었다. 다음으로, 제2 호스트 요청(HREQ1)가 CPU(210)의 저장 장치(240)에 대한 독출 요청인 경우에 본 발명의 실시예에 따른 데이터 절감 장치(100)에서의 제1 커널 요청(KREQ1)을 처리하는 동작에 대하여 설명한다. 이때, 요청 데이터(RDTA)는 CPU(210)의 독출 요청에 대응되어 저장 장치(240)로부터 독출되는 데이터일 수 있다. 즉, CPU(210)의 독출 요청에 대응되는 요청 데이터(RDTA)는 도 2의 저장 장치(240)에 제2 절감 데이터(DTA2)의 형태로 저장된 후 시스템 메모리(220)에 로딩되는 데이터일 수 있다.
도 7은 독출 요청에 대한 본 발명의 실시예에 따른 데이터 절감 방법(300)을 나타내는 도면이고, 도 8은 도 7의 데이터 절감 방법(300)으로 동작하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이다.
도 2, 도 7 및 도 8을 참조하면, 본 발명의 실시예에 따른 데이터 절감 방법(300)은 데이터 절감 장치(100)에 의해 압축 해제 연산을 오프로드하는 단계(S360)를 포함할 수 있다. 압축 해제 연산을 오프로드하는 단계(S360)는 제2 호스트 요청(HREQ2)이 저장 장치(240)로부터 요청 데이터(RDTA)를 독출하는 것에 대한 요청인 경우에 수행될 수 있다.
호스트 인터페이스 유닛(140)이 제2 호스트 요청(HREQ2)에 대응되는 제1 커널 요청(KREQ1)을 수신할 수 있다(S362). 제2 호스트 요청(HREQ2)은 저장 장치(240)에 대한 독출 요청이고, 제1 커널 요청(KREQ1)은 압축 해제 연산에 대한 요청일 수 있다. 호스트 인터페이스 유닛(140)으로 수신되는 제1 커널 요청(KREQ1)에 응답하여, 제어 모듈(110)은 제어 신호(XCON)를 생성할 수 있다. 제1 커널 요청(KREQ1)에 DMA 엔진(120)은 제어 신호(XCON)에 응답하여 요청 데이터(RDTA)를 시스템 메모리(220)로부터 독출할 수 있다.
요청 데이터(RDTA)는 시스템 메모리(220)에 제2 절감 데이터(DTA2)에 대응되는 형태로 로딩되어 있을 수 있다. 예를 들어, 요청 데이터(RDTA)는 임의의 개수의 제2 절감 데이터(DTA2)가 하나의 블록으로 패킹(packing)된 블록 데이터(BDTA)로 저장 장치(240)에 기입되는 경우, 요청 데이터(RDTA) 또한 블록 단위로 시스템 메모리(220)에 로딩될 것이다.
데이터 절감 코어(130)는 제1 커널 요청(KREQ1)에 응답하여 요청 데이터(RDTA)에 대한 압축 해제 연산을 수행할 수 있다(S364). 데이터 절감 코어(130)는 압축 해제 연산을 통해 요청 데이터(RDTA)를 원본 데이터(ODTA)로 생성될 수 있다. 원본 데이터(ODTA)는 DMA 엔진(120)을 통해 시스템 메모리(220)에 기입될 수 있다. 압축 해제 연산 동작이 완료되었음을 나타내는 제1 장치 응답(DRSP1)이 제1 커널 요청(KREQ1)에 대한 응답으로 출력되고, 요청 데이터(RDTA)의 시스템 메모리(220) 내의 위치에 대한 정보가 원본 데이터(ODTA)가 기입되는 위치로 업데이트될 수 있다(S370).
도 9는 본 발명의 실시예에 따른 데이터 절감 코어(130)를 나타내는 도면이다.
도 9를 참조하면, 본 발명의 실시예에 따른 데이터 절감 코어(130)는 해시 연산을 수행하는 해시 로직(hash logic), 압축 연산을 수행하는 압축 로직(compression logic) 및 압축 해제 연산을 수행하는 압축 해제 로직(decompression logic)을 포함할 수 있다. 해시 로직, 압축 로직 및 압축 해제 로직은 인버터(inverter), 버퍼(buffer), 플립플롭(flip-flop) 등 다양한 논리 회로 소자들을 포함할 수 있다. 해시 로직, 압축 로직 및 압축 해제 로직은 연산 동작을 수행함에 있어서 논리회로 소자 중 적어도 일부를 공유할 수 있다. 나아가, 해시 로직, 압축 로직 및 압축 해제 로직은 FIFO(First In-First Out) 또는 DSP(Digital Signal Processor) 등도 공유할 수 있다.
도 10은 트래픽 스케줄러(150)를 포함하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이고, 도 11 및 도 12는 각각 본 발명의 실시예에 따른 트래픽 스케줄러(150)의 동작을 나타내는 도면이다.
먼저 도 10 및 도 11을 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(100)는 도 5와 마찬가지로, 제어 모듈(110), DMA 엔진(120), 데이터 절감 코어(130) 및 호스트 인터페이스 유닛(140)을 포함할 수 있다. 나아가, 도 10의 데이터 절감 장치(100)는 트래픽 스케줄러(traffic scheduler, 150)를 더 포함할 수 있다.
트래픽 스케줄러(150)는 데이터 절감 코어(130)에서의 제1 연산 및 제2 연산의 수행을 스케줄링하여 스케줄 신호(XSCH)로서 데이터 절감 코어(130)에 전달할 수 있다. 예를 들어, 제1 연산의 수행이 제2 연산의 수행보다 시간이 더 걸리거나 수행 횟수가 더 많은 경우, 트래픽 스케줄러(150)는 제1 연산 및 제2 연산의 수행 순서를 조율할 수 있다. 데이터 절감 코어(130)는 스케줄 신호(XSCH)에 응답하여 대응되는 연산을 수행할 수 있다.
전술된 바와 같이, 데이터 절감 코어(130)는 각각의 요청 데이터(RDTA)에 대해 제1 연산의 결과에 따라 제2 연산을 선택적으로 수행할 수 있다. 따라서, 데이터 절감 코어(130)에서 수행해야 하는 제1 연산의 횟수와 제2 연산의 횟수가 상이할 수 있다. 이때, 동일한 요청 데이터(RDTA)에 대해 제1 연산이 수행된 후 제2 연산이 수행되기 전에, 다른 요청 데이터(RDTA)에 대한 제1 연산이 데이터 절감 코어(130)에 요청될 수 있다. 즉, 하나의 요청 데이터(RDTA)에 대한 제1 연산과 제2 연산 사이에 다른 요청 데이터(RDTA)에 대한 제1 연산의 수행이 데이터 절감 코어(130)에 요청될 수 있다.
도 11의 예에서, 임의의 주기(tp)에서 제1 연산에 대한 커널 요청(KREQ)이 데이터 절감 장치(100)에 3회 수신된 반면, 제2 연산에 대한 커널 요청(KREQ)은 1회만 수신된다. 제1-1 커널 요청(KREQ1-1) 내지 제1-3 커널 요청( KREQ1-3)은 각각 서로 다른 요청 데이터(RDTA), 즉 제1 요청 데이터(RDTA1) 내지 제3 요청 데이터(RDTA3)에 대한 제1 연산의 요청을 나타낼 수 있다. 제1-1 커널 요청(KREQ1-1)에 대응되는 제1 요청 데이터(RDTA1)에 대한 제2 연산의 요청은 제2-1 커널 요청(KREQ2-1)으로서 데이터 절감 장치(100)로 수신될 수 있다.
도 11은 제1-1 커널 요청(KREQ1-1) 내지 제1-3 커널 요청( KREQ1-3) 및 제2-1 커널 요청(KREQ2-1)이 순차적으로 발생되는 것으로 도시된다. 이때, 데이터 절감 장치(100)로 제1-1 커널 요청(KREQ1-1) 내지 제1-3 커널 요청( KREQ1-3) 및 제2-1 커널 요청(KREQ2-1)의 발생 순서에 따라 순차적으로 수신될 수 있다. 또는, 데이터 절감 장치(100)로 제1-1 커널 요청(KREQ1-1) 내지 제1-3 커널 요청( KREQ1-3) 및 제2-1 커널 요청(KREQ2-1)의 발생 순서와 무관하게 동시에 데이터 절감 장치(100)로 수신될 수도 있다. 다만, 도 11 및 도 12를 설명함에 있어, 데이터 절감 장치(100)로 제1-1 커널 요청(KREQ1-1) 내지 제1-3 커널 요청(KREQ1-3) 및 제2-1 커널 요청(KREQ2-1)이 순차적으로 수신되는 것으로 전제한다.
데이터 절감 코어(130)가 데이터 절감 장치(100)로 수신되는 커널 요청(KREQ)의 순서에 따라 연산 동작을 수행한다고 하자. 데이터 절감 코어(130)는 제1-2 커널 요청(KREQ1-2) 및 제1-3 커널 요청(KREQ1-3)에 대한 연산을 완료한 후에야 제1 요청 데이터(RDTA1)에 대한 제2-1 커널 요청(KREQ2-1)에 대한 연산을 수행할 수 있을 것이다. 따라서, 제1 요청 데이터(RDTA1)에 대한 처리가 지연되고 제1 요청 데이터(RDTA1)의 처리 결과에 영향을 받는 다른 동작 또한 지연될 수 있다.
본 발명의 실시예에 따른 트래픽 스케줄러(150)는 수신되는 커널 요청(KREQ)의 순서를 조율함으로써, 상기의 문제를 방지할 수 있다. 도 11은 트래픽 시점 ta에서 제2-1 커널 요청(KREQ2-1)가 수신되는 경우, 먼저 수신된 커널 요청(예를 들어, 제1-3 커널 요청(KREQ1-3))이 존재하더라도 스케줄러(150)가 그 처리 순서를 달리 조율하는 예를 도시하고 있다. 트래픽 스케줄러(150)의 스케줄링에 따라, 제2-1 커널 요청(KREQ2-1)가 수신되는 시점 ta에서 처리 중이던 제1-2 커널 요청(KREQ1-2)에 대응되는 제1 연산이 종료되면(시점 tb), 데이터 절감 코어(130)는 제1-3 커널 요청(KREQ1-3)이 아닌 제2-1 커널 요청(KREQ2-1)에 대응되는 제2 연산의 수행을 시작할 수 있다.
다음으로 도 10 및 도 12를 참조하면, 본 발명의 실시예에 따른 트래픽 스케줄러(150)는, 도 11과 동일하게 데이터 절감 장치(100)로 커널 요청(KREQ)이 수신되더라도 그 스케줄링을 달리할 수 있다. 예를 들어, 시점 ta에서 제2-1 커널 요청(KREQ2-1)가 수신되는 경우, 트래픽 스케줄러(150)는 데이터 절감 코어(130)에 의해 처리 중이던 제1-2 커널 요청(KREQ1-2)에 대응되는 제1 연산을 종료시키고, 바로 제2-1 커널 요청(KREQ2-1)에 대응되는 제2 연산이 수행되도록 스케줄링할 수도 있다. 이때 트래픽 스케줄러(150)는 시점 ta에서 처리가 중단된 제1-2 커널 요청(KREQ1-2)에 대응되는 제1 연산이, 제2-1 커널 요청(KREQ2-1)에 대응되는 제2 연산의 수행이 완료된 시점 tc에서 재개될 수 있도록 스케줄링할 수 있다.
도 13은 다수의 데이터 절감 코어(130)를 구비하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이고, 도 14 내지 도 16은 각각 본 발명의 실시예에 따른 다수의 데이터 절감 코어(130)를 나타내는 도면이다.
먼저 도 13 및 도 14를 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(100)는 도 10과 마찬가지로 제어 모듈(110), DMA 엔진(120), 데이터 절감 코어(130), 호스트 인터페이스 유닛(140) 및 트래픽 스케줄러(150)를 포함할 수 있다. 다만, 도 10의 데이터 절감 장치(100)가 하나의 데이터 절감 코어(130)를 구비하는 것과 달리, 도 13의 데이터 절감 장치(100)는 데이터 절감 코어(130)를 다수로 구비할 수 있다.
다수의 데이터 절감 코어(130)는 제1 연산 및 제2 연산 중 하나를 수행할 수 있다. 예를 들어, 제1 데이터 절감 코어(130_1) 및 제2 데이터 절감 코어(130_2)는 각각 해시 로직을 포함하여 해시 연산을 수행하고, 제M 데이터 절감 코어(130_M)는 압축 로직을 포함하여 압축 연산을 수행할 수 있다. 제M 데이터 절감 코어(130_M)는 압축 해제 로직을 더 포함하고 도 2의 CPU(210)의 독출 요청에 응답하여 압축 해제 연산을 수행할 수도 있다.
트래픽 스케줄러(150)는 데이터 절감 장치(100)로 수신되는 커널 요청(KREQ1, KREQ2)에 따라 다수의 데이터 절감 코어(130) 중 하나가 해당 커널 요청(KREQ)에 대응되는 연산을 수행할 수 있도록 스케줄링하여 스케줄 신호(XSCH)로 생성할 수 있다. 예를 들어, 트래픽 스케줄러(150)는 해시 연산에 대한 제1 커널 요청(KREQ1)이 수신되는 경우 제1 데이터 절감 코어(130_1) 및 제2 데이터 절감 코어(130_2) 중 하나로 스케줄 신호(XSCH)를 전달할 수 있다. 또는 트래픽 스케줄러(150)는 압축 연산에 대한 제2 커널 요청(KREQ2)이 수신되는 경우 제M 데이터 절감 코어(130_M)로 스케줄 신호(XSCH)를 전달할 수 있다.
다만, 이에 한정되는 것은 아니다. 다수의 데이터 절감 코어(130)는 다양한 행태로 구현되거나 스케줄링될 수 있다.
예를 들어 도 15를 참조하면, 다수의 데이터 절감 코어(130) 중 적어도 일부는 해시 연산 및 압축 연산을 모두 수행할 수도 있다. 예를 들어, 제1 데이터 절감 코어(130_1)는 해시 연산만을 수행하고, 제M 데이터 절감 코어(130_M)는 압축과 관련된 연산(압축 연산 및 압축 해제 연산)만을 수행하는 반면, 제2 데이터 절감 코어(130_2)는 도 9와 마찬가지로 해시 연산 및 압축 관련 연산을 모두 수행할 수 있다.
또는 도 2, 도 13 및 도 16을 참조하면, 다수의 데이터 절감 코어(130) 중 적어도 일부는 저장 장치(240)별로 구비될 수 있다. 예를 들어, 제1 데이터 절감 코어(130_1)는 제1 저장 장치(240_1)에 대한 제1 호스트 요청(HREQ1)에 대응되는 해시 연산 및 압축 관련 연산을 수행하고, 제M 데이터 절감 코어(130_M)는 제N 저장 장치(240_N)에 대한 제1 호스트 요청(HREQ1)에 대응되는 해시 연산 및 압축 관련 연산을 수행할 수 있다. 이때, 다수의 데이터 절감 코어(130) 중 적어도 일부는 둘 이상의 저장 장치(240)에 대해 공유될 수 있다. 도 16은 제2 데이터 절감 코어(130_2)가 제2 저장 장치(240_2) 및 제3 저장 장치(240)에 대한 제1 호스트 요청(HREQ1)에 대응되는 해시 연산 및 압축 관련 연산을 수행하는 예를 도시하고 있다.
트래픽 스케줄러(150)는 각 저장 장치(240)의 용량 또는 액세스 빈도 등을 고려하여 각 저장 장치(240)에 대한 데이터 절감 코어(130)의 할당 또는 변경 등을 스케줄링할 수 있다.
도 17은 컴플리션 컨트롤러(160)를 포함하는 본 발명의 실시예에 따른 데이터 절감 장치(100)를 나타내는 도면이다.
도 2 및 도 17을 참조하면, 본 발명의 실시예에 따른 데이터 절감 장치(100)는 도 13과 마찬가지로 제어 모듈(110), DMA 엔진(120), 데이터 절감 코어(130), 호스트 인터페이스 유닛(140) 및 트래픽 스케줄러(150)를 포함할 수 있다. 다만, 일 예에서 데이터 절감 코어(130)는 단수로 구비될 수 있고, 트래픽 스케줄러(150)는 구비되지 아니할 수 있다. 나아가 도 17의 데이터 절감 장치(100)는 컴플리션 컨트롤러(completion controller, 160)를 더 포함할 수 있다.
컴플리션 컨트롤러(160)는 데이터 절감 코어(130)에서 임의의 개수의 제1 커널 요청(KREQ1)에 대응되는 제1 연산 또는 제2 커널 요청(KREQ2)에 대응되는 제2 연산이 완료되는 경우, 인터럽트 신호(interrupt signal, XITR)를 생성할 수 있다. 예를 들어, 컴플리션 컨트롤러(160)는 10개의 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)이 처리되면 인터럽트 신호(XITR)를 생성할 수 있다. 컴플리션 컨트롤러(160)가 인터럽트 신호(XITR)를 생성함에 있어 요구되는 제2 커널 요청(KREQ2)의 처리 개수는 데이터 절감 장치(100)가 포함되는 시스템(200)에 요구되는 성능 또는 리소스 등에 따라 달리 설정될 수 있다.
인터럽트 신호(XITR)는 호스트 인터페이스 유닛(140)을 통해 외부(예를 들어, 커널)로 전달될 수 있다. 인터럽트 신호(XITR)는 커널을 통해 제1 호스트 요청(HREQ1)에 대한 응답으로 도 2의 CPU(210)에 전달될 수 있다.
도 18은 본 발명의 실시예에 따른 데이터 절감 동작을 수행하기 위한 커널(KN)의 구조를 설명하기 위한 도면이다.
도 2 및 도 18을 참조하면, 본 발명의 실시예에 따른 시스템(200)에서 상술된 데이터 절감 동작을 수행하기 위해, 커널(KN)의 장치 맵퍼(device mapper, DM) 및 데이터 절감 장치 드라이버(data reduction device driver, DD)가 관여될 수 있다.
장치 맵퍼(DM)는 제1 호스트 요청(HREQ1)을 후킹(hooking)하여 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)을 생성할 수 있다. 장치 맵퍼(DM)는 또한 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)에 대응되어 데이터 절감 장치(100)로부터 수신되는 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)을 처리할 수 있다. 예를 들어, 장치 맵퍼(DM)는 제1 장치 응답(DRSP1)에 대응되는 제1 절감 데이터(DTA1)가 유일한 값인지 여부를 판단하여 제2 커널 요청(KREQ2)의 생성 여부를 달리할 수 있다.
예를 들어, 제1 절감 데이터(DTA1)가 해시 값인 경우, 장치 맵퍼(DM)는 해시 값이 유일한 값인지 여부를 판단하기 위한 맵핑 테이블(미도시)을 포함할 수 있다. 장치 맵퍼(DM)는 시스템 메모리(220)에 액세스하여 제1 절감 데이터(DTA1)를 독출하거나 데이터 절감 장치(100)로부터 제1 절감 데이터(DTA1)를 수신하여 맵핑 테이블 상의 다른 해시 값과 비교함으로써 제1 절감 데이터(DTA1)가 유일한 값인지 여부를 확인할 수 있다. 시스템 메모리(220)에 액세스하여 제1 절감 데이터(DTA1)를 독출하는 경우 제1 장치 응답(DRSP1)에 포함되는 주소 정보가 참조될 것이다. 장치 맵퍼(DM)는 제1 절감 데이터(DTA1)가 유일한 값이 아닌 경우 맵핑 테이블 상의 제1 절감 데이터(DTA1)의 주소를 중복된 해시 값에 대한 주소로 업데이트할 수 있다.
데이터 절감 장치(100)에서 기 설정된 일정 개수의 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)에 대한 처리가 완료되는 때에, 즉 기 설정된 일정 개수의 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)이 발생하는 경우, 인터럽트 신호(XITR)가 커널(KN)로 수신될 수 있다. 인터럽트 신호(XITR)에 대응되는 동작이 장치 맵퍼(DD)에 의해 수행된 후, 그 수행이 완료되었음을 나타내는 제1 스토리지 응답(SRSP1) 또는 제2 스토리지 응답(SRSP2)이 생성될 수 있다. 인터럽트 신호(XITR)에 대응되는 동작 중 하나는, 임의의 개수의 제2 장치 응답(DRSP2)에 포함되는 압축 결과들, 즉 제2 절감 데이터(DTA2)들을 하나의 블록 데이터(BDTA)로 패킹(packing)하는 동작일 수 있다.
제1 스토리지 응답(SRSP1)은 제1 호스트 요청(HREQ1)에 대한 응답으로 출력될 수 있다. 제2 스토리지 응답(SRSP2)은 제2 호스트 요청(HREQ2)에 대한 응답으로 출력될 수 있다. 전술된 바와 같이, 제1 호스트 요청(HREQ1)은 CPU(210)의 저장 장치(240)에 대한 기입 요청이고, 제2 호스트 요청(HREQ2)은 CPU(210)의 저장 장치(240)에 대한 독출 요청일 수 있다.
제1 호스트 요청(HREQ1), 제2 호스트 요청(HREQ2), 제1 스토리지 응답(SRSP1) 및 제2 스토리지 응답(SRSP2)은 커널(KR)의 블록 IO 레이어(block IO layer, BIOL)을 통해 CPU(210)로부터 수신되거나 CPU(210)로 전달될 수 있다. 또한, 블록 IO 레이어(BIOL)는 장치 맵퍼(DM)의 저장 장치(240)에 대한 함수 호출을 커널(KR)의 저장 장치 드라이버(SD)로 전달할 수 있다. 예를 들어, 장치 맵퍼(DM)는 블록 단위로 패킹된 블록 데이터(BDTA)를 대응되는 저장 장치(240)에 기입하기 위한 기입 함수를 호출할 수 있다. 저장 장치 드라이버(SD)는 이에 응답하여 저장 장치(240)에 블록 단위로 패킹된 블록 데이터(BDTA)에 대한 기입 동작을 수행할 수 있다.
데이터 절감 장치 드라이버(DD)는 장치 맵퍼(DM)로부터 수신되는 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)을 서브미션 큐(submission queue, SQ)로 복제할 수 있다. 서브미션 큐(SQ)에는 임의의 개수의 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)이 복제되고, 임의의 개수의 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)은 동시에 데이터 절감 장치(100)로 전송될 수 있다. 데이터 절감 장치 드라이버(DD)는 또한 컴플리션 큐(completion queue, CQ)를 통해 데이터 절감 장치(100)로부터 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)을 수신할 수 있다. 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)은 장치 맵퍼(DM)로 전달되어 전술된 동작이 수행될 수 있다. 서브미션 큐(SQ) 및 컴플리션 큐(CQ)는 다수로 구비될 수 있다.
도 19는 본 발명의 실시예에 따른 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)의 포맷을 나타내는 도면이다.
도 18 및 도 19를 참조하면, 본 발명의 실시예에 따른 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)은 명령 코드 필드(opcode field), 플래그 필드(flags field), 크기 필드(size field), 송신지 주소 필드(source address field) 및 수신지 주소 필드(destination address field)로 구성될 수 있다.
명령 코드 필드는 데이터 절감 장치(100)에 요구되는 데이터 절감을 위한 연산 유형을 나타낼 수 있다. 예를 들어, 명령 코드는 해시 연산 또는 압축 연산 등을 나타낼 수 있다. 플래그 필드는 해당 요청이 마지막 명령인지 여부를 나타낼 수 있다. 예를 들어, 커널(KR)의 서브미션 큐(SQ)에 복제될 수 있는 제1 커널 요청(KREQ1) 및 제2 커널 요청(KREQ2)이 10개인 경우, 플래그는 열 번째 이전의 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)에 대하여는 "0"의 값으로 설정되고 마지막 열 번째 제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)에 대하여는 "1"의 값으로 설정될 수 있다. 요청 데이터(RDTA)의 크기 정보는 크기 필드에 포함될 수 있다. 송신지 주소 필드에는 요청 데이터(RDTA)의 주소가, 수신지 주소 필드에는 제1 연산의 결과 값(제1 절감 데이터(DTA1)) 또는 제2 연산의 결과 값(제2 절감 데이터(DTA2))의 주소가 포함될 수 있다.
제1 커널 요청(KREQ1) 또는 제2 커널 요청(KREQ2)은 또한 전술된 정보 이외에 비정형적인 추가적인 정보를 포함하는 콘텍스트 필드(context field)를 더 포함할 수 있다.
도 20은 장치 맵퍼(DM)에서 호출되는 본 발명의 실시예에 따른 오프로드 해시 함수의 예를 나타내는 도면이다.
도 18 및 도 20을 참조하면, 본 발명의 실시예에 따른 오프로드 해시 함수(function offload_hash())는 장치 맵퍼(DM)에서 호출될 수 있다. 오프로드 해시 함수(function offload_hash())는 명령어(cmnd), 즉 제1 커널 요청(KREQ1)을 포함할 수 있다.
명령어(cnmd)는 도 19의 포맷으로 구현되는 경우 예를 들어, 그 명령어 유형이 해시이고(cmnd.opcode = HASH), 해당 명령어가 기 설정된 임의의 개수의 명령어 중 마지막 명령어이며(cmnd.flags = 1), 요청 데이터(RDTA)의 크기가 블록 크기이고(cmnd.size = BLOCK_SIZE), 송신지 주소가 "0x1234"이며(cmnd.src_addr = 0x1234), 수신지 주소가 "0xabcd"인(cmnd.dst_addr = 0xabcd)인 것으로 생성될 수 있다. 이때, 블록 크키는 4KB일 수 있다. 도 20은 명령어(cnmd)에 추가 정보가 존재하지 아니하는 경우(cmnd.context = NULL)를 도시하고 있다.
오프로드 해시 함수(function offload_hash())는 또한, 명령어(cnmd)를 데이터 절감 장치 드라이버(DD)로 전송하는 동작(submit_cmnd)을 포함할 수 있다.
도 21는 본 발명의 실시예에 따른 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)의 포맷을 나타내는 도면이다.
도 21을 참조하면, 본 발명의 실시예에 따른 제1 장치 응답(DRSP1) 또는 제2 장치 응답(DRSP2)은 명령 코드 필드, 상태 필드(status field), 크기 필드, 및 콘텍스트 필드로 구성될 수 있다. 명령 코드 필드, 크기 필드 및 콘텍스트 필드는 전술된 도 19와 동일한 내용의 정보를 포함할 수 있다. 즉, 명령 코드 필드는 대응되는 연산의 유형을 나타내고, 크기 필드는 연산 결과의 크기를 나타낼 수 있다. 전술된 바와 같이, 연산 유형은 해시 연산 또는 압축 연산 등일 수 있고, 연산 결과는 제1 절감 데이터(DTA1) 또는 제2 절감 데이터(DTA2)일 수 있다.
상태 필드는 해당 명령어의 처리 상태를 나타낸다. 예를 들어, 상태 필드는 해시 연산 또는 압축 연산에 에러가 존재하는지 여부를 나타낼 수 있다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 절감 장치
110: 제어 모듈
120: DMA 엔진
130: 데이터 절감 코어
RDTA: 요청 데이터
DTA1: 제1 절감 데이터
DTA2: 제2 절감 데이터
XCON: 제어 신호
KREQ1: 제1 커널 신호
KREQ2: 제2 커널 신호
DRSP1: 제1 장치 응답
DRSP2: 제2 장치 응답

Claims (10)

  1. 호스트 요청에 대응되는 제1 커널 요청(kernel request) 또는 제2 커널 요청을 외부로부터 수신하고 상기 제1 커널 요청 또는 상기 제2 커널 요청에 대응되는 제어 신호를 생성하는 제어 모듈(control module);
    상기 제어 신호에 응답하여 상기 호스트 요청에 대응되는 요청 데이터를 외부로부터 독출하는 DMA 엔진(Direct Memory Access Engine);
    각각, 제1 연산을 통해 상기 요청 데이터를 절감하여 제1 절감 데이터로 생성하는 제1 연산 로직, 및 상기 제1 절감 데이터가 유일한 값(unique value)인 경우 제2 연산을 통해 상기 제1 절감 데이터를 절감하여 제2 절감 데이터로 생성하는 제2 연산 로직 중 적어도 하나의 로직을 포함하는 다수의 데이터 절감 코어(data reduction core); 및
    상기 제1 커널 요청 또는 상기 제2 커널 요청에 따라 상기 다수의 데이터 절감 코어 중 하나가 상기 제1 연산 및 상기 제2 연산 중 대응되는 연산을 수행하도록 스케줄링하는 트래픽 스케줄러(traffic scheduler);를 포함하는 데이터 절감 장치(data reduction device).
  2. 청구항 1에 있어서,
    상기 다수의 데이터 절감 코어는,
    상기 제1 연산 로직을 포함하는 적어도 하나의 제1 데이터 절감 코어; 및
    상기 제2 연산 로직을 포함하는 적어도 하나의 제2 데이터 절감 코어;를 포함하는 데이터 절감 장치.
  3. 청구항 1에 있어서,
    상기 다수의 데이터 절감 코어는,
    상기 제1 연산 로직을 포함하는 적어도 하나의 제1 데이터 절감 코어; 및
    상기 제1 연산 로직 및 상기 제2 연산 로직을 모두 포함하는 적어도 하나의 제2 데이터 절감 코어;를 포함하는 데이터 절감 장치.
  4. 청구항 1에 있어서,
    상기 제1 연산은 해시(hash) 연산인 데이터 절감 장치.
  5. 청구항 1에 있어서,
    상기 제2 연산은 압축(compression) 연산인 데이터 절감 장치.
  6. 청구항 1에 있어서,
    상기 트래픽 스케줄러는,
    다수의 상기 제1 커널 요청에 대응되는 다수의 상기 제1 연산 중 n번째 제1 연산이 수행되는 중에 상기 제2 연산에 대한 제2 커널 요청이 수신되는 경우, 상기 n번째 제1 연산의 수행이 완료된 후 n-1번째 제1 연산이 수행되기 전에 상기 제2 연산이 수행되도록 스케줄링하는 데이터 절감 장치.
  7. 청구항 1에 있어서,
    상기 트래픽 스케줄러는,
    다수의 상기 제1 커널 요청에 대응되는 다수의 상기 제1 연산 중 n번째 제1 연산이 수행되는 중에 상기 제2 연산에 대한 제2 커널 요청이 수신되는 경우, 상기 n번째 제1 연산의 수행을 종료시키고 상기 제2 연산이 수행되도록 스케줄링하는 데이터 절감 장치.
  8. 제1 호스트 요청(host request)을 생성하는 프로세서;
    상기 제1 호스트 요청에 대응되는 요청 데이터가 로딩(loading)되는 시스템 메모리; 및
    상기 제1 호스트 요청에 대응되는 제1 커널 요청 또는 제2 커널 요청에 응답하여, 제1 절감 데이터 또는 제2 절감 데이터를 생성하는 데이터 절감 장치;를 포함하고,
    상기 데이터 절감 장치는,
    상기 제1 커널 요청 또는 상기 제2 커널 요청을 수신하여 제어 신호를 생성하는 제어 모듈;
    상기 제어 신호에 응답하여 상기 요청 데이터를 상기 시스템 메모리로부터 리드하는 DMA 엔진;
    각각, 제1 연산을 통해 상기 요청 데이터를 절감하여 제1 절감 데이터로 생성하는 제1 연산 로직, 및 상기 제1 절감 데이터가 유일한 값(unique value)인 경우 제2 연산을 통해 상기 제1 절감 데이터를 절감하여 제2 절감 데이터로 생성하는 제2 연산 로직 중 적어도 하나의 로직을 포함하는 다수의 데이터 절감 코어; 및
    상기 제1 커널 요청 또는 상기 제2 커널 요청에 따라 상기 다수의 데이터 절감 코어 중 하나가 상기 제1 연산 및 상기 제2 연산 중 대응되는 연산을 수행하도록 스케줄링하는 트래픽 스케줄러;를 포함하는 시스템.
  9. 청구항 8에 있어서,
    상기 요청 데이터가 저장될 수 있는 다수의 저장 장치;를 더 포함하고,
    상기 다수의 데이터 절감 코어 중 적어도 일부는,
    상기 다수의 저장 장치 중 대응되는 저장 장치에 대한 상기 제1 연산 또는 상기 제2 연산을 수행하는 시스템.
  10. 청구항 8에 있어서,
    상기 트래픽 스케줄러는,
    상기 다수의 저장 장치의 용량 또는 액세스 빈도에 따라 상기 다수의 데이터 절감 코어가 할당 또는 변경되도록 스케줄링하는 시스템.
KR1020230001413A 2022-10-20 2023-01-04 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템 KR102536943B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20220135962 2022-10-20
KR1020220135962 2022-10-20
KR1020220190624A KR102535532B1 (ko) 2022-10-20 2022-12-30 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020220190624A Division KR102535532B1 (ko) 2022-10-20 2022-12-30 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Publications (1)

Publication Number Publication Date
KR102536943B1 true KR102536943B1 (ko) 2023-05-30

Family

ID=86529549

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020220190624A KR102535532B1 (ko) 2022-10-20 2022-12-30 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템
KR1020230001413A KR102536943B1 (ko) 2022-10-20 2023-01-04 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020220190624A KR102535532B1 (ko) 2022-10-20 2022-12-30 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Country Status (1)

Country Link
KR (2) KR102535532B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190041954A (ko) * 2017-10-13 2019-04-23 한국전자통신연구원 멀티 커널 시스템의 입출력 처리 방법 및 장치
KR20220042044A (ko) * 2020-09-26 2022-04-04 인텔 코포레이션 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190041954A (ko) * 2017-10-13 2019-04-23 한국전자통신연구원 멀티 커널 시스템의 입출력 처리 방법 및 장치
KR20220042044A (ko) * 2020-09-26 2022-04-04 인텔 코포레이션 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ajdari et al."CIDR: A Cost-Effective In-Line Data Reduction System for Terabit-Per-Second Scale SSD Arrays", 2019 IEEE International Symposium on HPCA(2019.03.28.)* *

Also Published As

Publication number Publication date
KR102535532B1 (ko) 2023-05-30

Similar Documents

Publication Publication Date Title
US10331595B2 (en) Collaborative hardware interaction by multiple entities using a shared queue
JP6961686B2 (ja) トリガ動作を用いたgpuリモート通信
EP3358463A1 (en) Method, device and system for implementing hardware acceleration processing
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US11321256B2 (en) Persistent kernel for graphics processing unit direct memory access network packet processing
US10909655B2 (en) Direct memory access for graphics processing unit packet processing
US11341087B2 (en) Single-chip multi-processor communication
US10007464B1 (en) Method and apparatus for integration of non-volatile memory
US20150123980A1 (en) Method and apparatus for supporting programmable software context state execution during hardware context restore flow
WO2023201987A1 (zh) 请求处理方法、装置、设备及介质
CN112445735A (zh) 一种联邦学习数据传输方法、计算机设备、系统及存储介质
US20180314431A1 (en) Low overhead copy engine fault and switch mechanism
CN116257471A (zh) 一种业务处理方法及装置
KR102536943B1 (ko) 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템
US10831684B1 (en) Kernal driver extension system and method
US10802828B1 (en) Instruction memory
US20240134521A1 (en) Data reduction device, data reduction method, and system including data reduction device
KR20220072748A (ko) 버퍼 메모리 장치의 헤드 오브 라인 엔트리 처리
US20110191638A1 (en) Parallel computer system and method for controlling parallel computer system
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
US10423424B2 (en) Replicated stateless copy engine
US10185604B2 (en) Methods and apparatus for software chaining of co-processor commands before submission to a command queue
EP4310678A1 (en) Accelerator control system, accelerator control method, and accelerator control program
CN116881191B (zh) 数据处理方法、装置、设备及存储介质
US20230195664A1 (en) Software management of direct memory access commands

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant