KR102213674B1 - 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법 - Google Patents

내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법 Download PDF

Info

Publication number
KR102213674B1
KR102213674B1 KR1020140017917A KR20140017917A KR102213674B1 KR 102213674 B1 KR102213674 B1 KR 102213674B1 KR 1020140017917 A KR1020140017917 A KR 1020140017917A KR 20140017917 A KR20140017917 A KR 20140017917A KR 102213674 B1 KR102213674 B1 KR 102213674B1
Authority
KR
South Korea
Prior art keywords
data
application
memory
storage device
hardware filter
Prior art date
Application number
KR1020140017917A
Other languages
English (en)
Other versions
KR20150096964A (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 KR1020140017917A priority Critical patent/KR102213674B1/ko
Priority to US14/623,107 priority patent/US9652162B2/en
Publication of KR20150096964A publication Critical patent/KR20150096964A/ko
Application granted granted Critical
Publication of KR102213674B1 publication Critical patent/KR102213674B1/ko

Links

Images

Classifications

    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM

Abstract

애플리케이션을 실행하는 CPU와 하드웨어 필터를 포함하는 데이터 저장 장치의 동작 방법은, 상기 애플리케이션이 변경될 때마다 상기 하드웨어 필터가 변경된 애플리케이션을 지원할 수 있도록, 상기 변경된 애플리케이션에 상응하는 초기화 정보에 따라 상기 하드웨어 필터를 초기화하는 단계와, 초기화된 하드웨어 필터가 필터링 조건 데이터에 기초하여 제2메모리로부터 출력된 리드 데이터를 필터링하고 필터된 데이터를 출력하는 단계와, 상기 필터된 데이터를 제1메모리를 통해 호스트로 전송하는 단계를 포함한다.

Description

내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법 {ALL-IN-ONE DATA STORAGE DEVICE HAVING INTERNAL HARDWARE FILTER AND METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 애플리케이션이 변경될 때마다 상기 데이터 저장 장치에 내장된 하드웨어 필터가 변경된 애플리케이션을 지원할 수 있도록 상기 하드웨어 필터를 초기화할 수 있는 장치와 이의 동작 방법에 관한 것이다.
일반적인 서버와 데이터베이스를 포함하는 데이터 서버 시스템에서, 빅 데이터(big data)는 관계형 데이터베이스(relational databases)나 NoSQL 데이터베이스에 저장된다.
상기 관계형 데이터베이스 또는 상기 NoSQL 데이터베이스에 저장된 상기 빅 데이터로부터 원하는 데이터는 SQL(structured query language)을 이용하여 추출된다.
빅 데이터는 데이터베이스로부터 서버(또는 호스트)의 메인 메모리로 전송되고, 상기 서버의 프로세서(또는 CPU)는 상기 메인 메모리에 저장된 상기 빅 데이터로부터 원하는 데이터를 추출한다.
그러나, 서버의 메인 메모리에 저장된 빅 데이터 중에서 일부만이 상기 서버의 프로세서에 의해 추출되므로, 데이터 트래픽(data traffic)의 관점에서 볼 때, 상기 서버의 상기 프로세서를 이용하여 상기 빅 데이터로부터 원하는 데이터를 추출하는 방법은 효율성이 낮다.
데이터베이스는 상기 빅 데이터를 상기 서버로 전송해야 하므로, 상기 서버와 상기 데이터베이스 사이의 데이터 트래픽은 감소하지 않는다.
또한, 프로세서는, 데이터베이스에 저장된 데이터 포맷에 맞는 애플리케이션을 이용하여, 서버의 메인 메모리에 저장된 빅 데이터 중에서 일부만을 추출한다. 따라서, 데이터베이스에 저장된 데이터 포맷이 변경되면, 프로세서는 변경된 데이터 포맷에 맞는 애플리케이션을 사용하여 빅 데이터 중에서 필요한 데이터를 추출해야 한다.
또한, 호스트와 데이터 저장 장치를 포함하는 데이터 처리 시스템에서는, 일반적으로 상기 데이터 처리 장치는 상기 호스트로부터 출력된 필터링 명령에 따라 상기 데이터 처리 장치의 내부 메모리에 저장된 데이터에 대한 필터링 동작을 수행하지 않는다. 또한, 상기 호스트는 상기 필터링 명령에 상응하는 명령도 상기 데이터 저장 장치로 전송하지도 않는다.
본 발명이 이루고자 하는 기술적인 과제는 상술한 문제들을 해결하기 위해 내장된 하드웨어 필터를 포함하고, 애플리케이션이 변경될 때마다 상기 내장된 하드웨어 필터를 교체할 필요 없이 변경된 애플리케이션에 상응하는 초기화 정보에 따라 상기 내장된 하드웨어 필터를 초기화할 수 있는 데이터 저장 장치와 이의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른, 애플리케이션을 실행하는 CPU와 하드웨어 필터를 포함하는 데이터 저장 장치의 동작 방법은, 상기 애플리케이션이 변경될 때마다 상기 하드웨어 필터가 변경된 애플리케이션을 지원할 수 있도록, 상기 변경된 애플리케이션에 상응하는 초기화 정보에 따라 상기 하드웨어 필터를 초기화하는 단계와, 초기화된 하드웨어 필터가 필터링 조건 데이터에 기초하여 제2메모리로부터 출력된 리드 데이터를 필터링하고 필터된 데이터를 출력하는 단계와, 상기 필터된 데이터를 제1메모리를 통해 호스트로 전송하는 단계를 포함한다.
상기 하드웨어 필터를 초기화하는 단계는 상기 변경된 애플리케이션이 지원하는 데이터 형식에 관련된 레이아웃 데이터를 상기 하드웨어 필터의 레지스터에 설정한다.
상기 하드웨어 필터를 초기화하는 단계는 상기 호스트로부터 상기 변경된 애플리케이션에 상응하는 데이터 형식을 지시하는 지시 데이터를 수신하는 단계와, 상기 지시 데이터에 따라 상기 변경된 애플리케이션을 실행하는 단계와, 상기 CPU로부터 출력된 상기 초기화 정보에 따라 상기 하드웨어 필터를 초기화하는 단계를 포함한다.
상기 변경된 애플리케이션을 실행하는 단계는 상기 데이터 저장 장치에 저장된 복수의 애플리케이션들로부터 상기 지시 데이터에 관련된 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션을 선택하고 실행할 수 있다.
상기 복수의 애플리케이션들은 상기 제1메모리와 상기 제2메모리 중에서 어느 하나에 저장될 수 있다.
상기 변경된 애플리케이션을 실행하는 단계는 상기 데이터 저장 장치가 상기 지시 데이터에 관련된 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션의 지원가능 여부를 지시하는 확인 신호를 생성하고 상기 확인 신호를 상기 호스트로 전송하는 단계와, 상기 확인 신호에 따라 상기 호스트로부터 출력된 상기 변경된 애플리케이션을 수신하고, 수신된 변경된 애플리케이션을 실행하는 단계를 포함한다.
상기 애플리케이션은 상기 데이터 저장 장치가 상기 애플리케이션에 상응하는 데이터 형식을 지원하기 위한 펌웨어이다.
본 발명의 실시 예에 따른 일체형(all-in-one) 데이터 저장 장치는 애플리케이션을 실행하는 CPU와, 리드 명령에 응답하여 리드 데이터를 출력하는 제2메모리와, 상기 애플리케이션이 변경될 때마다 상기 CPU로부터 출력된 초기화 정보에 따라, 상기 변경된 애플리케이션이 지원하는 데이터 형식에 해당하는 레이아웃 데이터를 설정하고, 상기 레이아웃 데이터와 필터링 조건 데이터에 기초하여 상기 리드 데이터를 필터링하고, 필터된 데이터를 출력하는 내부 하드웨어 필터와, 제1메모리와, 호스트 컨트롤러와, 상기 필터된 데이터를 상기 제1메모리를 이용하여 상기 호스트 컨트롤러로 전송하는 메모리 컨트롤러를 포함한다.
상기 일체형 데이터 저장 장치는 복수의 애플리케이션들을 저장하는 제3메모리를 더 포함하고, 상기 CPU는 호스트로부터 출력된 상기 데이터 형식을 지시하는 지시 데이터에 기초하여 상기 복수의 애플리케이션들로부터 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션을 선택하고 실행한다.
상기 제2메모리는 플래시(flash) 메모리이고, 상기 제1메모리는 DRAM (dynamic random access memory)이고, 상기 일체형 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive)일 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 상기 일체형 데이터 저장 장치와, 상기 일체형 데이터 저장 장치의 동작을 제어하는 호스트를 포함한다.
상기 데이터 처리 시스템은 데이터베이스 관리 시스템(database management system(DBMS))일 수 있다.
본 발명의 실시 예에 따른 CPU와 내부 하드웨어 필터를 내장하는 일체형 (all-in-one) 데이터 저장 장치는 애플리케이션이 변경될 때마다 상기 내부 하드웨어 필터를 교체하지 않고 상기 내부 하드웨어 필터를 초기화하여 사용할 수 있는 효과가 있다.
상기 일체형 데이터 저장 장치는 불휘발성 메모리로부터 휘발성 메모리로 전송되는 데이터 트래픽을 최소화할 수 있는 효과가 있다.
상기 일체형 데이터 저장 장치에 내장된 상기 내부 하드웨어 필터는 상기 불휘발성 메모리의 근처에서 빅 데이터를 필터링할 수 있으므로, 상기 빅 데이터의 전송에 관련된 트래픽을 감소시킬 수 있는 효과가 있다.
상기 일체형 데이터 저장 장치는 상기 일체형 데이터 저장 장치 내부의 데이터 트래픽을 감소시킬 수 있는 효과가 있다.
상기 일체형 데이터 저장 장치는 상기 내부 하드웨어 필터를 이용하여 빅 데이터를 필터링하고 필터된 데이터를 호스트(또는 서버)로 전송할 수 있으므로, 상기 일체형 데이터 저장 장치와 상기 호스트 사이의 데이터 트래픽을 감소시킬 수 있는 효과가 있다.
호스트는 상기 일체형 데이터 저장 장치에 의해 필터된 데이터를 처리할 수 있으므로, 상기 호스트의 부담이 감소하는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 데이터베이스의 데이터 저장 포맷을 설명하기 위한 일 실시 예를 나타낸다.
도 3은 데이터베이스의 데이터 저장 포맷을 설명하기 위한 다른 실시 예를 나타낸다.
도 4는 데이터베이스의 데이터 저장 포맷을 설명하기 위한 또 다른 실시 예를 나타낸다.
도 5는 도 1에 도시된 제1내부 하드웨어 필터의 일 실시 예를 나타낸다.
도 6은 도 1에 도시된 제1내부 하드웨어 필터의 다른 실시 예를 나타낸다.
도 7은 도 5에 도시된 환경 설정 레지스터에 설정된 레이아웃 데이터의 일 실시 예를 나타낸다.
도 8은 도 5에 도시된 환경 설정 레지스터에 설정된 레이아웃 데이터의 다른 실시 예를 나타낸다.
도 9는 도 1의 데이터 처리 시스템에서 사용되는 SQL(Structured Query Language)의 실시 예를 나타낸다.
도 10은 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 실시 예이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 12는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 14는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 15는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 16은 본 발명의 실시 예에 따른 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
도 17은 본 발명의 실시 예에 따른 변경된 애플리케이션을 실행하는 방법을 설명하기 위한 플로우차트이다.
도 18은 본 발명의 실시 예에 따른 데이터 서버 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(10A)은 호스트(100)와 데이터 저장 장치(200A)를 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(10A)은 데이터베이스 관리 시스템 (database management system(DBMS))을 의미할 수 있다. 상기 DBMS는 계층형 (hierarchical) DBMS, 망형 (network) DBMS, 관계형 DBMS(relational DBMS (RDBMS)), 객체지향형(object-oriented) DBMS, 또는 객체 관계형(object-relational) DBMS를 의미할 수 있다. 상기 DBMS는 컬럼-지향(column-oriented) DBMS 또는 로우-지향(row-oriented) DBMS를 포함할 수 있다.
잘 알려진 DBMS로서 MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Microsoft Access, Oracle, SAP, dBASE, FoxPro, IBM DB2 및 FilemakerPro가 있다.
호스트(100)는 데이터 저장 장치(200A)의 전반적인 동작을 제어할 수 있다. 예컨대, 호스트(100)는 데이터 저장 장치(200A)의 라이트 동작(write operation), 리드 동작(read operation), 또는 필터링 동작(filtering operation) 등을 제어할 수 있다.
호스트(100)는 필터링 명령(FCMD)과 리드 명령(RCMD)을 데이터 저장 장치 (200A)로 출력할 수 있다.
데이터 저장 장치(200A)는 버스(205), CPU(central processing unit; 210), 제3메모리(220), 제2메모리 컨트롤러(230), 제2메모리(240), 제1내부 하드웨어 필터(internal hardware filter; 250), 제1메모리 컨트롤러(260), 제1메모리(270), 및 호스트 컨트롤러(host controller; 280)를 포함할 수 있다.
데이터 저장 장치(200A)는 일체형(all-in-one) 데이터 저장 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(200A)는 솔리드 스테이트 드라이브(solid state drive(SSD)) 또는 하드디스크 드라이브(hard disc drive(HDD))로 구현될 수 있다.
CPU(210)는 제3메모리(220), 제2메모리 컨트롤러(230), 제1내부 하드웨어 필터(250), 제1메모리 컨트롤러(260), 및 호스트 컨트롤러(280)의 동작을 제어할 수 있다.
CPU(210)는 애플리케이션(예컨대, 데이터베이스 애플리케이션(DB_A))을 실행할 수 있다. 이때, 상기 애플리케이션은 펌웨어(firmware)일 수 있다. 여기서, 데이터베이스 애플리케이션은 전산화(computerized) 데이터베이스로부터 정보를 입력하고 검색하는(entering and retrieving) 것을 주목적으로 하는 컴퓨터 프로그램을 의미한다.
본 명세서에서 애플리케이션은 본 명세서에서 설명될 데이터 저장 장치에 저장된 데이터를 관리할 수 있는 애플리케이션을 의미하고, 상기 애플리케이션은 데이터베이스 애플리케이션과 동일한 기능 또는 유사한 기능을 수행할 수 있는 다양한 종류의 애플리케이션을 포함하는 개념으로 설명된다.
CPU(210)는, 애플리케이션이 변경될 때마다, 변경된 애플리케이션(DB_A)을 실행할 수 있다.
제1내부 하드웨어 필터(250)는, 데이터 형식의 종류에 따라 애플리케이션이 변경될 때마다, 상기 애플리케이션에 관련된 정보를 이용하여 재구성 (reconfiguration)될 수 있다.
실시 예에 따라, 변경된 애플리케이션(DB_A)에 따라 데이터 저장 장치 (200A)는 상기 변경된 애플리케이션(DB_A)에 상응하는 데이터 형식(예컨대, 데이터베이스 형식)을 지원할 수 있다.
다른 실시 예에 따라, 변경된 애플리케이션(DB_A)은 제1메모리(270) 또는 제2메모리(240)에 저장될 수 있다.
또 다른 실시 예에 따라, 변경된 애플리케이션(DB_A)은 제3메모리 (220)에 저장될 수 있다.
타켓 애플리케이션이 변경될 때마다 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)를 제1내부 하드웨어 필터(250)로 전송할 수 있다. 즉, 제1내부 하드웨어 필터(250)는 초기화 정보(IIM)를 이용하여 재구성 (reconfiguration)될 수 있다.
CPU(210)는 호스트(100)로부터 필터링 명령(FCMD)을 수신하고, 수신된 필터링 명령(FCMD)을 해석하고, 해석의 결과에 기초하여 필터링 조건 데이터(FCD)를 생성하고, 필터링 조건 데이터(FCD)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
실시 예에 따라, 필터링 명령(FCMD)은 쿼리(query) 또는 데이터베이스로 정보를 요청하는 다양한 명령을 포함할 수 있다.
다른 실시 예에 따라, 필터링 명령(FCMD)은 벤더 특유한(vendor specific) 명령일 수 있다.
또 다른 실시 예에 따라, 필터링 명령(FCMD)은 리드 명령(RCMD)을 포함할 수 있다.
또 다른 실시 예에 따라, 필터링 조건 데이터(FCD)는 변경된 애플리케이션 (DB_A) 또는 API(application programming interface)를 통해 제1내부 하드웨어 필터(250)에 프로그램될 수 있다.
CPU(210)는 호스트(100)로부터 출력된 리드 명령(RCMD)에 기초하여 명령을 생성하고, 생성된 명령을 제2메모리 컨트롤러(230)로 출력할 수 있다.
제3메모리(220)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
상기 휘발성 메모리는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-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)로 구현될 수 있다.
제2메모리 컨트롤러(230)는 CPU(210)로부터 출력된 명령에 응답하여 제1리드 명령(RCMD1)을 생성하고, 제1리드 명령(RCMD1)을 제2메모리(240)로 전송할 수 있다.
제2메모리(240)는 제1리드 명령(RCMD1)에 응답하여 제1리드 데이터(RDATA1)를 제1내부 하드웨어 필터(250)로 출력할 수 있다. 예컨대, 제1리드 데이터 (RDATA1)는 빅 데이터(big data)일 수 있다.
제1리드 데이터(RDATA1)는 메타데이터(metadata) 및/또는 데이터(data)를 포함할 수 있다. 예컨대, 상기 메타데이터는 헤더, 오프셋, 및/또는 포인터를 포함할 수 있다.
제1리드 데이터(RADTA)의 데이터는 로우(row), 레코드(record), 또는 투플 (tuple)로 불릴 수 있다. 상기 데이터의 컬럼(column)은 필드(field) 또는 속성 (attribute)으로 불릴 수 있다.
제2메모리(240)는 데이터를 저장하는 데이터베이스의 기능을 수행할 수 있다.
제2메모리(240)는 불휘발성(non-volatile) 메모리로 구현될 수 있다.
예컨대, 제2메모리(240)는 NAND 플래시 어레이로 구현될 수 있다.
제1내부 하드웨어 필터(250)는 CPU(210)로부터 출력되고 변경된 타켓 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 초기화될 수 있다.
즉, 타켓 애플리케이션이 변경될 때마다 제1내부 하드웨어 필터(250)는, 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)을 지원할 수 있다.
초기화된 제1내부 하드웨어 필터(250)는 필터링 조건 데이터(FCD)에 기초하여 제1리드 데이터(RDATA1)를 필터링하고, 제1필터된 데이터(filtered data; FDATA1)를 버스(205)로 출력할 수 있다.
제1내부 하드웨어 필터(250)가 데이터 저장 장치(200A)의 내부에 구현됨에 따라, 제1내부 하드웨어 필터(250)는 제1리드 데이터(RADTA1)를 필터링(filtering)하여 제1필터된 데이터(FDATA1)를 제1메모리(270)로 전송하기 때문에, 제2메모리 (240)로부터 제1메모리(270)로 전송되는 제1필터된 데이터(FDATA1)의 트래픽 (traffic)이 최소화될 수 있다.
또한, 제1내부 하드웨어 필터(250)가 제2메모리(240)의 가까운 곳에서 빅 데이터, 예컨대 제1리드 데이터(RDATA1)를 필터링(또는 스캐닝)할 수 있으므로, 제2메모리(240)로부터 제1메모리(270)로 전송되는 빅 데이터의 트래픽이 감소할 수 있다.
데이터 저장 장치(200A)가 SSD로 구현되고 제2메모리(240)가 NAND 플래시 메모리로 구현될 때, 제1내부 하드웨어 필터(250)가 상기 NAND 플래시 메모리에 가깝게 구현됨에 따라, 상기 SSD 내부의 데이터 트래픽은 감소할 수 있다.
제1메모리 컨트롤러(260)는 제1내부 하드웨어 필터(250)로부터 출력된 제1필터된 데이터(FDATA1)를 버스(205)를 통해 수신하고, 수신된 제1필터된 데이터 (FDATA1)를 제1메모리(270)에 저장하고, 제1메모리(270)에 저장된 제1필터된 데이터(FDATA1)을 리드하고, 리드된 제1필터된 데이터(FDATA1)를 버스(205)를 통해 호스트 컨트롤러(280)로 전송할 수 있다.
제1메모리(270)는 제1필터된 데이터(FDATA1)를 저장할 수 있다. 제1메모리 (270)는 상술한 휘발성 메모리로 구현될 수 있다.
호스트(100)와 데이터 저장 장치(200A)는 호스트 컨트롤러(280)를 통해 데이터(또는 신호) 및/또는 명령을 주거나 받을 수 있다.
호스트 컨트롤러(280)는 제1필터된 데이터(FDATA1)를 신호 라인(101)을 통해 호스트(100)로 전송할 수 있다. 예컨대, 신호 라인(101)은 전기적 신호 라인 또는 광학적(optical) 신호 라인으로 구현될 수 있다. 신호 라인(101)은 하나 또는 그 이상의 신호 라인들을 포함할 수 있다.
도 2는 데이터베이스의 데이터 저장 포맷을 설명하기 위한 일 실시 예이고, 도 3은 데이터베이스의 데이터 저장 포맷을 설명하기 위한 다른 실시 예이고, 도 4는 데이터베이스의 데이터 저장 포맷을 설명하기 위한 또 다른 실시 예이다.
도 2부터 도 4에서는 애플리케이션이 지원하는 데이터 형식(또는 데이터베이스 형식), 즉 데이터의 저장 포맷을 도시하고 있다.
도 2부터 도 4에서는 세 가지 데이터 저장 포맷이 도시되어 있으나, 상기 데이터 저장 포맷은 이에 한정되지 않는다.
도 1부터 도 4를 참조하면, 호스트(100)로부터 출력된 데이터는 애플리케이션이 지원하는 데이터(또는 데이터베이스) 형식에 따라 제2메모리(240)에 저장될 수 있다.
즉, 제1리드 데이터(RDATA1)는 도 2부터 도 4에 도시된 각 데이터 저장 포맷에 따라 제2메모리(240)에 저장될 수 있다.
제1데이터베이스(예컨대, 제2메모리(240))에 저장되는 제1데이터 레이아웃 (DL1)과 제2데이터베이스(예컨대, 제2메모리(240))에 저장되는 제2데이터 레이아웃 (DL2)은 서로 다를 수 있다.
예컨대, 헤더(HEADER), 로우들(ROW1~ROWN; N은 자연수), 및 로우 오프셋들 (OFF1~OFFN)의 위치(예컨대, 저장 위치)는 각 데이터 레이아웃(DL1~DL3)에 따라 다를 수 있다. 여기서, 로우들(ROW1~ROWN) 각각은 데이터를 의미할 수 있다.
또한, 로우(row)의 어드레스의 증가 방향과 로우 오프셋(row offset)의 어드레스의 증가 방향은 각 데이터 레이아웃(DL1~DL3)에 따라 다를 수 있다.
따라서, 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)에 상응하는 데이터 형식(또는 데이터베이스 형식), 예컨대 데이터 레이아웃(DL1, DL2, 또는 DL3)을 지원할 수 있도록, 제1내부 하드웨어 필터(250)는, CPU(210)로부터 출력된 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라, 적응적으로 초기화될 수 있다.
도 5는 도 1에 도시된 제1내부 하드웨어 필터의 일 실시 예를 나타낸다.
도 1부터 도 5를 참조하면, 도 1에 도시된 제1내부 하드웨어 필터(250)의 일 실시 예에 따른 제1내부 하드웨어 필터(250-1)는 컨트롤 로직(control logic; 251), 환경 설정 레지스터(configuration registor; 253), 데이터 버퍼(data buffer; 255), 데이터 추출기(data extractor; 257-1), 및 데이터 비교기(data comparator; 259)를 포함할 수 있다.
컨트롤 로직(251)은 제1내부 하드웨어 필터(250-1)의 전반적인 동작, 예컨대 필터링 동작 및/또는 초기화 동작을 제어할 수 있다.즉, 컨트롤 로직(251)은 환경설정 레지스터(253), 데이터 버퍼(255), 데이터 추출기(257-1), 및 데이터 비교기 (259)의 동작을 제어할 수 있다.
컨트롤 로직(251)은 초기화 정보(IIM)로부터 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 데이터 레이아웃, 예컨대 레이아웃 데이터(L_DATA)를 추출하고, 레이아웃 데이터(L_DATA)를 환경 설정레지스터(253)에 설정할 수 있다.
환경 설정 레지스터(253)는 레이아웃 데이터(L_DATA)를 저장하고, 저장된 레이아웃 데이터(L_DATA)를 데이터 추출기(257-1)로 전송할 수 있다. 예컨대, 환경 설정 레지스터(253)는 데이터 버퍼의 기능을 수행할 수 있는 SRAM으로 구현될 수 있다.
예컨대, 변경된 애플리케이션이 지원하는 데이터 형식에 관련된 레이아웃 데이터(L_DATA)는 환경 설정 레지스터(253)에 설정될 수 있다.
도 7은 도 5에 도시된 환경 설정 레지스터에 설정된 레이아웃 데이터의 일 실시 예를 나타내고, 도 8은 도 5에 도시된 환경 설정 레지스터에 설정된 레이아웃 데이터의 다른 실시 예를 나타낸다.
도 1부터 도 8을 참조하면, 레이아웃 데이터(L_DATA)는 환경 설정 레지스터 (253)의 각 어드레스(ADR1~ADR6)에 저장되는 각 데이터(PT, NR, BR, BO, SO, 및 ADO)를 포함할 수 있다.
제1어드레스(ADR1)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (PT)는 페이지 타입(page type)이 라이트되는 필드에 대한 어드레스 데이터일 수 있다. 예컨대, 상기 페이지 타입은 인데스 페이지(index page)와 데이터 페이지(data page)를 구분하기 위한 데이터를 의미할 수 있다.
제2어드레스(ADR2)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (NR)는 저장된 로우, 예컨대 데이터의 개수가 라이트되는 필드에 대한 어드레스 데이터일 수 있다.
제3어드레스(ADR3)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (BR)는 로우, 예컨대 데이터가 라이트되는 시작 어드레스 데이터일 수 있다.
제4어드레스(ADR4)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (BO)는 로우 오프셋이 라이트되는 시작 어드레스 데이터일 수 있다.
제5어드레스(ADR5)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터(SO)는 로우 오프셋이 라이트되는 필드에 대한 사이즈(size) 데이터일 수 있다.
제6어드레스(ADR6)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (ADO)는 오프셋의 어드레스의 증가 방향에 대한 데이터일 수 있다.
도 8에 도시된 바와 같이, 레이아웃 데이터(L_DATA)는 환경 설정 레지스터 (253)의 어드레스(ADR7)에 저장되는 데이터(ADR)를 더 포함할 수 있다.
제7어드레스(ADR7)에 상응하는(또는 상기 상응하는 영역에 저장되는) 데이터 (ADR)는 로우, 예컨대 데이터의 어드레스의 증가 방향에 대한 데이터일 수 있다.
즉, 레이아웃 데이터(L_DATA)는 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식, 예컨대 데이터 레이아웃에 따라 저장된 제1리드 데이터(RDATA1)의 데이터(예컨대, 로우(row)에 포함된 컬럼들(columns) 또는 필드들 (fields))을 파싱하기 위한 데이터)를 포함할 수 있다.
애플리케이션이 변경될 때마다, 제1내부 하드웨어 필터(250)는, 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터(L_DATA)를 설정할 수 있다.
따라서, 애플리케이션이 변경될 때마다, 데이터 저장 장치(200A)는 제1내부 하드웨어 필터(250)를 교체(또는 수정)할 필요 없이, 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 제1내부 하드웨어 필터(250)를 초기화할 수 있다.
데이터 버퍼(255)는 제2메모리(240)로부터 출력된 제1리드 데이터(RDATA1)를 버퍼링할 수 있다. 예컨대, 데이터 버퍼(255)는 페이지 데이터(page data)를 버퍼링할 수 있다. 예컨대, 데이터 버퍼(255)는 SRAM으로 구현될 수 있다.
데이터 추출기(257-1)는 필터링 조건 데이터(FCD)에 포함된 추출 조건 데이터(ECD)와 레이아웃 데이터(L_DATA)를 이용하여, 제1리드 데이터(RDATA1)의 로우 (row)에 포함된 컬럼들(columns)을 파싱(parsing)하고 파싱의 결과에 따라 제1추출 데이터(FD1)와 제2추출 데이터(FD2)를 추출할 수 있다.
추출 조건 데이터(ECD)는 컬럼을 구분하기 위한 구분 데이터(TIF)와, 비교될 대상이되는 컬럼을 추출하기 위한 컬럼 추출 데이터(QIF)를 포함할 수 있다.
데이터 비교기(259)는 필터링 조건 데이터(FCD)에 포함된 매칭 키 데이터 (MKD)와 제1추출 데이터(FD1)를 비교하고, 비교의 결과에 따라 제2추출 데이터 (FD2)를 제1필터된 데이터(FDATA1)로서 출력할지를 결정할 수 있다.
데이터 비교기(259)는 레지스터(259-1), 비교기(259-3), 및 출력 제어 회로 (259-5)를 포함할 수 있다.
레지스터(259-1)는 매칭 키 데이터(MKD)를 저장할 수 있다. 예컨대, 레지스터(259-1)는 데이터 버퍼의 기능을 수행할 수 있는 SRAM으로 구현될 수 있다.
매칭 키 데이터(MKD)는 데이터 종류(data type)를 지시하는 종류 지시 데이터(D_TYPE), 연산자 종류를 지시하는 연산자 지시 데이터(C_TYPE), 및 실제로 추출하고자 하는 데이터(예컨대, 컬럼 값(column value) 또는 필드 값(field value))를 지시하는 추출 지시 데이터(R_DATA)를 포함할 수 있다.
데이터 종류는 다양한 데이터 종류들 각각을 식별하기 위한 분류일 수 있다. 예컨대, 상기 데이터 종류는 정수들(integers), 부울리언들(Booleans), 문자들 (characters), 부동 소수점수들(floating-point numbers), 및 글자숫자열들 (alphanumeric strings) 등을 포함할 수 있다.
연산자 종류는 같음(equal(=)), 같지 않음(not equal(<> or !=)), 더 큼 (greater than(>)), 더 작음(less than(<)), 더 크거나 같음(greater than or equal(<=)), 또는 더 작거나 같음(less than or equal(<=))을 포함할 수 있다.
비교기(259-3)는 레지스터(259-1)로부터 출력된 기준 데이터(S_DATA)와 제1추출 데이터(FD1)를 비교하고, 비교의 결과에 따라 비교 신호(CRS)를 생성할 수 있다. 예컨대, 비교기(259-3)는 복수의 비교기들을 포함할 수 있다.
기준 데이터(S_DATA)는 매칭 키 데이터(MKD)의 일부 또는 전부에 기초하여 생성될 수 있다.
출력 제어 회로(259-5)는 비교 신호(CRS)에 응답하여 제2추출 데이터(FD2)의 출력 여부를 결정할 수 있다.
예컨대, 연산자 지시 데이터(C_TYPE)가 같음(=)을 나타내는 데이터이고, 기준 데이터(S_DATA)에 포함된 추출 지시 데이터(R_TYPE)와 제1추출 데이터(FD1)가 동일할 때, 출력 제어 회로(259-5)는 제2추출 데이터(FD2)를 제1필터된 데이터 (FDATA1)로서 출력할 수 있다. 그외의 경우, 출력 제어 회로(259-5)는 제2추출 데이터(FD2)를 출력하지 않을 수 있다.
도 6은 도 1에 도시된 제1내부 하드웨어 필터의 다른 실시 예를 나타낸다.
도 6을 참조하면, 도 6에 도시된 제1내부 하드웨어 필터(250-2)는 도 1에 도시된 제1내부 하드웨어 필터(250)의 다른 실시 예이다. 도 6의 제1내부 하드웨어 필터(250-2)의 구조와 동작은 도 5의 제1내부 하드웨어 필터(250-1)의 구조와 동작과 실질적으로 동일할 수 있다.
그러나, 환경 설정 레지스터(253)는 데이터 추출기(257-2) 내부에 구현될 수 있다.
도 9는 도 1의 데이터 처리 시스템에서 사용되는 SQL(Structured Query Language)의 실시 예를 나타낸다.
도 9를 참조하면, SQL(Structured Query Language)은 DBMS에 저장된 데이터를 관리하기 위해 설계된 특별한-목적(special-purpose)의 프로그래밍 언어이다.
컬럼 이름들(PID, NAME, 및 CITY)은 컬럼 리스트(column list)를 의미하고, PERSONS는 테이블(table)을 의미하고, CITY='CITY1'은 컬럼 연산자 값(column operator value)을 의미할 수 있다.
도 10은 도 1에 도시된 데이터 처리 시스템의 동작을 설명하기 위한 실시 예이다.
도 10에서는 설명의 편의를 위해 도 9에 도시된 SQL에 따라 데이터 저장 장치(200A)의 동작을 설명하지만, 실시 예에 따라 데이터 저장 장치(200A)는 제조자에 의해 정의된 쿼리에 따라 동작할 수 있다.
도 1부터 도 10을 참조하면, CPU(210)는 애플리케이션이 변경될 때마다 변경된 애플리케이션(DB_A)을 실행할 수 있다.
CPU(210)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
제1내부 하드웨어 필터(250)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터(L_DATA)를 설정할 수 있다.
CPU(210)는 호스트(100)로부터 필터링 명령(FCMD)을 수신하고, 수신된 필터링 명령(FCMD)을 해석하고, 해석의 결과에 기초하여 필터링 조건 데이터(FCD)를 생성하고, 필터링 조건 데이터(FCD)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
도 9에 도시된 SQL에 따라, 종류 지시 데이터(D_TYPE)는 문자들을 나타내고, 연산자 지시 데이터(C_TYPE)는 같음(=)을 나타내고, 추출 지시 데이터(R_DATA)는 컬럼 값(CITY1)을 나타내고, 구분 데이터(TIF)는 테이블(TAB1)에 포함된 컬럼 이름들(PID, NAME, ADDRSSS, 및 CITY) 중에서 추출될 각 컬럼 이름(PID, NAME, 및 CITY)을 구분하기 위한 데이터를 포함하고, 컬럼 추출 데이터(QIF)는 추출하고자 하는 컬럼 이름(CITY)을 나타낼 수 있다.
제2메모리(240)는 제1리드 명령(RCMD1)에 응답하여 테이블(TAB1)을 제1리드 데이터(RDATA1)로서 제1내부 하드웨어 필터(250)로 출력할 수 있다.
도 10에 도시된 테이블(TAB1)은 설명의 편의를 위해 도 2부터 도 4에 도시된 데이터 저장 포맷과 달리 로우들(ROW1~ROW4)이 정렬되게 도시하였다.
제1내부 하드웨어 필터(250)의 데이터 버퍼(255)는 테이블(TAB1)을 제2메모리(240)로부터 수신하고, 테이블(TAB1)에 포함된 로우들(ROW1~ROW4)을 버퍼링할 수 있다.
데이터 버퍼(255)는 버퍼된 테이블(TAB1)을 제1리드 데이터(RDATA1)로서 데이터 추출기(257-1)로 출력할 수 있다. 즉, 각 데이터 추출기(257-1 또는 257-2)는 데이터 버퍼(255)로부터 필요한 데이터를 읽어갈 수 있다.
데이터 추출기(257-1)는, 구분 데이터(TIF), 컬럼 추출 데이터(QIF)와 레이아웃 데이터(L_DATA)에 기초하여, 제1로우(ROW1)에 포함된 각 컬럼 이름(PID, NAME, ADDRESS, 및 CITY)를 파싱하고 파싱의 결과에 따라 각 컬럼 값(PID1, NAME1, 및 CITY1)을 추출할 수 있다.
데이터 추출기(257-1)는 추출하고자 하는 컬럼(CITY)에 포함된 컬럼 값 (CITY1)을 제1추출 데이터(FD1)로서 비교기(259-3)로 전송할 수 있다.
데이터 추출기(257-1)는 컬럼 값들(PID1, NAME1, 및 CITY1)을 포함하는 제2추출 데이터(FD2)를 출력 제어 회로(259-5)로 전송할 수 있다.
비교기(259-3)는 기준 데이터(S_DATA)에 포함된 컬럼 값(CITY1)과 제1추출 데이터(FD1)인 컬럼 값(CITY1)을 비교하고, 비교의 결과에 따라 일치를 나타내는 비교 신호(CRS)를 출력할 수 있다.
출력 제어 회로(259-5)는, 일치를 나타내는 비교 신호(CRS)에 응답하여, 컬럼 값들(PID1, NAME1, 및 CITY1)을 포함하는 제2추출 데이터(FD2)를 제1필터된 데이터(FDATA1)로서 버스(205)로 출력할 수 있다.
제1메모리 컨트롤러(260)는 컬럼 값들(PID1, NAME1, 및 CITY1)을 포함하는 로우(ROW1')를 제1메모리(270)에 저장할 수 있다.
계속하여, 데이터 추출기(257-1)는, 구분 데이터(TIF), 컬럼 추출 데이터 (QIF)와 레이아웃 데이터(L_DATA)에 기초하여, 제2로우(ROW2)에 포함된 각 컬럼 이름(PID, NAME, ADDRESS, 및 CITY)를 파싱하고 파싱의 결과에 따라 각 컬럼 값 (PID2, NAME2, 및 CITY2)을 추출할 수 있다.
데이터 추출기(257-1)는 추출하고자 하는 컬럼(CITY)에 포함된 컬럼 값 (CITY2)을 제1추출 데이터(FD1)로서 비교기(259-3)로 전송할 수 있다.
데이터 추출기(257-1)는 컬럼 값들(PID2, NAME2, 및 CITY2)을 포함하는 제2추출 데이터(FD2)를 출력 제어 회로(259-5)로 전송할 수 있다.
비교기(259-3)는 기준 데이터(S_DATA)에 포함된 컬럼 값(CITY1)과 제1추출 데이터(FD1)인 컬럼 값(CITY2)을 비교하고, 비교의 결과에 따라 불일치를 나타내는 비교 신호(CRS)를 출력할 수 있다.
출력 제어 회로(259-5)는, 불일치를 나타내는 비교 신호(CRS)에 응답하여, 컬럼 값들(PID2, NAME2, 및 CITY2)을 포함하는 제2추출 데이터(FD2)를 제1필터된 데이터(FDATA1)로서 버스(205)로 출력하지 않는다.
계속하여, 데이터 추출기(257-1)는, 구분 데이터(TIF), 컬럼 추출 데이터 (QIF)와 레이아웃 데이터(L_DATA)에 기초하여, 제3로우(ROW3)에 포함된 각 컬럼 이름(PID, NAME, ADDRESS, 및 CITY)를 파싱하고 파싱의 결과에 따라 각 컬럼 값 (PID3, NAME3, 및 CITY1)을 추출할 수 있다.
데이터 추출기(257-1)는 추출하고자 하는 컬럼(CITY)에 포함된 컬럼 값 (CITY1)을 제1추출 데이터(FD1)로서 비교기(259-3)로 전송할 수 있다.
데이터 추출기(257-1)는 컬럼 값들(PID3, NAME3, 및 CITY1)을 포함하는 제2추출 데이터(FD2)를 출력 제어 회로(259-5)로 전송할 수 있다.
비교기(259-3)는 기준 데이터(S_DATA)에 포함된 컬럼 값(CITY1)과 제1추출 데이터(FD1)인 컬럼 값(CITY1)을 비교하고, 비교의 결과에 따라 일치를 나타내는 비교 신호(CRS)를 출력할 수 있다.
출력 제어 회로(259-5)는, 일치를 나타내는 비교 신호(CRS)에 응답하여, 컬럼 값들(PID3, NAME3, 및 CITY1)을 포함하는 제2추출 데이터(FD2)를 제1필터된 데이터(FDATA1)로서 버스(205)로 출력할 수 있다.
제1메모리 컨트롤러(260)는 컬럼 값들(PID3, NAME3, 및 CITY1)을 포함하는 로우(ROW3')를 제1메모리(270)에 저장할 수 있다.
계속하여, 데이터 추출기(257-1)는, 구분 데이터(TIF), 컬럼 추출 데이터 (QIF)와 레이아웃 데이터(L_DATA)에 기초하여, 제4로우(ROW2)에 포함된 각 컬럼 이름(PID, NAME, ADDRESS, 및 CITY)를 파싱하고 파싱의 경과에 따라 각 컬럼 값 (PID4, NAME4, 및 CITY3)을 추출할 수 있다.
데이터 추출기(257-1)는 추출하고자 하는 컬럼(CITY)에 포함된 컬럼 값 (CITY3)을 제1추출 데이터(FD1)로서 비교기(259-3)로 전송할 수 있다.
데이터 추출기(257-1)는 컬럼 값들(PID4, NAME4, 및 CITY3)을 포함하는 제2추룰 데이터(FD2)를 출력 제어 회로(259-5)로 전송할 수 있다.
비교기(259-3)는 기준 데이터(S_DATA)에 포함된 컬럼 값(CITY1)과 제1추출 데이터(FD1)인 컬럼 값(CITY3)을 비교하고, 비교의 결과에 따라 불일치를 나타내는 비교 신호(CRS)를 출력할 수 있다.
출력 제어 회로(259-5)는, 불일치를 나타내는 비교 신호(CRS)에 응답하여, 컬럼 값들(PID4, NAME4, 및 CITY3)을 포함하는 제2추출 데이터(FD2)를 제1필터된 데이터(FDATA1)로서 버스(205)로 출력하지 않는다.
제1메모리 컨트롤러(260)에 의해 생성된 테이블(TAB2)은 제1메모리(270)에 저장된 후, 제1메모리 컨트롤러(260)는 테이블(TAB2)을 리드하고, 리드된 테이블 (TAB2)을 버스(301)를 통해 호스트 컨트롤러(280)로 전송한다.
호스트 컨트롤러(280)는 도 9의 SQL에 따라 컬럼 값(CITY1)을 포함하는 테이블(TAB2)을 호스트(100)로 전송할 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 11을 참조하면, 데이터 처리 시스템(10B)은 호스트(100)와 데이터 저장 장치(200B)를 포함할 수 있다.
도 11의 데이터 저장 장치(200B)의 CPU(210)와 메모리(220)의 일부 동작을 제외하면, 데이터 저장 장치(200B)의 구조와 동작은 도 1의 데이터 저장 장치 (200A)의 구조와 동작과 실질적으로 동일할 수 있다.
호스트(100)는 데이터 저장 장치(200B)의 동작을 제어할 수 있다.
애플리케이션이 변경될 때마다, 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, 데이터 저장 장치(200B)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 제1내부 하드웨어 필터(250)를 초기화할 수 있다.
호스트(200)는 변경된 애플리케이션(DB_A)에 상응하는 데이터 형식을 지시하는 지시 데이터(IDA)를 데이터 저장 장치(200B)로 출력할 수 있다.
실시 예에 따라, 지시 데이터(IDA)는 필터링 명령(FCMD)에 포함될 수 있다.
CPU(210)는 제3메모리(220), 제2메모리 컨트롤러(230), 제1내부 하드웨어 필터 (250), 제1메모리 컨트롤러(260), 및 호스트 컨트롤러(280)의 동작을 제어할 수 있다.
CPU(210)는, 지시 데이터(IDA)에 따라, 변경된 애플리케이션(DB_A)을 실행할 수 있다.
예컨대, CPU(210)는 제3메모리(220)에 저장된 복수의 애플리케이션들 (DB_A~DB_AN)로부터 지시 데이터(IDA)에 관련된 데이터 형식을 지원하는 변경된 애플리케이션(DB_A)을 선택하고 실행할 수 있다.
실시 예에 따라, 애플리케이션들(DB_A~DB_AN)은 제1메모리(270) 또는 제2메모리(240)에 저장될 수 있다.
애플리케이션이 변경될 때마다, 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
제1내부 하드웨어 필터(250)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터(L_DATA)를 설정할 수 있다.
즉, 제1내부 하드웨어 필터(250)는 CPU(210)로부터 출력된 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 초기화될 수 있다.
도 12는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 12를 참조하면, 데이터 처리 시스템(10C)은 호스트(100)와 데이터 저장 장치(200C)를 포함할 수 있다.
도 12의 데이터 저장 장치(200C)의 CPU(210)의 일부 동작을 제외하면, 데이터 저장 장치(200C)의 구조와 동작은 도 1의 데이터 저장 장치(200A)의 구조와 동작과 실질적으로 동일할 수 있다.
호스트(100)는 데이터 저장 장치(200B)의 동작을 제어할 수 있다.
애플리케이션이 변경될 때마다, 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, 데이터 저장 장치(200C)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 제1내부 하드웨어 필터(250)를 초기화할 수 있다.
호스트(200)는 변경된 애플리케이션(DB_A)에 상응하는 데이터 형식을 지시하는 지시 데이터(IDA)를 데이터 저장 장치(200C)로 출력할 수 있다.
실시 예에 따라, 지시 데이터(IDA)는 필터링 명령(FCMD)에 포함될 수 있다.
CPU(210)는 제3메모리(220), 제2메모리 컨트롤러(230), 제1내부 하드웨어 필터 (250), 제1메모리 컨트롤러(260), 및 호스트 컨트롤러(280)의 동작을 제어할 수 있다.
CPU(210)는 지시 데이터(IDA)에 따라 변경된 애플리케이션(DB_A)을 실행할 수 있다.
예컨대, CPU(210)는 데이터 저장 장치(200C)가 지시 데이터(IDA)에 관련된 데이터 형식을 지원하는 변경된 애플리케이션(DB_A)의 지원가능 여부를 지시하는 확인 신호(IDS)를 생성하고, 확인 신호(IDS)를 호스트(100)로 전송할 수 있다.
CPU210)는 확인 신호(IDS)에 따라 호스트(100)로부터 출력된 변경된 애플리케이션(DB_A)을 수신하고, 변경된 애플리케이션(DB_A)을 실행할 수 있다.
즉, 호스트(100)는, 데이터 저장 장치(200C)가 변경된 애플리케이션(DB_A)을 지원할 수 없다는 확인 신호(IDS)에 응답하여, 변경된 애플리케이션(DB_A)을 데이터 저장 장치(200C)로 전송할 수 있다.
실시 예에 따라, 호스트(100)로부터 출력된 변경된 애플리케이션(DB_A)은 제1메모리(270) 또는 제2메모리(240)에 저장될 수 있다.
다른 실시 예에 따라, 호스트(100)로부터 출력된 변경된 애플리케이션 (DB_A)은 제3메모리(220)에 저장될 수 있다.
애플리케이션이 변경될 때마다, 제1내부 하드웨어 필터(250)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
제1내부 하드웨어 필터(250)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터(L_DATA)를 설정할 수 있다.
제1내부 하드웨어 필터(250)는 CPU(210)로부터 출력된 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 초기화될 수 있다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 13을 참조하면, 데이터 처리 시스템(10D)은 호스트(100)와 데이터 저장 장치(200D)를 포함할 수 있다.
호스트(100)는 데이터 저장 장치(200D)의 동작을 제어할 수 있다.
도 1의 데이터 저장 장치(200A)의 구성요소들(210, 220, 230, 240, 250, 260, 270, 및 280) 이외에, 도 13의 데이터 저장 장치(200D)는 제4메모리(240-1)와 제2내부 하드웨어 필터(250A)를 더 포함할 수 있다.
제4메모리(240-1)와 제2내부 하드웨어 필터(250A)를 제외하면, 도 13의 데이터 저장 장치(200D)의 구조와 동작은 도 1의 데이터 저장 장치(200A)의 구조와 동작과 실질적으로 동일할 수 있다.
제2내부 하드웨어 필터(250A)의 구조와 동작은 제1내부 하드웨어 필터(250)의 구조와 동작과 실질적으로 동일할 수 있다.
도 13에서는 설명의 편의를 위해, 2개의 메모리들(예컨대, 보조 기억 장치; 240과 240-1)에 상응하는 2개의 내부 하드웨어 필터들(250과 250A)이 도시되어 있으나 이에 한정되는 것은 아니다.
즉, 각 내부 하드웨어 필터는 각 채널(또는 각 보조 기억 장치)마다 존재할 수 있다.
호스트(100)는 필터링 명령(FCMD)과 리드 명령(RCMD)을 데이터 저장 장치 (200D)로 출력할 수 있다.
CPU(210)는 애플리케이션이 변경될 때마다 변경된 애플리케이션 (DB_A)을 실행할 수 있다.
애플리케이션이 변경될 때마다, 각 내부 하드웨어 필터(250 및 250A)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션 (DB_A)에 상응하는 초기화 정보(IIM)를 각 내부 하드웨어 필터(250 및 250A)로 전송할 수 있다.
각 내부 하드웨어 필터(250 및 250-1)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터 (L_DATA)를 설정할 수 있다.
CPU(210)는 호스트(100)로부터 필터링 명령(FCMD)을 수신하고, 수신된 필터링 명령(FCMD)을 해석하고, 해석의 결과에 기초하여 필터링 조건 데이터(FCD)를 생성하고, 필터링 조건 데이터(FCD)를 각 내부 하드웨어 필터(250 및 250A)로 전송할 수 있다.
CPU(210)는 호스트(100)로부터 출력된 리드 명령(RCMD)에 기초하여 명령을 생성하고, 생성된 명령을 제2메모리 컨트롤러(230)로 출력할 수 있다.
제2메모리 컨트롤러(230)는 생성된 명령에 응답하여 제1리드 명령(RCMD1)과 제2리드 명령(RCMD2)을 생성하고, 제1리드 명령(RCMD1)을 제2메모리(240)로 전송하고, 제2리드 명령(RCMD2)을 제4메모리(240-1)로 전송할 수 있다.
제2메모리(240)는 제1리드 명령(RCMD1)에 응답하여 제1리드 데이터(RDATA1)를 제1내부 하드웨어 필터(250)로 전송할 수 있다.
제1내부 하드웨어 필터(250)는 레이아웃 데이터(L_DATA)와 필터링 조건 데이터(FCD)에 따라 제1리드 데이터(RDATA1)를 필터링하고, 제1필터된 데이터(FDATA1)를 버스(205)로 출력할 수 있다.
제1메모리 컨트롤러(260)는 제1필터된 데이터(FDATA1)를 제1메모리(270)에 저장할 수 있다.
제4메모리(240-1)는 제2리드 명령(RCMD2)에 응답하여 제2리드 데이터 (RDATA2)를 제2내부 하드웨어 필터(250A)로 전송할 수 있다.
제2내부 하드웨어 필터(250A)는 레이아웃 데이터(L_DATA)와 필터링 조건 데이터(FCD)에 따라 제2리드 데이터(RDATA2)를 필터링하고, 제2필터된 데이터 (FDATA2)를 버스(205)로 출력할 수 있다.
제1메모리 컨트롤러(260)는 제2필터된 데이터(FDATA2)를 제1메모리(270)에 저장할 수 있다.
제1메모리 컨트롤러(260)는 제1필터된 데이터(FDATA1)와 제2필터된 데이터 (FDATA2)를 버스(205)로 전송할 수 있다.
호스트 컨트롤러(280)는 제1필터된 데이터(FDATA1)와 제2필터된 데이터 (FDATA2)를 호스트(100)로 전송할 수 있다.
도 14는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 14를 참조하면, 데이터 처리 시스템(10E)은 호스트(100)와 데이터 저장 장치(200E)를 포함할 수 있다.
호스트(100)는 데이터 저장 장치(200E)의 동작을 제어할 수 있다.
도 14의 데이터 저장 장치(200E)의 CPU(210)와 제3메모리(220)의 일부 동작을 제외하면, 데이터 저장 장치(200E)의 구조와 동작은 도 13의 데이터 저장 장치(200D)의 구조와 동작과 실질적으로 동일할 수 있다.
호스트(100)는 데이터 저장 장치(200E)의 동작을 제어할 수 있다.
호스트(100)는 변경된 애플리케이션(DB_A)에 상응하는 데이터 형식을 지시하는 지시 데이터(IDA)를 데이터 저장 장치(200E)로 출력할 수 있다.
실시 예에 따라, 지시 데이터(IDA)는 필터링 명령(FCMD)에 포함될 수 있다.
CPU(210)는, 지시 데이터(IDA)에 따라, 변경된 애플리케이션(DB_A)을 실행할 수 있다.
예컨대, CPU(210)는 데이터 저장 장치(200E), 예컨대 제3메모리(220)에 저장된 복수의 애플리케이션들(DB_A~DB_AN)로부터 지시 데이터(IDA)에 관련된 데이터 형식을 지원하는 변경된 애플리케이션(DB_A)을 선택하고 실행할 수 있다.
실시 예에 따라, 애플리케이션들(DB_A~DB_AN)은 제1메모리(270) 또는 제2메모리(240)에 저장될 수 있다.
애플리케이션이 변경될 때마다, 각 내부 하드웨어 필터(250 및 250A)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션 (DB_A)에 상응하는 초기화 정보(IIM)를 각 내부 하드웨어 필터 (250 및 250A)로 전송할 수 있다.
각 내부 하드웨어 필터(250 및 250A)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터 (L_DATA)를 설정할 수 있다.
즉, 각 내부 하드웨어 필터(250 및 250A)는 CPU(210)로부터 출력된 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 초기화될 수 있다.
도 15는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 15를 참조하면, 데이터 처리 시스템(10F)은 호스트(100)와 데이터 저장 장치(200F)를 포함할 수 있다.
도 15의 데이터 저장 장치(200F)의 CPU(210)의 일부 동작을 제외하면, 데이터 저장 장치(200F)의 구조와 동작은 도 13의 데이터 저장 장치(200D)의 구조와 동작과 실질적으로 동일할 수 있다.
호스트(100)는 데이터 저장 장치(200F)의 동작을 제어할 수 있다.
호스트(100)는 변경된 DB 애플리케이션(DB_A)에 상응하는 데이터 형식을 지시하는 지시 데이터(IDA)를 데이터 저장 장치(200F)로 출력할 수 있다.
실시 예에 따라, 지시 데이터(IDA)는 필터링 명령(FCMD)에 포함될 수 있다.
CPU(210)는, 지시 데이터(IDA)에 따라, 변경된 애플리케이션(DB_A)을 실행할 수 있다.
예컨대, CPU(210)는 데이터 저장 장치(200F)가 지시 데이터(IDA)에 관련된 데이터 형식을 지원하는 변경된 애플리케이션(DB_A)의 지원가능 여부를 지시하는 확인 신호(IDS)를 생성하고, 확인 신호(IDS)를 호스트(100)로 전송할 수 있다.
CPU(210)는 확인 신호(IDS)에 따라서 호스트(100)로부터 출력된 변경된 애플리케이션(DB_A)을 수신하고, 수신된 애플리케이션(DB_A)을 실행할 수 있다.
즉, 호스트(100)는, 데이터 저장 장치(200F)가 변경된 애플리케이션(DB_A)을 지원할 수 없다는 확인 신호(IDS)에 응답하여, 변경된 애플리케이션(DB_A)을 데이터 저장 장치(200F)로 전송할 수 있다.
실시 예에 따라, 호스트(100)로부터 출력된 변경된 애플리케이션(DB_A)은 제1메모리(270), 제2메모리(240), 또는 제4메모리(240-1)에 저장될 수 있다.
다른 실시 예에 따라, 호스트(100)로부터 출력된 변경된 애플리케이션 (DB_A)은 제3메모리(220)에 저장될 수 있다.
애플리케이션이 변경될 때마다, 각 내부 하드웨어 필터(250 및 250A)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션 (DB_A)에 상응하는 초기화 정보(IIM)를 각 내부 하드웨어 필터(250 및 250A)로 전송할 수 있다.
각 내부 하드웨어 필터(250 및 250A)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터 (L_DATA)를 설정할 수 있다.
즉, 각 내부 하드웨어 필터(250 및 250A)는 CPU(210)로부터 출력된 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)에 따라 적응적으로 초기화될 수 있다.
도 16은 본 발명의 실시 예에 따른 데이터 처리 시스템의 동작을 설명하기 위한 플로우차트이다.
CPU(210), 적어도 하나의 보조 기억 장치(240 및 240-1), 및 적어도 하나의 내부 하드웨어 필터(250 및 250A)를 포함하는 데이터 저장 장치(200A, 200B, 200C, 200D, 200E, 및 200F, 집합적으로 '200')의 동작 방법은 도 1부터 도 16을 참조하여 설명된다.
애플리케이션이 변경될 때마다, 적어도 하나의 내부 하드웨어 필터 (250 및 250A)가 변경된 애플리케이션(DB_A)을 지원할 수 있도록, CPU(210)는 변경된 애플리케이션(DB_A)에 상응하는 초기화 정보(IIM)를 적어도 하나의 내부 하드웨어 필터(250 및 250A)로 전송할 수 있다(S110).
적어도 하나의 내부 하드웨어 필터(250 및 250A)는, 초기화 정보(IIM)에 따라, 변경된 애플리케이션(DB_A)이 지원하는 데이터 형식에 해당하는 레이아웃 데이터(L_DATA)를 설정할 수 있다(S120).
적어도 하나의 보조 기억 장치(240 및 240-1)는 해당하는 리드 명령(RCMD1 및/또는 RCMD2)를 수행하고(S130), 해당하는 리드 데이터(RDATA1 및/또는 RDATA2)를 해당하는 내부 하드웨어 필터(250 및/또는 250A)로 전송할 수 있다(S140).
적어도 하나의 내부 하드웨어 필터(250과 250A)는, 레이아웃 데이터(L_DATA)와 필터링 조건 데이터(FCD)를 이용하여, 해당하는 리드 데이터(RDATA1 및/또는 RDATA2)를 필터링하고, 해당하는 필터링된 데이터(FDATA1 및/또는 FDATA2)를 버스 (205)와 제1메모리 컨트롤러(260)를 통해 제1메모리(270)에 저장할 수 있다 (S150).
제1메모리 컨트롤러(260)는 제1메모리(270)에 저장된 해당하는 필터링된 데이터(FDATA1 및/또는 FDATA2)를 버스(205)와 호스트 컨트롤러(280)를 통해 호스트 (100)로 전송할 수 있다(S160).
도 17은 본 발명의 실시 예에 따른 변경된 애플리케이션을 실행하는 방법을 설명하기 위한 플로우차트이다.
데이터 저장 장치(200)는 호스트(100)로부터 변경된 애플리케이션에 상응하는 데이터 형식을 지시하는 지시 데이터(IDA)를 수신하고(S210), 지시 데이터 (IDA)에 따라 변경된 애플리케이션을 실행한다(S220).
이때, 데이터 저장 장치(200)는 지시 데이터(IDA)에 관련된 데이터 형식을 지원하는 상기 변경된 애플리케이션의 지원가능 여부를 지시하는 확인 신호 (IDS)를 생성하고, 확인 신호(IDS)를 호스트(100)로 전송한다(S222).
데이터 저장 장치(200)는 확인 신호(IDS)에 따라 호스트(100)로부터 출력된 변경된 애플리케이션(DB_A)을 수신하고, 수신된 애플리케이션(DB_A)을 실행한다 (S224).
도 18은 본 발명의 실시 예에 따른 데이터 서버 시스템의 블록도를 나타낸다.
도 18을 참조하면, 데이터 서버 시스템(400)은 복수의 클라이언트들(401), 복수의 웹 서버들(410, ..., 412), 복수의 데이터베이스 서버들(100-1, ..., 100-2), 및 복수의 데이터베이스(DB1, ..., DB2)를 포함한다.
데이터 서버 시스템(400)은 서치 포탈(search portal) 또는 IDC(Internet data center)를 의미할 수 있다.
복수의 클라이언트들(401)은 네트워크를 통해 각 웹 서버(410, ..., 412)와 통신할 수 있다. 복수의 클라이언트들(401) 각각은 PC(personal computer), 랩탑 컴퓨터(laptop computer), 스마트폰, 태블릿(tablet) PC, PDA(personal digital assistant), 또는 모바일 인터넷 장치(mobile internet device(MID))로 구현될 수 있다.
복수의 웹 서버들(410, ..., 412) 각각은 네트워크(414)를 통해 복수의 데이터베이스 서버들(100-1, ..., 100-2) 각각과 통신할 수 있다. 복수의 데이터베이스 서버들(100-1, ..., 100-2) 각각은 호스트(100)의 기능을 수행할 수 있다.
복수의 데이터베이스 서버들(100-1, ..., 100-2) 각각은 복수의 데이터베이스(DB1, ..., DB2) 각각의 동작을 제어할 수 있다.
복수의 데이터베이스 서버들(100-1, ..., 100-2) 각각은 복수의 데이터베이스(DB1, ..., DB2) 각각을 액세스할 수 있다.
각 데이터베이스(DB1, ..., DB2)는 복수의 데이터 저장 장치들(200)을 포함할 수 있다.
복수의 웹 서버들(410, ..., 412)과 복수의 데이터베이스 서버들(100-1, ..., 100-2)은 네트워크를 통해 통신할 수 있다. 상기 네트워크는 유선 네트워크, 무선 네트워크, 인터넷, 또는 이동 전화 네트워크를 포함한다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면, 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10A, 10B, 10C, 10D, 10E, 및 10F: 데이터 처리 시스템
100: 호스트
200A, 200B, 200C, 200D, 200E, 및 200F: 데이터 저장 장치
210: CPU
220: 메모리
230: 제2메모리 컨트롤러
240: 제1보조 기억 장치
240-1: 제2보조 기억 장치
250: 제1내부 하드웨어 필터
250A: 제2내부 하드웨어 필터
260: 제1메모리 컨트롤러
270: 주기억 장치

Claims (20)

  1. CPU, 하드웨어 필터, 제1메모리, 및 제2메모리를 포함하는 데이터 저장 장치의 동작 방법은:
    애플리케이션이 변경될 때마다 상기 하드웨어 필터가 변경된 애플리케이션을 지원할 수 있도록, 상기 변경된 애플리케이션에 상응하는 초기화 정보에 기초하여 상기 하드웨어 필터를 초기화하는 단계;
    필터링 조건 데이터에 기초하여 상기 제2메모리로부터 출력된 리드 데이터를 필터링하는 단계;
    상기 하드웨어 필터를 이용하여 상기 필터된 리드 데이터를 출력하는 단계; 및
    상기 필터된 리드 데이터를 상기 제1메모리를 통해 호스트로 전송하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 하드웨어 필터를 초기화하는 단계는 상기 변경된 애플리케이션이 지원하는 데이터 형식에 관련된 레이아웃 데이터를 상기 하드웨어 필터의 레지스터에 설정하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 하드웨어 필터를 초기화하는 단계는:
    상기 호스트로부터 상기 변경된 애플리케이션에 상응하는 데이터 형식을 지시하는 지시 데이터를 수신하는 단계; 및
    상기 지시 데이터에 기초하여 상기 변경된 애플리케이션을 실행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  4. 제3항에 있어서,
    상기 변경된 애플리케이션을 실행하는 단계는 상기 데이터 저장 장치에 저장된 복수의 애플리케이션들로부터 상기 지시 데이터에 관련된 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션을 선택하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  5. 제4항에 있어서,
    상기 복수의 애플리케이션들은 상기 제1메모리 및 상기 제2메모리 중 하나에 저장되는 데이터 저장 장치의 동작 방법.
  6. 제3항에 있어서,
    상기 변경된 애플리케이션을 실행하는 단계는:
    상기 데이터 저장 장치가 상기 지시 데이터에 관련된 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션의 지원가능 여부를 지시하는 확인 신호를 생성하는 단계;
    상기 확인 신호를 상기 호스트로 전송하는 단계; 및
    상기 확인 신호에 기초하여 상기 호스트로부터 출력된 상기 변경된 애플리케이션을 수신하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  7. 제6항에 있어서,
    상기 호스트로부터 출력된 상기 변경된 애플리케이션은 상기 제1메모리 및 상기 제2메모리 중 하나에 저장되는 데이터 저장 장치의 동작 방법.
  8. 제1항에 있어서,
    상기 애플리케이션은 상기 데이터 저장 장치가 상기 애플리케이션에 상응하는 데이터 형식을 지원하도록 하는 펌웨어인 데이터 저장 장치의 동작 방법.
  9. 애플리케이션을 실행하는 CPU;
    제1메모리;
    리드 명령에 응답하여 리드 데이터를 출력하는 제2메모리;
    상기 애플리케이션이 변경될 때마다 상기 CPU로부터 출력된 초기화 정보에 기초하여 변경된 애플리케이션이 지원하는 데이터 형식에 상응하는 레이아웃 데이터를 설정하고, 상기 레이아웃 데이터와 필터링 조건 데이터에 기초하여 상기 리드 데이터를 필터링하고, 그리고 상기 필터된 리드 데이터를 출력하는 내부 하드웨어 필터;
    호스트 컨트롤러; 및
    상기 필터된 리드 데이터를 상기 제1메모리를 이용하여 상기 호스트 컨트롤러로 전송하는 메모리 컨트롤러를 포함하는 일체형 데이터 저장 장치.
  10. 제9항에 있어서,
    복수의 애플리케이션들을 저장하는 제3메모리를 더 포함하되,
    상기 CPU는 상기 데이터 형식을 지시하는 지시 데이터에 기초하여 상기 복수의 애플리케이션들로부터 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션을 선택하고, 그리고
    상기 CPU는 상기 변경된 애플리케이션을 실행하는 일체형 데이터 저장 장치.
  11. 제9항에 있어서,
    상기 CPU는:
    상기 데이터 형식을 지시하는 지시 데이터에 응답하여 상기 데이터 형식을 지원하는 상기 변경된 애플리케이션의 지원가능 여부를 지시하는 확인 신호를 생성하고,
    상기 확인 신호를 상기 호스트로 전송하고, 그리고
    상기 확인 신호에 기초하여 상기 호스트로부터 출력된 상기 변경된 애플리케이션을 수신하고 실행하는 일체형 데이터 저장 장치.
  12. 제9항에 있어서,
    상기 제2메모리는 플래시(flash) 메모리이고,
    상기 제1메모리는 DRAM(dynamic random access memory)이고, 그리고
    상기 일체형 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive)인 일체형 데이터 저장 장치.
  13. 제9항에 있어서,
    상기 내부 하드웨어 필터는:
    상기 초기화 정보로부터 상기 레이아웃 데이터를 추출하는 컨트롤 로직;
    상기 레이아웃 데이터를 저장하는 레지스터;
    상기 리드 데이터를 버퍼링하는 데이터 버퍼;
    상기 필터링 조건 데이터에 포함된 추출 조건 데이터와 상기 레이아웃 데이터를 이용하여 상기 리드 데이터의 로우(row)에 포함된 컬럼들을 파싱(parsing)하여 제1추출 데이터와 제2추출 데이터를 추출하는 데이터 추출기; 및
    상기 필터링 조건 데이터에 포함된 매칭 키 데이터와 상기 제1추출 데이터를 비교하고 비교 결과에 기초하여 상기 제2추출 데이터를 상기 필터된 리드 데이터로서 출력할지를 결정하는 데이터 비교기를 포함하는 일체형 데이터 저장 장치.
  14. 제1애플리케이션과 제2애플리케이션을 포함하는 복수의 애플리케이션들을 실행하는 CPU;
    휘발성 메모리;
    불휘발성 메모리;
    메모리 컨트롤러; 및
    컨트롤 로직, 환경 설정 레지스터, 데이터 버퍼, 데이터 추출기, 및 데이터 비교기를 포함하는 내부 하드웨어 필터를 포함하되,
    상기 CPU는 상기 제1애플리케이션으로부터 상기 제2애플리케이션으로 실행을 변경하고,
    상기 내부 하드웨어 필터는 상기 제2애플리케이션에 관련된 정보를 이용하여 재구성되는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 제1애플리케이션은 상기 데이터 저장 장치에 저장된 데이터를 관리하는 데이터 저장 장치.
  16. 제14항에 있어서,
    상기 실행은 데이터 형식의 종류에 기초하여 상기 제1애플리케이션으로부터 상기 제2애플리케이션으로 변경되는 데이터 저장 장치.
  17. 제14항에 있어서,
    상기 CPU는 상기 제2애플리케이션에 상응하는 초기화 정보를 상기 내부 하드웨어 필터로 전송하고, 그리고
    상기 내부 하드웨어 필터는 상기 제2애플리케이션을 지원하는 데이터 저장 장치.
  18. 제14항에 있어서,
    상기 CPU는 호스트로부터 필터링 명령을 수신하고, 상기 필터링 명령을 해석하고, 해석 결과에 기초하여 필터링 조건 데이터를 생성하고, 상기 필터링 조건 데이터를 상기 내부 하드웨어 필터로 전송하는 데이터 저장 장치.
  19. 제14항에 있어서,
    상기 메모리 컨트롤러는 리드 명령을 생성하고 상기 리드 명령을 상기 불휘발성 메모리로 전송하고, 그리고
    상기 불휘발성 메모리는 상기 리드 명령에 응답하여 리드 데이터를 상기 내부 하드웨어 필터로 출력하는 데이터 저장 장치.
  20. 제19항에 있어서,
    상기 내부 하드웨어 필터는 상기 리드 데이터를 필터링하고 상기 필터된 리드 데이터를 상기 휘발성 메모리로 전송하는 데이터 저장 장치.
KR1020140017917A 2014-02-17 2014-02-17 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법 KR102213674B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140017917A KR102213674B1 (ko) 2014-02-17 2014-02-17 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법
US14/623,107 US9652162B2 (en) 2014-02-17 2015-02-16 All-in-one data storage device including internationl hardware filter, method of operating the same, and system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140017917A KR102213674B1 (ko) 2014-02-17 2014-02-17 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150096964A KR20150096964A (ko) 2015-08-26
KR102213674B1 true KR102213674B1 (ko) 2021-02-08

Family

ID=53798175

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140017917A KR102213674B1 (ko) 2014-02-17 2014-02-17 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법

Country Status (2)

Country Link
US (1) US9652162B2 (ko)
KR (1) KR102213674B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153781A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Roaming profiles and application compatibility in multi-user systems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029207A1 (en) 2000-02-28 2002-03-07 Hyperroll, Inc. Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein
US6823329B2 (en) 2002-04-02 2004-11-23 Sybase, Inc. Database system providing methodology for acceleration of queries involving functional expressions against columns having enumerated storage
US7464088B1 (en) 2003-09-08 2008-12-09 Sage-N Research, Inc. Architecture for efficient pattern match operations
US7596560B2 (en) 2004-12-23 2009-09-29 Raytheon Company System and method for adaptive query identification and acceleration
US7302533B2 (en) 2005-03-11 2007-11-27 International Business Machines Corporation System and method for optimally configuring software systems for a NUMA platform
US20070022120A1 (en) 2005-07-25 2007-01-25 Microsoft Corporation Caching and modifying portions of a multi-dimensional database on a user device
US7596745B2 (en) 2005-11-14 2009-09-29 Sun Microsystems, Inc. Programmable hardware finite state machine for facilitating tokenization of an XML document
US8244718B2 (en) 2006-08-25 2012-08-14 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8145752B2 (en) * 2009-01-14 2012-03-27 Vmware, Inc. Drift visualization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153781A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Roaming profiles and application compatibility in multi-user systems

Also Published As

Publication number Publication date
KR20150096964A (ko) 2015-08-26
US9652162B2 (en) 2017-05-16
US20150234610A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
JP6563642B2 (ja) 内部ハードウェアフィルターを含むデータ保存装置とその作動方法
US9830109B2 (en) Materializing data from an in-memory array to an on-disk page structure
US10311048B2 (en) Full and partial materialization of data from an in-memory array to an on-disk page structure
US9891831B2 (en) Dual data storage using an in-memory array and an on-disk page structure
JP6639420B2 (ja) フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム
US10296611B2 (en) Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
CN106575297B (zh) 使用盲更新操作的高吞吐量数据修改
US20170286507A1 (en) Database search system and database search method
US20130275365A1 (en) Multi-Dimensional OLAP Query Processing Method Oriented to Column Store Data Warehouse
TWI761419B (zh) 最大化可去重複記憶體的方法、記憶體系統和產品
US10289709B2 (en) Interleaved storage of dictionary blocks in a page chain
US20170177700A1 (en) Updating a partitioning column
WO2017013701A1 (ja) 計算機システム及びデータベース管理方法
US20170322960A1 (en) Storing mid-sized large objects for use with an in-memory database system
CN117120998A (zh) 用于读取树数据结构中保存的数据的方法和装置
US10013442B2 (en) Database value identifier hash map
KR102213674B1 (ko) 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치와 이의 동작 방법
WO2024032526A1 (zh) 一种数据检索处理方法和系统
US11907586B2 (en) Storage device configured to support multi-streams and operation method thereof
US10860577B2 (en) Search processing system and method for processing search requests involving data transfer amount unknown to host
KR102028666B1 (ko) 비식별 요청을 처리하는 저장 장치 및 그것의 동작 방법
US9864761B1 (en) Read optimization operations in a storage system
US11609909B2 (en) Zero copy optimization for select * queries
KR102251811B1 (ko) 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템
US10997164B2 (en) Unified table delta dictionary lazy materialization

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant