KR20230148736A - 연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법 - Google Patents

연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20230148736A
KR20230148736A KR1020230023140A KR20230023140A KR20230148736A KR 20230148736 A KR20230148736 A KR 20230148736A KR 1020230023140 A KR1020230023140 A KR 1020230023140A KR 20230023140 A KR20230023140 A KR 20230023140A KR 20230148736 A KR20230148736 A KR 20230148736A
Authority
KR
South Korea
Prior art keywords
data
node
host
cache
data node
Prior art date
Application number
KR1020230023140A
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 삼성전자주식회사
Publication of KR20230148736A publication Critical patent/KR20230148736A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Landscapes

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

Abstract

본 발명은 미러 캐시의 호스트 캐시 부분을 포함하는 호스트, 상기 호스트 캐시 부분은 상기 미러 캐시의 커널 캐시 부분에 저장된 데이터 노드의 위치를 나타내는 메타데이터를 저장하기 위한 것이고, 및 공통 메모리 영역에 위치하고 상기 커널 캐시 부분을 포함하는 스토리지 장치를 포함하는 데이터 스토리지 시스템을 제공한다.

Description

연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법{SYSTEMS AND METHODS FOR A CROSS-LAYER KEY-VALUE STORE ARCHITECTURE WITH A COMPUTATIONAL STORAGE DEVICE}
본 발명에 따른 실시예의 하나 이상의 양태는 데이터 스토리지를 위한 시스템 및 방법에 관한 것이다.
본 배경 기술은 문맥만을 제공하기 위한 것이며, 이 배경 기술의 임의의 실시예 또는 개념의 개시는 상기 실시예 또는 개념이 종래 기술이라는 것을 인정하는 것을 구성하지 않는다.
컴퓨터 스토리지 분야에서, 키-밸류 스토어는 호스트(예: 호스트 컴퓨터) 및 스토리지 장치(예: 데이터를 저장하기 위한 저장 매체를 포함하는 장치)를 포함하는 스토리지 시스템(예: 시스템)에서 구현될 수 있다. 시스템은 스토리지 장치의 메모리(예를 들어, 비휘발성 메모리)에 데이터 노드를 저장할 수 있다. 데이터 노드는 시스템 사용자가 액세스할 수 있다. 시스템은 사용자의 요청에 따라 데이터 노드에서 다양한 동작을 수행할 수 있다. 시스템은 데이터 노드의 데이터 노드 위치 및 키-밸류 페어에 기초하여 동작을 수행할 데이터 노드 내의 키-밸류 위치를 식별할 수 있다. 예를 들어, 시스템은 (i) 키에 대응하는 밸류(예를 들어, 데이터 객체)의 위치를 검색하여 찾고, (ii) 값과 관련한 동작을 수행하기 위해 키와 관련된 요청을 처리할 수 있다.
따라서, 키-밸류 스토어에 대한 요청을 효율적으로 처리하기 위한 방법, 장치 및 시스템 이 필요하다.
본 발명이 해결하고자 하는 일 과제는 키-밸류 스토어에 대해 개선된 연산 스토리지 시스템을 제공하는 데에 있다.
본 발명에 따른 일 실시예는, 미러 캐시의 호스트 캐시 부분을 포함하는 호스트, 상기 호스트 캐시 부분은 상기 미러 캐시의 커널 캐시 부분에 저장된 데이터 노드의 위치를 나타내는 메타데이터를 저장하기 위한 것이고, 및 공통 메모리 영역에 위치하고 상기 커널 캐시 부분을 포함하는 스토리지 장치를 포함하는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 호스트 상의 상기 호스트에 의해 처리되도록 구성된 검색 계층 및 상기 스토리지 장치 상의 상기 스토리지 장치에 의해 처리되도록 구성된 데이터 계층을 더 포함하는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 검색 계층은 트리 구조를 포함하고, 상기 데이터 계층은 상기 트리 구조에 대응하는 리프 노드들의 이중 연결 리스트 내의 리프 노드에 대응하는 상기 데이터 노드를 포함하는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 공통 메모리 영역에 연결된 영구 메모리 및 상기 공통 메모리 영역에 연결된 프로세싱 회로를 더 포함하는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 프로세싱 회로는 상기 데이터 노드에 대해 데이터 동작을 수행하고, 상기 데이터 노드를 업데이트된 데이터 노드로서 상기 커널 캐시 부분에 쓰도록 구성된 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 호스트는 상기 업데이트된 데이터 노드가 상기 공통 메모리 영역에 채워지는지 판단하고, 상기 공통 메모리 영역에서 상기 영구 메모리로 피어 투 피어 쓰기를 유발하도록 구성된 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 호스트는 상기 데이터 노드의 가용 공간의 양이 데이터 노드에 대응하는 데이터 액세스 요청을 수용하기 위한 공간의 양보다 작은지 결정하고 및 상기 데이터 노드에 확장 노드를 할당하도록 구성되는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 스토리지 장치는 상기 확장 노드를 가리키도록 상기 데이터 노드의 메타데이터를 업데이트하도록 구성된 프로세싱 회로를 더 포함하고, 상기 데이터 노드의 상기 메타데이터는 제1 버전 번호를 나타내고, 상기 확장 노드의 메타데이터는 상기 제1 버전 번호를 나타내는 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 프로세싱 회로는 상기 확장 노드를 업데이트하고, 상기 데이터 노드를 업데이트된 데이터 노드로서 식별하기 위해 제2 버전 번호를 나타내도록 상기 데이터 노드의 메타데이터를 업데이트하고, 상기 확장 노드를 업데이트된 확장 노드로서 식별하기 위해 상기 제2 버전 번호를 나타내도록 상기 확장 노드의 메타데이터를 업데이트하고 및 상기 업데이트된 확장 노드를 가리키도록 상기 업데이트된 데이터 노드의 상기 메타데이터를 업데이트하도록 구성된 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 상기 프로세싱 회로는 상기 업데이트된 확장 노드를 상기 스토리지 장치의 스토리지에 아웃 플레이스 방식으로 쓰고 및 상기 업데이트된 데이터 노드를 인플레이스 방식으로 상기 스토리지에 쓰도록 구성된 데이터 스토리지 시스템을 제공한다.
일 실시 예에서, 호스트는 읽기 요청을 수신하여 상기 데이터 노드에 대한 읽기 잠금을 획득하거나, 쓰기 요청을 수신하고 상기 데이터 노드에 대한 쓰기 잠금을 획득함으로써 상기 스토리지 장치에 대한 동시 액세스를 관리하도록 구성된 데이터 스토리지 시스템을 제공한다.
본 발명에 따른 일 실시예는, 미러 캐시의 호스트 캐시 부분에서, 스토리지 장치에 저장된 데이터 노드의 위치를 나타내는 메타 데이터를 찾는 단계, 상기 호스트 캐시 부분은 호스트에 저장되며, 및 상기 데이터 노드가 상기 미러 캐시의 커널 캐시 부분에 존재하는 것으로 결정하는 단계를 포함하고, 상기 커널 캐시 부분은 상기 스토리지 장치의 공통 메모리 영역에 저장되는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 호스트에 의해, 상기 데이터 노드의 상기 위치를 나타내는 상기 메타데이터를 찾기 위해 검색 계층에서 부분 키를 찾는 단계를 더 포함하는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 상기 데이터 노드가 데이터 액세스 요청을 수용하기 위한 공간의 양보다 적은 양의 가용 공간을 갖는다고 결정하는 단계, 및 확장 노드를 상기 데이터 노드에 할당하는 단계를 포함하는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 상기 스토리지 장치는 상기 공통 메모리 영역에 연결된 영구 메모리 및 상기 공통 메모리 영역에 연결된 프로세싱 회로를 포함하는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 상기 처리 회로에 의해, 상기 확장 노드를 가리키도록 상기 데이터 노드의 메타데이터를 업데이트하는 단계를 포함할 수 있고, 상기 데이터 노드의 상기 메타데이터 및 상기 확장 노드의 메타데이터는 제1 버전 번호를 나타내는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 확장 노드를 업데이트하는 단계, 제2 버전 번호를 나타내도록 상기 데이터 노드의 상기 메타데이터를 업데이트하는 단계, 상기 제2 버전 번호를 나타내기 위해 상기 확장 노드의 메타데이터를 업데이트하는 단계, 상기 제2 버전 번호는 상기 데이터 노드를 업데이트된 데이터 노드로 식별할 수 있고 상기 확장 노드를 업데이트된 확장 노드로 식별할 수 있으며, 및 상기 업데이트된 확장 노드를 가리키도록 상기 업데이트된 데이터 노드의 상기 메타데이터를 업데이트하는 단계를 포함하는 데이터 스토리지 방법을 제공한다.
일 실시 예에서, 상기 업데이트된 확장 노드를 아웃 플레이스 방식으로 상기 스토리지 장치의 스토리지에 기록하는 단계, 및 상기 업데이트된 데이터 노드를 인플레이스 방식으로 상기 스토리지에 쓰는 단계를 포함하는 데이터 스토리지 방법을 제공한다.
본 발명에 따른 일 실시예는, 키-밸류 스토어에 구현된 비일시적 컴퓨터 판독 가능 매체를 제공하고, 상기 비일시적 컴퓨터 판독 가능 매체는, 프로세서에서 실행될 때, 데이터 스토리지 방법을 구현하는 컴퓨터 코드를 포함하고, 상기 데이터 스토리지 방법은 미러 캐시의 호스트 캐시 부분에서, 스토리지 장치에 저장된 데이터 노드의 위치를 나타내는 메타 데이터를 찾는 단계, 상기 호스트 캐시 부분은 호스트에 저장되며, 및 상기 데이터 노드가 상기 미러 캐시의 커널 캐시 부분에 존재하는 것으로 결정하는 단계를 포함하고, 상기 커널 캐시 부분은 상기 스토리지 장치의 공통 메모리 영역에 저장된다.
일 실시 예에서, 상기 방법은 상기 호스트 캐시 메타데이터를 찾기 위해 검색 계층에서 부분 키를 찾는 단계를 더 포함하는 비일시적 컴퓨터 판독 가능 매체를 제공한다.
본 발명의 실시예의 양태는 연산 저장 시스템에 관한 것이고, 키-밸류 스토어에 대한 개선점을 제공한다.
본 발명의 비제한적 및 비포괄적 실시예는 다음의 도면을 참조하여 설명되며, 달리 명시되지 않는 한 유사한 참조 번호는 다양한 도면 전체에 걸쳐 유사한 부분을 지칭한다.
도 1은 본 발명의 일부 실시예에 따른 검색 계층 및 데이터 계층을 포함하는 데이터 스토리지 시스템을 나타내는 시스템도이다.
도 2는 본 발명의 일부 실시예에 따른 호스트 캐시 및 커널 캐시를 포함하는 데이터 스토리지 시스템을 나타내는 시스템도이다.
도 3a는 본 발명의 일부 실시예에 따른 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 3b는 본 발명의 일부 실시예에 따른 도 3a의 동작에 대응하는 데이터 저장 방법의 동작을 나타내는 흐름도이다.
도 4는 본 발명의 일부 실시예에 따라 가변 길이 키-밸류 서포트를 제공하는 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 5는 본 발명의 일부 실시예에 따라 가변 키-밸류 서포트 및 버전 기반 크래시 일관성을 제공하는 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 6은 본 발명의 일부 실시예에 따라 호스트 측 동시성 제어를 포함하는 판독(또는 조회) 요청을 위한 데이터 저장 방법의 동작을 나타내는 흐름도이다.
도 7은 본 발명의 일부 실시예에 따라 호스트 측 동시성 제어를 포함하는 쓰기(또는 삽입) 요청을 위한 데이터 저장 방법의 동작을 나타내는 흐름도이다.
대응하는 참조 문자는 도면의 여러 관점에서 대응하는 구성요소를 나타낸다. 숙련된 기술자는 도면의 요소가 단순함과 명료성을 위해 설명되었으며 반드시 축척에 맞게 그려지지 않았음을 이해할 것이다. 예를 들어, 도면의 일부 요소, 층 및 영역의 치수는 다양한 실시예의 명확성과 이해를 개선하는 데 도움이 되도록 다른 요소, 층 및 영역에 비해 과장될 수 있다. 또한, 본 발명의 설명과 관계없는 공통적이지만 충분히 이해되는 구성요소 및 부분은 이러한 다양한 실시예들을 보다 쉽게 이해하고 설명을 명확하게 하기 위하여 생략될 수 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 이하, 첨부된 도면을 참조하여 실시예를 보다 상세하게 설명한다. 그러나 설명된 실시예들은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 오히려, 이들 실시예는 본 발명을 더욱 충실하고 완전하게 하며, 당업자에게 본 발명의 사상 및 특징을 완전하게 전달하기 위하여 제공되는 것이다. 따라서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 사상 및 특징을 완전히 이해하는 데 필요하지 않은 공정, 구성요소 및 기술에 대해서는 설명을 생략할 수 있다.
첨부된 도면 및 명세서 전체에 걸쳐서 별도의 언급이 없는 한, 동일한 참조부호, 문자 또는 이들의 조합은 동일한 구성요소를 지시하므로 중복되는 설명은 생략한다. 또한, 실시예를 설명함에 있어 관계없는 부분은 설명을 명확하게 하기 위하여 생략하였다. 도면에서 구성요소, 층 및 영역의 상대적인 크기는 명확성을 위해 과장되게 표현될 수 있다.
상세한 설명에서, 설명의 목적을 위해, 다양한 실시예의 철저한 이해를 제공하기 위해 다수의 특정 세부사항이 제시된다. 그러나, 다양한 실시예가 이들 특정 세부사항 없이 또는 하나 이상의 등가 배열로 실시될 수 있음이 명백하다.
"제로", "제1", "제2", "제3" 등의 용어가 본원에서 다양한 요소, 구성요소, 영역, 층 및/또는 섹션을 설명하기 위해 사용될 수 있음을 이해해야 하고, 이러한 요소, 구성 요소, 영역, 레이어 및/또는 섹션은 이러한 용어에 의해 제한되지 않아야 한다. 이러한 용어는 하나의 요소, 구성 요소, 영역, 레이어 또는 섹션을 다른 요소, 구성 요소, 영역, 레이어 또는 섹션과 구별하는 데 사용된다. 따라서, 아래에서 설명되는 제1 요소, 구성요소, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제2 요소, 구성요소, 영역, 층 또는 섹션으로 지칭될 수 있다.
요소 또는 구성요소가 다른 요소 또는 구성요소 "위에", "연결된" 또는 "결합된" 것으로 언급될 때, 그것은 다른 요소 또는 구성 요소에 직접 연결되거나 결합될 수 있거나 하나 이상의 중간 요소 또는 구성 요소가 존재할 수 있다. 다만, "직접 연결"이라 함은 하나의 구성요소가 중간 구성요소 없이 다른 구성요소를 직접 연결하거나 결합하는 것을 의미한다. 한편, "사이에", "바로 사이에" 또는 "~에 인접한" 및 "~에 바로 인접한"과 같이 구성 요소 간의 관계를 설명하는 다른 표현들도 유사하게 해석될 수 있다. 또한, 요소 또는 구성요소가 두 요소 또는 구성요소 "사이"에 있다고 언급될 때, 두 요소 또는 구성 요소 사이의 유일한 요소 또는 구성 요소이거나 하나 이상의 중간 요소 또는 구성 요소가 존재할 수도 있다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 명세서에서 사용되는 단수형은 문맥상 명백하게 다르게 나타내지 않는 한 복수형도 포함하는 것으로 의도된다. 본 명세서에서 사용되는 용어 "구성하다", "구비하는", "가지다", "갖는", "포함하다" 및 "포함하는"은, 명시된 기능, 정수, 단계, 동작, 요소 및/또는 구성 요소의 존재를 지정한다. 그러나 하나 이상의 다른 기능, 정수, 단계, 동작, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 사용되는 바와 같이, "및/또는"이라는 용어는 연관된 나열된 항목 중 하나 이상의 임의의 및 모든 조합을 포함한다.
본원에서 사용되는 바와 같이, 용어 "실질적으로", "약", "대략" 및 유사한 용어는 정도의 용어가 아니라 근사의 용어로 사용되며, 당업자가 인지할 수 있는 측정값 또는 계산값의 내재적 편차를 설명하기 위한 것이다. 본 명세서에서 사용된 "약" 또는 "대략"은 언급된 값을 포함하며, 당업자에 의해 결정된 특정 값에 대한 편차의 허용 가능한 범위 내를 의미한다. 해당 측정 및 특정 양의 측정과 관련된 오류(즉, 측정 시스템의 한계)를 고려한다. 예를 들어, "약"은 하나 이상의 표준 편차 이내 또는 명시된 값의 ±30%, 20%, 10%, 5% 이내를 의미할 수 있다. 또한, 본 발명의 실시예를 설명할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시예"를 의미한다.
하나 이상의 실시예가 다르게 구현될 수 있는 경우, 특정 프로세스 순서는 설명된 순서와 다르게 수행될 수 있다. 예를 들어, 연속하여 설명되는 두 개의 공정이 실질적으로 동시에 수행되거나 설명된 순서와 반대의 순서로 수행될 수 있다.
(예를 들어, 여기에 포함된 임의의 시스템 다이어그램에서) 설명된 구성 요소 중 임의의 것 또는 구성 요소의 임의의 조합은 여기에 포함된 임의의 흐름도의 동작 중 하나 이상을 수행하는 데 사용될 수 있다. 또한, (i) 동작은 예시일 뿐이며, 명시적으로 다루지 않은 다양한 추가 동작을 포함할 수 있고, (ii) 동작의 시간적 순서는 다양할 수 있다.
본 명세서에 기술된 본 발명의 실시예에 따른 전자 또는 전기 장치 및/또는 임의의 다른 관련 장치 또는 구성요소는 임의의 적합한 하드웨어, 펌웨어(예: 응용 프로그램별 집적 회로), 소프트웨어 또는 소프트웨어, 펌웨어 및 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치의 다양한 구성 요소는 하나의 집적 회로(IC) 칩 또는 별도의 IC 칩에 형성될 수 있다. 또한, 이들 장치의 다양한 구성요소는 가요성 인쇄 회로 필름, 테이프 캐리어 패키지(TCP), 인쇄 회로 기판(PCB) 상에 구현되거나 하나의 기판 상에 형성될 수 있다.
또한, 이러한 장치의 다양한 구성 요소는 하나 이상의 연산 장치에서 하나 이상의 프로세서에서 실행되고 컴퓨터 프로그램 명령을 실행하고 여기에 설명된 다양한 기능을 수행하기 위해 다른 시스템 구성 요소와 상호 작용하는 프로세스 또는 스레드일 수 있다. 컴퓨터 프로그램 명령은 예를 들어 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 사용하여 연산 장치에서 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령은 또한 예를 들어 CD-ROM, 플래시 드라이브 등과 같은 다른 비일시적 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 당업자는 다양한 연산 장치의 기능이 본 발명의 실시예의 사상 및 범위를 벗어나지 않으면서 단일 연산 장치로 결합 또는 통합될 수 있거나 특정 연산 장치의 기능이 하나 이상의 다른 연산 장치에 걸쳐 분산될 수 있음을 인식해야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의된 용어와 같은 용어는 관련 기술 및/또는 본 명세서의 맥락에서 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 함을 추가로 이해해야 하고, 여기에서 명시적으로 정의하지 않는 한 이상화되거나 지나치게 형식적인 의미로 해석되어서는 안 된다.
상술한 바와 같이, 컴퓨터 스토리지 분야에서 키-밸류 스토어(key-value store)는 스토리지 시스템(예를 들어, 시스템)에서 구현될 수 있다. 시스템은 호스트(예를 들어, 호스트 컴퓨터) 및 스토리지 장치(예를 들어, 데이터를 저장하기 위한 저장 매체를 포함하는 장치)를 포함할 수 있다. 스토리지 장치는 스토리지 장치의 메모리(예를 들어, 비휘발성 또는 영구 메모리)에 데이터 노드를 저장할 수 있다. 시스템 사용자는 데이터 노드에 대한 액세스를 요청할 수 있다. 예를 들어, 사용자는 데이터 액세스 요청(예: 쓰기 요청, 읽기 요청 등)이 시스템에 의해 수신되도록 할 수 있다. 시스템은 데이터 액세스 요청에 기초하여 데이터 노드를 찾고, 데이터 노드에 대한 동작(예를 들어, 쓰기 동작, 읽기 동작 등)을 수행할 수 있다.
데이터 노드는 동일한 부분 키에 대응하는 키-밸류 페어들의 세트를 포함할 수 있다. 부분 키는 시스템의 검색 계층에 저장될 수 있다. 데이터 노드는 메타데이터 섹션과 키-밸류 페어들의 범위를 포함할 수 있다. 예를 들어, 현재 데이터 노드(예를 들어, 첫 번째 데이터 노드)에서 가장 큰 값의 키가 다음 데이터 노드(예를 들어, 첫 번째 데이터 노드에 인접한 두 번째 데이터 노드)의 가장 작은 값의 키보다 작을 수 있도록, 각 데이터 노드는 키-밸류 페어의 범위를 보유할 수 있다. 따라서 인접한 데이터 노드 사이의 키 범위의 오름차순이 유지(예: 제공)될 수 있다.
시스템은 데이터 노드에 대한 다양한 동작을 수행하도록 구성될 수 있다. 예를 들어 시스템은 사용자의 요청에 따라 데이터 노드에서 Insert(key, value), Update(key, value), Remove(key), Lookup(key) 또는 Scan(key, range) 동작들을 수행할 수 있다. 키-밸류 페어를 수신한 것에 기초하여, 시스템은 데이터 노드를 식별할 수 있고, 동작을 수행할 데이터 노드 내의 정확한 위치를 식별할 수 있다. 그런 다음에, 시스템은 수신된 키-밸류 페어와 연관된 요청을 처리하여, (i) 키에 대응하는 밸류(예: 객체)의 위치를 찾고 (ii) 데이터 노드에서 밸류에 대하여, 요청과 연관된 동작을 수행할 수 있다.
따라서 키-밸류 스토어들에 대한 요청을 보다 효율적으로 처리하기 위한 방법, 장치 및 시스템을 개발하는 것이 적합할 수 있다.
일부 키-밸류 스토어들은 호스트의 연산 리소스 또는 스토리지 장치(예: SSD(Solid State Drive))의 연산 리소스 중 하나만 사용하도록 설계될 수 있다. 예를 들어, 일부 키-밸류 스토어는 호스트 연산 리소스들을 사용하여 제어 평면 동작(control plane operations)과 데이터 조작(예: 데이터 처리) 동작을 모두 수행할 수 있다. 이러한 키-밸류 스토어에서, 호스트 프로세서(예: 중앙 처리 장치(CPU))는 사용자로부터(예: 사용자에 해당하는 애플리케이션으로부터) 요청을 수신하여, 키를 조회(예: 찾기)하고, 요청된 데이터를 호스트 DRAM(Dynamic Random Access Memory)으로 페치할 수 있다. 데이터는 계산을 처리하기 위해 CPU에서 사용할 수 있다.
일부 키-밸류 스토어는 연산 스토리지 기능들(computational storage capabilities)을 가질 수 있다. 즉, 키-밸류 스토어는 프로세싱 회로(예를 들어, FPGA(Field Programmable Gate Array)와 같은 가속기)를 포함하는 스토리지 장치를 사용하여 구현될 수 있다. FPGA는 "서비스"(예: 인코딩 또는 디코딩과 같은 순수한 계산을 수행하기 위해)로만 데이터 계층을 조작(예: 처리)하는 데 사용될 수 있다.
연산 스토리지 기능들로 구현된 일부 키-밸류 스토어는 제어 평면 동작 및 데이터 조작(예를 들어, 데이터 처리) 동작 모두를 수행하기 위해 스토리지 장치 리소스를 사용할 수 있다. 즉, 키-밸류 스토어는 스토리지 장치에서 완전히 구현될 수 있다. 그러한 키-밸류 스토어에서, 스토리지 장치의 프로세싱 회로는 사용자 애플리케이션으로부터 요청을 수신하여 키를 찾고(예를 들어, 위치를 찾고) 프로세싱 회로가 계산을 처리하기 위해 요청된 데이터를 스토리지 장치 DRAM으로 가져올 수 있다.
장치 고장으로 인한 데이터 손실로부터 보호하는 것과 같이 데이터 내구성 및 동작 원자성을 제공하기 위해 키-밸류 스토어는 데이터 복구를 위한 충돌 일관성 정책에 따라 구현될 수 있다.
일부 키-밸류 스토어는 로그 선행 기입(WAL; write-ahead logging)(예를 들어, UNDO 로깅 및 REDO 로깅)을 통합하는 충돌 일관성 정책으로 구현될 수 있다. 예를 들어 WAL에서, 키-밸류 스토어에 대한 모든 쓰기는 해당 데이터 위치가 쓰기 동작에 따라 수정되기 전에 스토리지 장치의 비휘발성 메모리에 지속되는 로그 파일(예: 로그 선행 기입)에 저장될 수 있다.
데이터 스토리지의 급속한 발전과 함께, 호스트 또는 스토리지 장치 중 하나의 연산 리소스만을 사용하는 키-밸류 스토어 설계는 연산 병목 현상 및/또는 네트워크 병목 현상(예: CPU 병목 현상)을 겪을 수 있다. 즉, 스토리지 장치들이 더 빠르고 지능화되었지만 CPU가 데이터를 충분히 효율적으로 처리하고 전송하지 못하는 등의 이유로 스토리지 장치의 성능이 완전히 실현되지 않을 수 있다. 연산 저장 기능을 갖는 스토리지 장치(이하, 연산 스토리지 장치)로 구현된 키-밸류 스토어에 있어서, 종래의 호스트 기반의 캐시는 연산 스토리지의 프로세싱 회로(예를 들어, FPGA)와 스토리지 스토리지의 메모리(예: 비휘발성 메모리 또는 스토리지) 사이의 P2P(peer-to-peer) 전송에 의해 제공되는 이점을 충분히 활용하지 못할 수 있다. 따라서 FPGA의 연산 성능이 충분히 활용되지 않을 수 있다.
충돌 일관성 정책과 관련하여 로깅 기반 일관성 정책으로 구현된 키-밸류 스토어는 증가된 쓰기 증폭, 입력/출력(I/O) 상호 의존성 및 느린 요청 처리와 같은 다양한 문제를 초래할 수 있다.
키-밸류 스토어 성능을 개선하기 위해, 본 발명의 실시예의 양태는 논리적으로 분할되어 호스트의 호스트 프로세서 및 연산 스토리지 장치의 프로세싱 회로 모두에 영향을 줄 수 있는 키-밸류 스토어를 제공한다. 예를 들어, 본 발명에 따른 키-밸류 스토어는 전처리 파이프라인(예를 들어, 인공 지능(AI) 및 기계 학습(ML) 애플리케이션을 위한 전처리 파이프라인)에서 감소된 CPU 병목 현상 및 감소된 데이터 인출 지연을 가질 수 있다.
일부 실시예에서, 데이터 플레인 연산은 연산 스토리지 장치의 고속 대역폭을 활용하기 위해 호스트 프로세서로부터 연산 스토리지 장치로 오프로드될 수 있다.
일부 실시예에서, 키-밸류 스토어는 두 부분으로 나눌 수 있다: (1) 호스트 프로세서에 의해 처리되는 검색 계층(예: B-트리의 내부 노드) 및 (2) 연산 스토리지 장치 상의 프로세싱 회로에 의해 처리되는 데이터 계층(예를 들어, B-트리의 리프 노드). 본 명세서에서 개시되는 검색 계층 및 데이터 계층의 예는 B-트리 인덱스 구조를 참조할 수 있지만, 본 발명이 이에 한정되는 것은 아님을 이해해야 한다. 예를 들어, 본 발명의 실시예의 측면에 따른 검색 계층 및 데이터 계층은 임의의 적합한 정렬된 인덱스 구조(예를 들어, B+Tree, Trie 또는 Adaptive Radix Tree)를 통해 구현될 수 있다.
검색 계층은 부분 키를 저장할 수 있다. 데이터 계층은 특정 데이터 노드에 속하는 키에 대응하는 키 지문(key fingerprint)을 저장할 수 있다. 따라서 키 지문은 데이터 저장소 내에서 키-밸류 페어에 해당하는 값의 정확한 위치를 식별할 수 있다.
도면을 참조하여 아래에서 더 상세히 논의되는 바와 같이, 하나 이상의 실시예에 따른 키-밸류 스토어(예를 들어, 교차 계층 키-밸류 스토어)는 컨트롤 플레인에서 호스트 프로세서를 사용하고 데이터 플레인 계산을 연산 스토리지 장치의 프로세싱 회로로 오프로드하기 위해 교차 계층 접근법을 사용할 수 있다. 따라서 키-밸류 스토어는 연산 스토리지 장치의 고대역폭을 활용할 수 있다.
키-밸류 스토어는 또한 아래에서 더 자세히 설명되는 다음 기능 중 하나 이상을 포함할 수 있다: (1) 향상된 처리량 및 확장성을 위한 교차 계층 접근 방식; (2) (예를 들어, 불필요한(예를 들어, 중복) 데이터 이동을 줄이거나 제거하기 위해) 데이터 지역성을 개선하기 위한 교차 계층 캐시(예를 들어, 미러 캐시); 및 (3) 단순화된 충돌 일관성을 위한 버전 기반 충돌 일관성(예: 로그 선행 기입 대신 버전 번호 지정을 기반으로 하는 충돌 일관성 정책).
향상된 효율성을 갖는 것 외에도, 키-밸류 스토어는 데이터 인출 중단을 상당히 줄이고 전처리를 연산 스토리지 장치로 오프로딩하는 이점을 실현하기 위해 연산 파이프라인에 통합될 수 있다.
또한, 본 발명는 하나의 연산 스토리지 장치에 연결된 호스트를 언급하지만, 본 발명은 이에 제한되지 않는다. 예를 들어, 일부 실시예에서, 본 발명에 따른 키-밸류 스토어는 서버에 연결된 다수의 스토리지 장치 및 가속기를 갖는 이기종 시스템을 이용할 수 있다.
연산 스토리지 장치를 갖는 교차 계층 키-밸류 스토어를 위한 시스템 및 방법은 감소된 병목 현상(예를 들어, 더 큰 전체 시스템 대역폭), 개선된 처리량, 확장성 및 데이터 집약성을 갖는 키-밸류 스토어를 제공할 수 있다. 이러한 개선은 키-밸류 스토어를 논리적으로 다음과 같이 나누어 달성할 수 있다: (1) 호스트 메모리에 저장되고 호스트 프로세서에 의해 조작(예를 들어, 처리)되는 검색 계층; 및 (2) 연산 스토리지 장치에 저장되고 연산 스토리지 장치의 프로세싱 회로에 의해 처리되는 데이터 계층. 또한, 일부 실시예에서, 교차 계층 키-밸류 스토어는 로깅 기반 충돌 일관성 대신에 버전 기반 충돌 일관성으로 구현됨으로써 간소화된 충돌 일관성을 제공할 수 있다.
예를 들어, 키-밸류 스토어는 다음과 같이 호스트를 포함하는 시스템 및 영구 메모리(예: 솔리드 스테이트 드라이브(SSD) 또는 스토리지 장치의 다른 비휘발성 메모리 부분), 프로세싱 회로(예: FPGA) 및 영구 메모리 및 프로세싱 회로(예: P2P 메모리를 통해)에 연결된 공통 메모리 영역(CMA)을 포함하는 스토리지 장치에 의해 구현되거나 구현될 수 있다.
호스트는 정렬된 인덱스(예를 들어, 트리 구조)를 포함하는 검색 계층을 저장 및 조작(예를 들어, 처리)할 수 있다. 호스트는 또한 키-밸류 스토어의 "미러 캐시"의 호스트-캐시 부분을 저장 및 조작(예: 처리)할 수 있다. 스토리지 장치는 트리 구조의 리프 노드(예를 들어, 데이터 노드)를 포함하는 데이터 계층을 저장하고 처리할 수 있다. 스토리지 장치는 또한 미러 캐시의 커널 캐시 부분을 저장하고 처리할 수 있다.
호스트 캐시는 2차원(2D) 어레이로 구현될 수 있다. 데이터 노드에 대응하는 메타 데이터를 저장하는 호스트 캐시의 각 엔트리는 스토리지 장치에 저장될 수 있다.
커널 캐시는 CMA에 저장된 데이터 노드의 1차원(1D) 어레이로 구현될 수 있다. 호스트는 (예를 들어, 시스템 내에서 데이터 이동량을 줄이기 위해) 커널 캐시 내에 저장된 데이터 노드의 오프셋과 동일한 오프셋으로 호스트 캐시 내에 호스트 캐시의 각 엔트리를 저장할 수 있다.
키-밸류 스토어는 호스트 프로세서(예를 들어, CPU)와 스토리지 장치의 프로세싱 회로(예를 들어, FPGA) 간에 책임을 분배할 수 있다. 예를 들어 키-밸류 스토어는 스토리지 장치에 저장된 데이터 노드에 액세스하기 위한 요청 처리 제어를 분할할 수 있다. 따라서, 호스트 프로세서는 커널 호출을 트리거(예를 들어, 유발 또는 발행)하고, 영구 메모리(이하, 스토리지)로 또는 그로부터 데이터 전송을 발행하고, 충돌 일관성을 관리하기 위해 제어 평면에서 작동할 수 있다. 스토리지 장치의 프로세싱 회로는 키-밸류 스토어가 연산 스토리지 장치의 상대적으로 더 높은 액세스 처리량을 이용할 수 있도록 데이터 플레인 동작을 처리할 수 있다.
추가적으로, 키-밸류 스토어는 로깅 기술(예를 들어, WAL)의 오버헤드를 피하기 위해 버전 메타데이터를 유지하는 버전 기반 크래시 일관성 메커니즘으로 가변 길이 키-밸류 서포트를 제공하도록 구현될 수 있다.
따라서, 본 발명의 실시예의 양태에 따른 키-밸류 스토어는 다음을 포함하는 다른 키-밸류 스토어 설계와 비교하여 몇 가지 개선 및 이점을 제공할 수 있다: (1) 호스트 프로세서를 제어 평면으로만 사용하고 데이터 평면 동작을 프로세싱 회로로 오프로드하기 위해 검색 계층과 데이터 계층으로 논리적으로 분할되어 병목 현상을 줄인다. (2) P2P 메모리를 통해 데이터를 프로세싱 회로로 전송함으로써 I/O 대역폭 활용을 개선하고, 따라서 네트워크 홉을 줄임으로써(예: 스토리지와 호스트 간의 데이터 전송 횟수를 줄임) 전체 처리량을 증가시킨다. (3) 원자 업데이트(예: 4KB 크기 업데이트)로 버전 기반 충돌 일관성을 구현하여 저널링(예: 연산 비용이 많이 들고 데이터 집약적인 로깅 기반 복구)을 방지한다. (4) 검색 계층과 데이터 계층이 호스트 프로세서와 프로세싱 회로 사이에서 논리적 및 물리적으로 분할되기 때문에 동기화 문제없이 확장성을 허용한다.
도 1은 본 발명의 일부 실시예에 따른 검색 계층 및 데이터 계층을 포함하는 데이터 스토리지 시스템을 나타내는 시스템도이다.
도 1을 참조하면, 시스템(1)은 스토리지 장치(200)(예를 들어, 전산 스토리지 장치)에 연결될 수 있는 호스트(100)를 포함할 수 있다. 호스트(100)는 호스트 프로세서(110)(예: 호스트 CPU) 및 호스트 메모리(120)(예: 호스트 DRAM)를 포함할 수 있다.
스토리지 장치(200)는 스토리지(210)(예를 들어, 영구 또는 비휘발성 메모리), 스토리지 컨트롤러(212)(예를 들어, 비휘발성 메모리 익스프레스(NVMe) 보조 컨트롤러), 프로세싱 회로(220)(예를 들어, FPGA와 같은 가속기), 및 공통 메모리 영역(CMA)(230)(예를 들어, 스토리지(210) 및 프로세싱 회로(220) 모두와 연결되거나 공유되는 프로세싱 회로(220)의 DRAM의 일부일 수 있는 연산 스토리지 장치의 P2P 메모리)를 포함할 수 있다.
스토리지 장치(200)는 하나 이상의 데이터 노드(DN)을 저장할 수 있다(도 4 참조). 각 데이터 노드(DN)에는 키-밸류 페어들의 세트(예를 들어, 오름차순으로 배열될 수 있고 도 1 및 도 4에서 "AAA" 및 "AAB" 등으로 도시된 다수의 키-밸류 페어)가 포함될 수 있다. 해당 데이터 노드의 키-밸류 페어 세트는 호스트 메모리(120)의 검색 계층(150)에서 동일한 부분 키에 대응될 수 있다.
시스템(1)은 기존의 키-밸류 스토어보다 성능을 향상시키기 위해, 데이터 액세스 요청 처리와 같은 책임이 호스트 프로세서(110)와 프로세싱 회로(220) 간에 분할되는 교차 계층 구조를 갖는 키-밸류 스토어를 포함할 수 있다(예를 들어, 그럴 수 있다). 예를 들어, 검색 계층(150)는 호스트 메모리(120)에 저장되고, 데이터 계층(250)는 스토리지 장치(200)(예를 들어, 스토리지(210))에 저장될 수 있다. 검색 계층(150)은 호스트 프로세서(110)에 의해 조작(예를 들어, 처리, 유지 또는 제어)될 수 있다. 데이터 계층(250)은 프로세싱 회로(220)에 의해 처리될 수 있다.
따라서, 호스트 프로세서(110)는 제어 평면으로서 작용할 수 있고 FPGA 커널 호출(예를 들어, 프로세싱 회로(220)로 향하는 커널 호출) 트리거링, 스토리지(210)로/로부터 데이터 전송 발행(예를 들어, 유발), 동시성 제어 관리(예를 들어, 다수의 요청으로부터 스토리지 장치(200)에 대한 동시 액세스 관리) 등과 같은 적절한 동작을 수행할 수 있다. 또한, 프로세싱 회로(220)는 데이터 조작(예를 들어, 처리) 및 처리(예를 들어, 데이터 노드 업데이트 실행 및 업데이트된 데이터 노드에 대한 대응하는 메타데이터 업데이트)와 같은 데이터 평면의 동작을 관리할 수 있다.
검색 계층(150)의 조작(예를 들어, 처리)을 호스트 프로세서(110)에 위임함으로써, 데이터 계층(250) 동작을 프로세싱 회로(220)에 위임함으로써, 연산 파워의 상이한 소스가 보다 적절하게 사용될 수 있다. 예를 들어, 시스템(1)은 스토리지(210)와 프로세싱 회로(220) 사이의 내부 대역폭(예: 높은 내부 대역폭)을 활용하면서 스토리지(210)와 프로세싱 회로(220) 사이의 P2P 데이터 전송(예: 직접 데이터 전송)으로 인한 데이터 이동을 감소(예: 최소화)할 수 있다.
검색 계층(150)은 예를 들어 부분 키를 저장하는 호스트 메모리(120) 상의 트리 구조로 구현될 수 있다(예를 들어, 부분 키를 B-트리 메타 구조의 내부 노드로서 저장함). 본 명세서에서는 검색 계층(150) 및 데이터 계층(250)이 트리 구조에 대응하는 것으로 설명되지만, 본 발명은 이에 제한되지 않고 다른 정렬된 인덱스 구조가 적합할 수 있음을 이해해야 한다.
데이터 계층(250)은 스토리지 장치(200)의 데이터 노드(DN)에 대응하는 리프 노드(예: B-트리 구조의 리프 노드)의 이중 연결 목록으로 구현될 수 있다. 검색 계층(예: 트리 구조)은 포인트 쿼리의 빠른 조회에 도움이 될 수 있다. 이중 연결 목록인 데이터 계층은 키-밸류 페어를 오름차순으로 저장할 수 있으므로 빠른 범위 쿼리가 생성된다. 따라서, 범위 동작을 수행하지 않는 기존의 일부 키-밸류 스토어와 달리, 교차 계층 키-밸류 스토어는 시스템(1)이 포인트 쿼리(예: 단일 키-밸류 페어에 해당하는 동작) 및 범위 쿼리(예: 둘 이상의 연속 키-밸류 페어에 해당하는 동작) 모두에 적합하도록 허용할 수 있다.
교차 계층 키 값 저장소의 실시예의 양태는 호스트 CPU 처리(예를 들어, 범위 쿼리 처리)의 유연성 및 니어 데이터 처리를 위해 프로세싱 회로(220) (예: 스토리지 FPGA) 를 활용하는 프레임워크를 제공할 수 있다(예: 리프 노드의 조회 동작, 데이터 압축 및 심층 학습을 위한 전처리). 또한, 검색 및 데이터 계층이 분리된 교차 계층 키-밸류 스토어를 사용하여 아키텍처는 네트워크에서 여러 스토리지 장치(200)에 연결된 NUMA(non-uniform memory access) 노드로 쉽게 확장될 수 있다.
도 2는 본 발명의 일부 실시예에 따른 호스트 캐시 및 커널 캐시를 포함하는 데이터 스토리지 시스템을 나타내는 시스템도이다.
도 2를 참조하면, 시스템(1)은 호스트(100)의 호스트 메모리(120)와 스토리지 장치(200)의 CMA(230)에 걸쳐 분할된 미러 캐시(7)(또는 교차 계층 캐시)를 포함할 수 있다. 미러 캐시(7)는 호스트 메모리(120) 상의 호스트 캐시(170)(예: 메타데이터 캐시) 및 CMA(230) 상의 커널 캐시(270)(예: 데이터 캐시)를 포함할 수 있다. 미러 캐시(7)는 데이터 지역성(예를 들어, 향상된 데이터 지역성)을 제공한다.
호스트(100)에서 메타데이터 캐시를 유지하면 호스트 프로세서(110)가 제어 평면에서 작동할 수 있게 하고, CMA(230)의 데이터 캐시가 연산 스토리지 장치(200)에 의해 제공되는 고속 피어 투 피어 데이터 전송을 활용할 수 있게 한다. 일반적으로 종래의 키-밸류 스토어의 호스트에 의해 수행될 수 있는 데이터 계층 계산을 스토리지 장치(200)로 오프로드함으로써, 스토리지(210)로부터의 데이터 액세스 입도는 데이터 페이지의 크기(예를 들어, 4KB 크기)일 수 있다.
이러한 상황에서 종래의 호스트 기반 캐시를 사용하는 것이 데이터 노드(DN)(예를 들어, 데이터 페이지)를 저장하기 위한 충분한 용량을 제공할 수 있지만, 교차 계층 캐시를 사용하는 것은 호스트 기반 캐시를 사용하는 것보다 몇 가지 이점 및 개선점을 제공할 수 있다. 예를 들어 교차 계층 캐시를 사용하면 다음이 가능한다: (1) 데이터 페이지 액세스 대기 시간을 줄인다. (2) 홉의 수(예를 들어, 스토리지(210)와 호스트(100) 사이의 데이터 전송의 수)가 감소하기 때문에 네트워크 트래픽을 감소시킨다; (3) 프로세싱 회로(220)와 스토리지 장치(200) 사이의 P2P 전송의 장점을 활용하고, 따라서 프로세싱 회로(220)의 연산 파워를 활용한다.
연산 스토리지 장치(200)는 내부 데이터 경로를 통해 스토리지(210)와 프로세싱 회로(220)를 연결함으로써 피어 투 피어 데이터 전송이라 불리는 고속 데이터 전송을 가능하게 할 수 있다. 이 연결은 온칩 소프트 PCIe 스위치와 프로세싱 회로(220)의 장치 메모리로 달성될 수 있다. 연산 스토리지 장치(200)는 스토리지(210) 및 프로세싱 회로(220)의 메모리(예를 들어, DRAM) 모두를 PCIe(peripheral component interconnect express) 바(260)(예를 들어, PCIe 바 메모리)에 매핑할 수 있다. PCIe 바(260)에 노출되는 프로세싱 회로(220)의 메모리 부분은 CMA(230)를 포함할 수 있다(예를 들어, 그럴 수 있다).
호스트 캐시(170)는 메타데이터를 저장하고 호스트 프로세서(110)가 제어 평면에서 동작하여 캐시 유지 동작을 처리하고 동시 액세스를 관리할 수 있게 하는 집합 연관 캐시로서 호스트 메모리(120)에 저장될 수 있다. 호스트 캐시(170)는 해당 데이터 노드(DN)의 메타데이터를 저장하는 해시 테이블일 수 있다. 예를 들어, 각 호스트 캐시 엔트리(172)는 LBA(Logical Block Address), 타임스탬프, 점유 확인을 위한 플래그, 축출을 위한 LRU(최소 사용) 정보, 동시 캐시 액세스를 위한 잠금 정보 등의 메타데이터를 저장할 수 있다. 호스트 캐시(170)는 2D 어레이일 수 있다.
커널 캐시(270)는 CMA(230)에 저장되어 데이터 노드(DN)를 저장할 수 있으며, 교차 계층 키-밸류 스토어가 P2P 액세스 및 감소된 네트워크 대기 시간과 같은 연산 스토리지 장치(200)에 의해 제공되는 장점을 활용하도록 한다. 커널 캐시(270)는 평평한 1차원(1D) 어레이(예를 들어, 대형 P2P 버퍼)일 수 있다.
"미러 캐시"라는 이름은 그 레이아웃 특징을 나타낸다. 예를 들어, 호스트 캐시(170) 상의 각각의 호스트 캐시 엔트리(172)는 커널 캐시(270) 상의 대응하는 실제 데이터 노드(DN)의 커널 캐시 엔트리(272)에 대응하는 오프셋과 동일한 오프셋에 각각의 메타데이터를 저장할 수 있다(예를 들어, 호스트 캐시(170)의 10번째 엔트리는 커널 캐시(270)의 10번째 엔트리에 저장된 데이터 노드(DN)에 대응하는 메타데이터를 포함할 수 있다). 따라서, 호스트 캐시(170)의 레이아웃은 커널 캐시(270)의 레이아웃을 반영할 수 있다. 따라서, 미러 캐시(7)는 호스트 캐시(170)에 LBA가 존재한다는 것은 커널 캐시(270)에 해당 데이터 노드(DN)이 존재함을 나타낼 수 있기 때문에 데이터 이동 횟수를 줄일 수 있다.
도 3a는 본 발명의 일부 실시예에 따른 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 3a를 참조하면, 교차 계층 키-밸류 스토리지 시스템(1)에서 스토리지 장치(200)에 저장된 데이터 노드(DN)에 액세스하기 위해 데이터 액세스 요청을 처리하는 방법(3000A)은 다음 동작을 포함할 수 있다.
호스트(100)는 데이터 액세스 요청(예를 들어, 키-밸류 페어를 이용한 삽입 동작)을 수신할 수 있다(3001A 동작).
제어는 검색 계층(150)이 내부적으로 데이터 노드(DN)의 LBA를 가리키는 리프 노드로 범위를 좁힐 수 있다는 점에 유의하면서 검색 계층(150)에서 키(예를 들어, 부분 키)의 조회를 가능하게 하기 위해 (동작 3002A) 호스트 메모리(120) 내부에 검색 계층(150)을 가질 수 있는 호스트 프로세서(110)로 전달될 수 있다.
호스트 프로세서(110)는 LBA를 사용하여 호스트 메모리(120)에도 존재하는 호스트 캐시(170)를 조회(예: 검색)하고, 해당 데이터 노드(DN)이 미러 캐시(7)의 커널 캐시(270)에 존재하는지 판단할 수 있다(3003A).
호스트 프로세서(110)는 호스트 캐시(170)의 메타 데이터를 검색할 수 있으며, 그리고 검색은 (i) 대응하는 데이터 노드(DN)이 커널 캐시(270)에 없거나 커널 캐시(270)에 존재하지 않는 캐시 미스(cache miss) 또는 (ii) 데이터 노드(DN)이 커널 캐시(270)에 존재하는 캐시 히트(동작 3004A)를 초래할 수 있다.
캐시 미스가 발생했다는 결정에 기초하여, 호스트 프로세서(110)는 스토리지(210)로부터 CMA(230)에 위치한 커널 캐시(270)로 읽기(예를 들어, P2P 읽기)를 발행(예를 들어, 트리거 또는 유발)할 수 있다(동작 3005A).
P2P 읽기의 발행에 응답하여, 데이터 노드(DN)을 커널 캐시(270)에 채우도록 제어가 스토리지 장치(200)에 전달될 수 있다(동작 3006A). 데이터 노드(DN)을 커널 캐시(270)에 채우고 나면 제어가 다시 호스트(100)로 전달될 수 있다.
캐시 히트의 발생을 결정하는 것에 기초하여, 또는 데이터 노드(DN)이 커널 캐시(270)에 채워진 것을 결정하는 것에 기초하여, 호스트(100)는 프로세싱 회로(220)에 제어를 전달할 수 있는 커널 호출(예를 들어, 삽입 커널 호출)을 발행(예를 들어, 트리거 또는 유발할 수 있음)할 수 있다(동작 3007A).
커널 호출에 대한 응답으로, 프로세싱 회로(220)는 커널 캐시(270)로부터 데이터 노드(DN)을 판독할 수 있고(예를 들어, 데이터 노드(DN)을 프로세싱 회로(220)의 로컬 메모리로 판독할 수 있음), 데이터 노드(DN) 내부의 키-밸류 페어의 정확한 위치를 좁히기 위해 특정 키에 대한 지문(fp)을 검색하거나 생성할 수 있다(동작 3008A).
키-밸류 페어의 정확한 위치 결정에 기초하여, 프로세싱 회로(220)는 데이터 노드(DN)에 대한 동작(예를 들어, 삽입 동작)을 수행할 수 있다. (예를 들어, 프로세싱 회로(220)는 프로세싱 회로(220)의 로컬 메모리에 있는 데이터 노드(DN)을 조작(예를 들어, 처리하거나 그에 대한 하나 이상의 동작을 수행)할 수 있고 업데이트된 데이터 노드(DN)을 다시 커널 캐시(270)에 채울 수 있음) (작동 3009A).
프로세싱 회로(220)에 의한 데이터 노드(DN)의 동작 완료에 기초하여, 업데이트된 데이터 노드(DN)을 스토리지(210)에 지속(예를 들어, 쓰기)하기 위해(예를 들어, CMA(230)로부터 다시 스토리지(210)로 P2P 쓰기를 발행함으로써) 제어가 호스트(100)로 반환될 수 있다(동작 3010A).
업데이트된 데이터 노드(DN)이 스토리지(210)에 지속되면 방법이 완료되고 종료될 수 있다(동작 3011A).
도 3b는 본 발명의 일부 실시예에 따른 도 3a의 동작에 대응하는 데이터 저장 방법의 동작을 나타내는 흐름도이다.
도 3b를 참조하면, 도 3a와 관련하여 위에서 논의된 동작(예를 들어, 동작 3001A 내지 3011A)은 시스템(1)의 구조를 도시하지 않고 흐름도 형식으로 단순화된 방식으로 논의된다.
예를 들어, 호스트 프로세서(110)는 키와 연관된 데이터 노드(DN)에 대한 액세스 요청을 수신할 수 있다(3001B 동작).
호스트(100)(예를 들어, 호스트(100)의 호스트 프로세서(110))는 데이터 노드(DN)의 위치를 나타내는 정보를 찾기 위해 검색 계층(150)에서 키를 찾을 수 있다(예를 들어, 데이터 노드(DN)의 LBA를 찾기 위해)(동작 3002B).
호스트(100)는 미러 캐시(7)의 호스트 캐시(170) 부분에서 LBA를 찾을 수 있다(3003B 동작).
호스트 캐시(170) 검색을 통해 호스트(100)는 미러 캐시(7)의 커널 캐시(270) 부분에 데이터 노드(DN)이 존재하는지 여부를 판단할 수 있다(3004B).
캐시 미스 결정에 기초하여, 호스트(100)는 스토리지(210)로부터 CMA(230)로 P2P 판독을 발행(예를 들어, 트리거 또는 유발)할 수 있다(동작 3005B).
스토리지 장치(200)는 스토리지(210)로부터 커널 캐시(270) 상에 데이터 노드(DN)을 채울 수 있다(동작 3006B).
캐시 히트 결정에 기초하거나, 데이터 노드(DN)이 커널 캐시(270)에 채워졌다는 결정에 기초하여, 호스트(100)는 요청(예를 들어, 동작 3001B에서 수신된 요청)에 기초하여 커널 호출을 발행(예를 들어, 트리거 또는 유발)할 수 있다(동작 3007B).
커널 호출에 대한 응답으로, 데이터 노드(DN)에 대해 요청된 데이터 조작(예를 들어, 데이터 처리) 동작을 수행하기 위해 제어가 프로세싱 회로(220)에 전달될 수 있고, 프로세싱 회로(220)는 데이터 노드(DN) 내부의 키-밸류 페어의 정확한 위치를 결정하기 위해 지문(fp)을 얻을 수 있다(동작 3008B).
프로세싱 회로(220)는 데이터 노드(DN)에 대해 요청된 데이터 조작(예를 들어, 데이터 처리) 동작을 수행할 수 있다(동작 3009B).
호스트(100)는 업데이트된 데이터 노드(DN)을 CMA(230)로부터 스토리지(210)로 지속시키기 위해 P2P 쓰기를 발행(예를 들어, 트리거 또는 유발)할 수 있다(동작 3010B).
업데이트된 데이터 노드(DN)이 스토리지(210)에 지속되면 방법이 완료될 수 있고 동작이 종료될 수 있다(동작 3011A).
도 4는 본 발명의 일부 실시예에 따라 가변 길이 키-밸류 서포트를 제공하는 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 4를 참조하면, 일부 실시예에서, 시스템(1)은 가변 길이 키-밸류 서포트를 제공할 수 있다. 추가적으로, 도 5를 참조하여 아래에서 논의되는 바와 같이, 가변 길이 키-밸류 서포트는 버전 기반 충돌 일관성 방법을 지원하기 위해 구현될 수 있다.
일부 실시예에서, 교차 계층 키-밸류 스토리지 시스템(1)은 이미지, 비디오 등과 같은 다수의 데이터 페이지에 걸쳐 있는 비교적 많은 양의 데이터를 다루는 AI/ML 애플리케이션에 의해 이용될 수 있다. 각 데이터 노드(DN)은 본 발명의 실시예에 따라 하나의 데이터 페이지의 크기(예를 들어, 4KB)와 동일한 고정 크기를 가질 수 있으므로, 시스템(1)은 더 큰 키-밸류 페어를 수용하기 위해 대응하는 데이터 노드(DN)에 확장 노드 EN을 할당(예를 들어, 할당 또는 연결)함으로써 가변 길이 키-밸류 페어를 지원하도록 구성될 수 있다. 확장 노드(EN)는 서로 다른 크기의 데이터 페이지(예: 4KB, 8KB, 16KB, 32KB 등)의 풀에서 슬랩 할당자 SA(예: 호스트 측 도우미 기능)에 의해 제공 및 할당되어 해당 데이터 노드(DN)에 연결될 수 있다.
따라서, 가변 길이 키-밸류 서포트를 제공하는 방법(4000)은 다음을 포함할 수 있다: 호스트(100)에서 스토리지 장치(200)에 저장된 데이터 노드(DN)에 대한 액세스 요청(예를 들어, 키-밸류 페어를 이용한 삽입 동작)을 수신하는 단계(4001); 키-밸류 페어에 대응하는 대응하는 데이터 노드(DN)을 찾는(예를 들어, 찾기)(동작 4002); 데이터 노드(DN)의 여유 공간이 부족한 것으로 판단하는 단계(예를 들어, 데이터 노드(DN)의 가용 공간이 요청을 수용할 수 있는 공간보다 작은 것으로 판단하는 단계)(4003 동작); 확장 노드(EN)의 존재를 표시하고 데이터 노드(DN)에 확장 노드(EN)의 지문을 추가하기 위해(예를 들어, 데이터 노드(DN) 내에서 데이터 노드(DN)에서 확장 노드 EN으로의 포인터를 구현하기 위해) 데이터 노드(DN)의 메타데이터(MD)를 업데이트하는 단계(4004); 및 슬랩 할당자 SA로부터 확장 페이지를 가져오고 메타데이터 및 키-밸류 페어를 확장 노드 EN에 추가하는 단계(4005)를 포함한다.
도 5는 본 발명의 일부 실시예에 따라 가변 키-밸류 서포트 및 버전 기반 크래시 일관성을 제공하는 시스템 내의 데이터 저장 방법의 동작을 나타내는 결합된 흐름도 및 시스템 다이어그램이다.
도 5를 참조하면, 일부 실시예에서, 교차 계층 키-밸류 스토어 시스템(1)은 기존의 로깅 기반 충돌 일관성 기술과 관련된 오버헤드 비용을 피하기 위해 원자적 읽기/쓰기(예: 4KB 원자 읽기/쓰기)와 함께 버전 관리를 사용하는 버전 기반 충돌 일관성 정책을 제공할 수 있다. 본 발명의 실시예의 양태에 따른 버전 기반 크래시 일관성 모델은 원자 블록 읽기/쓰기(예: 4KB 블록 읽기/쓰기)를 활용하여 아웃 플레이스 업데이트(아래에서 설명)를 만들고 크래시 시 전체 디스크(예를 들어, 스토리지(210))를 스캔하여 유효한 데이터 페이지를 식별할 수 있다.
버저닝으로, 시스템(1)은 다음 방식을 사용함으로써 원자적 읽기/쓰기를 이용할 수 있다. 데이터 노드(DN)에 대한 업데이트는 "인 플레이스" 방식으로 작성될 수 있다. 예를 들어, 데이터 노드(DN)에 대한 업데이트는 이전 버전과 동일한 파일 오프셋에서(예를 들어, 데이터 노드(DN)의 이전 버전의 원래 위치에서) 저장소에 쓰여질 수 있다.
하나의 데이터 페이지의 크기보다 크고 데이터 노드(DN)에 할당된 확장 노드 EN에 대한 업데이트는 아웃 플레이스(out-of-place) 방식으로 스토리지에 업데이트될 수 있다. 예를 들어, 이전 버전의 확장 노드(EN)는 원래 위치에 유지(예를 들어, 변조되지 않음)될 수 있고, 업데이트된 확장 노드(EN)는 이전 버전의 확장 노드(EN)와 다른 위치에 쓰여질 수 있다.
추가로, 정확성을 제공하기 위해(예를 들어, 정확성을 보장하기 위해), 확장 노드 EN의 존재 시, 데이터 노드(DN)은 충돌 일관성을 제공하기 위해 확장 노드 EN이 스토리지(210)에 완전히 지속된 후에 적소에 쓰여질 수 있다. 어떤 상태에서 충돌(예: 정전)이 발생한 경우 이전 버전의 데이터 노드(DN)이 유지될 수 있고(예: 방해받지 않음), 확장 노드 EN의 최신 버전이 스토리지(210)에 존재하면, 슬랩 할당자 SA에 의해 가비지 수집될 수 있다(예를 들어, 시스템 1에서 실행 중인 다른 프로세스에 의해 사용 가능하게 됨).
여전히 도 5를 참조하면, 가변 길이 키 값 지원 및 버전 기반 충돌 일관성을 제공하기 위한 방법(5000)은 다음을 포함할 수 있다. 시스템(1)은 슬랩 할당자 SA에 의해 할당된 확장 노드 EN(예, Ext. Node 3)을 데이터 노드(DN)(예, Data Node 3)으로 업데이트하는 동작을 처리할 수 있고, 여기서 데이터 노드(DN)과 확장 노드 EN 각각은 스토리지(210)에 위치하고 동일한 버전 번호 VN(예를 들어, 0)을 갖는다(동작 5001).
시스템(1)은 CMA(230) 상에 데이터 노드(DN) 및 그의 확장 노드 EN의 복사본을 생성할 수 있다(동작 5002).
프로세싱 회로(220)는 (i) 데이터 노드(DN) 및 확장 노드 EN을 로컬 메모리로 판독하고, (ii) 동작에 기초하여 요청된 계산을 수행하고, (iii) 동작에 기초하여 확장 노드 EN을 업데이트하기 위해CMA(230)에 존재하는 데이터 노드(DN) 및 확장 노드(EN)의 복사본에 기초하여 트리거될 수 있다(동작 5003).
동작의 완료에 기초하여, 프로세싱 회로(220)는 값(예를 들어, 업데이트된 데이터 노드(DN) 및 업데이트된 확장 노드 EN)을 업데이트된 버전 번호 VN으로 CMA(230)에 다시 쓸 수 있다(예를 들어, 업데이트된 데이터 노드(DN)의 메타데이터 MD가 업데이트된 확장 노드 EN을 가리키도록 1로 업데이트됨)(동작 5004).
업데이트된 확장 노드(EN)는 이전 버전의 확장 노드(EN)가 유지되도록(예를 들어, 변조되지 않도록) 아웃 플레이스 방식으로 스토리지(210)에 지속(예를 들어, 쓰기)될 수 있다(동작 5005).
업데이트된 확장 노드(EN)가 저장부(210)에 완전히 써진 것을 기반으로, 업데이트된 데이터 노드(DN)은 데이터 노드(DN)의 이전 버전이 업데이트된 데이터 노드(DN)으로 덮어쓰기되어 데이터 노드(DN)이 업데이트된 확장 노드(ED)를 가리키도록 인 플레이스(in-place) 방식 (예: 데이터 노드(DN)의 이전 버전이 있던 위치)으로 스토리지(210)에 지속될 수 있다. 이는, 그 내부 메타데이터 MD(도 4 참조)가 업데이트된 확장 노드 EN을 가리키도록 내부적으로 업데이트되었기 때문이다(동작 5006).
방법(5000)을 구현함으로써, 시스템(1)은 충돌 시 탄력적일 수 있다. 예를 들어, 업데이트된 확장 노드(EN)가 스토리지(210)에 지속되는 동안(예를 들어, 동작 5005에서) 충돌이 발생하는 경우, 업데이트된 확장 노드가 아웃 플레이스 방식으로 스토리지(210)에 지속되고 있었기 때문에, 동작이 중단되고 부분적으로 작성된 확장 노드가 가비지 수집되는 상태로 다시 실행될 수 있다.
업데이트된 데이터 노드(DN)이 인-플레이스 방식으로 스토리지(210)에 지속되는 동안(예를 들어, 동작 5006에서) 충돌이 발생하면, 동작은 단순히 중단되고 재실행될 수 있으며(부분적으로 써진 확장 노드가 가비지 수집됨) 시스템(1)은 데이터 노드(DN) 및 확장 노드 EN 모두의 이전 버전으로 롤백할 수 있다. 따라서, 데이터 손실을 줄일 수 있다(예: 방지).
도 6은 본 발명의 일부 실시예에 따라 호스트 측 동시성 제어를 포함하는 판독(또는 조회) 요청을 위한 데이터 저장 방법의 동작을 나타내는 흐름도이다.
도 6을 참조하면, 호스트(100)(예를 들어, 도 1 및 도 2 참조)는 읽기 동시성 방법(6000, 예를 들어, 조회 동작을 위해)을 구현함으로써 스토리지 장치(200)에 대한 동시 액세스를 제어할 수 있다. 읽기 동시성 방법은 다음을 포함할 수 있다: 검색 계층에서 무잠금 조회를 발생시키는 단계(동작 6001); 호스트(100)가 데이터 노드(DN)의 메타 구조를 탐색하여 데이터 노드(DN)에 대한 읽기 잠금을 획득하는 단계(6002); 호스트(100)가 발견된 LBA를 이용하여 호스트 캐시(170)의 LBA를 찾아(예를 들어, 찾기 또는 검색) 커널 캐시(270) 상의 데이터 노드(DN)의 위치를 찾는 단계(6003); 캐시 히트의 경우, 호스트 캐시 슬롯에 대한 읽기 잠금을 획득하는 단계(6004A); 캐시 미스의 경우, 데이터 노드(DN)을 스토리지(210)에서 커널 캐시(270)로 로드하기 위해 P2P 읽기 I/O 호출을 발행(예를 들어, 트리거링 또는 야기)하고(동작 6004B1) 호스트 캐시 슬롯 상에서 쓰기 잠금을 획득(동작 6004B2); 발견된 오프셋에서 데이터 노드(DN)으로 준비 중인 커널 캐시에 기반하여 프로세싱 회로(220)에서 조회 커널 트리거 단계(예를 들어, FPGA)에서 조회 커널을 트리거하는 단계(시스템(1)은 커널 측에서 동시성을 달성하기 위해 각각의 커널 기능에 대해 다수의 연산 유닛을 발행(예를 들어, 트리거 또는 유발)할 수 있음)(동작 6005); 완료되는 커널 실행을 기반으로, 제어는 호스트(100)로 다시 전달될 수 있고, 애플리케이션을 종료하기 전에 호스트(100)는 호스트 캐시 슬롯에 대한 읽기/쓰기(미러 캐시) 잠금을 해제할 수 있고(동작 6006) 데이터 노드(DN) 메타 구조에 대한 읽기 잠금을 해제할 수 있다(동작 6007); 및 종료 단계(동작 6008).
도 7은 본 발명의 일부 실시예에 따라 호스트 측 동시성 제어를 포함하는 쓰기(또는 삽입) 요청을 위한 데이터 저장 방법의 동작을 나타내는 흐름도이다.
도 7을 참조하면, 호스트(100)(예를 들어, 도 1 및 도 2 참조)는 쓰기 동시성(7000)(예를 들어, 삽입 동작을 위해) 방법을 구현함으로써 스토리지 장치(200)에 대한 동시 액세스를 제어할 수 있다. 쓰기 동시성 방법은 다음을 포함한다: 검색 계층에서 무잠금 조회를 발생시키는 단계(동작 7001); 호스트(100)가 데이터 노드(DN)의 메타 구조를 탐색하여 데이터 노드(DN)에 대한 쓰기 잠금을 획득하는 단계(7002); 호스트(100)가 발견된 LBA를 이용하여 호스트 캐시(170)의 LBA를 조회(예를 들어, 찾기 또는 검색)하여 커널 캐시(270) 상의 데이터 노드(DN)의 위치를 찾는 단계(7003); 캐시 미스의 경우, 데이터 노드(DN)을 스토리지(210)에서 커널 캐시(270)로 로드하기 위해 P2P 읽기 I/O 호출을 발행(예를 들어, 유발 또는 트리거링)(동작 7004A) 및 호스트 캐시 슬롯에 대한 쓰기 잠금을 획득하는 단계(동작 7004B); 캐시 히트의 경우, P2P 읽기 I/O 호출을 발행하지 않고(예를 들어, 트리거링하지 않거나 유발하지 않고) 호스트 캐시 슬롯에 대한 쓰기 잠금을 획득하고(동작 7004B); 발견된 오프셋에서 데이터 노드(DN)으로 준비된 커널 캐시에 기초하여, 프로세싱 회로(220)(예: FPGA)에서 커널 삽입을 트리거링하는 단계(동작 7005) (시스템(1)은 커널 측에서 동시성을 달성하기 위해 각 커널 기능에 대해 다수의 연산 유닛을 발행(예를 들어, 트리거 또는 야기)할 수 있다); 완료되는 커널 실행을 기반으로, 제어는 호스트(100)로 다시 전달될 수 있고, 애플리케이션을 종료하기 전에 호스트(100)는 호스트 캐시 슬롯에 대한 쓰기(미러 캐시) 잠금을 해제할 수 있으며(동작 7006) 데이터 노드(DN) 메타 구조에 대한 쓰기 잠금을 해제할 수 있다(동작 7007); 애플리케이션이 종료될 수 있다(동작 7008).
따라서, 도 2를 다시 참조하면, 본 발명의 실시예의 양태는 종래의 키-밸류 스토어에 비해 장점 및 개선점을 제공할 수 있다. 예를 들어 호스트 프로세서(110)에서 병목 현상을 줄이고 연산 스토리지 장치(200)의 높은 내부 대역폭 및 데이터에 가까운 계산을 활용한다. 이러한 장점 및 개선점은 호스트(100)와 전산 스토리지 장치(200) 사이의 키-밸류 스토어를 논리적 및 물리적으로 분할함으로써 달성될 수 있다. 따라서, 검색 계층(150)에 대한 책임은 호스트(100)에 의해 수행되고, 데이터 계층(250)에 대한 책임은 전산 스토리지 장치(200)에 의해 수행될 수 있다. 개시된 실시예는 또한 호스트(100)에 저장된 호스트 캐시(170) 및 연산 스토리지 장치(200)의 CMA(230)에 저장된 커널 캐시(270)를 포함하는 미러 캐시(7)의 구조적 이점을 제공한다.
본 발명의 실시예가 본 명세서에 기재된 실시예를 참조하여 구체적으로 도시되고 설명되었지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 다음의 특허청구범위에 기술된 본 발명의 사상 및 범위를 벗어나지 않는 범위 내에서 형태 및 세부사항의 다양한 변경이 이루어질 수 있으며, 그 기능적 등가물이 포함됨을 이해할 것이다.

Claims (10)

  1. 미러 캐시의 호스트 캐시 부분을 포함하는 호스트, 상기 호스트 캐시 부분은 상기 미러 캐시의 커널 캐시 부분에 저장된 데이터 노드의 위치를 나타내는 메타데이터를 저장하기 위한 것이고; 및
    공통 메모리 영역에 위치하고 상기 커널 캐시 부분을 포함하는 스토리지 장치를 포함하는 데이터 스토리지 시스템.
  2. 제1 항에 있어서,
    상기 호스트 상의 상기 호스트에 의해 처리되도록 구성된 검색 계층; 및
    상기 스토리지 장치 상의 상기 스토리지 장치에 의해 처리되도록 구성된 데이터 계층을 더 포함하는 데이터 스토리지 시스템.
  3. 제2 항에 있어서,
    상기 검색 계층은 트리 구조를 포함하고,
    상기 데이터 계층은 상기 트리 구조에 대응하는 리프 노드들의 이중 연결 리스트 내의 리프 노드에 대응하는 상기 데이터 노드를 포함하는 데이터 스토리지 시스템
  4. 제1 항에 있어서,
    상기 공통 메모리 영역에 연결된 영구 메모리; 및
    상기 공통 메모리 영역에 연결된 프로세싱 회로를 더 포함하는 데이터 스토리지 시스템.
  5. 제4 항에 있어서,
    상기 프로세싱 회로는 상기 데이터 노드에 대해 데이터 동작을 수행하고, 상기 데이터 노드를 업데이트된 데이터 노드로서 상기 커널 캐시 부분에 쓰도록 구성된 데이터 스토리지 시스템.
  6. 제5 항에 있어서,
    상기 호스트는:
    상기 업데이트된 데이터 노드가 상기 공통 메모리 영역에 채워지는지 판단하고, 상기 공통 메모리 영역에서 상기 영구 메모리로 피어 투 피어 쓰기를 유발하도록 구성된 데이터 스토리지 시스템.
  7. 제1 항에 있어서,
    상기 호스트는:
    상기 데이터 노드의 가용 공간의 양이 데이터 노드에 대응하는 데이터 액세스 요청을 수용하기 위한 공간의 양보다 작은지 결정하고; 및
    상기 데이터 노드에 확장 노드를 할당하도록 구성되는 데이터 스토리지 시스템.
  8. 제7 항에 있어서,
    상기 스토리지 장치는 상기 확장 노드를 가리키도록 상기 데이터 노드의 메타데이터를 업데이트하도록 구성된 프로세싱 회로를 더 포함하고,
    상기 데이터 노드의 상기 메타데이터는 제1 버전 번호를 나타내고,
    상기 확장 노드의 메타데이터는 상기 제1 버전 번호를 나타내는 데이터 스토리지 시스템.
  9. 제8 항에 있어서,
    상기 프로세싱 회로는:
    상기 확장 노드를 업데이트하고;
    상기 데이터 노드를 업데이트된 데이터 노드로서 식별하기 위해 제2 버전 번호를 나타내도록 상기 데이터 노드의 메타데이터를 업데이트하고;
    상기 확장 노드를 업데이트된 확장 노드로서 식별하기 위해 상기 제2 버전 번호를 나타내도록 상기 확장 노드의 메타데이터를 업데이트하고; 및
    상기 업데이트된 확장 노드를 가리키도록 상기 업데이트된 데이터 노드의 상기 메타데이터를 업데이트하도록 구성된 데이터 스토리지 시스템.
  10. 제9 항에 있어서,
    상기 프로세싱 회로는:
    상기 업데이트된 확장 노드를 상기 스토리지 장치의 스토리지에 아웃 플레이스 방식으로 쓰고; 및
    상기 업데이트된 데이터 노드를 인플레이스 방식으로 상기 스토리지에 쓰도록 구성된 데이터 스토리지 시스템.
KR1020230023140A 2022-04-18 2023-02-21 연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법 KR20230148736A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263332161P 2022-04-18 2022-04-18
US63/332,161 2022-04-18
US17/839,439 US20230333983A1 (en) 2022-04-18 2022-06-13 Systems and methods for a cross-layer key-value store architecture with a computational storage device
US17/839,439 2022-06-13

Publications (1)

Publication Number Publication Date
KR20230148736A true KR20230148736A (ko) 2023-10-25

Family

ID=85778966

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230023140A KR20230148736A (ko) 2022-04-18 2023-02-21 연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법

Country Status (3)

Country Link
US (1) US20230333983A1 (ko)
EP (1) EP4266182A1 (ko)
KR (1) KR20230148736A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010293A1 (en) * 2004-07-09 2006-01-12 Schnapp Michael G Cache for file system used in storage system
US7937419B2 (en) * 2008-06-26 2011-05-03 Tatu Ylonen Oy Garbage collection via multiobjects
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9116812B2 (en) * 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
EP3040845A1 (en) * 2015-01-05 2016-07-06 Iguazio Systems Ltd. Service oriented data management and architecture
US11237814B2 (en) * 2017-08-17 2022-02-01 Oracle International Corporation System and method for supporting custom hooks during patching in an application server environment
US11263149B2 (en) * 2019-02-26 2022-03-01 Marvell Asia Pte, Ltd. Cache management of logical-physical translation metadata
CN114625713A (zh) * 2020-12-10 2022-06-14 华为技术有限公司 一种存储系统中元数据管理方法、装置及存储系统

Also Published As

Publication number Publication date
US20230333983A1 (en) 2023-10-19
EP4266182A1 (en) 2023-10-25

Similar Documents

Publication Publication Date Title
US11663187B2 (en) Key-value store system
Chandramouli et al. Faster: A concurrent key-value store with in-place updates
US10176057B2 (en) Multi-lock caches
US8504791B2 (en) Hierarchical immutable content-addressable memory coprocessor
US8407428B2 (en) Structured memory coprocessor
EP3207471B1 (en) High performance transactions in database management systems
US9977760B1 (en) Accessing data on distributed storage systems
US9164702B1 (en) Single-sided distributed cache system
US8458129B2 (en) Methods and systems for real-time continuous updates
CN106716412B (zh) 用于支持分布式计算环境中的零拷贝二进制基数树的系统和方法
US20090254774A1 (en) Methods and systems for run-time scheduling database operations that are executed in hardware
US20120072656A1 (en) Multi-tier caching
US9229869B1 (en) Multi-lock caches
US10055349B2 (en) Cache coherence protocol
US11611617B2 (en) Distributed data store with persistent memory
US11449430B2 (en) Key-value store architecture for key-value devices
US10831663B2 (en) Tracking transactions using extended memory features
Li et al. Phast: Hierarchical concurrent log-free skip list for persistent memory
US20210397581A1 (en) Sparse file system implemented with multiple cloud services
KR20230148736A (ko) 연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법
EP4261672A1 (en) Systems and methods for a cross-layer key-value store with a computational storage device
CN113966504A (zh) 使用文件系统中的缓存表的数据操作
CN116909473A (zh) 具有计算存储设备的跨层键值存储架构的系统和方法
CN116910019A (zh) 用于具有计算存储设备的跨层键-值存储库的系统和方法
Zou et al. SPHT: A scalable and high‐performance hashing scheme for persistent memory