KR20100071063A - 고체 상태 드라이브 최적화기 - Google Patents

고체 상태 드라이브 최적화기 Download PDF

Info

Publication number
KR20100071063A
KR20100071063A KR1020107007920A KR20107007920A KR20100071063A KR 20100071063 A KR20100071063 A KR 20100071063A KR 1020107007920 A KR1020107007920 A KR 1020107007920A KR 20107007920 A KR20107007920 A KR 20107007920A KR 20100071063 A KR20100071063 A KR 20100071063A
Authority
KR
South Korea
Prior art keywords
free space
ssd
fragment
threshold
fragment size
Prior art date
Application number
KR1020107007920A
Other languages
English (en)
Inventor
바실 토마스
크래이그 젠센
앤드류 스태퍼
산토쉬 라만쿠티
Original Assignee
디스키퍼 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디스키퍼 코포레이션 filed Critical 디스키퍼 코포레이션
Publication of KR20100071063A publication Critical patent/KR20100071063A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

고체 상태 드라이브를 최적화하기 위한 방법이 개시되었다. 이 방법은 SSD상의 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 지를 결정하는 것을 포함한다. SSD상의 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 경우엔, 자유 공간 프래그먼트를 제거한다. SSD상의 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작지 않은 경우엔, 데이터 저장을 위해 자유 공간 프래그먼트를 유지한다. 문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트의 제거는 SSD상에 기입되는 경우 사용되고 있는 자유 공간 프래그먼트의 갯수가 더욱 적은 갯수가 되도록 하며, 이는 SSD 성능이 개선될 수 있게 한다.

Description

고체 상태 드라이브 최적화기{SOLID STATE DRIVE OPTIMIZER}
본원은 2007년 10월 5일 출원된 미국 가특허출원 제60/978,086호와 2008년 10월 3일 출원된 미국 가특허출원 제12/244,771호를 우선권 주장의 기초출원으로 한다.
본원은 2006년 10월 10일 출원된 미국 특허출원 제11/546,072호와, 2006년 10월 10일 출원된 미국 특허출원 제11/546,514호와, 2006년 6월 19일 출원된 미국 특허출원 제11/471,466호를 참조 문헌으로서 본원의 내용에 통합되는 것으로 한다.
본 발명은 일반적으로 고체 상태 드라이브에 관한 것이다. 더욱 상세히는, 본 발명은 고체 상태 드라이브를 최적화하는 것에 관한 것이다.
본 단락에서 설명된 접근법은 추구될 수 있는 접근법이긴 하지만 반드시 이전에 생각했거나 추구된 접근법일 필요는 없다. 그러므로, 달리 지시되지 않는 한, 본 단락에서 설명된 임의 접근법도 본 단락에 단순히 포함되는 것으로써 종래 기술로서의 자격을 갖춘 것으로 추정되지 않아야 한다.
고체 상태 디스크로도 지칭될 수 있는, 고체 상태 드라이브(SSD;solid state drive)는 휘발성 또는 비휘발성 고체 상태 메모리를 사용하여 데이터를 저장하는 저장 디바이스이다. 고체 상태 메모리는 반도체를 기반으로 하는 전자 컴포넌트로 구성된다. 고체 상태 드라이브는 정적 임의접근 메모리(SRAM), 동적 임의접근 메모리(DRAM), 파라미터 임의접근 메모리(PRAM), 플래시 메모리(예로서, NOR 플래시 메모리 및 NAND 플래시 메모리) 또는 위상 변화 메모리(PCM; Phase Change Memory)를 포함하지만 이들로 한정되지 않는 여러 유형의 메모리를 포함할 수 있다.
SSD는 임의의 이동 부품을 갖고 있지 않으므로, SSD는 기계적 고장 위험을 상당히 감소시킨다. 보다 적은 기계적 고장은 시스템 신뢰성의 개선을 초래한다. 또한, 이동 부품의 부족으로 인해, SSD는 표준 회전 매체 하드 드라이브에 비해 적은 판독 탐색시간(seek time) 및 기입 탐색시간을 제공한다. 따라서, SSD는 보다 높은 순차적 및 무작위적 판독률 및 기입률이 될 수 있도록 한다.
SSD에 어떠한 이동 부품도 없지만, 그럼에도 불구하고 디바이스 제약사항 및 어쩌면 자유 공간 프래그먼트의 결과로서 성능 문제가 생긴다. 예를 들어, 성능에 기초한 제약사항은 SSD가 임의의 소정 기간에 수행할 수 있는 제한된 횟수의 기입 동작일 수도 있다. SSD가 다수의 자유 공간 프래그먼트에 기입하고 있는 경우, 파일은 SSD에 저장되기 위해선 여러 상이한 조각(piece)들로 단편화되어야 만한다. 각각의 자유 공간 프래그먼트로의 기입은 일정한 소거 동작을 필요로 하고 일정한 기입 동작을 필요로 하며 SSD가 수행할 수 있는 기입 동작의 횟수가 제한될 수 있으므로, 다수의 소형 자유 공간 프래그먼트는 제한된 횟수의 기입 동작으로 인해 SSD의 순차적인 기입속도 최대치를 이용하지 못하는 결과를 초래할 수 있다.
일반적인 컴퓨터 사용에선, 윈도우™(윈도우™는 워싱톤주 시애틀에 있는 마이크로소프트사의 상표명임)와 같은 현대의 운영체제는 다수의 자유 공간 프래그먼트를 생성한다. 예를 들어, 인터텟을 브라우징하는 것은 잠재적으로 다수의 불필요한 자유 공간 프래그먼트를 생성할 수 있다. 웹브라우저는 사용됨에 따라 다수의 임시(temporary) 파일을 생성한다. 대부분의 임시 파일은 작으며 짧은 수명을 갖고 빈번하게 예를 들어 브라우저 캐쉬 정리하는 동안 등과 같은 경우에 삭제된다. 그러나, 모든 임시 파일이 동시에 삭제되거나 또는 생성되었던 순서로 삭제되는 것은 아니다. 이 현상은 자유 공간 프래그먼트들의 생성을 촉진시킨다.
또한, 새로 생성된 파일이 디스크에 저장되고 있는 경우, 파일 시스템은 일반적으로 새로 생성된 파일을 (a) 최근에 비워진(the most recently freed) 자유 공간 프래그먼트에 기입하거나 (b) 자유 공간 프래그먼트의 크기를 고려하지 않고 맨먼저 식별된 자유 공간 프래그먼트에 기입하기 시작한다. 기입되어야 할 파일이 크고 식별된 자유 공간 프래그먼트들이 작으면, 이 파일은 식별된 자유 공간 프래그먼트들에 대응하는 프래그먼트로 분할되고 이 파일을 디스크에 저장하기 위해 다수의 기입 동작들이 필요로 된다. 실제 파일을 저장하기 위해 필요로 하는 기입 동작들 외에, 파일이 다수의 프래그먼트에 저장되어 있는 경우, 파일 시스템 구조를 갱신하기 위해 다수의 기입 동작들이 또한 필요할 수도 있다.
고체 상태 드라이브(SSD)를 최적화하기 위한 방법이 제공된다. 파일을 SSD에 기입하는 것은 기입되어 지고 있는 자유 공간 프래그먼트가 전체 파일에 대해 너무 작으면 다수의 소거 및 기입 동작을 필요로 할 수 있다. 예를 들어, 파일이 기입되고 있는 SSD상의 각각의 자유 공간 프래그먼트가 파일의 크기 보다 지나치게 작다면, 그 파일은 다수의 프래그먼트들로 분할될 수도 있고 전체 파일이 SSD에 기입될 때 까지 각각의 자유 공간 프래그먼트에 대해 기입 동작일 필요로 될 수 있다. 따라서, 본 발명은 작은 자유 공간 프래그먼트를 데이터로 채우는 것에 의해 작은 자유 공간 프래그먼트를 제거하거나 작은 자유 공간 프래그먼트가 기입 성능에 영향을 미치지 않도록 더욱 크게 함으로써 SSD를 최적화한다. 이러한 구성은 운영체제로 하여금 파일을 순차적으로 기입하게 하거나 최고의 기입 성능을 나타내도록 v파일을 적어도 더 작은 자유 공간 프래그먼트에 기입되게 한다.
한 실시예에 따라, 문턱값 프래그먼트 크기(threshold fragment size)가 데이터 저장을 위해 SSD상에서 자유 공간 프래그먼트를 제거하거나 또는 유지하여야 할 지를 결정하기 위한 기준으로서 사용된다. 자유 공간 프래그먼트의 크기는 문턱값 프래그먼트 크기와 비교된다. 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 경우, 그 자유 공간 프래그먼트는, SSD가 파일의 프래그먼트를 기입하기 위해 자유 공간 프래그먼트를 사용하지 않도록 제거된다. 자유 공간 프래그먼트가 적어도 문턱값 프래그먼트 크기만한 크기인 경우엔, 그 자유 공간 프래그먼트는 SSD에 의한 데이터 저장을 위해 유지된다. 문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트를 제거하는 것은 파일이 더 큰 자유 공간 프래그먼트에 기입되는 결과로 되며 따라서 파일을 기입하기 위해 더 적은 수의 자유 공간 프래그먼트가 필요하고 더 적은 수의 기입 동작이 필요로 된다. 시간 주기 당 기입 동작의 횟수를 SSD에 의해 실제로 수행될 수 있는 기입 동작의 횟수와 같거나 이보다 적도록 감소시킴으로써, SSD의 성능이 개선된다. 개선된 SSD의 성능은 수행될 수 있는 기입 동작의 횟수에 의해 제한되지 않는데 이는, 최적화된 SSD를 위해 필요로 하는 기입 동작의 횟수가 수행될 수 있는 기입 동작의 횟수 보다 적기 때문이다. 한 실시예에서, 문턱값 프래그먼트 크기는 적어도 SSD의 순차적 기입 속도와 SSD상에서 시간 주기당 허용된 입력/출력(I/O) 동작의 횟수에 기초하여 결정된다. 예를 들어, 문턱값 프래그먼트 크기는 SSD의 순차적 기입 속도를 SSD의 초 당 I/O 동작으로 나눔으로써 적어도 부분적으로 결정될 수 있다.
한 실시예에서, 파일을 기입하는 경우에 여러 상이한 문턱값 프래그먼트 크기가 테스트될 수 있고 최적 성능에 대응하는 문턱값 프래그먼트 크기가 사용될 수 있다. 문턱값 프래그먼트 크기의 최적화는 주기적으로, 또는 예를 들어 SSD에 의한 저성능 레벨의 발생과 같은 소정 조건을 기초로 하여 또는 소정 갯수의 자유 공간 프래그먼트에 기초하여 수행될 수 있다.
특정한 컴포넌트가 본 방법 단계들을 수행하는 것으로서 기재되었지만, 다른 실시예에선 특정한 컴포넌트에 대신하는 역할을 하는 에이전트 또는 매커니즘이 방법 단계들을 수행할 수 있다. 또한, 본 발명이 단일 시스템에서의 컴포넌트들과 관련하여 설명되었지만, 본 발명은 다수 시스템에 걸쳐 있는 컴포넌트들로 구현될 수 있다. 또한, 본 발명이 고체 상태 드라이브(SSD)와 관련하여 설명되었지만, 본 발명의 실시예들은 임의의 메모리 드라이브(예로서, 회전하는 디스크 드라이브)에도 적용될 수 있다.
본 발명의 실시예들은 본원에서 설명된 방법 단계들을 수행하는 수단을 포함하는 임의의 시스템도 또한 포함한다. 본 발명의 실시예들은 또한, 실행되었을 때 본원에서 설명된 방법 단계들이 수행되어지도록 하는, 명령어를 갖는 컴퓨터로 판독 가능한 매체를 포함한다.
작은 자유 공간 프래그먼트를 데이터로 채우는 것에 의해 작은 자유 공간 프래그먼트를 제거하거나 작은 자유 공간 프래그먼트가 기입 성능에 영향을 미치지 않도록 더욱 크게 함으로써 SSD를 최적화한다.
본 발명은 첨부 도면에서 제한적인 의미가 아닌 예시적인 의미로 나타내었고 동일한 도면 부호는 마찬가지의 구성요소를 가리킨다.
도 1은 본 발명의 실시예에 따른 고체 상태 드라이브 및 고체 상태 드라이브 최적화기를 예시하는 블록도이다.
도 2는 고체 상태 드라이브를 최적화하기 위한 한 실시예를 예시하는 흐름도이다.
도 3은 본 발명의 실시예를 구현하는 데에 사용될 수 있는 컴퓨터 시스템을 예시하는 블록도이다.
하기의 설명에서, 설명을 위한 목적으로, 다양한 특정 상세사항이 본 발명에 대한 완전한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이 특정한 상세사항들 없이 실시될 수도 있음이 명백할 것이다. 그 밖의 경우엔, 공지된 구조 및 디바이스들이 본 발명을 불필요하게 애매하게 하지 않도록 하기 위해 블록 다이어그램 형태로 나타내어 졌다.
각각의 특징들이 서로에 대해 독립적으로 또는 다른 특징들과 조합하여 사용될 수 있는 여러 특징들이 하기에 설명된다. 그러나, 임의의 개별 특징들은 상기 토의한 임의의 문제점들에 대해 해결책을 제시하지 못할 수 있거나 단지 상기 논의한 문제점 중 하나에 대해서만 해결책을 제시할 수도 있다. 상기 논의한 문제점 중 일부는 본원에 설명된 임의의 특징에 의해 완전하게 해결되지 못할 수도 있다. 각 단락의 제목이 기재되었지만, 특정한 제목과 관련되지만, 그 제목을 갖는 단락에서 발견되지 않는 정보도 또한 본 명세서의 어딘가에서 발견될 수 있다.
자유 공간 프래그먼트 제거
파일 시스템 레벨에서 지칭되는 자유 공간 프래그먼트는 데이터를 포함하고 있는 것으로 언급되지 않으며 할당을 위해 이용 가능한 메모리 또는 저장장치의 블록이다. 자유 공간 프래그먼트는 메모리에 저장된 객체가 예를 들어 메모리 공간에 대한 참조사항(reference)을 제거함으로써 삭제되는 경우 발생될 수 있다. 객체들은 생성된 순서와 동일한 순서로 삭제되지 않을 수 있으므로, 삭제된 객체에 대응하는 자유 공간 프래그먼트는 데이터가 저장되어 있거나 참조되어 있는 메모리의 블록들간에 생성된다. 각각의 자유 공간 프래그먼트에 기입하는 것은 소거 동작을 필요로 하고 기입 동작을 필요로 한다. 따라서, 자유 공간 프래그먼트가 파일을 유지하기에 지나치게 작으면, 파일은 단편화되어야 하고 다수의 상이한 자유 공간 프래그먼트에 기입된다. 자유 공간 프래그먼트가 작을수록, 파일을 기입하는 데에 필요로 하는 단편화는 더 많아진다. 드라이브가 시간 주기당 수행할 수 있는 기입 동작의 횟수가 제한되므로, 다수의 자유 공간 프래그먼트는 더 높은 레벨의 파일 단편화를 필요로 할 수 있고 드라이브의 최대 순차 기입 속도의 이용을 방해할 수 있다. 따라서, 본 발명의 한 실시예에서, 지정된 문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트들은 제거된다. 이 자유 공간 프래그먼트들의 제거는 파일 시스템에 의해 기입되는 자유 공간 프래그먼트들의 수를 감소시킨다.
자유 공간 프래그먼트를 제거하는 것은 자유 공간 프래그먼트를 적어도 다른 파일의 일부분으로 채우는 것을 수반한다. 예를 들어, 디스크의 끝에 거의 다다른 파일, 드물게 사용된 파일 또는 임시 필터 파일 등이 자유 공간 프래그먼트를 채우기 위해 사용될 수도 있다. 적어도 다른 파일의 일부분을 저장함으로써 자유 공간 프래그먼트를 채우는 것은 잠재적으로 SSD 성능에 영향을 미칠 수 있는 자유 공간 프래그먼트를 제거한다. 하나의 자유 공간 프래그먼트를 제거하는 것은 이 자유 공간 프래그먼트와 하나 이상의 인접한 자유 공간 프래그먼트를 병합하여 병합된 자유 공간 프래그먼트가 적어도 문턱값 프래그먼트 크기 만큼 크게 되는 것을 수반할 수 있다. 한 실시예에서, 자유 공간 프래그먼트는 자유 공간 프래그먼트를 제거하기 위해 필요로 하는 자원이 유휴 기준에 따르게 된 이후에 제거된다. 예를 들어, 자원의 이용이 소정 백분율 이하로 되면, 유휴 기준이 충족된 것일 수 있다. 다른 예에선, 유휴 기준은 자원 사용 빈도를 포함할 수 있는 데 여기서 소정의 저 빈도 사용이 유휴 기준을 충족하는 것일 수 있다. 스케쥴링에 기초한 자원 및 유휴 기준에 대한 더 자세한 설명은 본원에 그 내용이 참고내용으로 통합된 2006년 10월 10일 출원된 미국 특허 출원 제11/546,514호에 설명되어 있다.
시스템 구조
특정한 컴퓨터 구조가 본원에 설명되었지만, 본 발명의 다른 실시예들도, 문턱값 프래그먼트 크기에 기초하여, 고체 상태 드라이브(SSD)를 최적화하기 위해 사용될 수 있는 임의의 구조에 적용될 수 있다.
도 1은 본 발명의 하나 이상의 실시예에 따른 SSD(100) 및 SSD 최적화기(125)를 도시한다. 도 1에 도시된 바와 같이, SSD(100)는 인터페이스(105) 메모리 제어기(110) 및 고체 상태 메모리(115)를 포함한다.
인터페이스
인터페이스(105)는 일반적으로 SSD(100)와 데이터를 교환(예로서, 데이터를 저장 또는 데이터를 검색)하는 데에 사용될 수 있는 임의의 연결을 대표한다. 예를 들어, 인터페이스(105)는 데이터 전송을 위해 마더보드와 SSD(100)간의 연결일 수 있다. 인터페이스(105)는 데이터 워드를 병렬로 또는 비트 직렬 형태로 운반할 수 있다. 인터페이스(105)의 예는 ATA(Advanced Technology Attachment)[예로서, SATA(Serial Advanced Technology Attachment) 및 PATA(Parallel Advanced Technology Attachment] 또는 IDE(Intelligent Drive Electronics) 또는 SCSI(Small Computer System Interface)를 포함하지만 이들로 제한되진 않는다. 인터페이스(105)는 외부 컴포넌트가 고체 상태 메모리(115)를 직접 액세스할 수 있도록 하거나 고체 상태 메모리(115)를 메모리 제어기(110)를 통해 간접적으로 액세스할 수 있도록 한다.
메모리 제어기
하나 이상의 실시예에서, 메모리 제어기(110)는 일반적으로 고체 상태 메모리(115)로 가거나 이로부터 오는 데이터의 흐름을 관리하기 위한 로직을 포함하는 컴포넌트를 대표한다. 메모리 제어기(110)는 SSD(100) 자체에 상주하는 것으로 도시되어 있지만, 메모리 제어기(110)는 실시예에 따라 다른 컴포넌트에 상주할 수 있다. 메모리 제어기(110)는 메모리 제어기(110)를 고체 상태 메모리(115)에 연결시키기 위한 복잡도 및/또는 와이어의 수를 감소시키기 위해 소정의 프로토콜(ATA) 또는 멀티플렉서와 디멀티플렉서의 셋트를 통해 고체 상태 메모리(115)에 연결될 수 있다.
한 실시예에서, 메모리 제어기(110)는 데이터가 고체 상태 메모리(115)상에서 저장되는 장소에 대해 제어할 수 있다. 에를 들어, 메모리 제어기(110)는 고체 상태 메모리(115)의 어느 부분이 데이터 저장을 위해 이용 가능한지, 및 고체 상태 메모리(115)의 어느 부분이 데이터 저장을 위해 이용 가능하지 않은 지에 대해 결정하는 로직을 포함할 수 있다.
메모리 제어기(110)는 SSD에 연결된 디바이스상에서 실행하는 파일 시스템을 통해 하나 이상의 애플리케이션으로부터 데이터의 블록을 기입, 검색 또는 삭제하는 명령을 수신할 수 있다. 메모리 제어기(110)는 또한 SSD에 연결된 것으로 도시된, 운영 체제 또는 파일 시스템을 통해 고체 상태 드라이브 최적화기(125)로부터 명령을 수신할 수도 있다.
고체 상태 메모리
하나 이상의 실시예에서, 고체 상태 메모리(115)는 일반적으로 디지털 데이터를 유지하기 위한 로직을 포함하는 데이터 저장 컴포넌트를 대표한다. 고체 상태 메모리(115)는 디지털 데이터를 유지하기 위한 로직 및 하드웨어를 포함하는 반도체 디바이스를 포함한다. 예를 들어, 고체 상태 메모리(115)는 동위상으로 변화하는 RAM, 단일 레벨 셀(SLC;single level cells) 또는 다중레벨 셀(MLC;multi-level cells)에 비트를 저장할 수 있다. 상기 설명한, 문턱값 프래그먼트 크기(120)는 비트가 고체 상태 메모리(115)내의 SLC 또는 MLC에 저장되고 있는 지의 여부를 기초로 하여 상이하게 계산될 수 있다. 더욱이, 문턱값 프래그먼트 크기(120)는 다중레벨 셀내의 레벨의 수를 기초로 하여 상이하게 계산될 수도 있다. 고체 상태 드라이브는 정적 임의접근 메모리(SRAM), 동적 임의접근 메모리(DRAM), 파라미터 임의접근 메모리(PRAM), 플래시 메모리(예로서, NOR 플래시 메모리 및 NAND 플래시 메모리), 위상 변화 메모리(PCM; Phase Change Memory) 또는 다른 유형의 적합한 메모리로서 구현될 수 있다.
고체 상태 드라이브 최적화기
하나 이상의 실시예에서, 고체 상태 드라이브 최적화기(125)는 일반적으로 SSD 성능을 개선하기 위해 SSD(100)를 최적화하는 데에 사용되는 소프트웨어 및/또는 하드웨어를 대표한다. 예를 들어, SSD 최적화기(125)는 SSD(100)에 연결된 디바이스상에서 실행되는 소프트웨어 애플리케이션에 대응할 수 있다. 컴퓨터 시스템에서, 고체 상태 드라이브 최적화기(125)는 SSD(100)상에 데이터를 저장하는 다른 애플리케이션과 동시에 구동되는 애플리케이션일 수 있다. 다른 예에서, SSD 최적화기(125)는 SSD(100)를 최적화하기 위해 임베디드 로직을 갖춘 디바이스에 대응할 수 있다. 도 1에서 SSD(100)에 연결된 것으로 도시되었지만, SSD 최적화기(125)는 또한, 본 발명의 실시예에 따라, SSD(100)상의 소프트웨어 및/또는 컴포넌트에 대응할 수도 있다.
SSD 최적화기(125)는 문턱값 프래그먼트 크기(120) 보다 작은 자유 공간 프래그먼트들을 제거하여 운영체제가, 상기한 바와 같이, 순차적으로 데이터 또는 파일을 강제로 기입하게 함으로써 SSD(100)를 최적화하는 로직을 포함한다. SSD 최적화기(125)는 사용자에 의해 기동될 수 있거나, 주기적으로 기동될 수 있거나 소정 조건(예로서, SSD(100)의 소정 단편화 레벨 또는 SSD(100)의 저성능 레벨)에 기초하여 기동될 수 있다. SSD 최적화기(125)는 또한 낮은 자원 사용에 의해서도 기동될 수 있다. 예를 들어, SSD(100)를 최적화하는 데 있어서 SSD 최적화기(125)에 의해 사용된 자원(예로서, 프로세서)이 현재 낮은 이용 레벨을 갖는다면, SSD 최적화기(125)가 기동될 수 있다. 한 실시예에서, 다수의 조건들이 SSD 최적화기(125) 기동을 위한 조합(예로서, SSD(100)의 낮은 성능 레벨 및 자원의 낮은 현재 이용 레벨)에서 필요할 수 있다.
한 실시예에서, SSD 최적화기(125)는 컴퓨터 마이크로작업으로서 수행된 임의의 태스크를 스케쥴링하는 로직을 포함할 수 있다. 컴퓨터 마이크로작업은 본원에 그 내용이 참조내용으로서 포함된, 2009년 6월 19일 출원된 미국특허 출원 제11/471,466호 및 2010년 10월 10일 출원된 미국특허 출원 제11/546,072호에 설명되어 있다. 따라서, SSD(100)를 최적화하기 위해 SSD 최적화기(125)에 의해 수행된 태스크는 상이한 마이크로작업으로서 일정 시간에 걸쳐서 수행될 수 있다.
문턱값 프래그먼트 크기
하나 이상의 실시예에서, SSD 최적화기(125)에 저장된 것으로 도시된 문턱값 프래그먼트 크기(120)는 상기 설명한 태스크를 수행하는 데 있어서 SSD 최적화기(125)에 의해 사용된 특정한 자유 공간 프래그먼트 크기에 해당한다. 상세하게는, 문턱값 프래그먼트 크기(120) 보다 작은 자유 공간 프래그먼트는 SSD 최적화기(125)에 의해 제거되고 문턱값 프래그먼트 크기(120) 보다 크거나 같은 자유 공간 프래그먼트는 SSD 최적화기(125)에 의한 데이터 저장을 위해 유지된다. 문턱값 프래그먼트 크기(120) 보다 작은 자유 공간 프래그먼트를 제거하는 데 있어서 문턱값 프래그먼트 크기(120)의 이용은 파일 시스템이 파일을 순차적으로 단일한 자유 공간 프래그먼트에 기입하도록 강제하거나 SSD의 메모리 기입 IOPS(초당 IO)의 한계범위내에서 다수의 자유 공간 프래그먼트에 기입하도록 강제할 수 있는 데, 상기한 바와 같은 다수의 자유 공간 프래그먼트에 기입하는 것은 SSD의 메모리 기입 IOPS에 기초한 SSD 성능에 영향을 미치지 않는다.
SSD 최적화기(125)에 저장된 것으로 도시되었을 지라도, 문턱값 프래그먼트 크기(120)는 임의의 컴포넌트(예를 들어, SSD 최적화기(125), SSD(100), 또는 기타 적합한 디바이스)에 의해 유지될 수도 있다. 문턱값 프래그먼트 크기는 변수로서 소프트웨어 애플리케이션(예를 들어, SSD 최적화기)에 의해 유지될 수 있거나 일정한 디바이스에 하드와이어 연결(hardwired)될 수 있다. 예를 들어, 문턱값 프래그먼트 크기는 SSD(100)에, SSD 최적화기가 일정한 디바이스로서 구현되어 있으면 SSD 최적화기에, SSD 최적화기가 시스템상에서 실행하는 소프트웨어 애플리케이션으로서 구현되어 있으면 SSD 최적화기(125)를 실행하는 시스템에, 또는 임의의 적합한 디바이스에 하드와이어 연결될 수 있다. 문턱값 프래그먼트 크기(120)는 또한 사용자(120)에 의해 제어될 수 있는 구성 영역으로부터도 획득될 수도 있다.
한 실시예에서, 문턱값 프래그먼트 크기(120)는 SSD 최적화기(125), 메모리 제어기(110), 사용자 또는 또다른 적합한 엔티티에 의해 산정될 수 있다. 한 실시예에서, 문턱값 프래그먼트 크기(120)는 SSD(100)가 시간 주기 마다 수행할 수 있는 기입 동작의 횟수 또는 순차적인 기입 속도에 기초하여 산정될 수 있다. 문턱값 프래그먼트 크기를 산정하는 단계중의 하나는 순차적인 기입 속도를 SSD(100)가 소정 시간 주기에 수행할 수 있는 기입 동작의 횟수로 나누는 것을 수반할 수 있다. 예를 들어, 순차적인 기입 속도가 40MB/초이고 SSD(100)에 의해 수행할 수 있는 기입 동작의 횟수가 10/초이면, 문턱값 프래그먼트 크기는 40MB를 10으로 나눈 4MB와 동일한 것으로 산정된다. 따라서, 문턱값 프래그먼트 크기는 4MB로 설정될 수 있다. 더욱이, 문턱값 프래그먼트 크기를 산정하는 것은 실제 성능 대 이론적인 성능 또는 속도간의 차이를 설명하는 추가적인 계산(예를 들어, 12MB 또는 16MB인 결과를 초래하는 상수 3 또는 4를 곱하는 연산)을 수반할 수도 있다.
SSD에 대한 문턱값 프래그먼트 크기(120)는 동적으로 결정될 수 있거나 SSD 최적화기(125)에 의해 사용된 정적인 값일 수 있다. 예를 들어, 하드와이어 연결된 문턱값 프래그먼트 크기(120)는 SSD(100)를 최적화하기 위해 영구적으로 사용될 수 있다. 대안으로서, SSD(100)가 최적화될 때 마다 또는 주기적으로, 문턱값 프래그먼트 크기(120)는 재산정되거나 획득될 수 있다.
한 실시예에서, 상이한 문턱값 프래그먼트 크기는 최적 성능을 결정하기 위해 사용될 수 있다. 예를 들어, 변화하는 문턱값 프래그먼트 크기의 값은 SSD(100)상에서 자유 공간 프래그먼트들을 제거함으로써 SSD(100)를 최적화하기 위해 사용될 수 있다. 그후 성능은 SSD(100) 최적화에 뒤이어 일정 시간 주기 동안 측정될 수 있다. 최적화에 뒤이어 최고 성능인 결과를 초래하는 문턱값 프래그먼트 크기는 문턱값 프래그먼트 크기(120)로서 설정될 수 있다.
한 실시예에서, 문턱값 프래그먼트 크기(120)가 설정되면, 문턱값 프래그먼트 크기(120)에 대해 재테스트가 주기적으로 수행될 수 있다. 재테스트 동안, 문턱값 프래그먼트 크기(120) 보다 높은 값 및 낮은 값들이 SSD(100)의 최적화를 위해 임시로 사용될 수 있다. 문턱값 프래그먼트 크기(120) 보다 높은 값 및/또는 낮은 값을 갖는 문턱값 프래그먼트 크기를 사용한 후, SSD(100)의 후속하는 성능은 문턱값 프래그먼트 크기(120)를 증가시키거나, 감소시키거나 수정없이 유지되어야 하는 지를 결정하기 위해 평가될 수 있다.
고체 상태 드라이브 최적화
도 2는 하나 이상의 실시예에 따라, 문턱값 프래그먼트 크기를 사용하여 고체 상태 드라이브(SSD)를 최적화하기 위한 흐름도를 도시한다. 하기에 설명되는 하나 이상의 단계들은 생략되거나, 반복되거나 및/또는 상이한 순서로 수행될 수 있다. 따라서, 도 2에 나타낸 단계들의 특정한 배열은 본 발명의 범위를 제한하는 것으로 이해되지 않아야 한다.
한 실시예에서, 고체 상태 드라이브를 최적화하기 위해 설명된 하나 이상의 단계들은 자원 이용가능성 검사에 뒤이어 행해질 수 있다. 자원 이용가능성 검사는 단계를 수행하는 데에 필요로 하는 자원들이 상기 설명한 바와 같은, 유휴성 기준을 충족시키도록 이용가능하다는 것을 보장하기 위해 행해질 수 있다. 더욱이, 하기에 설명된 하나 이상의 단계들은 상기 설명한 바와 같은, 컴퓨터 마이크로작업들인 것으로서 스케쥴링될 수 있다.
초기에, SSD를 최적화할 것인 지에 대한 결정이 행해진다(단계 202). SSD를 최적화할 것에 대한 결정은 하나 이상의 조건에 기초하여 행해질 수 있다. 예를 들어, SSD를 최적화한다는 결정은 낮은 SSD 성능의 발생, 소정의 단편화 레벨(예로서, 자유 공간 프래그먼트의 수, 문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트의 갯수, 등) 발생, 자원 이용가능성, 시간에 기초한 스케쥴러(예로서, 주기적 최적화), 파일 단편화 레벨에 기초하여, 또는 임의의 기타 적합한 기준에 기초할 수 있다. SSD 최적화기는 또한 파일들이 지나치게 단편화된 경우엔 파일들을 단편화 해제(defragment)할 수 있고, 이러한 파일의 단편화 해제는 파일 액세스를 더욱 효율적이고 신뢰성 있는 것이 되도록 한다.
다음에 SSD는 제거를 위한 후보로서 자유 공간 프래그먼트를 식 별하기 위해 탐색된다(단계 204). 자유 공간 프래그먼트를 탐색하는 것은 파일 시스템 또는 운영체제 API를 탐색하는 것, 또는 파일 시스템에 의해 참조되지 않은 저장 주소 또는 할당을 위해 이용가능한 저장 블록 위치로서 인덱싱된 저장 주소를 탐색하는 것을 수반할 수 있다. 파일 시스템은 순차적인 순서로, 저장장소 할당해제(de-allocation)의 순서로 또는 임의의 기타 적합한 순서로 탐색될 수 있다. 한 실시예에서, 자유 공간 프래그먼트는 가장 작은 자유 공간 프래그먼트가 맨 먼저 제거되도록 하기 위해 가장 작은 것에서부터 가장 큰 순서로 자유 공간 프래그먼트를 제거하기 위한 후보로서 식별될 수 있다.
다음에, 삭제를 위한 후보로서 식별된 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 지에 대한 결정이 행해진다(단계 206). 식별된 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작지 않은 경우엔, 식별된 자유 공간 프래그먼트는 파일을 기입하기에 적합한 것이고 따라서, 찾은 자유 공간 프래그먼트는 기입을 위해 유지된다. 그러나, 식별된 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 경우엔, 식별된 자유 공간 프래그먼트는 파일을 기입하기에 적합하지 않은 것이고 따라서, 상기 설명한 바와 같이, 제거된다(단계 208). 식별된 자유 공간 프래그먼트는 적어도 문턱값 프래그먼트 크기 만큼 큰 병합된 자유 공간 프래그먼트를 생성하기 위해 이 자유 공간 프래그먼트와 하나 이상의 인접한 자유 공간 프래그먼트를 병합함으로써 제거될 수 있다.
다음에, SSD의 최적화를 계속할 것인 지에 대한 결정이 행해진다(단계 210). 문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트를 위해 SSD 전부가 탐색될 때까지 최적화를 계속하라는 결정이 행해질 수 있다. 또 다른 예에서, SSD는 자원이 매우 이용가능성이 높은 것인 상태(예를 들어, 오프 피크 시간인 동안)에 있는 한 최적화될 수 있다. SSD는 또한 시간 블록이 SSD를 최적화하는 데에 전용되는 경우 타이머에 기초하여 최적화될 수 있다.
문턱값 프래그먼트 크기 보다 작은 자유 공간 프래그먼트들 각각을 제거하기 위해 상기 단계들이 순차적으로 설명되었을 지라도, 본 발명의 실시예들은 상기한 태스크들을 임의의 적절한 방식으로 수행하는 것을 포함한다. 예를 들어, 모든 자유 공간 프래그먼트들은 제거를 위한 후보로서 맨 먼저 식별될 수 있다. 그 이후, 식별된 자유 공간 프래그먼트들 각각은 문턱값 프래그먼트 크기와 비교되고 그 결과 문턱값 프래그먼트 크기 보다 작은 경우엔 제거된다.
하드웨어 개괄
도 3은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(300)을 예시하는 블록도이다. 컴퓨터 시스템(300)은 정보를 통신하기 위한 버스(302) 또는 기타 통신 매커니즘, 및 정보를 처리하기 위해 버스(302)에 연결된 프로세서(304)를 포함한다. 컴퓨터 시스템(300)은 또한 프로세서(304)에 의해 실행되어야 할 명령어 및 정보를 저장하기 위해, 버스(302)에 연결된, 임의 접근 메모리(RAM) 또는 기타 동적 저장 디바이스와 같은 주 메모리(306)를 포함한다. 주 메모리(306)는 또한 프로세서(304)에 의해 실행되어야 할 명령어의 실행 동안 임시 변수 또는 중간 정보를 저장하기 위해 사용될 수 있다. 컴퓨터 시스템(300)은 또한 프로세서(304)를 위한 명령어 및 정적 정보를 저장하기 위해 버스(302)에 연결된, 판독 전용 메모리(ROM) 또는 기타 정적 저장 디바이스를 포함한다. 자기 디스크 또는 광학식 디스크와 같은 저장 디바이스(310)가 제공되고 정보 및 명령어를 저장하기 위해 버스(302)에 연결된다.
컴퓨터 시스템(300)은 컴퓨터 사용자에게 정보를 디스플레이하기 위해, 캐쏘드 레이 튜브(CRT)와 같은 디스플레이(302)에 버스(302)를 통해 연결된다. 영숫자 및 기타 키를 포함하는 입력 디바이스(314)는 선택된 정보 및 명령어를 프로세서(304)에 통신하기 위해 버스(302)에 연결된다. 또다른 유형의 입력 디바이스는 선택된 정보 및 명령어를 프로세서(304)에 통신하기 위한 그리고 같은 디스플레이(302)상에서 커서 이동을 제어하기 위한 커서 방향키, 트랙볼 또는 마우스와 같은 커서 제어부(316)이다. 이 입력 디바이스는 이 디바이스가 평면에서의 위치를 지정할 수 있도록 하는 두개의 축들인, 제1축(예로서, x축) 및 제2축(예로서, y축)에서 2 자유도를 갖는다.
본 발명은 본원에 설명된 기술을 구현하기 위한 컴퓨터 시스템(300)의 사용과 관련된다. 본 발명의 한 실시예에 따라, 상기 설명한 기술들은 주 메모리(306)에 포함된 하나 이상의 명령어로 된 하나 이상의 시퀀스를 실행하는 프로세서(304)에 응답하여 컴퓨터 시스템(300)에 의해 수행된다. 상기 명령어들은 저장 디바이스(310)와 같은 또다른 머신으로 판독가능한 매체로부터 주 메모리(306)내로 판독된다. 주 메모리(306)에 포함된 하나 이상의 명령어로 된 하나 이상의 시퀀스의 실행은 프로세서(304)가 본원에 설명한 프로세스 단계들을 수행하도록 한다. 대안 실시예에서, 하드와이어 연결된 회로가 본 발명을 구현하기 위해 소프트웨어 명령어 대신에 또는 이와 연계하여 사용될 수 있다. 본 발명의 실시예들은 하드웨어 회로 및 소프트웨어의 임의의 특정한 조합으로 한정되지 않는다.
용어 “머신 판독가능 매체(machine-readable medium)”는 본원에선 머신이 특정 방식으로 동작을 행하게 하는 데이터를 제공하는 데에 참여하는 임의 매체를 가리킨다. 컴퓨터 시스템(300)을 사용하여 구현된 한 실시예에서, 여러 머신으로 판독가능한 매체가 예를 들어 명령어를 실행을 위해 프로세서(304)에 제공하는 데에 수반된다. 이러한 매체는 저장 매체, 전송 매체를 포함하지만 이들로 제한되지 않는 다수 형태를 취할 수 있다. 저장 매체는 비휘발성 매체 및 휘발성 매체 양자 모두를 포함한다. 비휘발성 매체는 저장 디바이스(310)와 같은 예를 들어 광학식 디스크 또는 자기 디스크를 포함한다. 휘발성 매체는 주메모리(310)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(302)를 구성하는 와이어를 포함하여, 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 무선파 통신 및 적외선 데이터 통신 동안 발생된 바와 같은, 음파 또는 광파 형태를 취할 수 있다. 상기한 바와 매체 전부는 명령어를 머신내로 읽어 들이는 물리적 매커니즘에 의해 검출된 매체에 의해 명령어가 운반될 수 있도록 실체적 형태이어야 한다.
머신 판독가능 매체의 일반적인 형태는 예로서, 플로피 디스크, 가요성 디스크, 하드 디스크, 자기 테이프, 또는 임의의 기타 자기 매체, CD-ROM, 임의의 기타 광학식 매체, 펀치카드, 종이테이프, 홀 패턴을 갖는 임의의 기타 물리적 매체, RAM, PROM, 및 EPROM, FLASH-EPROM, 임의의 기타 메모리 칩 또는 카트리지, 하기에 설명하는 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 기타 매체를 포함한다.
다양한 형태의 머신 판독가능 매체는 실행을 위해 프로세서(304)에 하나 이상의 명령어로 하나 이상의 시퀀스를 운반하는 데에 포함될 수 있다. 예를 들어, 명령어는 원격 컴퓨터의 자기 디스크상에서 초기에 수행될 수 있다. 원격 컴퓨터는 명령어를 자신의 동적 메모리에 로드하고 모뎀을 사용하여 전화선을 통해 명령어를 전송할 수 있다. 컴퓨터 시스템(300)에 대해 로컬 상태에 있는 모뎀은 전화선을 통해 데이터를 수신하여 이 데이터를 적외선 신호로 변환하기 위해 적외선 송신기를 사용할 수 있다. 적외선 검출기는 적외선 신호로 운반된 데이터를 수신하고 적절한 회로가 이 데이터를 버스(302)에 실을 수 있다. 버스(302)는 데이터를 주 메모리(306)에 운반하고, 프로세서(304)는 이 메모리에서 명령어를 검색하여 실행한다. 주 메모리(306)에 의해 수신된 이 명령어들은 프로세서(304)에 의한 실행 전후에 선택적으로 저장 디바이스(310)에 저장될 수 있다.
컴퓨터 시스템(300)은 또한 버스(302)에 연결된 통신 인터페이스(318)를 포함한다. 통신 인터페이스(318)는 로컬 네트워크(322)에 연결된 네트워크 링크(320)에 양방향 데이터 통신을 연결시킨다. 예를 들어, 통신 인터페이스(318)는 대응하는 유형의 전화선에 데이터 통신을 제공하는 모뎀 또는 통합 서비스 디지털 네트워크(ISDN; integrated services digital network)일 수 있다. 다른 예로서, 통신 인터페이스(318)는 호환성있는 근거리 통신망(LAN)에 데이터 통신 연결을 제공하는 LAN 카드일 수 있다. 무선 링크도 구현될 수 있다. 임의의 상기와 같은 구현에서, 통신 인터페이스(318)는 다양한 유형의 정보를 표현하는 디지털 데이터 스트림을 운반하는 전기, 전자기 또는 광 신호를 전송 및 수신한다.
네트워크 링크(320)는 일반적으로 하나 이상의 네트워크를 통하여 다른 데이터 디바이스에 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(320)는 로컬 네트워크(322)를 통하여 호스트 컴퓨터(324)에 또는 인터넷 서비스 제공자(ISP)(326)에 의해 동작된 데이터 장비로의 연결을 제공한다. ISP(326)는 그러면 현재 “인터넷”(328)으로 일반적으로 지칭되는 월드와이드 패킷 데이터 통신망을 통해 데이터 통신 서비스를 제공한다. 로컬 네트워크(322)와 인터넷(328)은 양자 모두 디지털 데이터 스트림을 운반하는 전기, 전자기 또는 광신호를 사용한다. 다양한 네트워크를 거친 신호 및 네트워크 링크(320)상의 신호 및 디지털 데이터를 컴퓨터 시스템(300)에 대해 송수신하는 통신 인터페이스(318)를 거친 신호는 대표적으로는 정보를 전송하는 반송파 형태이다.
컴퓨터 시스템(300)은 메시지를 전송할 수 있고 네트워크, 네트워크 링크(320) 및 통신 인터페이스(318)를 통해, 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 예를 들어, 인터넷인 경우에, 서버(330)는 인터넷(328), ISP(326), 로컬 네트워크(322)와 통신 인터페이스(318)를 통해 애플리케이션 프로그램을 위한 요구된 코드를 송신할 수도 있다.
수신된 코드는 수신된 바와 같은 상태로, 및/또는 나중에 실행하기 위해 저장 디바이스(310) 또는 기타 비휘발성 저장장치에 저장된 상태로 프로세서(304)에 의해 실행될 수 있다. 이러한 방식으로, 컴퓨터 시스템(300)은 반송파 형태로 애플리케이션 코드를 획득할 수 있다.
확장 및 대안
상기 설명한 명세서에서, 본 발명의 실시예들은 구현에 따라 바뀔 수 있는 다양한 특정 상세사항을 참조하여 설명되었다. 따라서, 구성에 대한 설명에서 유일하고 배타적인 표시자들은 발명이고, 이것들은 본 출원인에 의해 발명이어야 할 것으로 의도되며, 임의의 후속하는 보정을 포함하여, 특허 청구범위에서 도출되는 특정한 형태로, 본원으로부터 도출되는 특허 청구범위의 셋트이다. 특허 청구범위에 포함된 용어에 대해 본원에서 명백하게 한정된 정의내용들은 특허청구범위에서 사용되는 바와 같은 용어들을 지배한다. 그러므로, 청구항에서 명백하게 기재되지 않은 사항은 어떠한 한정, 요소, 권한, 특징 및 이점들도 어떠한 방식으로도 그러한 청구항의 범위를 한정하지 않는다. 따라서 명세서 및 도면은 제한적인 것이기 보단 예시적인 것으로 간주되어야 한다.
100; 고체 상태 드라이브, 105; 인터페이스
110; 메모리 제어기, 115; 고체 상태 메모리
120; 문턱값 프래그먼트 크기, 125; 고체 상태 드라이브 최적화기
302; 버스, 304; 프로세서
306; 주 메모리, 308; ROM
310; 저장 디바이스, 312; 디스플레이
314; 입력 디바이스, 316; 커서 제어부
318; 통신 인터페이스, 320; 네트워크 링크
322; 로컬 네트워크, 324; 호스트
326; ISP, 328; 인터넷
330; 서버

Claims (17)

  1. SSD상의 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 지를 결정하는 것;
    상기 SSD상의 자유 공간 프래그먼트가 상기 문턱값 프래그먼트 크기 보다 작은 경우엔, 상기 자유 공간 프래그먼트를 제거하는 것; 및
    상기 SSD상의 자유 공간 프래그먼트가 상기 문턱값 프래그먼트 크기 보다 작지 않은 경우엔, 데이터 저장을 위해 상기 자유 공간 프래그먼트를 유지하는 것을 포함하는 것인, 방법.
  2. 제1 항에 있어서, 상기 문턱값 프래그먼트 크기는,
    SSD의 순차 기입 속도; 또는
    SSD의 초당 입력/출력(I/O) 중 적어도 하나 이상에 기초하여 산정되는 것인, 방법.
  3. 제2 항에 있어서, 상기 문턱값 프래그먼트 크기는,
    상기 SSD의 순차 기입 속도를 SSD의 초당 I/O로 나누는 것을 포함하는 하나 이상의 단계를 이용하여 산정되는 것인, 방법.
  4. 제1 항에 있어서, 상기 자유 공간 프래그먼트를 제거하는 것은,
    유휴성 기준에 부합하는 자유 공간 프래그먼트를 제거하는 데에 필요로 하는 하나 이상의 자원을 이용할 시점을 결정하는 것; 및
    상기 유휴성 기준에 부합하는 하나 이상의 자원의 이용에 응답하여, 상기 자유 공간 프래그먼트를 제거하는 것을 포함하는 것인, 방법.
  5. 제1 항에 있어서, 상기 자유 공간 프래그먼트를 제거하는 것은, 상기 자유 공간 프래그먼트를 파일의 적어도 일부분으로 채우는 것을 포함하는 것인, 방법.
  6. 제5 항에 있어서, 상기 파일은
    임시 필러 파일(temporary filler file); 또는 드물게 사용된 파일 중 하나 이상인 것인, 방법.
  7. 제1 항에 있어서, 두번째 자유 공간 프래그먼트를 제거하는 것은 병합된 자유 공간 프래그먼트를 획득하기 위해 인접한 자유 공간 프래그먼트와 상기 자유 공간 프래그먼트를 병합하는 것을 포함하고, 병합된 자유 공간 프래그먼트는 문턱값 프래그먼트 크기 보다 큰 것인, 방법.
  8. 제1 항에 있어서, 상기 문턱값 프래그먼트 크기는,
    사용자로부터 문턱값 프래그먼트 크기를 수신하는 것;
    이 문턱값 프래그먼트 크기를 산정하는 것;
    SSD내의 하드와이어 연결된 요소로부터 문턱값 프래그먼트 크기를 획득하는 것;
    문턱값 프래그먼트 크기에 대해 다양한 값을 테스트함으로써 문턱값 프래그먼트 크기를 결정하여 최적 성능을 초래하는 문턱값 프래그먼트 크기를 선택하는 것에 의해, 획득되는 것인, 방법.
  9. 고체 상태 드라이브(SSD) 최적화기에 있어서,
    고체 상태 드라이브(SSD)상의 자유 공간 프래그먼트가 문턱값 프래그먼트 크기 보다 작은 지를 결정하기 위한 수단;
    상기 SSD상의 자유 공간 프래그먼트가 상기 문턱값 프래그먼트 크기 보다 작은 경우엔, 상기 자유 공간 프래그먼트를 제거하기 위한 수단; 및
    상기 SSD상의 자유 공간 프래그먼트가 상기 문턱값 프래그먼트 크기 보다 작지 않은 경우엔, 데이터 저장을 위해 상기 자유 공간 프래그먼트를 유지하는 수간을 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  10. 제9 항에 있어서, 상기 문턱값 프래그먼트 크기를,
    SSD의 순차 기입 속도; 또는
    SSD의 초당 입력/출력(I/O) 중 적어도 하나 이상에 기초하여 산정하기 위한 수단을 더 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  11. 제10 항에 있어서, 상기 문턱값 프래그먼트 크기를 산정하기 위한 수단은 상기 문턱값 프래그먼트 크기를 결정하기 위해 SSD의 순차 기입 속도를 SSD의 초당 I/O 속도로 나누기 위한 수단을 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  12. 제9 항에 있어서, 상기 자유 공간 프래그먼트를 제거하기 위한 수단은,
    유휴성 기준에 부합하는 자유 공간 프래그먼트를 제거하는 데에 필요로 되는 하나 이상의 자원을 이용할 시점을 결정하기 위한 수단을 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  13. 제9 항에 있어서, 상기 자유 공간 프래그먼트를 제거하기 위한 수단은,
    상기 자유 공간 프래그먼트를 파일의 적어도 일부분으로 채우기 위한 수단을 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  14. 제13 항에 있어서, 상기 파일은,
    임시 필러 파일; 또는
    드물게 사용된 파일중 하나 이상인 것인, 고체 상태 드라이브(SSD) 최적화기.
  15. 제9 항에 있어서, 두번째 자유 공간 프래그먼트를 제거하기 위한 수단은 병합된 자유 공간 프래그먼트를 획득하기 위해 인접한 자유 공간 프래그먼트와 상기 자유 공간 프래그먼트를 병합하기 위한 수단을 포함하고, 병합된 자유 공간 프래그먼트는 문턱값 프래그먼트 크기 보다 큰 것인, 고체 상태 드라이브(SSD) 최적화기.
  16. 제9 항에 있어서,
    사용자로부터 문턱값 프래그먼트 크기를 수신하기 위한 수단;
    이 문턱값 프래그먼트 크기를 산정하기 위한 수단;
    SSD내의 하드와이어 연결된 요소로부터 문턱값 프래그먼트 크기를 획득하기 위한 수단; 또는
    문턱값 프래그먼트 크기에 대해 다양한 값을 테스트함으로써 문턱값 프래그먼트 크기를 결정하여 최적 성능을 초래하는 문턱값 프래그먼트 크기를 선택하기 위한 수단을 더 포함하는 것인, 고체 상태 드라이브(SSD) 최적화기.
  17. 하나 이상의 프로세서에 의해 실행되는 경우 상기 프로세서로 하여금 청구항 제1항 내지 제8항 중 어느 한 항에 기재된 방법을 실행하도록 하는 하나 이상의 명령어 시퀀스를 포함하는 것인, 컴퓨터로 판독가능한 매체.
KR1020107007920A 2007-10-05 2008-10-03 고체 상태 드라이브 최적화기 KR20100071063A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US97808607P 2007-10-05 2007-10-05
US60/978,086 2007-10-05

Publications (1)

Publication Number Publication Date
KR20100071063A true KR20100071063A (ko) 2010-06-28

Family

ID=40097481

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107007920A KR20100071063A (ko) 2007-10-05 2008-10-03 고체 상태 드라이브 최적화기

Country Status (10)

Country Link
US (1) US8086819B2 (ko)
EP (1) EP2195730A1 (ko)
JP (1) JP2010541107A (ko)
KR (1) KR20100071063A (ko)
CN (1) CN102203717A (ko)
AU (1) AU2008308549B9 (ko)
CA (1) CA2700872A1 (ko)
RU (1) RU2479013C2 (ko)
TW (1) TW200937276A (ko)
WO (1) WO2009046353A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875033B2 (en) * 2009-05-12 2018-01-23 International Business Machines Corporation Apparatus and method for minimizing data storage media fragmentation
US8285955B2 (en) * 2009-10-16 2012-10-09 Lenovo (Singapore) Pte. Ltd. Method and apparatus for automatic solid state drive performance recovery
KR20110046243A (ko) * 2009-10-27 2011-05-04 삼성전자주식회사 사용자 장치 및 그것의 맵핑 데이터 관리 방법
KR101638061B1 (ko) * 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
US8638010B2 (en) * 2010-02-17 2014-01-28 Integrated Device Technology, Inc. Systems, devices, and methods for providing backup power to a load
US8380949B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US8615640B2 (en) 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US8639900B2 (en) * 2011-05-25 2014-01-28 International Business Machines Corporation Defragmentation of data storage pools
JP5579135B2 (ja) * 2011-07-29 2014-08-27 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US9026503B2 (en) * 2012-02-29 2015-05-05 Netapp, Inc. Fragmentation control for performing deduplication operations
US8990477B2 (en) * 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9443591B2 (en) 2013-01-23 2016-09-13 Seagate Technology Llc Storage device out-of-space handling
US8918583B2 (en) * 2012-12-20 2014-12-23 Virtium Technology, Inc. Adapting behavior of solid-state drive using real usage model
US20140359196A1 (en) * 2013-05-31 2014-12-04 Daniel J. Ragland On-the-fly performance adjustment for solid state storage devices
CN103631940B (zh) * 2013-12-09 2017-02-08 中国联合网络通信集团有限公司 一种应用于hbase数据库的数据写入方法及***
JP6289128B2 (ja) * 2014-01-30 2018-03-07 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
US10621041B2 (en) * 2016-03-25 2020-04-14 Intel Corporation Methods and apparatus to assign indices and relocate object fragments in distributed storage systems
US9747106B1 (en) * 2016-09-30 2017-08-29 International Business Machines Corporation Allocating multiple operand data areas of a computer instruction within a program buffer
US11029856B2 (en) * 2018-03-02 2021-06-08 Qualcomm Incorporated Flash memory device with data fragment function
TWI687921B (zh) * 2019-02-01 2020-03-11 宏碁股份有限公司 主機、疊瓦式磁記錄硬碟及其運作方法
US11520663B2 (en) * 2019-09-04 2022-12-06 Waters Technologies Ireland Limited Techniques for analytical application installation optimization

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675790A (en) * 1993-04-23 1997-10-07 Walls; Keith G. Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool
US6330583B1 (en) * 1994-09-09 2001-12-11 Martin Reiffin Computer network of interactive multitasking computers for parallel processing of network subtasks concurrently with local tasks
JP4110593B2 (ja) * 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
JP3588231B2 (ja) * 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
US5987479A (en) * 1997-09-24 1999-11-16 Sony Corporation, Inc. Large block allocation for disk-based file systems
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US7268774B2 (en) * 1998-08-18 2007-09-11 Candledragon, Inc. Tracking motion of a writing instrument
US6591287B1 (en) * 1999-09-08 2003-07-08 Lucent Technologies Inc. Method to increase the efficiency of job sequencing from sequential storage
US7096327B2 (en) * 2000-03-24 2006-08-22 Koninklijke Philips Electronics N.V. System for and method of accessing blocks on a storage medium
US7170891B2 (en) * 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US7076781B2 (en) * 2002-05-31 2006-07-11 International Business Machines Corporation Resource reservation for large-scale job scheduling
US7451704B1 (en) * 2003-03-20 2008-11-18 The United States Of America As Represented By The Secretary Of The Army Multifunctional explosive fragmentation airburst munition
RU2280273C2 (ru) * 2003-07-16 2006-07-20 Открытое акционерное общество "Научно-производственное объединение "Прибор" Способ структурирования и записи цифровой информации и устройство для его осуществления
JP2005050192A (ja) * 2003-07-30 2005-02-24 Matsushita Electric Ind Co Ltd 情報記録システム
US20050240934A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
JP2006113938A (ja) * 2004-10-18 2006-04-27 Ricoh Co Ltd データの再配置方法と追加記録方法およびプログラム
JP4859837B2 (ja) * 2005-09-22 2012-01-25 パナソニック株式会社 情報記録媒体アクセス装置、及びデータ記録方法
US20070143759A1 (en) * 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
GB2439577B (en) * 2006-06-30 2011-12-14 Data Equation Ltd Data processing

Also Published As

Publication number Publication date
AU2008308549B2 (en) 2012-08-09
US20090094433A1 (en) 2009-04-09
CA2700872A1 (en) 2009-04-09
RU2010112956A (ru) 2011-10-10
EP2195730A1 (en) 2010-06-16
AU2008308549B9 (en) 2012-10-18
US8086819B2 (en) 2011-12-27
TW200937276A (en) 2009-09-01
RU2479013C2 (ru) 2013-04-10
JP2010541107A (ja) 2010-12-24
AU2008308549A1 (en) 2009-04-09
WO2009046353A1 (en) 2009-04-09
AU2008308549A2 (en) 2010-06-24
CN102203717A (zh) 2011-09-28

Similar Documents

Publication Publication Date Title
KR20100071063A (ko) 고체 상태 드라이브 최적화기
US12039184B2 (en) Apparatus and method for performing garbage collection in a memory system
US7853759B2 (en) Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
CN109213696B (zh) 用于缓存管理的方法和设备
KR20100107470A (ko) 저장 수명 및 속도에 기초하여 파일 저장을 위한 저장 위치 선택
CN110362499B (zh) 电子机器及其控制方法、计算机***及其控制方法以及主机的控制方法
KR20110046232A (ko) 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
CN103838676B (zh) 数据存储***、数据存储方法及pcm桥
KR101478619B1 (ko) 가상화 기술을 이용한 데이터 입출력 방법 및 장치
CN110968253A (zh) 一种数据存储方法、装置及***
US20220269609A1 (en) Apparatus and method for improving input/output throughput of memory system
US20150186401A1 (en) Using file element accesses to select file elements in a file system to defragment
KR20150020384A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN115951845A (zh) 一种磁盘管理方法、装置、设备及存储介质
KR20240011609A (ko) 원격 서버로부터 읽은 낮은 레이턴시 데이터를 위한 데이터 프리패칭 시스템 및 방법
KR20140041408A (ko) 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
CN103064762A (zh) 重删备份数据的恢复方法和装置
CN108572924B (zh) 一种3d mlc闪存设备的请求处理方法
CN101526887A (zh) 将数据写入硬盘的方法、装置及***
Zuolo et al. Memory driven design methodologies for optimal SSD performance
CN112099731A (zh) 数据储存装置与数据处理方法
CN112765047B (zh) 用于重写数据的方法、设备和计算机程序产品
CN109471806B (zh) 数据存储方法、存储器存储装置及存储器控制电路单元
Lin et al. Fast Online Reconstruction for SSD-Based RAID-5 Storage Systems
KR20230135346A (ko) 메모리 컨트롤러 및 그의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application