KR20180067729A - 자율 메모리 검색을 위한 방법 및 시스템 - Google Patents

자율 메모리 검색을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20180067729A
KR20180067729A KR1020187016637A KR20187016637A KR20180067729A KR 20180067729 A KR20180067729 A KR 20180067729A KR 1020187016637 A KR1020187016637 A KR 1020187016637A KR 20187016637 A KR20187016637 A KR 20187016637A KR 20180067729 A KR20180067729 A KR 20180067729A
Authority
KR
South Korea
Prior art keywords
search
memory
search results
indication
write command
Prior art date
Application number
KR1020187016637A
Other languages
English (en)
Other versions
KR101927677B1 (ko
Inventor
케네스 쿠레위즈
신 에이러트
홍유 왕
아민 아켈
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20180067729A publication Critical patent/KR20180067729A/ko
Application granted granted Critical
Publication of KR101927677B1 publication Critical patent/KR101927677B1/ko

Links

Images

Classifications

    • G06F17/30519
    • 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/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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
    • G06F17/30218
    • G06F17/30554

Landscapes

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

Abstract

방법과 시스템은 메모리 시스템의 데이터베이스를 검색하기 위한 복수의 검색 요구를 수신하도록 동작한다. 검색 요구는 FIFO 큐에 저장될 수 있으며, 검색이 각 검색 요구에 대해 후속적으로 생성될 수 있다. 결과적인 복수의 검색이 데이터베이스 상에서 실질적으로 병렬로 실행될 수 있다. 각각의 별개 검색이 완료되거나 각각의 별개의 검색이 검색 결과를 생성했을 때 각 표시가 요구 호스트로 송신된다.

Description

자율 메모리 검색을 위한 방법 및 시스템{METHODS AND SYSTEMS FOR AUTONOMOUS MEMORY SEARCHING}
우선권 출원
본 출원은 그 전체가 참조로써 본 명세서에 통합되고, 2013년 8월 13일자로 출원된 미국 출원 번호 제13/965,739호의 우선권 이익을 주장한다.
메모리 디바이스는 통상적으로 컴퓨터의 내부, 반도체, 집적회로 또는 다른 전자 디바이스로서 제공된다. 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 비휘발성(예를 들면, 플래시) 메모리를 포함한 많은 다른 종류의 메모리가 있다.
다수의 비휘발성 메모리 디바이스는 컴퓨터 시스템에서 기계적으로 동작되는 하드 디스크 드라이브를 에뮬레이팅할 수 있는 솔리드 스테이트 드라이브(SSD)를 만들기 위해 조합될 수 있다. 솔리드 스테이트 드라이브는 가동 부품의 부족으로 인해 기계적 하드 드라이브보다 더 높은 신뢰성으로 더 빠른 액세스를 제공할 수 있다.
컴퓨터 시스템의 성능 향상에 적어도 일부 기인하여, 메모리 및 솔리드 스테이트 드라이브 제조사는 컴퓨터 시스템의 성능 향상과 보조를 맞추려고 그 메모리의 성능을 향상시키라는 꾸준한 압력을 받고 있다. 메모리 제조사가 메모리 성능을 향상시키기 위한 하나의 방법은 메모리 판독/기입 시간을 감소시키는 것이다. 그러나, 메모리 기술의 진보는, 그 노력을 방해할 수 있다. 메모리 성능을 향상시키는 다른 방법은 메모리와 SSD의 검색을 보다 효율적으로 만드는 것일 수 있다.
도 1은 데이터베이스 저장 시스템의 실시예의 블록도를 나타낸다.
도 2는 도 1의 실시예에 따른 메모리 시스템의 실시예의 블록도를 나타낸다.
도 3a 및 도 3b는 데이터베이스 저장 포맷의 실시예의 도면을 나타낸다.
도 4a 및 4b는 호스트와 메모리 사이의 통신의 실시예의 프로토콜 흐름도를 나타낸다.
도 5는 자율 메모리 검색을 위한 방법의 실시예의 기능 블록도를 나타낸다.
도 6a 및 6b는 자율 메모리 검색을 위한 방법의 실시예의 흐름도를 나타낸다.
도 7은 복수의 메모리 시스템을 갖는 시스템의 블록도를 나타낸다.
이하의 상세한 설명에서는, 본 명세서의 일부를 형성하고 특정 실시예가 예시의 방식으로 도시되는 첨부 도면에 대해 참조한다. 도면에서, 동일 번호는 몇몇 도면에 걸쳐 실질적으로 유사한 요소를 설명한다. 다른 실시예가 이용될 수 있으며, 구조적, 논리적 및 전기적 변경이 본 개시의 범위를 벗어나지 않고도 이루어질 수 있다. 따라서, 이하의 상세한 설명은 한정적인 의미로 해석되어서는 안된다.
그 후의 참조는 단지 예시의 목적으로 솔리드 스테이트 드라이브(SSD)에 대해 이루어진다. 자율 메모리 검색 동작은 본 명세서에 개시된 바와 같이, 임의의 종류의 메모리 디바이스 또는 반도체 메모리, 광 메모리 또는 자기 메모리를 포함하는 메모리 디바이스의 그룹에 대해 동등하고 양호하게 기능할 수 있다. 따라서, 본 개시는 SSD의 검색으로 한정되는 것은 아니다.
그 후의 참조는 또한 구조화 질의어(SQL) 및 “MySQL”이라는 용어에 대해 이루어진다. SQL은 본 기술 분야에 알려져 있듯이, 관계형 데이터베이스를 관리하기 위해 설계된 특수 목적 프로그래밍 언어를 가리킨다. "MySQL"이라는 용어는 다수의 데이터베이스에 다중 사용자 액세스를 제공하기 위해 서버로서 실행되는 상표가 있는 관계형 데이터베이스 관리 시스템을 가리킨다. MySQLTM 데이터베이스 시스템은 종종 구조화 데이터베이스로서 특징지울 수 있다. 따라서, 본 명세서에서 SQL 및 MySQLTM 데이터베이스에 대한 참조는 단지 예시를 위한 것이다. 본 명세서에 개시된 자율 메모리 검색 방법의 실시예는 구조화 및 비구조화 데이터의 양쪽 모두를 저장하는 다른 유형의 데이터베이스에 동등하고 양호하게 기능할 수 있다. 예를 들면, 임의의 키값 저장 데이터베이스(예를 들면, NoSQL 데이터베이스)가 자율 메모리 검색 방법을 사용할 수 있다.
본 명세서에서 사용되는 구조화 데이터는 이산 레코드(예를 들면, 요소)로 조직화된 데이터일 수 있다. 레코드는 1개 이상의 필드로 이루어질 수 있다. 구조화 데이터의 예는 이름, 주소 및 식별 정보로 분할되는 레코드일 수도 있다.
본 명세서에서 사용되는 비구조화 데이터는 이산 레코드(예를 들면, 요소)로 조직화되지 않은 데이터일 수 있다. 비구조화 데이터의 예는 책, 디지털 화상 또는 인간 음성의 디지털 표현으로부터의 텍스트일 수도 있다.
도 1은 호스트(130)와 메모리 시스템(예를 들면, SSD)(108)을 포함할 수 있는 데이터베이스 시스템의 실시예의 블록도를 나타낸다. 호스트(130)는 컴퓨터 시스템 또는 CPU일 수도 있다. 메모리 시스템(예를 들면, SSD)(108)은 단일 비휘발성 메모리 디바이스 또는 단일 유닛(예를 들면, SSD)으로 결합된 복수의 비휘발성 메모리 디바이스일 수 있다.
호스트(130)는 데이터베이스 시스템 내의 다른 데이터베이스 기능을 제공할 수 있는 복수의 클라이언트(예를 들면, 클라이언트 소프트웨어, 프로그램)(100)를 포함할 수 있다. 예를 들면, 이러한 클라이언트(100)는 데이터베이스 백업 루틴(예를 들면, mysqldump 루틴), 테이블의 유지 루틴(예를 들면, mysqlcheck 루틴), 커맨드 라인 인터페이스 루틴(예를 들면, mysqlimport 루틴) 및/또는 다른 데이터베이스 기능을 포함할 수 있다.
클라이언트(100)는 서버(102)와 통신한다. 서버(102)는 mysqld를(MySQL 서버) 또는 소정의 다른 유형의 서버일 수 있다. 서버(102)는 클라이언트(100)와 호스트(예를 들면, 중앙 처리 장치, 컴퓨터, 컨트롤러)를 위한 메모리 시스템(108)에 저장된 데이터베이스에의 액세스를 관리하는 데이터베이스 시스템의 메인 프로그램일 수 있다.
저장 엔진(104)은 서버(102)와 호스트(130)의 운영 체제(OS) 파일 시스템 프로토콜(106) 사이에서 통신한다. 저장 엔진(104)은 호스트(130)의 OS의 파일 시스템(106)을 통해 메모리(108)에 검색 기준과 검색 키를 송신하고, 호스트(130)의 OS 파일 시스템(106)을 통해 메모리 시스템(108)으로부터 검색에 대한 응답을 다시 수신한다. 검색 기준과 검색 키에 대해 후술한다.
통상적인 종래 기술의 저장 엔진은 데이터베이스의 통상적인 검색 중에 메모리 내의 데이터베이스로부터의 대량의 미가공 데이터를 통신할 수 있다. 예를 들어, 테이블 내의 수천 레코드를 포함하는 데이터베이스의 통상적인 종래 기술의 검색에서, 거의 또는 모든 레코드는 CPU에 의한 프로세싱을 위해 메모리로부터 CPU의 메인 메모리로 판독된다.
자율 메모리 검색을 위한 방법을 위한 저장 엔진(104)은 메모리 시스템(108)에 검색 기준과 검색 키를 전달할 수 있으며 검색 기준과 검색 키를 사용하여 데이터베이스 검색으로부터 도출된 검색 결과만을 다시 수신할 수 있다. 따라서, 저장 엔진(104)은 대량의 미가공 데이터를 파싱할 필요가 없었으며, CPU는 미가공 데이터에 대한 검색 기준과 검색 키의 비교를 수행하는 귀중한 시간을 사용할 필요가 없을 수도 있다. 이는 자율 메모리 검색을 위한 방법을 사용하여 시스템의 성능 향상으로 귀결될 수 있다. 이는 또한 전체적인 전력 절약, 비용 감소 및 폼 팩터의 이점으로 귀결될 수 있다.
메모리 시스템(108)은 검색되는 데이터베이스를 저장할 수 있는 임의의 유형의 메모리를 포함할 수 있다. 도 2는 메모리 시스템(108)(예를 들면, SSD)에 대한 실시예의 블록도를 나타낸다. 예를 들면, 복수의 비휘발성 메모리 디바이스(예를 들면, 플래시 메모리)가 결합되어 메모리 블록(203)을 형성할 수 있다. 메모리 시스템(108)(예를 들면, SSD)은 메모리 시스템(108)(예를 들면, SSD)의 동작을 제어하기 위해 메모리 블록(203)에 연결된 컨트롤러(예를 들면, 프로세서)(201)를 가질 수 있다. 컨트롤러(201)는 도 4 내지 6에 설명된 프로토콜 및 방법에 따라 저장 엔진(104)의 활동을 지시하기 위한 모듈(210)(예를 들면, 펌웨어 또는 소프트웨어)을 포함할 수 있다.
도 3a는 데이터베이스 저장 포맷의 실시예의 도면을 나타낸다. 나타낸 실시예에서, 데이터베이스는 표 포맷(300)으로 저장될 수 있다. 나타낸 테이블(300)은 헤더(301)와 'n'개의 레코드(예를 들면, 레코드(0) - 레코드(n-1))를 포함할 수 있다. 각 레코드는 테이블(300)의 다음 레코드를 포인팅할 수 있어, 테이블(300)이 후속 레코드로 갱신될 때, 이전 레코드는 후속 레코드를 포인팅하도록 갱신될 수 있다.
헤더(301)는 테이블(300)을 기술하는 필드를 포함할 수 있다. 예를 들면, 헤더(301)는 테이블(300) 내의 레코드의 수, 각 레코드의 길이, 레코드 당 필드의 수 및 각 필드의 길이를 포함할 수 있다. 다른 실시예는 헤더(301) 내에 추가의 기술(description) 데이터를 포함할 수 있다.
각 레코드(예를 들면, 레코드(0) - 레코드(n-1)(303)는 검색되는 데이터의 복수의 필드(예를 들면, 필드(0) - 필드(m-1))를 포함할 수 있다. 각 레코드(303)는 또한 다음 레코드에 대한 포인터 필드(305)를 포함할 수 있다. 이러한 포인터 필드(305)는 다음 레코드를 포함하는 메모리 내의 다른 위치의 논리 주소일 수도 있다. 따라서, 레코드가 메모리에 순차적으로 위치될 필요가 없다.
각 필드(예를 들면, 필드(0) - 필드(m-1))는 필드 길이와 필드 데이터를 저장하는 요소(307)를 포함할 수 있다. 필드 데이터는 검색되는 실제 데이터(309)를 포함할 수 있다.
도 3b는 데이터베이스 저장 포맷의 다른 실시예를 나타낸다. 이 실시예는 또한 표 포맷(310)일 수 있다. 하지만, 도 3a 및 3b의 포맷은 단지 예시를 위한 것이다. 본 실시예는, 임의의 하나의 포맷, 표 또는 다른 것으로 한정되지 않는다.
테이블(310)은 테이블 헤더(312)와 'n'개의 레코드 그룹(예를 들면, 레코드 그룹(0) - 레코드 그룹(n-1))을 포함한다. 각 레코드 그룹은 테이블(300)의 다음 레코드 그룹을 포인팅할 수 있어, 테이블(310)이 후속 레코드 그룹으로 갱신될 때 이전 레코드 그룹은 후속 레코드 그룹을 포인팅하도록 갱신될 수 있다.
헤더(312)는 테이블(310)을 기술하는 필드를 포함할 수 있다. 예를 들어, 헤더(312)는 레코드 그룹의 수, 레코드 그룹 길이, 레코드 수, 레코드 당 필드 수, 필드 길이, 제1 레코드 그룹의 주소(예를 들면, 논리 주소, 물리 주소) 및/또는 테이블의 버전 번호를 포함할 수 있다.
각 레코드 그룹(예를 들면, 레코드 그룹(0) - 레코드 그룹(n-1))(314)은 'm'개의 레코드(예를 들면, 레코드(0) - 레코드(m-1))를 포함할 수 있다. 각 레코드 그룹(314)은 다음 레코드 그룹(314)에 대한 포인터(320)와 레코드(316)에 추가하여 각 레코드 그룹(314)의 레코드(321)의 번호에 대한 필드를 포함할 수 있다. 포인터(320)는 다음 레코드를 포함하는 메모리의 다른 위치의 논리 주소일 수 있다. 따라서, 레코드 그룹이 메모리에 순차적으로 위치될 필요가 없다.
각 레코드(316)는 데이터의 'k'개의 필드(예를 들면, 필드(0) - 필드(k-1))를 포함할 수 있다. 각 필드(318)는 검색되는 실제 데이터를 포함할 수 있다.
도 4a 및 4b는 호스트와 메모리 시스템 사이의 통신을 위한 2개의 실시예의 프로토콜 흐름도를 나타낸다. 다른 실시예는 대안적인 방법을 사용할 수 있으므로, 이 실시예는 단지 예시를 위한 것이다.
도 1을 참조하여 상술한 바와 같이, 도 4a는 자율 메모리 검색을 위한 방법 중에 호스트(예를 들면, CPU, 컴퓨터)(130)와 메모리 시스템(108) 사이의 통신을 위한 실시예의 프로토콜 흐름도를 나타낸다. 나타낸 실시예에서, 3개의 커맨드가 검색을 수행하기 위해 저장 엔진(104)에 의해 발행될 수 있다. 예를 들면, 2개 이상의 판독 커맨드에 선행하는 기입 커맨드(예를 들면, 소형 컴퓨터 시스템 인터페이스(SCSI) 기입 커맨드)가 메모리 시스템(108)에 검색 키와 검색 기준을 전송하는 것뿐만 아니라 데이터베이스 검색의 결과를 검색하는 것 모두에 사용될 수 있다.
메모리 시스템(108)의 데이터베이스의 검색은 1개 이상의 검색 키(예를 들면, 패턴), 검색 기준(예를 들면, 비교 기준) 및 검색되는 데이터셋(예를 들면, 데이터베이스)에 의해 규정될 수 있다. 검색은 전체적으로 데이터셋 또는 데이터의 일련의 서브셋과 검색 키를 비교함으로써 수행될 수 있다. 검색 기준에 의해 자격이 주어지는 검색 키의 비교가 데이터셋의 적어도 일부와 매칭될 때 매치가 이루어질 수 있다. 검색의 결과는 매치가 없거나, 하나의 매치이거나 복수의 매치일 수 있다.
검색 기준은 "와 동등하다", "보다 작다", "보다 크다", "와 동등하지 않다", "보다 작거나 동등하다" 또는 "보다 크거나 동등하다"와 같은 연산자를 포함할 수 있다. 또한, "AND", "OR", "NOT" 및 임의의 논리 연산자의 조합과 같은 임의의 논리 연산자는 데이터베이스의 검색에서 단독으로 사용될 수 있거나 다른 연산자와 조합하여 사용될 수 있다.
검색은 메모리 시스템(108)으로 초기 커맨드(예를 들면, SCSI 기입 커맨드)(401)를 발행하는 호스트(130)(예를 들면, 커맨드는 도 1의 저장 엔진(104)과 같은 저장 엔진에 의해 발행될 수 있음)에 의해 개시될 수 있다. 초기 커맨드(401)는 검색 기준과 검색 키의 표시를 포함할 수 있다.
초기 커맨드(예를 들면, SCSI 기입 커맨드)의 검색 기준과 검색 키의 표시는 커맨드에 의해 암시되거나 이와 연관된 버퍼가 검색 기준 및 검색 키를 포함한다는 것을 나타내는 커맨드의 특정 필드의 비트셋일 수 있다. 예를 들어, SCSI 기입 커맨드에서, 진입하는 논리 블록 주소(LBA)의 상위 비트는 버퍼 내의 큐잉된 검색 기준 및 검색 키를 나타내도록 설정될 수 있다.
메모리 시스템(108)은 초기 커맨드(401)를 수신하여 버퍼의 큐잉된 검색 기준과 검색 키의 표시를 판독한다. 그 후 메모리 시스템(108)은 확인 응답(acknowledgement)(402)으로 호스트(130)에 다시 응답할 수 있다. 호스트(130)는 단지 메모리 시스템(108)이 초기 커맨드(401)를 수신했다고 상정할 수 있으므로 확인 응답은 선택적인 것으로 고려될 수 있다.
그 후, 호스트(130)(예를 들면, 저장 엔진)는 검색 결과를 수신하기 위한 준비를 나타내기 위해 메모리 시스템(108)에 제2 커맨드(예를 들면, SCSI 판독)(403)를 발행할 수 있다. 메모리 시스템(108)이 검색을 완료했거나 검색 결과에 대해 할당된 내부 버퍼를 채울 때까지 제2 커맨드(403)는 메모리 시스템(108)으로부터 응답 없이 미결정으로 남아있을 수 있다. 일단 버퍼가 검색 결과로 채워졌거나 검색이 데이터베이스의 끝에 도달하면, 메모리 시스템(108)은 검색이 완료되었음을 나타내는 응답(예를 들어, 감지 데이터)(405)을 호스트(130)에 발행할 수 있다. 만일 있거나, 검색이 완료되었거나 버퍼가 단지 가득 차서 버퍼를 비우기 위해 판독될 필요가 있으면 이러한 응답(예를 들어, 감지 데이터)(405)은 검색으로부터 발견된 결과의 수를 나타낼 수 있다.
메모리 시스템(108)으로부터의 응답(405)이 검색 결과의 논-제로 수를 나타내면, 호스트(130)는 메모리 시스템 버퍼로부터 결과를 검색하기 위해 이러한 표시에 응답하여 다른 커맨드(예를 들어, SCSI 판독)(407)를 발행할 수 있다. 그 후, 메모리 시스템(108)은 버퍼로부터의 검색 결과를 포함할 수 있는 다른 응답(예를 들어, 감지 데이터)(409)을 발행할 수 있다.
호스트(130)로부터의 제1 판독 커맨드(403)의 결과가 검색이 아직 완료되지 않았음을 나타내고 있는 경우, 호스트(130)는 이 판독 스텝(403)으로 돌아와서, 검색이 메모리 시스템(108)으로부터 완료된 것으로 표시될 때까지 프로세스를 반복할 수 있다.
도 4b는 도 1을 참조하여 상술한 바와 같이, 자율 메모리 검색을 위한 방법 중에 호스트(예를 들면, CPU, 컴퓨터)(130)와 메모리 시스템(108) 사이의 통신의 다른 실시예의 프로토콜 흐름도를 나타낸다. 나타내 실시예에서, 3개의 커맨드가 검색을 수행하기 위해 저장 엔진(104)에 의해 발행될 수 있다. 예를 들면, 2개 이상의 판독 커맨드에 선행하는 기입 커맨드(예를 들면, 소형 컴퓨터 시스템 인터페이스(SCSI) 기입 커맨드)가 메모리 시스템(108)에 검색 키와 검색 기준을 전송하는 것뿐만 아니라, 데이터베이스 검색의 결과를 검색하는 것 모두에 사용될 수 있다.
검색은 메모리 시스템(108)에 초기 커맨드(예를 들면, SCSI 기입 커맨드)(410)를 발행하는 호스트(130)(예를 들면, 커맨드는 도 1의 저장 엔진(104)과 같은 저장 엔진에 의해 발행될 수 있음)에 의해 개시될 수 있다. 초기 커맨드(410)는 검색 기준과 검색 키의 표시를 포함할 수 있다.
초기 커맨드(예를 들면, SCSI 기입 커맨드)의 검색 기준과 검색 키의 표시는 커맨드에 의해 암시되거나 이와 연관된 버퍼가 검색 기준 및 검색 키를 포함한다는 것을 나타내는 커맨드의 특정 필드의 비트셋일 수 있다. 예를 들어, SCSI 기입 커맨드에서, 진입하는 논리 블록 주소(LBA)의 상위 비트는 버퍼 내의 큐잉된 검색 기준 및 검색 키를 나타내도록 설정될 수 있다.
메모리 시스템(108)은 초기 커맨드(410)를 수신하여 버퍼의 큐잉된 검색 기준과 검색 키의 표시를 판독한다. 그 후 메모리 시스템(108)은 확인 응답(412)으로 호스트(130)에 다시 응답할 수 있다. 호스트(130)는 단지 메모리 시스템(108)이 초기 커맨드(410)를 수신했다고 상정할 수 있으므로 확인 응답은 선택적인 것으로 고려될 수 있다.
메모리 시스템(108)이 검색을 완료했거나 검색 결과에 대해 할당된 내부 버퍼를 채울 때까지 초기 커맨드(410)는 메모리 시스템(108)으로부터 응답 없이 미결정으로 남아있을 수 있다. 일단 버퍼가 검색 결과로 채워졌거나 검색이 데이터베이스의 끝에 도달하면, 검색 요청에 응답하여 메모리 시스템(108)은 검색이 완료되었거나 검색 결과 버퍼가 가득 찼다는 것을 나타내는 응답(예를 들어, 감지 데이터)(414)을 호스트(130)에 발행할 수 있다. 만일 있거나, 검색이 완료되었거나 버퍼가 단지 가득 차서 버퍼를 비우기 위해 판독될 필요가 있으면 이러한 응답(예를 들어, 감지 데이터)(414)은 검색으로부터 발견된 결과의 수를 나타낼 수 있다.
메모리 시스템(108)은 논제로 양의 검색 결과를 상정하는 실제 검색 결과(416)를 갖는 응답(414)(예를 들어, 감지 데이터)으로 후속할 수 있다. 호스트(130)는 커맨드(418)(예를 들어, SCSI 판독 커맨드)로 검색 결과의 올바른 수신을 확인 응답할 수 있다.
메모리 시스템(108)은 검색과 연관된 버퍼를 방폐(relinquish)할 수 있다. 이는 메모리 시스템(108)으로부터의 응답(예를 들면, 감지 데이터)(420)에 의해 호스트(108)에 나타내어질 수 있다.
도 4a 및 4b에 나타내어진 프로토콜 흐름도 중에서, 메모리 시스템(108)은 여전히 계속 통상적으로 동작할 수 있다. 이와 같이, 메모리 시스템(108)은 여전히 호스트(130)로부터의 통상적인 판독 및 기입 커맨드에 응답할 수 있다.
도 5는 자율 메모리 검색을 위한 방법의 실시예의 기능 블록도를 나타낸다. 이 기능 블록도의 실행은 메모리 시스템(108)의 컨트롤러(201)에 의해 수행될 수 있다.
커맨드(예를 들면, 검색 요구, 판독)는 호스트로부터 메모리 버스(예를 들면, SATA(Serial Advanced Technology Attachment))에서 수신할 수 있다. 수신된 커맨드는 커맨드의 유형을 결정하기 위해 파스 블록(501)에 의해 검사될 수 있다.
수신된 커맨드가 검색 요구인 경우(예를 들면, 도 4의 SCSI 기입 커맨드(401)), 검색 프로세싱 스레드(512)에 의한 사용을 위해 요구 선입선출(FIFO) 버퍼(503)에서 리큐잉될 수 있다. 버퍼(503)는 검색 키와 검색 기준을 저장할 수 있다. 수신된 커맨드가 2개의 후속의 커맨드(예를 들면, 도 4의 SCSI 판독(403, 407)) 중 하나인 것으로 파스 블록(501)에 의해 결정되는 경우, 이러한 커맨드의 표시는 2개의 미결정 요구(Outstanding Request) 버퍼(505, 506) 중 하나에 저장될 수 있다.
계속(Continue) 버퍼(505)는, 버퍼가 가득 차거나 검색이 완료되었다면 메모리 시스템에 응답하라고 요구하는 제2 커맨드(예를 들어, 도 4의 SCSI 판독(403))의 표시를 저장할 수 있다. 이러한 버퍼(505)는 응답 정보 전송(Send Response Info) 블록(507)에 연결되어, 검색이 수행되었다는 것을 나타내는(예를 들어, 응답(Response) FIFO(510, 511)가 가득 참, 전체 데이터베이스가 검색됨) 데이터를 응답 정보(Response Info) FIFO(508)가 포함할 때, 응답 정보 전송(Send Response Info) 블록(507)은 버퍼가 가득 차거나 전체 데이터베이스가 검색되었다는 것을 나타내는 정보 응답(예를 들어, 도 4의 응답(405))을 다시 호스트로 패키징할 수 있다.
응답 획득(Get-Response) 버퍼(506)는 메모리 시스템으로부터 검색 결과를 요구하는 제3 커맨드(예를 들어, 도 4의 SCSI 판독(407))의 표시를 저장할 수 있다. 이러한 버퍼(508)는 응답 전송(Send Response) 블록(509)에 연결되어, 제2 커맨드(예를 들어, 도 4의 SCSI 판독(407))가 호스트로부터 수신될 때, 응답 전송(Send Response) 블록(509)은 응답(Response) FIFO 버퍼(510, 511)에 저장된 검색 결과를 패키징할 수 있고, 메모리 버스를 통해 데이터를 호스트로 전송할 수 있다. 이러한 버퍼(510, 511)가 비워지면, 검색이 여전히 계속 중인 경우에 스레드(512)가 버퍼(510, 511)를 계속 채울 수 있다는 것을 검색 프로세싱 스레드(512)에 나타내는 표시가 응답 버퍼 프리 리스트(Response Buffer Free List)(513)에 저장될 수 있다.
검색 프로세싱 스레드(512)는 호스트로부터 수신된 별개의 검색을 각각 포함한다. 복수의 상이한 검색 프로세싱 스레드(512)를 사용함으로써, 복수의 별개의 검색이 실질적으로 동시에(예를 들어, 실질적으로 병렬로, 부분적으로 또는 완전하게 중복하여) 수행될 수 있다.
개시 커맨드(예를 들면, 도 4의 SCSI 기입(401))가 호스트로부터 수신되면, 검색 기준과 검색 키가 검색 프로세싱 스레드(512) 중 하나로 전달될 수 있다. 이러한 특정 검색 프로세싱 스레드(512)는 그 후 검색 기준에 따라 저장된 레코드와 검색 키를 비교하기 위해 데이터베이스 레코드 테이블(예를 들어, 도 3)에 액세스할 수 있다. 각각의 검색 프로세싱 스레드(512)는 상이한 검색 기준 및 검색 키를 갖는 별개의 검색을 실행하고 있을 수 있다.
검색 프로세싱 스레드(512) 중 하나가 검색으로부터의 결과로 버퍼(510, 511)를 채웠거나 전체 데이터베이스를 검색했으면(예를 들면, 검색 완료), 검색이 완료되었다는 표시가 응답 정보(Response Info) FIFO(508)에 저장될 수 있다. 이러한 표시는 버퍼(510, 511)가 단지 가득 찼거나 검색이 완료되었다는 것에 대한 정보에 추가하여 표시가 가리키는 특정 검색에 대한 참조를 포함할 수 있다. 이러한 표시는 상술한 바와 같이, 그 후 응답 정보 전송(Send Response Info) 블록(507)에 의해 패키징될 수 있고 호스트에 전송될 수 있다.
도 5의 기능 블록은 메모리 시스템(108)의 일부일 수 있고 메모리 시스템의 컨트롤러(201)에 의해 실행될 수 있다. 기능 블록은 하드웨어와 소프트웨어/펌웨어 모듈의 조합일 수 있다. 따라서, 복수의 검색 프로세싱 스레드(512)가 복수의 병렬 검색을 가능하게 할 수 있을 뿐만 아니라, 호스트(130)에 대한 작업 부하를 경감할 수 있는 이러한 검색을 달성하기 위한 프로세싱이 메모리 시스템(108)에 의해 수행될 수 있다.
도 6a는 자율 메모리 검색을 위한 방법의 실시예의 흐름도를 나타낸다. 호스트는 검색을 개시하기 위해 메모리 시스템에 커맨드(예를 들어, SCSI 기입 커맨드, 검색 요구)를 송신할 수 있다(601). 이러한 커맨드는 검색 키와 검색 기준에 대한 표시를 포함할 수 있다. 호스트는, 검색 요구가 수신되었다는 확인 응답을 메모리 시스템으로부터 수신할 수 있다(603).
그 후, 호스트는, 호스트가 검색 요구로부터의 임의의 결과를 수신할 준비가 되었다는 것을 메모리 시스템에 표시하는 커맨드(예를 들어, SCSI 판독 커맨드)를 메모리 시스템에 전송할 수 있다(605). 검색이 완료되었거나(예를 들어, 전체 데이터베이스가 검색되었음) 검색 결과 버퍼가 가득 찼다는 것을 표시할 수 있는 응답이 메모리 시스템으로부터 수신될 수 있다(607).
호스트는 그 후 메모리 시스템이 검색 결과로 응답할 수 있는 커맨드(예를 들어, SCSI 판독 커맨드)를 이러한 검색 결과를 검색하기 위해 메모리 시스템에 전송할 수 있다(609). 검색이 완료되지 않은 것으로 메모리 시스템이 표시하면(611), 방법은, 호스트가 검색 결과를 수신할 그 준비를 표시하는 지점으로부터 반복한다(605). 검색이 완료되었으면, 방법이 종료된다(615).
도 6b는 자율 메모리 검색을 위한 방법의 다른 실시예의 흐름도를 나타낸다. 선택적인 스텝에서, 메모리는 검색 요구 전에 구성되어 있을 수 있다. 예를 들어, 전송 사이즈 구성(예를 들어, 요구자/개시자에게 다시 전송하기 전의 전체 응답의 사이즈)이 설정될 수 있고, 최대/최소 레코드 및 페이지 사이즈(예를 들면, 저장된 데이터 구조에 대한 사이즈와 메모리의 페이지의 사이즈)가 설정될 수 있고, 물리적인 페이지 당 레코드의 수가 설정될 수 있고, 일부는 통상적인 판독 및 기입을 지원하고 다른 것은 데이터 구조 인지 동작을 지원하는 복수의 영역에 대한 드라이브의 파티셔닝이 설정될 수 있고, 압축의 존재(예를 들어, 인에이블링/디스에이블링, 사용되는 알고리즘)가 설정될 수 있고/있거나 암호화의 존재(예를 들어, 인에이블링/디스에이블링, 사용되는 알고리즘)가 설정될 수 있다.
호스트는 검색을 개시하기 위해 메모리 시스템에 커맨드(예를 들어, SCSI 기입 커맨드, 검색 요구)를 송신할 수 있다(620). 이러한 커맨드는 검색 키와 검색 기준에 대한 표시를 포함할 수 있다. 호스트는, 검색 요구가 수신되었다는 확인 응답을 메모리 시스템으로부터 수신할 수 있다(622).
메모리 시스템은, 검색이 완료되었거나 검색 응답 버퍼가 가득 찼다는 것을 나타내는 응답을 호스트에 발행할 수 있다(624). 메모리 시스템은 실제 검색 결과로 이 응답에 따를 수 있다(626). 그 후 호스트는 결과와 그 결과가 올바르게 수신되었다는 것의 수신을 확인 응답할 수 있다(628). 그 후, 메모리 시스템은 검색과 연관된 검색 결과 버퍼를 방폐할 수 있다(630).
다른 실시예에서, 메모리 시스템이 송신하고, 호스트가 수신하고, 검색 결과가 존재하다는 표시의 스텝(예를 들어, 607 및 624)은 송신되는 실제 결과의 스텝(예를 들어, 609 및 626)과 결합될 수 있다.
도 6a 및 6b의 실시예는 호스트의 관점에서 나타내어지지만, 본 기술 분야의 통상의 기술자는, 이러한 실시예가 또한 메모리 시스템에 의해 수행되는 프로세스를 나타낸다는 것을 알 것이다. 즉, 호스트가 메모리 시스템으로부터 응답을 수신할 때, 본 기술 분야의 통상의 기술자는, 메모리 시스템이 그 응답을 송신했다는 것을 이해할 것이다.
실시예는 도 2의 메모리(203)를 포함하는 하드웨어, 펌웨어 및/또는 소프트웨어 중 하나 또는 그 조합으로 구현될 수 있다. 실시예는 또한 본 명세서에 설명된 동작을 수행하기 위해 적어도 1개의 프로세서에 의해 판독되어 실행될 수 있는, 컴퓨터 판독 가능 저장 디바이스 상에 저장된 명령으로서 구현될 수 있다. 컴퓨터 판독 가능 저장 디바이스는 머신(예를 들면, 컴퓨터)에 의해 판독 가능한 형식으로 정보를 저장하기 위한 임의의 비일시적인 메커니즘을 포함할 수 있다. 예를 들면, 컴퓨터 판독 가능 저장 디바이스는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스 및 다른 저장 디바이스와 매체를 포함할 수 있다. 일부 실시예에서, 시스템은 1개 이상의 프로세서를 포함할 수 있으며, 컴퓨터 판독 가능 저장 디바이스에 저장된 명령으로 구성될 수 있다.
메모리 시스템(108)의 컨트롤러(201)는 검색되고 있는 (예를 들면, 도 3a 및 3b에 개시된) 데이터 구조 포맷을 인식할 수 있다. 컨트롤러(201)가 데이터 구조를 인식하기 위해서, 소프트웨어/펌웨어(210)는 데이터 구조와 연관된 속성을 포함하도록 기입 및/또는 갱신된다. 컨트롤러는 그 후 데이터 구조의 개별 필드를 파싱할 수 있어, 그 특정 데이터 구조에 관한 동작을 수행할 수 있다. 예를 들어, 특정 데이터 구조가 이전에 사용되었을 수 있거나, 그 데이터 구조에 대한 정보가 특정 데이터 구조의 실제 사용 전에 컨트롤러(201)에 의해 실행되는 소프트웨어/펌웨어에 미리 저장되었을 수 있다. 이러한 정보는 데이터베이스 테이블, 데이터베이스 스키마, 바이너리 트리 포맷, 그래프 구조 또는 메모리 시스템에 데이터 구조 포맷을 알리는 소정의 다른 방식의 필드 기술(field description)을 포함할 수 있다. 특정 데이터베이스 포맷이 메모리 시스템에서 사용될 때를 예측하는 것을 컨트롤러(201)가 알도록, 이러한 정보 모두는 컨트롤러의 펌웨어/소프트웨어의 일부일 수 있다(또는 이로 갱신될 수 있다).
컨트롤러(201)가 데이터 구조 포맷을 인식할 수 있는 이러한 동작의 예로서, 유저는 주소 0에 위치된 데이터베이스의 리스트를 검색하도록 메모리 시스템(108)에 지시할 수 있다. 메모리 시스템의 컨트롤러는 주소 0을 찾을 수 있고 그 리스트에 대한 적절한 포맷을 발견할 수 있다. 컨트롤러의 펌웨어(또는 펌웨어 갱신을 통해 전송됨)는 저장된 데이터 구조의 포맷을 인식할 수 있게 하는 저장된 루틴을 포함한다. 컨트롤러가 그 곳의 리스트의 제1 요소를 발견하는 것으로 상정되면, 이제 (이를 단지 고유 데이터로서 취급하는 대신) 그 리스트의 구조를 인식하고 의미 있는 것으로서(예를 들어, 다음 리스트 노드 및 저장된 데이터에 대한 포인터) 상이한 데이터 필드를 주목하고 이를 연관시킬 수 있다. 리스트가 검색되고 있으므로, 소프트웨어/펌웨어는 다음 리스트의 노드에 대한 포인터를 파싱하고, 이를 따르고 동일 방식으로 다음 리스트 노드를 프로세싱하는 것을 개시할 것을 컨트롤러에 지시할 수 있다.
메모리 시스템(108)의 컨트롤러(201)는 아직 메모리 시스템에 의해 사용되지 않은 새로운 데이터 구조의 저장을 위한 공간을 어떻게 할당하는지를 이해할 수 있다. 예를 들어, 컨트롤러는 메모리 어레이 내의 저장소를 관리할 수 있고 진입 커맨드에 대한 그 임의의 저장소를 할당할 수 있다.
메모리 시스템(108)의 컨트롤러(201)는 데이터베이스의 상태를 변경하기 위해 (예를 들어, 호스트(130)로부터의) 커맨드를 이해하고 수용할 수 있다. 즉, 컨트롤러(201)는 데이터베이스를 생성하거나, 데이터베이스 내에 테이블을 생성하거나, 레코드를 삽입하거나, 레코드를 삭제하거나, 테이블을 삭제하거나 데이터베이스를 삭제하도록 구성될 수 있다. 컨트롤러(201)는 또한 특정 데이터셋에 대한 인덱스가 호스트(130)에 의해 요구되는 데이터베이스의 상태를 변경할 수 있다.
제1 메모리 시스템이 다른 데이터베이스-인에이블링된 메모리 시스템에 대한 클라이언트로서 기능할 수 있도록, 메모리 시스템(108)의 컨트롤러(201)가 메모리 시스템(108)을 제어할 수 있다. 예를 들어, 메모리 시스템이 SSD이면, 데이터베이스를 갖는 하나의 SSD가 클라이언트일 수 있으며, 데이터베이스를 갖는 다른 SSD로부터의 커맨드에 응답할 수 있다. 이는 하나의 메모리 시스템에 동일한 검색 기준 및 검색 키를 갖는 다른 메모리 시스템을 또한 검색하는 능력을 제공한다.
도 7은 이러한 시스템의 일례를 나타낸다. 호스트(130)는 각각의 메모리 시스템(108, 701, 702)이 실질적으로 유사한 복수의 메모리 시스템(예를 들어, SSD)(108, 701, 702)에 연결될 수 있거나 이와 통신할 수 있다. 하나의 메모리 시스템(701)이 다른 메모리 시스템(108)에 대한 클라이언트가 될 수 있도록, 메모리 시스템(108, 701, 702)은 호스트(130)뿐만 아니라 그 중에서 자신과 통신할 수 있다.
메모리 시스템(108)의 컨트롤러(201)는 또한 컨트롤러에 의해 실행되는 펌웨어/소프트웨어(210)에 의해 결정되는 추가 기능을 가질 수도 있다. 컨트롤러(201)는 단지 특정 기능으로 한정되지 않으므로 이러한 기능은 단지 예시를 위한 것이다.
예를 들면, 컨트롤러(201)는 펌웨어/소프트웨어(210)의 갱신을 신뢰성 있게 수용 및 제어하는 능력을 가질 수 있다. 이는 컨트롤러(201)의 능력을 갱신하는 데 사용될 수 있다. 컨트롤러(201)는 검색 결과를 저장하기 위해 새로운 데이터 구조를 생성할 수 있고, 복수의 입력 데이터 구조로부터 도출되는 새로운 데이터 구조를 생성할 수 있고(예를 들어, MySQLTM - 조인(join), 유니온(union) 및 다른 데이터 조작 연산과 같은 스타일 연산), 데이터 구조의 공통 필드의 비교에 기초하여 새로운 데이터 구조를 생성할 수 있고(예를 들어, MySQLTM - 복수의 레코드의 특정 컬럼의 등가의 데이터의 비교에 기초한 스타일 조인), 다른 레코드의 집성(aggregate) 기능에 기초하여 레코드의 필드에 값을 할당할 수 있다(예를 들어, MySQLTM - 카운트, 합, 평균, 표준 편차 및 조건 합(sum if)과 같은 스타일 연산).
컨트롤러(201)는 또한 에러를 검출할 수 있도록 데이터베이스의 레코드에 리던던시를 부가하는 능력을 가질 수 있다(예를 들면, 에러 수정 코드(ECC)). 예를 들어, ECC가 데이터베이스 내에 저장되거나 컨트롤러(201)가 호스트에 송신하기 전에 검색 결과에 ECC를 부가하는 것을 제어할 수 있도록, 데이터가 메모리에 저장될 때 컨트롤러(201)는 ECC의 부가를 제어할 수 있다. 또한, 부가적인 레코드가 현재 레코드에서 검출된 에러의 경우에 검사될 수 있도록, 컨트롤러(201)는 레코드를 복제할 수 있다.
컨트롤러(201)는 검색 성능을 향상시키기 위해 데이터베이스의 하나 이상의 필드에 인덱스를 생성하는 능력을 추가로 가질 수 있다. 예를 들어, 특정 레코드가 검색 키 및 검색 기준을 충족하는지를 결정하기 위해 후속 검색이 단순히 그 플래그를 찾을 수 있도록, 컨트롤러(201)는 각 레코드의 특정 필드의 플래그의 저장을 제어할 수 있다.
컨트롤러(201)는 메모리 시스템의 캐쉬 내의 검색 결과의 저장을 제어하는 능력을 추가로 가질 수 있다. 이 캐쉬는 검색 결과 데이터 버퍼 또는 메모리 시스템 내의 다른 목적을 위해 사용되는 다른 캐쉬일 수 있다.
검색 결과가 올바르게 수신되었다는 표시(예를 들어, 기입 커맨드)가 수신되었을 때, 컨트롤러(201)는 메모리 및/또는 검색 결과 데이터 버퍼의 소거를 제어하는 능력을 추가로 가질 수 있다. 컨트롤러(201)는 검색 결과를 저장하는 데 사용되는 메모리 위치(예를 들어, 캐쉬, 데이터 버퍼, 메모리)의 할당 해제를 추가로 제어할 수 있다.
장치는 회로, 집적 회로 다이, 메모리 디바이스, 메모리 어레이 또는 시스템으로서 규정될 수 있다.
결론
자율 메모리 검색을 위한 장치 및 방법의 하나 이상의 실시예는 메모리 시스템(예를 들면, SSD)의 데이터베이스의 구조화 또는 비구조화 데이터셋 중 어느 하나의 검색을 수행할 수 있다. 검색은 외부 호스트로부터의 개입 없이 메모리 시스템 내에서 완전하게 실행될 수 있다. 하나 이상의 검색 요구는 메모리 시스템에서 큐잉될 수 있다. 복수의 검색이 실질적으로 병렬로 프로세싱될 수 있다. 복수의 메모리 시스템(예를 들면, 복수의 SSD)을 갖는 시스템에서, 메모리 시스템 당 복수의 검색이 큐잉될 수 있다. 데이터셋이 단일 메모리 시스템 내에 존재하거나 복수의 메모리 시스템에 걸치고, 전체 데이터셋에 대한 단일 검색에 의해 검색될 수 있다.
특정의 실시예가 본 명세서에서 예시되고 설명되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 구성이 도시된 특정 실시예에 대해 치환될 수 있다는 것이 본 기술 분야의 통상의 기술자에 의해 이해될 것이다. 많은 적응이 본 기술 분야의 통상의 기술자에게 명백할 것이다. 따라서, 본 출원은 임의의 적응 또는 변형을 포함하도록 의도된다.

Claims (32)

  1. 메모리 디바이스의 비휘발성 메모리를 검색하기 위해 상기 메모리 디바이스의 메모리 컨트롤러에 의해 수행되는 자율 메모리 검색 방법으로서,
    호스트로부터 상기 메모리 디바이스로 제공되는 기입 커맨드를 처리하는 단계 - 상기 기입 커맨드는 상기 메모리 디바이스로 지향된(addressed) 것이고 상기 기입 커맨드의 논리 블록 주소 필드 내의 미리 결정된 비트에 의해 표시되는 검색 요청을 포함함 -;
    상기 기입 커맨드에 응답하여 상기 메모리의 검색을 개시하는 단계 - 상기 기입 커맨드의 논리 블록 주소 필드는 상기 검색을 개시하기 위해 정보를 표시하는 비트들을 더 포함하여, 상기 기입 커맨드 내의 논리 블록 주소 필드가 논리 블록 주소를 대신하여 추가적인 비트들 및 상기 미리 결정된 비트를 포함하도록 함 -; 및
    상기 메모리의 검색의 결과들을 획득하는 단계를 포함하는 자율 메모리 검색 방법.
  2. 청구항 1에 있어서,
    상기 기입 커맨드는 검색 기준(search criteria) 및 검색 키(search key)의 표시를 포함하는 자율 메모리 검색 방법.
  3. 청구항 2에 있어서,
    상기 검색 기준은 "와 동등하다", "보다 작다", "보다 크다", "와 동등하지 않다", "보다 작거나 동등하다", "보다 크거나 동등하다", "AND", "OR" 또는 "NOT" 중 하나 이상을 포함하는 자율 메모리 검색 방법.
  4. 청구항 1에 있어서,
    상기 논리 블록 주소 필드 내의 미리 결정된 비트는 상기 검색 요청을 수행하기 위해 상기 메모리 디바이스에게 검색 정보가 가용하다는 것을 더 표시하는 자율 메모리 검색 방법.
  5. 청구항 1에 있어서,
    상기 결과들은 상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 포함하고, 상기 검색 결과들이 발견되었을 때 상기 표시에 응답하여 상기 메모리로부터 상기 검색 결과들이 제공되는 자율 메모리 검색 방법.
  6. 청구항 5에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색이 상기 메모리에 저장된 데이터베이스의 끝에 도달했다는 표시를 획득하는 것을 포함하는 자율 메모리 검색 방법.
  7. 청구항 5에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색 결과들을 제공하기 위한 버퍼들이 가득 찼다는 표시를 획득하는 것을 포함하는 자율 메모리 검색 방법.
  8. 청구항 1에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 메모리 디바이스로 하여금 상기 검색 결과들을 다시 전송하게 하는 상기 메모리 디바이스로의 판독 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 자율 메모리 검색 방법.
  9. 청구항 1에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 상기 메모리로 발행된 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 자율 메모리 검색 방법.
  10. 청구항 9에 있어서,
    상기 기입 커맨드는 소형 컴퓨터 시스템 인터페이스(SCSI) 기입 커맨드를 포함하고, 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 커맨드는 SCSI 판독 커맨드를 포함하는 자율 메모리 검색 방법.
  11. 청구항 1에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 상기 호스트로 전송하는 단계를 더 포함하는 자율 메모리 검색 방법.
  12. 메모리 디바이스의 메모리 컨트롤러에 의해 실행되었을 때 상기 메모리 디바이스의 비휘발성 메모리의 자율 메모리 검색을 수행하는 명령들을 제공하는 디바이스 판독 가능 저장 매체로서, 상기 명령들은 상기 메모리 컨트롤러로 하여금,
    호스트로부터 상기 메모리 디바이스로 전송되는 기입 커맨드를 처리하는 동작 - 상기 기입 커맨드는 상기 메모리 디바이스로 지향된 것이고 상기 기입 커맨드의 논리 블록 주소 필드 내의 미리 결정된 비트에 의해 표시되는 검색 요청을 포함함 -;
    상기 기입 커맨드에 응답하여 상기 메모리의 검색을 개시하는 동작 - 상기 기입 커맨드의 논리 블록 주소 필드는 상기 검색을 개시하기 위해 정보를 표시하는 비트들을 더 포함하여, 상기 기입 커맨드 내의 논리 블록 주소 필드가 논리 블록 주소를 대신하여 추가적인 비트들 및 상기 미리 결정된 비트를 포함하도록 함 -; 및
    상기 메모리의 검색의 결과들을 획득하는 동작 - 상기 결과들은 상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 포함함 - 을 포함하는 동작들을 수행하게 하는 디바이스 판독 가능 저장 매체.
  13. 청구항 12에 있어서,
    상기 기입 커맨드는 검색 기준 및 검색 키의 표시를 포함하는 디바이스 판독 가능 저장 매체.
  14. 청구항 13에 있어서,
    상기 검색 기준은 "와 동등하다", "보다 작다", "보다 크다", "와 동등하지 않다", "보다 작거나 동등하다", "보다 크거나 동등하다", "AND", "OR" 또는 "NOT" 중 하나 이상을 포함하는 디바이스 판독 가능 저장 매체.
  15. 청구항 12에 있어서, 상기 동작들은,
    상기 검색 결과들이 발견되었을 때 상기 표시에 응답하여 상기 메모리로부터 상기 검색 결과들을 제공하는 동작을 더 포함하는 디바이스 판독 가능 저장 매체.
  16. 청구항 12에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색이 상기 메모리에 저장된 데이터베이스의 끝에 도달했다는 표시를 획득하는 것을 포함하는 디바이스 판독 가능 저장 매체.
  17. 청구항 12에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색 결과들을 제공하기 위한 버퍼들이 가득 찼다는 표시를 획득하는 것을 포함하는 디바이스 판독 가능 저장 매체.
  18. 청구항 12에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 메모리 디바이스로 하여금 상기 검색 결과들을 다시 전송하게 하는 상기 메모리 디바이스로의 판독 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 디바이스 판독 가능 저장 매체.
  19. 청구항 12에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 상기 메모리로 발행된 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 디바이스 판독 가능 저장 매체.
  20. 청구항 19에 있어서,
    상기 기입 커맨드는 소형 컴퓨터 시스템 인터페이스(SCSI) 기입 커맨드를 포함하고, 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 커맨드는 SCSI 판독 커맨드를 포함하는 디바이스 판독 가능 저장 매체.
  21. 청구항 12에 있어서, 상기 동작들은,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 상기 호스트로 전송하는 동작을 더 포함하는 디바이스 판독 가능 저장 매체.
  22. 메모리 디바이스로서,
    비휘발성 메모리; 및
    상기 비휘발성 메모리에 동작 가능하게 결합된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는,
    호스트로부터 상기 메모리 디바이스로 전송되는 기입 커맨드를 처리하는 동작 - 상기 기입 커맨드는 상기 메모리 디바이스로 지향된 것이고 상기 기입 커맨드의 논리 블록 주소 필드 내의 미리 결정된 비트에 의해 표시되는 검색 요청을 포함함 -;
    상기 기입 커맨드에 응답하여 상기 메모리의 검색을 개시하는 동작 - 상기 기입 커맨드의 논리 블록 주소 필드는 상기 검색을 개시하기 위해 정보를 표시하는 비트들을 더 포함하여, 상기 기입 커맨드 내의 논리 블록 주소 필드가 논리 블록 주소를 대신하여 추가적인 비트들 및 상기 미리 결정된 비트를 포함하도록 함 -; 및
    상기 메모리의 검색의 결과들을 획득하는 동작을 포함하는 동작들을 수행하는 것인 메모리 디바이스.
  23. 청구항 22에 있어서,
    상기 기입 커맨드는 검색 기준 및 검색 키의 표시를 포함하는 메모리 디바이스.
  24. 청구항 23에 있어서,
    상기 검색 기준은 "와 동등하다", "보다 작다", "보다 크다", "와 동등하지 않다", "보다 작거나 동등하다", "보다 크거나 동등하다", "AND", "OR" 또는 "NOT" 중 하나 이상을 포함하는 메모리 디바이스.
  25. 청구항 22에 있어서, 상기 동작들은,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 동작; 및
    상기 검색 결과들이 발견되었을 때 상기 표시에 응답하여 상기 메모리로부터 상기 검색 결과들을 제공하는 동작을 더 포함하는 메모리 디바이스.
  26. 청구항 25에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색이 상기 메모리에 저장된 데이터베이스의 끝에 도달했다는 표시를 획득하는 것을 포함하는 메모리 디바이스.
  27. 청구항 25에 있어서,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 획득하는 것은 상기 검색 결과들을 제공하기 위한 버퍼들이 가득 찼다는 표시를 획득하는 것을 포함하는 메모리 디바이스.
  28. 청구항 22에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 메모리 디바이스로 하여금 상기 검색 결과들을 다시 전송하게 하는 상기 메모리 디바이스로의 판독 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 메모리 디바이스.
  29. 청구항 22에 있어서,
    상기 메모리로부터 검색 결과들을 제공하는 것은 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 상기 메모리로 발행된 커맨드에 응답하여 상기 검색 결과들을 제공하는 것을 포함하는 메모리 디바이스.
  30. 청구항 29에 있어서,
    상기 기입 커맨드는 소형 컴퓨터 시스템 인터페이스(SCSI) 기입 커맨드를 포함하고, 상기 호스트가 상기 검색 결과들을 수신할 준비가 되어 있다는 것을 표시하는 커맨드는 SCSI 판독 커맨드를 포함하는 메모리 디바이스.
  31. 청구항 22에 있어서, 상기 동작들은,
    상기 검색이 완료되었거나 또는 검색 결과들이 발견되었다는 표시를 상기 호스트로 전송하는 동작을 더 포함하는 메모리 디바이스.
  32. 청구항 22에 있어서,
    상기 메모리 디바이스는 솔리드 스테이트 드라이브이고 상기 호스트는 컴퓨팅 디바이스인 메모리 디바이스.
KR1020187016637A 2013-08-13 2014-08-12 자율 메모리 검색을 위한 방법 및 시스템 KR101927677B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/965,739 2013-08-13
US13/965,739 US9779138B2 (en) 2013-08-13 2013-08-13 Methods and systems for autonomous memory searching
PCT/US2014/050624 WO2015023625A1 (en) 2013-08-13 2014-08-12 Methods and systems for autonomous memory searching

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167006563A Division KR101868850B1 (ko) 2013-08-13 2014-08-12 자율 메모리 검색을 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20180067729A true KR20180067729A (ko) 2018-06-20
KR101927677B1 KR101927677B1 (ko) 2018-12-10

Family

ID=52467568

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167006563A KR101868850B1 (ko) 2013-08-13 2014-08-12 자율 메모리 검색을 위한 방법 및 시스템
KR1020187016637A KR101927677B1 (ko) 2013-08-13 2014-08-12 자율 메모리 검색을 위한 방법 및 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167006563A KR101868850B1 (ko) 2013-08-13 2014-08-12 자율 메모리 검색을 위한 방법 및 시스템

Country Status (7)

Country Link
US (2) US9779138B2 (ko)
EP (1) EP3033701B1 (ko)
JP (1) JP6211196B2 (ko)
KR (2) KR101868850B1 (ko)
CN (2) CN111221848A (ko)
TW (2) TWI610187B (ko)
WO (1) WO2015023625A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
WO2015070110A2 (en) 2013-11-07 2015-05-14 Netlist, Inc. Hybrid memory module and system and method of operating the same
US11182284B2 (en) 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US9633074B1 (en) * 2014-01-03 2017-04-25 Amazon Technologies, Inc. Querying data set tables in a non-transactional database
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
CN105988704B (zh) * 2015-03-03 2020-10-02 上海触乐信息科技有限公司 高效的触摸屏文本输入系统及方法
US9927984B2 (en) * 2015-10-14 2018-03-27 Samsung Electronics Co., Ltd. Electronic system with interface control mechanism and method of operation thereof
KR20190023433A (ko) * 2017-08-29 2019-03-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
TWI664527B (zh) * 2018-03-20 2019-07-01 慧榮科技股份有限公司 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置
CN110765156A (zh) * 2018-07-09 2020-02-07 慧荣科技股份有限公司 链表搜索装置及方法
US10990323B2 (en) * 2019-05-28 2021-04-27 Silicon Motion, Inc. Flash memory controller, memory device and method for accessing flash memory module

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134711A (en) 1988-05-13 1992-07-28 At&T Bell Laboratories Computer with intelligent memory system
GB8816413D0 (en) 1988-07-09 1988-08-17 Int Computers Ltd Data processing system
GB9023096D0 (en) 1990-10-24 1990-12-05 Int Computers Ltd Database search processor
WO1995001604A1 (de) 1993-06-30 1995-01-12 Anton Gunzinger Intelligentes kommunikations-system
CA2145106C (en) 1994-04-22 1999-08-24 Abhaya Asthana Intelligent memory-based input/output system
JP3289101B2 (ja) * 1996-01-25 2002-06-04 東京エレクトロン株式会社 フラッシュ・ディスク・システムの初期化方法及び装置
KR100359414B1 (ko) * 1996-01-25 2003-01-24 동경 엘렉트론 디바이스 주식회사 데이타독출/기록방법및그를이용한메모리제어장치및시스템
US5913217A (en) * 1997-06-30 1999-06-15 Microsoft Corporation Generating and compressing universally unique identifiers (UUIDs) using counter having high-order bit to low-order bit
US6105130A (en) 1997-12-23 2000-08-15 Adaptec, Inc. Method for selectively booting from a desired peripheral device
US6751606B1 (en) * 1998-12-23 2004-06-15 Microsoft Corporation System for enhancing a query interface
CN1437724A (zh) 2000-03-03 2003-08-20 坦诺网络公司 使用内部处理器存储空间的高速数据处理
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7581080B2 (en) 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
GB2406399A (en) * 2003-09-23 2005-03-30 Ibm Seaching within a computer network by entering a search term and optional URI into a web browser
US7243200B2 (en) 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7242216B1 (en) 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
US7634622B1 (en) 2005-06-14 2009-12-15 Consentry Networks, Inc. Packet processor that generates packet-start offsets to immediately store incoming streamed packets using parallel, staggered round-robin arbitration to interleaved banks of memory
US20070165457A1 (en) 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
DE102006009027A1 (de) 2006-02-27 2007-08-30 Infineon Technologies Ag Speicheranordnung
TW200743991A (en) * 2006-05-18 2007-12-01 Realtek Semiconductor Corp Data search method and apparatus thereof
US7941579B2 (en) 2006-06-30 2011-05-10 Brother Kogyo Kabushiki Kaisha Communication system for authenticating authority of host device for accessing storage medium set to periphery device
US7657705B2 (en) * 2006-09-27 2010-02-02 Lsi Corporation Method and apparatus of a RAID configuration module
US8285707B2 (en) * 2006-11-08 2012-10-09 International Business Machines Corporation Method of querying relational database management systems
US9141670B2 (en) 2007-08-27 2015-09-22 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
US7895151B2 (en) 2008-06-23 2011-02-22 Teradata Us, Inc. Fast bulk loading and incremental loading of data into a database
US7623365B2 (en) 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7913033B2 (en) 2007-10-09 2011-03-22 Micron Technology, Inc. Non-volatile memory device having assignable network identification
TWI346289B (en) 2007-12-19 2011-08-01 Ralink Technology Corp Peripheral complying with sdio standard and method for managing sdio command
US8493979B2 (en) 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
TWI406130B (zh) * 2009-03-10 2013-08-21 Phison Electronics Corp 資料處理系統、控制器及其搜尋特定記憶體區的方法
US8427952B1 (en) 2009-03-24 2013-04-23 Packet Plus, Inc. Microcode engine for packet processing
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US9792307B2 (en) * 2010-07-27 2017-10-17 Oracle International Corporation Enterprise-based searching of new and updated data
US8930618B2 (en) 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
JP2012159903A (ja) * 2011-01-31 2012-08-23 Fujitsu Semiconductor Ltd データ処理システム、データ処理装置、及びデータ処理方法
US8478736B2 (en) * 2011-02-08 2013-07-02 International Business Machines Corporation Pattern matching accelerator
KR101306622B1 (ko) 2011-06-22 2013-09-11 주식회사 에이디칩스 명령어 큐 제어장치
JP2013045378A (ja) 2011-08-26 2013-03-04 Fujitsu Ltd ストレージ制御方法、情報処理装置およびプログラム
US8775685B1 (en) 2011-10-13 2014-07-08 Xilinx, Inc. Parallel processing of network packets
US20130173655A1 (en) * 2012-01-04 2013-07-04 International Business Machines Corporation Selective fetching of search results
US9424202B2 (en) * 2012-11-19 2016-08-23 Smartfocus Holdings Limited Database search facility
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data

Also Published As

Publication number Publication date
US20170351737A1 (en) 2017-12-07
EP3033701A4 (en) 2017-04-05
US20150052114A1 (en) 2015-02-19
WO2015023625A1 (en) 2015-02-19
TW201518968A (zh) 2015-05-16
EP3033701B1 (en) 2020-05-27
CN105612518A (zh) 2016-05-25
US9779138B2 (en) 2017-10-03
JP6211196B2 (ja) 2017-10-11
TWI610187B (zh) 2018-01-01
JP2016536694A (ja) 2016-11-24
TW201810088A (zh) 2018-03-16
KR101927677B1 (ko) 2018-12-10
EP3033701A1 (en) 2016-06-22
KR101868850B1 (ko) 2018-06-19
TWI664541B (zh) 2019-07-01
CN105612518B (zh) 2020-01-14
CN111221848A (zh) 2020-06-02
KR20160042122A (ko) 2016-04-18

Similar Documents

Publication Publication Date Title
KR101927677B1 (ko) 자율 메모리 검색을 위한 방법 및 시스템
US10795817B2 (en) Cache coherence for file system interfaces
US10540323B2 (en) Managing I/O operations in a storage network
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US9092321B2 (en) System and method for performing efficient searches and queries in a storage node
US9164676B2 (en) Storing multi-stream non-linear access patterns in a flash based file-system
JP2016536694A5 (ko)
US20150067243A1 (en) System and method for executing map-reduce tasks in a storage device
WO2015162752A1 (ja) データベース演算部を備えるフラッシュモジュール、及びストレージ装置
US9483481B2 (en) Files having unallocated portions within content addressable storage
US11347647B2 (en) Adaptive cache commit delay for write aggregation
US8539007B2 (en) Efficient garbage collection in a compressed journal file
US20160342342A1 (en) Information processing device, information processing system, and data access method
JPWO2016117022A1 (ja) ログの管理方法及び計算機システム
US8788712B2 (en) Compression block input/output reduction
EP3555774B1 (en) Efficient database management system utilizing silo and manifest
EP3293643B1 (en) Paging mechanism for in-memory data management system
US20180074970A1 (en) Cache-Efficient Fragmentation of Data Structures
KR20170130180A (ko) 비휘발성 메모리를 이용한 데이터처리 장치 및 방법

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant