KR20160022007A - 컴퓨터 장치 및 저장 장치 - Google Patents

컴퓨터 장치 및 저장 장치 Download PDF

Info

Publication number
KR20160022007A
KR20160022007A KR1020140107477A KR20140107477A KR20160022007A KR 20160022007 A KR20160022007 A KR 20160022007A KR 1020140107477 A KR1020140107477 A KR 1020140107477A KR 20140107477 A KR20140107477 A KR 20140107477A KR 20160022007 A KR20160022007 A KR 20160022007A
Authority
KR
South Korea
Prior art keywords
data structure
file
storage device
deleted
data
Prior art date
Application number
KR1020140107477A
Other languages
English (en)
Other versions
KR102282006B1 (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 KR1020140107477A priority Critical patent/KR102282006B1/ko
Priority to US14/828,616 priority patent/US10089348B2/en
Publication of KR20160022007A publication Critical patent/KR20160022007A/ko
Application granted granted Critical
Publication of KR102282006B1 publication Critical patent/KR102282006B1/ko

Links

Images

Classifications

    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs

Landscapes

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

Abstract

본 발명의 일 실시예에 따르면, 비휘발성 메모리 기반의 저장장치를 제어하는 컴퓨터 장치가 제공된다. 상기 컴퓨터 장치는 데이터베이스 파일 내의 데이터구조의 삭제 여부를 나타내기 위해 상기 데이터베이스 파일 내에 기록되는 식별자를 이용하여 상기 데이터 구조의 삭제 여부를 감지하는 파일 수정 감지부, 및 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드를 생성하여 상기 저장장치로 전송하는 커맨드 생성부를 포함한다.

Description

컴퓨터 장치 및 저장 장치{COMPUTER DEVICE AND STORAGE DEVICE}
본 발명은 컴퓨터 장치 및 저장 장치에 관한 것이다.
운영체제(Operating System; OS)에서 파일을 삭제할 때, 저장장치(Storage device)는 상기 파일에 상응하는 데이터 블록 전체를 이레이즈(erase)하지 않고, 상기 블록을 비사용 상태(not in use)로 플래깅(flagging)한다. 저장장치가 SSD(Solid State Drive)인 경우, 상기 블록에 데이터를 다시 기입하기 위해서는 상기 블록을 먼저 이레이즈해야 하므로, 기입 시 성능 저하가 발생할 수 있다.
상기 성능 저하를 막기 위하여 트림(trim) 기능이 사용된다. 트림은 OS가 SSD로 비사용 상태(not in use)의 셀들을 알려주고, 이에 따라 SSD가 상기 셀들을 무효화하는 것을 의미한다. 이후 SSD는 상기 셀들을 블록 단위로 이레이즈할 수 있다. 트림이 발생하기 위해서는 호스트의 OS가 파일을 먼저 삭제하여야 하며, 이후 OS가 트림 커맨드를 SSD로 전달하면, SSD는 호스트의 유휴 시간(idle time)에 상기 트림 커맨드에 따라 해당하는 셀들을 무효화할 수 있다.
한편, 데이터베이스(Database; DB)는 하나의 파일로 관리될 수 있다. DB 내부의 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되는 경우, 파일이 삭제되는 것은 아니므로 트림이 발생하지 않는다. 따라서 DB에서 대용량의 데이터구조를 삭제하더라도, SSD는 상기 데이터구조에 상응하는 블록을 이레이즈하지 않으므로, SSD의 가용 용량 및 데이터 기입 시 속도 측면에서 비효율이 발생한다.
본 발명이 이루고자 하는 기술적인 과제는 보다 개선된 용량 및 기입 속도를 갖는 저장장치 및 이를 제어하는 컴퓨터 장치를 제공하는 것이다.
본 발명의 일 실시예에 따르면, 비휘발성 메모리 기반의 저장장치를 제어하는 컴퓨터 장치가 제공된다.
상기 컴퓨터 장치는 데이터베이스 파일 내의 데이터구조의 삭제 여부를 나타내기 위해 상기 데이터베이스 파일 내에 기록되는 식별자를 이용하여 상기 데이터 구조의 삭제 여부를 감지하는 파일 수정 감지부, 및 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드를 생성하여 상기 저장장치로 전송하는 커맨드 생성부를 포함한다.
상기 데이터구조는 테이블, 로우 또는 필드일 수 있다.
상기 파일 수정 감지부 및 상기 커맨드 생성부는 상기 컴퓨터 장치의 데이터베이스 엔진에 의해 실행될 수 있다.
상기 파일 수정 감지부 및 상기 커맨드 생성부는 상기 컴퓨터 장치의 필터 드라이버에 의해 실행되며, 상기 필터 드라이버는 상기 컴퓨터 장치의 데이터베이스 엔진이 출력하는 파일 수정 커맨드에 따라 상기 어드밴스드-트림 커맨드를 생성할 수 있다.
본 발명의 다른 실시예에 따른 컴퓨터 시스템은 상기 컴퓨터 장치, 및 상기 저장장치를 포함한다. 상기 데이터베이스 파일은 SQL(Structured Query Language) 데이터베이스 파일이고, 상기 저장장치는 SSD(Solid State Drive)일 수 있다.
본 발명의 또 다른 실시예에 따른 저장장치는 데이터베이스 파일 내 데이터구조의 삭제 여부를 나타내기 위해 상기 데이터베이스 파일 내에 기록되는 식별자를 이용하여 상기 데이터 구조의 삭제 여부를 감지하며, 상기 데이터구조는 상기 파일보다 작은 용량을 갖는 데이터구조 삭제 감지부, 및 삭제된 데이터구조를 저장하는 셀들을 무효화(invalidate)하는 무효화 처리부를 포함한다.
상기 무효화 처리부는 호스트의 유휴(idle) 시간에 상기 셀들을 무효화할 수 있다.
상기 저장장치는 상기 무효화된 셀들 중 적어도 하나로 무효화되지 않은 셀의 데이터를 이동시키는 데이터 이동 처리부를 더 포함할 수 있다.
상기 데이터구조 삭제 감지부는 호스트로부터 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드를 수신하고, 상기 어드밴스드-트림 커맨드에 따라 상기 파일 내 데이터구조가 삭제되었는지 여부를 감지하며, 상기 무효화 처리부는 상기 삭제된 데이터구조에 상응하는 정보에 따라 상기 데이터구조를 저장하는 셀들을 무효화할 수 있다.
상기 데이터구조 삭제 감지부는 상기 저장장치 내의 적어도 하나의 데이터베이스 파일의 플래그 정보를 분석하여, 상기 적어도 하나의 데이터베이스 파일 내에서 데이터구조가 삭제되었는지 여부를 감지하며, 상기 무효화 처리부는 상기 플래그 정보에 따라 상기 데이터구조를 저장하는 셀들을 무효화할 수 있다.
상기 저장장치는 상기 적어도 하나의 데이터베이스 파일의 플래그 위치 패턴에 따라 상기 무효화된 셀들 중 적어도 하나로 무효화되지 않은 셀의 데이터를 이동시키는 데이터 이동 처리부를 더 포함할 수 있다.
상기 적어도 하나의 데이터베이스 파일은 상기 저장장치 내의 모든 데이터베이스 파일 또는 호스트로부터의 입력에 따라 선택된 데이터베이스 파일일 수 있다.
상기 무효화 처리부는 상기 적어도 하나의 데이터베이스 파일에 포함되는 플래그의 주소를 저장하는 적어도 하나의 셀을 무효화할 수 있다.
상기 데이터구조 삭제 감지부는 호스트로부터의 입력에 따라, 또는 상기 호스트의 유휴 시간 또는 기설정된 시간에 상기 적어도 하나의 데이터베이스 파일의 플래그 정보를 분석할 수 있다.
상기 저장장치는 파일 삭제에 따라 상기 파일을 저장하는 셀들을 무효화하는 트림 기능 및 파일 내 데이터구조의 삭제에 따라 상기 데이터구조를 저장하는 셀들을 무효화하는 어드밴스드-트림 기능을 지원하며, 호스트로부터 설정된 우선순위 또는 기설정된 우선순위에 따라 상기 트림 기능 및 상기 어드밴스드 트림 기능을 수행할 수 있다.
본 발명의 일 실시예에 따르면, 파일 내부의 데이터구조의 삭제에 따라 저장장치가 트림에 상응하는 동작을 수행함으로써, 저장장치의 가용 용량 및 데이터 기입 속도가 개선되는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 2는 호스트의 파일 삭제 시 저장장치의 처리를 나타낸다.
도 3은 저장장치에 저장되는 데이터베이스 파일의 구조를 나타낸다.
도 4는 도 1의 호스트의 일 실시예를 나타낸다.
도 5는 도 1의 호스트의 다른 실시예를 나타낸다.
도 6은 도 1의 컨트롤러의 일 실시예를 나타낸다.
도 7은 도 1의 컨트롤러의 다른 실시예를 나타낸다.
도 8은 데이터구조의 삭제 시 저장장치의 동작의 일례를 나타낸다.
도 9는 플래그 정보를 데이터구조로 저장하는 일례를 나타낸다.
도 10은 무효화 처리부 및 데이터 이동 처리부의 동작에 따른 저장장치의 상태 변화를 나타낸다.
도 11은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작 방법을 나타내는 플로우차트이다.
도 12는 본 발명의 일 실시예에 따른 저장장치의 동작 방법을 나타내는 플로우차트이다.
도 13a는 DB 파일 내에서 하나의 필드가 삭제되는 경우를 설명하기 위한 도면이다.
도 13b는 DB 파일 내에서 하나의 필드가 삭제되는 경우 본 발명의 일 실시예에 따른 저장 장치에서의 변화를 설명하기 위한 도면이다.
도 13c는 DB 파일 내에서 하나의 필드가 삭제되는 경우 기존의 저장 장치에서의 변화를 설명하기 위한 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(1)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고 다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고 다닐 수 있는 장치(handheld device)로 구현될 수 있다.
다른 실시예에 따라, 컴퓨터 시스템(1)은 PC(personal computer) 또는 데이터 서버로 구현될 수 있다.
컴퓨터 시스템(1)은 호스트(10) 및 저장장치(20)를 포함할 수 있다.
호스트(10)는 저장장치(20)의 전반적인 동작을 제어할 수 있다. 실시예에 따라, 호스트(10)는 시스템 온 칩(system on chip(SoC))으로 구현될 수 있다. 호스트(10)는 파일 시스템을 지원하는 운영체제(Operating System; OS)를 실행할 수 있다.
저장장치(20)는 일체형(all-in-one) 데이터 저장 장치로 구현될 수 있다. 저장장치(20)는 실시예에 따라 SSD(Solid-state Drive), MMC(Multi Media Card), eMMC(embedded Multi Media Card), 또는 UFS(Universal Flash System)로 구현될 수 있다.
실시예에 따라, 호스트(10)와 저장장치(20)는 SATA(serial advance technology attachment), SAS(Serial Attached SCSI) 또는 PCIe(Peripheral Component Interconnect Express)를 통해 통신할 수 있다.
저장장치(20)는 컨트롤러(21) 및 비휘발성 메모리(Non-Voletile Memory; NVM, 23)를 포함한다.
파일 삭제에 따라, 호스트(10)는 저장장치(20)의 비휘발성 메모리(23)에서 상기 파일을 저장하는 셀들을 무효화하기 위한 트림 커맨드(TRIM)를 저장장치(20)로 전송할 수 있다.
파일 수정에 따라 상기 파일 내 데이터구조가 삭제되는 경우, 호스트(10)는 상기 데이터구조의 삭제에 따라 저장장치(20)의 비휘발성 메모리(23)에서 상기 데이터구조를 저장하는 셀들을 무효화하기 위한 어드밴스드-트림 커맨드(TRIM_A)를 저장장치(20)로 전송할 수 있다.
컨트롤러(21)는 호스트(10)로부터 트림 커맨드(TRIM) 또는 어드밴스드-트림 커맨드(TRIM_A)를 수신하고, 수신한 커맨드에 응답하여 비휘발성 메모리(220)의 동작을 제어할 수 있다.
비휘발성 메모리(23)는 호스트(10)로부터 제공된 데이터를 저장할 수 있다. 비휘발성 메모리(23)는 전원 공급이 차단되더라도 저장된 데이터를 유지할 수 있다. 예를 들어, 비휘발성 메모리(23)는 NAND 플래시 메모리, NOR 플래시 메모리, PRAM, FRAM, RRAM, 또는 MRAM을 포함할 수 있다.
도 2는 호스트의 파일 삭제 시 저장장치의 처리를 나타낸다.
도 1 및 도 2를 참조하면, 저장장치(20)에 저장되는 파일(FL1)은 복수의 글자, 기호 및 특수문자를 포함할 수 있다. 예컨대 파일(FL1)은 제1 특수문자 그룹(C1) 및 제2 특수문자 그룹(C2)을 포함할 수 있다.
호스트(10)가 파일(FL1)을 삭제함에 따라, 저장장치(20)는 파일(FL1)에 상응하는 데이터 블록 전체를 이레이즈(erase)하지 않고, 파일(FL1)에 상응하는 블록을 비사용 상태(not in use)로 플래깅(flagging)할 수 있다. 이에 따라 호스트(10)는 파일 삭제를 빠르게 처리할 수 있다.
예컨대, 저장장치(10)는 파일(FL1)의 제1 특수문자 그룹(C1)을 저장하는 셀들만을 무효화(invalidate)시키고, 제2 특수문자 그룹(C2)을 저장하는 셀들은 유효한 상태로 유지시킬 수 있다.
저장장치(20)에 데이터를 재기입할 경우, 저장장치(20)가 하드디스크 드라이브(Hard Disk Drive; HDD)이면 데이터를 덮어쓰기(overwrite)하여도 속도 저하가 발생하지 않는다. 그러나 저장장치가 SSD(Solid State Drive)인 경우, 파일(FL1)에 상응하는 블록에 데이터를 다시 기입하기 위해서는 상기 블록을 먼저 이레이즈해야 하므로, 기입 시 성능 저하가 발생할 수 있다.
상기 성능 저하를 막기 위하여 트림(trim) 기능이 사용될 수 있다. 호스트(10)가 저장장치(20)로 트림 커맨드(TRIM)를 전송하여 삭제된 파일(FL1)에 상응하는 비사용 상태의 셀들(예컨대 제2 특수문자 그룹(C2)을 저장하는 셀들)을 알려주면, 저장장치(20)는 호스트의 유휴 시간(idle time)에 상기 비사용 상태의 셀들을 무효화시킬 수 있다. 이후 저장장치(20)는 가비지 컬렉션 및 블록 단위 이레이즈를 통해 가용 용량을 증가시킬 수 있다.
도 3은 저장장치에 저장되는 데이터베이스 파일의 구조를 나타낸다.
도 1 및 도 3을 참조하면, 호스트(10)는 데이터베이스 관리 시스템(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(Structured Query Language), PostgreSQL, SQLite, Microsoft SQL Server, Microsoft Access, Oracle, SAP, dBase, FoxPro, IBM DB2 또는 FilemakerPro일 수 있다.
실시예에 따라, DBMS는 데이터베이스(Database; DB)를 적어도 하나의 데이터베이스 파일(FL2)로 관리할 수 있다. 데이터베이스 파일(FL2)은 복수의 테이블, 예컨대 제1 테이블(T1) 및 제2 테이블(T2)을 포함할 수 있다.
각 테이블, 예컨대 제1 테이블(T1)은 복수의 로우(row)(또는 레코드(record)라 칭함), 예컨대 제1 로우(R1), 제2 로우(R2) 및 제3 로우(R3)를 포함할 수 있다. 또한, 제1 테이블(T1)은 복수의 필드들(F1, F2, F3)을 포함할 수 있다. 각 로우, 예컨대 제1 로우(R1)는 각 필드, 예컨대 제1 필드(F1), 제2 필드(F2) 및 제3 필드(F3)에 해당하는 데이터 값을 포함할 수 있다.
호스트(10)는 파일이 삭제됨에 따라 저장장치(20)로 트림 커맨드(TRIM)를 전송할 수 있다. 그러나, 호스트(10)에서 DB 내부의 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되는 경우, 파일이 삭제되는 것은 아니므로 호스트(10)는 저장장치(20)로 트림 커맨드(TRIM)를 전송하지 않는다.
본 발명의 실시예에 따르면, 파일(예컨대, DB 파일) 내부의 데이터구조의 삭제에 따라 호스트(10)는 저장장치(20)로 어드밴스드-트림 커맨드(TRIM_A)를 전송할 수 있다. 저장장치(20)는 어드밴스드-트림 커맨드(TRIM_A)에 따라 트림에 상응하는 동작을 수행할 수 있다. 이에 따라, 저장장치(20)의 가용 용량 및 데이터 기입 속도가 개선되는 효과가 있다.
도 4는 도 1의 호스트의 일 실시예를 나타낸다.
도 4를 참조하면, 호스트(10a)는 DB 엔진 실행부(11a)를 포함할 수 있다.
DB 엔진 실행부(11a)는 DB 엔진(예컨대 SQL 서버 엔진)을 실행할 수 있다. DB 엔진 실행부(11a)는 파일 수정 표시부(110), 파일 수정 감지부(111) 및 커맨드 생성부(113)를 포함할 수 있다. DB 엔진 실행부(11a)는 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 예컨대, DB 엔진 실행부(11a)는 DB 엔진 프로그램 및 본 발명의 실시예에 따른 어드밴스드 트림 동작을 실행하기 위한 하나 이상의 프로세서(미도시)를 포함할 수 있다.
파일 수정 표시부(110)는 데이터베이스(DB) 파일 내의 어느 하나의 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되는 경우, 해당 데이터 구조가 삭제되었음을 나타내는 식별자(예컨대, 플래그 정보)를 DB 파일 내에 기록할 수 있다.
파일 수정 감지부(111)는 파일(예컨대 SQL DB 파일)의 수정에 따라 상기 파일 내 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었는지 여부를 감지할 수 있다. 예컨대, 파일 수정 감지부(111)는 DB 파일 내의 플래그 정보를 이용하여 해당 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었음을 감지할 수 있다.
커맨드 생성부(113)는 상기 데이터구조가 삭제됨에 따라 상기 삭제된 데이터구조를 지정하는 정보- 예컨대, DB 파일명, 파일 주소, 삭제된 데이터 구조의 시작 어드레스, 끝 어드레스 및 데이터 크기 중 적어도 하나-를 포함하는 어드밴스드-트림 커맨드(TRIM_A)를 생성하여 저장장치(20)로 전송할 수 있다. 따라서, 호스트(10a)는 운영체제(Operating System; OS)를 거치지 않고 DB 엔진을 통해 저장장치(20)로 어드밴스드-트림 커맨드(TRIM_A)를 전송할 수 있다.
실시예에 따라, 어드밴스드-트림 커맨드(TRIM_A)는 삭제된 데이터구조에 상응하는 파일명, 파일주소 및 파일 내 변경되는 부분에 상응하는 주소(예컨대, 시작 주소, 데이터 크기, 끝 주소 등)를 포함할 수 있다.
실시예에 따라, 호스트(10a)에 API(application programming interface) 파일을 깔고, DB 엔진의 실행 파일을 새로 컴파일함으로써, DB 엔진이 어드밴스드-트림을 지원하도록 할 수 있다. 다른 실시예에 따라, 어드밴스드-트림을 지원하기 위한 소프트웨어는 API 파일 대신 개발 소스, SDK(Software Development Kit) 또는 라이브러리 파일 등으로 제공되어 호스트(10a)에 설치될 수 있다.
도 5는 도 1의 호스트의 다른 실시예를 나타낸다.
도 1 및 도 5를 참조하면, 호스트(10b)는 DB 엔진 실행부(11b), 저장장치 드라이버(13) 및 필터 드라이버(15)를 포함할 수 있다. DB 엔진 실행부(11b), 저장장치 드라이버(13) 및 필터 드라이버(15) 각각은 소프트웨어 또는 펌웨어로 구현될 수 있다.
DB 엔진 실행부(11b)는 DB 엔진(예컨대 SQL 서버 엔진)을 실행할 수 있다.
DB 엔진 실행부(11b)는 파일 수정 표시부(110)를 포함할 수 있다. 파일 수정 표시부(110)는 상술한 바와 같이, 데이터베이스(DB) 파일 내의 어느 하나의 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되는 경우, 해당 데이터 구조가 삭제되었음을 나타내는 식별자(예컨대, 플래그 정보)를 DB 파일 내에 기록할 수 있다.
DB 엔진 실행부(11b)는 DB 파일(예컨대 SQL DB 파일)의 수정 또는 DB 파일 내의 데이터 구조의 삭제에 따라 저장장치 드라이버(13)로 제1 커맨드(CMD1)를 전송할 수 있다.
저장장치 드라이버(13)는 제1 커맨드(CMD1)를 저장장치(20)의 규격에 맞게 수정하여 제2 커맨드(CMD2)를 생성하고 필터 드라이버(15)로 전송할 수 있다.
필터 드라이버(15)는 파일 수정 감지부(151) 및 커맨드 생성부(153)를 포함할 수 있다. 필터 드라이버(15)는 하드웨어, 소프트웨어, 또는 하드웨어 및 소트트웨어의 결합으로 구현될 수 있다. 실시예에 따라 필터 드라이버(15)는 호스트(10b)의 운영체제(OS)에 설치될 수 있다.
파일 수정 감지부(151)는 제2 커맨드(CMD)를 분석하여, 파일의 수정에 따라 상기 파일 내 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었는지 여부를 감지할 수 있다. 예컨대, 파일 수정 감지부(111)는 DB 파일 내의 플래그 정보를 이용하여 해당 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었음을 감지할 수 있다.
커맨드 생성부(153)는 상기 데이터구조가 삭제됨에 따라 제2 커맨드(CMD2)를 수정하여, 상기 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드(TRIM_A)를 생성하고 저장장치(20)로 전송할 수 있다.
실시예에 따라, 어드밴스드-트림 커맨드(TRIM_A)는 삭제된 데이터구조에 상응하는 파일명, 파일주소 및 파일 내 변경되는 부분에 상응하는 주소(예컨대, 시작 주소, 데이터 크기, 끝 주소 등)를 포함할 수 있다.
도 4의 실시예에서는, 파일 수정부(111) 및 커맨드 생성부(113)가 DB 엔진 실행부(11a)에 구현됨으로써, 기존 DB 프로그램을 수정함으로써, 본 발명의 실시예에 따른 어드밴스드 트림 기능이 구현될 수 있다.
이에 반해, 도 5의 실시예에서는, 파일 수정부(111) 및 커맨드 생성부(113)가 필터 드라이버(15)에 구현됨으로써, 기존 DB 프로그램의 수정없이, 본 발명의 실시예에 따른 어드밴스드 트림 기능이 구현될 수 있다.
도 6은 도 1의 컨트롤러의 일 실시예를 나타낸다.
도 1 및 도 6을 참조하면, 컨트롤러(21a)는 데이터구조 삭제 감지부(211a) 및 무효화 처리부(213)를 포함할 수 있다.
데이터구조 삭제 감지부(211a)는 호스트(10)로부터 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드(TRIM_A)를 수신하고, 어드밴스드-트림 커맨드(TRIM_A)에 따라 파일 내 데이터구조가 삭제되었는지 여부를 감지할 수 있다. 상기 데이터구조는 상기 파일보다 작은 용량을 가질 수 있다.
무효화 처리부(213)는 상기 데이터구조가 삭제됨에 따라, 해당 데이터구조를 저장하는 셀들, 즉 상기 데이터구조에 해당하는 비휘발성 메모리(230)의 실제 데이터를 무효화(invalidate)할 수 있다. 예컨대, 무효화 처리부(213)는 호스트(10)의 유휴(idle) 시간에 상기 셀들을 무효화할 수 있다. 실시예에 따라, 무효화되는 셀들의 단위는 페이지 단위일 수 있다.
예를 들어, 무효화 처리부(213)는 비휘발성 메모리(23)의 각 페이지의 유효 여부를 표시하는 유효성 필드들 중 상기 삭제된 데이터 구조에 상응하는 페이지의 유효성 필드에 무효를 표시할 수 있다.
데이터 이동 처리부(215)는 무효화된 셀들(예컨대, 무효화된 페이지) 또는 유효한 셀들(예컨대, 유효한 페이지) 끼리 데이터 블록별로 모을 수 있다.
일 실시예에서, 데이터 이동 처리부(215)는 가비지 컬렉션(gabage collection)을 통해 각 데이터 블록에서 유효한 셀들(예컨대, 유효한 페이지)만을 새로운 데이터 블록으로 이동한 후, 무효화된 셀들만을 포함하는 데이터 블록을 이레이즈할 수 있다.
데이터구조 삭제 감지부(211a), 무효화 처리부(213) 및 데이터 이동 처리부(215)는 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 예컨대, 컨트롤러(21a)는 데이터구조 삭제 감지부(211a), 무효화 처리부(213) 및 데이터 이동 처리부(215)의 기능을 구현한 프로그램을 실행하기 위한 하나 이상의 프로세서(미도시)를 포함할 수 있다.
도 7은 도 1의 컨트롤러의 다른 실시예를 나타낸다. 도 7의 컨트롤러(21b)의 구성은 도 6에 도시된 것과 대부분 동일하므로, 설명의 편의를 위해 이하에서 차이점을 위주로 설명한다.
다른 실시예에 따라, 데이터구조 삭제 감지부(211b)는 호스트(10)로부터 어드밴스드-트림 커맨드(TRIM_A)를 수신하는지 여부와 무관하게, 삭제된 데이터구조와 관련하여 트림에 상응하는 동작을 수행할 수 있다.
도 6의 실시예에서는, 호스트(10)로부터 발급된 어드밴스드-트림 커맨드(TRIM_A)에 응답하여 저장장치(20)가 어드밴스드-트림 동작을 수행하는데 반하여, 도 7의 실시예에서는, 호스트(10)로부터의 어드밴스드-트림 커맨드(TRIM_A)의 수신 없이, 저장장치(20)가 자체적으로 어드밴스드-트림 동작(설명의 편의상, '오토 어드밴스드-트림 동작'이라 함)을 수행한다.
일 실시예에서, 오토 어드밴스드-트림 동작의 수행을 위해서, 저장장치(20)의 파워온(power-on)시, 호스트(10)가 저장장치(20)에 오토 어드밴스드-트림 동작을 인에이블하기 위한 설정을 할 수 있다.
데이터구조 삭제 감지부(211b)는 유휴(idle) 시간에 비휘발성 메모리(23)에 저장된 파일들 중 DB 파일을 검색한다. 데이터구조 삭제 감지부(211b)는 검색한 DB 파일 내에서 플래그 정보를 검색하여 해당 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었는지 여부를 알아낸다.
그리고, 데이터구조 삭제 감지부(211b)는 플래그 정보를 이용하여 삭제된 데이터구조에 상응하는 셀들을 지정한다. 즉, 데이터구조 삭제 감지부(211b)는 플래그 정보에 따라 무효화시킬 셀들의 시작 어드레스 및 크기 등을 정할 수 있다.
무효화 처리부(213)는 데이터구조 삭제 감지부(211b)에 의해 지정된 셀들, 즉 상기 데이터구조에 해당하는 비휘발성 메모리(230)의 실제 데이터를 무효화(invalidate)할 수 있다.
데이터 이동 처리부(215)는 가비지 컬렉션(gabage collection)을 통해 각 데이터 블록에서 유효한 셀들(예컨대, 유효한 페이지)만을 새로운 데이터 블록으로 이동한 후, 무효화된 셀들만을 포함하는 데이터 블록을 이레이즈할 수 있다.
상술한 '오토 어드밴스드-트림 동작'에 관하여는 이하의 도 8 내지 도 10을 참조하여 추가 설명하기로 한다.
도 8은 데이터구조의 삭제 시 저장장치의 동작의 일례를 나타낸다.
도 1 및 도 8을 참조하면, 제1 테이블(T1)에 포함되는 제1 로우(R1) 또는 제1 필드(F1) 각각은 복수의 데이터들을 포함할 수 있다.
호스트(10)에서 DB의 데이터구조가 삭제되는 경우, DB 엔진은 DB 파일에서 삭제되는 데이터구조의 복수의 데이터들을 모두 삭제하지 않고, 플래깅만을 수행할 수 있다. 예컨대 제1 로우(R1)가 삭제되는 경우 DB 엔진은 제1 로우(R1)에 상응하는 일부 데이터에 대하여 제1 플래그(FLAG1)를 표시할 수 있다. 제1 필드(F1)가 삭제되는 경우 DB 엔진은 제1 필드(F1)에 상응하는 일부 데이터에 대하여 제2 플래그(FLAG2)를 표시할 수 있다.
데이터구조 삭제 감지부(211)는 저장장치(20) 내의 적어도 하나의 데이터베이스 파일의 플래그 정보를 분석하여, 상기 적어도 하나의 데이터베이스 파일 내에서 데이터구조가 삭제되었는지 여부를 감지할 수 있다. 데이터구조 삭제 감지부(211)는 호스트로부터의 자동 어드밴스드-트림 수행을 지시하는 입력에 따라, 또는 상기 호스트의 유휴 시간 또는 기설정된 시간에 상기 적어도 하나의 데이터베이스 파일의 플래그 정보를 분석할 수 있다. 상기 적어도 하나의 데이터베이스 파일은 상기 저장장치 내의 모든 데이터베이스 파일이거나, 또는 호스트로부터의 입력에 따라 선택된 데이터베이스 파일일 수 있다.
도 9는 플래그 정보를 데이터구조로 저장하는 일례를 나타낸다.
도 6 및 도 9를 참조하면, 데이터구조 삭제 감지부(211)는 데이터베이스 파일의 플래그 정보를 데이터구조, 예컨대 큐(queue)로 저장할 수 있다.
큐는 각 플래그의 위치 정보를 저장할 수 있다. 실시예에 따라, 큐는 각 플래그가 어떤 데이터구조(예컨대 테이블, 로우 또는 필드)를 나타내는지에 관련된 정보를 더 저장할 수 있다.
도 10은 무효화 처리부 및 데이터 이동 처리부의 동작에 따른 저장장치의 상태 변화를 나타낸다. 도 10에서 각 단위 박스는 비휘발성 메모리의 각 셀을 나타내고, O 표시는 해당 셀이 유효(valid) 상태임을 나타내며, X 표시는 해당 셀이 무효(invalid) 상태임을 나타낸다.
도 1, 도 6, 도 7, 도 8 및 도 10을 참조하면, 무효화 처리부(213)는 플래그 정보에 따라 상기 데이터구조를 저장하는 셀들을 무효화할 수 있다.
예컨대 제1 테이블(T1) 내에서 제1 로우(R1) 및 제1 필드(F1)가 삭제된 경우, 데이터구조 삭제 감지부(211)는 제1 로우(R1)에 상응하는 제1 플래그(FLAG1) 및 제1 필드(F1)에 상응하는 제2 플래그(FLAG2)의 정보를 큐로 저장할 수 있다. 무효화 처리부(213)는 상기 큐에 따라 제1 플래그(FLAG1)에 상응하는 제1 영역(A1) 및 제2 플래그(FLAG2)에 상응하는 제2 영역(A2) 내의 셀들을 무효화할 수 있다.
실시예에 따라, 무효화 처리부(213)는 데이터베이스 파일에 포함되는 플래그의 주소를 저장하는 적어도 하나의 셀을 무효화할 수 있다. 예컨대, 무효화 처리부(213)는 제1 플래그(FLAG1) 및 제2 플래그(FLAG2)의 주소를 저장하는 셀들을 무효화할 수 있다.
데이터 이동 처리부(215)는 무효화 처리부(213)에 의해 무효화된 셀들 중 적어도 하나로 무효화되지 않은 셀의 데이터를 이동시킬 수 있다. 예컨대, 데이터 이동 처리부(215)는 데이터베이스 파일의 플래그 위치 패턴에 따라 무효화된 셀들 중 적어도 하나로 무효화되지 않은 셀의 데이터를 이동시킬 수 있다. 또한 데이터 이동 처리부(215)는 그 밖의 무효 상태의 셀들 중 적어도 하나로 유효 상태의 셀의 데이터를 이동시킬 수 있다. 예컨대 데이터 이동 처리부(215)는 제1 무효 상태 셀(IC1)로 제1 유효 상태 셀(VC1)의 데이터를 이동시킬 수 있다.
데이터 이동에 따라 유효 상태의 셀들 및 무효 상태의 셀들이 각각 블록 단위로 모아질 수 있다. 예컨대 제1 블록(B1)은 유효 상태의 셀들만을 포함하고, 제2 블록(B2)은 무효 상태의 셀들만을 포함할 수 있다. 이후 저장장치(20)는 제2 블록(B2)을 이레이즈함으로써 저장장치(20)의 가용 용량을 증가시킬 수 있다.
실시예에 따라, 호스트(10)는 저장장치(20)의 데이터 이동 처리가 끝난 후 파일을 재구성할 수 있다. 예컨대 500MB의 DB 파일에서 10MB 용량의 데이터구조를 삭제하는 경우, DB 파일은 삭제된 데이터구조에 상응하는 공간(예컨대 DB 파일을 텍스트로 열 경우, DB 파일이 포함하는 스페이스 공간)을 포함하고 있어서, 호스트(10)는 여전히 DB 파일의 용량을 500MB로 인식할 수 있다. 호스트(10)는 파일을 재구성함으로써 DB 파일의 용량을 490MB로 인식하고, 10MB의 가용 용량을 추가로 확보할 수 있다.
상술한 바와 같이, 저장장치(20)는 파일 삭제에 따라 상기 파일을 저장하는 셀들을 무효화하는 트림 기능 및 파일 내 데이터구조의 삭제에 따라 상기 데이터구조를 저장하는 셀들을 무효화하는 어드밴스드-트림 기능을 지원할 수 있다.
저장장치(20)가 호스트(10)로부터 파일 삭제에 관련된 명령어 및 파일 내 데이터구조의 삭제에 관련된 명령어를 수신하여 처리하여야 할 경우, 저장장치(20)는 호스트(10)로부터 설정된 우선순위 또는 기설정된 우선순위에 따라 상기 트림 기능 및 상기 어드밴스드 트림 기능을 수행할 수 있다.
예컨대 호스트(10)에서 어드밴스드-트림 기능을 우선적으로 수행하도록 설정하는 경우, 저장장치(20)는 어드밴스드-트림 기능을 먼저 수행하고 이후 트림 기능을 수행할 수 있다.
도 11은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작 방법을 나타내는 플로우차트이다. 도 1에 도시된 컴퓨터 시스템(10)에 의해 실행될 수 있다.
도 11을 참조하면, 호스트(10)는 DB 파일내 어느 하나의 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되는 경우(S110), 해당 데이터 구조가 삭제되었음을 표시하기 위해 플래그 정보를 DB 파일 내에 기록한다(S120)
그리고, 호스트(10)는 DB 파일 내의 플래그 정보를 이용하여 해당 데이터구조(예컨대 테이블, 로우 또는 필드)가 삭제되었음을 감지 또는 검출하고(S130), 삭제된 데이터구조를 지정한 어드밴스드-트림 커맨드(TRIM_A)를 생성하여(S140), 저장장치(20)로 전송한다(S150).
저장장치(20)(예컨대, SSD)는 호스트(10)로부터 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드(TRIM_A)를 수신하고 이를 해석하여 파일 내 삭제된 데이터구조를 검출한다(S160).
그리고, 저장장치(20)는 삭제된 데이터구조에 해당하는 데이터를 저장하고 있는 비휘발성 메모리(230)의 데이터 셀들, 즉 저장장치(20)에 저장되어 있는 데이터를 무효화(invalidate)한다(S170).
그런 다음, 저장장치(20)는 무효화된 셀들(예컨대, 무효화된 페이지) 또는 유효한 셀들(예컨대, 유효한 페이지) 끼리 데이터 블록별로 모으는 가비지 컬렉션(gabage collection)을 수행할 수 있고, 이를 통해 유효한 데이터를 포함하지 않는 데이터 블록, 즉, 무효화된 데이터 블록을 이레이즈할 수 있다(S180).
도 12는 본 발명의 일 실시예에 따른 저장장치의 동작 방법을 나타내는 플로우차트이다. 도 12는 특히, 본 발명의 일 실시예에 따른 저장장치의 오토 어드밴스드-트림 기능을 수행하는 과정을 나타낸다.
도 12를 참조하면, 저장장치(20)는 비휘발성 메모리(23)에 저장된 파일들 중 DB 파일을 검색한다(S210).
도시되지는 않았지만, S210 단계 이전에, 오토 어드밴스드-트림 기능을 인에이블하기 위해, 저장장치(20)의 파워온(power-on)시, 호스트(10)가 저장장치(20)에 오토 어드밴스드-트림 인에이블 설정을 할 수 있다.
저장장치(20)는 DB 파일 내 플래그 정보를 검색하고(S220), 플래그 정보에 따라 삭제된 데이터 구조에 해당하는 데이터를 무효화하기 위해 해당 데이터 셀들 지정한다(S230).
다음으로, 지정된 데이터 셀들, 즉 삭제된 데이터구조에 해당하는 비휘발성 메모리(230)의 실제 데이터를 무효화한다(S240).
그런 다음, 저장장치(20)는 무효화된 셀들(예컨대, 무효화된 페이지) 또는 유효한 셀들(예컨대, 유효한 페이지) 끼리 데이터 블록별로 모으는 가비지 컬렉션(gabage collection)을 수행할 수 있고, 이를 통해 유효한 데이터를 포함하지 않는 데이터 블록, 즉, 무효화된 데이터 블록을 이레이즈할 수 있다(S250).
도 13a는 호스트의 DB 파일 내에서 하나의 필드가 삭제되는 경우를 설명하기 위한 도면이다. 도 13b는 도 13a에 도시된 DB 파일 내에서 하나의 필드가 삭제되는 경우 본 발명의 일 실시예에 따른 저장 장치에서의 변화를 설명하기 위한 도면이다. 도 13c는 도 13a에 도시된 DB 파일 내에서 하나의 필드가 삭제되는 경우 기존의 저장 장치에서의 변화를 설명하기 위한 도면이다.
도 13a 내지 도 13b를 참조하면, 호스트의 DB 파일(310)은 다수의 필드들(Field1~Filed7)을 포함할 수 있다. 다수의 필드들 중 하나의 필드(Field2)가 삭제될 수 있다.
이 경우, 본 발명의 일 실시예에 따른 저장 장치(20)에서 어드밴스드 트림 동작이 수행된다.
필드(Field2)가 삭제되기 전, 즉 어드밴스드 트림 동작이 수행되기 전에 DB 파일(310)에 해당하는 데이터는 저장장치(23)의 데이터 셀들에 전부 유효하게 저장되어 있다(340).
반면, 필드(Field2)가 삭제된 후, 즉 어드밴스드 트림 동작이 수행된 후에는 DB 파일(310)에 해당하는 데이터 중 삭제된 필드(Field2)에 해당하는 데이터(351)는 무효화된다(350).
한편, 도 13a 및 도 13c를 참조하면, 호스트의 DB 파일(310) 내의 다수의 필드들(Field1~Filed7) 중 하나의 필드(Field2)가 삭제되더라도, 기존의 저장 장치(320)에서는 변화가 없다.본 발명의 일 실시예에 따르면, 파일 내부의 데이터구조의 삭제에 따라 저장장치가 트림에 상응하는 동작(예컨대 데이터구조를 저장하는 셀들을 무효화)을 수행함으로써, 저장장치의 가용 용량 및 데이터 기입 속도가 개선되는 효과가 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1: 컴퓨터 시스템
10: 호스트
20: 저장장치

Claims (10)

  1. 비휘발성 메모리 기반의 저장장치를 제어하는 컴퓨터 장치에 있어서,
    데이터베이스 파일 내의 데이터구조의 삭제 여부를 나타내기 위해 상기 데이터베이스 파일 내에 기록되는 식별자를 이용하여 상기 데이터 구조의 삭제 여부를 감지하는 파일 수정 감지부; 및
    삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드를 생성하여 상기 저장장치로 전송하는 커맨드 생성부를 포함하는 컴퓨터 장치.
  2. 제1항에 있어서,
    상기 데이터구조는
    테이블, 로우 또는 필드인 컴퓨터 장치.
  3. 제1항에 있어서, 상기 파일 수정 감지부 및 상기 커맨드 생성부는
    상기 컴퓨터 장치의 데이터베이스 엔진에 의해 실행되는 컴퓨터 장치.
  4. 제1항에 있어서, 상기 파일 수정 감지부 및 상기 커맨드 생성부는
    상기 컴퓨터 장치의 필터 드라이버에 의해 실행되며,
    상기 필터 드라이버는
    상기 컴퓨터 장치의 데이터베이스 엔진이 출력하는 파일 수정 커맨드에 따라 상기 어드밴스드-트림 커맨드를 생성하는 컴퓨터 장치.
  5. 제1항의 컴퓨터 장치; 및
    상기 저장장치를 포함하며,
    상기 데이터베이스 파일은
    SQL(Structured Query Language) 데이터베이스 파일이고,
    상기 저장장치는
    SSD(Solid State Drive)인 컴퓨터 시스템.
  6. 비휘발성 메모리 기반의 저장 장치에 있어서,
    데이터베이스 파일 내 데이터구조의 삭제 여부를 나타내기 위해 상기 데이터베이스 파일 내에 기록되는 식별자를 이용하여 상기 데이터 구조의 삭제 여부를 감지하며, 상기 데이터구조는 상기 데이터베이스 파일보다 작은 용량을 갖는 데이터구조 삭제 감지부; 및
    삭제된 데이터구조를 저장하는 셀들을 무효화(invalidate)하는 무효화 처리부를 포함하는 저장장치.
  7. 제6항에 있어서, 상기 무효화 처리부는
    호스트의 유휴(idle) 시간에 상기 셀들을 무효화하는 저장장치.
  8. 제6항에 있어서, 상기 저장장치는
    상기 무효화된 셀들 중 적어도 하나로 무효화되지 않은 셀의 데이터를 이동시키는 데이터 이동 처리부를 더 포함하는 저장장치.
  9. 제6항에 있어서, 상기 데이터구조 삭제 감지부는
    호스트로부터 삭제된 데이터구조에 상응하는 정보를 포함하는 어드밴스드-트림 커맨드를 수신하고, 상기 어드밴스드-트림 커맨드에 따라 상기 파일 내 데이터구조가 삭제되었는지 여부를 감지하며,
    상기 무효화 처리부는
    상기 삭제된 데이터구조에 상응하는 정보에 따라 상기 데이터구조를 저장하는 셀들을 무효화하는 저장장치.
  10. 제6항에 있어서, 상기 데이터구조 삭제 감지부는
    상기 저장장치 내의 적어도 하나의 데이터베이스 파일의 플래그 정보를 분석하여, 상기 적어도 하나의 데이터베이스 파일 내에서 데이터구조가 삭제되었는지 여부를 감지하며,
    상기 무효화 처리부는
    상기 플래그 정보에 따라 상기 데이터구조를 저장하는 셀들을 무효화하는 저장장치.
KR1020140107477A 2014-08-19 2014-08-19 컴퓨터 장치 및 저장 장치 KR102282006B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140107477A KR102282006B1 (ko) 2014-08-19 2014-08-19 컴퓨터 장치 및 저장 장치
US14/828,616 US10089348B2 (en) 2014-08-19 2015-08-18 Computer device and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140107477A KR102282006B1 (ko) 2014-08-19 2014-08-19 컴퓨터 장치 및 저장 장치

Publications (2)

Publication Number Publication Date
KR20160022007A true KR20160022007A (ko) 2016-02-29
KR102282006B1 KR102282006B1 (ko) 2021-07-28

Family

ID=55348475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140107477A KR102282006B1 (ko) 2014-08-19 2014-08-19 컴퓨터 장치 및 저장 장치

Country Status (2)

Country Link
US (1) US10089348B2 (ko)
KR (1) KR102282006B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102467032B1 (ko) * 2015-10-08 2022-11-14 삼성전자주식회사 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
KR20180016680A (ko) 2016-08-04 2018-02-19 삼성전자주식회사 저장 장치, 그것을 테스트 하는 테스트 시스템 및 방법
KR102588113B1 (ko) * 2016-11-07 2023-10-16 삼성전자주식회사 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120110249A1 (en) * 2010-10-29 2012-05-03 Hyojin Jeong Memory system, data storage device, user device and data management method thereof
KR20120045422A (ko) * 2010-10-29 2012-05-09 삼성전자주식회사 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
KR20120045421A (ko) * 2010-10-29 2012-05-09 삼성전자주식회사 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
US20120144097A1 (en) * 2010-12-07 2012-06-07 Kabushiki Kaisha Toshiba Memory system and data deleting method
US20130232290A1 (en) * 2012-03-01 2013-09-05 Mark Ish Reducing write amplification in a flash memory
US20140074782A1 (en) * 2012-09-12 2014-03-13 Microsoft Corporation Re-trim of free space within vhdx
US20150205717A1 (en) * 2014-01-22 2015-07-23 Synology Incorporated Method for adaptively managing a solid state drive, and associated apparatus and associated computer program product

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762620B2 (en) 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8412689B2 (en) 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US8924384B2 (en) 2010-08-04 2014-12-30 Sap Ag Upgrading column-based databases
US8661189B2 (en) 2010-08-31 2014-02-25 Apple Inc. Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory
WO2012050934A2 (en) 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
JP5405513B2 (ja) * 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US9251032B2 (en) 2011-11-03 2016-02-02 Fujitsu Limited Method, computer program, and information processing apparatus for analyzing performance of computer system
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
WO2014039923A1 (en) * 2012-09-06 2014-03-13 Pi-Coral, Inc. Storage translation layer
JP2016506585A (ja) * 2013-01-08 2016-03-03 ヴァイオリン メモリー インコーポレイテッド データストレージのための方法及びシステム
US10558561B2 (en) * 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9304685B2 (en) * 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Storage array system and non-transitory recording medium storing control program
JP5902137B2 (ja) * 2013-09-24 2016-04-13 株式会社東芝 ストレージシステム
TWI515735B (zh) * 2013-12-09 2016-01-01 群聯電子股份有限公司 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120110249A1 (en) * 2010-10-29 2012-05-03 Hyojin Jeong Memory system, data storage device, user device and data management method thereof
KR20120045422A (ko) * 2010-10-29 2012-05-09 삼성전자주식회사 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
KR20120045421A (ko) * 2010-10-29 2012-05-09 삼성전자주식회사 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
US20120144097A1 (en) * 2010-12-07 2012-06-07 Kabushiki Kaisha Toshiba Memory system and data deleting method
US20130232290A1 (en) * 2012-03-01 2013-09-05 Mark Ish Reducing write amplification in a flash memory
US20140074782A1 (en) * 2012-09-12 2014-03-13 Microsoft Corporation Re-trim of free space within vhdx
US20150205717A1 (en) * 2014-01-22 2015-07-23 Synology Incorporated Method for adaptively managing a solid state drive, and associated apparatus and associated computer program product

Also Published As

Publication number Publication date
KR102282006B1 (ko) 2021-07-28
US20160055198A1 (en) 2016-02-25
US10089348B2 (en) 2018-10-02

Similar Documents

Publication Publication Date Title
US11216185B2 (en) Memory system and method of controlling memory system
US9940040B2 (en) Systems, solid-state mass storage devices, and methods for host-assisted garbage collection
US9053007B2 (en) Memory system, controller, and method for controlling memory system
TWI597605B (zh) 用於資料儲存裝置的損耗平均方法
JP5413572B2 (ja) メモリストレージ装置及びその制御方法
US8612719B2 (en) Methods for optimizing data movement in solid state devices
US20120317337A1 (en) Managing data placement on flash-based storage by use
US8850105B2 (en) Method for controlling memory system, information processing apparatus, and storage medium
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US20170139825A1 (en) Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
US11157402B2 (en) Apparatus and method for managing valid data in memory system
JP2011128998A (ja) 半導体記憶装置
US20140095767A1 (en) Storage device trimming
CN110674056B (zh) 一种垃圾回收方法及装置
CN110362499B (zh) 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法
CN111880723B (zh) 数据储存装置与数据处理方法
KR20130075018A (ko) 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법
WO2016101145A1 (zh) 一种控制器、识别数据块稳定性的方法和存储系统
KR102282006B1 (ko) 컴퓨터 장치 및 저장 장치
CN116069681A (zh) 一种磁盘空间回收方法、装置、电子设备以及存储介质
CN118051179A (zh) 用于使用多个分区的分区命名空间存储的技术
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备
CN112035065B (zh) 一种数据写入方法、装置、设备及计算机可读存储介质
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
US20200319999A1 (en) Storage device, control method of storage device, and storage medium

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