KR102251811B1 - 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템 - Google Patents

하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR102251811B1
KR102251811B1 KR1020150000294A KR20150000294A KR102251811B1 KR 102251811 B1 KR102251811 B1 KR 102251811B1 KR 1020150000294 A KR1020150000294 A KR 1020150000294A KR 20150000294 A KR20150000294 A KR 20150000294A KR 102251811 B1 KR102251811 B1 KR 102251811B1
Authority
KR
South Korea
Prior art keywords
data
read data
hint information
read
filtering
Prior art date
Application number
KR1020150000294A
Other languages
English (en)
Other versions
KR20160083761A (ko
Inventor
김광훈
서만근
정상규
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150000294A priority Critical patent/KR102251811B1/ko
Priority to US14/979,796 priority patent/US10133785B2/en
Publication of KR20160083761A publication Critical patent/KR20160083761A/ko
Application granted granted Critical
Publication of KR102251811B1 publication Critical patent/KR102251811B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (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

본 발명에 따른 데이터 저장 장치는 제1 리드 명령에 응답하여 제1 리드 데이터를 출력하는 제 1 기억 장치, 상기 제1 리드 데이터를 필터링 조건 데이터와 비교한 결과를 기반으로, 제1 힌트 정보를 생성하는 하드웨어 필터, 상기 제1 힌트 정보를 기반으로 상기 제1 리드 데이터의 필터링 수행 여부를 판단하고, 판단 결과에 기반하여 선택적으로 상기 제1 리드 데이터를 상기 필터링 조건 데이터를 기반으로 필터링하여, 제1 필터링된 데이터를 생성하는 프로세서를 포함하는 컨트롤러, 상기 제1 필터링된 데이터를 저장하는 제2 기억 장치 및 상기 컨트롤러는 상기 제1 필터링된 데이터를 호스트에 전송하는 것을 특징으로 한다.

Description

하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템{Data storage device having internal hardware filter, and data processing system having the data storage device}
본 발명은 하드웨어 필터를 포함하는 데이터 저장 장치, 이의 동작 방법 및 상기 데이터 저장 장치를 포함하는 시스템으로서, 자세하게는 데이터 트래픽을 줄이고 데이터 베이스 시스템에 범용적으로 사용할 수 있는 데이터 저장 장치, 이의 동작 방법 및 상기 데이터 저장 장치를 포함하는 시스템에 관한 것이다.
일반적인 서버와 데이터베이스를 포함하는 데이터 서버 시스템에서, 빅 데이터는 관계형 데이터베이스(relational databases)나 NoSQL 데이터베이스에 저장된다. 상기 관계형 데이터베이스 또는 상기 NoSQL 데이터베이스에 저장된 상기 빅 데이터로부터 원하는 데이터는 SQL(structured query language) 또는 고유의 쿼리(query) 언어를 이용하여 추출된다. 빅 데이터는 데이터베이스로부터 서버의 메인 메모리로 전송되고, 상기 서버의 프로세서는 상기 메인 메모리에 저장된 상기 빅 데이터로부터 원하는 데이터를 추출한다. 그러나, 서버의 메인 메모리에 저장된 빅 데이터 중에서 일부만이 상기 서버의 프로세서에 의해 추출되므로, 데이터 트래픽의 관점에서 볼 때, 상기 서버의 상기 프로세서를 이용하여 상기 빅 데이터로부터 원하는 데이터를 추출하는 방법은 효율성이 낮다. 또한, 데이터베이스는 상기 빅 데이터를 상기 서버로 전송해야 하므로, 상기 서버와 상기 데이터 베이스 사이의 데이터 트래픽은 감소하지 않는다.
본 발명이 이루고자 하는 기술적인 과제는, 보조 기억 장치로 사용되는 데이터 베이스로부터 메인 메모리로 전송되는 데이터 트래픽(data traffic)을 감소시키기 위해, 하드웨어 필터를 포함하는 데이터 저장 장치, 이의 동작 방법 및 상기 데이터 저장 장치를 포함하는 시스템을 제공하는 것이다.
본 발명에 따른 데이터 저장 장치는 제1 리드 명령에 응답하여 제1 리드 데이터를 출력하는 보조 기억 장치, 상기 제1 리드 데이터를 저장하는 주기억 장치 및 상기 제1 리드 데이터를 필터링 조건 데이터와 비교한 결과를 기반으로, 제1 힌트 정보를 생성하고, 상기 제1 힌트 정보를 기반으로, 상기 제1 리드 데이터에 대한 필터링 동작 수행 여부를 결정하여, 상기 제1 리드 데이터에 대해 상기 필터링 조건 데이터를 기초로 선택적 필터링 동작을 수행하는 컨트롤러를 포함하며, 상기 선택적 필터링 동작 수행 결과에 따른 제1 필터링된 데이터를 호스트에 전송한다.
다른 실시예로, 상기 컨트롤러는, 상기 호스트로부터 출력된 필터링 명령에 기반하여 제어 신호를 생성하는 제1 프로세서 및 상기 제어 신호에 기반하여 상기 필터링 조건 데이터를 생성하는 제2 프로세서를 포함하는 것을 특징으로 한다.
또 다른 실시예로, 상기 컨트롤러는, 상기 선택적 필터링 동작의 수행하는 소프트웨어 필터를 포함하는 프로세서를 포함하는 것을 특징으로 한다.
또 다른 실시예로, 상기 컨트롤러는, 상기 제1 리드 데이터가 상기 필터링 조건 데이터에 포함된 매칭 키 데이터의 포함 여부에 기반하여, 상기 제1 힌트 정보를 생성하는 것을 특징으로 한다.
또 다른 실시예로, 상기 컨트롤러는, 상기 제1 리드 데이터가 상기 매칭 키 데이터의 전부 또는 일부를 포함하는 것을 나타내는 상기 제1 힌트 정보를 수신한 경우, 상기 제1 리드 데이터를 필터링하고, 상기 제1 리드 데이터가 상기 매칭 키 데이터의 전부 또는 일부를 불포함하는 것을 나타내는 상기 제1 힌트 정보를 수신한 경우, 상기 제1 리드 데이터를 필터링하지 않는 것을 특징으로 한다.
또 다른 실시예로, 상기 컨트롤러는, 상기 제1 리드 데이터를 필터링 조건 데이터와 비교한 결과를 기반으로, 제1 힌트 정보를 생성하는 하드웨어 필터를 포함하고, 상기 하드웨어 필터는, 상기 매칭 키 데이터를 저장하는 레지스터, 상기 레지스터로부터 출력된 상기 매칭 키 데이터와 상기 제1 리드 데이터를 비교하고, 비교 신호를 생성하는 비교기 및 상기 비교 신호에 응답하여, 상기 제1 리드 데이터가 상기 매칭 키 데이터의 포함 여부를 나타낸 상기 제1 힌트 정보를 생성하는 힌트 생성부를 포함하는 것을 특징으로 한다.
또 다른 실시예로, 상기 보조 기억 장치는, 제2 리드 명령에 응답하여 제2 리드 데이터를 출력하고, 상기 컨트롤러는, 상기 제2 리드 데이터를 상기 필터링 조건 데이터와 비교한 결과를 기반으로, 제2 힌트 정보를 생성하고, 상기 제2 힌트 정보를 기반으로 상기 제2 리드 데이터를 상기 필터링 조건 데이터에 기초한 선택적 필터링 동작을 수행하고, 상기 선택적 필터링 동작 수행 결과에 따른 제2 필터링된 데이터를 호스트에 전송하는 것을 특징으로 한다.
본 발명의 따른 데이터 처리 시스템은, 리드 명령과 필터링 명령을 출력하는 호스트, 상기 리드 명령에 응답하여, 제1 리드 데이터 및 제2 리드 데이터를 출력하는 보조 기억 장치, 상기 제1 리드 데이터 및 제2 리드 데이터를 저장하는 주기억 장치 및 상기 제1 리드 데이터 및 제2 리드 데이터를 필터링 조건 데이터와 비교하여, 제1 힌트 정보 및 제2 힌트 정보를 생성하는 하드웨어 필터 및 상기 필터링 명령에 응답하여, 상기 제1 힌트 정보 및 상기 제2 힌트 정보를 기반으로, 상기 제1 리드 데이터 및 상기 제2 리드 데이터를 상기 필터링 조건 데이터에 기초한 선택적 필터링 동작을 수행하는 프로세서를 포함하는 컨트롤러를 포함하고, 상기 선택적 필터링 동작 수행 결과에 따른 필터링된 데이터를 호스트에 전송한다.
다른 실시예로, 제8 항에 있어서, 상기 보조 기억 장치는, 플래시 메모리 장치로서, 상기 제1 리드 데이터는 상기 보조 기억 장치의 n번째 페이지에 저장되고, 상기 제2 리드 데이터는 상기 보조 기억 장치의 n+1번째 페이지에 저장된 것을 특징으로 한다.
또 다른 실시예로, 상기 필터링 조건 데이터는 매칭 키 데이터를 포함하고, 상기 하드웨어 필터는, 상기 제1 리드 데이터가 상기 매칭 키 데이터의 일부분인 제1 매칭 키 데이터를 포함하는지 여부를 나타내는 상기 제1 힌트 정보를 생성하고, 상기 제2 리드 데이터가 상기 키 데이터의 일부분인 제2 매칭 키 데이터를 포함하는지 여부를 나타내는 상기 제2 힌트 정보를 생성하며, 상기 프로세서는,
상기 제1 힌트 정보 및 상기 제2 힌트 정보를 기반으로, 상기 제1 리드 데이터 및 상기 제2 리드 데이터를 동시에 필터링 동작을 수행하는 것을 특징으로 한다.
본 개시에 따른 데이터 저장 장치, 이의 동작 방법 및 상기 데이터 저장 장치를 포함하는 시스템에 의하면, 데이터 저장 장치는 보조 기억 장치와 주기억 장치를 포함하며, 보조 기억 장치로부터 주기억 장치로 전송되는 데이터 트래픽을 최소화할 수 있다.
상기 데이터 저장 장치에 내장된 하드웨어 필터는 빅 데이터의 필터링 동작을 수행할 때, 상기 빅 데이터의 트래픽을 감소시킬 수 있는 효과가 있다.
또한, 본 발명에 따른 데이터 저장 장치는 하드웨어 필터를 이용하여 필터링 동작을 수행하고, 필터링된 데이터를 호스트로 전송할 수 있으므로, 상기 데이터 저장 장치와 상기 호스트 사이의 데이터 트래픽을 감소시킬 수 있다.
상기 호스트는 본 발명에 따른 데이터 저장 장치에 의해 필터링된 데이터를 처리할 수 있으므로, 상기 호스트의 빅 데이터 처리 연산의 부담이 감소하는 효과가 있다.
도1은 본 발명의 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도2 는 일 실시예에 따른 컨트롤러를 나타내는 블록도이다.
도3 은 본 발명의 일 실시예에 따른 프로세서를 구체적으로 나타낸 블록도이다.
도4 는 본 발명의 일 실시예에 따른 하드웨어 필터의 블록도를 나타내는 도면이다.
도5 는 본 발명의 일 실시예에 따른 비교기의 블록도를 나타낸 도면이다.
도6 은 데이터 처리 시스템의 동작을 설명하기 위한 일 실시예이다.
도7 은 일 실시예에 따른 비트맵으로 구성된 힌트 정보에 대한 포맷을 나타낸 도면이다.
도8a, 8b, 8c 는 리드 데이터에 대응한 페이지의 데이터 구성에 따른 힌트 정보를 도7 의 표1 따라 나타낸 도면이다.
도9a 및9b 는 본 발명의 다른 일 실시예에 따른 데이터 처리 시스템(900a, 900b)의 동작을 설명하기 위한 도면이다.
도10 은 본 발명의 일 실시예에 따른 데이터 처리 방법에 관한 것을 나타낸 순서도이다.
도11 은 본 발명의 실시 예들에 따른 데이터 저장 장치가 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 12 는 본 발명의 실시 예들에 따른 데이터 처리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도13는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도1 은 본 발명의 실시예에 따른 데이터 처리 시스템(100)을 나타내는 블록도이다.
도1 을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와 데이터 저장 장치(300)를 포함한다. 데이터 처리 시스템(100)은 데이터 베이스 관리 시스템(database management system,DBMS) 또는 관계형 데이터 베이스 관리 시스템(relational DBMS,RDBMS)을 의미할 수 있다. 상기 DBMS는 컬럼 지향(column-oriented) DBMS 또는 로우-지향 (row-oriented) DBMS을 포함할 수 있다. 잘 알려진 DBMS는 MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Microsoft Access, Oracle, SAP, dBASE, FoxPro, IBM DB2 및 FilemakerPro를 포함할 수 있다. 호스트(200)는 데이터 저장 장치(300)의 동작, 예컨대 라이트 동작, 리드 동작, 또는 필터링 동작을 제어할 수 있다. 예컨대, 호스트(200)와 데이터 저장 장치(300)는 SATA(serial advance technology attachment), SAS(Serial Attached SCSI) 또는 PCIe(Peripheral Component Interconnect Express)를 통해 통신할 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 보조 기억 장치(320) 및 주기억 장치(330)를 포함한다. 데이터 저장 장치(300)는 일체형(all-in-one) 데이터 저장 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(300)는 솔리드 스테이트 드라이브(solid state drive,SSD), 임베디드 SSD(eSSD) 또는 하드디스크 드라이브(hard disc drive,HDD)로 구현될 수 있다. 따라서, 데이터 저장 장치(300)가 SSD 또는 eSSD로 구현될 때, 데이터 처리 시스템(100)은 SSD 또는 eSSD를 포함하는 데이터 처리 시스템으로 구현될 수 있다.
보조 기억 장치(320)는 제1리드 명령(RCMD1)에 응답하여 제1리드 데이터 (RDATA1)를 컨트롤러(310)에 포함된 하드웨어 필터(315)로 출력할 수 있다. 제1리드 데이터 (RDATA1)는 빅 데이터(big data)일 수 있다. 보조 기억 장치(320)는 데이터베이스의 기능을 수행할 수 있다. 보조 기억 장치(320)는 불휘발성(non-volatile) 메모리 셀들을 포함할 수 있다. 상기 불휘발성 메모리셀들은 EEPROM(electrically erasable programmable read-only memory), 플래시(flash) 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM(spin-transfer torque MRAM), conductive bridging RAM(CBRAM), FeRAM (ferroelectric RAM), PRAM(phase change RAM), 저항 메모리(resistive RAM (RRAM)), 나노튜브RRAM(nanotube RRAM), 폴리머 RAM(polymer RAM(PoRAM)), 나노 부유 게이트 메모리(nano floating gate memory(NFGM)), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(molecular electronics memory device), 또는 절연 저항 변화 메모리(insulator resistance change memory)로 구현될 수 있다. 예컨대, 보조 기억 장치(320)는 NAND 플래시 어레이 또는 NOR 플래시 어레이로 구현될 수 있다.
하드웨어 필터(315)는 제1리드 데이터(RDATA1)를 필터링 조건 데이터(FCD)와 비교하여, 비교한 결과를 기반으로 제1 힌트 정보를 생성할 수 있다. 일 실시예로, 필터링 조건 데이터(FCD)는 호스트(200)로부터 출력된 필터링 명령(FCMD)에 기초하여 생성될 수 있다. 필터링 명령(FCMD)은 데이터베이스로 정보를 요청하는 다양한 명령 및/또는 쿼리(query)를 포함할 수 있다. 필터링 조건 데이터(FCD)는 사용자가 원하는 데이터인 매칭 키 데이터를 포함할 수 있다. 제1 힌트 정보는 제1 리드 데이터(RDATA1)가 상기 매칭 키 데이터를 포함하는지 여부를 나타낼 수 있으며, 일 실시예로, 제1 힌트 정보가 상기 매칭 키 데이터를 포함한 경우, 하나의 비트 단위 데이터인 '1' 의 값을 가질 수 있으며, 상기 매칭 키 데이터를 포함하지 않는 경우에는 '0' 의 값을 가질 수 있다.
따라서, 제1 힌트 정보가 '1' 의 값을 갖는 경우에, 컨트롤러(310)는 제1 힌트 정보를 기반으로 제1 리드 데이터(RDATA1)를 필터링 동작 수행의 대상으로 판단하고, 제1 리드 데이터(RADATA1)를 필터링 조건 데이터(FCD)를 기반으로 필터링 동작을 수행할 수 있다. 일 실시예에 따라, 제1 리드 데이터(RDATA1)를 제1 힌트 정보를 기반으로 선택적 필터링 동작을 수행할 수 있다. 즉, 제1 힌트 정보를 기반으로 제1 리드데이터(RDATA1)에 대해 필터링 동작을 수행할지 말지 여부를 결정하여 선택적으로 필터링 동작을 수행할 수 있다. 제1 필터링된 데이터(1st filtered data, FDATA1)를 호스트(200)와 주기억 장치(330)에 데이터 버스(미도시)를 통하여 제공할 수 있다. 제1 힌트 정보가 '0' 의 값을 갖는 경우에, 컨트롤러(310)는 제1 힌트 정보를 기반으로 제1 리드 데이터(RDATA1)를 필터링 수행의 대상이 아니라 판단하고, 제1 리드 데이터(RDATA1)에 대하여 필터링 동작을 수행하지 않을 수 있다. 이를 통하여, 상기 매칭 키 데이터가 제1 리드 데이터(RDATA1)에 포함되었는지 여부를 기반으로 제1 힌트 정보를 생성하고, 제1 힌트 정보를 기반으로 제1 리드 데이터(RDATA1)를 선택적 필터링 동작 수행함으로써, 필터링 동작을 수행하기 위하여 필요한 데이터를 줄이게 되어 데이터 트래픽을 낮출 수 있는 효과가 있다. 더 나아가, 제1 힌트 정보는 제1 리드 데이터(RDATA1) 상에 포함된 상기 매칭 키 데이터의 주소값을 오프셋(Off-set)데이터로 더 포함할 수 있다.
데이터 저장 장치(300)가 SSD로 구현되고 보조 기억 장치(320)가 NAND 플래시 메모리로 구현될 때, 하드웨어 필터(315)가 상기 NAND 플래시 메모리에 가깝게 구현됨에 따라, 상기 SSD 내부의 데이터 트래픽은 감소할 수 있다. 또한, 보조 기억 장치(320)는 제1 리드 명령에 응답하여 제1 리드 데이터(RDATA1)를 컨트롤러(310)에 출력할 수 있으며, 보조 기억 장치(320)는 다수의 페이지 프레임들로 구성된 NAND 플래시 메모리로서, 제1 리드 데이터(RDATA1)는 페이지 단위의 데이터일 수 있다. 따라서, 후술할 제2 리드 데이터(RDATA2)도 페이지 단위의 데이터일 수 있으며, 보조 기억 장치(320)는 제1 리드 명령에 응답하여, 제1 리드 데이터(RDATA1)를 컨트롤러(310)에 출력하고, 제2 리드 명령에 응답하여, 제2 리드 데이터(RDATA2)를 컨트롤러(310)로 출력할 수 있다. 이에 한정되지 않으며, 더 많은 리드 데이터들을 각각의 리드 명령에 의하여 출력할 수 있다.
주기억 장치(330)는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다. 호스트(200)와 데이터 저장 장치(300)는 컨트롤러(310)를 통해 데이터 및/또는 명령을 주거나 받을 수 있다. 컨트롤러(310)는 제1필터링된 데이터(FDATA1)를 신호 라인을 통해 호스트(200)로 전송할 수 있다. 예컨대, 신호 라인은 전기적 신호 라인 또는 광학적(optical) 신호 라인으로 구현될 수 있다. 신호 라인은 하나 또는 그 이상의 신호 라인들을 포함할 수 있다.
도2 는 일 실시예에 따른 컨트롤러(400)를 나타내는 블록도이다.
도2 를 참고하면, 컨트롤러(400)는 프로세서(410) 및 하드웨어 필터(420)를 포함한다. 하드웨어 필터(420)는 제1 리드 데이터(RDATA1)를 수신받아, 필터링 조건 데이터(FCD)와 제1 리드 데이터(RDATA1)를 비교하고, 그 비교 결과로 제1 힌트 정보(HI1)를 생성할 수 있다. 일 실시예로 제1 힌트 정보(HI1)는 적어도 하나의 비트(bit) 데이터로 구성된 것으로써, 필터링 조건 데이터(FCD)가 포함하는 매칭 키 데이터를 제1 리드 데이터(RDATA1)가 포함하는지 여부를 나타내는 것일 수 있다.
프로세서(410)는 하드웨어 필터(420)으로부터 제1 힌트 정보(HI1)를 수신하고, 도1 의 보조 기억 장치(320)로부터 제1 리드 데이터(RDATA1)를 수신할 수 있다. 프로세서(410)는 제1 힌트 정보(HI1)를 기반으로, 제1 리드 데이터(RDATA1)에 대한 필터링 동작을 수행할지 여부를 결정할 수 있다. 예를 들면, 필터링 조건 데이터(FCD)에 포함된 매칭 키 데이터를 제1 리드 데이터(RDATA1)가 포함하는 경우, 제1 리드 데이터(RDATA1)에 대해 필터링 동작을 수행하고, 제1 리드 데이터(RDATA1)가 매칭 키 데이터를 포함하지 않는 경우에는 제1 리드 데이터(RDATA1)에 대해 필터링 동작을 수행하지 않을 수 있다.
프로세서(410)는 호스트로부터 필터링 명령(FCMD)을 수신받을 수 있으며, 필터링 명령(FCMD)을 기반으로 필터링 조건 데이터(FCD)를 생성할 수 있다. 프로세서(410)에 의해 실행되는 펌웨어(firmware) 또는 응용 프로그램 프로그래밍 인터페이스(application programming interface, API)에 따라 하드웨어 필터(420)에 설정 또는 프로그램 될 수 있다. 상기 펌웨어 또는 상기 API는 도1의 보조 기억 장치(320) 또는 별도의 불휘발성 메모리로부터 도1의 주기억 장치(330)로 로드(load)된 후 프로세서(410)에 의해 실행될 수 있다. 프로세서(410)는 제1 리드 데이터(RDATA1)를 필터링 수행하는 경우에, 제1 리드 데이터(RDATA1)를 필터링 조건 데이터(FCD)를 기반으로 필터링하여, 제1 필터링된 데이터(FDATA1)을 생성할 수 있다.
컨트롤러(400)는 도1 의 주기억장치(330)를 제어하는 메모리 컨트롤러(미도시)를 더 포함할 수 있다. 프로세서(410)에서 생성된 제1 필터링된 데이터(FDATA1)는 상기 메모리 컨트롤러(미도시)를 통하여 도1의 주기억장치(330)에 저장될 수 있으며, 또한, 도1의 주기억장치(330)에 저장된 제1 리드 데이터(RDATA1)를 상기 메모리 컨트롤러(미도시)를 통하여 리드(Read)할 수 있다.
도3 은 본 발명의 일 실시예에 따른 프로세서(500)를 구체적으로 나타낸 블록도이다.
도3 을 참조하면, 프로세서(500)는 제1 프로세서(510), 제2 프로세서(520), DMA(Direct memory access, 530) 및 메모리 컨트롤러(540)을 포함한다. 호스트로부터 출력된 필터링 명령(FCMD)을 기반으로 제1 프로세서(510)는 필터링 조건 데이터(FCD)를 생성하기 위한 제어 신호를 생성할 수 있으며, 제2 프로세서(520)는 상기 제어 신호를 기반으로 필터링 조건 데이터(FCD)를 생성할 수 있다.
제1 프로세서(510)는 도2 의 하드웨어 필터(420)의 제1 힌트 정보(HI1)의 생성을 제어할 수 있으며, 제1 힌트 정보(HI1)를 수신할 수 있다. 제1 힌트 정보(HI1)는 제1 리드 데이터(RDATA1)에 대한 것으로, 제1 리드 데이터(RDATA1)와 필터링 조건 데이터를 비교한 결과를 기반으로 생성된 것일 수 있다. 일 실시예로, 필터링 조건 데이터는 매칭 키 데이터를 포함할 수 있으며, 제1 힌트 정보(HI1)는 제1 리드 데이터(RDATA1)가 상기 매칭 키 데이터를 포함하는지 여부를 나타낼 수 있다.
제1 리드 데이터(RDATA1)는 호스트의 제1 리드 명령에 응답하여 출력될 수 있으며, 제1 힌트 정보(HI1)는 제1 프로세서(510)의 레지스터에 저장될 수 있다. 이렇게 제1 프로세서(510)에 저장된 제1 힌트 정보(HI1)를 제2 프로세서(520)에 제공될 수 있다. 이 때, DMA(530)는 다른 프로세서의 별도의 명령없이 제1 힌트 정보(HI1)를 제2 프로세서(520)로 제공할 수 있다. 제2 프로세서(520)는 제1 프로세서(510)으로부터 제공받은 힌트 정보를 저장할 수 있는 레지스터를 포함할 수 있다. 소프트웨어 필터(525)는 제공받은 힌트 정보를 기반으로, 각각의 리드 데이터를 선택적으로 필터링할 수 있다.
도1 과 도3을 참고하면, 메모리 컨트롤러(540)는 도1 의 주기억 장치(330)를 제어하는 것으로서, 제1 리드 데이터(RDATA1)를 도1 의 보조기억장치(320)로부터 출력받아, 주기억 장치(330)에 저장할 수 있다.
본 발명의 일 실시예로, 제2 프로세서(520)는 제1 프로세서(510)로부터 제1 힌트 정보(HI1)를 제공받고, 제1 힌트 정보(HI1)가 제1 리드 데이터(RDATA1)는 사용자가 원하는 매칭 키 데이터를 포함하는 것을 나타내는 경우, 제2 프로세서(520)는 제1 힌트 정보(HI1)를 기반으로, 메모리 컨트롤러(540)에 제1 리드 데이터(RDATA1)를 요청하는 데이터요청신호(DRS)를 제공할 수 있다. 데이터요청신호(DRS)에 응답하여, 메모리 컨트롤러(540)는 제2 프로세서(520)에 제1 리드 데이터(RDATA1)를 제공할 수 있으며, 제2 프로세서(520)는 상기 제1 리드 데이터(RDATA1)를 필터링 조건 데이터(FCD)를 기반으로 필터링 동작을 수행할 수 있다.
제1 힌트 정보(HI1)가 제1 리드 데이터(RDATA1)는 상기 매칭 키 데이터를 포함하지 않는 것을 나타내는 경우, 제2 프로세서(520)는 제1 힌트 정보(HI1)를 기반으로, 메모리 컨트롤러(540)에 제1 리드 데이터(RDATA1)를 요청하지 않으며, 그에 따라 제1 리드 데이터(RDATA1)에 대한 필터링 동작을 수행하지 않을 수 있다.
이와 같은 방식으로, 하드웨어 필터가 생성한 제2 힌트 정보(HI2) ,제3 힌트 정보(HI3)등을 제1 프로세서(510)로부터 제공받아 제2 리드 데이터(RDATA2), 제3 리드 데이터(RDATA3) 등을 선택적으로 필터링할 수 있다. 이를 통하여, 필터링 동작 수행시의 데이터 트래픽을 줄일 수 있는 효과가 있다. 이는 일 실시예로, 제1 프로세서(510) 및 제2 프로세서(520)는 하나의 블록으로 구현될 수 있어, 힌트 정보의 전송없이 하나의 블록 내에서 필터링 동작을 수행할 수 있다.
도4 는 본 발명의 일 실시예에 따른 하드웨어 필터(600)의 블록도를 나타내는 도면이다.
하드웨어 필터(600)는 데이터 버퍼(610), 레지스터(620), 비교기(630) 및 힌트 생성부(640)을 포함한다. 데이터 버퍼(610)는 제1 리드 데이터(RDATA1)를 수신하여, 저장할 수 있으며, 제1 리드 데이터(RDATA1)는 메타데이터(MDATA)와 데이터(DATA)를 포함할 수 있다. 데이터 버퍼(610)는 비교기(630)에 메타데이터(MDATA)를 제외한 데이터(DATA)를 제공할 수 있다. 다만, 이는 일 실시예로 데이터(DATA)는 제1 리드 데이터(RDATA1) 이외의 다른 리드 데이터를 데이터 버퍼(610)가 수신한 경우, 다른 리드 데이터가 포함하는 데이터(DATA)에 해당할 수 있다. 레지스터(620)는 필터링 조건 데이터(FCD)를 저장할 수 있으며, 더 나아가 필터링 조건 데이터(FCD)가 포함하는 매칭 키 데이터(MKD)를 저장할 수 있다. 예컨대, 레지스터(620)는 버퍼의 기능을 수행할 수 있는 SRAM으로 구현될 수 있다. 비교기(630)는 레지스터(620)로부터 출력된 매칭 키 데이터(MKD)와 제1 리드 데이터(RDATA1)의 데이터(DATA)를 서로 비교하고, 비교 결과에 따라 비교 신호(CRS)를 생성할 수 있다. 힌트 생성부(640)는 비교 신호(CRS)를 기반으로, 제1 힌트 정보(HI1)를 생성하고, 프로세서에 제공할 수 있다.
도5 는 본 발명의 일 실시예에 따른 비교기(700)의 블록도를 나타낸 도면이다.
도5 를 참조하면, 비교기(700)는 복수의 데이터 타입 비교기들(710~750)과 로직 블록(760)을 포함한다. 각 데이터 종류 비교기(710~750)는 매칭 키 데이터(MKD)와 도4 의 데이터 버퍼(610)이 수신한 리드 데이터가 포함하는 데이터(DATA)를 서로 비교하고, 비교 결과에 따라 각 비교 신호(CP1~CP5)를 생성할 수 있다.
데이터 종류(data type)는 다양한 데이터의 종류들 각각을 식별하기 위한 분류이다. 예컨대, 상기 데이터 종류는 정수들(integers), 부울리언들(Booleans), 문자들(characters), 부동 소수점수들(floating-pointnumbers), 및 글자숫자열들 (alphanumeric strings) 등을 포함한다.
제1데이터 종류 비교기(710)는 정수들을 비교할 수 있고, 상기 정수들은 매칭 키 데이터(MKD)와 데이터(DATA)를 의미할 수 있다. 제2데이터 종류 비교기(720)는 부울리언들을 비교할 수 있고, 상기 부울리언들은 매칭 키 데이터(MKD)와 데이터(DATA)를 의미할 수 있다. 제3데이터 종류 비교기(730)는 문자들을 비교할 수 있고, 상기 문자들은 매칭 키 데이터(MKD)와 데이터(DATA)를 의미할 수 있다. 제4데이터 종류 비교기(740)는 부동 소수점수들을 비교할 수 있고, 상기 부동 소수점수들은 매칭 키 데이터(MKD)와 데이터(DATA)를 의미할 수 있다. 제5데이터 종류 비교기(750)는 글자숫자열들을 비교할 수 있고, 상기 글자숫자열들은 매칭 키 데이터(MKD)와 데이터(DATA)를 의미할 수 있다. 로직 블록(760)는 각 비교 신호(CP1~CP5)를 논리 연산하고, 연산 결과에 따라 비교 신호(CRS)를 생성할 수 있다. 예컨대, 로직 블록(760)는 XOR 게이트로 구현될 수 있다.
도5 에서는 설명의 편의를 위해, 5개의 비교기들(710~750)이 도시되어 있으나 이는 예시적인 것에 불과하다. 따라서, 비교기들의 개수는 비교기(700)에서 사용되는 데이터 종류에 따라 다양하게 변경 가능하다.
도6 은 데이터 처리 시스템(800)의 동작을 설명하기 위한 일 실시예이다.
도6 을 참고하면, 데이터 처리 시스템(800)은 보조 기억 장치로서 플래시 메모리(810), 하드웨어 필터(820), 제1 프로세서(830), 제2 프로세서(840), DMA(850), 메모리 컨트롤러(860), 주기억장치로서 DRAM(870), 호스트 인터페이스(880) 및 데이터 버스(890)를 포함한다.
플래시 메모리(810)는 호스트 인터페이스(880)로부터 리드 명령에 응답하여, 제1 리드 데이터(RDATA1), 제2 리드 데이터(RDATA2) 및 제3 리드 데이터(RDATA3)를 하드웨어 필터(820)에 제공할 수 있다. 또한, 제1 내지 제3 리드 데이터(RDATA1~RDATA3)는 메모리 컨트롤러(860)에 의하여, DRAM(870)에 저장될 수 있다. 데이터 리드 단위는 페이지 단위로, 제1 내지 제3 리드 데이터(RDATA1~RDATA3)는 페이지 단위에 해당할 수 있다. 테이블 형태로 개시된 제1 내지 제3 페이지(Page1~Page3)는 SQL(Structured Query Language)로 처리 가능한 형태로 저장된 데이터일 수 있다.
컬럼 이름들(P_id, NAME, 및 CITY)은 컬럼 리스트(column list)를 의미하고, 'Kim, Seoul' 등은 컬럼 연산자 값(column operator value)을 의미할 수 있다.
하드웨어 필터(820)는 제1 내지 제3 리드 데이터(RDATA1~RDATA3)를 수신하여, 제1 내지 제3 힌트 정보(HI1~HI3)를 생성할 수 있다. 제1 리드 데이터(RDATA1)에 해당하는 제1 페이지, 제2 리드 데이터(RDATA2)에 해당하는 제2 페이지, 제3 리드 데이터(RDATA3)에 해당하는 제3 페이지를 참고하면, 각각의 페이지들은 각각 컬럼 이름들(P_id, NAME, City)에 대응하는 로우 데이터(Row DATA)를 포함할 수 있다. 호스트 인터페이스(880)는 필터링 명령(FCMD)을 출력할 수 있으며, 필터링 명령(FCMD)에 기초하여 필터링 조건 데이터(FCD)가 생성될 수 있다. 필터링 조건 데이터(FCD)는 사용자가 원하는 매칭 키 데이터(MKD)를 포함하며, 매칭 키 데이터(MKD)는 'Seoul'일 수 있다.
하드웨어 필터(820)는 제1 리드 데이터(RDATA1)에 해당하는 제1 페이지(Page1)의 로우 데이터와 매칭 키 데이터(MKD)인 'Seoul'과 비교할 수 있다. 일 실시예로, 제1 페이지(Page1)는 'Seoul' 이라는 데이터를 포함하고 있지 않으며, 하드웨어 필터(820)는 이 결과를 기반으로 제1 힌트 정보(HI1)을 생성할 수 있다. 하드웨어 필터(820)는 제2 리드 데이터(RDATA2)에 해당하는 제2 페이지(Page2)의 로우 데이터와 매칭 키 데이터(MKD)인 'Seoul'과 비교할 수 있다. 제2 페이지(Page2)는 'Seoul'이라는 데이터를 포함하고 있지 않으며, 하드웨어 필터(820)는 이 결과를 기반으로 제2 힌트 정보(HI2)을 생성할 수 있다. 하드웨어 필터(820)는 제3 리드 데이터(RDATA3)에 해당하는 제3 페이지(Page3)의 로우 데이터와 매칭 키 데이터(MKD)인 'Seoul'과 비교할 수 있다. 제3 페이지(Page3)는 'Seoul'이라는 데이터를 포함하고 있으며, 하드웨어 필터(820)는 이 결과를 기반으로 제3 힌트 정보(HI3)을 생성할 수 있다. 힌트 정보 테이블(HIT)와 같이 제1 및 제2 페이지(Page1, Page2)에 대하여 제1 및 제2 힌트 정보(HI1, HI2)는 '0' 의 값을 가지고, 제3 페이지(Page3)는 '1' 의 값을 가질 수 있다.
제1 프로세서(830)는 하드웨어 필터(820)가 힌트 정보를 생성하는 것을 제어할 수 있다. 예를 들면, 호스트 인터페이스(880)로부터 수신한 필터링 명령(FCMD)에 응답하여, 리드 데이터에 대한 힌트 정보를 생성하기 위하여, 하드웨어 필터(820)에 힌트 정보 생성 명령 제어신호를 제공할 수 있다. 제1 프로세서(830)는 하드웨어 필터(820)로부터 제1 내지 제3 힌트 정보(HI1~HI3)를 수신하여, 저장할 수 있다. DMA(850)는 제1 프로세서(830)로부터 제1 내지 제3 힌트 정보(HI1~HI3)를 제2 프로세서(840)에 전송할 수 있다.
제2 프로세서(840)는 제1 내지 제3 힌트 정보(HI1~HI3)를 저장하고, 이를 기반으로, 소프트웨어 필터(845)는 제1 내지 제3 리드 데이터(RDATA1~RDATA3)에 대한 필터링 동작을 수행할 수 있다. 즉, 제1 내지 제3 힌트 정보(HI1~HI3)를 참조할 때, 매칭 키 데이터인 'Seoul'을 포함하는 것은 제3 리드 데이터(RDATA3)에 해당하므로, 제3 리드 데이터(RDATA3)에 대해서만 필터링 동작을 수행할 수 있다. 따라서, 소프트웨어 필터(845)는 메모리 컨트롤러(860)에 제3 리드 데이터(RDTAT3)를 요청하는 데이터요청신호(DRS)를 제공할 수 있다. 메모리 컨트롤러(860)는 데이터요청신호(DRS)에 응답하여, DRAM(870)에 저장된 제3 리드 데이터(RDATA3)를 소프트웨어 필터(845)에 제공할 수 있다.
이를 통하여, 소프트웨어 필터(845)는 제1 내지 제3 리드 데이터(RDATA1~RDATA3) 중 제3 리드 데이터(RDATA3)만을 필터링할 수 있다. 소프트웨어 필터(845)는 제3 리드 데이터(RDATA3)가 필터링되어 'Seoul'이라는 데이터를 포함하는 로우 데이터만 필터링된 제3 필터링된 데이터(FDATA3)를 생성할 수 있다. 제3 필터링된 데이터(FDATA3)의 단위는 레코드(Record) 단위일 수 있으며, 레코드(Record)에 대한 설명은 후술하기로 한다. 소프트웨어 필터(845)는 제3 필터링된 데이터(FDATA3)를 메모리 컨트롤러(860)에 제공하여, DRAM(870)에 저장할 수 있으며, 메모리 컨트롤러(860)는 호스트 인터페이스(880)에 제3 필터링된 데이터(FDATA3)를 제공할 수 있다. 다만, 이는 일 실시예로, 제2 프로세서(840)에서 호스트 인터페이스(880)로 제3 필터링된 데이터(FDATA3)를 제공할 수 있다. 소프트웨어 필터(840)는 소프트웨어로 프로그램되어 구현될 수 있으며, 더 나아가, 로직 블록으로 구현될 수 있다.
데이터 처리 시스템(800)의 데이터 전송은 데이터 버스(890)을 통하여 전송될 수 있으며, 더 나아가, SATA(serial advance technologyattachment), SAS(Serial Attached SCSI) 또는 PCIe(Peripheral Component Interconnect Express)를 통해 통신함으로써 전송할 수 있다.
도7 은 일 실시예에 따른 비트맵으로 구성된 힌트 정보에 대한 포맷을 나타낸 도면이다.
도7 을 참조하면, 힌트 정보(HI)는 다섯 개의 비트(bit)들의 비트맵으로 구성된 데이터 포맷을 가질 수 있다. 일 실시예로, 힌트 정보(HI)는 부분 매칭 지시자(Partial matching indicator)로서, 매칭 키 데이터(MKD) 중 시작 부분을 포함하는지 여부를 나타내는 비트인 [a], 매칭 키 데이터(MKD) 중 끝 부분을 포함하는 지 여부를 나타내는 비트인 [b]를 포함할 수 있다. 전체 매칭 지시자(Full matching indicator)로서, 매칭 키 데이터(MKD)의 전체를 포함하는 여부를 나타내는 비트인 [c]를 포함할 수 있다. 일부 매칭 레코드 지시자(Partial matching record indicator)로서, 매칭 키 데이터(MKD) 앞에 디리미터(delimiter, DL)이 존재하는지 여부를 나타내는 비트인 [d], 매칭 키 데이터(MKD) 뒤에 디리미터(DL)이 존재하는 지 여부를 나타내는 비트인 [e]를 포함할 수 있다. 일 실시예로, 힌트 정보(HI)의 각 비트들은 다음 표 1에서 나타난 바와 같이 그 상황에 따라 다른 값들을 가질 수 있다.

MKD 시작부분을 포함하는 경우/ 포함하지 않는 경우

[a] = 1 / [a]= 0

MKD 중 끝부분을 포함하는 경우/ 포함하지 않는 경우

[b] = 1 / [b] = 0

MKD 전체 포함하는 경우/ 포함하지 않는 경우

[c] = 1 / [c] = 0

포함된 MKD 앞에 디리미터(DL) 존재하는 경우/ 존재하지 않는 경우

[d] = 1 / [d] = 0

포함된 MKD 뒤에 디리미터(DL) 존재하는 경우/ 존재하지 않는 경우

[e] = 1 / [e] = 0
힌트 정보(HI)는 [a][b][c][d][e]로 구성될 수 있으며, 이에 대한 자세한 서술은 후술한다. 다만, 이는 일 실시예로, 각 비트의 순서를 다르게 설정할 수 있으며, 힌트 정보(HI)의 비트 수와 그에 따른 포맷을 이에 한정하는 것이 아니다.
도8a, 8b, 8c 는 리드 데이터에 대응한 페이지의 데이터 구성에 따른 힌트 정보를 도7 의 표1 따라 나타낸 도면이다.
리드 데이터(RDATA)에 해당하는 페이지(Page)는 다수의 레코드(Record)를 포함한다. 상기 레코드(Record)는 다수의 데이터(data)와 각각의 레코드(Record)를 구분하는 디리미터(delimiter, DL)를 포함한다. 프로세서는 힌트 정보를 참조하여, 인접한 페이지들에 대응하는 각각의 리드 데이터의 필터링 동작을 동시에 수행할지 여부를 결정할 수 있다. 도8a 를 참고하면, i-1번째 페이지(page i-1)와 i번째 페이지(page i)는 인접한 페이지로, i-1번째 페이지(page i-1)는 제1 내지 제3 레코드(Record1~Record3)를 포함할 수 있다. 제1 레코드(Record1)는 두 개의 데이터와 제1 레코드(Record1)의 끝을 나타내는 디리미터(DL)를 포함하고, 제2 레코드(Record2)는 하나의 데이터와 제2 레코드(Record2)의 끝을 나타내는 디리미터(DL)를 포함한다. 또한, 제3 레코드(Record3)는 하나의 데이터와 매칭 키 데이터, 제3 레코드(Record3)의 끝을 나타내는 디리미터(DL)를 포함한다.
도7 을 참조할 때, 제3 레코드(Record3)에 매칭 키 데이터(MKD)가 전체 매칭되므로, 힌트 정보(HI)의 [c]비트는 '1' 의 값을 가질 수 있고, 제3 레코드(Record3)가 포함하는 매칭 키 데이터(MKD) 앞과 뒤에 디리미터(DL)가 존재하므로, [d] 비트와 [e] 비트는 '1' 의 값을 가질 수 있다. 다만, 매칭 키 데이터(MKD)의 부분과 매칭되는 것은 해당 사항이 없으므로 [a]비트와 [b]비트는 '0' 의 값을 가질 수 있다. 이렇게 생성된 힌트 정보(HI)를 기반으로, i-1번째 페이지(page i-1)에 해당하는 제i-1 리드 데이터(RDATA i-1)에 대한 필터링 동작을 수행할 수 있다.
도8b 를 참조하면, i-1번째 페이지(page i-1)는 제1 레코드(Record1), 제2 레코드(Record2) 및 제3 레코드(Record3)의 일부를 포함한다. i 번째 페이지(page i)는 제3 레코드(Record3)의 일부, 제4 레코드(Record4) 및 제5 레코드(Record5)를 포함한다. i-1번째 페이지(page i-1)는 제3 레코드(Record3)의 일부에서 매칭 키 데이터(MKD)의 시작 부분인 제1 매칭 키 데이터(MKD 1)를 포함하고, i 번째 페이지(page i)는 제3 레코드(Record3)의 일부에서 매칭 키 데이터(MKD)의 끝 부분인 제2 매칭 키 데이터(MKD 2)를 포함한다. 예를 들면, 매칭 키 데이터(MKD)는 ‘가나다라마’ 일 수 있으며, 제1 매칭 키 데이터(MKD 1)는 시작 부분 데이터인 ‘가’를 포함하는 데이터이고, 제2 매칭 키 데이터(MKD 2)는 끝 부분 데이터인 ‘마’를 포함하는 데이터에 해당할 수 있다.
도7 을 참조할 때, i-1번째 페이지(page i-1)는 매칭 키 데이터(MKD)의 시작 부분인 제1 매칭 키 데이터(MKD 1)를 포함하므로, [a] 비트는 '1' 의 값을 가질 수 있으며, [b],[c],[d],[e] 비트는 각각 '0' 의 값을 가질 수 있다. 따라서, 제i-1 힌트 정보(HI i-1)는 '10000'의 값을 가질 수 있다. i번째 페이지(page i)는 매칭 키 데이터(MKD)의 끝 부분인 제2 매칭 키 데이터(MKD 2)를 포함하므로, [b] 비트는 '1' 의 값을 가질 수 있으며, 나머지 [a],[c],[d],[e] 비트는 각각 '0' 의 값을 가질 수 있다. 따라서, 제i 힌트 정보(HI i)는 '01000'의 값을 가질 수 있다. 이 경우, 제 i 힌트 정보(HI i), 제 i-1 힌트 정보(HI i-1)를 기반으로 볼때, i-1번째 페이지(page i-1)와 i번째 페이지(page i)에 걸쳐 매칭 키 데이터(MKD)가 포함되는 바, i-1번째 페이지(page i-1)와 i번째 페이지(page i)를 동시에 필터링 동작을 수행하여야, 사용자가 원하는 매칭 키 데이터(MKD)를 포함하는 레코드(Record3)를 얻어낼 수 있게 된다. 즉, 프로세서는 제 i 힌트 정보(HI i), 제 i-1 힌트 정보(HI i-1)를 기반으로, i번째 페이지(page i)에 해당하는 제 i 리드 데이터(RDATA i)와 i-1번째 페이지(page i-1)에 해당하는 제 i-1 리드 데이터(RDATA i-1)를 동시에 필터링 동작 수행할 수 있다.
따라서, 힌트 정보를 기반으로, 인접한 페이지들간의 필터링 동작을 동시에 수행할지 여부를 선택할 수 있으며, 인접한 페이지들에 걸쳐서 매칭 키 데이터(MKD)가 포함된 경우, 상기 인접한 페이지들을 동시에 필터링 동작 수행하여 매칭 키 데이터(MKD)를 얻을 수 있게 된다.
도8c 의 그림(a)를 참고하면, i-1번째 페이지(page i-1)는 제1 레코드(Record1), 제2 레코드(Record2) 및 제3 레코드(Record3)의 일부를 포함한다. i 번째 페이지(page i)는 제3 레코드(Record3)의 일부, 제4 레코드(Record4) 및 제5 레코드(Record5)를 포함한다. i-1번째 페이지(page i-1)는 제3 레코드(Record3) 중 데이터 및 매칭 키 데이터(MKD)를 포함하고, i 번째 페이지(page i)는 제3 레코드(Record3) 중 디리미터(DL)를 포함한다.
도7 을 참고할 때, i-1번째 페이지(page i-1)는 매칭 키 데이터(MKD) 전체를 포함하고 있으므로, [c] 비트는 '1' 의 값을 가지고, 매칭 키 데이터(MKD)의 앞에 제2 레코드(Record2)의 디리미터(DL)가 존재하므로, [d] 비트는 '1' 의 값을 가질 수 있다. 또한, 매칭 키 데이터(MKD)의 뒤에 i-1번째 페이지(page i-1)상에 포함되는 제3 레코드(Record3)에는 디리미터(DL)가 존재하지 않으므로, [e] 비트는 '0'의 값을 가질 수 있다. 제i-1 힌트 정보(HI i-1)는 '00110' 의 값을 가질 수 있다.
필터링 동작을 수행한 결과로서, 매칭 키 데이터(MKD)를 포함하는 제3 레코드(Record3)를 얻기 위하여, i-1 번째 페이지(page i-1)와 i번째 페이지(page i)를 동시에 필터링 동작을 수행하여야 한다. 즉, 프로세서는 제 i-1 힌트 정보(HI i-1)를 기반으로, i번째 페이지(page i)에 해당하는 제 i 리드 데이터(RDATA i)와 i-1번째 페이지(page i-1) 해당하는 제 i-1 리드 데이터(RDATA i-1)를 동시에 필터링 동작 수행할 수 있다.
그림(b)를 참고하면, i번째 페이지(page i)는 매칭 키 데이터(MKD) 전체를 포함하고 있으므로, [c] 비트는 '1' 의 값을 가지고, 매칭 키 데이터(MKD)의 앞에 제2 레코드(Record2)의 디리미터(DL)가 존재하지 않으므로, [d] 비트는 '0' 의 값을 가질 수 있다. 또한, 매칭 키 데이터(MKD)의 뒤에 i번째 페이지(page i)상에 포함되는 제3 레코드(Record3)에는 디리미터(DL)가 존재하므로, [e] 비트는 '1' 의 값을 가질 수 있다. 제i 힌트 정보(HI i)는 '00101'값을 가질 수 있다.
필터링 동작을 수행한 결과로서, 매칭 키 데이터(MKD)를 포함하는 제3 레코드(Record3)를 얻기 위하여, i-1 번째 페이지(page i-1)와 i번째 페이지(page i)를 동시에 필터링 동작을 수행하여야 한다. 즉, 프로세서는 제 i 힌트 정보(HI i)를 기반으로, i번째 페이지(page i)에 해당하는 제 i 리드 데이터(RDATA i)와 i-1번째 페이지(page i-1) 해당하는 제 i-1 리드 데이터(RDATA i-1)를 동시에 필터링 동작 수행할 수 있다.
도9a 및9b 는 본 발명의 다른 일 실시예에 따른 데이터 처리 시스템(900a, 900b)의 동작을 설명하기 위한 도면이다.
도9a 를 참고하면, 도9a 의 데이터 처리 시스템(900a)는 도6 의 데이터 처리 시스템(800)보다 제2 하드웨어 필터(990a)를 더 포함하는 구성을 가질 수 있다.
호스트(980a)는 필터링 명령(FCMD)을 출력할 수 있으며, 필터링 명령(FCMD)에 기초하여 필터링 조건 데이터(FCD)가 생성될 수 있다. 필터링 조건 데이터(FCD)는 사용자가 원하는 매칭 키 데이터(MKD)를 포함할 수 있다. 일 실시예로, 매칭 키 데이터(MKD)는 적어도 하나 이상이며, 제1 하드웨어 필터(920a)와 제2 하드웨어 필터(990a)는 서로 다른 매칭 키 데이터(MKD)를 기반으로, 힌트 정보를 생성할 수 있다.
플래시 메모리(910a)는 호스트(980a)로부터 리드 명령에 응답하여, 다수의 리드 데이터를 포함하는 리드 데이터군(RDATAG)을 제1 하드웨어 필터(920a)에 제공할 수 있다. 각각의 상기 리드 데이터는 호스트(980a)의 각각의 리드 데이터에 대응하는 리드 명령에 응답하여 제공되는 것으로, 페이지 단위의 데이터 일 수 있다. 또한, 리드 데이터군(RDATAG)는 메모리 컨트롤러(960a)에 의하여, DRAM(970a)에 저장될 수 있다.
제1 하드웨어 필터(920a)는 리드 데이터군(RDATAG)을 수신하여, 필터링 조건 데이터(FCD)가 포함하는 제1 필터 매칭 키 데이터(FMKD1)와 리드 데이터군(RDATAG)을 비교하여, 제1 필터 힌트정보군(FHIG1)을 생성할 수 있다. 도6 에서 서술한대로, 리드 데이터군(RDATAG)의 각각의 리드 데이터를 제1 필터 매칭 키 데이터(FMKD1)와 리드 데이터군(RDATAG)을 비교하여, 각각의 힌트 정보를 생성함으로써, 제1 필터 힌트정보군(FHIG1)을 생성할 수 있다.
제1 프로세서(930a)는 제1 하드웨어 필터(920a) 및 제2 하드웨어 필터(990a)가 각각 제1 필터힌트정보군(FHIG1) 및 제2 필터힌트정보군(FHIG2)을 생성하는 것을 제어할 수 있다. 예를 들면, 호스트(980a)로부터 수신한 필터링 명령(FCMD)에 응답하여, 리드 데이터군(RDATAG)에 대한 제1 필터힌트정보(FHIG1) 및 제2 필터힌트정보(FHIG2)를 생성하기 위하여, 제1 하드웨어 필터(920a) 및 제2 하드웨어 필터(990a)에 각각 제1 필터힌트정보군(FHIG1) 생성 명령 제어신호와 제2 필터힌트정보군(FHIG2) 생성 명령 제어신호를 제공할 수 있다. 제1 프로세서(930a)는 제1 하드웨어 필터(920a)로부터 제1 필터힌트정보군(FHIG1)을 수신하여, 저장할 수 있다. DMA(950a)는 제1 프로세서(930a)로부터 제1 필터힌트정보군(FHIG1)을 제2 프로세서(940a)에 전송할 수 있다.
제2 하드웨어 필터(990a)는 메모리 컨트롤러(960a)로부터 리드 데이터군(RDATAG)을 수신하여, 필터링 조건 데이터(FCD)가 포함하는 제2 필터 매칭 키 데이터(FMKD2)와 리드 데이터군(RDATAG)을 비교하여, 제2 필터힌트정보군(FHIG2)을 생성할 수 있다. 다만, 이에 국한되지 않고, 제2 하드웨어 필터(990a)는 플래시 메모리(910a)로부터 리드 데이터군(RDATAG)을 수신받을 수 있다. 도6 에서 서술한대로, 리드 데이터군(RDATAG)의 각각의 리드 데이터를 제2 필터 매칭 키 데이터(FMKD2)와 리드 데이터군(RDATAG)을 비교하여, 각각의 힌트 정보를 생성함으로써, 제2 필터힌트정보군(FHIG2)을 생성할 수 있다. 제2 하드웨어 필터(990a)는 제2 프로세서(940a)에 제2 필터힌트정보군(FHIG2)을 제공할 수 있으며, 다만, 다른 실시예로, 제1 하드웨어 필터(920a)와 같이 제1 프로세서(930a)를 거쳐 제2 프로세서(940a)로 제2 필터힌트정보군(FHIG2)을 제공할 수 있다.
제2 프로세서(940a)는 제1 필터힌트정보군(FHIG1) 및 제2 필터힌트정보군(FHIG2)을 저장하고, 이를 기반으로, 소프트웨어 필터(945a)는 리드 데이터군(RDATAG)에 대한 필터링 동작을 수행할 수 있다. 일 실시예로, 제2 프로세서(940a)는 제1 필터힌트정보군(FHIG1)을 참조하여, 리드 데이터군(RDATAG) 중 제1 필터 매칭 키 데이터(FMKD1)을 포함하는 리드 데이터로 구성된 제1 선택 리드 데이터군(SDATAG1)에 대해서 필터링 동작을 수행할 수 있다. 필터링 동작은 제2 프로세서(940a)의 소프트웨어 필터(945a)가 수행할 수 있다. 따라서, 소프트웨어 필터(945a)는 메모리 컨트롤러(960a)에 제1 선택 리드 데이터군(SDATAG1)을 요청하는 데이터요청신호(DRS)를 제공할 수 있다. 메모리 컨트롤러(960a)는 데이터요청신호(DRS)에 응답하여, DRAM(960a)에 저장된 제1 선택 리드 데이터군(SDATAG1)을 소프트웨어 필터(945a)에 제공할 수 있다.
이를 통하여, 소프트웨어 필터(945a)는 제1 선택 리드 데이터군(SDATAG1)을 필터링할 수 있다. 소프트웨어 필터(945a)는 제1 선택 리드 데이터군(SDATAG1)이 필터링된 제1 필터링된 데이터군(FDATAG1)을 생성할 수 있다.
또 다른실시예로, 제2 프로세서(940a)는 제2 필터힌트정보군(FHIG2)을 참조하여, 리드 데이터군(RDATAG) 중 제2 필터 매칭 키 데이터(FMKD2)을 포함하는 리드 데이터로 구성된 제2 선택 리드 데이터군(SDATAG2)에 대해서 필터링 동작을 수행할 수 있다. 필터링 동작은 제2 프로세서(940a)의 소프트웨어 필터(945a)가 수행할 수 있다. 따라서, 소프트웨어 필터(945a)는 메모리 컨트롤러(960a)에 제2 선택 리드 데이터군(SDATAG2)을 요청하는 데이터요청신호(DRS)를 제공할 수 있다. 메모리 컨트롤러(960a)는 데이터요청신호(DRS)에 응답하여, DRAM(960a)에 저장된 제2 선택 리드 데이터군(SDATAG2)을 소프트웨어 필터(945a)에 제공할 수 있다.
이를 통하여, 소프트웨어 필터(945a)는 제2 선택 리드 데이터군(SDATAG2)을 필터링할 수 있다. 소프트웨어 필터(945a)는 제2 선택 리드 데이터군(SDATAG2)이 필터링된 제2 필터링된 데이터군(FDATAG2)을 생성할 수 있다.
이렇게 생성된 제1 필터링된 데이터군(FDATAG1) 및 제2 필터링된 데이터군(FDATAG2)을 호스트(980a)에 제공할 수 있으며, 그 결과, 사용자는 제1 필터 매칭 키 데이터(MKD1) 또는 제2 필터 매칭 키 데이터(MKD2)를 포함하는 리드 데이터를 얻을 수 있게 된다. 또 다른 실시예로, 제1 프로세서(930a)에 의하여 제2 하드웨어 필터(990a)의 온/오프(On/off)를 제어할 수 있으며, 제2 하드웨어 필터(990a)가 오프된 경우, 제1 하드웨어 필터(920a)만을 이용하여 선택적 필터링 동작을 수행할 수 있고, 제2 하드웨어 필터(990a)가 온된 경우, 제1 하드웨어 필터(920a)와 제2 하드웨어 필터(990a)를 이용하여 선택적 필터링 동작을 수행할 수 있다.
도9b 를 참고하면, 도9a 와는 달리, 소프트웨어 필터(940b)는 제1 필터힌트정보군(FHIG1) 및 제2 필터힌트정보군(FHIG2)을 수신받아, 제1 필터힌트정보군(FHIG1) 및 제2 필터힌트정보군(FHIG2)을 기반으로, 제1 필터 매칭 키 데이터(FMKD1) 및 제2 필터 매칭 키 데이터(FMKD2)를 모두 포함하는 리드 데이터로 구성된 선택 리드 데이터군(SDATAG)에 대해서 선택적 필터링 동작을 수행할 수 있다. 소프트웨어 필터(945b)는 메모리 컨트롤러(960b)에 선택 리드 데이터군(SDATAG)을 요청하는 데이터요청신호(DRS)를 제공할 수 있다. 메모리 컨트롤러(960b)는 데이터요청신호(DRS)에 응답하여, DRAM(960b)에 저장된 선택 리드 데이터군(SDATAG)을 소프트웨어 필터(945b)에 제공할 수 있다.
이를 통하여, 소프트웨어 필터(945b)는 선택 리드 데이터군(SDATAG)을 필터링할 수 있다. 소프트웨어 필터(945b)는 선택적 필터링 동작 수행을 통하여 필터링된 데이터군(FDATAG)을 생성할 수 있다. 이렇게 생성된 필터링된 데이터군(FDATAG) 을 호스트(980b)에 제공할 수 있으며, 그 결과, 사용자는 제1 필터 매칭 키 데이터(MKD1) 및 제2 필터 매칭 키 데이터(MKD2)를 모두 포함하는 리드 데이터를 얻을 수 있게 된다. 제1 프로세서(930b)에 의하여 제2 하드웨어 필터(990b)의 온/오프(On/off)를 제어할 수 있으며, 제2 하드웨어 필터(990b)가 오프된 경우, 제1 하드웨어 필터(920b)만을 이용하여 선택적 필터링 동작을 수행할 수 있고, 제2 하드웨어 필터(990b)가 온된 경우, 제1 하드웨어 필터(920b)와 제2 하드웨어 필터(990b)를 이용하여 선택적 필터링 동작을 수행할 수 있다.
도10 은 본 발명의 일 실시예에 따른 데이터 처리 방법(S100)에 관한 것을 나타낸 순서도이다.
도10 을 참고하면, 데이터 처리 동작을 시작하고(S110), 호스트의 필터링 명령을 통하여 필터링 조건 데이터가 설정하는 단계를 거친다(S120). 필터링 조건 데이터는 호스트로부터 출력된 필터링 명령(FCMD)에 기초하여 생성될 수 있다. 필터링 명령(FCMD)은 데이터베이스로 정보를 요청하는 다양한 명령 및/또는 쿼리(query)를 포함할 수 있다. 필터링 조건 데이터는 사용자가 원하는 데이터인 매칭 키 데이터를 포함할 수 있다. 이 후, 호스트는 리드 명령을 실행하는 단계를 거친다(S130). 리드 명령에 응답하여 제1 기억장치는 리드 데이터를 출력하는 단계를 거친다(S140). 일 실시예로 제1 기억장치는 보조기억장치에 해당할 수 있다. 이후 상기 필터링 조건 데이터와 상기 리드 데이터를 비교하여, 비교 결과를 기반으로 힌트 정보를 생성하고, 프로세서에 제공하는 단계를 거친다(S150). 이후 프로세서는 힌트 정보를 기반으로, 필터링 조건 데이터의 매칭 키 데이터를 포함하는 리드 데이터만을 대상으로 필터링 동작을 수행하는 단계를 거친다(S160). 필터링을 수행한 결과 필터링된 리드 데이터를 생성하고, 이를 제2 기억 장치에 저장하는 단계를 거친다(S170). 일 실시예로, 제2 기억 장치는 주기억장치에 해당할 수 있다. 상기 필터링된 리드 데이터를 호스트로 전송하는 단계를 거친다(S180). 이 후 필터링 수행을 종료한다(S190).
도11 은 본 발명의 실시 예들에 따른 데이터 저장 장치(1000)가 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 11 을 참조하면, 전자 장치(2000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 데이터 저장 장치(1000)를 포함할 수 있다. 한편, 도 11에는 도시되지 않았지만, 전자 장치(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(2000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 11 에 도시된 데이터 저장 장치(1000)는 도1 에 도시된 본 발명의 실시 예에 따른 데이터 저장 장치(1000)가 적용될 수 있다. 따라서, 데이터 저장 장치(1000)는 본 발명에서 제안하는 리드 데이터와 필터링 조건 데이터를 비교하여, 비교결과를 기반으로 힌트 정보를 생성하고, 힌트 정보를 기반으로 하여 필터링 동작을 수행할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(20000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(20000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 12 는 본 발명의 실시 예들에 따른 데이터 처리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도12 를 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도12 에 도시된 카드 컨트롤러(3220) 및 메모리(3230)는 각각 도 1에 도시된 컨트롤러(310) 및 보조기억장치, 주기억장치(320, 330)가 적용될 수 있다.
호스트 시스템(3100)은 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 호스트 커맨드에 응답하여, 카드 컨트롤러(3220)는 본 발명에서 제안하는 힌트 정보를 기반으로한 필터링 동작을 수행할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도13는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
도 13 을 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(40000)은 네트워크(4200)를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4300, 4400, 4500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결되는 다수의 단말들(4300, 4400, 4500)로부터 수신되는 요청을 처리하는 서버(4110) 및 단말들(4300, 4400, 4500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 1에 도시된 데이터 처리 시스템(100)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 제1 리드 명령에 응답하여 제1 리드 데이터를 출력하는 제1 기억 장치;
    상기 제1 리드 데이터를 저장하는 제2 기억 장치; 및
    상기 제1 리드 데이터를 필터링 조건 데이터와 비교한 결과를 기반으로, 제1 힌트 정보를 생성하고, 상기 제1 힌트 정보를 기반으로, 상기 제1 리드 데이터에 대한 필터링 동작 수행 여부를 결정하여, 상기 제1 리드 데이터에 대해 상기 필터링 조건 데이터를 기초로 선택적 필터링 동작을 수행하는 컨트롤러를 포함하며,
    상기 선택적 필터링 동작 수행 결과에 따른 제1 필터링된 데이터를 호스트에 전송하는 데이터 저장 장치.
  2. 제1 항에 있어서,
    상기 컨트롤러는,
    상기 호스트로부터 출력된 필터링 명령에 기반하여 제어 신호를 생성하는 제1 프로세서; 및
    상기 제어 신호에 기반하여 상기 필터링 조건 데이터를 생성하는 제2 프로세서를 포함하는 것을 특징으로 하는 데이터 저장 장치.
  3. 제1 항에 있어서,
    상기 컨트롤러는,
    상기 선택적 필터링 동작의 수행하는 소프트웨어 필터를 포함하는 프로세서를 포함하는 것을 특징으로 하는 데이터 저장 장치.
  4. 제1 항에 있어서,
    상기 컨트롤러는,
    상기 제1 리드 데이터가 상기 필터링 조건 데이터에 포함된 매칭 키 데이터의 포함 여부에 기반하여, 상기 제1 힌트 정보를 생성하는 것을 특징으로 하는 데이터 저장 장치.
  5. 제4 항에 있어서,
    상기 컨트롤러는,
    상기 제1 리드 데이터가 상기 매칭 키 데이터의 전부 또는 일부를 포함하는 것을 나타내는 상기 제1 힌트 정보를 수신한 경우, 상기 제1 리드 데이터를 필터링하고,
    상기 제1 리드 데이터가 상기 매칭 키 데이터의 전부 또는 일부를 불포함하는 것을 나타내는 상기 제1 힌트 정보를 수신한 경우, 상기 제1 리드 데이터를 필터링하지 않는 것을 특징으로 하는 데이터 저장 장치.
  6. 제4 항에 있어서,
    상기 컨트롤러는,
    상기 제1 리드 데이터를 필터링 조건 데이터와 비교한 결과를 기반으로, 제1 힌트 정보를 생성하는 하드웨어 필터를 포함하고,
    상기 하드웨어 필터는,
    상기 매칭 키 데이터를 저장하는 레지스터;
    상기 레지스터로부터 출력된 상기 매칭 키 데이터와 상기 제1 리드 데이터를 비교하고, 비교 신호를 생성하는 비교기; 및
    상기 비교 신호에 응답하여, 상기 제1 리드 데이터가 상기 매칭 키 데이터의 포함 여부를 나타낸 상기 제1 힌트 정보를 생성하는 힌트 생성부를 포함하는 것을 특징으로 하는 데이터 저장 장치.
  7. 제1 항에 있어서,
    상기 제1 기억 장치는, 제2 리드 명령에 응답하여 제2 리드 데이터를 출력하고,
    상기 컨트롤러는, 상기 제2 리드 데이터를 상기 필터링 조건 데이터와 비교한 결과를 기반으로, 제2 힌트 정보를 생성하고, 상기 제2 힌트 정보를 기반으로 상기 제2 리드 데이터를 상기 필터링 조건 데이터에 기초한 선택적 필터링 동작을 수행하고,
    상기 선택적 필터링 동작 수행 결과에 따른 제2 필터링된 데이터를 호스트에 전송하는 것을 특징으로 하는 데이터 저장 장치.
  8. 리드 명령과 필터링 명령을 출력하는 호스트;
    상기 리드 명령에 응답하여, 제1 리드 데이터 및 제2 리드 데이터를 출력하는 제1 기억 장치;
    상기 제1 리드 데이터 및 제2 리드 데이터를 저장하는 제2 기억 장치; 및
    상기 제1 리드 데이터 및 제2 리드 데이터를 필터링 조건 데이터와 비교하여, 제1 힌트 정보 및 제2 힌트 정보를 생성하는 하드웨어 필터 및 상기 필터링 명령에 응답하여, 상기 제1 힌트 정보 및 상기 제2 힌트 정보를 기반으로, 상기 제1 리드 데이터 및 상기 제2 리드 데이터를 상기 필터링 조건 데이터에 기초한 선택적 필터링 동작을 수행하는 프로세서를 포함하는 컨트롤러를 포함하고,
    상기 선택적 필터링 동작 수행 결과에 따른 필터링된 데이터를 호스트에 전송하는 데이터 처리 시스템.
  9. 제8 항에 있어서,
    상기 제1 기억 장치는, 비휘발성 메모리 장치로서,
    상기 제1 리드 데이터는 상기 제1 기억 장치의 n번째 페이지에 저장되고, 상기 제2 리드 데이터는 상기 제1 기억 장치의 n+1번째 페이지에 저장된 것을 특징으로 하는 데이터 처리 시스템.
  10. 제9항에 있어서,
    상기 필터링 조건 데이터는 매칭 키 데이터를 포함하고,
    상기 하드웨어 필터는,
    상기 제1 리드 데이터가 상기 매칭 키 데이터의 일부분인 제1 매칭 키 데이터를 포함하는지 여부를 나타내는 상기 제1 힌트 정보를 생성하고, 상기 제2 리드 데이터가 상기 키 데이터의 일부분인 제2 매칭 키 데이터를 포함하는지 여부를 나타내는 상기 제2 힌트 정보를 생성하며,
    상기 프로세서는,
    상기 제1 힌트 정보 및 상기 제2 힌트 정보를 기반으로, 상기 제1 리드 데이터 및 상기 제2 리드 데이터를 동시에 필터링 동작을 수행하는 것을 특징으로 하는 데이터 처리 시스템.
KR1020150000294A 2015-01-02 2015-01-02 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템 KR102251811B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150000294A KR102251811B1 (ko) 2015-01-02 2015-01-02 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템
US14/979,796 US10133785B2 (en) 2015-01-02 2015-12-28 Data storage device including internal hardware filter and data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150000294A KR102251811B1 (ko) 2015-01-02 2015-01-02 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20160083761A KR20160083761A (ko) 2016-07-12
KR102251811B1 true KR102251811B1 (ko) 2021-05-13

Family

ID=56286659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150000294A KR102251811B1 (ko) 2015-01-02 2015-01-02 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템

Country Status (2)

Country Link
US (1) US10133785B2 (ko)
KR (1) KR102251811B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113536075B (zh) * 2021-07-20 2024-06-04 锐掣(杭州)科技有限公司 数据提取方法、装置及存储介质
US20240106782A1 (en) * 2022-09-28 2024-03-28 Advanced Micro Devices, Inc. Filtered Responses of Memory Operation Messages

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130060993A1 (en) 2010-08-31 2013-03-07 Chanik Park Storage device and stream filtering method thereof
JP2014026646A (ja) 2012-06-22 2014-02-06 Semiconductor Energy Lab Co Ltd 情報処理装置とその駆動方法
US20140337562A1 (en) 2013-05-08 2014-11-13 Fusion-Io, Inc. Journal management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3999093B2 (ja) 2002-09-30 2007-10-31 株式会社東芝 構造化文書検索方法及び構造化文書検索システム
US6947930B2 (en) 2003-03-21 2005-09-20 Overture Services, Inc. Systems and methods for interactive search query refinement
US7546284B1 (en) * 2003-06-11 2009-06-09 Blue Titan Software, Inc. Virtual message persistence service
KR100854032B1 (ko) * 2007-02-09 2008-08-26 삼성전자주식회사 메모리 시스템 및 그것의 데이터 저장 방법
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US9086973B2 (en) * 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
US8832133B2 (en) 2009-08-24 2014-09-09 Microsoft Corporation Answering web queries using structured data sources
KR20120004162A (ko) 2010-07-06 2012-01-12 삼성전자주식회사 데이터베이스 관리 방법 및 이를 이용한 데이터베이스 서버 시스템
US20120054420A1 (en) 2010-08-31 2012-03-01 Jeonguk Kang Storage device and stream filtering method thereof
CA2890516C (en) * 2011-11-07 2018-11-27 Nexgen Storage, Inc. Primary data storage system with quality of service
US8751701B2 (en) 2011-12-26 2014-06-10 Mellanox Technologies Ltd. Host channel adapter with pattern-type DMA
KR101621385B1 (ko) 2012-10-11 2016-05-18 주식회사 케이티 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US10521441B2 (en) * 2014-01-02 2019-12-31 The George Washington University System and method for approximate searching very large data
KR102214511B1 (ko) * 2014-02-17 2021-02-09 삼성전자 주식회사 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130060993A1 (en) 2010-08-31 2013-03-07 Chanik Park Storage device and stream filtering method thereof
JP2014026646A (ja) 2012-06-22 2014-02-06 Semiconductor Energy Lab Co Ltd 情報処理装置とその駆動方法
US20140337562A1 (en) 2013-05-08 2014-11-13 Fusion-Io, Inc. Journal management

Also Published As

Publication number Publication date
US10133785B2 (en) 2018-11-20
KR20160083761A (ko) 2016-07-12
US20160196356A1 (en) 2016-07-07

Similar Documents

Publication Publication Date Title
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
US20170364301A1 (en) Data deduplication
US10210196B2 (en) Data storage device having internal hardware filter, data storage method and data storage system
US10359953B2 (en) Method and apparatus for offloading data processing to hybrid storage devices
US20150067243A1 (en) System and method for executing map-reduce tasks in a storage device
TW201826127A (zh) 數據儲存設備及其操作方法
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
US9430639B2 (en) Data de-duplication in a non-volatile storage device responsive to commands based on keys transmitted to a host
CN108027764B (zh) 可转换的叶的存储器映射
WO2022037015A1 (zh) 一种基于持久性内存的列式存储方法、装置及设备
US9336135B1 (en) Systems and methods for performing search and complex pattern matching in a solid state drive
TW201715401A (zh) 資料儲存設備及其操作方法
US10789003B1 (en) Selective deduplication based on data storage device controller status and media characteristics
US11756619B2 (en) Key storage for sorted string tables using content addressable memory
US11461047B2 (en) Key-value storage device and operating method
EP3506121A1 (en) Method and apparatus to efficiently perform filtering operations in an in-memory relational database
US10733107B2 (en) Non-volatile memory apparatus and address classification method thereof
KR102251811B1 (ko) 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템
KR102695482B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
TW202044259A (zh) 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法
US20230393761A1 (en) Read Look Ahead Based On Key Analysis In Key Value Data Storage Devices
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
US9690652B2 (en) Search device and search method searching data based on key
CN114490726A (zh) 自动灵活模式检测和迁移

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right