KR102214511B1 - 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법 - Google Patents

두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR102214511B1
KR102214511B1 KR1020140017976A KR20140017976A KR102214511B1 KR 102214511 B1 KR102214511 B1 KR 102214511B1 KR 1020140017976 A KR1020140017976 A KR 1020140017976A KR 20140017976 A KR20140017976 A KR 20140017976A KR 102214511 B1 KR102214511 B1 KR 102214511B1
Authority
KR
South Korea
Prior art keywords
page
data
memory
cpu
storage device
Prior art date
Application number
KR1020140017976A
Other languages
English (en)
Other versions
KR20150096994A (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 KR1020140017976A priority Critical patent/KR102214511B1/ko
Priority to US14/623,080 priority patent/US10394459B2/en
Publication of KR20150096994A publication Critical patent/KR20150096994A/ko
Application granted granted Critical
Publication of KR102214511B1 publication Critical patent/KR102214511B1/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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0656Data buffering 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/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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

데이터 저장 장치는 필터와, CPU와, 페이지를 저장하는 제1메모리와, 제2메모리와, 상기 제1메모리로부터 출력된 상기 페이지의 타입을 해석하고 해석의 결과에 따라 지시 신호를 상기 CPU로 전송하는 페이지 타입 해석기를 포함하고, 상기 지시 신호에 기초하여 동작하는 CPU의 제어에 따라, 상기 필터는 상기 페이지를 상기 제2메모리로 바이패스하거나 상기 페이지를 로우별로 필터링하고 제1필터된 데이터를 상기 제2메모리로 전송할 수 있다.

Description

두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법{DATA STORAGE DEVICE FOR FILTERING PAGE USING 2-STEPS, SYSTEM HAVING THE SAME, AND OPERATION METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 하드웨어 필터링과 소프트웨어 필터링을 순차적으로 수행할 수 있는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법에 관한 것이다.
일반적인 서버와 데이터베이스를 포함하는 데이터 서버 시스템에서, 빅 데이터(big data)는 관계형 데이터베이스(relational databases)나 NoSQL 데이터베이스에 저장된다.
상기 관계형 데이터베이스 또는 상기 NoSQL 데이터베이스에 저장된 상기 빅 데이터로부터 원하는 데이터는 SQL(structured query language) 또는 고유의 쿼리 (query) 언어를 이용하여 추출된다.
빅 데이터는 데이터베이스로부터 서버(또는 호스트)의 메인 메모리로 전송되고, 상기 서버의 프로세서(또는 CPU)는 상기 메인 메모리에 저장된 상기 빅 데이터로부터 원하는 데이터를 추출한다.
그러나, 서버의 메인 메모리에 저장된 빅 데이터 중에서 일부만이 상기 서버의 프로세서에 의해 추출되므로, 데이터 트래픽(data traffic)의 관점에서 볼 때, 상기 서버의 상기 프로세서를 이용하여 상기 빅 데이터로부터 원하는 데이터를 추출하는 방법은 효율성이 낮다.
또한, 데이터베이스는 상기 빅 데이터를 상기 서버로 전송해야 하므로, 상기 서버와 상기 데이터베이스 사이의 데이터 트래픽은 감소하지 않는다.
본 발명이 이루고자 하는 기술적인 과제는, 호스트로 전송되는 데이터 트래픽과 상기 호스트의 CPU의 연산량을 줄이기 위해, 하드웨어 필터링과 소프트웨어 필터링을 순차적으로 수행할 수 있는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 필터와, CPU와, 페이지를 저장하는 제1메모리와, 제2메모리와, 상기 제1메모리로부터 출력된 상기 페이지의 타입을 해석하고 해석의 결과에 따라 지시 신호를 상기 CPU로 전송하는 페이지 타입 해석기를 포함하고, 상기 지시 신호에 기초하여 동작하는 CPU의 제어에 따라, 상기 필터는 상기 페이지를 상기 제2메모리로 바이패스하거나 상기 페이지를 로우별로 필터링하고 제1필터된 데이터를 상기 제2메모리로 전송할 수 있다.
상기 CPU는 상기 제2메모리로부터 출력된 상기 제1필터된 데이터를 필터링하고 제2필터된 데이터를 상기 제2메모리로 전송할 수 있다.
상기 필터는 상기 로우별로 포함된 복수의 컬럼들 중에서 우선 순위가 가장 높은 컬럼에 대해 상기 필터링을 가장 먼저 수행할 수 있다.
상기 필터는, 직접 메모리 접근(direct memory acceee(DMA)) 기능을 이용하여, 상기 페이지를 상기 로우별로 처리할 수 있다.
실시 예에 따라, 상기 필터는 상기 페이지를 버퍼링하는 버퍼와 DMA 컨트롤러를 포함하고, 상기 데이터 저장 장치는 로우-레이턴시 메모리와 하드웨어 가속 로직 회로를 더 포함하고, 상기 CPU는 상기 버퍼로부터 출력된 상기 페이지에 대한 데이터 구조 정보를 상기 로우-레이턴시 메모리에 저장하고, 상기 하드웨어 가속 로직 회로는 상기 로우-레이턴시 메모리에 저장된 상기 데이터 구조 정보로부터 상기 로우별로 오프셋과 상기 로우별로 크기를 계산하고, 계산의 결과에 상응하는 DMA 파라미터 세트를 생성하고, 상기 DMA 컨트롤러는, 상기 DMA 파라미터 세트를 순차적으로 이용하여, 상기 로우별로 상기 필터링을 수행할 수 있다.
다른 실시 예에 따라, 상기 필터는 상기 페이지를 버퍼링하는 버퍼와 DMA 컨트롤러를 포함하고, 상기 데이터 저장 장치는 로우-레이턴시 메모리를 더 포함하고, 상기 CPU는 상기 버퍼로부터 출력된 상기 페이지에 대한 데이터 구조 정보를 상기 로우-레이턴시 메모리에 저장하고, 상기 로우-레이턴시 메모리에 저장된 상기 데이터 구조 정보로부터 상기 로우별로 오프셋과 상기 로우별로 크기를 계산하고, 계산의 결과에 상응하는 DMA 파라미터를 생성하고, 상기 DMA 컨트롤러는, 상기 DMA 파라미터를 이용하여, 상기 로우별로 상기 필터링을 수행할 수 있다.
상기 제1메모리는 플래시 메모리이고, 상기 제2메모리는 DRAM이고, 상기 필터, 상기 CPU, 및 상기 제1메모리의 동작을 제어하는 메모리 컨트롤러는 시스템 온 칩(system on chip)에 포함되고, 상기 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive(SSD))이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 상기 데이터 저장 장치와, 상기 필터에 의한 필터링과 상기 CPU에 의한 필터링에 관련된 쿼리(query)를 상기 데이터 저장 장치로 전송하는 호스트를 포함한다.
본 발명의 실시 예에 따른 하드웨어 필터와 CPU(central processing unit)를 포함하는 데이터 저장 장치의 데이터 필터링 방법은 제1메모리로부터 출력된 페이지의 타입을 페이지 타입 해석기를 이용하여 해석하는 단계와, 해석의 결과에 따라, 상기 페이지를 상기 하드웨어 필터를 이용하여 제2메모리로 바이패스하거나 상기 페이지를 상기 하드웨어 필터를 이용하여 로우별로 필터링하고 제1필터된 데이터를 상기 제2메모리로 전송하는 단계를 포함한다.
상기 방법은 상기 제2메모리로부터 출력된 상기 제1필터된 데이터를 상기 CPU를 이용하여 필터링하고 제2필터된 데이터를 상기 제2메모리로 전송하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 일체형 데이터 저장 장치는, 데이터 검색 기능과 데이터 필터링 기능이 상기 일체형 데이터 저장 장치의 내부에 구현된 내부 필터링 모듈에 의해 수행됨에 따라, 호스트의 CPU의 연산량을 감소시킬 수 있는 효과가 있다. 따라서, 상기 일체형 데이터 저장 장치와 상기 호스트를 포함하는 데이터 관리 시스템의 성능이 향상되는 효과가 있다.
데이터 저장 장치 내부의 CPU의 전력 소모 및/또는 내부 필터링 모듈의 전력 소모는 호스트 내부의 CPU의 전력 소모보다 상대적으로 적기 때문에, 데이터 관리 시스템의 전체적인 전력 소모가 효과적으로 감소하는 효과가 있다.
내부 필터링 모듈이 보조기억 장치에 가깝게 배치될 때, 데이터 패스 관점에서, 불필요한 데이터 전송이 감소하는 효과가 있다. 따라서, 내부 필터링 모듈은 하드웨어 필터링을 통해 필터된 데이터만을 주기억 장치로 전송할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 시스템의 개략적인 블록도를 나타낸다.
도 2는 도 1의 데이터 관리 시스템의 상세 블록도이다.
도 3은 도 2의 데이터 저장 장치의 상세 블록도이다.
도 4는 도 2의 데이터 저장 장치에 의해 필터링될 각 페이지를 나타낸다.
도 5는 도 2의 데이터 저장 장치가 도 4의 각 페이지를 필터링하는 과정을 설명하기 위한 개념도이다.
도 6은 도 2의 데이터 저장 장치의 동작 방법을 설명하기 위한 플로우차트이다.
도 7은 도 2에 도시된 데이터 저장 장치의 동작을 설명하기 위한 개념도를 나타낸다.
도 8은 도 2에 도시된 데이터 저장 장치의 동작을 설명하기 위한 다른 개념도를 나타낸다.
도 9는 도 2에 도시된 데이터 저장 장치에서 수행되는 로우 리드 동작을 설명하기 위한 개념도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 시스템의 개략적인 블록도를 나타낸다. 도 1을 참조하면, 데이터 관리 시스템(100) 또는 데이터 처리 시스템 (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를 포함한다.
실시 예에 따라, 명칭에도 불구하고 데이터 관리 시스템(100)은 데이터 저장 장치(300)를 포함하는 서버 시스템, PC(persssonal computer), 또는 휴대용 전자 장치로 구현될 수 있다. 상기 휴대용 전자 장치는 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 (tablet) PC, 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터 (wearable computer), IoT(internet of things) 장치, 또는 IoE(internet of everything)로 구현될 수 있다.
데이터 관리 시스템(100)은 데이터 검색 기능과 데이터 필터링 기능을 수행할 수 있다. 예컨대, 데이터 필터링은 호스트(200)의 요청에 의해 데이터 저장 장치(300)에 저장된 데이터에 대한 선별(예컨대, 상기 요청에 따라 수행되는 논리 연산을 포함한다) 과정을 의미할 수 있다.
실시 예에 따라, 상기 데이터 검색 기능과 상기 데이터 필터링 기능은 데이터 저장 장치(300)의 내부에서 미리 수행되고, 수행의 결과가 호스트(200)로 전송될 수 있다. 다른 실시 예에 따라, 상기 데이터 필터링 기능 중에서 일부 필터링 기능은 데이터 저장 장치(300)의 내부에서 실행되고 실행의 결과는 호스트(200)로 전송될 수 있다. 이때, 호스트(200)는 상기 실행의 결과에 대한 추가적인 데이터 필터링을 수행할 수 있다.
데이터 검색 기능과 데이터 필터링 기능이 데이터 저장 장치(300)의 내부에서 미리 수행됨에 따라 다음과 같은 이점들이 있다.
첫째, 데이터 검색 기능과 데이터 필터링 기능이, 데이터 저장 장치(300) 내부에 구현된 내부 필터링 모듈(또는 하드웨어 필터; 330)에 의해 수행됨에 따라, 호스트(200)의 CPU(도 2의 210)의 연산량이 감소한다. 따라서, 데이터 관리 시스템 (100)의 성능이 향상될 수 있다.
특히, 내부 필터링 모듈(330)이 데이터 필터링을 위한 전용 하드웨어 (dedicated hardware)로 구현됨에 따라, 호스트(200)의 CPU(도 2의 210)가 단독으로 데이터를 처리하는 것보다 상대적으로 빠르게 데이터를 처리할 수 있다.
또한, 데이터 관리 시스템(100)이 복수의 데이터 저장 장치들을 포함할 때, 데이터 관리 시스템(100)은 상기 복수의 데이터 저장 장치들을 이용하여 데이터를 병렬로 처리할 수 있다. 따라서, 데이터 관리 시스템(100)의 성능이 향상될 수 있다. 이때, 상기 복수의 데이터 저장 장치들 각각의 구조와 동작은 데이터 저장 장치(300)의 구조와 기능과 실질적으로 동일하다.
둘째, 데이터 저장 장치(300) 내부의 CPU(350)의 전력 소모 및/또는 내부 필터링 모듈(330)의 전력 소모는 호스트(200) 내부의 CPU(도 2의 210)의 전력 소모보다 상대적으로 적기 때문에, 데이터 관리 시스템(100)의 전체적인 전력 소모는 효과적으로 감소한다.
셋째, 도 1에 도시된 바와 같이, 내부 필터링 모듈(330)이 보조기억 장치 (또는 제1메모리; 310)에 가깝게 배치될 때, 데이터 패스(data path) 관점에서, 불필요한 데이터 전송이 감소한다. 이때, 내부 필터링 모듈(330)은 하드웨어 필터링을 통해 필요한 데이터만을 주기억 장치(또는 제2메모리; 340)로 전송할 수 있다.
따라서, 보조 기억 장치(310)와 주기억 장치(340) 사이에서 데이터를 전송하기 위한 데이터 트래픽(data traffic)이 감소한다. 이와 동시에 주기억 장치(340)로부터 호스트(200)로 전송되는 데이터 트래픽(data traffic)도 감소한다
상술한 바와 같이, 데이터 저장 장치(300)는 보조기억 장치(310)로부터 주기억 장치(340)로 전송되는 데이터 트래픽을 줄일 수 있으므로, 데이터 저장 장치 (300)의 CPU(350)에서 처리될 데이터의 양도 줄어든다. 따라서, CPU(350)의 연산량뿐만 아니라 호스트(200)의 CPU(도 2의 210)의 연산량도 줄어든다.
호스트(200)는 데이터 저장 장치(300)의 데이터 처리 동작, 예컨대, 데이터 라이트 동작, 데이터 리드 동작, 또는 필터링 동작(예컨대, 하드웨어 필터링 동작과 소프트웨어 필터링 동작)을 제어할 수 있다.
본 명세서에서 '하드웨어 필터링 또는 하드웨어 필터링 동작'은 전용의 내부 필터링 모듈(330)에 의해 수행되는 필터링 또는 필터링 동작을 의미하고, '소프트웨어 필터링 또는 소프트웨어 필터링 동작'은 CPU(350)에 의해 실행(execute)되는 소프트웨어(또는 펌웨어)에 의해 수행되는 필터링 또는 필터링 동작을 의미한다.
따라서, 데이터 저장 장치(300)는 2-스텝 필터링(2-step filtering) 동작을 수행할 수 있는 효과가 있다. 상기 데이터 처리 동작의 대상이 되는 데이터는 빅 데이터(big data)를 포함할 수 있다.
호스트(200)와 데이터 저장 장치(300)는 SATA(serial advance technology attachment), SAS(Serial Attached SCSI) 또는 PCIe(Peripheral Component Interconnect Express)를 통해 통신할 수 있다.
또한, 호스트(200)와 데이터 저장 장치(300)는 유무선 네트워크, 예컨대 인터넷 네트워크, 또는 Wi-Fi 네트워크 등을 통해 데이터를 주거나 받을 수 있다.
데이터 저장 장치(300)는 일체형(all-in-one) 데이터 저장 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(300)는 솔리드 스테이트 드라이브(solid state drive(SSD)), 임베디드 SSD(eSSD) 또는 하드디스크 드라이브(hard disc drive(HDD))로 구현될 수 있다.
도 2는 도 1의 데이터 관리 시스템의 상세 블록도이다.
도 1과 도 2를 참조하면, 호스트(200)는 CPU(central processing unit(210))과 인터페이스(220)를 포함한다. 호스트(200)는 제2필터된 데이터를 처리할 수 있는 메모리 컨트롤러, 처리된 데이터를 저장할 수 있는 메모리, 및/또는 상기 처리된 데이터를 다른 장치로 전송할 수 있는 인터페이스를 더 포함할 수 있다.
CPU(210)는 호스트(200)의 전반적인 동작을 제어하고, 버스(201)를 통해 인터페이스(220)를 제어한다. CPU(210)는 데이터 저장 장치(300)의 동작을 제어하기 위한 데이터, 제어 신호들, 및/또는 명령을 생성하고, 이들을 인터페이스(220)를 통해 데이터 저장 장치(300)로 전송할 수 있다.
또한, CPU(210)는 하드웨어 필터링 동작과 소프트웨어 필터링 동작에 관련된 쿼리(query)를 생성하고, 생성된 쿼리를 인터페이스(220)를 통해 데이터 저장 장치 (300)로 전송할 수 있다. 호스트(200)는 데이터 저장 장치(300)에 의해 필터된 데이터를 수신하고, 수신된 필터된 데이터를 처리할 수 있다.
데이터 저장 장치(300)는 내부 필터링 모듈(330)을 이용하여 하드웨어 필터링 동작을 수행할 수 있고, CPU(350)는 하드웨어 필터된 데이터를 소프트웨어 필터링하고, 소프트웨어 필터된 데이터를 호스트(200)로 전송할 수 있다.
데이터 저장 장치(300)는 컨트롤 회로(305), 보조기억 장치(또는 제1메모리; 310), 및 주기억 장치(또는 제2메모리; 340)를 포함한다.
컨트롤 회로(305)는 보조기억 장치(310)와 주기억 장치(340) 각각에 대한 데이터 액세스 동작(예컨대, 데이터 라이트 동작과 데이터 리드 동작)을 수행할 수 있다. 또한, 컨트롤 회로(305)는 하드웨어 필터링 동작과 소프트웨어 필터링 동작을 제어할 수 있다.
컨트롤 회로(305)는 인쇄회로 기판(printed circuit board(PCB)), 집적 회로, 또는 시스템 온 칩(system on chip)으로 구현될 수 있다.
실시 예에 따라, 컨트롤 회로(305)는 보조기억 장치 컨트롤러(또는 제1메모리 컨트롤러; 320), 내부 필터링 모듈(330), 주기억 장치 컨트롤러(또는 제2메모리 컨트롤러; 335), CPU(350), 내부 메모리(351), 및 인터페이스(355)를 포함한다. 다른 실시 예에 따라, 컨트롤 회로(305)는 하드웨어 가속 로직 회로(360) 및/또는 FCPU(370)를 더 포함할 수 있다.
보조기억 장치 컨트롤러(320)는 보조기억 장치(310)로 데이터를 라이트하거나 보조기억 장치(310)로부터 데이터를 리드할 수 있다. 보조기억 장치(310)는 하나 또는 그 이상의 메모리 칩들을 포함할 수 있다.
본 명세서에서는, 2-스텝 필터링을 위해 보조기억 장치(310)로부터 출력되는 데이터를 페이지(또는 페이지 데이터(page data) 또는 데이터베이스 페이지)라 한다. 예컨대, 페이지는 1KB, 2KB, 4KB, 또는 8KB일 수 있으나 이는 예시적인 것에 불과하다. 상기 페이지의 데이터 구조는 다양하게 설정될 수 있다. 예컨대, 페이지는 데이터 저장 장치(300)에 저장되는 데이터의 저장 크기를 의미할 수 있다.
보조기억 장치 컨트롤러(320)는 페이지 타입 해석기(321)를 포함하고, 페이지 타입 해석기(321)는 하드웨어로 구현될 수 있다. 예컨대, 페이지 타입 해석기 (321)는 데이터 저장 장치(300)에 저장된 데이터(또는 페이지)의 특성을 파악하는 장치를 의미할 수 있다. 실시 예에 따라, 페이지 타입 해석기(321)는 소프트웨어로 구현될 수도 있다. 보조기억 장치 컨트롤러(320)는 플래시 메모리 컨트롤러(flash memory controller(FMC))로 불릴 수 있다.
실시 예에 따라, 컨트롤 회로(305)는 보조기억 장치 컨트롤러(320)의 동작을 제어할 수 있는 FCPU(flash CPU; 370)를 더 포함할 수 있다.
그러나, 다른 실시 예에 따라, 컨트롤 회로(305)가 FCPU(370)를 포함하지 않을 때, CPU(350)는 보조기억 장치 컨트롤러(320)의 동작을 제어할 수 있다. 각 CPU (350 또는 370)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
페이지 타입 해석기(321)는 보조기억 장치(310), 예컨대 플래시 메모리로부터 출력된 페이지가 인덱스(index)를 포함하는 페이지(또는 '인덱스 페이지')인지 사용자 데이터를 포함하는 페이지(또는 '사용자 데이터 페이지')인지를 해석하고 해석의 결과에 따라 지시 신호를 CPU(350)로 전송한다.
보조기억 장치 컨트롤러(320)는 보조기억 장치(310)로부터 출력된 페이지를 버스(306)를 통해 내부 필터링 모듈(330)의 버퍼(333), 예컨대 SRAM 버퍼(333)로 전송할 수 있다.
상기 지시 신호에 기초하여 동작하는 CPU(350)의 제어에 따라, 하드웨어 필터(330), 특히 DMA 컨트롤러(331)는 인덱스 페이지를 주기억 장치 컨트롤러(335)를 통해 주기억 장치(340)로 바이패스한다.
상기 지시 신호에 기초하여 동작하는 CPU(350)의 제어에 따라, 하드웨어 필터(330), 특히 DMA 컨트롤러(331)는 사용자 데이터 페이지를 하드웨어 필터링을 이용하여 로우(row)별로 필터링하고 필터링 결과에 상응하는 제1필터된 데이터를 주기억 장치 컨트롤러(335)를 통해 주기억 장치(340)로 전송한다.
예컨대, 관계형 데이터베이스에서(in the context of a relational database), 로우(row)는 레코드(record) 또는 튜플(tuple)로도 불릴 수 있다. 또한, 상기 관계형 데이터베이스에서 컬럼(column)은 필드(field) 또는 속성 (attribute)으로도 불릴 수 있다.
CPU(350)는, 주기억 장치 컨트롤러(335)를 통해, 주기억 장치(340)로부터 전송된 제1필터된 데이터를 내부 메모리(351)에 저장하고, 내부 메모리(351)에 저장된 제1필터된 데이터를 소프트웨어 필터링하고, 필터링 결과에 상응하는 제2필터된 데이터를 주기억 장치 컨트롤러(335)를 통해 주기억 장치(340)로 전송한다.
내부 메모리(351)는 CPU(350)에 의해 액세스될 수 있는 로우-레이턴시(low-latency) 메모리일 수 있다. 예컨대, 내부 메모리(351)는 TCM(tightly coupled memory)로 구현될 수 있고, SRAM(static random access memory)으로 구현될 수 있다.
주기억 장치(340)로부터 출력된 제2필터된 데이터는 주기억 장치 컨트롤러 (335)와 인터페이스(355)를 통해 호스트(220)로 전송된다.
보조기억 장치(310)는 플래시 메모리와 같은 불휘발성 메모리로 구현될 수 있다. 상기 플래시 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리로 구현될 수 있다.
주기억 장치(340)는 DRAM과 같은 휘발성 메모리로 구현될 수 있다.
도 3은 도 2의 데이터 저장 장치의 상세 블록도이고, 도 4는 도 2의 데이터저장 장치에 의해 필터링될 각 페이지를 나타내고, 도 5는 도 2의 데이터 저장 장치가 도 4의 각 페이지를 필터링하는 과정을 설명하기 위한 개념도이다.
데이터 저장 장치(300)가, 호스트(200)로부터 출력된 쿼리들(QUERY1과 SUERY2)에 응답하여, 'CITY1'만을 포함하는 로우를 각 페이지(PAGE1과 PAGE2)로부터 추출하고, 추출된 데이터를 주기억 장치(340)로 전송하는 과정은 도 1부터 도 4를 참조하여 설명된다.
QUERY1은 다음과 같다고 가정한다.
SELECT PID, NAME, CITY FROM PERSONS WHERE CITY='CITY1'
또한, QUERY2도 다음과 같다고 가정한다.
SELECT PID, NAME, CITY FROM PERSONS WHERE CITY='CITY1'
실시 예에 따라, 하드웨어 필터링에 관련된 QUERY1와 소프트웨어 필터링에 관련된 QUERY2는 서로 동일하거나 서로 다를 수 있다.
제1페이지(PAGE1)와 제2페이지(PAGE2) 각각은 4개의 컬럼들(PID, NAME, ADDRESS, 및 CITY)을 포함하고, 제1페이지(PAGE1)와 제2페이지(PAGE2) 각각은 사용자 데이터 페이지이고, 제1페이지(PAGE1)는 제1채널(Channel 0)을 통해 'PERSONS'라는 이름으로 제1NAND 플래시 메모리 칩의 제1테이블(TABLE1)에 저장되고, 제2페이지(PAGE2)는 제2채널(Channel 1)을 통해 'PERSONS'라는 이름으로 제2NAND 메모리 칩의 제2테이블(TABLE2)에 저장되고, 보조기억 장치(310)는 상기 제1NAND 플래시 메모리 칩과 상기 제2NAND 플래시 메모리 칩을 포함한다고 가정한다.
제1페이지(PAGE1)가 제1채널(Channel 0)을 통해 보조기억 장치 컨트롤러 (320)로 전송되면, 페이지 타입 해석기(321)는 제1페이지(PAGE1)의 타입(type)을 분석한다.
분석의 결과, 제1페이지(PAGE1)가 인덱스 페이지가 아닌 사용자 데이터 페이지이므로, 페이지 타입 해석기(321)는 제1페이지(PAGE1)가 사용자 데이터 페이지임을 지시하는 지시 신호(PTI)를 버스(306)를 통해 CPU(350)로 전송한다.
보조기억 장치 컨트롤러(320)는 보조기억 장치(320)로부터 제1페이지(PAGE1)를 SRAM 버퍼(333)로 전송한다.
지시 신호(PTI)가 CPU(350)로 전송되는 타이밍과 제1페이지(PAGE1)가 SRAM 버퍼(333)로 전송되는 타이밍은 데이터 저장 장치(300)의 설계 사양에 따라 다양하게 설정될 수 있다.
SRAM 버퍼(333)에 저장된 제1페이지(PAGE1)의 데이터 구조에 대한 정보(이하, '데이터 구조 정보'라 한다)는 내부 메모리(351)로 전송된다. 상기 데이터 구조 정보는 제1페이지(PAGE1)의 페이지 헤더(PAGE HEADER)와 포인터들(P1, P2, P3, P4, ...)을 포함한다.
상기 데이터 구조 정보가 SRAM 버퍼(333)로부터 내부 메모리(351)로 전송되는 방법은 설계 사양에 따라 다양하게 변경될 수 있다. 예컨대, 상기 데이터 구조 정보는 DMA 컨트롤러(331) 및/또는 CPU(350)를 통해 내부 메모리(351)로 전송될 수도 있다.
CPU(350) 또는 CPU(350)에 의해 실행되는 소프트웨어(또는 펌웨어)는 내부 메모리(351)에 저장된 데이터 구조 정보에 기초하여 각 로우의 오프셋(또는 각 로우의 포인터)과 각 로우의 크기를 추출할 수 있다. 따라서, CPU(350) 또는 CPU (350)에 의해 실행되는 소프트웨어(또는 펌웨어)는 각 로우에 포함된 컬럼들 각각의 위치 정보를 추출할 수 있다.
CPU(350)는 쿼리(QUERY1)와 추출된 정보에 기초하여 DMA 컨트롤러(331)를 설정한다. 이에 따라, DMA 컨트롤러(331)는 로우별로 하드웨어 필터링을 수행할 수 있다.
예컨대, DMA 컨트롤러(331)는 제1페이지(PAGE1)의 첫 번째 로우의 전송을 요청하는 DMA 요청(REQ)을 SRAM 버퍼(333)로 전송한다. 따라서, SRAM 버퍼(333)는 첫 번째 로우(ROW)를 DMA 컨트롤러(331)로 전송한다.
DMA 컨트롤러(331)는 4개의 컬럼들(PID=1, NAME=NAME1, ADDRESS=ADD1, 및 CITY=CITY1)을 포함하는 첫 번째 로우로부터 쿼리(QUERY1)에 상응하는 3개의 컬럼들(PID=1, NAME=NAME1, 및 CITY=CITY1)을 추출하고, 해당 컬럼(CITY)이 'CITY1'을 포함하고 있는지를 판단한다.
이때, 추출된 3개의 컬럼들(PID=1, NAME=NAME1, 및 CITY=CITY1) 중에서 우선 순위가 가장 높은 해당 컬럼(CITY)이 가장 먼저 비교될 수 있다. 예컨대, 추출하고자하는(또는 필터링하고자 하는) 데이터(예컨대, CITY1)를 포함하는 컬럼(예컨대, CITY)의 우선 순위는 가장 높게 설정될 수 있다.
해당 컬럼(CITY)이 쿼리(QUERY1)에서 정의된 'CITY1'을 포함하고 있으므로, DMA 컨트롤러(331)는 3개의 컬럼들(PID=1, NAME=NAME1, 및 CITY=CITY1)을 포함하는 첫 번째 로우를 제1필터된 데이터(FD1)로서 출력한다. 제1필터된 데이터(FD1)는 버스(306)와 주기억 장치 컨트롤러(335)를 통해 주기억 장치(340)에 저장된다.
DMA 컨트롤러(331)는 제1페이지(PAGE1)의 두 번째 로우의 전송을 요청하는 DMA 요청(REQ)을 SRAM 버퍼(333)로 전송한다. 따라서, SRAM 버퍼(333)는 두 번째 로우(ROW)를 DMA 컨트롤러(331)로 전송한다.
DMA 컨트롤러(331)는 4개의 컬럼들(PID=2, NAME=NAME2, ADDRESS=ADD2, 및 CITY=CITY2)을 포함하는 두 번째 로우로부터 쿼리(QUERY1)에 상응하는 3개의 컬럼들(PID=2, NAME=NAME2, 및 CITY=CITY2)을 추출하고, 해당 컬럼(CITY)이 'CITY1'을 포함하고 있는지를 판단한다.
상술한 바와 같이, 3개의 컬럼들(PID=2, NAME=NAME2, 및 CITY=CITY2) 중에서 우선 순위가 가장 높은 해당 컬럼(CITY)이 가장 먼저 비교될 수 있다.
해당 컬럼(CITY)이 쿼리(QUERY1)에서 정의된 'CITY1'을 포함하고 있지 않으므로, DMA 컨트롤러(331)는 3개의 컬럼들(PID=2, NAME=NAME2, 및 CITY=CITY2)을 포함하는 두 번째 로우를 출력하지 않는다. 이때, 상기 두 번째 로우는 폐기 (discard)될 수 있다.
이러한 과정을 통해, DMA 컨트롤러(331)는 3개의 컬럼들(PID=3, NAME=NAME3, 및 CITY=CITY1)을 포함하는 세 번째 로우를 출력하고, 3개의 컬럼들(PID=4, NAME=NAME4, 및 CITY=CITY2)을 포함하는 네 번째 로우를 출력하지 않는다.
계속하여, 보조기억 장치 컨트롤러(320)는 보조기억 장치(320)로부터 제2페이지(PAGE2)를 SRAM 버퍼(333)로 전송한다.
SRAM 버퍼(333)에 저장된 제2페이지(PAGE2)의 데이터 구조 정보는 내부 메모리(351)로 전송된다. 상기 데이터 구조 정보는 제2페이지(PAGE2)의 페이지 헤더 (PAGE HEADER)와 포인터들(P1', P2', P3', P4', ...)을 포함한다.
제1페이지(PAGE1)를 하드웨어 필터링하는 방법과 실질적으로 동일하게 제2페이지(PAGE2)가 하드웨어 필터링된다.
DMA 컨트롤러(331)는 제2페이지(PAGE2)의 대응되는 로우의 전송을 요청하는 대응되는 DMA 요청(REQ)을 SRAM 버퍼(333)로 전송한다. 따라서, SRAM 버퍼(333)는 대응되는 로우(ROW)를 DMA 컨트롤러(331)로 전송한다.
DMA 컨트롤러(331)는 DMA 컨트롤러(331)는 3개의 컬럼들(PID=5, NAME=NAME5, 및 CITY=CITY1)을 포함하는 첫 번째 로우를 출력하고, 3개의 컬럼들(PID=6, NAME=NAME6, 및 CITY=CITY3)을 포함하는 두 번째 로우를 출력하지 않고, 3개의 컬럼들(PID=7, NAME=NAME7, 및 CITY=CITY1)을 포함하는 세 번째 로우를 출력하고, 3개의 컬럼들(PID=8, NAME=NAME8, 및 CITY=CITY4)을 포함하는 네 번째 로우를 출력하지 않는다.
상술한 과정을 통해, 주기억 장치(340)에는 첫 번째 페이지(PAGE1)로부터 추출된 데이터(DT1)와 두 번째 페이지(PAG2)로부터 추출된 데이터(DT2)가 저장되고, 각 데이터(DT1과 DFT2)는 제1필터된 데이터(FD1)로서 CPU(350)로 전송된다.
CPU(350)는 제1필터된 데이터(FD1)를 내부 메모리(351)에 저장하고, 내부 메모리(351)에 저장된 제1필터된 데이터(FD1)를 소프트웨어(또는 펌웨어)를 이용하여 소프트웨어 필터링하고, 제2필터된 데이터(FD2)를 생성한다. 상기 소프트웨어(또는 펌웨어)는 쿼리(QUERY2)를 이용하여 소프트웨어 필터링 동작을 수행할 수 있다.
CPU(350)는 제2필터된 데이터(FD2)를 주기억 장치 컨트롤러(335)를 이용하여 주기억 장치(350)에 저장한다. 제2필터된 데이터(FD2)는 주기억 장치(350)와 인터페이스(355)를 통해 호스트(200)로 전송된다.
도 6은 도 2의 데이터 저장 장치의 동작 방법을 설명하기 위한 플로우차트이다.
도 1부터 도 6을 참조하면, 페이지 타입 해석기(321)는 보조기억 장치(310)로부터 출력된 페이지(PAGE)가 인덱스 페이지인지 사용자 데이터 페이지인지를 해석한다(S110).
페이지 데이터(PAGE)가 인덱스 페이지(IPAGE)일 때, 내부 필터링 모듈(330)은 하드웨어 필터링을 하지않고 DMA(direct memory access) 또는 DMA 기능을 이용하여 SRAM 버퍼(333)에 저장된 인덱스 페이지(IPAGE)를 주기억 장치(340)로 전송한다(S170). 즉, 인덱스 페이지(IPAGE)는 SRAM 버퍼(333)로부터 주기억 장치(340)로 바이패스된다.
그러나, 페이지 데이터(PAGE)가 사용자 데이터 페이지일 때, 내부 필터링 모듈(330)은 SRAM 버퍼(333)에 저장된 페이지(PAGE)의 데이터 구조 정보를 내부 메모리(351)로 전송한다. CPU(350)는 내부 메모리(351)에 저장된 데이터 구조 정보를 해석하고, 해석 결과에 상응하는 각 로우의 오프셋과 상기 각 로우의 크기를 추출한다(S130).
CPU(350)는 내부 필터링 모듈(330)이 각 로우별로 DMA 또는 DMA 기능을 수행할 수 있도록 DMA 파라미터를 내부 필터링 모듈(330)에 설정한다.
이때, 상기 DMA 파라미터는 하드웨어 필터링 조건(예컨대, 쿼리(QUERY1)에 상응하는 조건), 리드될 로우가 저장된 메모리 영역의 어드레스(예컨대, SRAM 버퍼 (333)의 소스 어드레스(source address)), 필터된 데이터가 라이트될 영역의 어드레스(예컨대, 주기억 장치(340)의 목적지 어드레스(destination address)), 각 로우의 크기, 및/또는 상기 각 로우에 포함된 각 컬럼의 오프셋 등을 포함할 수 있다.
데이터 저장 장치(300)의 내부 필터링 모듈(330)에 포함된 DMA 컨트롤러 (331)는 설정된 DMA 파라미터를 이용하여 제1필터링, 즉 하드웨어 필터링을 수행한다(S140).
데이터 저장 장치(300)의 CPU(350)는 쿼리(QUERY2)와 하드웨어 필터링의 결과(즉, 제1필터된 데이터(FD1))를 이용하여 제2필터링, 즉 소프트웨어 필터링를 수행한다(S150). CPU(350)는 소프트웨어 필터링의 결과(즉, 제2필터된 데이터(FD2))를 주기억 장치 컨트롤러(335)를 통해 주기억 장치(340)에 저장한다.
주기억 장치(340)에 저장된 인덱스 페이지(IPAGE) 또는 제2필터된 데이터 (FD2)는 주기억 장치 컨트롤러(335)와 인터페이스(355)를 통해 호스트(200)로 출력된다(S160).
도 7은 도 2에 도시된 데이터 저장 장치의 동작을 설명하기 위한 개념도를 나타낸다.
도 2, 도 3, 도 5, 및 도 7을 참조하면, 도 5의 페이지(PAGE1 또는 PAGE2)의 데이터 구조와 도 7의 SRAM 버퍼(333)에 저장된 페이지의 데이터 구조는 서로 다르다. 그러나, 페이지의 데이터 구조가 다르더라도, CPU(350)에 의해 생성되는 DMA 파라미터는 상응하는 페이지의 데이터 구조 정보의 해석 결과를 포함하므로, 내부 필터링 모듈(330)은 상기 DMA 파라미터를 이용하여 하드웨어 필터링 동작을 수행할 수 있다.
도 7에 관련된 필터링 동작을 수행하는 데이터 저장 장치(300)는 하드웨어 가속 로직 회로(360)를 포함하지 않는다.
보조기억 장치(310)로부터 출력된 페이지는 SRAM 버퍼(333)에 저장된다.
DMA 컨트롤러(331)는 DMA 또는 DMA 기능을 이용하여 SRAM 버퍼(333)에 저장된 페이지의 데이터 구조 정보를 CPU(350)를 통해 내부 메모리(351), 예컨대 TCM에 저장할 수 있다. 실시 예에 따라, 상기 데이터 구조 정보는 DMA 컨트롤러(331)에 의해 TCM에 직접 저장될 수도 있다.
예컨대, DMA 컨트롤러(331)는 DMA 요청(REQ=DMA Request1)을 이용하여 SRAM 버퍼(333)에 저장된 페이지의 페이지 헤더(PAGE HEADER)와 각 로우의 포인터들 (POR)을 포함하는 데이터 구조 정보를 TCM(351)에 저장할 수 있다.
CPU(350)는 소프트웨어(또는 펌웨어)를 이용하여 상기 데이터 구조 정보로부터 각 로우의 오프셋과 상기 각 로우의 크기를 추출할 수 있다.
CPU(350)는, 쿼리(QUERY1)와 추출된 정보를 이용하여, DMA 파라미터를 생성하고, 생성된 DMA 파라미터를 DAM 컨트롤러(331)에 설정할 수 있다.
예컨대, DMA 파라미터는 DRAM 필터링 조건을 포함할 수 있다. 도 7에 도시된 바와 같이, DMA 필터링 조건이 각 로우의 제1컬럼(Column1)으로부터 문자('ssd')를 추출하는 조건일 때, DMA 컨트롤러(331)는 DMA 요청(REQ=DMA Request2)을 이용하여 SRAM 버퍼(333)로부터 첫 번째 로우(ROW0)를 리드하고, 첫 번째 로우(ROW0)의 첫 번째 컬럼의 문자('ghl')와 DMA 필터링 조건에 상응하는 문자('ssd')를 비교한다.
비교 결과, 첫 번째 로우(ROW0)의 첫 번째 컬럼의 문자('ghl')와 DMA 필터링 조건에 상응하는 문자('ssd')가 서로 다르므로, DMA 컨트롤러(331)는 첫 번째 로우 (ROW0)를 주기억 장치(340)로 전송하지 않는다.
DMA 컨트롤러(331)는 DMA 요청(REQ=DMA Request3)을 이용하여 SRAM 버퍼 (333)로부터 두 번째 로우(ROW1)를 리드하고, 두 번째 로우(ROW1)의 첫 번째 컬럼의 문자('ssd')와 DMA 필터링 조건에 상응하는 문자('ssd')를 비교한다.
비교 결과, 두 번째 로우(ROW1)의 첫 번째 컬럼의 문자('ssd')와 DMA 필터링 조건에 상응하는 문자('ssd')가 서로 같으므로, DMA 컨트롤러(331)는 두 번째 로우 (ROW1)를 주기억 장치(340)로 전송한다.
DMA 컨트롤러(331)는 DMA 요청(REQ=DMA Request4)을 이용하여 SRAM 버퍼 (333)로부터 세 번째 로우(ROW2)를 리드하고, 세 번째 로우(ROW0)의 첫 번째 컬럼의 문자('def')와 DMA 필터링 조건에 상응하는 문자('ssd')를 비교한다.
비교 결과, 세 번째 로우(ROW2)의 첫 번째 컬럼의 문자('def')와 DMA 필터링 조건에 상응하는 문자('ssd')가 서로 다르므로, DMA 컨트롤러(331)는 세 번째 로우 (ROW2)를 주기억 장치(340)로 전송하지 않는다.
상술한 과정을 통해, 주기억 장치(340)에는 하드웨어 필터된 로우들이 저장된다. 이때, 페이지 헤더(PAGE HEADER)와 로우의 포인터들(POR)은 CPU(350)에 의해 생성된 후 상기 하드웨어 필터된 로우들과 함께 저장될 수 있다.
도 8은 도 2에 도시된 데이터 저장 장치의 동작을 설명하기 위한 다른 개념도를 나타낸다.
도 2, 도 3, 도 5, 및 도 8을 참조하면, 도 5의 페이지(PAGE1 또는 PAGE2)의 데이터 구조와 도 8의 SRAM 버퍼(333)에 저장된 페이지의 데이터 구조는 서로 다르다. 그러나, 페이지의 데이터 구조가 다르더라도, CPU(350)에 의해 생성되는 DMA 파라미터는 상응하는 페이지의 데이터 구조 정보의 해석 결과를 포함하므로, 내부 필터링 모듈(330)은 상기 DMA 파라미터를 이용하여 하드웨어 필터링 동작을 수행할 수 있다.
도 8에 관련된 필터링 동작을 수행하는 데이터 저장 장치(300)는 하드웨어 가속 로직 회로(360)를 포함한다.
도 8에 관련된 필터링 동작을 수행하는 데이터 저장 장치(300)는 상기 필터링 동작에 CPU(350)의 개입을 최소화할 수 있다.
DMA 컨트롤러(331)는 SRAM 버퍼(333)에 저장된 페이지의 데이터 구조 정보를 TCM(351)에 저장할 수 있다. 하드웨어 가속 로직 회로(360)는 TCM(351)에 저장된 상기 데이터 구조 정보로부터 각 로우의 오프셋과 상기 각 로우의 크기를 계산하고 계산의 결과에 상응하는 DMA 파라미터 세트를 SRAM에 저장한다.
상기 SRAM은 DMA 컨트롤러(331)가 쉽게 액세스할 수 있는 위치에 구현될 수 있다. 따라서, 상기 SRAM은 TCM(351), 하드웨어 가속 로직 회로(360)의 내부, 또는 DMA 컨트롤러(331)의 내부에 구현될 수 있다.
따라서, DMA 컨트롤러(331)는 상기 SRAM에 저장된 DMA 파라미터 세트를 순차적으로 읽으면서 SRAM 버퍼(333)로부터 각 로우를 리드하고 필터링할 수 있다.
따라서, DMA 파라미터 세트가 상기 SRAM에 저장됨에 따라, CPU(350)는 DMA 컨트롤러(331)를 한 번만 설정하면 된다.
도 7에 도시된 "SRAM Buffer to DRAM DMA"에 대한 동작과 도 8에 도시된 "SRAM Buffer to DRAM DMA"에 대한 동작은 실질적으로 동일하다.
도 9는 도 2에 도시된 데이터 저장 장치에서 수행되는 로우 리드 동작을 설명하기 위한 개념도이다.
도 2와 도 9를 참조하면, DMA 컨트롤러(331)는 하드웨어 필터링 동작을 수행하기 위해 비교 동작을 먼저 수행한다. 즉, DMA 컨트롤러(331)는 DMA 파라미터 또는 필터링 조건에 상응하는 데이터와 비교 대상이 되는 컬럼의 데이터를 비교한 후, 비교 결과에 따라 상기 컬럼을 포함하는 로우를 주기억 장치(340)로 전송할지를 결정한다.
종래의 방식에 의하면, 네 번째 컬럼(Column4)이 비교 대상 컬럼일 때, 네 번째 컬럼(Column4)에 대한 리드 동작과 비교 동작이 종료할 때까지 해당 로우 (ROW)는 전송되지 않는다. 따라서, 리드 레이턴시가 발생한다.
그러나, DMA 컨트롤러(331)는 로우(ROW)별로 포함된 복수의 컬럼들 (Column1~Column7) 중에서 우선 순위가 가장 높은 컬럼(Column4)에 대해 리드 동작과 비교 동작을 가장 먼저 수행할 수 있다. 즉, DMA 컨트롤러(331)는 우선 순위가 가장 높은 컬럼(Column4)에 대해 하드웨어 필터링을 가장 먼저 수행할 수 있다.
따라서, 종래의 방식에 비해 DMA 컨트롤러(331)는 리드 레이턴시를 줄일 수 있는 효과가 있다.
도 4의 경우, 종래의 방식에 의하면 첫 번째 로우에서 'CITY1'은 4번째로 비교되었으나, 본 발명에 따른 방식에 의하면, 첫 번째 로우에서 'CITY1'은 가장 먼저 비교된다.
따라서, CPU(350)는 비교 순서를 DMA 컨트롤러(331)에 설정할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 데이터 관리 시스템
200; 호스트
210; CPU
300; 데이터 저장 장치
310; 보조기억 장치
320; 보조기억 장치 컨트롤러
321; 페이지 타입 해석기
330; 내부 필터링 모듈 또는 하드웨어 필터
331; SRAM 버퍼
333; DMA 컨트롤러
340; 주기억 장치
350; CPU
351; 내부 메모리 또는 TCM

Claims (10)

  1. 필터링 동작을 수행하는 내부 필터링 모듈;
    중앙 처리 장치(CPU);
    불휘발성 메모리;
    휘발성 메모리; 및
    상기 불휘발성 메모리로부터 출력된 페이지의 타입을 해석하고, 해석의 결과에 따라 상기 페이지의 타입을 식별하는 지시 신호를 상기 CPU로 전송하는 페이지 타입 해석기를 포함하고,
    상기 불휘발성 메모리에서 출력되는 페이지가 인덱스를 포함하는 인덱스 페이지일 때, 상기 내부 필터링 모듈은 상기 인데스 페이지를 상기 휘발성 메모리에 저장시키고,
    상기 불휘발성 메모리에서 출력되는 페이지가 사용자 데이터를 포함하는 사용자 페이지일 때, 상기 내부 필터링 모듈은 DMA 파라미터 세트에 기초하여 상기 사용자 페이지 내 복수개의 로우들 각각을 필터링하여 제1 필터링된 데이터를 제공하고, 상기 제1 필터링된 데이터를 상기 휘발성 메모리로 전송하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 CPU는 상기 휘발성 메모리로부터 출력된 상기 제1 필터링된 데이터를 필터링하여 제2 필터링된 데이터를 상기 휘발성 메모리로 전송하는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 내부 필터링 모듈은 우선 순위에 기초하여 상기 복수개의 로우들에 포함된 복수의 컬럼들에 대해 상기 필터링 동작을 수행하는 데이터 저장 장치.
  4. 제1항에 있어서, 상기 필터는,
    상기 내부 필터링 모듈은 직접 메모리 접근(direct memory acceee(DMA)) 기능을 이용하여, 상기 사용자 페이지를 로우별로 처리하는 데이터 저장 장치.
  5. 제1항에 있어서, 상기 데이터 저장 장치는
    로우-레이턴시(low-latency) 메모리; 및
    하드웨어 가속 로직 회로를 더 포함하고,
    상기 내부 필터링 모듈은 상기 불휘발성 메모리에서 출력된 상기 페이지를 버퍼링하는 버퍼와 DMA 컨트롤러를 포함하고,
    상기 불휘발성 메모리에서 출력되는 상기 페이지가 상기 사용자 페이지일 때,
    상기 CPU는 상기 버퍼로부터 출력된 상기 사용자 페이지에 대한 데이터 구조 정보를 상기 로우-레이턴시 메모리에 저장하고,
    상기 하드웨어 가속 로직 회로는 상기 로우-레이턴시 메모리에 저장된 상기 데이터 구조 정보로부터 상기 사용자 페이지 내 상기 복수개의 로우들 각각의 오프셋과 크기를 계산하고, 계산의 결과에 상응하는 상기 DMA 파라미터 세트를 생성하고,
    상기 DMA 컨트롤러는 상기 DMA 파라미터 세트를 순차적으로 이용하여, 상기 복수개의 로우들 각각에 상기 필터링 동작을 수행하는 데이터 저장 장치.
  6. 제1항에 있어서, 상기 데이터 저장 장치는
    로우-레이턴시 메모리를 더 포함하고,
    상기 내부 필터링 모듈은 상기 불휘발성 메모리에서 출력된 상기 페이지를 버퍼링하는 버퍼와 DMA 컨트롤러를 포함하고,
    상기 불휘발성 메모리에서 출력되는 상기 페이지가 상기 사용자 페이지일 때,
    상기 CPU는 상기 버퍼로부터 출력된 상기 사용자 페이지에 대한 데이터 구조 정보를 상기 로우-레이턴시 메모리에 저장하고, 상기 로우-레이턴시 메모리에 저장된 상기 데이터 구조 정보로부터 상기 사용자 페이지 내 상기 복수개의 로우들 각각의 오프셋과 크기를 계산하고, 계산의 결과에 상응하는 상기 DMA 파라미터 세트를 생성하고,
    상기 DMA 컨트롤러는, 상기 DMA 파라미터 세트를 이용하여 상기 복수개의 로우들 각각에 상기 필터링 동작을 수행하는 데이터 저장 장치.
  7. 제1항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리이고, 상기 휘발성 메모리는 DRAM이고,
    상기 내부 필터링 모듈, 상기 CPU 및 상기 불휘발성 메모리의 동작을 제어하는 메모리 컨트롤러는 시스템 온 칩(system on chip)에 포함되고,
    상기 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive(SSD))인 데이터 저장 장치.
  8. 불휘발성 메모리;
    휘발성 메모리; 및
    데이터 기입 동작 및 데이터 독출 동작을 포함하는 데이터 억세스 동작들을 수행하는 제어 회로를 포함하고,
    상기 제어 회로는,
    중앙 처리 장치(CPU),
    휘발성 메모리 컨트롤러,
    상기 불휘발성 메모리로 데이터를 기입하거나 상기 불휘발성 메모리로부터 데이터를 독출하도록 구성되는 불휘발성 메모리 컨트롤러, 그리고
    필터링 동작을 수행하는 내부 필터링 모듈을 포함하고,
    상기 불휘발성 메모리 컨트롤러는 상기 불휘발성 메모리로부터 출력된 페이지의 타입을 해석하고, 해석의 결과에 따라 상기 페이지의 타입을 식별하는 지시 신호를 상기 CPU로 전송하는 페이지 타입 해석기를 포함하고,
    상기 CPU의 제어에 따라, 상기 불휘발성 메모리에서 출력되는 페이지가 인덱스를 포함하는 인덱스 페이지일 때, 상기 내부 필터링 모듈은 상기 인데스 페이지를 상기 휘발성 메모리에 저장시키고,
    상기 불휘발성 메모리에서 출력되는 페이지가 사용자 데이터를 포함하는 사용자 페이지일 때, 상기 내부 필터링 모듈은 DMA 파라미터 세트에 기초하여 상기 사용자 페이지 내 복수개의 로우들 각각을 필터링하여 제1 필터링된 데이터를 제공하고, 상기 제1 필터링된 데이터를 상기 휘발성 메모리로 전송하고,
    상기 CPU는 상기 휘발성 메모리로부터 출력된 상기 제1 필터링된 데이터를 필터링하여 제2 필터링된 데이터를 상기 휘발성 메모리로 전송하는 것을 특징으로 하는 데이터 저장 장치.
  9. 제8항에 있어서,
    상기 내부 필터링 모듈은 상기 불휘발성 메모리에서 출력된 상기 페이지를 버퍼링하는 버퍼와 상기 DMA 파라미터 세트를 이용하여 상기 복수개의 로우들 각각에 상기 필터링 동작을 수행하는DMA 컨트롤러를 포함하는 것을 특징으로 하는 데이터 저장 장치.
  10. 하드웨어 필터와 중앙 처리 장치(CPU)를 포함하는 데이터 저장 장치의 데이터 필터링 방법에 있어서,
    상기 데이터 저장 장치에 포함된 페이지 타입 해석기를 이용하여, 제1 메모리로부터 출력된 페이지의 타입이 인덱스를 포함하는 인덱스 페이지인지 또는 사용자 데이터를 포함하는 사용자 페이지인지를 판단하기 위하여 해석하는 단계;
    해석의 결과, 상기 페이지가 상기 인덱스 페이지일 때, 상기 하드웨어 필터를 이용하여, 상기 제1 메모리에서 출력된 상기 페이지를 제2 메모리에 저장하는 단계; 및
    해석의 결과, 상기 페이지가 상기 사용자 페이지일 때, 상기 제1 메모리에서 출력된 상기 페이지에 대해 2-스텝 필터링 동작을 수행하는 단계를 포함하고,
    상기 2-스텝 필터링 동작은 DMA 파라미터 세트에 기초하여 상기 사용자 페이지 내 복수개의 로우들 각각을 상기 하드웨어 필터를 이용하여 필터링하여 제1 필터링된 데이터를 제공하고 상기 제1 필터링된 데이터를 상기 제2 메모리로 전송하고, 상기 CPU에 의해 상기 제1 필터링된 데이터를 필터링하여 제2 필터링된 데이터를 제공하고, 상기 제2 필터링된 데이터를 상기 제2 메모리로 전송하는 것을 특징으로 하는 데이터 필터링 방법.
KR1020140017976A 2014-02-17 2014-02-17 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법 KR102214511B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140017976A KR102214511B1 (ko) 2014-02-17 2014-02-17 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법
US14/623,080 US10394459B2 (en) 2014-02-17 2015-02-16 Data storage device for filtering page in two steps, system including the same, and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140017976A KR102214511B1 (ko) 2014-02-17 2014-02-17 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150096994A KR20150096994A (ko) 2015-08-26
KR102214511B1 true KR102214511B1 (ko) 2021-02-09

Family

ID=53798167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140017976A KR102214511B1 (ko) 2014-02-17 2014-02-17 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법

Country Status (2)

Country Link
US (1) US10394459B2 (ko)
KR (1) KR102214511B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102251811B1 (ko) * 2015-01-02 2021-05-13 삼성전자주식회사 하드웨어 필터를 포함하는 데이터 저장 장치 및 상기 데이터 저장 장치를 포함하는 데이터 처리 시스템
CN105786409B (zh) * 2016-02-26 2018-12-14 联想(北京)有限公司 一种电子设备及资源共享方法
KR102533236B1 (ko) 2016-06-20 2023-05-17 삼성전자주식회사 개선된 레이턴시를 갖는 메모리 장치 및 그것의 동작 방법
US10474611B2 (en) * 2017-09-19 2019-11-12 International Business Machines Corporation Aligning received bad data indicators (BDIS) with received data on a cross-chip link
US11914903B2 (en) * 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
CN113536075A (zh) * 2021-07-20 2021-10-22 锐掣(杭州)科技有限公司 数据提取方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120137075A1 (en) * 2009-06-09 2012-05-31 Hyperion Core, Inc. System and Method for a Cache in a Multi-Core Processor
US20130060993A1 (en) * 2010-08-31 2013-03-07 Chanik Park Storage device and stream filtering method thereof

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003017136A1 (en) 2001-08-16 2003-02-27 Etagon Israel Ltd. Using associative memory to perform database operations
US6912612B2 (en) 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
WO2004027649A1 (en) 2002-09-18 2004-04-01 Netezza Corporation Asymmetric streaming record data processor method and apparatus
US20050198008A1 (en) * 2004-03-02 2005-09-08 Adler David W. Index exploitation for spatial data
US7266661B2 (en) * 2004-05-27 2007-09-04 Silverbrook Research Pty Ltd Method of storing bit-pattern in plural devices
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7610464B2 (en) * 2006-02-22 2009-10-27 Sony Computer Entertainment Inc. Methods and apparatus for providing independent logical address space and access management
CA2653421C (en) 2006-07-03 2015-02-17 Arne Simonsson Method and arrangement for handover in a radio access network
US7908259B2 (en) 2006-08-25 2011-03-15 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
US8407428B2 (en) * 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US7970919B1 (en) 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8380915B2 (en) 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8547418B2 (en) * 2010-07-19 2013-10-01 Broadcom Corporation Method and system for processing and displaying video in three dimensions using a liquid crystal display
US8725934B2 (en) * 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
JP2014520606A (ja) * 2011-07-01 2014-08-25 ミルウォード,ニキ,ザカリアス 代謝イメージング用組成物および方法
US9645758B2 (en) * 2011-07-22 2017-05-09 Sandisk Technologies Llc Apparatus, system, and method for indexing data of an append-only, log-based structure
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8635407B2 (en) 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
JP6216441B2 (ja) * 2013-04-09 2017-10-18 イーエムシー コーポレイションEmc Corporation 大量固体メモリ資源への独立かつ直接的アクセスを有するマルチプロセッサシステム
US9367470B2 (en) * 2013-11-01 2016-06-14 Cisco Technology, Inc. Bounded cache searches

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120137075A1 (en) * 2009-06-09 2012-05-31 Hyperion Core, Inc. System and Method for a Cache in a Multi-Core Processor
US20130060993A1 (en) * 2010-08-31 2013-03-07 Chanik Park Storage device and stream filtering method thereof

Also Published As

Publication number Publication date
KR20150096994A (ko) 2015-08-26
US10394459B2 (en) 2019-08-27
US20150234602A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
KR102214511B1 (ko) 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법
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
Kim et al. Fast, energy efficient scan inside flash memory SSDs
EP3060993B1 (en) Final level cache system and corresponding method
Do et al. Query processing on smart ssds: Opportunities and challenges
KR102564165B1 (ko) 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US8819335B1 (en) System and method for executing map-reduce tasks in a storage device
KR102103543B1 (ko) 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
KR101891387B1 (ko) 영속 저장 장치에서 인접 데이터 블록과 비인접 세트의 논리 어드레스 블록 간에 판독 및 기입
US8984225B2 (en) Method to improve the performance of a read ahead cache process in a storage array
US10303366B2 (en) Data storage device that divides and processes a command and data processing system including the same
KR101341507B1 (ko) 수정된 b+트리 노드 검색 방법 및 장치
US10515078B2 (en) Database management apparatus, database management method, and storage medium
US8775742B2 (en) System and method for cache management in a DIF enabled storage system
US9678689B2 (en) Storage systems and aliased memory
Watanabe et al. Column-oriented database acceleration using fpgas
US10482087B2 (en) Storage system and method of operating the same
US20160170892A1 (en) Expression pattern matching in a storage subsystem
CN107632779B (zh) 数据处理方法和装置、服务器
US11822474B2 (en) Storage system and method for accessing same
US9483401B2 (en) Data processing method and apparatus
JP2018502379A5 (ko)
US10860577B2 (en) Search processing system and method for processing search requests involving data transfer amount unknown to host
CN202632285U (zh) 一种应用智能dma的ssd控制器

Legal Events

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