KR20240007582A - Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템 - Google Patents

Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템 Download PDF

Info

Publication number
KR20240007582A
KR20240007582A KR1020230034982A KR20230034982A KR20240007582A KR 20240007582 A KR20240007582 A KR 20240007582A KR 1020230034982 A KR1020230034982 A KR 1020230034982A KR 20230034982 A KR20230034982 A KR 20230034982A KR 20240007582 A KR20240007582 A KR 20240007582A
Authority
KR
South Korea
Prior art keywords
key
bucket
cuckoo hash
processor
hash table
Prior art date
Application number
KR1020230034982A
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 US18/345,211 priority Critical patent/US20240012811A1/en
Priority to EP23183617.2A priority patent/EP4303739A1/en
Publication of KR20240007582A publication Critical patent/KR20240007582A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에 따른 PIM(Processing-in-Memory) 장치에 의해 수행되는 쿠쿠 해시 쿼리 방법에 있어서, 상기 PIM 장치가 프로세서로부터 수신된 키에 대응하는 밸류에 대한 쿼리 명령을 수신하는 단계; 쿠쿠 해시 테이블, 상기 키, 쿠쿠 해시 테이블에서 상기 키가 속한 버킷의 식별 및 인덱스 벡터를 상기 프로세서로부터 획득하는 단계; 상기 쿼리 명령에 응답하여, 상기 쿠쿠 해시 테이블, 상기 키, 상기 키가 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 획득하는 단계; 상기 프로세서가 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있도록 상기 위치 인덱스 지시 정보를 프로세서로 전송하는 단계를 포함한다.

Description

PIM 장치 기반의 쿠쿠 해시 쿼리 방법, PIM 장치 및 시스템{SYSTEM, PIM DEVICE, AND CUCKOO HASH QUERYING METHOD BASED ON PIM DEVICE}
이하, 데이터 저장 분야에 관한 것으로, 인-메모리 프로세싱(PIM) 장치에 기반한 쿠쿠 해시 쿼리 방법, PIM 장치 및 시스템에 관한 것이다.
인-메모리 키-밸류 저장소(IMKV, In-memory Key-Value Store)는 높은 처리량과 낮은 대기 시간으로 데이터 센터 및 클라우드 컴퓨팅 등 애플리케이션에서 널리 사용된다. 대표적인 시스템으로는 널리 배포된 오픈 소스 시스템(예, Memcached, Redis, RAM Cloud 등)이 있으며, 인터넷 서비스 시스템(예, Facebook, YouTube, Twitter 등)의 핵심 구성 요소에도 적용된다. 쿠쿠 해시(Cuckoo Hashing)는 빠른 병렬 인덱싱을 위해 설계되었으므로 IMKV에서 널리 사용된다.
쿠쿠 해시는 해시 충돌을 해결하기 위해 각 키에 대해 가능한 여러 위치를 제공하는 여러 해시 함수를 포함하는 개방형 어드레서블(open-addressable) 해시 테이블이다.
일 실시예에 따른 PIM(Processing-in-Memory) 장치에 의해 수행되는 쿠쿠 해시 쿼리 방법에 있어서, 상기 PIM 장치가 프로세서로부터 수신된 키에 대응하는 밸류에 대한 쿼리 명령을 수신하는 단계; 쿠쿠 해시 테이블, 상기 키, 쿠쿠 해시 테이블에서 상기 키가 속한 버킷의 식별 및 인덱스 벡터를 상기 프로세서로부터 획득하는 단계; 상기 쿼리 명령에 응답하여, 상기 쿠쿠 해시 테이블, 상기 키, 상기 키가 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 획득하는 단계; 상기 프로세서가 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있도록 상기 위치 인덱스 지시 정보를 프로세서로 전송하는 단계를 포함할 수 있다.
상기 쿠쿠 해시 테이블은, 버킷 별로 키-밸류 쌍을 포함하는 원본 쿠쿠 해시 테이블의 적어도 일부일 수 있다.
상기 쿠쿠 해시 테이블의 각 버킷은 키를 포함하고 밸류를 포함하지 않을 수 있다.
상기 키의 위치 인덱스 지시 정보를 획득하는 단계는, 상기 쿠쿠 해시 테이블과 상기 키가 속한 버킷의 식별에 따라 상기 키가 속한 버킷을 획득하는 단계; 상기 키와 상기 키가 속한 버킷에 따라, 상기 키가 속한 버킷에서의 상기 키의 위치 정보를 결정하는 단계; 상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 결정하는 단계를 포함할 수 있다.
상기 키의 위치 정보를 결정하는 단계는, 상기 키와 상기 키가 속한 버킷의 각 키에 대해 배타적 부정 논리합 연산을 수행하는 단계를 포함할 수 있다.
상기 키의 위치 인덱스 지시 정보를 결정하는 단계는, 상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 대해 곱셈 연산을 수행하는 단계를 포함할 수 있다.
상기 위치 인덱스 지시 정보는, 위치 인덱스 지시 벡터 또는 위치 인덱스 지시값인 것일 수 있다.
상기 인덱스 벡터의 길이와 상기 PIM 장치의 뱅크 길이는 동일할 수 있다.
방법은 프로세서로부터 전송된 상기 쿠쿠 해시 테이블을 수신하고, 상기 쿠쿠 해시 테이블을 상기 PIM 장치의 메모리에 저장하는 단계를 더 포함할 수 있다.
일 실시예에 따른 쿠쿠 해시 쿼리를 수행하는 PIM(Processing-in-Memory) 장치는, 적어도 하나의 프로그래밍 가능 컴퓨팅 유닛(PCU)을 포함하고, 상기 PCU는, 프로세서가 전송한 키에 대응하는 밸류의 쿼리 명령을 수신하고; 쿠쿠 해시 테이블, 상기 키, 쿠쿠 해시 테이블에서 상기 키가 속한 버킷의 식별 및 인덱스 벡터를 프로세서로부터 획득하며; 상기 쿼리 명령에 응답하여, 상기 쿠쿠 해시 테이블, 상기 키, 상기 키가 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 획득하고; 프로세서가 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있도록 상기 위치 인덱스 지시 정보를 프로세서로 전송하도록 설정될 수 있다.
일 실시예에 따른 전자 장치는, 쿼리될 키에 대응하는 밸류의 쿼리 명령을 수신하고, 원본 해시 테이블의 키-밸류 쌍으로부터 분리된 키를 포함하는 해시 키 테이블을 획득하며, 상기 쿼리 명령에 응답하여 상기 해시 키 테이블에 대해 상기 키의 위치 인덱스 지시 정보를 결정하는 PIM 장치; 및 상기 PIM 장치로부터 수신된 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득하는 프로세서를 포함할 수 있다.
도 1은 2개의 해시 함수를 이용한 쿠쿠 해시의 조회 연산을 도시한 예시도이다.
도 2는 PIM 장치의 하나의 채널을 도시한 예시도이다.
도 3은 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 방법을 도시한 흐름도이다.
도 4는 일 실시예에 따른 PIM 메모리에 의해 저장되는 쿠쿠 해시 테이블을 도시한 예시도이다.
도 5a 및 도 5b는 일 실시예에 따른 프로그래밍가능 컴퓨팅 유닛을 도시한 예시도이다.
도 6은 일 실시예에 따른 쿠쿠 해시 쿼리를 수행하는 PIM 장치를 도시한 블록도이다.
도 7a는 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 시스템을 도시한 블록도이다.
도 7b는 일 실시예에 따른 해시 쿼리를 수행하는 전자 장치(700b)의 블록도를 도시한다.
도 8은 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 시스템의 동작을 도시한 흐름도이다.
Figure pat00001
Figure pat00002
이하, 첨부된 도면을 참조하여 본 개시의 다양한 실시예에 대해 설명한다. 그중, 동일 또는 유사한 구성 요소, 특징 및 구조에 대해서는 동일한 부호를 사용하였다. 그러나, 본문에서 설명되는 다양한 실시예는 본 개시를 특정 실시예에 한정하려는 것이 아니며, 본 개시는 첨부된 청구범위 및 그 등가물의 범위 내에 있는 한 본 개시의 모든 수정, 등가물 및/또는 대체물을 포함하는 것으로 의도된다. 이하 명세서 본문 및 청구범위에 사용되는 용어 및 표현은 그 사전적 의미에 한정되지 않으며, 본 개시의 명확하고 일관된 이해를 가능하게 하기 위해서만 사용된다. 따라서, 본 개시의 다양한 실시예에 대한 다음의 설명은 청구범위 및 그 등가물에 의해 정의되는 본 개시의 목적을 제한하기 위한 것이 아닌 단지 예시적 목적으로 제공된다는 점은 당업자에게 명백해야 한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
문맥에서 명확하게 달리 나타내지 않는 한, 단수 형태는 복수 형태를 포함한다. 본 명세서에서 사용되는 "포함하다", "함유하다" 및 "갖다"라는 용어는 개시된 기능, 연산 또는 구성요소의 존재를 나타내지만, 다른 기능, 연산 또는 구성요소 또한 배제하지 않는다.
본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 예를 들어, "A 또는 B", 또는 "A 및/또는 B 중 적어도 하나"라는 표현은 A와 B, A 또는 B를 의미할 수 있다. 예를 들어, "A 또는 B", 또는 "A 및/또는 B 중 적어도 하나"라는 표현은 i) A, ii) B 또는 iii) A와 B 모두를 의미할 수 있다.
본 개시의 다양한 실시예에서는 다음을 의도한다: 구성 요소(예, 제1 구성 요소)가 다른 구성 요소(예, 제2 구성 요소)와 "결합" 또는 "연결"되거나 다른 구성 요소(예, 제2 구성 요소)에 "결합" 또는 "연결"된다고 할 때, 상기 구성 요소는 상기 다른 구성 요소에 직접 연결되거나, 다른 구성 요소(예, 제3 구성 요소)를 통해 연결될 수 있다. 반면, 구성 요소(예, 제1 구성 요소)가 다른 구성 요소(예, 제2 구성 요소)와 "직접 결합" 또는 "직접 연결"되거나 다른 구성 요소(예, 제2 구성 요소)에 직접 결합 또는 직접 연결된다고 할 때, 상기 구성 요소와 상기 다른 구성 요소 사이에 다른 구성 요소(예, 제3 구성 요소)가 존재하지 않는다.
본 개시의 다양한 실시예를 설명함에 있어 사용되는 "~로 구성된"이라는 표현은, 상황에 따라 예를 들면, "~에 사용하기 적합한", "~할 수 있는", "~하도록 설계된", "~에 적합한", "~로 제조된" 및 "~할 수 있는" 등의 표현과 함께 사용될 수 있다. "~로 구성된"이라는 표현은 반드시 하드웨어에서 "특별히 ~로 설계됨"을 의미하지는 않는다. 반대로 "~로 구성된 장치"라는 표현은 경우에 따라 상기 장치와 다른 장치 또는 부품이 "~할 수 있음"을 나타낼 수 있다. 예를 들어, "A, B 및 C를 수행하도록 구성된 프로세서"라는 표현은 해당 동작을 수행하는 전용 프로세서(예, 임베디드 프로세서) 또는 메모리 장치에 저장된 적어도 하나의 소프트웨어 프로그램을 실행하여 해당 동작을 수행하는 범용 프로세서(예, CPU 또는 AP)를 나타낼 수 있다.
본 명세서에서 사용한 용어는 본 개시의 일부 실시예를 설명하나, 다른 실시예의 범위를 한정하려는 의도는 없다. 특별한 언급이 없는 한, 본문에서 사용된 모든 용어(기술적 또는 과학적 용어 포함) 본 기술분야의 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사전에 정의된 용어는 해당 분야의 문맥과 동일한 의미로 간주되어야 하며, 본 명세서에서 명시적으로 정의되지 않는 한 다르게 이해되거나 지나치게 형식적인 의미로 이해되어서는 안 된다. 어떠한 경우라도 본문에서 정의된 용어가 본 개시의 실시예를 배제하도록 해석되지는 않는다.
도 1은 2개의 해시 함수를 이용한 쿠쿠 해시의 조회 연산을 도시한 예시도이다.
해시 테이블(110)의 각 행은 버킷(bucket)이라고 나타낼 수 있다. 도 1에서 제1 버킷(bucket_0) 내지 제n 버킷(bucket_n-1)의 n개의 버킷들이 예시적으로 도시된다. 여기서 n은 1이상의 정수이다. 각 버킷은 키(K)와 해당 밸류(V)로 구성된 여러 키-밸류 쌍들을 포함할 수 있다. 여러 키-밸류 쌍들 중 각 키 또는 각 키-밸류 쌍은 하나의 위치 인덱스 정보에 대응할 수 있다. 쿠쿠 해시의 조회 연산은, 예를 들어, GET 연산일 수 있다. GET 함수(GET(key))는 키를 인자로 입력받고, 해당 키에 대응하는 밸류(예: 해당 키에 페어링된 밸류)반환하는 함수로서, GET 함수에 대응하는 연산을 GET 연산이라고 나타낼 수 있다. 프로세서는 GET 연산을 수행할 때, 조회된 키의 위치 인덱스 정보를 기반으로 쿼리할 키에 대응하는 밸류(예: 반환값(190))를 반환(return)할 수 있다.
도 1의 실시예에 따르면, 프로세서가 쿠쿠 해시의 GET 연산을 수행할 때, 해시 테이블(110)을 읽을 때 메모리 읽기에 대한 요구가 해시 테이블(110)의 무작위성(randomness)으로 인해 너무 높을 수 있다. 또한 해시 테이블(110)의 크기가 증가함에 따라, 캐시(150)에 없는 키-밸류 쌍에 대한 쿼리 시도가 증가할 수 있다. 캐시 미스(cache miss)가 증가할 수 있으므로, 프로세서의 캐시 적중률이 점차 감소하고, 글로벌 메모리 액세스가 빈번해질 수 있다. 또한, 쿼리 수가 증가함에 따라 프로세서의 메모리(100)에 대한 대역폭 요구 사항 또한 증가할 수 있다. 전술된 요인들로 인해 해시 테이블(110)의 조회 속도가 제한될 수 있다.
일 실시예에 따르면 해시 테이블(110)의 쿼리 속도를 향상시키기 위해 PIM의 병렬 처리 특징이 사용될 수 있다.
도 2는 PIM 장치의 하나의 채널을 도시한 예시도이다.
PIM 장치(200)의 하나의 채널(210)은 복수의 프로그래밍가능 컴퓨팅 유닛(PCU, Programmable Computing Unit)(211)을 포함할 수 있다. 각 프로그래밍가능 컴퓨팅 유닛(211)은 복수의 뱅크들에 액세스할 수 있다. 도 2를 참조하면, 채널(210)은 8개의 프로그래밍가능 컴퓨팅 유닛(211)을 포함하고, 각 프로그래밍가능 컴퓨팅 유닛(211)은 2개의 뱅크(BANK)(212)에 액세스할 수 있다. PIM 장치(200)의 메모리 장치(예: PIM 메모리)는 뱅크(BANK)(212)를 포함하고, 뱅크(BANK)(212)는 메모리 뱅크라고도 나타낼 수 있다. PIM 장치(200)는 컴퓨팅 성능을 갖춘 메모리이다. 도 2를 참조하면, 프로그래밍가능 컴퓨팅 유닛(211)은 PIM 장치(200)가 컴퓨팅 성능을 갖도록 한다.
일부 예시에서, PIM 장치(200)는 프로그래밍가능 컴퓨팅 유닛(211)가 있는 DRAM(Dynamic Random Access Memory), 프로그래밍가능 컴퓨팅 유닛(211)가 있는 HBM(High Bandwidth Memory), 프로그래밍가능 컴퓨팅 유닛(211)가 있는 GDDR(Graphics Double Data Rate) 또는 프로그래밍가능 컴퓨팅 유닛(211)가 있는 LPDDR(Low Power Double Data Rate)일 수 있다.
각 프로그래밍가능 컴퓨팅 유닛(211)은 컨트롤러, SIMD(Single Instruction Multiple Data) 곱셈기, SIMD 가산기 및 레지스터를 포함할 수 있다.
컨트롤러는 SIMD 곱셈기, SIMD 가산기, 및 레지스터의 동작을 제어할 수 있다. SIMD 곱셈기는 데이터 간의 곱셈을 수행할 수 있다. SIMD 가산기는 데이터 간의 덧셈을 수행할 수 있다.
프로그래밍가능 컴퓨팅 유닛(211)의 레지스터는, 예를 들어, 3가지 유형의 레지스터 파일들을 포함할 수 있다. 레지스터는, 제1 레지스터 파일(예: 커맨드 레지스터 파일(CRF, Command Register File)), 제2 레지스터 파일(예: 스칼라 레지스터 파일(SRF, Scalar Register File)) 및 제3 레지스터 파일(예: 범용 레지스터 파일(General Purpose Register File))을 포함할 수 있다. 범용 레지스터 파일은 제1 범용 레지스터 파일(GRF_A) 및 제2 범용 레지스터 파일(GRF_B)을 포함할 수 있다. 다만, 프로그래밍가능 컴퓨팅 유닛(211)에 포함된 레지스터 파일의 유형을 전술한 바로 한정하는 것은 아니며, 하기 도 5a에서는 추가적인 유형이 설명된다.
참고로, 도 2에서는 PIM 장치(200)에 대해 설명하기 위해 한 개의 채널이 도시되었으나, 이로 한정하는 것은 아니다. 일 실시예에 따르면, 하나의 PIM 장치(200)는 복수의 채널들을 포함할 수 있다. 예시적으로 16개의 채널들을 포함하고, 채널 별 8개의 PCU를 갖는 PIM 장치(200)는 128개의 키를 병렬로 쿼리할 수 있다. 이는 대규모의 KV(Key-Value) 조회 속도를 크게 향상시킨다.
이하, 도 3을 참조하여 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 수행 방법에 대해 설명한다.
도 3은 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 방법을 도시한 흐름도이다.
단계(S310)에서, PIM 장치는 프로세서가 전송한 키에 대응하는 밸류의 쿼리 명령(query instruction)을 수신할 수 있다. 예를 들어, 프로세서는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), 및 NPU(Neural Network Processing Unit)일 수 있다.
쿠쿠 해시 쿼리 속도를 향상시키기 위해 PIM 장치의 병렬 컴퓨팅 특징이 이용될 수 있다. 프로세서가 GET 연산을 수행할 때, 프로세서는 GPU(graphical processing unit)의 쿠쿠 해시 테이블을 PIM 장치에 복사할 수 있다. 이후, 프로세서는 PIM 장치에 복사된 쿠쿠 해시 테이블로부터 키가 속한 버킷의 식별을 결정할 수 있다. 프로세서는 PIM 장치의 하드웨어 특성(예: 뱅크의 길이)에 따라 인덱스 벡터를 결정할 수 있다. 프로세서는, PIM이 쿠쿠 해시 쿼리를 수행하도록 지시하는, 쿼리 명령을 생성할 수 있다. PIM 장치는, 프로세서에 의해 생성된, 쿼리 명령을 실행할 수 있다. 예시적으로, PIM 장치는 쿼리 명령을 실행하는 데만 사용될 수 있다.
인덱스 벡터의 값은 뱅크(BANK)의 길이에 의존할 수 있다. 인덱스 벡터의 벡터 길이는 뱅크(BANK)의 길이에 대응할 수 있다. 예를 들어, 도 2에서는, PIM 장치의 뱅크(BANK) 길이가 16비트이므로, 인덱스 벡터가 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]일 수 있다. 본 기술분야의 통상의 지식을 가진 자는, 뱅크(BANK)의 길이가 변하면 그에 따라 인덱스 벡터의 길이가 변할 것을 알 수 있다. 통상의 지식을 가진 자는, 뱅크의 길이 변화 및 인덱스 벡터의 길이 변화가 차후 위치 인덱스 지시 정보의 계산에 사용될 것임을, 이해할 수 있다. 구체적인 계산 설명은 아래의 설명을 참조한다. 마찬가지로, 위에서 설명된 인덱스 벡터는 단지 예시 벡터일 뿐이며, 위치 인덱스 지시 정보의 후속 계산에 사용될 수 있는 다른 벡터도 인덱스 벡터로서 사용될 수 있다.
예시적인 실시예에서, 쿼리 명령은 쿼리될 키의 주소 정보, 쿼리될 키가 속한 버킷의 식별의 주소 정보 및 인덱스 벡터의 주소 정보를 캐리(carry)할 수 있다. PIM 장치는, 쿼리 명령을 실행할 때 요구사항(requirement)에 따라, 프로세서로부터 쿼리 명령에 의해 캐리된 주소 정보들에 해당하는 데이터를 판독할 수 있다. PIM 장치의 커맨드 레지스터 파일(CRF)이 프로세서로부터 쿼리 명령을 판독(read)하고 수신(receive)할 수 있다.
다만, 이로 한정되는 것은 아니며, 본 기술분야의 통상의 지식을 가진 자는, 일부 PIM 장치 하드웨어가 지원할 수 있는 경우, 쿼리 명령이 쿼리될 키, 속한 버킷의 식별 및 인덱스 벡터를 직접 캐리(carry)할 수도 있음을 이해할 수 있다.
단계(S320)에서, PIM 장치는 쿠쿠 해시 테이블, 키, 쿠쿠 해시 테이블에서 쿼리될 키가 속한 버킷의 식별 및 인덱스 벡터를 프로세서로부터 획득할 수 있다. 일 실시예에서, 프로세서와 PIM 장치 사이의 데이터 전송을 줄이기 위해, 프로세서는 최초 GET 연산을 수행할 때 쿠쿠 해시 테이블을 PIM 장치로 복사하여 PIM 장치의 각 뱅크(BANK)에 저장할 수 있다. 다만, 이로 한정하는 것은 아니고, 프로세서가 GET 연산을 수행할 때마다 PIM 장치에 쿠쿠 해시 테이블이 복사될 수도 있다.
일 실시예에 따르면, 원본 해시 테이블(예: 원본 쿠쿠 해시 테이블)은 버킷 별로 키-밸류 쌍을 포함할 수 있다. 다만, PIM 장치의 PIM 메모리는 제한된 메모리 공간을 가지므로, PIM 장치의 메모리 공간(예: PIM 메모리의 크기)이 원본 해시 테이블의 모든 키-밸류 쌍을 저장하기에는 부족할 수 있다. 일 예시에 따른 프로세서는 원본 쿠쿠 해시 테이블의 적어도 일부인 쿠쿠 해시 테이블을 PIM 장치에게 전송할 수 있다. 예를 들어, 프로세서는 최적화된 쿠쿠 해시 테이블을 PIM 장치로 전송할 수도 있다. 원본 쿠쿠 해시 테이블의 키와 밸류가 분리될 수 있고, 최적화된 쿠쿠 해시 테이블은 키만 유지할 수 있다. 쿠쿠 해시 테이블의 각 버킷은 원본 쿠쿠 해시 테이블에서 해당하는 버킷의 키-밸류 쌍으로부터 분리된 키를 포함할 수 있다. 키-밸류 쌍에서 밸류는 이 쿠쿠 해시 테이블로부터 배제될 수 있다. 키만 보존하는 쿠쿠 해시 테이블은, 쿠쿠 해시 키 테이블(key table) 또는 쿠쿠 해시 키 세트(key set) 이라고도 나타낼 수 있다. 최적화된 쿠쿠 해시 테이블은 키만 유지하므로, 같은 용량으로 보다 많은 해시 테이블 엔트리(table entry)가 저장될 수 있다. 예를 들어, 도 4를 참조하여 구조 최적화 전과 구조 최적화 후의 쿠쿠 해시 테이블에 대해 설명된다.
도 4는 일 실시예에 따른 PIM 메모리에 의해 저장되는 쿠쿠 해시 테이블을 도시한 예시도이다.
예를 들어, 키(도 4의 K)의 크기가 4 바이트(byte)일 때, 밸류(도 4의 V)의 크기는 32 바이트일 수 있다. 해시 테이블의 키와 밸류가 분리된 후, 인덱스 구조 최적화 전의 144 MB의 해시 테이블 및 16 MB(MegaByte)의 PIM 메모리가 사용될 수 있다. PIM 메모리(410)는 뱅크(BANK)를 포함할 수 있다. 전술한 바와 같이 쿠쿠 해시 키 테이블이 PIM 메모리(410)에 저장될 수 있다. 원본 쿠쿠 해시 테이블은 메모리(420)에 저장될 수 있다. 후술하겠으나, 원본 쿠쿠 해시 테이블은, PIM 장치에 의해 쿠쿠 해시 키 테이블에 대해 결정된 위치 인덱스 지시값의 밸류(예: 쿼리된 키에 대응하는 밸류)를 프로세서가 획득하는 데 사용될 수 있다.
PIM 장치가 프로세서에 의해 전송된 쿼리 명령을 수신한 후, 쿼리 명령에 캐리(carry)된 주소 정보에 따라 프로세서로부터 키, 쿠쿠 해시 테이블에서 해당 키가 속한 버킷의 식별 및 인덱스 벡터가 판독될 수 있다.
전술된 키는 PIM 장치에 의해 프로세서로부터 스칼라 레지스터 파일(SRF) 내로(into) 판독될 수 있다. 인덱스 벡터는 PIM 장치에 의해 프로세서로부터 범용 레지스터 파일(GRF) 내로 판독될 수 있다. 뱅크(BANK)의 길이가 고정(fix)되어 있는 경우, PIM 하드웨어 리소스가 허용한다면, PIM 장치의 뱅크(BANK)에 인덱스 벡터가 저장될 수도 있다. GET 연산이 수행될 때마다 인덱스 벡터를 PIM 장치에게 전송할 필요가 없어질 수 있다.
단계(S330)에서, PIM 장치(예: 프로그래밍가능 컴퓨팅 유닛)는 쿼리 명령에 응답하여, 쿠쿠 해시 테이블, 키, 키가 속한 버킷의 식별 및 인덱스 벡터를 기반으로 키의 위치 인덱스 지시 정보를 획득할 수 있다.
PIM 장치는 주소 정보에 따라 프로세서로부터 직접 판독할 수 있으며, 후속 계산 과정에서 필요에 따라 프로세서에서 적시에 판독할 수도 있다. 이에 대해 구체적으로 한정하지 않는다. 따라서, 단계(S320) 및 단계(S330)의 실행 순서는 도 3에 기재된 순서로 제한되지 않는다.
일 예시에서, 쿼리 명령에 응답하여, PIM 장치는 쿠쿠 해시 테이블 및 쿼리될 키가 속한 버킷의 식별에 따라 해당 키가 속한 버킷을 획득할 수 있다. PIM 장치는 키와 이 키가 속한 버킷에 따라 버킷 내 키의 위치 정보를 결정할 수 있다. PIM 장치는 키가 속한 버킷 내 키의 위치 정보와 인덱스 벡터를 기반으로 키의 위치 인덱스 지시 정보를 결정할 수 있다.
또 다른 예시에서, 쿼리될 키가 속한 버킷 내 키의 위치 정보를 결정하는 단계는, 키와 해당하는 버킷 내의 각 키에 대해 배타적 부정 논리합 연산(XNOR)을 수행하는 단계를 포함할 수 있다. 키의 위치 인덱스 지시 정보를 결정하는 단계는, 속한 버킷 내 키의 위치 정보와 인덱스 벡터에 대한 곱셈 연산(예: 도 5b의 MUL 참조)을 수행하는 단계를 포함할 수 있다. 또한, XNOR 연산 및 곱셈 연산을 구현하기 위해, 도 5a 및 도 5b에 도시된 예시적 프로그래밍가능 컴퓨팅 유닛 예시도를 참조한다.
도 5a 및 도 5b는 일 실시예에 따른 프로그래밍가능 컴퓨팅 유닛을 도시한 예시도이다.
도 5a에 도시된 PIM 장치(500a)에서 채널(510)의 프로그래밍가능 컴퓨팅 유닛(511)은, 키(501b)와 속한 버킷(520b)의 각 키의 XNOR 연산을 지원하기 위한 제4 레지스터 파일(예: 프리디케이트 레지스터 파일(PRF, Predicate Register File))을 포함할 수 있다. 예를 들어, 프로그래밍가능 컴퓨팅 유닛(511)은 도 2에 도시된 프로그래밍가능 컴퓨팅 유닛(211)의 커맨드 레지스터 파일(CRF), 스칼라 레지스터 파일(SRF), 및 범용 레지스터 파일(GRF)에 더하여, 프리디케이트 레지스터 파일(PRF)을 더 포함할 수 있다. 프리디케이트 레지스터 파일(PRF)은 배타적 NOR(XNOR) 명령 및 XNOR 연산의 결과를 저장할 수 있다.
도 5a에 도시된 바와 같이 PIM 장치(500a)의 복수의 프로그래밍가능 컴퓨팅 유닛들은 버킷(520b)의 식별에 따라 식별에 대응하는 버킷(520b)이 액세스 가능한 각 뱅크(BANK)에 저장되어 있는지 여부를 병렬로 결정할 수 있다. 예를 들어, PIM 장치(500a)의 채널(510)의 모든 프로그래밍가능 컴퓨팅 유닛들, 또는 모든 채널의 모든 프로그래밍가능 컴퓨팅 유닛들의 각각은 자신이 액세스 가능한 뱅크(BANK)에 식별된 버킷(520b)이 포함되는지 여부를 병렬적으로 결정할 수 있다. 도 5a에서는 버킷(520b)이 키들(K0 내지 K15)를 포함하고, 쿼리되는 키(501b)는 K5인 예시가 도시된다.
예를 들어, 도 5a에서 식별에 대응하는 버킷(520b)이 프로그래밍가능 컴퓨팅 유닛(511)이 액세스할 수 있는 뱅크(BANK)(512)에 저장되어 있다고 가정할 경우, 해당 프로그래밍가능 컴퓨팅 유닛(511)이 식별에 대응하는 버킷(520b)을 스칼라 레지스터 파일(SRF)로 읽어들일 수 있다. XNOR 명령은 해당 프로그래밍가능 컴퓨팅 유닛(511)에 대응하는 뱅크(BANK)(512)에서 판독된 버킷(520b)의 각 키와 해당 키(501b)에 대해 XNOR 연산을 수행하여 속한 버킷(520b)에서의 해당 키(501b)의 위치 정보(예: XNOR 연산의 결과)를 결정하는 것, 및 해당 XNOR 연산의 결과를 해당 프로그래밍가능 컴퓨팅 유닛(511)의 프리디케이트 레지스터 파일(PRF)에 저장하는 것을 포함할 수 있다.
도 5b에 도시된 예시에서 프리디케이트 레지스터 파일(PRF)에 저장된 XNOR 연산 결과는, 버킷(520b)의 키(K5)에 대응하는 위치에서 1의 값, 나머지 위치들에서 0의 값을 포함할 수 있다. 다음으로, 프로그래밍가능 컴퓨팅 유닛(511)은 제1 범용 레지스터 파일(GRF_A)에 저장된 인덱스 벡터와 프리디케이트 레지스터 파일(PRF)의 XNOR 연산 결과에 대해 곱셈 연산을 진행하여 키의 위치 인덱스 지시 정보를 획득하고 제2 범용 레지스터 파일(GRF_B)에 저장할 수 있다.
일 실시예에서, PIM 장치의 하드웨어 성능에 따라 위치 인덱스 지시 정보는 위치 인덱스 지시 벡터 또는 위치 인덱스 지시값 중 적어도 하나를 포함할 수 있다. 예를 들어, 제2 범용 레지스터 파일(GRF_B)이, 키(K5)에 대응하는 위치 인덱스 지시값으로서 "6"의 값을 저장할 수 있다.
프로세서는 PIM 장치로부터 해당 위치 인덱스 지시 정보를 판독할 수 있다. 예를 들어, 위치 인덱스 지시 정보가 위치 인덱스 지시값인 경우, 프로세서는 해당 위치 인덱스 지시값에 따라 키에 대응하는 밸류를 직접 판독할 수 있다. 다른 예를 들어, 위치 인덱스 지시 정보가 위치 인덱스 지시 벡터인 경우, 프로세서는 키에 대응하는 밸류를 획득하기 위해 위치 인덱스 지시 벡터에 기초하여 키에 대응하는 위치 인덱스 지시값을 계산할 수 있다.
단계(S340)에서, PIM 장치는, 프로세서가 위치 인덱스 지시 정보에 따라 키에 대응하는 밸류를 획득할 수 있도록, 위치 인덱스 지시 정보를 프로세서로 전송할 수 있다.
도 6은 일 실시예에 따른 쿠쿠 해시 쿼리를 수행하는 PIM 장치를 도시한 블록도이다.
일 실시예에 따른 쿠쿠 해시 쿼리를 수행하는 PIM 장치(600)는 적어도 하나의 프로그래밍가능 컴퓨팅 유닛(PCU, programmable computing unit)(610)을 포함할 수 있다.
프로그래밍가능 컴퓨팅 유닛(610)은, 프로세서가 전송한 키에 대응하는 밸류의 쿼리 명령을 수신하는 작업; 쿠쿠 해시 테이블, 키, 쿠쿠 해시 테이블에서 키가 속한 버킷의 식별 및 인덱스 벡터를 프로세서로부터 획득하는 작업; 쿼리 명령에 응답하여, 쿠쿠 해시 테이블, 키, 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 키의 위치 인덱스 지시 정보를 획득하는 작업; 또는 프로세서가 위치 인덱스 지시 정보에 따라 키에 대응하는 밸류를 획득할 수 있도록 위치 인덱스 지시 정보를 프로세서로 전송하는 작업 중 적어도 하나를 수행하도록 구성될 수 있다.
위치 인덱스 지시 정보는 위치 인덱스 지시 벡터 또는 위치 인덱스 지시값일 수 있다. 또한 프로세서는 최적화된 쿠쿠 해시 테이블을 PIM 장치로 전송할 수 있다. 최적화된 쿠쿠 해시 테이블(예: 쿠쿠 해시 키 테이블)의 각 버킷은 키를 포함하나 밸류를 포함하지 않을 수 있다. 따라서, 프로그래밍가능 컴퓨팅 유닛은 또한 프로세서에 의해 전송된 쿠쿠 해시 테이블을 수신하고, 수신된 쿠쿠 해시 테이블을 PIM의 뱅크(BANK)에 저장할 수 있다.
프로그래밍 가능 컴퓨팅 유닛(610)은 쿠쿠 해시 테이블과 속한 버킷의 식별에 따라 속한 버킷을 획득하는 작업; 키와 속한 버킷에 따라 속한 버킷에서의 키의 위치 정보를 결정하는 작업; 또는 속한 버킷에서의 키의 위치 정보와 인덱스 벡터에 기초하여 키의 위치 인덱스 지시 정보를 결정하는 작업 중 적어도 하나를 더 수행할 수 있다.
또한, 일 실시예에 따른 쿠쿠 해시 쿼리를 수행하는 PIM 장치(600)는 프리디케이트 레지스터(PRF)를 더 포함할 수 있다. 프로그래밍가능 컴퓨팅 유닛(610)은, 키와 속한 버킷의 각 키에 대해 배타적 부정 논리합(XNOR) 연산을 수행하는 작업; 또는 속한 버킷에서의 키의 위치 정보와 인덱스 벡터에 대해 곱셈 연산을 수행하는 작업 중 적어도 하나를 수행하도록 구성될 수 있다. XNOR 연산 결과는 프리디케이트 레지스터 파일(PRF)에 저장될 수 있다. 인덱스 벡터의 길이는 PIM 장치의 뱅크(BANK) 길이와 같을 수 있다.
PIM 장치(600)는 키를 저장하는 스칼라 레지스터 파일(SRF)와 PIM 장치의 뱅크(BANK) 사이의 XNOR 연산을 지원할 수 있다. PIM 장치(600)는, 인덱스 벡터를 저장하는 제1 범용 레지스터 파일(GRF_A)과 XNOR 연산 결과를 저장하는 제2 범용 레지스터 파일(GRF_B) 간의 곱셈 연산을 지원하도록 할 수 있다. 이어서, 곱셈 연산 결과가 위치 인덱스 지시 정보로서 출력될 수 있다.
또한, 범용 레지스터 파일(GRF)은 16비트의 스칼라의 출력을 지원할 수 있다. 범용 레지스터 파일(GRF)은 제2 범용 레지스터 파일(GRF_B)의 전체 행 데이터 대신 전술된 곱셈 연산 결과에 의해 지시되는 위치 인덱스 지시 정보(예: 위치 인덱스 지시값)를 출력할 수 있다. 예를 들어, 범용 레지스터 파일(GRF)은, 도 5b에 도시된 제2 범용 레지스터 파일(GRF_B)에 저장된, "6"과 같은 위치 인덱스 지시값의 데이터를 정확하게 출력할 수 있다.
그런 다음, 프로세서는 PIM 장치(600)로부터 해당 위치 인덱스 지시 정보를 판독할 수 있다. 위치 인덱스 지시 정보가 위치 인덱스 지시값을 판독하는 경우, 프로세서는 해당 위치 인덱스 지시값에 따라 키에 대응하는 밸류를 직접 판독할 수 있다. 위치 인덱스 지시 정보가 위치 인덱스 지시 벡터인 경우, 프로세서는 키에 대응하는 밸류를 획득하기 위해 위치 인덱스 지시 벡터를 기반으로 키에 대응하는 위치 인덱스 지시값을 계산할 수 있다.
도 7a는 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 시스템을 도시한 블록도이다.
일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 시스템(700)은 PIM 장치(710) 및 프로세서(720)를 포함할 수 있다. PIM 장치(710)는 전술한 PIM 장치에 해당할 수 있고, 프로세서(720)는 전술한 프로세서에 해당할 수 있음을 이해해야 한다.
PIM 장치(710)는 프로세서(720)가 전송한 키에 대응하는 밸류의 쿼리 명령을 수신할 수 있다. PIM 장치(710)는 쿠쿠 해시 테이블, 키, 쿠쿠 해시 테이블에서 키가 속한 버킷의 식별 및 인덱스 벡터를 프로세서(720)로부터 획득할 수 있다. PIM 장치(710)는 쿼리 명령에 응답하여 쿠쿠 해시 테이블, 키, 속한 버킷의 식별 및 인덱스 벡터에 기초하여 키의 위치 인덱스 지시 정보를 획득할 수 있다. PIM 장치(710)는, 프로세서(720)가 위치 인덱스 지시 정보에 따라 키에 대응하는 밸류를 획득할 수 있도록, 위치 인덱스 지시 정보를 프로세서(720)에게 전송할 수 있다.
도 7b는 일 실시예에 따른 해시 쿼리를 수행하는 전자 장치(700b)의 블록도를 도시한다.
전자 장치(700b)는 PIM 장치(710), 프로세서(720), 및 메모리(730)를 포함할 수 있다. 본 명세서에서 해시 쿼리가 주로 쿠쿠 해시 쿼리인 예시를 설명하였으나, 이로 한정하는 것은 아니다.
PIM 장치(710)는 하나 이상의 채널(711)을 포함할 수 있다. 각 채널(711)은 PCU(712) 및 PIM 메모리(713)를 포함할 수 있다. PCU(712)는 전술한 쿼리를 위한 연산(예: 뱅크에 억세스, 가산, 곱셈, XNOR 연산, 연산 결과의 저장)을 수행할 수 있다. PIM 메모리(713)는 하나 이상의 뱅크를 포함하며, 해시 테이블(예: 해시 키 테이블)을 임시적으로 저장할 수 있다. 해시 테이블은 복수의 부분들로 나뉘어 여러 뱅크들에 저장될 수 있다.
예를 들어, PIM 장치(710)는 쿼리될 키에 대응하는 밸류의 쿼리 명령을 수신할 수 있다. PIM 장치(710)는 원본 해시 테이블(예: 원본 쿠쿠 해시 테이블)의 키-밸류 쌍으로부터 분리된 키를 포함하는 해시 키 테이블(예: 쿠쿠 해시 키 테이블)을 획득할 수 있다. PIM 장치(710)는 획득된 해시 키 테이블을 PIM 메모리(713)에 저장할 수 있다. PIM 장치(710)는 상기 쿼리 명령에 응답하여 해시 키 테이블에 대해 키의 위치 인덱스 지시 정보를 결정할 수 있다. PCU(712)에 의한 해당하는 버킷 및 인덱스 벡터에 기초한 인덱스 지시 정보의 결정은 전술되었으므로, 여기서는 설명하지 않는다.
프로세서(720)는 PIM 장치(710)로부터 수신된 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있다. 예를 들어, 프로세서(720)는 위치 인덱스 지시값을 기반으로 메모리(730)에 저장된 원본 해시 테이블에 억세스하여 쿼리된 키에 대응하는 밸류를 획득할 수 있다.
이하, 도 8에서는 PIM 장치(710) 및 프로세서(720)의 동작이 보다 상세히 설명된다.
도 8은 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 시스템의 동작을 도시한 흐름도이다.
도 8을 참조하면, 동작의 왼쪽 절반은 프로세서(720)에 의해 수행되고, 동작의 오른쪽 절반은 PIM 장치(710)에 의해 수행된다.
단계(821)에서 프로세서(720)는 쿼리될 키를 획득할 수 있다. 단계(822)에서 프로세서(720)는 쿼리될 키에 기초하여 GET 연산을 시작할 수 있다. 단계(823)에서 프로세서(720)는 키가 속한 버킷의 식별을 계산할 수 있다. 단계(824)에서 프로세서(720)는 속한 버킷의 식별을 기반으로 쿼리 명령을 생성할 수 있다. 단계(825)에서 프로세서(720)는 PIM 장치(710)의 하드웨어 특성에 따라 인덱스 벡터를 결정할 수 있다. 단계(826)에서 프로세서(720)는 쿠쿠 해시 테이블, 키, 속한 버킷의 식별, 인덱스 벡터 및 쿼리 명령을 PIM 장치(710)로 전송할 수 있다. 단계(827)에서 프로세서(720)는 PIM 장치(710)의 커널을 호출할 수 있다.
참고로, 해시 테이블, 키, 속한 버킷의 식별, 인덱스 벡터 및 쿼리 명령을 PIM 장치로 전송하는 프로세서(720)의 프로세스(예: 동작들)는 전술하였으므로 여기서 반복 설명하지 않는다. 프로세서(720)로부터 PIM 장치(710)에게 전송된 쿠쿠 해시 테이블은 PIM 장치(710)의 뱅크(BANK)에 저장될 수 있다.
단계(811)에서 PIM 장치(710)는 쿼리 명령을 커맨드 레지스터 파일(CRF) 내로 판독해낼 수 있다. 단계(812)에서 PIM 장치(710)는 키를 스칼라 레지스터 파일(SRF) 내로 판독해낼 수 있다. 단계(813)에서 PIM 장치(710)는 쿼리 명령을 실행하여 스칼라 레지스터 파일(SRF)과 뱅크(BANK) 사이의 XNOR 연산을 수행하고, XNOR 연산 결과를 프리디케이트 레지스터 파일(PRF)에 저장할 수 있다. 단계(814)에서 PIM 장치(710)는 프리디케이트 레지스터 파일(PRF)과 제1 범용 레지스터 파일(GRF_A) 사이의 곱셈 연산을 수행하고 곱셈 연산의 결과를 제2 범용 레지스터 파일(GRF_B)에 저장할 수 있다. 인덱스 벡터가 제1 범용 레지스터 파일(GRF_A) 내로(into) 판독될 수 있다. 단계(815)에서 PIM 장치(710)는 곱셈 연산의 결과를 뱅크(BANK)에 저장하고 프로세서(720)에게 전송할 수 있다. 곱셈 연산 결과는, 예를 들어, 키의 위치 인덱스 지시 정보를 나타낼 수 있다.
단계(828)에서 프로세서(720)는 키의 위치 인덱스 지시 정보를 기반으로 쿠쿠 해시 테이블에서 키의 위치를 획득할 수 있다. 단계(890)에서 프로세서(720)는 획득된 해당 위치(예: 위치 인덱스 지시값이 지시하는 위치)의 밸류를 반환할 수 있다.
예를 들어, PIM 장치 기반의 상기 쿠쿠 해시 쿼리의 시스템(700)은 GPU와 PIM 장치로 구성된 SoC(System of Chip), CPU와 PIM 장치로 구성된 SoC, 또는 프로세서와 PIM 장치가 독립적인 칩이나 모듈로 구성된 시스템일 수도 있다.
프로세서(720)와 메모리 간의 메모리 대역폭은 제한되나, PIM 장치(710) 내에서는 비교적 높은 대역폭으로 동작이 수행될 수 있다. 실시예에 따르면, 프로세서로부터 PIM 장치(710)에게 쿠쿠 해시 조회에서의 메모리 읽기 동작을 전달함으로써, PIM 장치(710)가 높은 대역폭으로 빠른 검색을 수행할 수 있다. 일 실시예에 따른 시스템(700)은 쿠쿠 해시 조회의 느린 검색 속도 문제를 해결하고, 인덱스 작업의 응답 속도를 향상시킬 수 있다.
또한, 쿼리 수가 계속 증가하더라도, 일 실시예에 따른 GET 연산의 메모리 대역폭 사용률은 PIM 없이 CPU 연산만 수행하는 비교 실시예에 따른 프로세서 전용 상황에 비해 크게 감소할 수 있다. 일 실시예에 따르면, 해시 테이블의 크기가 증가함에 따라 GET 연산의 처리량 또한 크게 증가할 수 있다.
또한 PIM 장치에 계산 기능(예: 비교 기능)이 추가됨으로써 PIM 장치의 고대역폭이 최대한 활용될 수 있다. PIM 장치는 데이터베이스 분야로도 확장되어, PIM 하드웨어의 응용 분야가 확장될 수 있다. 또한 해시 테이블 구조의 재설계(예: 최적화)에 기초하여 키와 밸류가 분리되고 키만 PIM 메모리에 보관될 수 있다. 따라서, 제한된 크기의 PIM 메모리에 보다 많은 정보(예: 보다 많은 개수의 키들)이 저장되므로, PIM 메모리가 보다 합리적으로 사용될 수 있다.
일 실시예에 따르면, 명령을 저장하는 컴퓨터 판독 가능 저장 매체를 더 제공할 수 있고, 명령은 적어도 하나의 프로세서에 의해 실행될 때, 본 개시의 일 실시예에 따른 PIM 장치 기반의 쿠쿠 해시 쿼리 방법을 실행하도록 적어도 하나의 프로세서를 프롬프트(prompt)할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 저장될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, CD-R, CD+R, CD-RW, CD+RW, DVD-ROM, DVD-R, DVD+R, DVD-RW, DVD+RW, DVD-RAM, BD-ROM, BD-R, BD-R LTH, BD-RE, BLU-RAY, 및 광 디스크 메모리와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 롬(ROM), 임의 액세스 프로그래밍 가능 읽기 전용 메모리(PROM), 전기적 삭제 가능한 프로그래밍 가능 읽기 전용 메모리(EEPROM), 램(RAM), 동적 임의 액세스 메모리(DRAM), 정적 임의의 액세스 메모리(SRAM), 및 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치, 비휘발성 메모리, 솔리드 스테이트 하드 디스크(SSD), 및 카드 메모리(예, 멀티미디어 카드, 보안 디지털(SD) 카드 또는 초고속 디지털(XD) 카드)가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. PIM(Processing-in-Memory) 장치에 의해 수행되는 쿠쿠 해시 쿼리 방법에 있어서,
    상기 PIM 장치가 프로세서로부터 수신된 키에 대응하는 밸류에 대한 쿼리 명령을 수신하는 단계;
    쿠쿠 해시 테이블, 상기 키, 쿠쿠 해시 테이블에서 상기 키가 속한 버킷의 식별 및 인덱스 벡터를 상기 프로세서로부터 획득하는 단계;
    상기 쿼리 명령에 응답하여, 상기 쿠쿠 해시 테이블, 상기 키, 상기 키가 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 획득하는 단계;
    상기 프로세서가 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있도록 상기 위치 인덱스 지시 정보를 프로세서로 전송하는 단계;
    를 포함하는 쿠쿠 해시 쿼리 방법.
  2. 제1항에 있어서,
    상기 쿠쿠 해시 테이블은,
    버킷 별로 키-밸류 쌍을 포함하는 원본 쿠쿠 해시 테이블의 적어도 일부인,
    쿠쿠 해시 쿼리 방법.
  3. 제1항에 있어서,
    상기 쿠쿠 해시 테이블의 각 버킷은 키를 포함하고 밸류를 포함하지 않는,
    쿠쿠 해시 쿼리 방법.
  4. 제1항에 있어서,
    상기 키의 위치 인덱스 지시 정보를 획득하는 단계는,
    상기 쿠쿠 해시 테이블과 상기 키가 속한 버킷의 식별에 따라 상기 키가 속한 버킷을 획득하는 단계;
    상기 키와 상기 키가 속한 버킷에 따라, 상기 키가 속한 버킷에서의 상기 키의 위치 정보를 결정하는 단계;
    상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 결정하는 단계;
    를 포함하는 쿠쿠 해시 쿼리 방법.
  5. 제4항에 있어서,
    상기 키의 위치 정보를 결정하는 단계는,
    상기 키와 상기 키가 속한 버킷의 각 키에 대해 배타적 부정 논리합 연산을 수행하는 단계
    를 포함하는 쿠쿠 해시 쿼리 방법.
  6. 제4항에 있어서,
    상기 키의 위치 인덱스 지시 정보를 결정하는 단계는,
    상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 대해 곱셈 연산을 수행하는 단계
    를 포함하는 쿠쿠 해시 쿼리 방법.
  7. 제1항에 있어서,
    상기 위치 인덱스 지시 정보는,
    위치 인덱스 지시 벡터 또는 위치 인덱스 지시값인 것인,
    쿠쿠 해시 쿼리 방법.
  8. 제1항에 있어서,
    상기 인덱스 벡터의 길이와 상기 PIM 장치의 뱅크 길이는 동일한,
    쿠쿠 해시 쿼리 방법.
  9. 제1항에 있어서,
    프로세서로부터 전송된 상기 쿠쿠 해시 테이블을 수신하고, 상기 쿠쿠 해시 테이블을 상기 PIM 장치의 메모리에 저장하는 단계
    를 더 포함하는 쿠쿠 해시 쿼리 방법.
  10. 제1항 내지 제9항 중 어느 한 항의 방법을 수행하기 위한 명령어를 포함하는 하나 이상의 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록매체.
  11. 쿠쿠 해시 쿼리를 수행하는 PIM(Processing-in-Memory) 장치에 있어서,
    적어도 하나의 프로그래밍 가능 컴퓨팅 유닛(PCU)을 포함하고,
    상기 PCU는,
    프로세서가 전송한 키에 대응하는 밸류의 쿼리 명령을 수신하고;
    쿠쿠 해시 테이블, 상기 키, 쿠쿠 해시 테이블에서 상기 키가 속한 버킷의 식별 및 인덱스 벡터를 프로세서로부터 획득하며;
    상기 쿼리 명령에 응답하여, 상기 쿠쿠 해시 테이블, 상기 키, 상기 키가 속한 버킷의 식별 및 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 획득하고;
    프로세서가 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득할 수 있도록 상기 위치 인덱스 지시 정보를 프로세서로 전송하도록 설정되는,
    PIM 장치.
  12. 제11항에 있어서,
    상기 쿠쿠 해시 테이블은,
    버킷 별로 키-밸류 쌍을 포함하는 원본 쿠쿠 해시 테이블의 적어도 일부인,
    PIM 장치.
  13. 제11항에 있어서,
    상기 쿠쿠 해시 테이블의 각 버킷은 키를 포함하고 밸류를 포함하지 않는,
    PIM 장치.
  14. 제11항에 있어서,
    상기 PCU는,
    상기 쿠쿠 해시 테이블과 상기 키가 속한 버킷의 식별에 따라 상기 키가 속한 버킷을 획득하고,
    상기 키와 상기 키가 속한 버킷에 따라, 상기 키가 속한 버킷에서의 상기 키의 위치 정보를 결정하며,
    상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 기초하여 상기 키의 위치 인덱스 지시 정보를 결정하는,
    PIM 장치.
  15. 제14항에 있어서,
    상기 PCU는,
    상기 키와 상기 키가 속한 버킷의 각 키에 대해 배타적 부정 논리합 연산을 수행하는,
    PIM 장치.
  16. 제14항에 있어서,
    상기 PCU는,
    상기 키가 속한 버킷에서의 상기 키의 위치 정보와 상기 인덱스 벡터에 대해 곱셈 연산을 수행하는,
    PIM 장치.
  17. 제11항에 있어서,
    상기 위치 인덱스 지시 정보는,
    위치 인덱스 지시 벡터 또는 위치 인덱스 지시값인 것인,
    PIM 장치.
  18. 제11항에 있어서,
    상기 인덱스 벡터의 길이와 상기 PIM 장치의 뱅크 길이는 동일한,
    PIM 장치.
  19. 제11항에 있어서,
    상기 PCU는,
    프로세서로부터 전송된 상기 쿠쿠 해시 테이블을 수신하고,
    상기 쿠쿠 해시 테이블을 상기 PIM 장치의 메모리에 저장하는,
    PIM 장치.
  20. 전자 장치에 있어서,
    쿼리될 키에 대응하는 밸류의 쿼리 명령을 수신하고, 원본 해시 테이블의 키-밸류 쌍으로부터 분리된 키를 포함하는 해시 키 테이블을 획득하며, 상기 쿼리 명령에 응답하여 상기 해시 키 테이블에 대해 상기 키의 위치 인덱스 지시 정보를 결정하는 PIM 장치; 및
    상기 PIM 장치로부터 수신된 상기 위치 인덱스 지시 정보에 따라 상기 키에 대응하는 밸류를 획득하는 프로세서
    를 포함하는 전자 장치.
KR1020230034982A 2022-07-08 2023-03-17 Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템 KR20240007582A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/345,211 US20240012811A1 (en) 2022-07-08 2023-06-30 Method, device, and system with processing-in-memory (pim)-based hash querying
EP23183617.2A EP4303739A1 (en) 2022-07-08 2023-07-05 Method, device, and system with processing-in-memory (pim)-based hash querying

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210805683.2 2022-07-08
CN202210805683.2A CN115237954A (zh) 2022-07-08 2022-07-08 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统

Publications (1)

Publication Number Publication Date
KR20240007582A true KR20240007582A (ko) 2024-01-16

Family

ID=83670895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230034982A KR20240007582A (ko) 2022-07-08 2023-03-17 Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템

Country Status (2)

Country Link
KR (1) KR20240007582A (ko)
CN (1) CN115237954A (ko)

Also Published As

Publication number Publication date
CN115237954A (zh) 2022-10-25

Similar Documents

Publication Publication Date Title
US11706020B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
Kim et al. In-storage processing of database scans and joins
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US7447868B2 (en) Using vector processors to accelerate cache lookups
US11294675B2 (en) Writing prefetched data into intra-core caches of cores identified by prefetching instructions
US11704036B2 (en) Deduplication decision based on metrics
WO2016141887A1 (en) Hash table processing
US20200117642A1 (en) Determining optimal data size for data deduplication operation
US20180300330A1 (en) Proactive spilling of probe records in hybrid hash join
US20220114270A1 (en) Hardware offload circuitry
CN116561051B (zh) 一种硬件加速卡和异构计算系统
US9064030B2 (en) Tree traversal in a memory device
US11093245B2 (en) Computer system and memory access technology
US11061676B2 (en) Scatter gather using key-value store
JP6189266B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
WO2023041002A1 (zh) 近内存计算加速器、双列直插式内存模块以及计算设备
KR20240007582A (ko) Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템
US20200026669A1 (en) Memory system
Werner et al. Accelerated join evaluation in Semantic Web databases by using FPGAs
EP4303739A1 (en) Method, device, and system with processing-in-memory (pim)-based hash querying
US20130173647A1 (en) String matching device based on multi-core processor and string matching method thereof
US11210280B2 (en) Systems and methods for fast bloom filter operations
US20160098411A1 (en) Querying input data
CN108139980A (zh) 用于合并存储器页的方法和存储器合并功能
US11880593B2 (en) Host, operating method of host and storage system