KR20140113353A - 동적 그래뉼기반 매개 스토리지 - Google Patents

동적 그래뉼기반 매개 스토리지 Download PDF

Info

Publication number
KR20140113353A
KR20140113353A KR1020140024425A KR20140024425A KR20140113353A KR 20140113353 A KR20140113353 A KR 20140113353A KR 1020140024425 A KR1020140024425 A KR 1020140024425A KR 20140024425 A KR20140024425 A KR 20140024425A KR 20140113353 A KR20140113353 A KR 20140113353A
Authority
KR
South Korea
Prior art keywords
data
storage
data blocks
granules
storage area
Prior art date
Application number
KR1020140024425A
Other languages
English (en)
Other versions
KR101910840B1 (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 시게이트 테크놀로지 엘엘씨
Publication of KR20140113353A publication Critical patent/KR20140113353A/ko
Application granted granted Critical
Publication of KR101910840B1 publication Critical patent/KR101910840B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G06F3/064Management of blocks
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Abstract

데이터 스토리지 시스템은 데이터 스토리지 및 랜덤 액세스 메모리를 포함한다. 정렬 모듈은 랜덤 액세스 메모리에 통신에 관하여 결합되고 데이터 스토리지의 랜덤 액세스 메모리에 수신된 기록 데이터의 데이터 블럭들을 정렬한다. 스토리지 제어기는 랜덤 액세스 메모리 및 데이터 스토리지에 통신에 관하여 결합되고 정렬된 데이터 블럭들을 데이터 스토리지의 그래뉼 스토리지 영역에 하나 이상의 개별적으로-정렬된 그래뉼들에 기록하도록 구성되며, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약된다. 방법 및 프로세서-구현되는 프로세스는 데이터 스토리지의 랜덤 액세스 메모리에 수신된 기록 데이터의 데이터 블럭들을 정렬하는 것을 허용한다. 방법 및 프로세서-구현되는 프로세스는 정렬된 데이터 블럭들을 데이터 스토리지의 그래뉼 스토리지 영역에 하나 이상의 개별적으로-정렬된 그래뉼들에 기록하도록 구성되며, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약된다.

Description

동적 그래뉼기반 매개 스토리지 {DYNAMIC GRANULE-BASED INTERMEDIATE STORAGE}
관련 출원들에 대한 상호 참조
이 출원은 함께 동시에 출원된 “매개 스토리지에 스테이징 정렬된 데이터” 명칭의 U.S. 출원 번호. ___________[Docket No. STL 17728]에 관련되고, 그것이 개시하고 교시하는 모든 것에 대하여 참조로서 구체적으로 통합된다.
일부 데이터 스토리지 시스템들, 예컨대 회전 자기 스토리지, 자기 테이프 및/또는 회전 광 스토리지를 포함하는 것들은 물리적 스토리지 내에 무작위적으로-타켓된 위치에 도달하는데 상대적으로 높은 레이턴시 시간들을(예를 들어, 밀리세컨드 범위 또는 그 이상에서) 겪는다. 일단 타켓된 위치가 도달된 때(예를 들어, 검색 동작을 통하여), 데이터는 상당히 높은 레이트에서 물리적 스토리지로부터 상대적으로 순차적으로 전송될 수 있다(판독 또는 기록). 데이터 전송 레이트들을 개선하는 것에 관련한 많은 난제들 중 하나는 데이터 스토리지 시스템 내에서 요청된 데이터의 로직 순서화 및 물리적 위치의 제약들 하에서 호스트의 전송 요청들을 관리하는 것이다.
본 출원에서 청구되고 설명된 실시예들은 데이터 스토리지 시스템 내 물리적 스토리지의 다수의 레벨들을 통하여 동적으로 매핑된 데이터를 효율적으로 분리함으로써 상기 앞에서의 문제들을 다룬다. 이런 효율적인 데이터 분리가 상기 물리적 스토리지 매체에 대한, 특별히 슁글드 자기 레코딩 영역들의 존재 하에서 논리적으로 순차적인 데이터 액세스들의 행동에서의 편차를 줄일 수 있다.
데이터 스토리지 시스템은 데이터 스토리지 및 랜덤 액세스 메모리를 포함한다. 정렬 모듈은 상기 랜덤 액세스 메모리에 통신에 관하여 결합되고 상기 데이터 스토리지의 상기 랜덤 액세스 메모리에 수신된 기록 데이터의 데이터 블럭들을 정렬한다. 스토리지 제어기는 상기 랜덤 액세스 메모리 및 상기 데이터 스토리지에 통신에 관하여 결합되고 상기 정렬된 데이터 블럭들을 상기 데이터 스토리지의 그래뉼 스토리지 영역의 하나 이상의 개별적으로-정렬된 그래뉼들로 기록하도록 구성되며, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약된다.
방법 및 프로세서-구현되는 프로세스는 데이터 스토리지의 랜덤 액세스 메모리에 수신된 기록 데이터의 데이터 블럭들을 정렬하는 것을 허용한다. 상기 방법 및 프로세서-구현되는 프로세스는 상기 정렬된 데이터 블럭들을 상기 데이터 스토리지의 그래뉼 스토리지 영역의 하나 이상의 개별적으로-정렬된 그래뉼들로 기록하도록 구성되며, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약된다.
다른 구현예들이 또한 본 출원에서 설명되고 나열된다.
도 1은 매개 레이턴시 스토리지의 스테이징 영역에 정렬된 데이터 스테이징을 위한 예제 데이터 스토리지 시스템을 예시한다.
도 2는 정렬된 데이터의 청크들을 위한 하나 이상의 스테이징 영역들을 갖는 예제 스토리지 매체를 예시한다.
도 3은 데이터 편성을 전체적으로 증가시키는 가변 레벨들에 기반한 계층적 스토리지를 갖는 예제 데이터 스토리지 시스템을 예시한다.
도 4는 스테일 데이터가 스테일(stale)로서 식별되고 표시되는 예제 스테이징 영역을 예시한다.
도 5는 스테이징 영역에 정렬된 데이터 청크의 예제 생성을 예시한다.
도 6은 스테이징 영역에 외부 사용을 위한 청크들의 셋으로부터 데이터 서브셋을 정렬하는 예제를 예시한다.
도 7은 스테이징 영역으로 데이터 블록들을 청크하기 위한 예제 동작들을 예시한다.
도 8은 스테이징 영역으로부터 다른 매개 스토리지로 데이터 블럭들을 재정렬하기 위한 예제 동작들을 예시한다.
도 9는 정렬된 데이터 블럭들이 개별적인 그래뉼들로 레코드되는 예제 그래뉼 스토리지 영역을 예시한다.
도 10은 정렬된 데이터 블럭들이 개별적인 그래뉼들로 압축되는 예제 그래뉼 스토리지 영역을 예시한다.
도 11은 정렬된 데이터 블럭들이 개별적인 그래뉼들로 레코드되는 슁글드 자기 레코딩의 밴드에 예제 그래뉼 스토리지 영역을 예시한다.
도 12는 정렬된 데이터 블럭들이 개별적인 그래뉼들로 정렬되는 슁글드 자기 레코딩의 밴드에 예제 그래뉼 스토리지 영역을 예시한다.
도 13은 랜덤 액세스 메모리, 스테이징 영역, 그래뉼 스토리지 영역 및 목적지 스토리지 영역을 포함하는 스토리지의 예제 레벨들을 예시한다.
도 14는 랜덤 액세스 메모리, 스테이징 영역, 그래뉼 스토리지 영역 및 목적지 스토리지 영역을 포함하는 스토리지의 다른 예제 레벨들을 예시한다.
도 15은 데이터 블럭들을 그래뉼 스토리지 영역으로 저장하기 위한 예제 동작들을 예시한다.
도 16은 데이터 블럭들을 목적지 스토리지 영역으로 저장하기 위한 예제 동작들을 예시한다.
도 1은 매개 레이턴시 스토리지의 스테이징 영역(102)에 정렬된 데이터를 스테이징하기 위한 예제 데이터 스토리지 시스템(100)을 예시한다. 예시된 예제에서, 데이터 스토리지 시스템(100)은 하나 이상의 자기 스토리지 디스크들(104)를 가지는 하드 디스크 드라이브를 나타내지만, 이런 스토리지 매체의 다른 실시예들은 광 디스크 리더기(예를 들어, CD 리더기/기록기 또는 DVD 리더기/기록기), 테이프 드라이브, 고체 상태 드라이브(SSD) 등의 형태일 수 있다. 데이터 스토리지 시스템(100)은 호스트 디바이스(106)와 통신하고, 이것은 데이터 스토리지 시스템(100)으로부터 판독 데이터를 수신하고 데이터 스토리지 시스템에 기록 데이터를 발송한다.
예를 들어, 호스트 디바이스(106)는 데이터 스토리지 시스템(100)에 데이터 파일을 기록할 수 있고, 이것은 자기 스토리지 디스크(104) 상에 데이터 파일을 레코드하고 데이터 스토리지 시스템(100)으로부터 나중에 데이터 파일을 판독할 수 있다. 호스트 레벨에서, 유저 데이터는 종종 하나 이상의 고정된 길이 데이터 블럭들로 구성될 수 있는 가변적 길이 파일들의 면에서 종종 편성된다. 데이터 블럭들은 로직 블럭 어드레스들(LBA들)을 이용하여 호스트 디바이스(106)에 의해 자체 어드레스를 가진다. 데이터 스토리지 시스템(100)은 데이터 기록 회로부(108)를 가지는 기록 채널을 포함하고, 이것은 데이터 스토리지 시스템(100)에 의해 사용되는 인코딩 기법에 따라 데이터 블럭들을 인코드한다. 하나 이상의 데이터 블럭들은 에러 감지 및/또는 정정을 위한 자체 수용된 코드워드들을 형성하기 위해 중복 정보와 결합할 수 있다.
데이터 기록 회로부(108)는 기록 제어기(110)를 통하여 데이터 블럭들을 기록하고, 이것은 데이터 스토리지 시스템(100)내 하나 이상의 레벨들의 데이터 스토리지에 기록 제어기(110)에 의해 기록되는 데이터 블럭들의 물리적 위치 및 순서화를 결정한다. 데이터 블럭이 스토리지 디스크(104)에 기록될 때, 데이터 블럭은 스토리지 디스크(104) 상에 물리적 블럭 어드레스(PBA)에 기록된다. LBA 및 PBA 사이의 매핑은 시간이 흐르면서 변할 수 있고 “동적 매핑”으로 지칭된다. 기록 제어기(110)는 심지어 매핑이 시간이 흐르면서 변화할 때에도 LBA 및 PBA 사이의 동적 매핑을 관리한다. 메모리(116)는 기록 제어기(110)에 의해 수행되는 동적 매핑, 정렬, 리로케이션, 오우버프로비저닝 및 다른 기능들을 구현하기 위하여 기록 제어기(110)에 의해 프로세스되는 펌웨어 명령들을 저장할 수 있다.
데이터 스토리지 시스템(100)에서, 연속적인 논리 어드레스들을 갖는 데이터 블럭들의 그룹들은 어떤 데이터 셋들에 대한 검색 동작 후에 연속적인 데이터 액세스들에 대하여 보다 낮은 레이턴시를 달성하기 위해서 스토리지 디스크(104)상의 대략 연속적인 물리적 위치들에 레코드 될 수 있다. 추가하여, 동적 매핑은 데이터 스토리지 시스템(100)내 물리적 스토리지의 다수의 레벨들을 지원하기 위해서 자체 정보 처리 능력을 갖추게 확장될 수 있고, 물리적 스토리지의 상이한 레벨들은 상이한 평균 액세스 레이턴시들을 제공할 수 있다.
상기 언급된 기록 제어기(110)는 데이터 스토리지 시스템(100)내의 데이터 스토리지의 하나 이상의 레벨들에 데이터 블럭들을 기록할 수 있다. 예를 들어, “목적지 스토리지”로 지칭되는 스토리지 디스크(104)의 데이터 스토리지 영역(112)은 일반적으로 롱 텀 스토리지를 위해 의도된 물리적 스토리지 영역을 나타낸다. 비록 목적지 스토리지내 데이터는 롱 텀 스토리지를 위해 의도되지만, 이런 데이터는 또한 시간이 흐르면서 목적지 스토리지 위치들로부터 다른 목적지 스토리지 위치들로 이동될 수 있다. 추가하여, “그래뉼 스토리지”로 지칭되는 스토리지 디스크(104)의 데이터 스토리지 영역(114)은 각각 동적으로-사이즈가능한 그래뉼로 저장되는 데이터가 어떤 서브셋의 로직 블럭 어드레스들(LBA들)에 제약되는 매개 물리적 스토리지를 나타낸다. 예제 그래뉼 사이즈는 약 1MB일 수 있지만, 다른 사이즈들이 채용될 수 있다. 사실, 그래뉼들은 동일 디스크 표면 상에서 또는 심지어 동일 슁글드 매체 레코딩 밴드내에서 많은 상이한 사이즈들을 가질 수 있다.
더욱이, “스테이징 영역”으로 지칭되는 스토리지 디스크(104)의 데이터 스토리지 영역(102)은 로직 블럭들의 그룹들이 점점 더 연접하는 LBA 순서로 증분하여 기록 그리고 재기록될 수 있는 물리적 스토리지 영역을 나타낸다. 예를 들어, 데이터 블럭들은 호스트 디바이스(106)로부터 임의의 또는 산재하는 LBA 순서로 데이터 스토리지 시스템(100)에 의해 처음에 수신될 수 있다(예를 들어, 데이터 블럭들은 로직 스페이스의 다양한 영역들로부터 수신된다). 이런 데이터 블럭들은 물리적으로 연접하는 방식으로 스테이징 영역에 기록될 수 있다.
랜덤 액세스 메모리(118)는 또한 데이터 스토리지 시스템(100)의 스토리지 영역을 나타낸다. 그것의 랜덤 액세스 특성들 및 낮은 액세스 레이턴시는 어떤 제약들에 따라(예를 들어, LBA 순서화, PBA 순서화, 가장-빈번하게-액세스되는 순서, 우선순위화된 데이터 순서, 등) 데이터 블럭들을 정렬하기 위해 적절한 스토리지 영역을 제공한다. 일 실시예에서, 데이터는 랜덤 액세스 메모리(118)로 수신되고, LBA 순서에 따라 정렬되고, 이용 가능한 랜덤 액세스 메모리(118)의 양과 관련한 사이즈인 “청크들”로 불리우는 데이터의 그룹들로 스테이징 영역에 기록된다. 예제 청크 사이즈는 약 64MB일 수 있지만, 다른 사이즈들이 채용될 수 있다.
데이터 판독 및 복원 회로부(120)는 자기 스토리지 디스크(104)로부터(또는 랜덤 액세스 메모리(118)로부터) 판독 데이터를(적절한 에러 정정 코딩을 가진) 판독할 수 있고 에러들을(예컨대 자기 스토리지 디스크(104)상의 스크래치 손상에 의해 야기된 데이터 에러들) 감지하고/감지하거나 정정하기 위해서 에러 정정 코딩을 사용한다. 데이터 판독 및 복원 회로부(120)는 그런 다음 호스트 디바이스(106)로 판독 데이터를(이것은 정정된 판독 데이터일 수 있다) 전송한다.
랜덤 액세스 메모리(118)에 수신된 데이터 블럭들의 정렬은 여러 가지 방식들로 성취될 수 있다. 일 실시예에서, 정렬은 데이터 블럭들이 랜덤 액세스 메모리(118)에 존재하는 동안 프로세서 또는 다른 제어 회로부에 의해 성취될 수 있다. 대안적인 일 실시예에서, 정렬은 랜덤 액세스 메모리(118)로부터 및/또는 랜덤 액세스 메모리로 데이터 블럭들의 전송 동안에 , 예컨대 분산 수렴 DMA(직접 메모리 액세스) 전송 기법을 이용함으로써 성취될 수 있다. 다른 정렬 기술들 및 구성들이 채용될 수 있다.
데이터 스토리지 시스템, 예컨대 도 1의 데이터 스토리지 시스템(100)에서, 스테이징 영역은 비-슁글드 또는 슁글드 자기 레코딩 영역일 수 있다. 비-슁글드 자기 미디어에서, 자화된 매체상에 각각의 셀들은 데이터를 임의의 주변 셀들에 중복 기재없이 셀들에 데이터를 기록하는 것을 허용하기 위해서 기록 폴의 사이즈에 관하여 충분하게 큰 사이즈를 가진다. 결과적으로, 데이터는 자기 매체 상의 어딘가 이용 가능한 셀들에 무작위적으로 기록될 수 있다. 그러나, 데이터 스토리지 밀도에 대한 요건들이 자기 미디어에 대하여 증가할 때, 셀 사이즈는 축소된다. 더 큰 기록 폴에 의해 제공되는 강한 기록 필드 구배가 자화된 매체 상의 셀들의 극성을 천이하도록 종종 요구되기 때문에 기록 폴의 사이즈에서 같은 정도의 축소는 어렵다. 결과적으로, 상대적으로 보다 큰 기록 폴을 이용하여 자화된 매체상에 보다 적은 셀들에 데이터를 기록하는 것은 인접한 셀들의(즉, 중복 기재하는 인접한 셀들) 분극에 영향을 미칠 수 있다. 인접한 데이터가 기록 동작 동안에 중복 기재되는 것을 방지하면서 보다 적은 셀들을 활용하기 위해 자기 매체를 개조하기 위한 하나의 기술은 슁글드 자기 레코딩(SMR)이다.
SMR은 기록 폴에 의해 생성된 보다 강한 기록 필드를 활용한다. 슁글드 자기 레코딩의 하나의 제약은 데이터가 자기 미디어에 기록될 때, 그것은 반경 트랙들을 순차적으로 증가시키거나 감소시키면서 기록된다는 것이다. 강한 기록 필드는 기록되고 있는 트랙 및 하나 이상의 앞서-기록된 트랙들을 포함하는 두개 이상의 인접한 트랙들에 영향을 미친다. 결과적으로, 슁글드 데이터 내 임의의 데이터 셀을 변화시키기 위해서, 슁글드 데이터의 전부가 선택된 순차적인 기록 순서로 재기록된다.
이런 시스템에서의 랜덤 기록 기능성의 부족을 보상하면서 SMR에 의해 가능하게 제공되는 증가된 셀 밀도를 달성하기 위해서, 하나 이상의 격리 영역들이 슁글드 데이터 내에 창설될 수 있다. 또한 가드 트랙들로 지칭되는 격리 영역들은 레코딩을 위해 이용 가능하지 않은 슁글드 데이터내 하나 이상의 인접한 데이터 트랙들의 그룹화들이다. 동작시에, 격리 영역들은 슁글드 데이터의 개별 데이터 밴드들(즉, 가드 트랙들에 의해 바운드되는 로직 섹터들의 그룹들)을 정의한다. 통상적으로, 각각의 가드 트랙은 가드 트랙을 가로질러 임의의 중복 기재를 방지하기에 충분히 넓다. 결과적으로, 가드 트랙들은 다른 밴드들로부터 격리된 하나 이상의 인접한 트랙들을 포함하는 슁글드 데이터의 밴드들을 창설한다. 결과적으로, 밴드 내 하나 이상의 셀들이 변화될 때 슁글드 데이터의 단일 밴드가 재기록된다(디스크 상의 슁글드 데이터의 전부보다는).
그러나, 데이터 밴드 내 데이터의 하나 이상의 셀들을 재기록하는 것은 여전히 통상적으로 전체 데이터 밴드를 판독하는 단계, 데이터 밴드의 데이터를 디스크 상의 매체 스크래치 패드(예를 들어, 일시적 캐시)에 기록하는 단계, 매체 스크래치 패드로부터 데이터를 판독하는 단계 및 데이터를 하나 이상의 변화된 셀들을 갖는 원래의 데이터 밴드에 재기록하는 단계를 포함하는 다수의 스텝들을 수반한다. 결과적으로, 슁글드 데이터 기록 동작들은 언-슁글드 데이터 기록 동작들보다 통상적으로 더 시간 소모적이고 덜 파워 효율적이다.
중복 정보는 멀티-로직-블럭-사이즈된 코드워드들을 창설하기 위해서 기록된 데이터와 인터레이스될 수 있다. 중복 정보는 각각의 시간 데이터가 스테이징 영역에 기록되는 것을 포함되게 할 수 있거나 또는 중복 정보가 예측할 수 있는 간격들에서 레코드될 수 있어서, 만약 중복 정보가 속할 예측할 수 있는 위치에 도달하기 위한 충분히 부가된 데이터를 수신하기 전에 스테이징 영역이 몇번 추가된다면 증분의 중복은 유지될 수 있다. 더욱이, 도 1의 스테이징 영역(또는 다른 스테이징 영역)에 데이터를 기록하는 것은 스테이징 영역 스페이스를 소모하는 그런 프로세스들 전에 스테이징 영역 스페이스를 비우는 그런 프로세스들을 수행하도록 보조를 맞출 수 있다. 이 방식에서, 스테이징 영역 스페이스는 새로운 기록 데이터 블럭들을 위해 이용 가능하게 될 더 많은 가능성이 있다.
도 2는 정렬된 데이터의 청크들에 대한 하나 이상의 스테이징 영역들(예컨대 스테이징 영역(202))을 갖는 예제 스토리지 매체(200)를 예시한다. 일 실시예에서, 데이터 스토리지 디스크(204)의 표면은 많은 동심 트랙들(206)을 포함한다. 트랙들(206)은 스토리지(204)의 표면상에 분포되고 통상의 선-슁글드 연속적 레코딩, 이산의 트랙 레코딩 및 슁글드 자기 레코딩을 제한없이 포함하는 임의 개수의 상이한 형태들을 가질 수 있다. 일부 실시예들에서, 단일 스토리지 디스크 표면은 예를 들어 통상의 선-슁글드 연속적 레코딩 및 슁글드 자기 레코딩을 지원할 수 있다. 더구나, 단일 디스크 표면의 동일 영역이 상이한 시간들에 통상의 선-슁글드 연속적 레코딩 및 슁글드 자기 레코딩, 둘모두를 위해 사용될 수 있다. 다른 실시예들에서, 상이한 스토리지 디스크 표면들은 상이한 레코딩 유형들에 전용될 수 있다(예를 들어, 하나의 스토리지 디스크의 표면은 레코딩의 하나의 유형을 위해 사용될 수 있고 그리고 동일 스토리지 디스크 또는 다른 스토리지 디스크의 표면은 상이한 유형의 레코딩을 위해 사용될 수 있다).
상이한 유형들의 레코딩은 상이한 레벨들의 액세스 레이턴시에 원인이 될 수 있다. 통상의 연속적 레코딩 패턴은 방사상의 서보 버스트 섹터들(예컨대 서보 버스트 섹터들(208))에 저장되는 서보 정보에 의해 지정되는 트랙들을 따라서 데이터를 기록하는 기록 헤드에 의해 형성된다. 기록 헤드가 데이터를 스토리지 매체에 기록할 때 기록 헤드는 트랙의 부분들을 재기록하고, 시간이 흐르면서 잠재적으로 개별적인 트랙들의 한계들에 약간의 변형들로 귀결된다. 그에 반해서, 이산 트랙 레코딩 패턴들은 비-자기 인터-트랙 격리을 갖는 동심의 이산 트랙들을 포함하고, 데이터는 각각의 격리된 트랙을 따라서 연속적으로 레코드된다. 이와 같이, 기록 헤드는 기록 동작 동안에 이산의 타겟 트랙들의 일관된 셋들에 데이터를 기록한다.레코딩 영역들의 이들 유형들에 대한 판독 및 기록 액세스는 그것들 사이에서 다를 수 있고 더구나, 트랙들을 따라서 데이터 블럭들의 분리 및 순서화는 또한 액세스 레이턴시에 영향을 줄 수 있다.
슁글드 자기 레코딩은 판독 센서들에 의해 요구되는 것보다 더 넓은 트랙들을 레코드하는 기록 폴들을 채용한다. 그러나, 슁글드 자기 레코딩에서, 기록 동작은 통상적으로 소정의 방향에서 인접한 트랙들의 중복 기재로 귀결된다. 따라서, 기록 트랙들은 판독 헤드들에 의해 정확하게 판독될 수 있는 데이터의 좁은 트랙들을 남기면서 소정의 방향에서 서로 중첩하도록 기록된다. 이와 같이, 중첩 트랙들은 격리되거나 또는 그렇지 않으면 다른 트랙들과 떨어진 트랙들의 그룹들 또는 밴드들에 기록된다.
방사상의 서보 버스트 섹터들(208)로 구성될 때, 각각의 트랙(206)은 서보 버스트 섹터들(208)사이에서 데이터 웨지들 또는 섹터들(210)로 불리우는 슬라이스들로 분할된다. 서보 버스트 섹터들은 타겟 트랙 위에 판독/기록 헤드의 정확한 측위를 유지하기 위한 데이터를 포함하고 스토리지 디스크(204) 둘레에 미리 결정된 간격의 위치들에 배치된다.
스토리지 디스크(204)가 회전할때, 판독/기록 헤드는 서보 버스트들 섹터들(208)내 어드레스를 수용하는 서보 정보를 판독하고 서보 정보를 다시 서보 제어 시스템에 발송한다. 서보 제어 시스템은 서보 버스트 섹터(208)로부터의 서보 정보 판독에서 어드레스가 타겟 트랙 위치에 해당하는지 아닌지를 체크한다. 만약 어드레스가 타겟 트랙 위치에 해당하지 않는다면, 서보 제어 시스템은 트랙 위치를 정정하기 위해서 검색 동작의 일부로서 판독/기록 헤드의 위치를 조정한다.
상기에서 지시된 바와 같이, 각각의 트랙(206)은 정렬된 유저 정보를 포함하는 이산의 데이터 섹터들(210)을 포함한다. 특정한 트랙상에 포함된 데이터 섹터들(210)의 수는 어느 정도는 트랙의 길이(예를 들어, 둘레)에 의존한다. 유저 정보를 포함하는 것외에, 각각의 데이터 섹터는 유저 정보를 식별하고 프로세스하는데 도움이 되는 다른 데이터(예를 들어, 에러 감지 및 정정 코딩)를 또한 포함할 수 있다.
실시예에 따른, 스토리지 디스크(204)의 하나 이상의 부분들은 매개 스토리지의 유형 스테이징 영역(202)으로서의 사용을 위해 보존된다. 스테이징 영역(202)은 스토리지 디스크(204)의 외경(212)에 근접하여 위치된 트랙들(206)의 원주 그룹화인 것으로 도 2에 도시된다. 스테이징 영역(202)은 일 예로서 도 2에 도시되고 스테이징 영역(202)은 스토리지 디스크(204)의 임의의 다른 영역(방사상의 또는 원주의)상에 기록될 수 있다는 것이 이해되어야 한다. 외경(212)에 근접한 트랙들의 한가지 특성은 그것들이 스토리지 디스크(204)의 내경(214)에 근접한 트랙들보다 더 높은 순차적 데이터 레이트를 가지고 판독될 수 있다는 것이다.
하나 이상의 스테이징 영역들(202)에 추가하여, 스토리지 디스크(204)는 또한 매개 스토리지의 유형인 하나 이상의 그래뉼 스토리지 영역들(216)을 포함하고, 각각의 동적으로-사이즈가능한 그래뉼은 어떤 서브셋의 로직 블럭 어드레스들(LBA들)로 제약된다. 스토리지 디스크(204)는 또한 목적지 스토리지 영역들(218)를 포함하고, 데이터 블럭들은 스토리지 디스크(204)의 다른 영역들보다 더 롱 텀 스토리지를 위해 통상적으로 레코드된다. 일 실시예에서, 목적지 스토리지 영역들(218)은 적어도 어떤 제한된 어드레스 범위들을 위한, 비-동적 LBA-대-PBA 매핑에 의해 특징화되지만 다른 실시예들에서 동적 매핑의 일부 사용을 갖는 목적지 스토리지 영역들을 포함할 수 있다. 다양한 매개 및 목적지 스토리지 영역들의 예시된 배치는 단지 예들이며 그리고 이런 영역들은 스토리지 디스크(204) 상의 임의 위치에 위치될 수 있다는 것이 이해되어야 한다. 더욱이, 스테이징 영역들(202), 그래뉼 스토리지 영역들(216) 및 목적지들 스토리지 영역들(218) 중 하나 이상은 슁글드 자기 레코딩 영역들, 비-슁글드 자기 레코딩 영역들, 또는 다른 레코딩 포맷들의 영역들일 수 있다.
첫째, 개괄적인 언급으로서 기록 데이터는 다양한 스토리지 영역들로의(예를 들어, 랜덤 액세스 메모리로, 스테이징 영역으로, 그래뉼 스토리지 영역으로, 목적지 스토리지 영역으로, 등) 여러가지 경로들을 취할 수 있다는 것이 이해되어야 한다. 일 실시예에서, 호스트 디바이스는 랜덤 액세스 메모리에 데이터 블럭들을 기록하고, 데이터 블럭들은 처음에 정렬되거나 또는 정렬되지 않을 수 있다. 만약 랜덤 액세스 메모리가 비-휘발성이면, 데이터 블럭들은 다른 비- 휘발성 스토리지 매체에 기록됨이 없이 호스트 디바이스 판독 요청들을 서비스하기 위해서 랜덤 액세스 메모리에 축적될 수 있다. 대안적으로, 데이터 블럭들은 랜덤 액세스 메모리로부터 스테이징 영역으로(개별적인 정렬된 셋들로 또는 정렬되지 않은 데이터 블럭들로) 또는 다른 스토리지에 기록될 수 있다. 심지어 데이터 블럭들이 스테이징 영역 또는 다른 스토리지에 기록될 때, 동일 데이터 블럭들이 랜덤 액세스 메모리에 유지되거나 유지될 수 있고 이것은 장래의 가능한 매체 판독 동작을 회피할 수 있다. 더욱이, 전력 상실의 가능성 때문에 비휘발성 스토리지(예를 들어, NVRAM 또는 다른 비-휘발성 스토리지 매체)에 적어도 기록 데이터의 복사본을 유지하는 것이 통상적으로 바람직하다.
도 3은 데이터 편성을 전체적으로 증가시키는 가변 레벨들에 기반한 계층적 스토리지를 갖는 예제 데이터 스토리지 시스템(300)을 예시한다. 스토리지 제어기(302)는 랜덤 액세스 메모리(304)에, 데이터 스토리지(310)의 매개 스토리지(예를 들어, 스테이징 영역(306) 또는 그래뉼 스토리지 영역(308)) , 또는 데이터 스토리지(310)의 목적지 스토리지(예를 들어, 목적지 스토리지 영역(312))이든지간에 다양한 스토리지 영역들에 데이터 블럭들의 판독 및 기록을 관리한다. 단일 스토리지 디스크 상에 다수의 스테이징 영역들, 다수의 그래뉼 스토리지 영역들 및 다수의 목적지 스토리지 영역들이 있을 수 있다는 것이 이해되어야 한다. 더욱이, 스토리지 제어기(302)는 시간이 흐르면서 소정의 스토리지 영역의 역할을 동적으로 조정할 수 있다. 예를 들어, 스테이징 영역은 동작의 다양한 시간들에서 목적지 스토리지 영역으로 사용될 수 있다.
일 실시예에서, 스토리지 제어기(302)는 호스트 디바이스로부터의 하나 이상의 기록 명령어들에 반응하여 새로운 기록 데이터의 데이터 블럭들을 수신한다. 수신된 데이터 블럭들은 임의의 LBA-순서로 수신될 수 있고 - 일부 기록 명령어들은 더 LBA-순서화될 수 있는 반면 다른 기록 명령어들은 덜 LBA-순서화될 수 있고 기록 명령어들의 일부 조합들은 실질적으로 논리 어드레스 스페이스의 다양한 영역들에 타겟될 수 있다. 그럼에도 불구하고, 이 실시예에서, 스토리지 제어기(302)는 랜덤 액세스 메모리(304)로 데이터 블럭들을 수신하고, 데이터 블럭들을 정렬하고, 정렬된 데이터 블럭들을 스테이징 영역(306)의 상대적으로 연접하는 물리적 스페이스의 스테이징 영역(306)에 기록한다. 용어 “상대적으로 연접하는”은 단일 검색 동작이(또는 몇번의 검색 동작들)이 완전한 판독/기록 동작을 하는데 사용되는 물리적 스토리지 영역으로부터/으로 잠재적으로 다수의 판독/기록 명령어들과 관련된 판독/기록 동작을 지칭하고 및 데이터 블럭들은 하나 이상의 트랙들상의 순차적인 PBA들에 기록되고/ 순차적인 PBA들로부터 판독된다. 데이터 스토리지(310)에서 손상된, 스테일, 또는 그렇지않으면 “불량” PBA들의 생략 또는 데이터 스토리지(310)의 다수의 트랙들 근처에 걸친 데이터의 판독/기록은 “상대적으로 연접하는”으로 간주되는 것에서 판독/기록 동작을 배제하지 않는다는 것이 이해되어야 한다.
임의의 시간에서, 그러나 통상적으로 낮은 스토리지 활동의 기간들 동안에, 스토리지 제어기(302)는 상대적으로 연접하는 판독 동작을 이용하여 스테이징 영역(306)에 정렬된 데이터를 판독할 수 있다. 판독 데이터는 랜덤 액세스 메모리(304)로 전송되고, 미리 정의된 순서로(예를 들어, LBA 순서로, 가장-빈번하게-액세스되는 순서로, 등.) 랜덤 액세스 메모리(304)에 정렬되고 그런다음 스테이징 영역(306)에 또는 다른 스토리지 영역 또는 호스트 디바이스에 기록된다. 일 실시예에서, 판독되고, 정렬되고 및 스테이징 영역(306)에 기록되는 데이터의 양은 청크”로 지칭되고 랜덤 액세스 메모리(304)의 사이즈와 동일하지만 다른 사이즈들이 사용될 수 있다(예를 들어, 랜덤 액세스 메모리(304)의 상이한 부분들은 상이한 용도들을 위하여 또는 상이한 “청크들”을 위하여 사용될 수 있다). 다른 실시예에서, 판독되고 정렬된 데이터는 대안적으로 판독 명령어에 응답하여 호스트 디바이스로 전송될 수 있거나 또는 다른 스토리지 영역(예를 들어, 플래시 메모리, 그래뉼 스토리지 영역(308) 또는 목적지 스토리지 영역(312))으로 전송될 수 있다.
스토리지 제어기(302)가 정렬된 데이터를 스테이징 영역(306)에 기록할 때, 스토리지 제어기(302)는 새롭게 정렬된 데이터의 복사본와 함께 선행의 판독 데이터에 대해 물리적 스토리지에 중복 기재하기보다는 통상적으로 정렬된 데이터를 스테이징 영역(306)의 새로운 위치에 기록한다. 일단 새로이 정렬된 데이터가 스테이징 영역(306)에(또는 다른 스토리지 영역에)기록되면, 선행 판독 데이터를 포함하는 물리적 스토리지는 스테일로서 표시될 수 있고 새로운 기록 데이터로의 사용을 위해 재생될 수 있다. 재생 동작은 “가비지 컬렉션”으로 지칭될 수 있고 및 다수의 정렬되고 비정렬된 동일 데이터의 버전들을 스테이징 영역(306) 또는 동시에 데이터 스토리지(310)의 다른 스토리지 영역들에 잔존시키는 것을 고려할 수 있다. 대안적인 일 실시예에서, 선행 판독 PBA들은 새롭게 정렬된 데이터의 복사본과 함께 중첩 기록될 수 있다. 스테이징 영역(306)(또는 다른 스토리지 영역들)에 레코드되는 데이터의 판독, 정렬 및 기록은 다수의 시간들에 반복될 수 있다(예를 들어, 특정한 데이터의 청크에 대한 로직상의 및 물리적 순서화 사이의 상관관계를 증가시키기 위해서)는 것이 또한 이해되어야 한다.
스토리지 제어기(302)에 의한 기록 동작들의 프로세싱은 새로운 기록 데이터를 수신하기 위해서 스테이징 영역내에 보다 많은 공간을 창설하는 것을 선호하는 순서로 수행될 수 있다는 것이 또한 이해되어야 한다. 예를 들어, 스테이징 영역에서 보다 많은 스테일 PBA들을 생성하거나 스테이징 영역에서 보다 많은 상대적으로 연접하는 스테일 PBA들을 생성하는 호스트 명령어들 또는 데이터 스토리지 시스템 동작들은 스테이징 영역내 PBA들을 소모하는 호스트 명령어들 또는 데이터 스토리지 시스템 동작들 전에 수행될 수 있다. 예를 들어, 데이터 블럭들을 삭제하는 호스트 명령어들은 새로운 데이터 기록 명령어들의 앞서서 우선순위화될 수 있다. 마찬가지로, 스테이징 영역으로부터 그래뉼 스토리지 영역 또는 목적지 스토리지 영역으로 데이터 블럭들을 전송하는 데이터 스토리지 시스템 동작들은 새로운 데이터 기록 명령어들의 앞서서 우선순위화될 수 있다. 이 방식에서, 데이터 스토리지 시스템은 스테이징 영역이 너무 차서 새로운 기록 데이터를 수용하지 못하는 것을 방지하거나 유사한 것을 줄일 수 있다.
도 4는 스테일 데이터가 스테일(stale)로서 식별되고 표시되는 예제 스테이징 영역(400)을 예시한다. 일 실시예에서, 스테일 데이터는 스테일 데이터를 저장하는 대응 PBA로 전환하는 LBA가 더 이상 없기 때문에 스테일로서 "표시"된다. 도 4는 예시적인 목적들을 위한 스테일 데이터 표시 모듈(406)을 도시한다. 그러나, 스테일 데이터 표시 모듈(406)은 통상적으로 LBA를 최신 데이터를 수용하는 PBA에 재매핑하고 스테일 PBA에 동일 LBA의 매핑을 삭제하는 동적 매핑 서브시스템의 기능적인 컴포넌트이다. 스테일 데이터 표시 모듈(406)의 다른 측면은 물리적 구획의 스테일 위치들의 번호를 레코드하는 카운터를 포함할 수 있다.
스테이징 영역(400)은 스토리지 제어기로부터 데이터 블럭들을 수신하고, 상대적으로 연접하는 방식으로 블럭들을 레코드한다. 도 4에서, 데이터는 기록 동작 1 로부터 기록 동작 10 까지 열개의 연속적 기록 동작들(402)로 스테이징 영역(400)에 기록된 것으로 도시된다. 기록 동작들(402)은 개별적인 데이터 블럭들(404)의(각각 대응하는 LBA로 도4에 표시된) 레코딩으로 귀결되는 개별 매체 액세스들을 지정한다. 예를 들어, 기록 동작 1 은 상대적으로 연접하는(예를 들어, 물리적으로 순차적인) 방식으로 LBA들(73, 21 및 94)와 관련된 데이터 블럭들을 스테이징 영역(400)에 기록하고 기록 동작 2 는 상대적으로 연접하는(예를 들어, 물리적으로 순차적인) 방식으로 LBA들(24 및 92)와 관련된 데이터 블럭들을 스테이징 영역(400)에 기록한다. 각각의 기록 동작에 반응하여, 스토리지 제어기는 각각의 데이터 블럭에 대하여 LBA-대-PBA 매핑을 레코드한다. 이 방식에서, 스토리지 제어기는 그것의 대응하는 LBA에 따라 그것의 PBA로부터 호스트 디바이스에 의해 요청된 데이터 블럭을 검색할 수 있다. 관련된 동적 매핑 정보는 스토리지 제어기-액세스 가능한 동적 매핑 테이블(미도시)에 저장될 수 있다.
기록 동작들 4 및 5 에 관해서 도시된 바와 같이, LBA(46)와 관련된 데이터 블럭은 기록 동작 4 에서 한번 및 기록 동작 5에서 다시 한번 두번 기록된다. 따라서, 기록 동작 4 에 기록된 데이터를 정렬하여 데이터 블럭은 보다 최신의 데이터 블럭이 기록 동작 5에 의해 기록될 때 이미 스테일이다. 더구나, 스토리지 제어기는 기록 동작 5와 관련된 LBA(46) 및 새로운 PBA 사이의 동적 매핑을 업데이트한다.
스테일 데이터 표시 모듈(406)은 LBA(46)의 새로운 기록을 감지하고 따라서 기록 동작 4 로부터의 데이터 블럭을 스테일로서 표시한다(예를 들어, LBA(46 )은 스테일 데이터 블럭을 정렬하여 PBA에 더이상 매핑하지 않는다). 기록 동작들 7 및 8 은 동일 LBA(17)를 기록할 때 또한 도시된다. 따라서, 스테일 데이터 표시 모듈(406)은 기록 동작 7 에 의해 기록된 LBA(17)에 대한 데이터 블럭을 스테일로 표시하고 및 기록 동작 8와 관련된 LBA(17) 및 새로운 PBA 사이의 동적 매핑을 업데이트한다.
스토리지 제어기가 스테이징 영역(400)으로부터 상대적으로 연접하는 데이터를 판독할 때, 스테일 데이터 블럭들은 무시되거나 그렇지 않으면 호스트 디바이스 또는 스토리지 매체에 후속 재기록 및 정렬을 위한 랜덤 액세스 메모리로 그것들의 전송을 배제하도록 관리한다. 물리적 데이터 블럭들이 스테일로서 표시될 때, 물리적 데이터 블럭들은 새롭게 정렬된 청크들을 위한 것을 포함하여 새로운 데이터 블럭들을 위해 재사용되고 재생될 수 있다.
스테이징 영역(400)에 도시된 기록 데이터의 전부 또는 기록 데이터의 하나이상의 부분들은 또한 랜덤 액세스 메모리에(도 4에 미도시) 유지될 수 있다는 것이 이해되어야 한다. 이와 같이, 호스트 디바이스로부터 가장 최근에 기록된 데이터의 복사본들은 랜덤 액세스 메모리 뿐만 아니라 스테이징 영역에 유지될 수 있다. 이 방식에서, 스토리지 제어기가 랜덤 액세스 메모리에 가장 최근에 기록된 데이터에 대한 액세스를 얻기 위한 순서로 스테이징 영역으로부터 판독하는 것이 불필요하다.
도 5는 스테이징 영역(502)에 정렬된 데이터의 예제 청크(500)의 생성을 예시한다. 일 실시예에서, 호스트 디바이스가 데이터 블럭들을 스토리지 제어기에 기록할 때, 스토리지 제어기는(505)에 도시된 바와 같이 랜덤 액세스 메모리(504)에 직접 데이터 블럭들을 기록하고, 그것은 랜덤 액세스 메모리에 정렬된 복사본을 또한 유지하면서 정렬될 수 있고 스테이징 영역(502)에 복사될 수 있다. 대안적인 일 실시예에서, 스토리지 제어기는(506)에 데이터 블럭들처럼 스테이징 영역(502)으로부터 랜덤 액세스 메모리(504)으로 데이터 블럭들의 비정렬된 시퀀스를 판독할 수 있다.
정렬 모듈(508)은 (510)에 데이터 블럭들로 도시된 LBA 순서에 따라 데이터를 정렬하지만 정렬 모듈(508)은 가장-빈번하게-액세스되는, 가장-최근에- 액세스되는, 등을 포함하는 다른 순서 선호도들에 따라 데이터 블럭들을 정렬할 수 있다는 것이 이해되어야 한다. 다양한 정렬 방법들이 랜덤 액세스 메모리(504)내의 데이터 블럭들을 정렬하기 위해 사용될 수 있다. 정렬된 데이터(“청크”)는 그런다음 스토리지 매체의 다른 매개 또는 목적지 스토리지 영역들에 또는 호스트 디바이스에, 스테이징 영역(502)내 다른 위치에 상대적으로 연접하는 방식으로 기록된다. 앞에서 논의된 바와 같이, 대안적인 일 실시예에서, 정렬된 청크는 선행 판독 데이터위에 재기록될 수 있지만, 도 5는 동일 스테이징 영역(502)의 개별 위치에 기록된 것으로 청크(500)을 도시한다.
스테이징 영역(502)에 새로운 청크(500)의 기록에 응답하여, 스토리지 제어기는 LBA들(21, 24, 73 및 94) 및 스테이징 영역(502)내 그것들의 새로운 PBA들 사이의 새로운 관계들을 반영하는 동적 매핑 정보를 업데이트한다. 추가하여, 스테일 데이터 표시 모듈은 스테일로서 동일 LBA들에 대하여 선행 데이터 블럭들을 저장시킨 이전 PBA들을 표시한다. 이 방식에서, 이런 PBA들은 새로운 기록 데이터를 위하여 재사용되도록 재생될 수 있다. 통상적으로, 각 시간 일련의 데이터 블럭들은 정렬되고 그리고 “청크되며,” LBA 순서화의 경우에, 후속하는 판독 동작들은 더 나은 LBA-대-PBA 매핑을 가지고 데이터를 액세스하기 때문에 이들 데이터 블럭들의 평균 액세스 레이턴시는 축소된다. 하나의 관점에서, 스테이징 영역에/으로부터 매체 액세스 당 다수의, 정렬된 데이터 블럭들의 전송은 더 큰 수의 데이터 블럭들에 걸쳐 상대적으로 연접하는 물리적 매체 액세스들 사이의 레이턴시들을 나누어 상환한다.
도 6은 스테이징 영역(604)에 대한 외부 사용을 위한 일련의 청크들(602)로부터의 서브셋의 데이터(600)의 예제 정렬을 예시한다. 스토리지 제어기는 스테이징 영역(604)으로부터 랜덤 액세스 메모리(606)으로(예를 들어, 전체 메모리(606) 또는 그것의 일부) 다수의 정렬된 셋의 데이터 블럭들(예를 들어, 다수의 판독 액세스들을 통한 다수의 청크들)을 판독한다. 주의: 데이터의 다수의 크기들은 다수의 크기들에 걸쳐 액세스들사이의 레이턴시들을 나누어 상환하도록 매체 액세스마다 판독할 수 있다.
정렬 모듈(608)은 랜덤 액세스 메모리(606)에 수신된 미리 정의된 순서따라(예를 들어, 도 6의 LBA 순서로) 판독 데이터 블럭들을 정렬한다. 각각의 정렬된 청크의 헤드로부터 판독하는 N-항(N-ary) 병합은 정렬과 같은 다양한 정렬 방법들이 랜덤 액세스 메모리(606)에 수신된 데이터 블럭들을 정렬하기 위해 사용될 수 있다.(610)에서 새롭게 정렬된 청크는 다른 스토리지에(예를 들어, 다른 매개 스토리지에, 예컨대 다른 스테이징 영역 또는 그래뉼 스토리지 영역, 또는 목적지 스토리지 영역) 또는 호스트 디바이스에 기록된다. 다른 스토리지에 새로운 청크(612)의 기록에 반응하여, 스토리지 제어기는 LBA들(1, 2, 11 및 16) 및 다른 스토리지내의 그것들의 새로운 PBA들 사이의 새로운 관계들을 반영하기 위해 동적 매핑 정보를 업데이트한다.(614)에서의 데이터 블럭들은 스테이징 영역(604)에 여전히 레코드된 비정렬된, 비-청크된 데이터 블럭들을 나타낸다.
추가하여, 일 실시예에서 스테일 데이터 표시 모듈은 스테일로서 동일 LBA들에 대하여 선행 데이터 블럭들을 저장시킨 이전 PBA들을 표시한다. 이 방식에서, 이런 PBA들은 새로운 기록 데이터를 위하여 재사용되도록 재생될 수 있다. 그러나, 대안적인 일 실시예에서, 다른 스토리지에 기록되는 데이터 블럭들에 대응하는 스테이징 영역(604)에 데이터 블럭들은 스테일로서 표시될 필요가 없다. 이런 구현예에서, 데이터 블럭들의 다수의 복사본들은 데이터 스토리지 시스템내 다수의 물리적 위치들에 (예를 들어, 스테이징 영역내, 플래시 메모리 캐시내, 랜덤 액세스 메모리내, 그래뉼 스토리지 영역내, 목적지 스토리지 영역내) 기록될 수 있고 스토리지 제어기는 호스트-요청된 데이터 블럭들의 셋을 액세스를 위한 판독 또는 기록 동작들 무엇이든간에 최저 레이턴시를 보여주는 물리적 위치를 결정할 수 있다. 데이터 블럭들의 동적 매핑은 데이터 블럭들을 위한 소정의 판독 또는 기록 명령어에 대한 평균 액세스 레이턴시를 줄이기 위해 각각의 물리적 위치에서의 액세스와 관련하여 예상된 레이턴시와 조합하여 동일 데이터 블럭들에 대하여 다수의 물리적 위치들을 관리할 수 있다.
일 실시예에서, 데이터는 디스크 스케줄링 로직의 적용에 의해 스테이징 영역(604)로부터 판독된다. 예를 들어, 판독 요청들은 검색 시간들, 레이턴시 시간들, 등에 기반된 실행을 위해 스케줄되고 큐 업된다. 일부 실시예들에서, 디스크 스케줄링 로직은 또한 기록 동작들, 예컨대 그래뉼 스토리지 영역 또는 목적지 스토리지 영역에 기록을 위해 사용될 수 있다.
도 7은 스테이징 영역으로 데이터 블럭들을 청크하기 위한 예제 동작들(700)을 예시한다. 수신 동작(702)은 호스트 디바이스 또는 다른 스토리지로부터 랜덤 액세스 메모리로 로직-블럭-어드레스된 데이터 블럭들을 수신한다. 정렬 동작(704)은 미리 정의된 순서로 수신된 데이터 블럭들을 정렬한다. 예제 순서화는 LBA-순서, 가장-빈번하게-액세스되는 순서, 가장-최근에-액세스되는 순서, 등을 제한없이 포함할 수 있다.
기록 동작(706)은 일련의 정렬된 데이터 블럭들(예를 들어, 정렬된 청크들로 지칭된다)로 정렬된 데이터 블럭들을 스테이징 영역에 기록한다. 동적 매핑 동작(708)은 데이터 블럭들의 LBA들을 데이터 스토리지의 스테이징 영역에 대응하는 PBA들에 동적으로 매핑한다.
도 8은 스테이징 영역으로부터 다른 매개 스토리지로 데이터 블럭들을 재정렬하기 위한 예제 동작들(800)을 예시한다. 판독 동작(802)은 데이터 스토리지의 스테이징 영역에 정렬된 데이터 블럭들의 상이한 셋들로부터(예를 들어, 청크들) 상대적으로 연접하는 셋의 데이터 블럭들을 판독한다. 전송 동작(804)은 판독 데이터 블럭들을 랜덤 액세스 메모리로 전송한다. 정렬 동작(804)은 미리 정의된 순서로 전송된 데이터 블럭들을 정렬한다. 예제 순서화는 LBA-순서, 가장-빈번하게-액세스되는 순서, 가장-최근에-액세스되는 순서, 등을 제한없이 포함할 수 있다.
기록 동작(808)은 다른 매개 스토리지 영역에, 목적지 스토리지 영역에, 또는 호스트 디바이스에 정렬된 데이터 블럭들을 기록한다. 예를 들어, 정렬된 데이터 블럭들은 그래뉼 스토리지 영역에 또는 청크들로 상이한 스테이징 영역들에 기록될 수 있다. 다른 예에서, 정렬된 데이터 블럭들은 보다 롱 텀 스토리지를 위한 데이터 스토리지의 목적지 스토리지 영역에 기록될 수 있다. 또 다른 예에서, 정렬된 데이터 블럭들은 판독 명령어에 응답하여 호스트 디바이스에 전송될 수 있다. 만약 데이터 블럭들이 데이터 스토리지에 재기록된다면, 동적 재매핑 동작(810)은 데이터 블럭들의 LBA들을 데이터 스토리지의 스테이징 영역에 새로이 대응하는 물리적 블럭 어드레스들에 동적으로 재매핑한다. 표시 동작(812)은 데이터 블럭들이 판독 동작(802)에서 스테일로 판독되는 PBA들을 표시한다. 재생 동작(814)은 예를 들어, 다른 데이터 블럭들을 레코딩하기 위해 스테이징 영역에 스테일 PBA들을 재사용함으로써 스테이징 영역의 스테일 PBA들을 재생한다. 예를 들어, 만약 데이터 블럭들이 목적지 스토리지 영역으로 이동된다면, 이런 데이터 블럭들을 정렬하는 것에 앞선 스테이징 영역의 PBA들은 스테일로서 표시될 수 있고 새로운 데이터 블럭들을 가진 사용을 위해 재생될 수 있다. 그러나, 오버프로비저닝 상황하에서, 스토리지 제어기는 스토리지 영역에, 다른 매개 스토리지 영역들에 및 /또는 목적지 스토리지 영역에 동일 데이터 블럭들의 복사본들을 유지할 수 있다. 이 방식에서, 스토리지 제어기는 최저 평균 액세스 레이턴시 제공하는 스토리지로부터 요청된 데이터 블럭들을 판독할 수 있다. 동적 매핑은 각각의 LBA-대-PBA 관계를 위한 매핑들을 유지하고 각각의 관계에 대한 최저 평균 액세스 레이턴시의 결정을 보조하는 정보를 어떤 판독 명령어에 제공할 수 있다.
도 9는 정렬된 데이터 블럭들이 개별 그래뉼들(902, 903 및 904)에 레코드되는 예제 그래뉼 스토리지 영역(900)을 예시한다.(그래뉼 스토리지 영역(900')은 그래뉼 스토리지 영역(900)으로의 새로운 데이터 블럭들의 기록에 선행하는 그래뉼 스토리지 영역(900)의 상태를 나타낸다. A-B-C 및 0 내지 15는 그래뉼 스토리지 영역(900)/(900')내의 개별 데이터 블럭들의 좌표들을 나타낸다). 예제 그래뉼 스토리지 영역(900)은 또한 그래뉼들(903, 906, 908, 910 및 912)을 포함하거나, 매핑된 데이터를 포함하거나 포함하지 않거나 하는 것으로 도시되지 않은 다른 그래뉼들을 포함한다. 각각의 그래뉼은 굵은 외곽선에 의해 지정되고 어떤 서브셋의 LBA들에 (예를 들어, 특정 LBA 범위, 가장-최근에-액세스되는 LBA 범위, 가장-빈번하게-액세스되는 LBA 범위) 동적으로 제약된 데이터 블럭들을 포함한다. 제약은 동적으로 정의될 수 있고 그래뉼 스토리지 영역에 기록되는 기록 데이터를 저장하기 위해 적절한 데이터 스토리지 시스템에 의해 각각의 그래뉼에 대해 시간이 흐르면서 재정의될 수 있다. 추가하여, 그래뉼 또는 그래뉼의 임의 부분은 만약 그것이 즉각적으로 불안정하게되거나, 삭제되거나 또는 임의의 다른 의도되지않은 데이터를 그래뉼에, 다른 그래뉼, 또는 임의의 다른 레코드되는 데이터 영역에 중복기재하지 않으면 개별적으로 기록될 수 있다. 그래뉼들에 데이터 블럭들의 LBA-대-PBA 관계들은 그래뉼 스토리지 영역(900)에 데이터 블럭들의 재편성을 허용하기 위해 동적으로 매핑된다.
일 실시예에서, 각각의 그래뉼은 고정된 사이즈를 가질 수 있지만, 상이한 그래뉼들은 상이한 사이즈들을 가질 수 있다. 이런 식으로, 데이터 블럭들의 개별 보다 적은 그래뉼들은 그래뉼 스토리지 영역내에 더 큰 그래뉼들로 정렬되고 재기록될 수 있다. 그래뉼들의 셋들은 또한 그래뉼들의 셋이 동일 LBA 서브셋을 충족시키는 데이터 블럭들을 포함할 수 있도록 “부가되거나” 또는 집합될 수 있다. 예를 들어, 다수의 그래뉼들은 동일 LBA 범위로부터 데이터 블럭들을 저장하도록 각각 구성될 수 있다. 어떤 미래의 시점에서, 이들 다수의 그래뉼들의 데이터 블럭들은 다른 그래뉼들내에(통상적으로 증가된 데이터 편성을 제공하기 위해서 하나 이상의 더 큰 그래뉼들) 정렬되고/정렬되거나 압축될 수 있다. 그래뉼 스토리지 영역(900)은 비-슁글드 자기 레코딩 영역으로 도시되었지만 그래뉼 스토리지는 슁글드 자기 레코딩 영역(예를 들어, 도면들 11 및 12을 보면)에 저장될 수 있다.
그래뉼 스토리지 모듈(914)은 직접 호스트 디바이스로부터, 스테이징 영역(미도시)으로부터, 랜덤 액세스 메모리(916) 등으로부터를 포함하는 다양한 소스들로부터 기록 데이터 블럭들을 수신할 수 있다. 이런 데이터 블럭들은 또한 그래뉼 스토리지 영역(900')로부터 상이한 그래뉼들의 셋에서 판독될 수 있고 그런다음 그래뉼 스토리지 영역(900)에 새로운 그래뉼들의 셋으로 기록될 수 있다.
일 예에서, 일련의 데이터 블럭들(918)은 랜덤 액세스 메모리(916)내에 수신되고, 그래뉼 정렬 모듈(920)에 의해 정렬되고 그래뉼 스토리지 영역(900)의 하나 이상의 개별적 그래뉼들으로 전송된다. 데이터 블럭들(918)은 랜덤 액세스 메모리(916)내에서 정렬될 수 있거나 또는 랜덤 액세스 메모리로부터 또는 랜덤 액세스 메모리에 전송될 때 정렬될 수 있다(예를 들어, 분산-수렴 DMA 기술들을 이용하여)는 것이 이해되어야 한다.
그래뉼(902)에 도시된, 데이터 블럭들은 개별 그래뉼내에 완전하게 정렬될 필요가 없으나, 그러나 그것들은 소정의 매체 액세스(예를 들어, 기록 동작)에서 정렬된 방식으로 기록된다. 다른 데이터 블럭들은 그래뉼(902)의 LBA(40)(즉, PBA A4 에) 및 그래뉼(904)의 LBA들(50, 55 및 56)(즉, B10, B11 및 B12)에 관해 도시된 바와 같이 그래뉼내의 빈 PBA들에 기록되고 정렬될 수 있다.
도 10은 정렬된 데이터 블럭들이 개별적인 그래뉼들(1008 및 1012)로 압축되는 예제 그래뉼 스토리지 영역(1000)을 예시한다.(그래뉼 스토리지 영역(1000')은 그래뉼 스토리지 영역(1000)으로의 새로운 데이터 블럭들의 기록에 선행하는 그래뉼 스토리지 영역(1000)의 상태를 나타낸다. A-B-C 및 0 내지 15는 그래뉼 스토리지 영역(1000)내의 개별 데이터 블럭들의 좌표들을 나타낸다). 예제 그래뉼 스토리지 영역(1000)은 또한 그래뉼들(1002, 1003, 1004, 1006 및 1010)을 포함하거나, 매핑된 데이터를 포함하거나 포함하지 않거나 하는 것으로 도시되지 않은 다른 그래뉼들을 포함한다. 각각의 그래뉼은 굵은 외곽선에 의해 지정되고 어떤 서브셋의 LBA들에 (예를 들어, 특정 LBA 범위, 가장-최근에-액세스되는 LBA 범위, 가장-빈번하게-액세스되는 LBA 범위) 제약된 데이터 블럭들을 포함한다. 추가하여, 그래뉼 또는 그래뉼의 임의 부분은 만약 그것이 즉각적으로 불안정하게되거나, 삭제되거나 또는 임의의 다른 의도되지않은 데이터를 그래뉼에, 다른 그래뉼에, 또는 임의의 다른 레코드되는 데이터 영역에 중복기재하지 않으면 개별적으로 기록될 수 있다. 그래뉼들에 데이터 블럭들의 LBA-대-PBA 관계들은 그래뉼 스토리지 영역(1000)에 데이터 블럭들의 재편성을 허용하기 위해 동적으로 매핑된다.
그래뉼 스토리지 모듈(1014)은 그래뉼 스토리지 영역(1000')의 그래뉼들로부터 랜덤 액세스 메모리(1016)으로 데이터 블럭들을 판독하고, 그래뉼 정렬 모듈(1020)을 통하여 그것들을 정렬하고 그래뉼 스토리지 영역(1000)/(1000)'의 새로운 그래뉼들 또는 그래뉼들의 셋들(이 경우에서 그래뉼들(1008) 및(1012))에 그것들을 기록한다. 결과적으로, 그래뉼들(1008 및 1012)는 각각의 그래뉼의 순차적 PBA에 상향으로 LBA-순서화된 데이터 블럭들을 포함한다. 더구나, 그래뉼들(1002, 1003, 1010, 1006 및 1004)의 스토리지 스페이스는 그래뉼 스토리지 영역(1000)으로의 새로운 기록 데이터에 의한 사용을 위해 비워진채로 있다. 이 방식에서, 그래뉼 스토리지 영역(1000)의 데이터 블럭들은 압축되고 상향으로 편성된것으로 간주된다(예를 들어, LBA-대-PBA 순서화로 동적으로 매핑된)는 것이 이해되어야 한다. 데이터는 상이한 그래뉼, 그래뉼들의 서브셋, 또는 그래뉼들의 셋에 압축되고/기록되기 보다는 동일 그래뉼에 다시 재기록되어 제 위치에서 압축될 수 있다.
도 11은 정렬된 데이터 블럭들이 개별적인 그래뉼들(1102 및 1104)에 레코드되는 슁글드 자기 레코딩의 밴드(1108)에서의 예제 그래뉼 스토리지 영역(1100)을 예시한다.(그래뉼 스토리지 영역(1100')은 그래뉼 스토리지 영역(1100)으로의 새로운 데이터 블럭들의 기록에 선행하는 그래뉼 스토리지 영역(1100)의 상태를 나타낸다. A-B-C 및 0 내지 15는 그래뉼 스토리지 영역(1100)/(1100')내의 개별 데이터 블럭들의 좌표들을 나타낸다). 예제 그래뉼 스토리지 영역(1100)은 또한 매핑된 데이터를 포함하지 않는 것으로 도시된 동일 슁글드 자기 레코딩 밴드내의 다른 그래뉼(1106)을 포함한다. 각각의 그래뉼은 굵은 외곽선에 의해 지정되고 어떤 서브셋의 LBA들에 (예를 들어, 특정 LBA 범위, 가장-최근에-액세스되는 LBA 범위, 가장-빈번하게-액세스되는 LBA 범위) 제약된 데이터 블럭들을 포함한다. 제약은 동적으로 정의될 수 있고 그래뉼 스토리지 영역에 기록되는 기록 데이터를 저장하기 위해 적절한 데이터 스토리지 시스템에 의해 각각의 그래뉼에 대해 시간이 흐르면서 재정의될 수 있다. 추가하여, 그래뉼 또는 그래뉼의 임의 부분은 만약 그것이 즉각적으로 불안정하게되거나, 삭제되거나 또는 임의의 다른 의도되지않은 데이터를 그래뉼에, 다른 그래뉼에, 또는 임의의 다른 레코드되는 데이터 영역에 중복기재하지 않으면 개별적으로 기록될 수 있다. 그래뉼들에 데이터 블럭들의 LBA-대-PBA 관계들은 그래뉼 스토리지 영역(1100)에 데이터 블럭들의 재편성을 허용하기 위해 동적으로 매핑된다.
일 실시예에서, 각각의 그래뉼은 고정된 사이즈를 가질 수 있지만, 상이한 그래뉼들은 상이한 사이즈들을 가질 수 있다. 이런 식으로, 데이터 블럭들의 개별적으로 보다 적은 그래뉼들은 그래뉼 스토리지 영역내에 더 큰 그래뉼들로 정렬되고 재기록될 수 있다. 더욱이, 도 11 에 도시된 바와 같이, 단일 밴드(1108)는 하나 초과의 그래뉼을 포함할 수 있다. 그래뉼들의 셋들은 또한 그래뉼들의 셋이 동일 LBA 서브셋 제약을 충족시키는 데이터 블럭들을 포함할 수 있도록 “부가되거나” 또는 집합될 수 있다. 예를 들어, 다수의 그래뉼들은 동일 LBA 범위로부터 데이터 블럭들을 저장하도록 각각 구성될 수 있다. 어떤 미래의 시점에, 이들 다수의 그래뉼들의 데이터 블럭들은 다른 그래뉼들내에(통상적으로 증가된 데이터 편성을 제공하기 위해서 하나 이상의 더 큰 그래뉼들) 정렬되고/정렬되거나 압축될 수 있다.
그래뉼 스토리지 모듈(1114)은 직접 호스트 디바이스로부터, 스테이징 영역(미도시)으로부터, 랜덤 액세스 메모리(1116) 등으로부터를 포함하는 다양한 소스들로부터 기록 데이터 블럭들을 수신할 수 있다. 이런 데이터 블럭들은 또한 그래뉼 스토리지 영역(1100')로부터 그래뉼들의 상이한 셋에서 판독될 수 있고 그런다음 그래뉼 스토리지 영역(1100)에 그래뉼들의 새로운 셋으로 기록될 수 있다.
일 예에서, 일련의 데이터 블럭들(1118)은 랜덤 액세스 메모리(1116)내에 수신되고, 그래뉼 정렬 모듈(1120)에 의해 정렬되고 그래뉼 스토리지 영역(1100)의 하나 이상의 개별적 그래뉼들로 전송된다. 데이터 블럭들(1118)은 랜덤 액세스 메모리(1116)내에서 정렬될 수 있거나 또는 랜덤 액세스 메모리로부터 또는 랜덤 액세스 메모리에 전송될 때 정렬될 수 있다(예를 들어, 분산-수렴 DMA 기술들을 이용하여)는 것이 이해되어야 한다.
그래뉼(1102)에 도시된, 데이터 블럭들은 개별 그래뉼내에 완전하게 정렬될 필요가 없으나, 그러나 그것들은 소정의 매체 액세스(예를 들어, 기록 동작)에서 정렬된 방식으로 기록된다. 다른 데이터 블럭들은 그래뉼(1102)의 LBA(40)(즉, PBA A1 에) 및 그래뉼(1104)의 LBA들(50, 55 및 56)(즉, PBA들 B8, B9 및 A7)에 관해 도시된 바와 같이 그래뉼내의 빈 PBA들에 기록되고 정렬될 수 있다.
도 12는 정렬된 데이터 블럭들이 슁글드 개별 그래뉼들(1206)로 정렬되는 슁글드 자기 레코딩의 밴드(1208)의 예제 그래뉼 스토리지 영역(1200)을 예시한다.(그래뉼 스토리지 영역(1200')은 그래뉼 스토리지 영역(1200)으로 새로운 데이터 블럭들의 기록에 선행하는 그래뉼 스토리지 영역(1200)의 상태를 나타낸다. A-B-C 및 0 내지 15는 그래뉼 스토리지 영역(1200)/(1200')내의 개별 데이터 블럭들의 좌표들을 나타낸다). 예제 그래뉼 스토리지 영역(1200)은 또한 그래뉼들(1202 및 1206)을 포함하거나, 매핑된 데이터를 포함하거나 포함하지 않거나 하는 것으로 도시되지 않은 다른 그래뉼들을 포함한다. 각각의 그래뉼은 굵은 외곽선에 의해 지정되고 어떤 서브셋의 LBA들에 (예를 들어, 특정 LBA 범위, 가장-최근에-액세스되는 LBA 범위, 가장-빈번하게-액세스되는 LBA 범위) 제약된 데이터 블럭들을 포함한다. 추가하여, 그래뉼 또는 그래뉼의 임의 부분은 만약 그것이 즉각적으로 불안정하게되거나, 삭제되거나 또는 임의의 다른 의도되지않은 데이터를 그래뉼에, 다른 그래뉼에, 또는 임의의 다른 레코드되는 데이터 영역에 중복기재하지 않으면 개별적으로 기록될 수 있다. 그래뉼들에 데이터 블럭들의 LBA-대-PBA 관계들은 그래뉼 스토리지 영역(1200)에 데이터 블럭들의 재편성을 허용하기 위해 동적으로 매핑된다.
그래뉼 스토리지 모듈(1214)은 그래뉼 스토리지 영역(1200')의 그래뉼로부터 랜덤 액세스 메모리(1216)으로 데이터 블럭들을 판독하고, 그래뉼 정렬 모듈(1220)을 통하여 그것들을 정렬하고 그래뉼 스토리지 영역(1200)의 새로운 그래뉼들 또는 그래뉼들의 셋들(이 경우에서 그래뉼들(1206))에 그것들을 기록한다. 결과적으로, 그래뉼(1206)은 각각의 그래뉼의 순차적인 PBA들에 또는 각각의 그래뉼의 순차적 PBA들 근처에(예를 들어, 예컨대 그래뉼의 결함 PBA들의 존재하에) 상향의 LBA-순서화된 데이터 블럭들을 포함한다. 더구나, 그래뉼들(1204)의 스토리지 스페이스는 그래뉼 스토리지 영역(1200)에 새로운 기록 데이터에 의한 사용을 위해 비워진채로 있다. 이 방식에서, 그래뉼 스토리지 영역(1200)의 데이터 블럭들은 압축되고 상향으로 편성된것으로 간주된다(예를 들어, LBA-대-PBA 순서화로 동적으로 매핑된).
후속 동작에서, 그래뉼 스토리지 모듈(1214)은 그래뉼들(1202) 및(1204)내에 적절한 LBA-관련된 제약을 만족시키는 다른 데이터 블럭들을 기록할 수 있다. 예를 들어, 동적 매핑을 통하여, 그래뉼(1204)에 대한 제약, 이것은 LBA들(50-59)들의 데이터 블럭들을 저장하기에 앞서서(40-49)로부터의 LBA들을 저장하기 위해 변화될 수 있다. 따라서, 그래뉼 스토리지 모듈(1214)은 그래뉼(1204)으로 LBA 40-49 범위의 새로운 셋의 데이터 블럭들을 기록할 수 있다. 그래뉼(1204)을 그래뉼(1202)와 같은 LBA기반의 제약에 부가함으로써, 그래뉼들의 셋(1202 및 1204)은 데이터 블럭들의 동일 LBA 그룹화를 지원할 수 있다. 즉, LBA(40-49)의 비-스테일 데이터 블럭들은 그래뉼들(1202 및 1204) 둘 모두를 포괄할 수 있다.
도 10에 관해서 설명된 유사한 동작은 그래뉼 스토리지 영역(1200)내의 데이터 블럭 압축을 또한 제공할 수 있다. 추가하여, 동적 매핑은 압축 알고리즘을 그래뉼 스토리지 영역(1200)의 데이터에 적용되는 것을 허용할 수 있고, 그래뉼내에 데이터를 저장하기 위해 LBA들보다 더 적을 PBA들을 필요로 하는 옵션을 산출한다.
더욱이, 스테이징 영역와 함께 할때, 일부 코드 워드들 및/또는 증분의 코드워드들 은 데이터 블럭들이 부분적으로 채워진 그래뉼들에 기록될 때 채용될 수 있다. 이 방식에서 데이터 블럭들이 데이터 스토리지에 기록될 때, 에러 정정 코드(ECC)의 추가 단편이 또한 그래뉼 스토리지 영역(1200)에 기록된다. 새로운 데이터 블럭들 및 새로운 에러 코드의 조합은 “코드워드”로 지칭된다. 그래뉼 스토리지 영역(1200)에 기록될 때, 변수는 데이터의 양이다(예를 들어, 데이터 블럭들의 가변적 수). 추가 ECC를 유지하기 위해서, 코드워드 사이즈는 가변할 수 있거나 또는 추가의 ECC 는 증분의 방식으로 압축되고 고정된 경계들에 기록된다(예를 들어, 가변적, 워드 사이즈들보다는 고정된 적절한 위치들에).
도 13은 데이터 스토리지 시스템에 랜덤 액세스 메모리(1300), 스테이징 영역(1302), 그래뉼 스토리지 영역(1304) 및 목적지 스토리지 영역(1306)를 포함하는 스토리지의 예제 레벨들을 예시한다. 데이터 블럭들은 스테이징 영역(1302)에 개별적으로-정렬된 셋트들(“청크들”)에 기록된다. 이들 데이터 블럭들은 랜덤 액세스 메모리(1300)로부터 스테이징 영역(1302)에 기록된다. 일 실시예에서, 미리 정렬되지 않은 데이터 블럭들은 소정의 정렬 순서에 따라(예를 들어, 도 13 에 도시된 경우에서의 LBA 순서) 정렬된다. 다른 구현예들에서, 데이터 블럭들은 랜덤 액세스 메모리(1300)로부터 또는 랜덤 액세스 프로세스에 전송동안에 정렬된다(예를 들어, 분산-수렴 DMA 프로세스를 통하여).
스테이징 영역이 개별적으로-정렬된 데이터의 셋들로 채워질때, 데이터 스토리지 시스템은 새로운 기록 데이터를 위해 이용 가능한 스페이스를 만드는 프로세스들을 수행한다. 일부 경우들에서, 스테이징 영역(1302)의 데이터 블럭들은 동일 LBA에 해당하는 새로운 데이터가 스테이징 영역(1302)에 기록될 때 스테일이 될 수 있다. 따라서, 데이터 스토리지 시스템은 스테일 데이터를 저장하는 PBA들로부터 스토리지 스페이스를 재생하기 위해 압축 또는 가비지 컬렉션을 수행할 수 있다. 다른 경우들에서, 스테이징 영역(1302)의 데이터 블럭들은 랜덤 액세스 메모리(1300)으로 판독될 수 있고 그래뉼 스토리지 영역(1304)내로의 스토리지를 위해서 정렬 모듈(1308)에 의해 정렬된다.
도 13 에 도시된 그래뉼 스토리지 영역(1304)은 세개의 그래뉼들(1312, 1314 및 1316)을 포함하는 슁글드 자기 레코딩의 밴드(1310)의 형태로 있다. A-B-C 및 0 내지 15는 그래뉼 스토리지 영역(1300)내의 개별 데이터 블럭들의 좌표들을 나타낸다). 일 구현예에서, 스테이징 영역(1302)의 데이터 블럭들은 랜덤 액세스 메모리(1300)으로 판독되고, 정렬 모듈(1308)에 의해 정렬되고 그리고 각각의 그래뉼의 동적으로 매핑된 제약들에 따라 그래뉼들에 기록된다. 예를 들어, 도 13 에서, 그래뉼(1312)은 LBA들(40-49)에 할당되고, 그래뉼(1314)은 LBA들(50-59)에 할당되고 및 그래뉼(1316)은 LBA들(60-69)에 할당된다.
도 13 에 도시된 동적으로 매핑된 제약들은 단지 예들인 것이 이해되어야 한다. 추가하여, 개별적인 그래뉼들은 동일 제약내의 두개의 그래뉼들(효율적으로 성장하는 그래뉼)을 부가하기 위해서 동일 제약들을 가지고 동적으로 매핑될 수 있다. 예를 들어, 그래뉼들(1312 및 1314)의 LBA 제약들은 LBA들(30-61)을 포함하는 일련의 그래뉼들을 형성하기 위해서 동적으로 매핑될 수 있다. 따라서, LBA(60)는 PBA A9에 기록될 수 있고 LBA(61)는 PBA A2에 기록될 수 있다. 이와 같이, 그래뉼의 LBA 컨텐츠가 변할 수 있을 뿐만 아니라 압축 및 오버프로비저닝을 보조하는 정렬된 그래뉼들의 셋을 형성하기 위해 다수의 그래뉼들이 종합될 수 있다. 일부 실시예들에서, 데이터 블럭들은 그래뉼 스토리지 영역(1304)에 먼저 저장됨이 없이랜덤 액세스 메모리(1300)를 통하여 스테이징 영역(1302)으로부터 목적지 스토리지 영역(1306)에 기록될 수 있다.
도 13 에서, 스테이징 영역(1302)의 데이터 블럭들은 그것들이 그래뉼 스토리지 영역(1304)에 기록된 후에(예를 들어, 데이터 스토리지 시스템의 동적 매핑은 로직-블럭-어드레스된 데이터 블럭들을 스테이징 영역(1302)의 PBA들에 더 이상 매핑하지 않는다) 스테일로서 표시될 수 있고 스테이징 영역(1302)의 PBA들은 따라서 새로운 기록 데이터를 위해 사용될 수 있다. 추가하여, 목적지 스토리지 영역(1306)은 그것에 기록된 임의의 데이터 블럭들을 현재는 가지지 않을 수 있다. 또한 랜덤 액세스 메모리(1300)는 동일 데이터 블럭들이 스테이징 영역(1302), 그래뉼 스토리지 영역(1304), 또는 목적지 스토리지 영역(1306)에 기록되었을 지라도 호스트 디바이스에 의한 액세스를 위해서 하나 이상의 데이터 블럭들을 유지할 수 있다는 것에 유의한다. 데이터 블럭들의 잉여 복사본들을 유지하는 이 능력은 LBA들을 PBA들에 동적으로 매핑하는 능력에 의해 허용되고 데이터 스토리지 시스템으로 하여금 호스트 디바이스에 요청된 임의의 판독 데이터를 위해 그것에 이용 가능한 최저 레이턴시 액세스 옵션을 결정하는 것을 허용한다.(예를 들어, 동적 매핑은 데이터 스토리지 시스템으로 하여금 스토리지 매체로부터 또는 랜덤 액세스 메모리로부터 요청된 데이터를 판독할지 여부를 결정하는 것을 허용한다.)
도 14는 액세스 메모리(1400), 스테이징 영역(1402), 그래뉼 스토리지 영역(1404) 및 목적지 스토리지 영역(1406)를 포함하는 스토리지의 다른 예제 레벨들을 예시한다. 스테이징 영역(1402)은 새로운 개별적으로-정렬된 청크들을 포함한다. 그래뉼 스토리지 영역(1404)은 새로운 기록 데이터를 위해 재사용되고 재생될 수 있는 스테일 데이터 블럭들을 갖는 그래뉼들(1412 및 1414) 및 스테일 데이터 블럭들이 목적지 스토리지 영역(1406)에 기록되는 동안에, 스테일이 아닌 데이터를 포함하는 그래뉼(1416)을 포함한다. 따라서, 그래뉼(1416)은 스토리지 제어기에 의해 판독될 수 있는 라이브 데이터의 추가 복사본을 수용할 수 있다. 이런 데이터 복사본들은 시간 기간(예를 들어, 그래뉼들이 압축될 때까지)동안 유지될 수 있다.
목적지 스토리지 영역(1406)은 비-슁글드 포맷(도시된 바와 같이) 또는 슁글드 포맷으로 있을 수 있다. 그래뉼 스토리지 영역(1404)로부터 정렬된 데이터 블럭들은 액세스에 상대적으로 낮은 평균 레이턴시를 제공하도록 구성된 상향으로 순서화된 구성으로 랜덤 액세스 메모리를 통하여 목적지 스토리지 영역(1406)에 기록된다.
도 15는 데이터 블럭들을 그래뉼 스토리지 영역으로 저장하기 위한 예제 동작들(1500)을 예시한다. 도 15의 동작들(1500)은 랜덤 액세스 메모리를 통하여 스테이징 영역으로부터 그래뉼 스토리지 영역으로의 기록 동작을 도시한다. 그럼에도 불구하고, 데이터 블럭들은 또한 스테이징 영역의 매개 스토리지 없이 호스트 디바이스로부터 랜덤 액세스 메모리를 통하여 그래뉼 스토리지에 기록될 수 있다는 것이 이해되어야 한다.
판독 동작(1502)은 스테이징 영역의 개별 정렬된 청크들로부터 데이터 블럭들을 판독한다. 전송 동작(1504)은 판독 데이터 블럭들을 랜덤 액세스 메모리로 전송한다. 정렬 동작(1506)은 동적으로 정의된 그래뉼 제약들에 따라 전송된 데이터를 정렬한다. 기록 동작(1508)은 정의된 그래뉼 제약들에 따라 그래뉼 스토리지 영역(1508)의 하나 이상의 그래뉼들에 정렬된 데이터 블럭들을 기록한다.
매핑 동작(1510)은 데이터 블럭들의 LBA들을 그래뉼 스토리지 영역(1508)에하나 이상의 그래뉼들의 기록된 PBA들에 동적으로 재매핑한다. 표시 동작(1512)은 스테이징 영역에 기록된 데이터를 저장하기에 앞서 PBA들을 스테일로 표시한다. 주의: 매핑 동작(1510) 및 표시 동작(1512)은 본질적으로 이전 PBA들을 스테일로 표시하는 LBA들 재매핑하는 것을 동일 동작으로 통합될 수 있다. 재생 동작(1514)은 새로운 기록 데이터을 가진 사용을 위해 스테이징 영역내 스테일 PBA들을 재생한다.
도 16은 데이터 블럭들을 목적지 스토리지 영역으로 저장하기 위한 예제 동작들(1600)을 예시한다. 판독 동작(1602)은 그래뉼 스토리지 영역에 개별 정렬된 그래뉼 셋들로부터 데이터 블럭들을 판독한다. 전송 동작(1604)은 판독 데이터 블럭들을 랜덤 액세스 메모리로 전송한다. 정렬 동작(1606)은 정의된 순서화에 따라 전송된 데이터를 정렬한다. 기록 동작(1608)은 상대적으로 정적인 LBA-대-PBA 매핑들에 따라 정렬된 데이터 블럭들을 목적지 스토리지 영역에 기록한다. 큰 이산 영역들(예를 들어, 256MB)을 위한 LBA-대-PBA 매핑들은 시간이 흐르면서(예를 들어, 단편화해제 동안에, 손상된 PBA들이 감지될 때, 등) 또한 변할 수 있다는 것에 유의하여야 한다.
목적지 스토리지 영역에 기록된 데이터 블럭들은 데이터의 추가 라이브 복사본들로 랜덤 액세스 메모리 또는 그래뉼 스토리지 영역에 유지될 수 있다. 대안적으로, 상응하는 그래뉼들 및/또는 랜덤 액세스 메모리는 새로운 기록 데이터를 위해 재사용될 수 있다.
본 출원에서 설명된 기술의 실시예들은 하나 이상의 컴퓨터 시스템들의 로직상의 단계들로 구현된다. 본 기술의 로직상의 동작들은(1) 하나 이상의 컴퓨터 시스템들에서 실행하는 일련의 프로세서-구현되는 단계들로 (2) 하나 이상의 컴퓨터 시스템들내의 상호연결된 기계 또는 회로 모듈들로 구현된다. 실시예는 컴퓨터 시스템 구현 기술의 성능 요건들에 의존하는 선택의 문제이다. 따라서, 본 출원에서 설명된 본 기술의 실시예들을 구성하는 로직상 동작들은 동작들, 단계들, 오브젝트들, 또는 모듈들로서 다양하게 언급된다. 더욱이, 만약 명백하게 다른 식으로 청구되거나 또는 특정 순서가 청구 언어에 의해 본질적으로 필요로 되지 않는다면 로직상 동작들은 임의의 순서로 수행될 수 있다는 것이 이해되어야 한다.
데이터 스토리지 및/또는 메모리는 다수의 스토리지 디바이스들, 광 매체, 고체-상태 드라이브 기술, ROM, RAM 및 다른 기술을 포함하는 스토리지 어레이, 하드 디스크 매체와 같은 다양한 유형들의 스토리지에 의해 구체화될 수 있다. 동작들은 마이크로프로세서, 마이크로프로세서 코어, 마이크로컨트롤러, 특정 용도 회로부, 또는 다른 프로세싱 기술들에 의해 보조되거나 또는 실행되든지 아니든지 간에 펌웨어, 소프트웨어, 하드-유선 회로부, 게이트 어레이 기술 및 다른 기술들로 구현될 수 있다는 것이 이해되어야 한다. 데이터 스토리지 시스템의 기록 제어기, 스토리지 제어기, 데이터 기록 회로부, 데이터 판독 및 복원 회로부, 스테일 데이터 표시 모듈, 정렬 모듈 및 다른 기능적인 모듈들은 시스템-구현되는 프로세스를 실행하기 위해 프로세서-판독가능한 명령들을 프로세싱하기 위한 프로세서를 연합하여 동작하거나 포함할 수 있다.
상기의 명세서, 실시예들 및 데이터는 본 기술의 대표적인 실시예들의 구조 및 활용의 완벽한 설명을 제공한다. 많은 본 기술의 실시예들은 본 발명의 취지 및 범위로부터 벗어나지 않고 이루어질 수 있기 때문에, 본 기술은 이하에 첨부된 청구항들에 존재한다. 더욱이, 상이한 실시예들의 구조상의 특징부들은 나열된 청구항들로부터 벗어나지 않고 또 다른 실시예들에 결합될 수 있다.

Claims (20)

  1. 방법에 있어서,
    로직 블럭 어드레스들의 서브셋들로 그룹화된 데이터 블럭들을 데이터 스토리지의 그래뉼 스토리지 영역의 하나 이상의 개별 그래뉼들에 기록하는 단계로서, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약되는, 상기 기록하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 기록된 데이터 블럭들의 로직 블럭 어드레스들을 상기 데이터 스토리지의 상기 그래뉼 스토리지 영역의 새로운 물리적 블럭 어드레스들에 동적으로 매핑하는 단계;를 추가로 포함하는, 방법.
  3. 청구항 1에 있어서,
    로직 블럭 어드레스들의 서브셋들에 따라 상기 데이터 블럭들을 정렬하는 단계를 추가로 포함하는 방법.
  4. 청구항 1에 있어서,
    상기 그래뉼 스토리지 영역의 적어도 하나의 그래뉼은 다른 그래뉼과 같은 로직 블럭 어드레스들의 세브셋에 동적으로 제약되는, 방법.
  5. 청구항 1에 있어서,
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계;
    상기 랜덤 액세스 메모리에 수신된 상기 다수의 개별적인 그래뉼들로부터 판독된 상기 데이터 블럭들을 로직 블럭 어드레스들의 다른 서브셋에 따라 재정렬하는 단계;및
    상기 재정렬된 데이터 블럭들을 상기 그래뉼 스토리지 영역의 새로운 그래뉼에 기록하는 단계로서, 상기 새로운 그래뉼은 로직 블럭 어드레스들의 다른 서브셋에 제약되는, 상기 새로운 그래뉼에 기록하는 단계;를 추가로 포함하는 방법.
  6. 청구항 1에 있어서,
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계; 및
    호스트 디바이스에 상기 랜덤 액세스 메모리로부터의 상기 다수의 개별적인 그래뉼들의 다수의 데이터 블럭들을 기록하는 단계;를 추가로 포함하는, 방법.
  7. 청구항 1에 있어서,
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계;
    상기 랜덤 액세스 메모리에 수신된 상기 다수의 개별적인 그래뉼들로부터 판독된 상기 데이터블럭들을 LBA-대-PBA 매핑에 따라 재정렬하는 단계;및
    상기 재정렬된 데이터 블럭들을 목적지 스토리지 영역의 LBA-대-PBA-매핑된 영역에 기록하는 단계를 추가로 포함하는, 방법.
  8. 데이터 스토리지 시스템에 있어서,
    데이터 스토리지;
    랜덤 액세스 메모리; 및
    상기 랜덤 액세스 메모리 및 상기 데이터 스토리지에 통신에 관하여 결합되고 그리고 로직 블럭 어드레스들의 서브셋들로 그룹화된 데이터 블럭들을 상기 데이터 스토리지의 그래뉼 스토리지 영역의 하나 이상의 개별적 그래뉼들에 기록하도록 구성된 스토리지 제어기로서, 각각의 그래뉼은 상기 로직 블럭 어드레스들의 서브셋에 동적으로 제약되는, 상기 스토리지 제어기;를 포함하는, 데이터 스토리지 시스템.
  9. 청구항 8에 있어서,
    상기 스토리지 제어기는 상기 기록된 데이터 블럭들의 로직 블럭 어드레스들을 상기 데이터 스토리지의 상기 그래뉼 스토리지 영역의 새로운 물리적 블럭 어드레스들에 동적으로 매핑하도록 추가로 구성되는, 데이터 스토리지 시스템.
  10. 청구항 8에 있어서,
    정렬 모듈은 추가로 로직 블럭 어드레스들의 서브셋에 따라 상기 데이터 블럭들을 정렬하도록 구성되는, 데이터 스토리지 시스템.
  11. 청구항 8에 있어서,
    상기 그래뉼 스토리지 영역의 하나 초과의 개별적으로 정렬된 그래뉼은 다른 개별적으로 정렬된 그래뉼과 같은 로직 블럭 어드레스들의 서브셋에 동적으로 제약되는, 데이터 스토리지 시스템.
  12. 청구항 8에 있어서,
    상기 스토리지 제어기는 추가로 상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 액세스 랜덤 액세스 메모리로 판독하도록 구성되고 및
    상기 그래뉼 스토리지 영역의 새로운 그래뉼에 기록되도록 하기 위해서 로직 블럭 어드레스들의 다른 서브셋에 따라 상기 랜덤 액세스 메모리에 수신된 상기 개별적으로-정렬된 그래뉼들로부터 판독된 상기 데이터 블럭들을 재정렬하도록 구성된 정렬 모듈로서, 상기 새로운 그래뉼은 로직 블럭 어드레스들의 다른 서브셋에 제약되는, 상기 정렬 모듈을 추가로 포함하는, 데이터 스토리지 시스템.
  13. 청구항 8에 있어서,
    상기 스토리지 제어기는 추가로 상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 액세스 랜덤 액세스 메모리로 판독하도록 구성되고 및
    목적지 스토리지 영역의 정적으로-매핑되는 영역에 기록되도록 하기 위해서 LBA-대-PBA 매핑에 따라 상기 랜덤 액세스 메모리에 수신된 상기 개별적으로-정렬된 그래뉼들로부터 판독된 상기 데이터 블럭들을 재정렬하도록 구성된 정렬 모듈;을 추가로 포함하는, 데이터 스토리지 시스템.
  14. 데이터 스토리지 시스템의 시스템-구현되는 프로세스를 실행하기 위해 프로세서-판독가능한 명령들을 저장하는 하나 이상의 프로세서-판독가능한 스토리지 매체로서, 상기 프로세스는
    로직 블럭 어드레스들의 서브셋들로 그룹화된 데이터 블럭들을 상기 데이터 스토리지의 그래뉼 스토리지 영역의 하나 이상의 개별 그래뉼들에 기록하는 단계로서, 각각의 그래뉼은 로직 블럭 어드레스들의 서브셋에 동적으로 제약되는, 상기 기록하는 단계를 포함하는, 하나 이상의 프로세서-판독가능한 스토리지 매체.
  15. 청구항 14에 있어서,
    상기 프로세스는
    상기 기록된 데이터 블럭들의 로직 블럭 어드레스들을 상기 데이터 스토리지의 상기 그래뉼 스토리지 영역의 새로운 물리적 블럭 어드레스들에 동적으로 매핑하는 단계;를 추가로 포함하는, 하나 이상의 프로세서-판독가능한 스토리지 매체.
  16. 청구항 14에 있어서,
    상기 정렬 동작은 로직 블럭 어드레스들의 서브셋에 따라 상기 데이터 블럭들을 정렬하는 단계를 포함하는 하나 이상의 프로세서-판독가능한 스토리지 매체.
  17. 청구항 14에 있어서,
    상기 그래뉼 스토리지 영역의 적어도 하나의 그래뉼은 다른 그래뉼과 같은 로직 블럭 어드레스들의 세브셋에 동적으로 제약되는, 하나 이상의 프로세서-판독가능한 스토리지 매체.
  18. 청구항 14에 있어서,
    상기 프로세스는
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적으로-정렬된 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계;
    상기 랜덤 액세스 메모리에 상기 개별적으로-정렬된 그래뉼들로부터 판독된 상기 데이터블럭들을 로직 블럭 어드레스들의 다른 서브셋에 따라 재정렬하는 단계;및
    상기 개별적으로 재정렬된 데이터 블럭들을 상기 그래뉼 스토리지 영역의 새로운 그래뉼에 기록하는 단계로서, 상기 새로운 그래뉼은 로직 블럭 어드레스들의 다른 서브셋에 제약되는, 상기 새로운 그래뉼에 기록하는 단계;를 포함하는 하나 이상의 프로세서-판독가능한 스토리지 매체.
  19. 청구항 14에 있어서,
    상기 프로세스는
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적으로-정렬된 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계; 및
    상기 개별적으로-재정렬된 데이터 블럭을 호스트 디바이스에 기록하는 단계;를 포함하는 하나 이상의 프로세서-판독가능한 스토리지 매체.
  20. 청구항 14에 있어서,
    상기 프로세스는
    상기 데이터 스토리지의 상기 그래뉼 스토리지 영역에 레코드되는 다수의 개별적인 그래뉼들을 상기 랜덤 액세스 메모리로 판독하는 단계;
    상기 랜덤 액세스 메모리에 수신된 상기 다수의 개별적인 그래뉼들로부터 판독된 상기 데이터블럭들을 LBA-대-PBA 매핑에 따라 재정렬하는 단계;및
    상기 재정렬된 데이터 블럭들을 목적지 스토리지 영역의 LBA-대-PBA-매핑된 영역에 기록하는 단계를 추가로 포함하는, 하나 이상의 프로세서-판독가능한 스토리지 매체.
KR1020140024425A 2013-03-15 2014-02-28 동적 그래뉼기반 매개 스토리지 KR101910840B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/839,595 US20140281194A1 (en) 2013-03-15 2013-03-15 Dynamically-sizeable granule storage
US13/839,595 2013-03-15

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020160084281A Division KR20160086299A (ko) 2013-03-15 2016-07-04 동적 그래뉼기반 매개 스토리지

Publications (2)

Publication Number Publication Date
KR20140113353A true KR20140113353A (ko) 2014-09-24
KR101910840B1 KR101910840B1 (ko) 2018-12-19

Family

ID=50513663

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140024425A KR101910840B1 (ko) 2013-03-15 2014-02-28 동적 그래뉼기반 매개 스토리지
KR1020160084281A KR20160086299A (ko) 2013-03-15 2016-07-04 동적 그래뉼기반 매개 스토리지

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020160084281A KR20160086299A (ko) 2013-03-15 2016-07-04 동적 그래뉼기반 매개 스토리지

Country Status (5)

Country Link
US (3) US20140281194A1 (ko)
EP (1) EP2778891A1 (ko)
JP (1) JP5941489B2 (ko)
KR (2) KR101910840B1 (ko)
CN (1) CN104049908B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9443553B2 (en) * 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US9939865B2 (en) 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9423965B2 (en) 2014-07-11 2016-08-23 Dell Products L.P. Method and system for writing to and reading from computer readable media
CN104461390B (zh) * 2014-12-05 2017-10-24 华为技术有限公司 将数据写入叠瓦状磁记录smr硬盘的方法及装置
US20160299698A1 (en) * 2015-04-10 2016-10-13 HGST Netherlands B.V. Realm partitioning in hard drives
US9841906B2 (en) * 2016-02-01 2017-12-12 Seagate Technology Llc Zone forward drive management
US10467172B2 (en) 2016-06-01 2019-11-05 Seagate Technology Llc Interconnect for shared control electronics
US10168763B2 (en) * 2016-08-09 2019-01-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Modification of when workloads access data units and/or on which storage devices data units are stored to conserve power
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
US9990949B1 (en) 2017-09-05 2018-06-05 Seagate Technology Llc Multi-channel data recording
US11061595B2 (en) * 2019-05-10 2021-07-13 Seagate Technology Llc Logical address remapping for direct write
US10923178B1 (en) * 2020-02-27 2021-02-16 Western Digital Technologies, Inc. Data storage with improved write performance for preferred user data
CN112214169B (zh) * 2020-09-28 2021-08-10 深圳大学 一种数据存储装置及存储数据的迁移方法
CN113949713A (zh) * 2021-10-15 2022-01-18 佳缘科技股份有限公司 一种基于数据漂移的动态存储方法、存储介质和计算机设备
US20240020036A1 (en) * 2022-07-18 2024-01-18 Micron Technology, Inc. Virtual binning in a memory device
CN116737086B (zh) * 2023-08-14 2023-11-17 江苏云途半导体有限公司 一种嵌入式非易失性存储器读写方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185411A (ja) * 1997-09-01 1999-03-30 Toshiba Corp ディスクアレイ装置、ディスクアレイ装置のデータ再配置方法、及びディスクアレイ装置のデータ再配置方法のプログラム情報を格納した記憶媒体
JPH11296431A (ja) * 1998-04-10 1999-10-29 Nec Corp 情報処理装置及びキャッシュメモリのマッピング方法
JP2004334419A (ja) * 2003-05-06 2004-11-25 Internatl Business Mach Corp <Ibm> 磁気ディスク装置、ファイル管理システム及びその方法
US20110004724A1 (en) * 2009-07-06 2011-01-06 Samsung Electronics Co., Ltd. Method and system for manipulating data
US20120324144A1 (en) * 2010-01-13 2012-12-20 International Business Machines Corporation Relocating Page Tables And Data Amongst Memory Modules In A Virtualized Environment
US20130038960A1 (en) * 2011-04-27 2013-02-14 Seagate Technology Llc Method and apparatus for contiguous data address management

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557770A (en) 1993-03-24 1996-09-17 International Business Machines Corporation Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk
JP3419538B2 (ja) * 1994-03-24 2003-06-23 株式会社日立製作所 記憶制御方法及びそれを用いた圧縮機能付きディスクシステム
JPH09160813A (ja) * 1995-12-08 1997-06-20 Sony Corp ファイル管理装置
JP2943693B2 (ja) 1996-04-26 1999-08-30 日本電気株式会社 ソート作業ファイルスペース管理方式
JPH11194899A (ja) * 1997-12-26 1999-07-21 Toshiba Corp ディスク記憶システム及び同システムに適用するデータ更新方法
JP2000222287A (ja) 1999-02-04 2000-08-11 Olympus Optical Co Ltd 情報記録再生装置
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US8289984B2 (en) 2003-01-13 2012-10-16 Emlilex Design & Manufacturing Corporation Allocation-unit-based virtual formatting methods and devices employing allocation-unit-based virtual formatting methods
WO2004095201A2 (en) 2003-04-09 2004-11-04 Intervideo Inc. Systems and methods for caching multimedia data
US7293156B2 (en) 2003-07-15 2007-11-06 Xiv Ltd. Distributed independent cache memory
US7996645B2 (en) * 2003-09-26 2011-08-09 Hitachi Global Storage Technologies Netherlands B.V. Log-structured file system for disk drives with shingled writing
US8756399B2 (en) 2006-01-25 2014-06-17 Seagate Technology Llc Mutable association of a set of logical block addresses to a band of physical storage blocks
JP4574712B2 (ja) 2006-02-28 2010-11-04 富士通株式会社 演算処理装置、情報処理装置及び制御方法
EP1840107B1 (fr) 2006-03-28 2009-06-03 Comadur S.A. Procédé de décoration d'une pièce en céramique
JP5037881B2 (ja) 2006-04-18 2012-10-03 株式会社日立製作所 ストレージシステム及びその制御方法
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
JP2008140459A (ja) 2006-11-30 2008-06-19 Toshiba Corp ハイブリッドディスク記憶装置及び同装置に適用されるディスクライト方法
US20100115175A9 (en) 2006-12-18 2010-05-06 Zhiqing Zhuang Method of managing a large array of non-volatile memories
JP2008181416A (ja) 2007-01-25 2008-08-07 Hitachi Ltd 記憶システム及びデータ管理方法
JP4329852B2 (ja) * 2007-07-11 2009-09-09 セイコーエプソン株式会社 偏光変換ユニット、偏光変換装置、およびプロジェクタ
US20090157940A1 (en) * 2007-12-15 2009-06-18 Hitachi Global Storage Technologies Netherlands, B.V. Techniques For Storing Data In Multiple Different Data Storage Media
JP2009160813A (ja) 2008-01-07 2009-07-23 Anqbell Japan Co Ltd レポート帳
JP5141402B2 (ja) 2008-06-26 2013-02-13 富士通株式会社 ストレージシステム,コピー制御方法およびコピー制御装置
US8549208B2 (en) 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
JP2010257094A (ja) 2009-04-23 2010-11-11 Hitachi Ltd 階層ストレージ管理システムにおける移動候補ファイルの抽出方法
US8176289B2 (en) 2009-05-21 2012-05-08 Red Hat Israel, Ltd. Method to support sparse volumes or thin provisioned volumes in real time
CN101576856A (zh) 2009-06-18 2009-11-11 浪潮电子信息产业股份有限公司 一种基于长短周期访问频度的缓存数据替换方法
US9110594B2 (en) 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8560770B2 (en) 2009-11-13 2013-10-15 Seagate Technology Llc Non-volatile write cache for a data storage system
US9514055B2 (en) 2009-12-31 2016-12-06 Seagate Technology Llc Distributed media cache for data storage systems
KR101654774B1 (ko) * 2010-02-08 2016-09-06 시게이트 테크놀로지 엘엘씨 데이터 저장 장치와 저장 매체 액세스 방법 및 그에 대한 저장 매체
JP2011194899A (ja) 2010-03-17 2011-10-06 Ntn Corp インホイール型モータ内蔵車輪用軸受装置
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US9569351B2 (en) 2010-10-25 2017-02-14 Seagate Technology Llc Storing corresponding data units in a common storage unit
US8990502B2 (en) * 2010-11-23 2015-03-24 International Business Machines Corporation Write cache structure in a storage system
JP5720204B2 (ja) 2010-11-26 2015-05-20 富士通株式会社 アクセス制御プログラム、アクセス制御方法および情報処理装置
US9280477B2 (en) 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
US9015549B2 (en) 2011-04-26 2015-04-21 Seagate Technology Llc Iterating inner and outer codes for data recovery
KR20120121736A (ko) 2011-04-27 2012-11-06 삼성전자주식회사 데이터 라이트 방법 및 저장 장치
US8913335B2 (en) * 2011-05-23 2014-12-16 HGST Netherlands B.V. Storage device with shingled data and unshingled cache regions
US8654472B2 (en) * 2011-11-29 2014-02-18 HGST Netherlands B.V. Implementing enhanced fragmented stream handling in a shingled disk drive
US8909859B2 (en) * 2012-03-01 2014-12-09 HGST Netherlands B.V. Implementing large block random write hot spare SSD for SMR RAID
CN102681952B (zh) * 2012-05-12 2015-02-18 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185411A (ja) * 1997-09-01 1999-03-30 Toshiba Corp ディスクアレイ装置、ディスクアレイ装置のデータ再配置方法、及びディスクアレイ装置のデータ再配置方法のプログラム情報を格納した記憶媒体
JPH11296431A (ja) * 1998-04-10 1999-10-29 Nec Corp 情報処理装置及びキャッシュメモリのマッピング方法
JP2004334419A (ja) * 2003-05-06 2004-11-25 Internatl Business Mach Corp <Ibm> 磁気ディスク装置、ファイル管理システム及びその方法
US20110004724A1 (en) * 2009-07-06 2011-01-06 Samsung Electronics Co., Ltd. Method and system for manipulating data
US20120324144A1 (en) * 2010-01-13 2012-12-20 International Business Machines Corporation Relocating Page Tables And Data Amongst Memory Modules In A Virtualized Environment
US20130038960A1 (en) * 2011-04-27 2013-02-14 Seagate Technology Llc Method and apparatus for contiguous data address management

Also Published As

Publication number Publication date
CN104049908A (zh) 2014-09-17
US20140281186A1 (en) 2014-09-18
US9384793B2 (en) 2016-07-05
EP2778891A1 (en) 2014-09-17
US20140281194A1 (en) 2014-09-18
US9740406B2 (en) 2017-08-22
JP5941489B2 (ja) 2016-06-29
KR101910840B1 (ko) 2018-12-19
US20160283115A1 (en) 2016-09-29
KR20160086299A (ko) 2016-07-19
JP2014182823A (ja) 2014-09-29
CN104049908B (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
KR101910840B1 (ko) 동적 그래뉼기반 매개 스토리지
US9588887B2 (en) Staging sorted data in intermediate storage
US9665301B2 (en) Methods and devices for storing user data along with addresses corresponding to physical pages storing valid data
US7958331B2 (en) Storage device with opportunistic address space
JP3662510B2 (ja) フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造
EP2329380B1 (en) Embedded mapping information for memory devices
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
US10037149B2 (en) Read cache management
US8879183B1 (en) Segmenting of read-modify-write operations
CN107665096A (zh) 加权数据分条
US7386754B2 (en) Method and apparatus to improve magnetic disc drive reliability using excess un-utilized capacity
US20110047409A1 (en) Storage device supporting auto backup function
US20230325119A1 (en) System and method for performing data read-write operations in zoned storage devices
US9286936B1 (en) Zone based band mapping
CN111580752B (zh) 一种数据存储方法、设备、计算机程序及存储介质
US10073735B1 (en) Seeding mechanism for error detection codes
JP6285762B2 (ja) エラー訂正コードの制御方法および大容量ストレージ
JP2005107676A (ja) アレイコントローラ及びディスクアレイ再構築方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101003997; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160704

Effective date: 20180612

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant