KR102593034B1 - 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기 - Google Patents

다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기 Download PDF

Info

Publication number
KR102593034B1
KR102593034B1 KR1020210086972A KR20210086972A KR102593034B1 KR 102593034 B1 KR102593034 B1 KR 102593034B1 KR 1020210086972 A KR1020210086972 A KR 1020210086972A KR 20210086972 A KR20210086972 A KR 20210086972A KR 102593034 B1 KR102593034 B1 KR 102593034B1
Authority
KR
South Korea
Prior art keywords
data
storage
reconstruction
buffer
width
Prior art date
Application number
KR1020210086972A
Other languages
English (en)
Other versions
KR20230006143A (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 KR1020210086972A priority Critical patent/KR102593034B1/ko
Publication of KR20230006143A publication Critical patent/KR20230006143A/ko
Application granted granted Critical
Publication of KR102593034B1 publication Critical patent/KR102593034B1/ko

Links

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • 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/0629Configuration or reconfiguration of storage systems
    • 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
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기가 개시된다. 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기는, 스토리지내에서 획득된 원시 데이터를 어플리케이션의 데이터 저장 방식에 따라 재구성하는 재구성 모듈; 상기 재구성 모듈의 전단에 위치되며, 상기 원시 데이터의 재구성 여부에 따라 상기 재구성 모듈로의 전달 또는 바이패싱을 결정하는 제1 디먹스; 및 더블 버퍼링 구조를 가지며, 상기 더블 버퍼링 구조를 통해 상기 재구성 모듈로부터 재구성된 데이터를 지연 없이 호스트 인터페이스 컨트롤러로 출력하는 출력 모듈을 포함한다.

Description

다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기{An in-storage date reorganization accelerator for multidimensional database}
본 발명은 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기에 관한 것이다.
최근 빅 데이터 시대가 도래함에 따라, 다수의 차원 (속성)을 가지는 다차원 데이터로 구성된 다차원 데이터베이스가 다방면에서 적용되고 있다. 다차원 데이터베이스가 적용된 대표적인 예시로는 OLAP(On-Line Analytical Processing)와 data warehousing등이 있다. 하지만, 기존에 널리 사용되는 행 지향 저장방식 (row-oriented storage method)을 사용하여 메인 메모리에 다차원 데이터를 저장하는 경우, 데이터 읽기 시 같은 행에 있는 불필요한 데이터가 함께 읽어진다는 단점이 있다.
위와 같은 문제점을 해결하기 위해, 최근 열 지향 저장방식 (column-oriented storage method)을 비롯하여 다양한 메인 메모리를 위한 저장 방식들이 제안되고 있다. 이러한 저장 방식들은 탐색 작업 (scan operation)과 같은 데이터베이스 작업들을 가속하여 데이터베이스 시스템의 성능을 향상시키는 방향으로 설계된다. 이처럼 다양한 저장 방식이 적용되고 있는 메인 메모리와 달리, 도 1에 도시된 바와 같이, SSD로 대표되는 스토리지에서는 복잡한 데이터 배치 과정을 피하기 위해 여전히 행 지향 저장방식이 적용된다. 만약 어떤 데이터베이스 시스템에서 메인 메모리에 행 지향 저장 방식 외의 다른 저장 방식을 적용하는 경우, 메인 메모리와 스토리지 간 데이터를 물리적으로 저장하는 방식에 차이가 발생하게 된다. 이에 따라, 데이터를 스토리지에서 메인 메모리로 로드한 후에 해당 데이터를 메인 메모리의 저장 방식에 맞게 변환하는 데이터 재구성 작업을 필요로 한다.
기존 CPU 기반 시스템에서는 CPU가 데이터 재구성 작업을 수행한다. CPU가 데이터 재구성 작업을 수행함에 따라, CPU와 메인 메모리 간 막대한 수의 데이터 전송이 발생한다. 이에 따라, 데이터 재구성 과정에서 잦은 메인 메모리 접근과 CPU에서의 데이터 재구성 작업으로 인해 상당한 수준의 지연 시간이 발생한다. 또한, 상당한 수준의 동적 전력 또한 CPU에서 데이터 재구성을 수행하는 동안 소모된다. 본 발명의 필요성을 확인하기 위해 수행한 사전 실험에 따르면, 상용 CPU 기반 시스템에서 TPC-H 데이터 셋을 활용하여 데이터를 재구성하여 쿼리문을 처리하는 경우, 실제로 쿼리문을 수행하는 시간 대비 데이터를 재구성하는데 걸리는 시간은 100배 이상임을 확인할 수 있었다. 이처럼 기존 CPU 기반 시스템에서 메인 메모리에 기존 행 지향 저장방식 외의 다른 저장 방식을 적용하는 경우, 데이터 재구성으로 인해 막대한 비용이 발생하는 것이 불가피하다.
본 발명은 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기를 제공하기 위한 것이다.
또한, 본 발명은 데이터가 스토리지에서 메인 메모리로 로드되는 동안 데이터 재구성이 가능케 할 수 있는 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기를 제공하기 위한 것이다.
또한, 본 발명은 데이터 재구성을 위한 레이턴시(latency)와 에너지를 줄일 수 있는 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기를 제공하기 위한 것이다.
본 발명의 일 측면에 따르면, 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기가 제공된다.
본 발명의 일 실시예에 따르면, 스토리지내에서 획득된 원시 데이터를 어플리케이션의 데이터 저장 방식에 따라 재구성하는 재구성 모듈; 상기 재구성 모듈의 전단에 위치되며, 상기 원시 데이터의 재구성 여부에 따라 상기 재구성 모듈로의 전달 또는 바이패싱을 결정하는 제1 디먹스; 및 더블 버퍼링 구조를 가지며, 상기 더블 버퍼링 구조를 통해 상기 재구성 모듈로부터 재구성된 데이터를 지연 없이 호스트 인터페이스 컨트롤러로 출력하는 출력 모듈을 포함하는 스토리지내 데이터 재구성 가속기가 제공될 수 있다.
상기 제1 디먹스의 전달에 위치되며, 상기 스토리지내에서 제1 데이터 폭으로 전달되는 원시 데이터를 일시적으로 저장하여 제2 데이터 폭으로 상기 디먹스로 출력하는 제1 데이터 버퍼를 포함하되, 상기 스토리지는 상기 제1 데이터 폭으로 데이터를 입출력하며, 상기 데이터 재구성 가속기는 제2 데이터 폭으로 데이터를 입출력할 수 있다.
상기 재구성 모듈은, 상기 제1 디먹스를 통해 전달되는 제2 데이터 폭의 원시 데이터를 일시적으로 저장하여 제3 데이터 폭으로 출력하는 입력 데이터 버퍼; 및 상기 제3 데이터 폭 단위로 상기 어플리케이션의 데이터 저장 방식에 따라 데이터를 재구성하는 리매핑 유닛을 포함할 수 있다.
상기 출력 모듈은, 상기 제3 데이터 폭으로 상기 재구성 모듈로부터 전달되는 재구성된 데이터를 상기 제2 데이터 폭 단위로 출력하는 제1 출력 버퍼와 제2 출력 버퍼; 및 상기 제1 출력 버퍼와 상기 제2 출력 버퍼의 전단에 위치되며, 상기 제1 출력 버퍼와 상기 제2 출력 버퍼로 교번으로 상기 재구성된 데이터를 전달하는 제2 디먹스를 포함하되, 동일 클럭 주기에서 상기 제1 출력 버퍼와 상기 제2 출력 버퍼 중 어느 하나는 상기 제2 디먹스를 통해 재구성된 데이터를 저장하고, 다른 하나는 저장된 재구성된 데이터를 상기 제2 데이터 폭 단위로 출력하는
상기 스토리지 내장 프로세서로부터 상기 어플리케이션의 데이터 저장 방식을 전달받아 저장하는 레지스터를 더 포함하되, 상기 재구성 모듈은 상기 레지스터에 저장된 어플리케이션의 데이터 저장 방식에 따라 상기 원시 데이터를 재구성할 수 있다.
제2 데이터 버퍼를 더 포함하되, 상기 제1 디먹스는 바이패싱시 상기 원시 데이터를 상기 제2 데이터 버퍼로 전달하되, 상기 제2 데이터 버퍼는 제1 데이터 폭 단위로 데이터를 호스트 컨트롤러를 통해 메인 메모리로 전달할 수 있다.
본 발명의 일 실시예에 따른 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기를 제공함으로써, 데이터가 스토리지에서 메인 메모리로 로드되는 동안 데이터 재구성이 가능케 할 수 있으며, 이를 통해, 데이터 재구성을 위한 레이턴시(latency)와 에너지를 줄일 수 있는 이점이 있다.
도 1은 스토리지의 데이터 저장 방식을 설명하기 위해 도시한 도면.
도 2는 본 발명의 일 실시예에 따른 스토리지내 데이터 재구성 가속기의 구조를 도시한 도면.
도 3은 본 발명의 일 실시예에 따른 3차원 데이터를 저장하는 차원슬라이스를 예시한 도면.
도 4는 스토리지와 메인 메모리의 데이터 저장 방식의 차이를 설명하기 위해 도시한 도면.
도 5는 종래의 방법에 따른 데이터 재구성 과정을 설명하기 위해 도시한 도면.
도 6은 본 발명의 일 실시예에 따른 데이터 재구성 과정을 설명하기 위해 도시한 도면.
도 7은 종래와 본 발명의 일 실시예에 따른 데이터 재구성을 위한 실행 시간을 비교한 결과 그래프.
도 8은 종래와 본 발명의 일 실시예에 따른 데이터 재구성을 위한 에너지 소모를 비교한 결과 그래프.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 스토리지내 데이터 재구성 가속기의 구조를 도시한 도면이고, 도 3은 본 발명의 일 실시예에 따른 3차원 데이터를 저장하는 차원슬라이스를 예시한 도면이다. 이하에서는 스토리지가 SSD인 것을 가정하기로 한다.
이러한 스토리지는 복잡한 데이터 배치 과정을 피하기 위해 행 지향 저장 방식으로 데이터를 저장하며, 메인 메모리는 행 지향 저장 방식 이외의 다른 저장 방식을 적용하는 것을 가정하기로 한다.
또한, 스토리지와 메인 메모리는 제1 데이터 폭(width)로 데이터를 처리하는 것을 가정하기로 하며, 본 발명의 일 실시예에 따른 데이터 재구성 가속기는 제2 데이터 폭으로 데이터를 처리하는 것을 가정하기로 한다.
예를 들어, 제1 데이터 폭은 32비트일 수 있으며, 제2 데이터 폭은 64비트일 수 있다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 데이터 재구성 가속기(200)는 제1 데이터 버퍼(210), 제1 디먹스(220), 레지스터(260), 재구성 모듈(230), 출력 모듈(240) 및 제2 데이터 버퍼(250)를 포함하여 구성된다.
제1 데이터 버퍼(210)는 DARM 컨트롤러로부터 스토리지로부터 제1 데이터 폭 단위로 원시 데이터를 전달받는다. 스토리지내의 DRAM 컨트롤러는 DRAM에서 타겟 데이터를 32비트 단위로 읽은 후 제1 데이터 버퍼(210)로 전달할 수 있다.
본 발명의 일 실시예에 따른 데이터 재구성 가속기(200)는 제2 데이터 폭을 가지므로, 제1 데이터 버퍼(210)는 제2 데이터 폭의 데이터가 DARM 컨트롤러로부터 전달될때까지 일시적으로 원시 데이터를 저장할 수 있다.
제1 데이터 버퍼(210)는 입력단과 출력단의 데이터 폭이 상이할 수 있다.
제1 데이터 버퍼(210)는 DARM 컨트롤러가 제1 데이터 폭을 가지므로, 입력단은 제1 데이터 폭을 가지며, 데이터 재구성 가속기(200)는 제2 데이터 폭을 가지므로 출력단은 제2 데이터 폭을 가질 수 있다.
제1 데이터 버퍼(210)는 DARM 컨트롤러로부터 제2 데이터 폭의 데이터가 전송될때까지 데이터를 일시적으로 저장한 후 제2 데이터 폭의 데이터가 모두 전송되며 해당 제2 데이터 폭의 데이터를 제1 디먹스(220)로 출력할 수 있다.
제1 디먹스(220)는 제1 데이터 버퍼(210)로부터 전달된 데이터를 재구성 모듈(230)로 전달 또는 바이패싱하기 위한 수단이다.
제1 디먹스(220)는 스토리지 내장 프로세서의 컨트롤 신호에 따라 제1 데이터 버퍼(210)로부터 전달된 데이터를 재구성 모듈(230)로 전달하거나 바이패스하여 제2 데이터 버퍼(250)로 출력한다.
제2 디먹스(242)는 스토리지 내장 프로세서의 컨트롤 신호에 따라 데이터 재구성이 필요한 경우 재구성 모듈(230)로 데이터를 전달한다. 그러나 만일 컨트롤 신호에 따라 재구성이 필요하지 않은 경우, 제1 디먹스(220)는 재구성 모듈(230)을 바이패싱하여 데이터를 제2 데이터 버퍼(250)로 출력할 수 있다.
레지스터(260)는 어플리케이션에 따른 재구성 방식을 저장한다.
즉, 레지스터(260)는 스토리지 내장 프로세서로부터 어플리케이션의 데이터 저장 방식(재구성 방식)을 전달받아 저장할 수 있다.
데이터 저장 방식은 어플리케이션에 따라 상이하다. 따라서, 스토리지 내장 프로세서는 호스트단의 중앙 처리 장치(CPU)로부터 어플리케이션별 데이터 저장 방식(재구성 방식)을 수신한 후 이를 레지스터(260)에 저장할 수 있다.
재구성 모듈(230)은 레지스터(260)에 저장된 어플리케이션의 데이터 저장 방식(재구성 방식)에 따라 데이터를 재구성하기 위한 수단이다.
이러한 재구성 모듈(230)은 도 2에 도시된 바와 같이, 입력 버퍼(232)와 리매핑 유닛(234)으로 구성된다.
입력 버퍼(232)는 제3 데이터 폭의 데이터가 수집될때까지 데이터를 일시적으로 저장한다.
데이터 재구성 가속기(200)의 중요 구성인 재구성 모듈(230)은 내부적으로 제3 데이터 폭 단위로 데이터를 입출력하고, 처리할 수 있다.
따라서, 입력 버퍼(232)는 재구성 모듈(230)의 중요 구성인 리매핑 유닛(234)이 데이터를 처리할 수 있도록 제3 데이터 폭에 해당하는 데이터가 수집될때까지 데이터를 일시적으로 저장한 후 제3 데이터 폭에 해당하는 데이터 수집시 리매핑 유닛(234)으로 전달할 수 있다.
리매핑 유닛(234)은 레지스터(260)를 통해 스토리지 내장 프로세서로부터 어플리케이션에 따른 재구성 방식(즉, 데이터 저장 정보)를 전달받으며, 재구성 방식에 따라 데이터를 재구성하여 출력 모듈(240)로 전달할 수 있다.
이해와 설명의 편의를 도모하기 위해 도 3을 참조하여 보다 상세히 설명하기로 한다.
재구성 모듈(230)은 도 3에 도시된 바와 같이 뱅크 블록의 형태로 원시 데이터를 재구성할 수 있다.
하나의 뱅크 블록을 형성하는 경우, 하나의 데이터에 있는 모든 차원(속성)의 값이 필요하다. 즉, 데이터 차원만큼 차원의 값이 필요하다. 예를 들어, 도 3에서 310으로 표시된 뱅크 블록을 형성하는 것을 가정하기로 한다. 이 경우, 64번째 데이터의 모든 차원의 값이 필요하다.
따라서, 입력 버퍼(232)는 클럭 당 데이터 버퍼에서 4개의 차원(속성)(입력 폭(input width)/ 차원의 값의 크기(size of a dimension value))(65 bits/16bits=4)의 값을 수신할 수 있다.
만일 뱅크 블록(데이터 차원과 동일한 수)을 형성하기 위한 충분한 차원 값이 입력 버퍼(232)에 준비되면, 입력 버퍼(232)에 준비된 데이터를 리매핑 유닛(234)으로 전달된다. 하나의 차원의 값의 크기가 16비트이고, 데이터의 차원은 최대 8이므로, 입력 버퍼(232)의 크기는 16 x 8=128 비트일 수 있다.
레지스터(260)에 저장된 재구성 방법과 데이터의 차원에 따라, 리매핑 유닛(234)은 차원 값을 재구성할 수 있다. 사용하지 않는 비트 필드를 하위 뱅크의 값으로 채워서 재구성된 데이터 블록의 크기는 원시 데이터 블록의 크기와 동일하게 유지될 수 있다.
재구성된 데이터는 리매핑 유닛(234)을 통해 출력 모듈(240)로 전달된다.
출력 모듈(240)은 더블 버퍼링 구조를 가지며, 더블 버퍼링 구조를 통해 재구성 모듈(230)로부터 재구성된 데이터를 지연 없이 호스트 인터페이스 컨트롤러로 출력한다.
출력 모듈(240)은 도 2에 도시된 바와 같이, 제2 디먹스(242), 제1 출력 버퍼(244a) 및 제2 출력 버퍼(244b)를 포함하여 구성된다.
제2 디먹스(242)는 재구성 모듈(230)로부터 전달되는 재구성된 데이터를 제1 및 제2 출력 버퍼(244b) 중 한 곳에 저장한다. 예를 들어, 제t 클럭 주기에서 제2 디먹스(242)는 제1 출력 버퍼(244a)에 데이터를 저장할 수 있다. 또한, 제2 출력 버퍼(244b)는 제t 클럭 주기에서 저장된 재구성된 데이터를 제2 데이터 폭 단위로 제2 데이터 버퍼(250)로 출력할 수 있다.
또한, 제(t+1) 클럭 주기에서, 제2 디먹스(242)는 제2 출력 버퍼(244b)로 데이터를 저장하며, 제1 출력 버퍼(244a)에서 저장된 재구성된 데이터를 제2 데이터 폭 단위로 제2 데이터 버퍼(250)로 출력할 수 있다.
즉, 출력 모듈(240)은 더블 버퍼링 구조를 가지며, 한 개의 출력 버퍼(제1 출력 버퍼(244a) 및 제2 출력 버퍼(244b) 중 어느 하나)에서 데이터를 저장하는 동안 나머지 한 개의 출력 버퍼(제1 출력 버퍼(244a) 및 제2 출력 버퍼(244b) 중 다른 하나)는 데이터를 출력한다. 출력 모듈(240)에서 출력된 재구성이 완료된 데이터는 제2 데이터 버퍼(250)를 통해 호스트 인터페이스 컨트롤러를 통해 메인 메모리로 전달될 수 있다.
제1 출력 버퍼(244a)와 제2 출력 버퍼(244b)는 각각 데이터 출력이 준비 완료되는 경우, 제2 데이터 폭 단위(예를 들어, 64비트) 비트 출력이 클럭 주기마다 제2 데이터 버퍼(250)로 전송될 수 있다.
본 발명의 일 실시예에 따르면, 제1 출력 버퍼(244a)와 제2 출력 버퍼(244b)의 크기는 예를 들어, 512 x 16 비트일 수 있다. 워드 크기가 512 비트이고, 1비트 차원 값이 저장될 때 워드의 가장 큰 수가 필요하다. 예를 들어, 한 차원 값의 크기가 16 비트이므로, 요구되는 워드의 가장 큰 수는 16일 수 있다.
도 2에서는 데이터 재구성 가속기가 스토리지에 위치하는 경우를 가정하여 이를 중심으로 설명하였다.
그러나, 본 발명의 일 실시예에 따른 데이터 재구성 가속기는 PIM 형태로 메모리 컨트롤러내에 위치할 수도 있다. 데이터 재구성 가속기가 스토리지와 메모리 컨트롤러에 위치하는 경우 데이터 재구성 가속기가 동일한 데이터 패스상에 위치될 수 있다. DRAM 모듈 대비 다수의 스토리지가 있는 시스템의 경우 본 발명의 일 실시예에 따른 데이터 재구성 가속기를 스토리지에 위치시키는 것보다 PIM 형태로 가속기를 활용하는 경우 더 좋은 효율을 보일 수 있다. 본 발명의 일 실시예에 따른 데이터 재구성 가속기는 스토리지와 메모리 컨트롤러 중 한 가지에만 적용시킬 수 있는 것이 아닌 사용자의 환경에 따라 유리한 쪽으로 활용될 수 있다.
도 4는 스토리지와 메인 메모리의 데이터 저장 방식의 차이를 설명하기 위해 도시한 도면이고, 도 5는 종래의 방법에 따른 데이터 재구성 과정을 설명하기 위해 도시한 도면이고, 도 6은 본 발명의 일 실시예에 따른 데이터 재구성 과정을 설명하기 위해 도시한 도면이다.
도 4에 도시된 바와 같이, 스토리지는 행 지향 저장 방식을 사용하는 것을 가정하며, 메인 메모리는 열 지향 저장 방식으로 데이터를 저장하는 것을 가정하여 설명하기로 한다. 스토리지에서 행 지향 저장 방식으로 데이터를 저장하는 경우, 메인 메모리로 데이터를 로드한 후 데이터를 재구성해야만 한다.
종래의 경우, 스토리지에서 원시 데이터를 로드한 후 메인 메모리를 통해 프로세서로 전달된다. 데이터 재구성을 위해 프로세서(CPU)와 메인 메모리간 많은 데이터 전송이 발생하며, 프로세서는 데이터 재구성 과정에서 긴 지연 시간(latency)가 발생하고 상당한 수준의 에너지를 소모하게 된다.
도 6은 본 발명의 일 실시예에 따른 데이터 재구성 과정을 도시한 것으로, 데이터를 스토리지에서 메인 메모리로 로드하는 과정에서 스토리지 내에 있는 데이터 재구성 가속기에서 데이터를 재구성하여 메인 메모리로 전달한다.
이로 인해, 메인 메모리는 데이터 재구성을 위한 추가적인 접근이 필요치 않으며, 프로세서(CPU)와 메인 메모리 사이에 데이터 재구성을 위해 많은 데이터 전송이 불필요하며, 프로세서(CPU)에서 데이터 재구성을 위한 비효율적인 계산을 할 필요가 없어 효율은 높은 이점이 있다.
도 7은 종래와 본 발명의 일 실시예에 따른 데이터 재구성을 위한 실행 시간을 비교한 그래프이다.
도 7에서 보여지는 바와 같이, 본 발명의 일 실시예에 따른 스토리지내 데이터 재구성 가속기가 있는 시스템이 종래의 프로세서(CPU) 기반 시스템 대비 성능이 평균 78.6% 향상된 것을 알 수 있다.
도 8은 종래와 본 발명의 일 실시예에 따른 데이터 재구성을 위한 에너지 소모를 비교한 결과이다.
도 8에서 보여지는 바와 같이, 본 발명의 일 실시예에 따른 스토리지내 데이터 재구성 가속기가 있는 시스템이 종래의 프로세서(CPU) 기반 시스템 대비 에너지 소모가 평균 30.3% 절감되는 것을 알 수 있다.
본 발명의 실시 예에 따른 장치 및 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야 통상의 기술자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
200: 데이터 재구성 가속기
210: 제1 데이터 버퍼
220: 제1 디먹스
230: 재구성 모듈
240: 출력 모듈
250: 제2 데이터 버퍼
260: 레지스터

Claims (6)

  1. 스토리지내에서 획득된 원시 데이터를 어플리케이션의 데이터 저장 방식에 따라 재구성하는 재구성 모듈;
    상기 재구성 모듈의 전단에 위치되며, 상기 원시 데이터의 재구성 여부에 따라 상기 재구성 모듈로의 전달 또는 바이패싱을 결정하는 제1 디먹스; 및
    더블 버퍼링 구조를 가지며, 상기 더블 버퍼링 구조를 통해 상기 재구성 모듈로부터 재구성된 데이터를 지연 없이 호스트 인터페이스 컨트롤러로 출력하는 출력 모듈을 포함하되,
    상기 재구성 모듈은,
    상기 제1 디먹스를 통해 전달되는 제2 데이터 폭의 원시 데이터를 일시적으로 저장하여 제3 데이터 폭으로 출력하는 입력 데이터 버퍼; 및
    상기 제3 데이터 폭 단위로 상기 어플리케이션의 데이터 저장 방식에 따라 데이터를 재구성하는 리매핑 유닛을 포함하며,
    상기 출력 모듈은,
    상기 제3 데이터 폭으로 상기 재구성 모듈로부터 전달되는 재구성된 데이터를 상기 제2 데이터 폭 단위로 출력하는 제1 출력 버퍼와 제2 출력 버퍼; 및
    상기 제1 출력 버퍼와 상기 제2 출력 버퍼의 전단에 위치되며, 상기 제1 출력 버퍼와 상기 제2 출력 버퍼로 교번으로 상기 재구성된 데이터를 전달하는 제2 디먹스를 포함하되,
    동일 클럭 주기에서 상기 제1 출력 버퍼와 상기 제2 출력 버퍼 중 어느 하나는 상기 제2 디먹스를 통해 재구성된 데이터를 저장하고, 다른 하나는 저장된 재구성된 데이터를 상기 제2 데이터 폭 단위로 출력하는 것을 특징으로 하는 스토리지내 데이터 재구성 가속기.
  2. 제1 항에 있어서,
    상기 제1 디먹스의 전단에 위치되며, 상기 스토리지내에서 제1 데이터 폭으로 전달되는 원시 데이터를 일시적으로 저장하여 제2 데이터 폭으로 상기 디먹스로 출력하는 제1 데이터 버퍼를 포함하되,
    상기 스토리지는 상기 제1 데이터 폭으로 데이터를 입출력하며,
    상기 데이터 재구성 가속기는 제2 데이터 폭으로 데이터를 입출력하는 것을 특징으로 하는 스토리지내 데이터 재구성 가속기.

  3. 삭제
  4. 삭제
  5. 제1 항에 있어서,
    스토리지 내장 프로세서로부터 상기 어플리케이션의 데이터 저장 방식을 전달받아 저장하는 레지스터를 더 포함하되,
    상기 재구성 모듈은 상기 레지스터에 저장된 어플리케이션의 데이터 저장 방식에 따라 상기 원시 데이터를 재구성하는 것을 특징으로 하는 스토리지내 데이터 재구성 가속기.
  6. 제1 항에 있어서,
    제2 데이터 버퍼를 더 포함하되,
    상기 제1 디먹스는 바이패싱시 상기 원시 데이터를 상기 제2 데이터 버퍼로 전달하되,
    상기 제2 데이터 버퍼는 제1 데이터 폭 단위로 데이터를 호스트 컨트롤러를 통해 메인 메모리로 전달하는 것을 특징으로 하는 스토리지내 데이터 재구성 가속기.

KR1020210086972A 2021-07-02 2021-07-02 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기 KR102593034B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210086972A KR102593034B1 (ko) 2021-07-02 2021-07-02 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210086972A KR102593034B1 (ko) 2021-07-02 2021-07-02 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Publications (2)

Publication Number Publication Date
KR20230006143A KR20230006143A (ko) 2023-01-10
KR102593034B1 true KR102593034B1 (ko) 2023-10-23

Family

ID=84893951

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210086972A KR102593034B1 (ko) 2021-07-02 2021-07-02 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Country Status (1)

Country Link
KR (1) KR102593034B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002536863A (ja) 1999-01-29 2002-10-29 イントラクティブ シリコン インコーポレイテッド 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
JP2016177226A (ja) 2015-03-23 2016-10-06 カシオ計算機株式会社 信号処理装置、信号処理方法、プログラムおよび電子楽器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
PL3812900T3 (pl) * 2016-12-31 2024-04-08 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
US10691340B2 (en) * 2017-06-20 2020-06-23 Samsung Electronics Co., Ltd. Deduplication of objects by fundamental data identification
KR102327234B1 (ko) * 2019-10-02 2021-11-15 고려대학교 산학협력단 행렬 연산시 메모리 데이터 변환 방법 및 컴퓨터
KR20210066631A (ko) * 2019-11-28 2021-06-07 삼성전자주식회사 메모리에 데이터를 기입하기 위한 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002536863A (ja) 1999-01-29 2002-10-29 イントラクティブ シリコン インコーポレイテッド 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
JP2016177226A (ja) 2015-03-23 2016-10-06 カシオ計算機株式会社 信号処理装置、信号処理方法、プログラムおよび電子楽器

Also Published As

Publication number Publication date
KR20230006143A (ko) 2023-01-10

Similar Documents

Publication Publication Date Title
Koo et al. Summarizer: trading communication with computing near storage
Van Renen et al. Persistent memory I/O primitives
JP6639420B2 (ja) フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム
US11706020B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
US11995087B2 (en) Near-memory acceleration for database operations
US20150067243A1 (en) System and method for executing map-reduce tasks in a storage device
US20130145059A1 (en) Data storage system with primary and secondary compression engines
US10719450B2 (en) Storage of run-length encoded database column data in non-volatile memory
US6754771B2 (en) System for selectively transferring application data between storage devices in a computer system utilizing dynamic memory allocation
CN107391544A (zh) 列式存储数据的处理方法、装置、设备及计算机储存介质
KR20210096553A (ko) 레이턴시 및 스루풋 중심의 재구성 가능한 저장 장치
CN110851074A (zh) 嵌入式参考计数器和特殊数据模式自动检测
Pietrzyk et al. Fighting the duplicates in hashing: conflict detection-aware vectorization of linear probing
Qiao et al. Closing the B+-tree vs.{LSM-tree} Write Amplification Gap on Modern Storage Hardware with Built-in Transparent Compression
KR102471966B1 (ko) 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
Salamat et al. NASCENT2: Generic near-storage sort accelerator for data analytics on SmartSSD
US10061747B2 (en) Storage of a matrix on a storage compute device
US20020052868A1 (en) SIMD system and method
KR102593034B1 (ko) 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기
US20180113912A1 (en) Method and system for storing query result in distributed server
US12001427B2 (en) Systems, methods, and devices for acceleration of merge join operations
Lim et al. Lsm-tree compaction acceleration using in-storage processing
Banakar et al. WiscSort: External Sorting For Byte-Addressable Storage
US20040003196A1 (en) System for compressing/decompressing data
JP6881579B2 (ja) データロードプログラム、データロード方法およびデータロード装置

Legal Events

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