KR20210149327A - 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 - Google Patents

역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 Download PDF

Info

Publication number
KR20210149327A
KR20210149327A KR1020200066219A KR20200066219A KR20210149327A KR 20210149327 A KR20210149327 A KR 20210149327A KR 1020200066219 A KR1020200066219 A KR 1020200066219A KR 20200066219 A KR20200066219 A KR 20200066219A KR 20210149327 A KR20210149327 A KR 20210149327A
Authority
KR
South Korea
Prior art keywords
search
block
circuit
hardware accelerator
list
Prior art date
Application number
KR1020200066219A
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 에스케이하이닉스 주식회사
Priority to KR1020200066219A priority Critical patent/KR20210149327A/ko
Priority to US17/118,085 priority patent/US11544270B2/en
Publication of KR20210149327A publication Critical patent/KR20210149327A/ko

Links

Images

Classifications

    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • 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/24Querying
    • G06F16/248Presentation of query results
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F16/287Visualization; Browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 기술에 의한 하드웨어 가속기는 역색인 구조에 포함된 리스트에서 블록을 읽어 오는 블록 처리 회로; 및 블록 처리 회로에서 읽어온 블록에서 문서 번호를 도출하고 문서 번호에 대응하는 점수를 산출하는 검색 코어를 포함한다.

Description

역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템{HARDWARE ACCELERATOR PERFORMING SEARCH USING INVERTED INDEX STRUCTURE AND SEARCH SYSTEM INLCUDING THE HARDWARE ACCELERATOR}
본 기술은 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기와 이를 포함하는 검색 시스템을 제공한다.
구글이나 네이버와 같은 텍스트 기반의 검색 엔진에서는 역색인(inverted index) 구조를 사용하여 사용자가 입력한 질의를 처리한 후 검색 결과를 제공하고 있다.
도 1은 역색인 구조를 나타내는 도표이다.
역색인 구조는 단어와 단어에 대응하는 문서 번호(DID)를 저장하는 자료 구조이다.
문서 번호는 리스트 형태로 저장되며 각 문서에 포함된 해당 단어의 개수인 단어 빈도(TF) 정보가 리스트에 더 포함될 수 있다.
도 1에서 예를 들어 단어 "Business"를 포함하는 문서 번호(DID)는 0, 2, 11, 20, 38, 46이며 이들에 대응하는 단어 빈도(TF)는 각각 2, 1, 3, 5, 1, 1이다.
다른 단어들인 "Cameo", "Jarvis" 등에 대해서도 유사한 형태로 리스트가 생성되어 저장된다.
도 2는 역색인 구조를 이용한 검색 명령의 처리 과정을 나타낸 도면이다.
먼저 사용자가 다수의 단어를 포함하는 텍스트 질의를 입력한다(S10).
이후 메모리 장치에 저장된 역색인 구조로부터 단어에 대응하는 리스트를 읽어 온다(S20).
이때 리스트는 데이터 용량을 절약하기 위해 압축되어 저장되는 것이 일반적이다.
이에 따라 읽어온 리스트에 대해서 압축을 해제한다(S30).
질의가 다수의 단어를 포함하는 경우 교집합, 합집합 등의 집합 연산을 수행한다. 이에 따라 압축이 해제된 리스트를 이용하여 교집합, 합집합 등의 집합 연산을 수행한다(S40).
집합 연산을 수행하면 다수의 결과물이 도출되며 다수의 결과물에 대해서 우순 순위를 결정하는 점수 연산(S50)을 수행한다.
마지막으로 점수를 참조하여 검색 결과를 출력한다(S60). 예를 들어 점수가 높은 순서대로 미리 정해진 개수의 결과물을 출력할 수 있다.
이상에서 살펴본 바와 같이 사용자가 단어 기반의 질의를 입력하면 검색 결과가 출력되기까지 압축 해제, 집합 연산, 점수 연산 등의 다양한 연산을 수행해야 하는데 이 과정에서 질의 처리 시간의 대부분이 소모된다.
종래의 검색 엔진은 소프트웨어 방식으로 검색 명령을 처리하면서 많은 에너지를 소모하면서도 레이턴시와 쓰루풋에 있어서 약점이 있다.
이에 따라 역색인 구조를 이용하여 검색 명령을 처리할 수 있는 고성능의 하드웨어 가속기와 이를 포함하는 검색 시스템이 요구되고 있다.
US 2016-0098450 A1 US 8423499 B2
본 기술은 역색인 구조를 이용하여 질의를 처리하는 하드웨어 가속기와 이를 포함하는 검색 시스템을 제공한다.
본 발명의 일 실시예에 의한 하드웨어 가속기는 역색인 구조에 포함된 리스트에서 블록을 읽어 오는 블록 처리 회로; 및 블록 처리 회로에서 읽어온 블록에서 문서 번호를 도출하고 문서 번호에 대응하는 점수를 산출하는 검색 코어를 포함한다.
본 발명의 일 실시예에 의한 검색 시스템은 단어와 단어에 대응하는 리스트를 포함하는 역색인 구조를 저장하는 메모리 장치; 하나 또는 둘 이상의 단어를 포함하는 검색 명령을 제공하는 호스트; 및 역색인 구조를 이용하여 검색 명령에 대응하는 검색 결과를 생성하는 하드웨어 가속기를 포함하되, 하드웨어 가속기는 메모리 장치에 저장된 리스트에서 블록을 읽어 오는 블록 처리 회로; 및 블록 처리 회로에서 읽어온 블록에서 문서 번호를 도출하고 문서 번호에 대응하는 점수를 산출하는 검색 코어를 포함한다.
본 기술에 의한 하드웨어 가속기는 검색 명령을 처리하면서 수행되는 다양한 연산을 전용의 하드웨어를 통해 처리함으로써 레이턴시와 에너지 소비를 줄일 수 있다.
도 1은 역색인 구조를 나타내는 설명도.
도 2는 역색인 구조를 이용한 검색 동작을 나타내는 순서도.
도 3은 본 발명의 일 실시예에 의한 리스트의 구조를 나타내는 설명도.
도 4는 본 발명의 일 실시예에 의한 검색 시스템의 블록도.
도 5는 본 발명의 일 실시예에 의한 하드웨어 가속기를 나타내는 블록도.
도 6은 본 발명의 일 실시예에 의한 코어 회로를 나타내는 블록도.
도 7 내지 9는 본 발명의 일 실시예에 의한 연결 회로의 연결 방법을 나타내는 블록도.
도 10 내지 도 21은 본 발명의 일 실시예에 의한 하드웨어 가속기의 동작을 설명하는 블록도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 3은 본 발명의 일 실시예에 의한 리스트의 구조를 나타내는 설명도이다.
(A)는 특정 단어에 대응하는 리스트에 포함된 문서 번호(DID)와 단어 빈도(TF)를 나타낸다.
문서 번호는 크기 순으로 정렬되어 저장된다.
문서 번호를 그대로 저장하는 경우 값의 크기에 따라 비트 수가 증가하여 필요한 공간이 증가하는 문제가 있다.
이에 따라 (B)와 같이 인접한 문서 번호의 차이를 저장하는 델타 코딩을 사용할 수 있다.
델타 코딩된 리스트에서 N번 원소에는 N번 문서 번호와 N-1번 문서 번호의 차이에 대응하는 값이 저장된다(이때 N은 자연수). 델타 코딩된 리스트의 0번 원소에는 0번째 문서 번호가 그대로 저장된다.
예를 들어 (B)에서 델타 코딩된 리스트의 0번 원소에는 0번째 문서 번호인 이 저장되고, 1번 원소에는 1번 문서 번호와 0번 문서 번호의 차이인 3이 저장된다.
델타 코딩을 수행하더라도 문서 번호 사이의 차이에 편차가 큰 경우 압축 효율이 떨어지는 문제가 있다.
이에 따라 본 발명의 일 실시예에서는 (C)와 같이 델타 코딩된 리스트를 다수의 블록으로 구분하고 각 블록 별로 정보를 압축한다.
(C)의 경우 리스트는 0번에서 2번까지 총 3개의 블록을 포함하며 각 블록에는 4개, 5개, 3개의 원소가 저장된다.
본 실시예에서 각 블록의 첫 번째 문서 번호는 메타 리스트에 별도로 저장될 수 있다. 예를 들어 각 블록의 첫 번째 문서 번호는 7, 54, 294이며 이들은 메타 리스트에 저장된다. 이에 따라 리스트에 각 블록의 첫 번째 문서 번호는 저장하지 않고 나머지 원소들만 저장해도 무방하다.
리스트에 포함된 블록의 개수 및 각 블록의 길이는 압축 후 데이터의 용량을 최소화하는 방향으로 선택될 수 있다. 이는 통상의 기술자가 최적화 연산을 수행하여 선택할 수 있는 것이므로 구체적인 개시는 생략한다.
리스트의 문서 빈도는 문서 번호와는 달리 압축되지 않은 형태로 저장될 수 있다. 이때 문서 빈도는 문서 번호와는 별도의 리스트 형태로 저장될 수 있다.
도 4는 본 발명의 일 실시예에 의한 검색 시스템을 나타내는 블록도이다.
본 발명의 일 실시예에 의한 검색 시스템은 호스트(10), 메모리 컨트롤러(20), 메모리 장치(30) 및 하드웨어 가속기(100)를 포함한다.
호스트(10)는 코어(11), 캐시(12)를 포함하며 코어(11)와 캐시(12)는 다수 개 포함될 수 있다.
호스트(10)는 검색 동작을 구동하는 구동 소프트웨어의 제어에 따라 동작할 수 있으며 사용자가 입력한 질의를 포함하는 검색 명령을 생성하여 하드웨어 가속기(100)에 제공한다.
검색 명령을 제공하기 위하여 호스트(10)와 하드웨어 가속기(100) 사이에 별도의 인터페이스를 사용할 수 있다.
본 실시예에서는 별도의 인터페이스를 사용하는 대신에 메모리 장치(30)의 특정 주소에 맵핑된 레지스터를 사용하여 하드웨어 가속기(100)에 검색 명령을 제공한다.
메모리 장치에 맵핑된 레지스터를 활용하여 신호를 전달하는 기술은 잘 알려진 기술이므로 이에 대한 구체적인 설명은 생략한다.
하드웨어 가속기(100)의 초기화 동작을 위해서 구동 소프트웨어는 void init(file invFile)와 같은 초기화 함수를 지원할 수 있다.
초기화 함수는 하드웨어 가속기(100)를 초기화하는 동시에 파일(invFile)에 저장된 역색인 구조를 메모리 장치(30)의 미리 정해진 영역에 저장할 수 있다.
구동 소프트웨어는 검색 명령을 제공하기 위하여 다음과 같은 검색 함수를 지원할 수 있다.
val search (val qtype, addr list0, size_t length0, addr list1, size_t length 1, addr result, val numCores)
위의 함수에 사용되는 인자들의 의미는 다음 표 1과 같다.
인자 의미
qtype 질의 형태
list0 0번 리스트의 시작 주소
length0 0번 리스트의 데이터 크기
list1 1번 리스트의 시작 주소
length1 1번 리스트의 데이터 크기
result 결과를 저장할 주소
numCores 검색 명령 처리에 사용할 검색 코어 개수
질의 형태는 예를 들어 단일 단어에 대한 검색인지 또는 복수 단어의 조합에 대한 합집합 또는 교집합 검색인지를 나타낼 수 있다.
전자의 경우 0번 리스트에 대한 정보만 필요하고 후자의 경우 0번 리스트 및 1번 리스트에 대한 정보가 필요하다.
하드웨어 가속기(100)는 리스트 정보를 읽고 결과를 저장하기 위하여 메모리 장치(30)에 접근해야 한다.
본 실시예에서 하드웨어 가속기(100)는 메모리 컨트롤러(20)를 통해 메모리 장치(30)에 접근하며 메모리 컨트롤러(20)는 호스트(10)와 하드웨어 가속기(100)로부터의 메모리 장치 접근 요청을 스케줄링하여 처리할 수 있다.
메모리 컨트롤러(20)의 구체적인 구성 및 동작은 잘 알려진 바와 같으므로 구체적인 설명은 생략한다.
도 5는 하드웨어 가속기(100)의 구성을 보다 구체적으로 나타내는 블록도이다.
하드웨어 가속기(100)는 명령 큐(110), 질의 스케줄러(120), 블록 처리 회로(130), 검색 코어(140), 연결 회로(150)를 포함한다.
명령 큐(110)는 호스트(10)에서 제공된 검색 명령을 순차적으로 저장한다.
전술한 바와 같이 검색 명령은 메모리 장치에 맵핑된 레지스터를 사용하여 전달되므로 메모리 컨트롤러(20)를 통해 입력된다.
검색 스케줄러(120)는 명령 큐(110)에 저장된 검색 명령을 선택하여 출력한다.
블록 처리 회로(130)는 단어에 대응하는 리스트에 포함된 블록을 메모리 장치(30)로부터 읽어오는 동작을 제어한다.
전술한 바와 같이 단어에 대응하는 리스트에 대한 정보는 검색 명령에 인자로서 포함된다.
블록 처리 회로(130)는 블록 읽기 회로(131)와 블록 스케줄러(132)를 포함한다.
블록 스케줄러(132)는 리스트에 대응하는 메타 데이터를 포함하는 메타 리스트를 참조하여 블록 읽기 회로(131)를 제어한다.
전술한 바와 같이 메타 리스트는 리스트의 각 블록의 첫 번째 문서 번호를 저장할 수 있다.
블록 읽기 회로(131)는 블록 스케줄러(131)의 제어에 따라 메모리 장치(30)로부터 리스트에 포함된 블록을 읽는다.
블록 처리 회로(130)는 하나 또는 둘 이상이 포함될 수 있는데 도 5에는 3개의 블록 처리 회로를 표시하였다.
검색 코어(140)는 읽어온 블록을 이용하여 결과물을 출력하기 위한 연산 동작을 처리한다.
전술한 바와 같이 메모리 장치(30)에 저장된 리스트는 블록 단위로 압축되어 있으므로 압축을 해제하는 동작이 필요하며 이외에도 집합 연산을 수행하는 동작, 점수를 산정하는 동작 등을 수행한다.
도 6은 검색 코어(140)를 나타내는 블록도이다.
검색 코어(140)는 압축 해제 회로(141), 점수 연산 회로(142), 집합 연산 회로(143), 이진 검색 회로(144)를 포함한다.
압축 해제 회로(141)는 블록 단위로 압축된 리스트의 압축을 해제하는 역할을 한다. 압축 해제를 통해서 문서를 식별할 수 있는 문서 번호가 제공될 수 있다.
점수 연산 회로(142)는 압축 해제 회로(141)에서 출력된 문서에 대해서 점수를 연산하는 동작을 수행한다.
본 실시예에서 점수 연산 동작은 문서 빈도를 고려하여 점수를 산정하는 BM25 기법을 사용한다. BM25는 종래에 잘 알려진 기술이므로 구체적인 설명은 생략한다.
압축 해제 회로(141)와 점수 연산 회로(142)는 각각 다수 개가 포함될 수 있다.
도 6에는 두 개의 압축 해제 회로(141-0, 141-1)와 두 개의 점수 연산 회로(142-0, 142-1)가 도시되어 있다.
집합 연산 회로(143)는 교집합, 합집합과 관련된 연산을 수행한다.
교집합 연산은 두 리스트에 공통으로 포함된 문서를 식별하는 동작을 포함한다. 교집합 연산은 두 리스트에 공통으로 포함된 문서에 대해서 산출된 점수를 조합하여 해당 문서의 점수를 최종적으로 결정하는 동작을 더 포함한다. 이때 점수의 조합 방식은 다양하게 변형될 수 있으나 본 실시예에서는 두 점수를 더하는 것으로 가정한다.
합집합 연산은 두 리스트 중 적어도 하나에 포함된 문서에 대한 점수를 출력하는 동작을 수행한다. 이때 두 리스트에 공통으로 포함된 문서에 대해서는 두 문서에 대해서 산출된 점수를 조합하여 해당 문서의 점수를 최종적으로 결정하는 동작을 포함한다. 이때 조합 방식은 다양하게 변형될 수 있으나 본 실시예에서는 두 점수를 더하는 것으로 가정한다.
이진 검색 회로(144)는 교집합 연산을 수행하는 도중에 사용될 수 있다.
교집합 연산은 두 리스트에 공통으로 포함된 문서를 찾는 동작을 포함한다.
본 실시예에서는 블록 처리 회로(130)에서 두 리스트 중 길이가 더 짧은 리스트를 읽은 후 검색 코어(140)에서 짧은 리스트에 포함된 문서가 더 긴 리스트에 포함되어 있는지 확인하는 방식으로 동작한다.
이진 검색 회로(144)는 압축 해제 회로(141)를 통해 짧은 리스트에 포함된 문서를 제공받으면 해당 문서가 포함되어 있을 가능성이 있는 블록을 긴 리스트에서 검색하고, 검색된 블록을 메모리 장치(30)에서 읽어오는 동작을 수행한다.
이진 검색 회로(144)는 긴 리스트의 특정 블록을 메모리 장치(30)에서 읽어오기 위하여 블록 처리 회로(130)와 유사한 구성을 가질 수 있다.
검색 코어(140)는 하나 또는 둘 이상이 포함될 수 있는데 도 5에는 3개의 검색 코어를 표시하였다.
연결 회로(150)는 블록 처리 회로(130)와 검색 코어(140) 사이를 연결한다.
도 7 내지 도 9는 연결 회로(150)를 통한 다수의 블록 처리 회로(130)와 다수의 검색 코어(140) 사이의 연결 방식을 설명한다.
도 7은 하나의 블록 처리 회로(130)가 다수의 검색 코어(140)를 사용하는 경우를 나타낸다.
이를 통해 하나의 검색 명령을 처리하는 데 있어서 병렬성(intra-query parallellity)을 증가시켜 처리 속도를 향상시킬 수 있다.
도 8은 다수의 블록 처리 회로(130)가 다수의 검색 코어(140)에 일대 일로 연결되는 경우를 나타낸다.
이를 통해 다수의 검색 명령을 처리하는 데 있어서 병렬성(inter-query parallellity)을 증가시켜 처리 속도를 향상시킬 수 있다.
도 9는 도 7과 도 8의 경우를 혼합한 형태(hybrid)이다.
하드웨어 가속기(100)에서 하나의 검색 명령을 처리하기 위하여 스케줄링 단계와 연산 단계를 수행한다.
스케줄링 단계에서는 검색 스케줄러(120)가 검색 명령을 선택하고, 연결 회로(150)의 연결 방식을 결정할 수 있다.
연산 단계에서는 검색 코어(140)가 동작하여 압축을 해제하고 집합 연산을 수행하고 점수를 연산하는 등의 동작을 수행한다.
이하에서는 하드웨어 가속기(100)에서 검색 명령을 처리하는 동작을 예시한다.
도 10 내지 도 19는 하나의 단어를 포함하는 질의에 대해 검색 명령을 처리하는 방법을 개시한다.
먼저 도 10과 같이 메모리 장치(30)에 리스트(L)와 리스트(L)에 대한 메타 리스트(M)가 저장되어 있는 것으로 가정한다.
전술한 바와 같이 본 실시예에서 리스트(L)는 블록 단위로 압축된다. 리스트(L)와 메타 리스트(M)에서 이진수로 표시된 것은 해당 원소가 압축된 것임을 나타낸다.
메타 리스트(M)는 리스트(L)에 포함된 각 블록의 첫 번째 원소를 저장한다.
리스트(L)에는 두 개의 블록이 포함되어 있으며 각 블록에는 한 개의 원소가 존재하는 것으로 가정한다. 각 블록의 첫 번째 문서 번호는 메타 리스트에 저장되므로 실질적으로 각 블록은 두 개의 원소를 포함한다.
<사이클 1>
도 11에 도시된 바와 같이 먼저 블록 스케줄러(132)는 0번 블록의 메타 데이터 (M[0])를 메모리 장치(30)에서 읽어 온다.
<사이클 2>
도 12에 도시된 바와 같이 블록 읽기 회로(131)는 리스트의 0번 블록을 메모리 장치(30)에서 읽어 온다.
<사이클 3>
도 13에 도시된 바와 블록 스케줄러(132)는 0번 블록을 0번 압축 해제 회로(141-0)에 할당하고, 1번 블록의 메타 데이터(M[1])를 메모리 장치(30)에서 읽어온다.
<사이클 4>
도 14에 도시된 바와 같이 리스트의 0번 블록을 0번 압축 해제 회로(141-0)에서 압축 해제한다. 0번 블록의 첫 번째 원소는 메타 리스트에 저장된 것과 동일하다.
<사이클 5>
도 15에 도시된 바와 같이 0번 점수 연산 회로(142-0)는 0번 블록의 첫 번째 원소인 0번 문서에 대응하는 점수를 연산한다.
점수 연산은 문서 번호와 문서 빈도를 고려하여 점수를 산정하는 BM25 방법을 사용할 수 있다. BM25 기법은 잘 알려진 것이므로 구체적인 설명을 생략한다.
동시에 0번 압축 해제 회로(141-0)는 0번 블록의 두 번째 원소의 압축을 해제한다. 두 번째 원소는 첫 번째 원소 0에 7를 더한 7이 된다.
동시에 블록 스케줄러(132)는 1번 블록을 1번 압축 해제 회로(141-1)에 할당한다.
<사이클 6>
도 16에 도시된 바와 같이 0번 블록 압축 해제 회로(141-0)는 압축 해제된 0번 블록의 두 번째 원소인 7번 문서를 0번 점수 연산 회로(142-0)로 보낸다.
동시에 0번 점수 연산 회로(142-0)는 0번 문서에 대한 점수를 연산하여 메모리 장치(30)에 저장한다.
동시에 1번 압축 해제 회로(141-1)는 1번 블록의 첫 번째 원소의 압축을 해제한다. 이때 1번 블록의 첫 번째 원소는 메타 리스트에 저장된 것과 동일하다.
<사이클 7>
도 17에 도시된 바와 같이 0번 점수 연산 회로(142-0)는 0번 블록의 두 번째 원소인 7번 문서에 대응하는 점수를 연산하여 메모리 장치(30)에 저장한다.
동시에 1번 점수 연산 회로(142-0)는 1번 블록의 첫 번째 원소인 20번 문서에 대응하는 점수를 연산한다.
동시에 1번 압축 해제 회로(141-0)는 1번 블록의 두 번째 원소의 압축을 해제한다. 두 번째 원소의 값은 첫번째 원소 20에 1을 더한 21이 된다.
<사이클 8>
도 18에 도시된 바와 같이 1번 점수 연산 회로(142-1)는 1번 블록의 첫 번째 원소인 20번 문서에 대응하는 점수를 연산하여 메모리 장치(30)에 저장한다.
<사이클 9>
도 19에 도시된 바와 같이 1번 점수 연산 회로(142-1)는 1번 블록의 두 번째 원소인 21번 문서에 대응하는 점수를 연산하여 메모리 장치(30)에 저장한다.
호스트(10)는 하드웨어 가속기(100)의 동작이 종료된 후 저장된 점수를 이용하여 상위 결과물을 선택할 수 있다.
도 20은 합집합 연산이 필요한 검색 명령을 처리하는 방법을 설명하는 도면이다.
합집합 연산의 경우 두 리스트에 대하여 합집합 연산을 수행하게 된다.
본 실시예에서 블록 처리 장치(130)는 두 리스트에 대한 압축 해제 연산을 각각 0번 압축 해제 회로(141-0)와 1번 압축 해제 회로(141-1)에 할당한다.
또한 0번 압축 해제 회로(141-0)에서 출력되는 문서에 대한 점수는 0번 점수 연산 회로(142-0)에서 수행하고 1번 압축 해제 회로(141-1)에서 출력되는 문서에 대한 점수는 1번 점수 연산 회로(142-1)에서 수행한다.
집합 연산 회로(143)는 0번 점수 연산 회로(142-0)에서 출력되는 점수와 1번 점수 연산 회로(142-1)에서 출력되는 점수를 메모리 장치(30)에 출력한다.
집합 연산 회로(143)는 두 리스트에 공통으로 포함된 문서의 경우 두 점수 연산 회로(142-0, 142-1)에서 출력된 점수를 더하여 출력할 수 있다.
도 21은 교집합 연산이 필요한 검색 명령을 처리하는 방법을 설명하는 도면이다.
교집합 연산의 경우 두 리스트에 대하여 교집합 연산을 수행하게 된다.
본 실시예에서 블록 처리 장치(130)는 두 리스트 중 짧은 리스트에 대한 압축 해제 연산을 0번 압축 해제 회로(141-0)에 할당한다.
0번 압축 해제 회로(141-0)는 문서 번호를 이진 검색 회로(144)와 집합 연산 회로(143)에 제공한다.
이진 검색 회로(144)는 긴 리스트 중에서 해당 문서가 포함되어 있을 가능성이 있는 특정 블록을 메모리 장치(30)로부터 읽어 온다.
전술한 바와 같이 리스트에 대한 메타 리스트는 각 블록의 첫 번째 원소의 값을 포함하고 있고 리스트의 문서 번호는 크기 순으로 정렬되어 있으므로 이진 검색 기법에 의해 특정 블록을 발견할 수 있다.
이진 검색 회로(144)는 읽어온 특정 블록을 1번 압축 해제 회로(141-1)에 할당하고 1번 압축 해제 회로(141-1)는 특정 블록에 포함된 문서 번호를 집합 연산 회로(143)에 제공한다.
집합 연산 회로(143)는 0번 압축 해제 회로(141-0)와 1번 압축 해제 회로(142-0)에서 제공되는 문서 중 공통되는 문서에 대해서 0번 점수 연산 회로(142-0)와 1번 점수 연산 회로(142-1)에서 점수를 조합하여 출력한다.
본 실시예에서는 두 점수 연산 회로(142-0, 142-1)에서 출력된 점수를 더하여 출력할 수 있다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
10: 호스트 11: 코어
12: 캐시 20: 메모리 컨트롤러
30: 메모리 장치 100: 하드웨어 가속기
110: 명령 큐 120: 검색 스케줄러
130: 블록 처리 회로 131: 블록 읽기 회로
132: 블록 스케줄러 140: 검색 코어
141: 압축 해제 회로 142: 점수 연산 회로
143: 집합 연산 회로 144: 이진 검색 회로
150: 연결 회로

Claims (20)

  1. 역색인 구조에 포함된 리스트에서 블록을 읽어 오는 블록 처리 회로; 및
    상기 블록 처리 회로에서 읽어온 블록에서 문서 번호를 도출하고 상기 문서 번호에 대응하는 점수를 산출하는 검색 코어
    를 포함하는 하드웨어 가속기.
  2. 청구항 1에 있어서, 상기 블록 처리 회로는
    상기 리스트에 포함된 하나 또는 둘 이상의 블록에 대한 읽기 순서를 결정하는 블록 스케줄러; 및
    상기 블록 스케줄러에서 선택한 블록을 읽어 오는 블록 읽기 회로
    를 포함하는 하드웨어 가속기.
  3. 청구항 1에 있어서, 상기 검색 코어는 블록에서 도출된 문서 번호에 대응하는 점수를 산출하는 점수 연산 회로를 포함하는 하드웨어 가속기.
  4. 청구항 3에 있어서, 상기 검색 코어는 압축된 상태의 블록에서 압축을 해제하여 블록에 포함된 문서 번호를 도출하는 압축 해제 회로를 더 포함하는 가속기.
  5. 청구항 3에 있어서, 상기 점수 연산 회로는 다수 개가 구비되며 각각 서로 다른 블록에 포함된 문서 번호에 대응하는 점수를 산출하는 하드웨어 가속기.
  6. 청구항 5에 있어서, 상기 검색 코어는 상기 서로 다른 블록에 포함된 문서 번호에 대하여 합집합 또는 교집합 연산을 수행하는 집합 연산 회로를 더 포함하는 하드웨어 가속기.
  7. 청구항 6에 있어서, 상기 검색 코어는 상기 서로 다른 블록 중 어느 하나의 블록에 포함된 문서 번호를 참조하여 상기 서로 다른 블록 중 나머지 블록을 읽어 오는 이진 검색 회로를 더 포함하는 하드웨어 가속기.
  8. 청구항 1에 있어서, 상기 블록 처리 회로와 상기 검색 코어를 연결하는 연결회로를 더 포함하는 하드웨어 가속기.
  9. 청구항 8에 있어서, 상기 블록 처리 회로와 상기 검색 코어는 각각 다수 개가 구비되며 상기 연결 회로는 다수의 블록 처리 회로와 다수의 검색 코어 사이의 연결 관계를 설정하는 하드웨어 가속기.
  10. 청구항 1에 있어서,
    검색 명령을 저장하는 명령 큐; 및
    상기 명령 큐에 저장된 검색 명령을 선택하는 검색 스케줄러
    를 더 포함하는 하드웨어 가속기.
  11. 단어와 단어에 대응하는 리스트를 포함하는 역색인 구조를 저장하는 메모리 장치;
    하나 또는 둘 이상의 단어를 포함하는 검색 명령을 제공하는 호스트; 및
    상기 역색인 구조를 이용하여 상기 호스트에서 제공하는 검색 명령에 대응하는 검색 결과를 생성하는 하드웨어 가속기
    를 포함하되, 상기 하드웨어 가속기는
    상기 메모리 장치에 저장된 리스트에서 블록을 읽어 오는 블록 처리 회로; 및
    상기 블록 처리 회로에서 읽어온 블록에서 문서 번호를 도출하고 상기 문서 번호에 대응하는 점수를 산출하는 검색 코어
    를 포함하는 검색 시스템.
  12. 청구항 11에 있어서, 상기 블록 처리 회로는
    상기 리스트에 포함된 블록에 대한 읽기 순서를 결정하는 블록 스케줄러; 및
    상기 블록 스케줄러에서 선택한 블록을 읽어 오는 블록 읽기 회로
    를 포함하는 검색 시스템.
  13. 청구항 11에 있어서, 상기 검색 코어는 블록에 포함된 문서 번호에 대응하는 점수를 산출하는 점수 연산 회로를 포함하는 검색 시스템.
  14. 청구항 13에 있어서, 상기 검색 코어는 압축된 상태의 블록에서 압축을 해제하여 블록에 포함된 문서 번호를 제공하는 압축 해제 회로를 더 포함하는 검색 시스템.
  15. 청구항 13에 있어서, 상기 점수 연산 회로는 다수 개가 구비되며 각각 서로 다른 블록에 포함된 문서 번호에 대응하는 점수를 산출하는 검색 시스템.
  16. 청구항 15에 있어서, 상기 검색 코어는 상기 서로 다른 블록에 포함된 문서 번호에 대하여 합집합 또는 교집합 연산을 수행하는 집합 연산 회로를 더 포함하는 검색 시스템.
  17. 청구항 16에 있어서, 상기 검색 코어는 상기 서로 다른 블록 중 어느 하나의 블록에 포함된 문서 번호를 참조하여 상기 서로 다른 블록 중 다른 블록을 읽어 오는 이진 검색 회로를 더 포함하는 검색 시스템.
  18. 청구항 11에 있어서, 상기 블록 처리 회로와 상기 검색 코어를 연결하는 연결회로를 더 포함하는 검색 시스템.
  19. 청구항 18에 있어서, 상기 블록 처리 회로와 상기 검색 코어는 각각 다수 개가 구비되며 상기 연결 회로는 다수의 블록 처리 회로와 다수의 검색 코어 사이의 연결 관계를 설정하는 검색 시스템.
  20. 청구항 11에 있어서, 상기 하드웨어 가속기는
    상기 검색 명령을 저장하는 명령 큐; 및
    상기 명령 큐에 저장된 검색 명령을 선택하는 검색 스케줄러
    를 더 포함하는 검색 시스템.
KR1020200066219A 2020-06-02 2020-06-02 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 KR20210149327A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200066219A KR20210149327A (ko) 2020-06-02 2020-06-02 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템
US17/118,085 US11544270B2 (en) 2020-06-02 2020-12-10 Hardware accelerator performing search using inverted index structure and search system including the hardware accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200066219A KR20210149327A (ko) 2020-06-02 2020-06-02 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템

Publications (1)

Publication Number Publication Date
KR20210149327A true KR20210149327A (ko) 2021-12-09

Family

ID=78706463

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200066219A KR20210149327A (ko) 2020-06-02 2020-06-02 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템

Country Status (2)

Country Link
US (1) US11544270B2 (ko)
KR (1) KR20210149327A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423499B2 (en) 2008-07-01 2013-04-16 Fujitsu Limited Search device and search method
US20160098450A1 (en) 2014-10-03 2016-04-07 The Regents Of The University Of Michigan Querying input data

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110320446A1 (en) * 2010-06-25 2011-12-29 Microsoft Corporation Pushing Search Query Constraints Into Information Retrieval Processing
US8914353B2 (en) * 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US11210216B2 (en) * 2019-06-25 2021-12-28 Intel Corporation Techniques to facilitate a hardware based table lookup

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423499B2 (en) 2008-07-01 2013-04-16 Fujitsu Limited Search device and search method
US20160098450A1 (en) 2014-10-03 2016-04-07 The Regents Of The University Of Michigan Querying input data

Also Published As

Publication number Publication date
US20210374131A1 (en) 2021-12-02
US11544270B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
US6122626A (en) Sparse index search method
WO2015145647A1 (ja) ストレージ装置とデータ処理方法及びストレージシステム
KR100555997B1 (ko) 메모리 엔진과, 데이터 조사 및 정정 방법
US11886401B2 (en) Database key compression
KR20170111883A (ko) 빅데이터의 효율적인 저장·실시간 분석형 스마트 스토리지 플랫폼장치 및 방법
CN111292225B (zh) 对图形数据进行分区以进行大规模图形处理
US20080140691A1 (en) Method, Device and Computer Program Product for Optimizing File Placement in a Storage System
US20180307758A1 (en) Methods and systems for real-time updating of encoded search indexes
KR100495593B1 (ko) 파일 처리 방법, 데이터 처리 장치, 및 기억 매체
JPH09245043A (ja) 情報検索装置
US11704348B2 (en) Search result output method, search result output method, and non-transitory computer-readable storage medium for storing program
US8046507B2 (en) Computer, external storage and method for processing data information in external storage
KR20210149327A (ko) 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템
US6654867B2 (en) Method and system to pre-fetch compressed memory blocks using pointers
JP2001005830A (ja) 情報処理装置及びその方法、コンピュータ可読メモリ
TWI801601B (zh) 資料庫處理系統及用於卸載資料庫操作的方法
US6763422B2 (en) Cache memory capable of reducing area occupied by data memory macro units
US12067014B2 (en) Methods and systems for performing a vectorized delete in a distributed database system
CN112084141A (zh) 一种全文检索系统扩容方法、装置、设备及介质
JP2003203486A (ja) 半導体記憶装置及びその制御方法
JP2003256193A (ja) 並列ソート装置及び並列ソート方法並びにプログラム
CN118829979A (zh) 用于在分布式数据库系统中执行向量化删除的方法和系统
JP2835082B2 (ja) 論理回路合成装置
JPH0659871A (ja) ソフトウェア開発装置
CN118132461A (zh) 一种数据依赖感知的动态图处理加速系统

Legal Events

Date Code Title Description
A201 Request for examination