KR101854200B1 - 데이터 라이트 방법 및 이를 적용한 저장 장치 - Google Patents

데이터 라이트 방법 및 이를 적용한 저장 장치 Download PDF

Info

Publication number
KR101854200B1
KR101854200B1 KR1020110039713A KR20110039713A KR101854200B1 KR 101854200 B1 KR101854200 B1 KR 101854200B1 KR 1020110039713 A KR1020110039713 A KR 1020110039713A KR 20110039713 A KR20110039713 A KR 20110039713A KR 101854200 B1 KR101854200 B1 KR 101854200B1
Authority
KR
South Korea
Prior art keywords
data
cluster
address
storage
host
Prior art date
Application number
KR1020110039713A
Other languages
English (en)
Other versions
KR20120121740A (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 KR1020110039713A priority Critical patent/KR101854200B1/ko
Priority to US13/459,012 priority patent/US9063659B2/en
Publication of KR20120121740A publication Critical patent/KR20120121740A/ko
Application granted granted Critical
Publication of KR101854200B1 publication Critical patent/KR101854200B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B2020/1264Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting concerns a specific kind of data
    • G11B2020/1288Formatting by padding empty spaces with dummy data, e.g. writing zeroes or random data when de-icing optical discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Abstract

주소 사상 정보를 이용하여 저장 매체를 액세스하는 저장 장치에서의 데이터를 라이트하는 방법 및 장치에 관하여 개시한다. 데이터 라이트 방법은 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 단계, 상기 판정 결과에 기초하여 상기 제1영역에 대응되는 클러스터 내에서 상기 제1영역에 포함되지 않은 제2영역에 대한 주소 정보를 산출하는 단계 및, 상기 산출된 제2영역에 대한 주소 정보가 주소 사상 정보에 존재하지 않는 경우에 상기 제1영역에는 라이트 커맨드에 따른 데이터를 라이트하고 상기 제2영역에는 더미 패턴을 라이트하는 단계를 포함한다.

Description

데이터 라이트 방법 및 이를 적용한 저장 장치{Method for writing data on storage medium and storage apparatus applying the same}
본 발명은 저장 매체에 데이터를 라이트하는 방법 및 장치에 관한 것으로서, 특히 주소 사상(address mapping) 정보를 이용하여 저장 매체를 액세스하는 저장 장치에서의 데이터를 라이트하는 방법 및 장치에 관한 것이다.
저장 장치의 하나인 디스크 드라이브는 호스트 기기에서 발행되는 명령에 따라 저장 매체에 데이터를 라이트(write)하거나 또는 저장 매체로부터 데이터를 리드(read)함으로써 컴퓨터 시스템 운영에 기여하게 된다. 디스크 드라이브의 기록 밀도를 향상시키기 위하여 다양한 라이트 방식이 연구되고 있다. 또한, 디스크 드라이브에서의 액세스 성능을 향상시키기 위한 연구도 진행되고 있다.
본 발명의 목적은 동적 주소 변환을 이용하는 저장 장치에서 액세스 시간을 줄이기 위한 데이터 라이트 방법을 제공하는데 있다.
본 발명의 다른 목적은 액세스 성능이 향상되도록 저장 매체에 데이터를 라이트하는 저장 장치를 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 일실시 예에 의한 데이터 라이트 방법은 라이트 커맨드에서 지정하는 제1영역에 대한 초기 설정된 저장 단위 정렬 상태를 판정하는 단계, 상기 판정 결과에 기초하여 상기 제1영역에 대응되는 저장 단위 내에서 상기 제1영역에 포함되지 않은 제2영역에 대한 주소 정보를 산출하는 단계 및, 상기 산출된 제2영역에 대한 주소 정보가 주소 사상 정보에 존재하지 않는 경우에 상기 제1영역에는 라이트 커맨드에 따른 데이터를 라이트하고 상기 제2영역에는 더미 패턴을 라이트하는 단계를 포함한다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제1영역의 시작 위치가 상기 저장 단위로 정렬되어 있지 않은 경우에는 상기 제2영역을 산출하는 단계를 수행하지 않고, 상기 라이트 커맨드에 따른 데이터를 상기 제1영역에 라이트하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제1영역의 시작 위치가 상기 저장 단위로 정렬되어 있고 상기 제1영역의 종료 위치가 상기 저장 단위로 정렬되어 있지 않는 조건을 충족시키는 경우에 상기 제2영역에 대한 주소 정보를 산출하는 단계를 수행하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제2영역에 대한 주소 정보는 라이트 커맨드에 포함된 논리적 블록 어드레스에 사이즈 정보를 더한 제1 논리적 블록 어드레스로부터 상기 사이즈 정보를 상기 저장 단위 사이즈로 나눈 나머지 값에 상기 제1논리적 블록 어드레스를 더한 후에 1을 감산한 제2논리적 블록 어드레스까지의 주소 정보로 결정되는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제1영역의 시작 위치 또는 상기 제1영역의 종료 위치가 상기 저장 단위로 정렬되어 있지 않는 경우에 상기 제2영역에 대한 주소 정보를 산출하는 단계를 수행하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제1영역은 라이트 커맨드에 포함된 논리적 블록 어드레스 및 사이즈 정보에 근거하여 결정되는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 제2영역에 대한 주소 정보는 상기 제1영역의 종료 위치에 대한 논리적 블록 어드레스에 연속되는 다음 논리적 블록 어드레스로부터 상기 제1영역에 대응되는 저장 단위 영역의 종료 위치에 대한 논리적 블록 어드레스까지의 주소 정보로 결정되는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 저장 단위의 사이즈는 하나 이상의 섹터 사이즈로 설정되는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 주소 사상 정보는 호스트 기기로부터 수신되는 논리적 블록 어드레스를 가상의 어드레스를 이용하여 저장 매체의 물리적 어드레스로 변환시키는 정보를 포함하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 주소 사상 정보는 논리적 블록 어드레스들의 집합으로 분류되는 논리적 밴드와 저장 매체의 물리적 영역에 대응되는 가상 밴드간의 매핑 정보 및, 논리적 밴드에 할당된 가상 밴드에서의 논리적 블록 어드레스와 가상 어드레스간의 매핑 정보를 포함하고, 상기 논리적 블록 어드레스와 이에 대응되는 가상 어드레스가 함께 순차적으로 증가되는 영역에 대해서는 하나의 키 정보로 매핑 정보를 생성시키는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 주소 사상 정보는 저장 매체의 물리적 영역에 대응되는 가상 밴드에서 한쪽 방향으로 순차적으로 라이트 되도록 호스트 기기로부터 수신되는 논리적 블록 어드레스를 저장 매체의 물리적 어드레스로 변환시키는 정보를 포함하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 더미 패턴은 0(zero) 패턴을 포함하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 산출된 제2영역에 대한 주소 정보가 주소 사상 정보에 할당되어 있지 않은 경우에, 상기 라이트 커맨드에 포함된 논리적 블록 어드레스 정보 및 사이즈 정보를 상기 제1영역과 상기 제2영역이 포함되도록 변경하고, 상기 라이트 커맨드에 따라 라이트될 데이터에 더미 패턴을 추가하여 상기 제1영역에는 라이트 커맨드에 따라 호스트 기기로부터 수신된 데이터를 라이트하고 상기 제2영역에는 더미 패턴을 라이트하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 라이트 커맨드에 따라 생성되는 주소 사상 정보는 상기 제1영역과 상기 제2영역을 포함하는 논리적 블록 어드레스들에 대하여 하나의 키 정보로 매핑 정보를 생성시키는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 저장 단위는 클러스터 단위로 설정되는 것이 바람직하다.
본 발명의 기술적 사상의 다른 면에 따른 일실시 예에 의한 저장 장치는 저장 매체, 상기 저장 매체를 액세스하여 데이터를 라이트하거나 또는 리드하는 저장 매체 인터페이스, 주소 사상 정보를 저장하는 메모리 장치 및, 상기 저장 매체에 데이터를 라이트하거나 또는 상기 저장 매체로부터 데이터를 리드하도록 상기 저장 매체 인터페이스를 제어하는 프로세서를 포함하고, 상기 프로세서는 상기 주소 사상 정보에 기초하여 적어도 하나의 클러스터 단위로 상기 저장 매체에 데이터가 라이트되도록 라이트 커맨드에서 지정하는 영역 및 라이트할 데이터를 변경하여 라이트 동작을 실행시키는 것을 특징으로 한다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 프로세서는 상기 저장 매체에 데이터가 라이트될 영역이 적어도 하나의 클러스터 단위로 정렬되도록 라이트 커맨드에서 지정하는 영역을 변경하고, 상기 라이트 커맨드에서 지정하는 영역에서 변경된 영역에 더미 패턴을 라이트하도록 상기 저장 매체 인터페이스를 제어하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 프로세서는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 클러스터 단위 정렬 판정부, 상기 클러스터 단위 정렬 판정부의 판정 결과에 기초하여 상기 제1영역에 대응되는 클러스터 내에서 상기 제1영역에 포함되지 않은 제2영역에 대한 주소 정보를 산출하는 더미 라이트용 영역 산출부, 상기 제2영역에 대한 주소 정보가 상기 메모리 장치에 저장된 주소 사상 정보에 존재하는지를 판단하는 주소 사상 정보 검색부, 상기 제2영역에 라이트할 더미 패턴을 생성시키는 더미 패턴 생성부 및, 상기 라이트 커맨드에서 지정하는 라이트할 영역을 제1영역과 제2영역이 포함되도록 변경하는 라이트 영역 변경부를 포함하고, 상기 제1영역에는 라이트 커맨드에 따른 데이터를 라이트하고 상기 제2영역에는 더미 패턴을 라이트하도록 상기 저장 매체 인터페이스를 제어하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 더미 라이트용 영역 산출부는 상기 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있고 상기 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있지 않는 조건을 충족시키는 경우에 상기 제2영역에 대한 주소 정보를 산출하는 프로세스를 수행하는 것이 바람직하다.
본 발명의 기술적 사상에 의한 일실시 예에 따르면, 상기 주소 사상 정보는 상기 저장 매체의 물리적 영역에 대응되는 가상 밴드에서 한쪽 방향으로 순차적으로 라이트되도록 호스트 기기로부터 수신되는 논리적 블록 어드레스를 상기 저장 매체의 물리적 어드레스로 변환시키는 정보를 포함하고, 상기 논리적 블록 어드레스와 이에 대응되는 가상 어드레스가 함께 순차적으로 증가되는 영역에 대해서는 하나의 키 정보로 매핑 정보를 생성시키는 것이 바람직하다.
본 발명에 의하면 저장 매체에 클러스터 단위로 정렬되도록 라이트 동작을 수행함으로써, 주소 사상 정보를 단순화시킬 수 있는 효과가 발생된다. 즉, 여러 개의 주소 사상 정보들이 하나의 주소 사상 정보로 합병될 가능성이 높아져서 저장 매체에 대한 전체 주소 사상 정보의 개수가 감소되는 효과가 발생된다.
이와 같이, 주소 사상 정보의 개수가 감소됨에 따라 주소 사상 정보를 검색하는 시간이 단축되어 액세스 시간을 단축시킬 수 있는 효과가 발생된다.
도 1A는 본 발명의 기술적 사상에 의한 일실시 예에 따른 컴퓨터 시스템의 구성도이다.
도 1B는 본 발명의 기술적 사상에 의한 다른 실시 예에 따른 컴퓨터 시스템의 구성도이다.
도 2는 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 장치의 소프트웨어 운영 체계도이다.
도 3은 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브의 헤드 디스크 어셈블리의 평면도이다.
도 4A는 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브의 전기적인 구성도이다.
도 4B는 본 발명의 기술적 사상에 의한 다른 실시 예에 따른 디스크 드라이브의 전기적인 구성도이다.
도 5는 본 발명에 적용되는 저장 매체인 디스크의 일 트랙에 대한 섹터 구조를 보여주는 도면이다.
도 6은 도 5에 도시된 서보 정보 영역의 구조를 보여주는 도면이다.
도 7은 본 발명의 기술적 사상에 의한 일실시 예에 따른 슁글 라이트 방식에서의 플럭스 발생에 따른 트랙 형상을 개념적으로 도시한 것이다.
도 8은 본 발명의 기술적 사상에 의한 일실시 예에 따른 슁글 라이트 방식에서의 인접 트랙 간섭 현상에 따른 트랙 형상을 개념적으로 도시한 것이다.
도 9는 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 매체에 대한 물리적 존 및 가상 밴드 구성을 도시적으로 보여주는 도면이다.
도 10은 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 매체의 물리적 존 별로 논리적 밴드에 할당된 가상 밴드의 구조를 도식적으로 보여주는 도면이다.
도 11은 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 장치의 프로세서 및 RAM의 세부 구성도이다.
도 12는 도 11에 도시된 클러스터 얼라인먼트 관리 프로세서의 세부 구성도이다.
도 13은 도 11에 도시된 어드레스 변환 프로세서의 세부 구성도이다.
도 14는 도 13에 도시된 제2프로세서의 세부 구성도이다.
도 15는 본 발명의 기술적 사상에 의한 일실시 예에 따른 데이터 라이트 방법의 흐름도이다.
도 16은 도 15에 도시된 단계102(S102)의 프로세스를 수행하는 일실시 예에 따른 세부적인 흐름도이다.
도 17은 도 15에 도시된 단계102(S102)의 프로세스를 수행하는 다른 실시 예에 따른 세부적인 흐름도이다.
도 18은 도 15에 도시된 단계102(S102)의 프로세스를 수행하는 또 다른 실시 예에 따른 세부적인 흐름도이다.
도 19는 도 15에 도시된 단계105(S105)의 프로세스를 수행하는 일 실시 예에 따른 세부적인 흐름도이다.
도 20은 본 발명의 기술적 사상에 의한 라이트 동작을 수행하는 세부적인 흐름도이다.
도 21은 도 10에 도시된 논리적 밴드 대한 가상 밴드의 할당 상태를 나타내는 주소 사상 정보의 일예를 보여준다.
도 22는 가상 밴드 번호 0에서 LBA에 대한 가상 어드레스(VA)의 매핑 구조를 보여주는 개념도이다.
도 23A는 도 22에 도시된 가상 밴드 번호 0에 대한 주소 사상 정보의 일예를 도시한 것이다.
도 23B는 도 22에 도시된 가상 밴드 번호 0에 대한 주소 사상 정보의 다른 예를 도시한 것이다.
도 24는 라이트 커맨드에서 지정하는 제1영역의 시작 위치와 종료 위치가 모두 클러스터 단위 정렬되어 있는 상태를 보여주는 라이트 영역에 대한 개념도이다.
도 25A는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있고, 제1영역의 종료 위치는 클러스터 단위로 정렬되어 있지 않은 상태를 보여주는 라이트 영역에 대한 개념도이다.
도 25B는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태가 도 25A와 같은 경우에, 본 발명의 일실시 예에 따라 더미 패턴을 이용하여 클러스터 단위로 정렬시키는 것을 보여주는 라이트 영역에 대한 개념도이다.
도 26A는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않고, 제1영역의 종료 위치는 클러스터 단위로 정렬되어 있는 상태를 보여주는 라이트 영역에 대한 개념도이다.
도 26B는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태가 도 26A와 같은 경우에, 본 발명의 일실시 예에 따라 더미 패턴을 이용하여 클러스터 단위로 정렬시키는 것을 보여주는 라이트 영역에 대한 개념도이다.
도 27A는 라이트 커맨드에서 지정하는 제1영역의 시작 위치와 종료 위치가 모두 클러스터 단위 정렬되어 있지 않는 상태를 보여주는 라이트 영역에 대한 개념도이다.
도 27B는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태가 도 27A와 같은 경우에, 본 발명의 일실시 예에 따라 더미 패턴을 이용하여 클러스터 단위로 정렬시키는 것을 보여주는 라이트 영역에 대한 개념도이다.
도 28A는 본 발명에 따른 라이트 방법을 적용하여 가상 밴드 번호 0에 라이트된 경우의 LBA와 VA의 매핑 상태의 일예를 보여주는 도면이다.
도 28B는 본 발명에 따른 라이트 방법을 적용하지 않고 가상 밴드 번호 0에 라이트된 경우의 LBA와 VA의 매핑 상태의 일예를 보여주는 도면이다.
도 29는 본 발명의 기술적 사상에 의한 일실시 예에 따른 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 설명하기 위한 네트워크 구성도이다.
도 30은 본 발명의 기술적 사상에 의한 일실시 예에 따른 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법의 흐름도이다.
본 발명의 기술적 사상에 의한 실시 예들에 대하여 첨부 도면을 참조하여 상세히 설명한다. 그러나, 본 발명의 기술적 사상에 의한 실시 예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 상술하는 실시 예들로 인해 한정되어지는 것으로 해석되어져서는 안 된다. 본 발명의 기술적 사상에 의한 실시 예들은 본 발명이 속하는 기술분야에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되어지는 것이다. 첨부 도면들에서, 동일한 부호는 시종 동일한 요소를 의미한다.
이하 첨부된 도면을 참조하여 본 발명의 기술적 사상에 의한 바람직한 실시 예에 대하여 상세히 설명하기로 한다.
도 1A에 도시된 바와 같이, 본 발명의 기술적 사상에 의한 일실시 예에 따른 컴퓨터 시스템은 저장 장치(1000A), 호스트 기기(2000) 및 커넥터(CONNECTOR; 3000)를 구비한다.
세부적으로, 저장 장치(1000A)는 프로세서(PROCESSOR; 110), ROM(120), RAM(130), 저장 매체 인터페이스(저장 매체 I/F; 140), 저장 매체(150), 호스트 인터페이스(HOST I/F; 160) 및 버스(BUS; 170)를 구비한다.
호스트 기기(2000)는 저장 장치(1000A)를 동작시키기 위한 커맨드를 발행하여 커넥터(3000)를 통하여 접속된 저장 장치(1000A)로 전송하고, 발행된 커맨드에 따라서 저장 장치(1000A)와 데이터를 전송하거 또는 수신하는 프로세스를 수행한다.
커넥터(3000)는 호스트 기기(2000)의 인터페이스 포트와 저장 장치(1000A)의 인터페이스 포트를 전기적으로 연결하는 수단으로서, 데이터 커넥터와 전원 커넥터가 포함될 수 있다. 일예로서, SATA(Serial Advanced Technology Attachment) 인터페이스를 이용하는 경우에, 커넥터(3000)는 7핀의 SATA 데이터 커넥터와 15핀의 SATA 전원 커넥터로 구성될 수 있다.
우선, 저장 장치(1000A)의 구성 수단들에 대하여 설명하기로 한다.
프로세서(110)는 명령어를 해석하고, 해석된 결과에 따라 데이터 저장 장치의 구성 수단들을 제어하는 역할을 한다. 프로세서(110)는 코드 오브젝트 관리 유닛을 포함하고 있으며, 코드 오브젝트 관리 유닛을 이용하여 저장 매체(150)에 저장되어 있는 코드 오브젝트를 RAM(130)에 로딩시킨다. 프로세서(110)는 도 15 ~ 도 20의 흐름도에 따른 데이터 라이트 방법 및, 도 30의 흐름도에 따른 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 실행시키기 위한 코드 오브젝트들을 RAM(130)에 로딩시킨다.
그러면, 프로세서(110)는 RAM(130)에 로딩된 코드 오브젝트들을 이용하여 도 15 ~ 도 20의 흐름도에 따른 데이터 라이트 방법 및, 도 30의 흐름도에 따른 네트워크를 통한 라이트 동작에서의 클러스터(cluster) 얼라인먼트(alignment) 관리 방법에 대한 태스크(task)를 실행할 수 있다. 프로세서(110)에 의하여 실행되는 데이터 라이트 방법 및, 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법에 대해서는 아래의 도 15 ~ 도 20 및 도 30에 대한 설명에서 상세하게 다루어질 것이다.
ROM(Read Only Memory; 120)에는 데이터 저장 장치를 동작시키는데 필요한 프로그램 코드 및 데이터들이 저장되어 있다.
RAM(Random Access Memory; 130)에는 프로세서(110)의 제어에 따라 ROM(120) 또는 저장 매체(150)에 저장된 프로그램 코드 및 데이터들이 로딩된다.
저장 매체(150)는 저장 장치의 주 저장 매체로서 디스크 또는 비휘발성 반도체 메모리 소자가 포함할 수 있다. 저장 장치는 일예로서 디스크 드라이브를 포함할 수 있으며, 디스크 드라이브에서의 디스크 및 헤드가 포함된 헤드 디스크 어셈블리(100)의 세부 구성을 도 3에 도시하였다.
도 3을 참조하면, 헤드 디스크 어셈블리(100)는 스핀들 모터(14)에 의하여 회전되는 적어도 하나의 디스크(12)를 포함하고 있다. 디스크 드라이브는 디스크(12) 표면에 인접되게 위치한 헤드(16)를 또한 포함하고 있다.
헤드(16)는 각각의 디스크(12)의 자계를 감지하고 자화시킴으로써 회전하는 디스크(12)에서 정보를 읽거나 기록할 수 있다. 전형적으로 헤드(16)는 각 디스크(12) 표면에 결합되어 있다. 비록 단일의 헤드(16)로 도시되어 설명되어 있지만, 이는 디스크(12)를 자화시키기 위한 기록용 헤드와 디스크(12)의 자계를 감지하기 위한 분리된 읽기용 헤드로 이루어져 있다고 이해되어야 한다. 읽기용 헤드는 자기 저항(MR : Magneto-Resistive) 소자로부터 구성되어 진다. 헤드(16)는 자기 헤드(Magnetic Head) 또는 변환기(transducer)라 칭해지기도 한다.
헤드(16)는 슬라이더(20)에 통합되어 질 수 있다. 슬라이더(20)는 헤드(16)와 디스크(12) 표면사이에 공기 베어링(air bearing)을 생성시키는 구조로 되어 있다. 슬라이더(20)는 헤드 짐벌 어셈블리(22)에 결합되어 있다. 헤드 짐벌 어셈블리(22)는 보이스 코일(26)을 갖는 엑츄에이터 암(24)에 부착되어 있다. 보이스 코일(26)은 보이스 코일 모터(VCM : Voice Coil Motor 30)를 특정하도록 마그네틱 어셈블리(28)에 인접되게 위치하고 있다. 보이스 코일(26)에 공급되는 전류는 베어링 어셈블리(32)에 대하여 엑츄에이터 암(24)을 회전시키는 토오크를 발생시킨다. 엑츄에이터 암(24)의 회전은 디스크(12) 표면을 가로질러 헤드(16)를 이동시키게 된다.
정보는 전형적으로 디스크(12)의 환상 트랙 내에 저장된다. 각 트랙(34)은 복수의 섹터들을 포함하고 있다. 일 트랙에 대한 섹터 구성을 도 5에 도시하였다.
도 5에 도시된 바와 같이, 하나의 서보 섹터 구간(T)에는 서보 정보 영역(S)과 데이터 영역으로 구성되고, 데이터 영역에는 복수개의 데이터 섹터(D)들이 포함될 수 있다. 물론, 하나의 서보 섹터 구간에 단일의 데이터 섹터(D)가 포함되도록 구성할 수도 있다. 데이터 섹터(D)를 섹터라고 칭해지기로 한다. 일 예로서, 섹터의 크기는 512바이트(Byte)로 정해질 수 있다.
그리고, 서보 정보 영역(S)에는 세부적으로 도 6과 같은 신호들이 기록되어 있다.
도 6에 도시된 바와 같이, 서보 정보 영역(S)에는 프리앰블(Preamble; 601), 서보 동기 표시 신호(602), 그레이 코드(Gray Code; 603) 및 버스트 신호(Burst; 604)들이 기록된다.
프리앰블(601)은 서보 정보 독출 시에 클럭 동기를 제공하고, 또한 서보 섹터 앞의 갭(gap)을 두어 일정한 타이밍 마진을 제공한다. 그리고, 자동이득제어(AGC) 회로의 이득(도면에 미도시)을 결정하는데 이용된다.
서보 동기 표시 신호(602)는 서보 어드레스 마크(Servo Address Mark; SAM) 및 서보 인덱스 마크(Servo Index Mark; SIM)로 구성된다. 서보 어드레스 마크는 서보 섹터의 시작을 나타내는 신호이고, 서보 인덱스 마크는 트랙에서의 첫 번째 서보 섹터의 시작을 나타내는 신호이다.
그레이 코드(603)는 트랙 정보를 제공하고, 버스트 신호(604)는 헤드(16)가 트랙(34)의 중앙을 추종하도록 제어하는데 이용되는 신호이며, 일예로서 A,B,C,D 4개의 패턴으로 구성된다. 즉, 4개의 버스트 패턴들을 조합하여 트랙 추종 제어 시에 사용되는 위치에러신호를 생성시킨다.
디스크(12)는 사용자가 접근할 수 없는 메인터넌스 실린더(maintenance cylinder) 영역과 사용자가 접근할 수 있는 사용자 데이터 영역으로 구분된다. 메인터넌스 실린더 영역을 시스템 영역이라 칭하기도 한다. 메인터넌스 실린더 영역에는 디스크 드라이브 제어에 필요한 각종 정보들이 저장되어 있으며, 물론 본 발명에 따른 데이터 라이트 방법 및, 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 수행하는데 필요한 정보들도 저장되어 있다. 세부적으로, 가상 밴드에 기초하여 논리적 블록 어드레스(Logical Block Address; LBA)를 가상 어드레스(Virtual Address; VA)로 변환시키기 위한 주소 사상 정보가 메인터넌스 실린더 영역에 저장될 수 있다. 여기에서, 주소 사상 정보는 매핑 테이블(Mapping Table) 또는 메타(meta) 데이터라 칭해지기도 한다. 또한, 클러스터 단위 사이즈에 대한 정보도 디스크(12)에 저장될 수 있다. 클러스터 단위 사이즈에 대한 정보는 디스크(12)의 물리적인 존별로 다르게 설정될 수도 있다.
헤드(16)는 다른 트랙에 있는 정보를 읽거나 기록하기 위하여 디스크(12) 표면을 가로질러 이동된다. 디스크(12)에는 디스크 드라이브로 다양한 기능을 구현시키기 위한 복수개의 코드 오브젝트들이 저장될 수 있다. 일예로서, MP3 플레이어 기능을 수행하기 위한 코드 오브젝트, 네비게이션 기능을 수행하기 위한 코드 오브젝트, 다양한 비디오 게임을 수행하기 위한 코드 오브젝트 등이 디스크(12)에 저장될 수 있다.
다시 도 1A를 참조하면, 저장 매체 인터페이스(140)는 프로세서(110)가 저장 매체(150)를 액세스하여 정보를 라이트 또는 리드할 수 있도록 처리하는 구성 수단이다. 디스크 드라이브로 구현되는 저장 장치에서의 저장 매체 인터페이스(140)는 세부적으로 헤드 디스크 어셈블리(100)를 제어하는 서보 회로 및 데이터 리드/라이트를 위한 신호 처리를 수행하는 리드/라이트 채널 회로를 포함한다.
호스트 인터페이스(160)는 퍼스널 컴퓨터, 모바일 기기 등과 같은 호스트 기기(2000)와의 데이터 송/수신 처리를 실행하는 수단으로서, 예를 들어 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 인터페이스 등과 같은 다양한 규격의 인터페이스를 이용할 수 있다.
버스(170)는 저장 장치의 구성 수단들 간의 정보를 전달하는 역할을 한다.
다음으로, 저장 장치의 일예인 하드 디스크 드라이브의 소프트웨어 운영 체계에 대하여 도 2를 참조하여 설명하기로 한다.
도 2에 도시된 바와 같이, 하드 디스크 드라이브(HDD)의 저장 매체인 디스크(150A)에는 복수의 코드 오브젝트(Code Object 1 ~ N)들이 저장되어 있다.
ROM(120)에는 부트 이미지(Boot Image) 및 압축된 RTOS 이미지(packed RTOS Image)가 저장되어 있다.
디스크(150A)에는 복수의 코드 오브젝트(CODE OBJECT 1~N)들이 저장되어 있다. 디스크에 저장된 코드 오브젝트들은 디스크 드라이브의 동작에 필요한 코드 오브젝트들뿐만 아니라, 디스크 드라이브로 확장할 수 있는 다양한 기능에 관련된 코드 오브젝트들도 포함될 수 있다. 특히, 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 코드 오브젝트들이 디스크(150A)에 저장되어 있다. 물론, 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 코드 오브젝트들을 디스크(150A) 대신에 ROM(120)에 저장할 수도 있다. 그리고, MP3 플레이어 기능, 네비게이션 기능, 비디오 게임 기능 등의 다양한 기능을 수행하는 코드 오브젝트들도 디스크(150A)에 저장될 수 있다.
RAM(130)에는 부팅 과정에서 ROM(120)으로부터 부트 이미지(Boot Image)를 읽어내어 압축 해제된 RTOS 이미지(Unpacked RTOS Image)가 로딩된다. 그리고, 디스크(150A)에 저장되어 있는 호스트 인터페이스 수행에 필요한 코드 오브젝트들이 RAM(130)에 로딩된다. 물론, RAM(130)에는 데이터를 저장하기 위한 영역(DATA AREA)도 할당되어 있다.
채널(CHANNEL) 회로(200)에는 데이터 리드/라이트를 위한 신호 처리를 수행하는데 필요한 회로들이 내장되어 있으며, 서보(SERVO) 회로(210)에는 데이터 리드/라이트 동작을 수행하기 위하여 헤드 디스크 어셈블리(100)를 제어하는데 필요한 회로들이 내장되어 있다.
RTOS(Real Time Operating System; 110A)는 실시간 운영 체계 프로그램으로서, 디스크를 이용한 다중 프로그램 운영 체계이다. 태스크(task)에 따라서 우선순위가 높은 전위(foreground)에서는 실시간 다중 처리를 하며, 우선순위가 낮은 후위(background)에서는 일괄 처리를 한다. 그리고, 디스크로부터의 코드 오브젝트의 로딩과 디스크로의 코드 오브젝트의 언로딩을 수행한다.
RTOS(Real Time Operating System; 110A)는 코드 오브젝트 관리 유닛(Code Object Management Unit; COMU, 110-1), 코드 오브젝트 로더(Code Object Loader; COL, 110-2), 메모리 핸들러(Memory Handler; MH, 110-3), 채널 제어 모듈(Channel Control Module; CCM, 110-4) 및 서보 제어 모듈(Servo Control Module; SCM, 110-5)들을 관리하여 요청된 명령에 따른 태스크를 실행한다. RTOS(110A)는 또한 어플리케이션(Application) 프로그램(220)들을 관리한다.
세부적으로, RTOS(110A)는 디스크 드라이브의 부팅 과정에서 디스크 드라이브 제어에 필요한 코드 오브젝트들을 RAM(130)에 로딩시킨다. 따라서, 부팅 과정을 실행하고 나면 RAM(130)에 로딩된 코드 오브젝트들을 이용하여 디스크 드라이브를 동작시킬 수 있게 된다.
COMU(110-1)은 코드 오브젝트들이 기록되어 있는 위치 정보를 저장하고, 버스를 중재하는 처리를 수행한다. 또한, 실행되고 있는 태스크들의 우선순위에 대한 정보도 저장되어 있다. 그리고, 코드 오브젝트에 대한 태스크 수행에 필요한 태스크 제어 블록(Task Control Block; TCB) 정보 및 스택 정보도 관리한다.
COL(110-2)는 COMU(110-1)을 이용하여 디스크(150A)에 저장되어 있는 코드 오브젝트들을 RAM(130)에 로딩시키거나, RAM(130)에 저장되어 있는 코드 오브젝트들을 디스크(150A)로 언로딩시키는 처리를 수행한다. 이에 따라서, COL(110-2)는 디스크(150A)에 저장되어 있는 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 코드 오브젝트들을 RAM(130)에 로딩시킬 수 있다.
RTOS(110A)는 RAM(130)에 로딩된 코드 오브젝트들을 이용하여 아래에서 설명되어질 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시킬 수 있게 된다.
MH(110-3)는 ROM(120) 및 RAM(130)에 데이터를 라이트하거나 리드하는 처리를 수행한다.
CCM(110-4)은 데이터 리드/라이트를 위한 신호 처리를 수행하는데 필요한 채널 제어를 수행하고, SCM(110-5)는 데이터 리드/라이트를 수행하기 위하여 헤드 디스크 어셈블리를 포함하는 서보 제어를 수행한다.
다음으로, 도 1B는 본 발명의 기술적 사상에 의한 다른 실시 예에 따른 컴퓨터 시스템의 구성도를 보여준다.
도 1B에 도시된 바와 같은 컴퓨터 시스템의 저장 장치(1000B)는 도 1A에 도시된 저장 장치(1000A)에 비휘발성 메모리 장치(180)가 추가된다. 도 1B에서 저장 매체(150)는 디스크로 구현될 수 있다.
비휘발성 메모리 장치(180)는 비휘발성 반도체 메모리 장치로 구현될 수 있으며, 일 예로서 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있다.
비휘발성 메모리 장치(180)에는 저장 장치(1000B)에 저장하고자 하는 데이터의 일부 또는 전부가 저장될 수 있다. 일 예로서, 저장 장치(1000B) 제어에 필요한 각종 정보들이 비휘발성 메모리 장치(180)에 저장될 수 있다.
그리고, 비휘발성 메모리 장치(180)에는 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들이 저장될 수 있다. 구체적으로, 가상 존 또는 가상 밴드에 기초하여 논리적 블록 어드레스를 가상 어드레스로 변환시키기 위한 매핑 테이블을 비휘발성 메모리 장치(180)에 저장할 수 있다. 또한 저장 장치의 다양한 기능을 구현시키기 위한 코드 오브젝트들도 비휘발성 메모리 장치(180)에 저장할 수 있다. 매핑 테이블이 비휘발성 메모리 장치(180)에 저장되어 있는 경우에, 저장 장치는 비휘발성 메모리 장치(180)에 저장되어 매핑 테이블을 RAM(130)에 로딩시킨다.
도 1A의 컴퓨터 시스템에서 이미 설명한 동일한 구성 수단들에 대한 중복된 설명은 피하기로 한다.
다음으로, 도 1A에 도시된 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 장치의 일예인 디스크 드라이브(1000A')의 전기적인 회로 구성을 도 4A에 도시하였다.
도 4A에 도시된 바와 같이, 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브(1000A')는 프리 앰프(410), 리드/라이트 채널(420, R/W CHANNEL), 프로세서(430), 보이스 코일 모터 구동부(440, VCM 구동부), 스핀들 모터 구동부(450, SPM 구동부), ROM(460), RAM(470) 및, 호스트 인터페이스(480)를 구비한다.
프로세서(430)는 디지털 신호 프로세서(DSP: Digital Signal Processor), 마이크로프로세서, 마이크로컨트롤러, 등이 될 수 있다. 프로세서(430)는 호스트 인터페이스(480)를 통하여 호스트 기기(2000)로부터 수신되는 커맨드(command)에 따라서 디스크(12)로부터 정보를 읽거나 또는 디스크(12)에 정보를 기록하기 위하여 리드/라이트 채널(420)을 제어한다.
프로세서(430)는 보이스 코일 모터(30, VCM)를 구동시키기 위한 구동 전류를 공급하는 VCM(Voice Coil Motor) 구동부(440)에 결합되어 있다. 프로세서(430)는 헤드(16)의 움직임을 제어하기 위하여 VCM 구동부(440)로 제어신호를 공급한다.
프로세서(430)는 스핀들 모터(14, SPM)를 구동시키기 위한 구동 전류를 공급하는 SPM(Spindle Motor) 구동부(450)에 또한 결합되어 있다. 프로세서(430)는 전원이 공급되면, 스핀들 모터(14)를 목표 속도로 회전시키기 위하여 SPM 구동부(450)에 제어신호를 공급한다.
프로세서(430)는 ROM(460) 및 RAM(470)과 각각 결합되어 있다. ROM(460)에는 디스크 드라이브를 제어하는 펌웨어 및 제어 데이터들이 저장되어 있다. 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들이 ROM(460)에 저장될 수 있다. 물론, 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들은 ROM(460) 대신에 디스크(12)의 메인터넌스 실린더 영역에 저장될 수도 있다.
RAM(470)에는 프로세서(430)의 제어에 따라 ROM(460) 또는 디스크(12)에 저장된 프로그램 코드들이 초기화 모드에서 로딩되고, 호스트 인터페이스(480)를 통하여 수신되는 데이터 또는 디스크(12)에서 읽어낸 데이터가 임시적으로 저장된다.
RAM(470)은 DRAM 또는 SRAM으로 구현할 수 있다. 또한, RAM(470)은 SDR(Single Data Rate) 방식 또는 DDR(Double Data Rate) 방식으로 구동되게 설계할 수 있다.
그리고, 프로세서(430)는 ROM(460) 또는 디스크(12)의 메인터넌스 실린더 영역에 저장된 프로그램 코드 및 정보들을 이용하여 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행하도록 디스크 드라이브를 제어할 수 있게 된다.
다음으로, 도 1B에 도시된 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 장치의 일예인 디스크 드라이브(1000B')의 전기적인 회로 구성을 도 4B에 도시하였다.
도 4B에 도시된 바와 같은 디스크 드라이브(1000B')는 도 4A에 도시된 디스크 드라이브(1000A')에 비하여 비휘발성 메모리 장치(490)가 추가된다. 비휘발성 메모리 장치(490)에는 디스크 드라이브(1000B')에 저장하고자 하는 데이터의 일부가 저장될 수 있다. 일 예로서, 디스크 드라이브(1000B') 제어에 필요한 각종 정보들이 비휘발성 메모리 장치(490)에 저장될 수 있다.
그리고, 비휘발성 메모리 장치(490)에는 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들이 저장될 수 있다. 구체적으로, 가상 존 또는 가상 밴드에 기초하여 논리적 블록 어드레스를 가상 어드레스로 변환시키기 위한 매핑 테이블을 비휘발성 메모리 장치(490)에 저장할 수 있다. 또한 저장 장치의 다양한 기능을 구현시키기 위한 코드 오브젝트들도 비휘발성 메모리 장치(490)에 저장할 수 있다.
프로세서(430)는 ROM(460), RAM(470) 및 비휘발성 메모리 장치(490)와 각각 결합되어 있다. ROM(460)에는 디스크 드라이브를 제어하는 펌웨어 및 제어 데이터들이 저장되어 있다. 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들이 ROM(460)에 저장될 수 있다. 물론, 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 위한 프로그램 코드 및 정보들은 ROM(460) 대신에 디스크(12)의 메인터넌스 실린더 영역 또는 비휘발성 메모리 장치(490)에 저장될 수도 있다.
RAM(470)에는 프로세서(430)의 제어에 따라 ROM(460), 디스크(12) 또는 비휘발성 메모리 장치(490)에 저장된 프로그램 코드 및 정보들이 초기화 모드에서 로딩된다.
도 4A의 디스크 드라이브(1000A')에서 이미 설명한 동일한 구성 수단들에 대한 중복된 설명은 피하기로 한다.
다음으로, 도 4A 또는 도 4B를 참조하여 리드 커맨드 또는 라이트 커맨드에서 지정하는 논리적 블록 어드레스에 대응되는 디스크의 물리적 어드레스를 탐색한 후에 실행되는 데이터 리드 동작 및 데이터 라이트 동작을 설명하기로 한다.
디스크 드라이브의 데이터 리드 동작 및 데이터 라이트 동작을 설명하기로 한다.
데이터 읽기(Read) 모드에서, 디스크 드라이브는 디스크(12)로부터 헤드(16)에 의하여 감지된 전기적인 신호를 프리 앰프(410)에서 증폭시킨다. 그리고 나서, 리드/라이트 채널(420)에서 신호의 크기에 따라 이득을 자동으로 가변시키는 자동 이득 제어 회로(도면에 미도시)에 의하여 프리 앰프(410)로부터 출력되는 신호를 증폭시키고, 이를 디지털 신호로 변환시킨 후에, 복호 처리하여 데이터를 검출한다. 검출된 데이터는 프로세서(430)에서 일예로서 에러 정정 코드인 리드 솔로몬 코드를 이용한 에러 정정 처리를 실행한 후에, 스트림 데이터로 변환하여 호스트 인터페이스(480)를 통하여 호스트 기기(2000)로 전송한다.
데이터 쓰기(Write) 모드에서, 디스크 드라이브는 호스트 인터페이스(480)를 통하여 호스트 기기로부터 데이터를 입력받아, 프로세서(430)에서 리드 솔로몬 코드에 의한 에러 정정용 심볼을 부가하고, 리드/라이트 채널(420)에 의하여 기록 채널에 적합하도록 부호화 처리한 후에 프리 앰프(410)에 의하여 증폭된 기록 전류로 헤드(16)를 통하여 디스크(12)에 기록시킨다.
그러면, RAM(470)에 로딩된 프로그램 코드 및 정보들을 이용하여 프로세서(430)에서 도 15 ~ 도 20 및 도 30의 흐름도에 따른 방법을 실행시키기 동작에 대하여 설명하기로 한다.
우선, 본 발명에 따른 저장 장치의 하나인 디스크 드라이브에서의 기록 밀도를 높이기 위하여 제안된 새로운 라이트 방식인 슁글 라이트(shingle write) 방식에 대하여 설명하기로 한다.
슁글 라이트 방식은 디스크의 트랙(track)들이 기왓장 쌓는 것처럼 서로 겹쳐지면서 한 쪽 방향으로만 라이트를 실행하는 라이트 방식이다. 즉, 도 7에 도시된 바와 같이, 슁글 라이트 방식은 화살표 방향으로 라이트를 실행한다고 가정하면, N-1 트랙과 인접한 N 트랙을 라이트할 때 N-1 트랙을 부분적으로 오버라이트하고, N 트랙에 인접한 N+1 트랙을 라이트할 때 N 트랙을 부분적으로 오버라이트함으로써, 저장 매체의 반경 방향의 기록 밀도인 TPI(Track Per Inch) 특성을 높일 수 있다.
이와 같은 슁글 라이트 방식은 항상 한쪽 방향으로만 플럭스(flux)가 발생하므로 N 트랙을 라이트한 후에는 N-1 트랙을 라이트할 수 없다는 제한 조건을 만족시켜야 한다. 만일, 도 8에 도시된 바와 같이 N 트랙을 라이트한 후에 슁글 라이트 진행 방향과 반대 방향인 N-1 트랙을 라이트하면, N 트랙이 ATI(Adjacent Track Interference) 영향에 의하여 지워지는 문제가 발생한다.
따라서, 이러한 문제를 해결하기 위하여 항상 디스크의 내주 방향 또는 디스크의 외주 방향 중의 어느 한 방향으로만 라이트를 수행하도록 호스트에서 제공되는 LBA(Logical Block Address)에 대한 새로운 디스크 주소를 동적으로 할당하는 기술이 필요하게 되었다.
본 발명에서는 기존의 LBA를 디스크 드라이브의 물리적 주소인 CHS(Cylinder Head Sector)로 변환시키는 과정에 가상 어드레스(Virtual Address)를 이용하여 기존 LBA를 그대로 이용하고, 디스크 드라이브에서 슁글 라이트 진행 방향을 한쪽 방향으로만 제한하는 조건을 만족시키도록 디스크를 액세스할 수 있는 방안을 제안한다.
도 9를 참조하여, 본 발명에 적용되는 액세스 방법을 구현하기 위한 존 및 가상 밴드 구성을 설명하기로 한다.
디스크(12)의 저장 영역은 복수개의 물리적인 존(zone)으로 나누어진다. 물리적 존별로 기록 밀도인 TPI(Tracks Per Inch) 또는 BPI(Bits Per Inch) 값을 다르게 설정할 수 있다. 각각의 물리적인 존에는 복수개의 가상 밴드(Virtual Band; VB)들이 포함되고, 각각의 가상 밴드들은 M개의 겹쳐 쓰여지는 연속된 트랙들의 집합으로 설정된다. 그리고, 가상 밴드들의 사이에 보호 트랙(Guard Track)을 두어, 가상 밴드들 사이에는 겹쳐 쓰기를 하지 않는다. 도 9를 참조하면, 물리적 존 1에는 (K+1)개의 가상 밴드(VB_0 ~ VB_K)들이 배정되는 구조를 갖는다. 즉, 가상 밴드는 저장 매체의 물리적인 저장 공간을 단위 사이즈로 분류한 것을 의미한다. 가상 밴드에 포함된 트랙에서는 디스크의 내주 방향 또는 외주 방향 중의 어느 한쪽 방향으로 데이터가 순차적으로 라이트하다 주소 사상 정보를 생성시킨다.
다음으로, 존 별 논리적 밴드와 가상 밴드의 할당 구조에 대하여 도 10을 참조하여 설명하기로 한다.
도 10은 본 발명의 기술적 사상에 의한 일실시 예에 따른 저장 매체의 물리적 존별 논리적 밴드(Logical Band; LB)에 대한 가상 밴드(Virtual Band; VB)의 할당 구조를 도식적으로 보여주는 도면이다.
도 10에 도시된 바와 같이, 저장 매체의 물리적 존(Zone)에서 실제 라이트 작업을 수행하기 위하여 논리적 밴드에 가상 밴드가 할당된다. 저장 매체의 물리적 존1을 (K+1)개의 논리적 밴드들로 구성할 수 있다. 여기에서, 논리적 밴드는 제1사이즈 단위의 연속되는 논리적 블록 어드레스들의 집합으로 정의된다. 즉, 논리적 밴드는 라이트 가능한 연속된 논리적 블록 어드레스들의 집합을 의미한다.
예를 들어, 물리적인 존 1의 논리적 블록 어드레스들의 범위는 0~999의 1,000개의 LBA로 구성되고, 물리적인 존 1에 속한 논리적 밴드가 각각 100개씩의 LBA 집합으로 설정된다고 가정하면, 물리적 존1에 포함되는 논리적 밴드의 개수는 10개가 된다.
이 때, 가상 밴드 개수는 논리적 밴드 개수보다 많은 Q(Q>K)개로 설정한다. 여기에서, 가상 밴드는 상기 저장 매체의 물리적인 저장 공간을 제2사이즈 단위로 분류하여 설정될 수 있다. 즉, 저장 매체가 디스크인 경우에 가상 밴드는 도 9에서 설명한 바와 같이, M개의 겹쳐 쓰여지는 트랙들의 집합으로 설정된다.
가상 밴드들 중에서 논리적 밴드에 할당되어 있지 않은 가상 밴드들을 리저브드 가상 밴드(Reserved Virture Band)라 칭할 수 있다. 이를 다르게 표현하면, 논리적 밴드에 할당되어 있지 않은 가상 밴드들에 대응되는 저장 영역을 리저브드 영역(Reserved Area)이라 칭할 수 있다. 리저브드 가상 밴드 정보는 아래의 도 14에서 설명되어질 프리 큐(Free Queue)에 저장된다.
그러면, 이와 같은 논리적 밴드를 이용하여 저장 장치에서 액세스하는 동작에 대하여 설명하기로 한다.
도 11은 본 발명의 기술적 사상에 의한 일실시 예에 따른 도 1A 및 도 1B에 도시된 저장 장치의 프로세서(110) 및 RAM(130) 또는 도 4A 및 도 4B에 도시된 디스크 드라이브의 프로세서(430) 및 RAM(470)의 세부 구성도를 보여준다. 설명의 편의를 위하여 도 11에 대하여 도 4A 및 도 4B의 디스크 드라이브를 참조하여 설명하기로 한다.
도 11에 도시된 바와 같이, 프로세서(430)는 클러스터 얼라인먼트 관리 프로세서(430-1), 주소 사상 정보 관리 프로세서(430-2) 및 어드레스 변환 프로세서(430-3)를 구비한다. 그리고, RAM(470)에는 주소 사상 정보(470-1)가 저장되고, 디스크(12)로부터 리드한 데이터 또는 디스크(12)에 라이트할 데이터가 리드/라이트 데이터(470-2) 영역에 저장된다.
주소 사상 정보 관리 프로세서(430-2)는 주소 사상 정보를 관리하는 프로세스를 수행한다. 세부적으로, 디스크 드라이브에 전원이 공급되면, 주소 사상 정보 관리 프로세서(430-2)는 디스크(12)에 저장되어 있는 주소 사상 정보(470-1)를 RAM(470)에 로딩시킨다. 즉, 주소 사상 정보 관리 프로세서(430-2)는 디스크(12) 로부터 주소 사상 정보(470-1)를 읽어내어 RAM(470)에 저장한다.
여기에서, 주소 사상 정보(470-1)는 가상의 어드레스를 이용하여 논리적 블록 어드레스를 저장 매체의 물리적 어드레스로 변환시키는 정보를 포함할 수 있다. 주소 사상 정보는 일 예로서 논리적 밴드와 가상 밴드의 할당 관계, 논리적 밴드에 할당된 가상 밴드에서의 논리적 블록 어드레스와 가상 어드레스의 할당 관계를 나타내는 매핑 테이블 정보가 될 수 있다. 그리고, 주소 사상 정보는 메타(meta) 데이터라 칭해지기도 한다.
주소 사상 정보(470-1)는 LBA에 기초하여 가상 어드레스를 검색할 수 있도록 구성될 수 있다. 가상 어드레스는 저장 매체에서의 물리적 어드레스에 기초하여 정의될 수 있다. 저장 매체가 디스크인 경우에 가상 어드레스는 섹터의 물리적 어드레스에 기초하여 정의될 수 있다. 또한, 디스크에서의 가상 어드레스는 CHS(Cylinder Head Sector)에 기초하여 정의될 수 있다. 뿐만 아니라, 디스크에서의 가상 어드레스는 물리적인 존, 가상 밴드, 트랙 및 섹터에 기초하여 정의될 수도 있다. 주소 사상 정보(470-1)는 슁글 라이트 방식에 따라 가상 밴드에 포함된 디스크의 트랙에서 내주 방향 또는 외주 방향 중의 어느 한쪽 방향으로 데이터가 순차적으로 라이트하다 생성될 수 있다.
주소 사상 정보(470-1)에는 물리적인 존 별로 논리적 밴드와 가상 밴드들의 할당 구조를 나타내는 정보들이 포함될 수 있다. 즉, 주소 사상 정보(470-1)에는 도 10에 도시된 바와 같은 물리적 존 별로 논리적 밴드에 할당되는 가상 밴드들의 매핑 구조를 나타내는 정보들이 포함될 수 있다.
도 10에 도시된 논리적 밴드에 할당되는 가상 밴드들의 할당 상태를 보여주는 주소 사상 정보를 도 21과 같이 생성시킬 수 있다.
도 21에 도시된 바와 같이, 주소 사상 정보에는 논리적 밴드 번호(LB NO), 가상 밴드 번호(VB NO), 가상 밴드에서 마지막으로 액세스된 가상 어드레스 번호(LA VA) 항목이 포함될 수 있다.
도 21을 참조하면, 논리적 밴드 번호 0에 가상 밴드 번호 2와 0이 할당되고, 가상 밴드 번호 2에서 마지막으로 액세스된 가상 어드레스는 199이고, 가상 밴드 번호 0에서 마지막으로 액세스된 가상 어드레스가 94라는 사실을 알 수 있다.
일 예로서, 가상 밴드의 사이즈를 200개의 섹터로 할당하고, 가상 밴드별로 가상 어드레스를 0~199로 설정하면, 가상 밴드 번호 2에는 마지막 가상 어드레스 199까지 할당되어 있으므로 새로 할당할 수 있는 가상 어드레스가 존재하지 않는다는 것을 보여준다. 그리고, 논리적 밴드 0에 포함된 LBA에 대한 라이트 커맨드가 수신되면, 가상 밴드 번호 0에서 마지막으로 액세스된 가상 어드레스에 1을 더한 가상 어드레스 95를 라이트 커맨드에서 지정하는 LBA에 매핑되도록 주소 사상 정보를 갱신한다.
그리고, 논리적 밴드 번호 0에 할당된 가상 밴드 0(VB_0)에서 LBA에 대한 가상 어드레스(VA; Virtual Address)의 매핑 구조의 일예를 도 22에 도시하였다.
도 22를 참조하면, 가상 밴드 0(VB_0)은 가상 어드레스를 0부터 199까지 포함하고 있으며, 각각의 가상 어드레스들은 섹터 단위로 할당된다. 따라서, 도 22에 따르면 단위 가상 밴드에는 200개의 섹터가 포함된다. 가로 줄은 하나의 트랙에 포함된 섹터들을 보여준다. 도 22에 도시된 바와 같이, 하나의 트랙에는 20개의 섹터들을 포함하는 구조를 보여준다. 트랙(track) 1에 포함된 20개의 섹터들은 각각 가상 어드레스(Virtual Address; VA) 0 ~19로 지정된다. 같은 방법을 적용하여, 트랙 10에 포함된 20개의 섹터들은 각각 VA 180~199로 지정된다.
도 22에 도시된 바와 같이, VA 0~9에 각각 LBA 0~9가 할당되고, VA 15 및 16에 각각 LBA 20 및 21이 할당되고, VA 38~47에 LBA 50~59가 할당되고, VA 86~94에 LBA 10~18이 할당된다. VA 10~14, 17~37, 48~85는 무효화된 가상 어드레스를 나타내고, VA 95~199는 할당되지 않은 유효한 가상 어드레스를 나타낸다. 무효화된 가상 어드레스는 업데이트된 LBA에 대응되었던 이전 가상 어드레스들을 의미한다.
도 22에 도시된 가상 밴드 0(VB_0)에 대한 주소 사상 정보를 일 예로서 도 23A와 같이 생성시킬 수 있다.
도 23A는 VB_0에서 할당된 개별적인 LBA에 대응되는 VA의 매핑 관계를 단순히 나타내는 매핑 테이블이다. 도 23A와 같은 구조의 매핑 테이블은 각각의 LBA에 대응되는 VA를 단순히 나열하는 구조를 갖기 때문에 데이터 양이 큰 단점이 있다.
이러한 단점을 보완하기 위하여 LBA와 VA가 함께 순차적으로 증가되는 그룹을 하나의 그룹으로 묶어서 주소 사상 정보를 생성시키는 방법을 제안한다.
즉, 새로 제안하는 주소 사상 정보에서는 LBA와 VA가 함께 순차적으로 증가되는 그룹을 시작 LBA, 시작 VA, 순차적으로 증가되는 섹터의 개수(SCN)로 표시한다.
도 22를 참조하면, VA 0~9에서 LBA가 0~9가 순차적으로 증가되고, VA 15~16에서 LBA 20~21이 순차적으로 증가되고, VA 38~47에서 LBA 50~59가 순차적으로 증가되고, VA 86~94에서 LBA 10~18이 순차적으로 증가된다.
위와 같이 LBA와 VA가 함께 순차적으로 증가되는 4개의 그룹에 대한 매핑 정보를 도 23B와 같이 표시할 수 있다.
VA 0~9에서 LBA가 0~9가 순차적으로 증가되는 그룹에 대해서는 시작 LBA 0, 시작 VA 0, 순차적으로 증가되는 섹터의 개수가 10이므로, (LBA, SCN, VA)를 (0, 10, 0)로 나타낼 수 있다.
같은 방식으로, VA 15~16에서 LBA 20~21이 순차적으로 증가되는 그룹에 대해서는 시작 LBA 20, 시작 VA 15, 순차적으로 증가되는 섹터의 개수가 2개이므로, (LBA, SCN, VA)를 (20, 2, 15)로 나타낼 수 있다. 그리고, VA 38~47에서 LBA 50~59가 순차적으로 증가되는 그룹에 대해서는 (LBA, SCN, VA)를 (50, 10, 38)로 나타낼 수 있고, VA 86~94에서 LBA 10~18이 순차적으로 증가되는 그룹에 대해서는 (LBA, SCN, VA)를 (10, 9, 86)으로 나타낼 수 있다. 이에 따라서, 논리적 블록 어드레스와 이에 대응되는 가상 어드레스가 함께 순차적으로 증가되는 영역에 대해서는 하나의 키 정보로 매핑 정보를 생성시킬 수 있게 된다.
이를 정리하면, 도 23B와 같은 주소 사상 정보를 생성시킬 수 있다. 도 23B에 도시된 주소 사상 정보는 도 23A에 도시된 주소 사상 정보에 비하여 단순해지고, 데이터 양이 감소된다는 사실을 알 수 있다.
논리적 밴드에 할당된 가상 밴드들에 대하여 도 23B와 같은 방식으로 각각의 가상 밴드에 대한 주소 사상 정보를 생성시킬 수 있다.
다시 도 11을 참조하면, RAM(470)에는 존 별로 도 21과 같은 논리적 밴드와 가상 밴드의 할당 관계 및 가상 밴드에서 마지막으로 액세스된 가상 어드레스를 나타내는 매핑 정보 및, 도 23B와 같은 논리적 밴드에 할당된 가상 밴드에서의 LBA에 대응되는 VA를 나타내는 매핑 정보를 포함하는 주소 사상 정보(470-1)가 저장될 수 있다.
주소 사상 정보 관리 프로세서(430-2)는 라이트 커맨드에 기초하여 RAM(470)에 저장되어 있는 주소 사상 정보(470-1)를 변경시킨다. 즉, 주소 사상 정보 관리 프로세서(430-2)는 라이트 커맨드에 의하여 논리적 밴드에 새로 할당된 가상 밴드 정보 또는 할당된 가상 밴드에서 LBA에 대응하여 추가된 가상 어드레스 정보를 RAM(470)에 저장되어 있는 주소 사상 정보(470-1)에 추가한다. 이에 따라서, RAM(470)에 저장되어 있는 주소 사상 정보(470-1)는 라이트 커맨드를 실행할 때마다 갱신된다.
주소 사상 정보 관리 프로세서(430-2)는 시스템 종료 커맨드가 수신되는 경우에, RAM(470)에 저장되어 있는 주소 사상 정보(470-1)를 읽어내어 디스크(12)에 라이트할 수 있다. 이에 따라서, 갱신된 주소 사상 정보(470-1)는 디스크(12)에 저장된다.
클러스터 얼라인먼트 관리 프로세서(430-1)는 디스크(12)를 포함하는 저장 매체로부터 읽어낸 클러스터 단위 사이즈에 대한 정보에 기초하여 적어도 하나의 클러스터(cluster) 단위로 데이터가 정렬되어 저장 매체에 라이트하도록 라이트 커맨드에서 지정하는 영역 및 라이트할 데이터를 변경하는 동작을 수행한다. 클러스터 얼라인먼트 관리 프로세서(430-1)의 세부적인 동작을 도 12를 참조하여 설명하기로 한다. 클러스터 단위는 저장 장치에서 데이터를 저장하는 저장 단위이며, 초기 값으로 설정할 수 있다.
클러스터 얼라인먼트 관리 프로세서(430-1)의 세부적인 구성을 도 12에 도시하였다.
도 12에 도시된 바와 같이, 클러스터 얼라인먼트 관리 프로세서(430-1)는 클러스터 단위 정렬 판정부(510), 더미 라이트용 영역 산출부(520), 주소 사상 정보 검색부(530), 더미 패턴 생성부(540) 및, 라이트 영역 변경부(550)를 구비한다.
클러스터 단위 정렬 판정부(510)는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 프로세스를 수행한다. 세부적으로, 다음과 같이 제1영역에 대한 클러스터 단위 정렬 상태를 판정한다.
우선, 라이트 커맨드에 포함된 (LBA, SIZE) 정보에 근거하여 제1영역의 시작 위치와 종료 위치를 산출한다. 여기에서, LBA는 제1영역의 시작 위치를 나타내는 논리적 블록 어드레스이고, SIZE는 제1영역의 섹터 수를 나타낸다. 즉, SIZE는 제1영역에 포함된 LBA의 범위를 나타낸다. 따라서, 제1영역의 종료 위치는 (LBA+SIZE-1) 값을 논리적 블록 어드레스가 된다. 예를 들어, (LBA, SIZE)가 (100, 10)인 경우에, 라이트 시작 위치는 LBA 100이고, 종료 위치는 LBA 109가 된다.
일 예로서, 디스크(12)의 섹터 사이즈가 512바이트로 설정되고, 클러스터 단위 사이즈가 4K바이트로 설정되어 있는 경우에, 클러스터 단위 사이즈는 8섹터가 된다. 이 경우에, 디스크(12)에서의 각각의 클러스터의 시작 위치는 LBA 0, LBA 8, LBA, 16, LBA 24, ... 가 될 것이다. 즉, 클러스터의 시작 위치는 8의 배수를 갖는 LBA가 된다. 그리고, 클러스터의 종료 위치는 8의 배수에서 1을 감산한 LBA가 된다. 다시 말해, 클러스터의 종료 위치는 LBA를 8로 나눈 나머지 값이 7을 갖게 된다.
이에 따라서, 라이트 커맨드에 포함된 (LBA, SIZE) 정보 중에서 LBA 값이 클러스터 단위 사이즈에 해당되는 섹터 수의 배수에 해당되면 클러스터의 시작 위치에 정렬되어 있다고 판정한다. 그리고, (LBA+SIZE-1) 값이 클러스터 단위 사이즈에 해당되는 섹터 수로 나눈 나머지 값이 클러스터 단위 사이즈에 해당되는 섹터 수에서 1을 감산한 값에 해당되면 클러스터의 종료 위치에 정렬되어 있다고 판정한다. 다른 방법으로, (LBA+SIZE) 값이 클러스터 단위 사이즈에 해당되는 섹터 수의 배수에 해당되면 클러스터의 종료 위치에 정렬되어 있다고 판정할 수도 있다.
도 24에는 라이트 커맨드에 따라서 데이터(DATA)가 라이트될 제1영역(A1)의 시작 위치 및 종료 위치가 각각 클러스터 단위로 정렬되어 있는 경우의 예를 보여준다. 여기에서, CP는 클러스터 단위 사이즈로 섹터 개수로 나타낼 수 있다. 도 25A에는 라이트 커맨드에 따라서 데이터가 라이트될 제1영역(A1)의 시작 위치가 클러스터 단위로 정렬되어 있고, 종료 위치는 클러스터 단위로 정렬되어 있지 않는 경우의 예를 보여준다. 도 26A에는 라이트 커맨드에 따라서 데이터가 라이트될 제1영역(A1)의 시작 위치가 클러스터 단위로 정렬되어 있지 않고, 종료 위치는 클러스터 단위로 정렬되어 있는 경우의 예를 보여준다. 도 27A에는 라이트 커맨드에 따라서 데이터가 라이트될 제1영역(A1)의 시작 위치 및 종료 위치가 모두 클러스터 단위로 정렬되어 있지 않는 경우의 예를 보여준다.
더미 라이트용 영역 산출부(520)는 클러스터 단위 정렬 판정부(510)의 판정 결과에 기초하여 라이트 커맨드에서 지정하는 제1영역에 대응되는 클러스터 내에서 제1영역(A1)에 포함되지 않은 제2영역(A2)에 대한 주소 정보를 산출하는 프로세스를 수행한다.
우선, 도 24에 도시된 바와 같이, 라이트 커맨드에 따라서 데이터(DATA)가 라이트될 제1영역(A1)의 시작 위치 및 종료 위치가 각각 클러스터 단위로 정렬되어 있는 경우에는 제2영역(A2)에 대한 주소 정보를 산출하지 않는다. 이 경우에는 제2영역(A2)에 대한 주소 정보를 산출할 필요가 없다.
일 예로서, 더미 라이트용 영역 산출부(520)는 제1영역(A1)의 시작 위치가 클러스터 단위로 정렬되어 있고 제1영역(A1)의 종료 위치가 클러스터 단위로 정렬되어 있지 않는 조건을 충족시키는 경우에만 제2영역(A2)에 대한 주소 정보를 산출하는 프로세스를 수행하도록 설계할 수 있다. 이 경우에는 도 24, 도 25A, 도 26A, 도 27A 중에서 도 25A에 도시된 바와 같이 판정된 경우에만 제2영역(A2)에 대한 주소 정보를 산출한다. 라이트 커맨드에 따라서 데이터(DATA)가 라이트될 제1영역(A1)의 시작 위치가 클러스터 단위로 정렬되지 않은 경우는 MFT 파일, 부트 섹터(Boot Sector), 부트 레코드(Boot Record)일 가능성이 높다. 이에 따라서, 이런 경우에는 섹터 단위로 라이트 커맨드 또는 리드 커맨드가 발생될 가능성이 높으므로 클러스터 단위로 정렬시키지 않도록 설계할 수 있다.
다른 예로서, 더미 라이트용 영역 산출부(520)는 제1영역(A1)의 시작 위치 또는 종료 위치가 클러스터 단위로 정렬되어 있지 않는 경우에 제2영역(A2)에 대한 주소 정보를 산출하는 프로세스를 수행하도록 설계할 수도 있다. 이 경우에는 도 24, 도 25A, 도 26A, 도 27A 중에서 도 25A, 도 26A, 도 27A에 도시된 바와 같이 판정된 경우에 각각 제2영역(A2)에 대한 주소 정보를 산출한다.
그러면, 도 25A, 도 26A, 도 27A를 참조하여 제2영역(A2)에 대한 주소 정보를 산출하는 동작에 대하여 구체적으로 설명하기로 한다.
우선, 도 25A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에, 더미 라이트용 영역 산출부(520)는 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)에 사이즈(SIZE) 정보를 더한 제1 논리적 블록 어드레스로부터 사이즈(SIZE) 정보를 클러스터 단위(CP) 사이즈로 나눈 나머지 값에 상기 제1논리적 블록 어드레스를 더한 후에 1을 감산한 제2논리적 블록 어드레스까지의 주소 정보로 제2영역(A2)에 대한 주소 정보를 결정한다.
예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1000, 20)이고, 클러스터 단위 사이즈가 8개의 섹터를 포함하는 경우에, CP는 8이 된다. 이 경우에, (LBA+SIZE)인 LBA 1020이 제2영역(A2)의 시작 어드레스인 제1논리적 블록 어드레스가 된다. 그리고, SIZE 정보인 20을 클러스터 단위(CP) 사이즈인 8로 나눈 나머지 값이 4이므로 제2영역(A2)의 종료 어드레스인 제2논리적 블록 어드레스는 LBA (1020+4-1)인 LBA 1023이 된다. 즉, 제2영역(A2)에 대한 주소 정보는 LBA 1020 ~ LBA 1023이 된다.
다음으로, 도 26A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에, 더미 라이트용 영역 산출부(520)는 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)를 클러스터 단위(CP) 사이즈로 나눈 나머지 값(X1)을 구한 후에, (LBA-X1) 값을 제2영역(A2)의 시작 어드레스로 결정하고, (LBA-1) 값을 제2영역(A2)의 종료 어드레스로 결정할 수 있다.
예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1004, 20)이고, 클러스터 단위 사이즈가 8개의 섹터를 포함하는 경우에, CP는 8이 된다. 이 경우에, 1004를 8로 나눈 나머지 값(X1)은 4가 된다. 이에 따라서 제2영역(A2)의 시작 어드레스는 (1004-4)인 1000이 되고, 제2영역(A2)의 종료 어드레스는 (1004-1)인 1003이 된다. 따라서, 제2영역(A2)에 대한 주소 정보는 LBA 1000 ~ LBA 1003이 된다.
다음으로, 도 27A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에, 더미 라이트용 영역 산출부(520)는 2개의 제2영역(A2', A2")에 대한 주소 정보를 산출한다. 즉, 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)를 클러스터 단위(CP) 사이즈로 나눈 나머지 값(X1)을 구한 후에, (LBA-X1) 값을 제2영역(A2')의 시작 어드레스로 결정하고, (LBA-1) 값을 제2영역(A2')의 종료 어드레스로 결정할 수 있다. 그리고, 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)에 사이즈(SIZE) 정보를 더한 값을 제2영역(A2")의 시작 어드레스로 결정하고, (SIZE+X1) 값을 클러스터 단위(CP) 사이즈로 나눈 나머지 값에 제2영역(A2")의 시작 어드레스를 더한 후에 1을 감산한 값을 제2영역(A2")의 종료 어드레스로 결정할 수 있다.
예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1004, 16)이고, 클러스터 단위 사이즈가 8개의 섹터를 포함하는 경우에, CP는 8이 된다. 이 경우에, 1004를 8로 나눈 나머지 값(X1)은 4가 된다. 이에 따라서 제2영역(A2')의 시작 어드레스는 (1004-4)인 1000이 되고, 제2영역(A2')의 종료 어드레스는 (1004-1)인 1003이 된다. 따라서, 제2영역(A2')에 대한 주소 정보는 LBA 1000 ~ LBA 1003이 된다. 그리고, (LBA+SIZE)인 LBA 1020이 제2영역(A2")의 시작 어드레스인 제1논리적 블록 어드레스가 된다. 그리고, (SIZE+X1) 값인 20을 클러스터 단위(CP) 사이즈인 8로 나눈 나머지 값이 4이므로 제2영역(A2")의 종료 어드레스인 제2논리적 블록 어드레스는 LBA (1020+4-1)인 LBA 1023이 된다. 즉, 제2영역(A2)에 대한 주소 정보는 LBA 1020 ~ LBA 1023이 된다.
이와 같은, 더미 라이트 영역 산출부(520)는 위에서 언급한 방식으로 클러스터 단위 정렬 판정부(510)의 판정 결과에 기초하여 라이트 커맨드에서 지정하는 제1영역에 대응되는 클러스터 내에서 제1영역에 포함되지 않은 제2영역에 대한 주소 정보를 산출할 수 있게 된다.
다음으로, 주소 사상 정보 검색부(530)는 더미 라이트 영역 산출부(520)에서 산출된 제2영역에 대한 주소가 RAM(470)에 저장된 주소 사상 정보(470-1)에 존재하는지를 판단한다. 참고적으로, 더미 라이트 영역 산출부(520)에서 산출된 제2영역에 대한 주소가 주소 사상 정보(470-1)에 존재하는 경우에는 제2영역(A2)에 대응되는 디스크(12)의 물리적인 영역에 이미 유효한 데이터가 저장되어 있다는 것을 의미한다.
더미 라이트 영역 산출부(520)에서 산출된 제2영역에 대한 주소가 RAM(470)에 저장된 주소 사상 정보(470-1)에 존재하지 않는 경우에, 더미 패턴 생성부(540)는 제2영역에 라이트할 더미 패턴(dummy pattern)을 생성시켜 RAM(470)의 라이트 데이터에 부가한다. 만일, 더미 라이트 영역 산출부(520)에서 산출된 제2영역에 대한 주소가 RAM(470)에 저장된 주소 사상 정보(470-1)에 존재하는 경우에는 제2영역에 대한 더미 패턴을 생성시키지 않는다. 여기에서, 더미 패턴은 연속적인 0으로 구성할 수 있다. 그리고, 데이터와 구별되는 특정 패턴으로 구성할 수 있다.
다음으로, 라이트 영역 변경부(550)는 더미 패턴이 생성된 제2영역이 포함되도록 라이트 커맨드에서 지정하는 라이트 영역을 변경한다. 즉, 제1영역과 제2영역이 포함되도록 라이트 커맨드에 포함된 (LBA, SIZE) 정보를 다음과 같이 (LBA', SIZE')로 변경한다.
도 25A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에는, 라이트 커맨드에 포함된 LBA 정보는 변경되지 않고 SIZE 정보만 제2영역(A2)의 사이즈만큼 증가되도록 변경된다. 예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1000, 20)인 경우에, 변경된 (LBA, SIZE') 정보는 (1000, 24)가 된다.
도 26A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에는, 라이트 커맨드에 포함된 LBA 정보를 제2영역(A2)의 사이즈만큼 감소시키고, SIZE 정보는 제2영역(A2)의 사이즈만큼 증가되도록 변경된다. 예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1004, 20)인 경우에, 변경된 (LBA', SIZE') 정보는 (1000, 24)가 된다.
도 27A와 같이 라이트 커맨드에서 라이트할 제1영역(A1)을 지정한 경우에는, 라이트 커맨드에 포함된 LBA 정보를 앞쪽의 제2영역(A2') 사이즈만큼 감소시키고, SIZE 정보는 2개 제2영역의 합(A2'+A2")의 사이즈만큼 증가되도록 변경된다. 예를 들어, 라이트 커맨드에 포함된 (LBA, SIZE) 정보가 (1004, 16)인 경우에, 변경된 (LBA', SIZE') 정보는 (1000, 24)가 된다.
이와 같이, 라이트 영역 변경부(550)에서 변환된 (LBA', SIZE') 정보를 어드레스 변환 프로세서(430-3)로 입력시킨다.
만일, 클러스터 단위 정렬 상태의 판정 결과에 기초하여 제2영역(A2)에 대한 주소 정보를 산출하지 않거나 또는 제2영역(A2)에 대한 주소 정보가 주소 사상 정보에 존재하는 경우에는 라이트 커맨드에 포함된 (LBA, SIZE) 정보를 변경시키지 않고 어드레스 변환 프로세서(430-3)로 입력시킨다.
어드레스 변환 프로세서(430-3)는 라이트 커맨드에 포함된 라이트할 위치에 대한 정보인 (LBA, SIZE) 또는 (LBA', SIZE')에 기초하여 라이트할 영역에 대한 LBA를 가상 밴드 및 가상 어드레스를 이용하여 저장 매체의 물리적 위치 정보로 변환시키는 프로세스를 수행한다. 어드레스 변환 프로세서(430-3)의 세부적 구성을 도 13에 도시하였다.
도 13에 도시된 바와 같이, 어드레스 변환 프로세서(430-3)는 제1프로세서(430-3A), 제2프로세서(430-3B) 및, 제3프로세서(430-3C)를 포함할 수 있다.
제1프로세서(430-3A)는 수신되는 라이트 커맨드에 포함된 (LBA, SIZE) 또는 변경된 라이트 커맨드에 포함된 (LBA', SIZE') 정보에서 라이트할 위치에 대한 LBA를 추출하는 동작을 수행한다.
제2프로세서(430-3B)는 제1프로세서(430-3A)에서 추출된 LBA를 가상 어드레스로 변환시키는 동작을 수행한다. 즉, 제2프로세서(430-3B)는 주소 사상 정보(470-1)를 검색하여 LBA를 가상 어드레스로 변환시키는 동작을 수행한다.
제2프로세서(430-3B)는 라이트 커맨드에서는 라이트 커맨드에서 지정하는 LBA에 대응되는 가상 밴드 및 가상 어드레스를 다음과 같이 할당한다.
도 13에 도시된 바와 같이, 제2프로세서(430-3B)는 프리 큐(free queue; 131), 얼로케이션 큐(allocation queue; 132) 및, 가비지 큐(garbage queue; 133)를 포함할 수 있다. 제2프로세서(430-3B)는 프리 큐(131), 얼로케이션 큐(132) 및, 가비지 큐(133)를 이용하여 라이트할 위치에 대한 LBA를 가상 어드레스로 변환시킨다.
제2프로세서(430-3B)는 프리 큐(131)에 논리적 밴드에 할당되어 있지 않은 가상 밴드들에 정보들을 정해진 규칙에 따른 순서로 저장한다. 프리 큐(131)에는 커맨드에 따라서 논리적 밴드에 할당될 수 있는 가상 밴드 정보들이 저장되어 선택을 위하여 대기하는 수단이다. 프리 큐(131)에는 물리적 존 별로 논리적 밴드에 할당될 수 있는 가상 밴드 정보들이 분류되어 저장될 수 있다.
제2프로세서(430-3B)는 얼로케이션 큐(132)에 논리적 밴드에 할당된 가상 밴드들에 대한 정보를 저장한다. 세부적으로, 제2프로세서(430-3B)는 라이트할 위치에 대한 LBA를 포함하는 논리적 밴드에 할당된 가상 밴드가 주소 사상 정보(470-1)에 존재하지 않거나 또는 라이트할 위치에 대한 LBA를 포함하는 논리적 밴드에 할당된 가상 밴드에서 모든 가상 어드레스가 이미 할당되어 소진된 경우에, 프리 큐(131)에 대기 중인 하나의 가상 밴드를 선택하여 라이트할 위치에 대한 LBA를 포함하는 논리적 밴드에 할당하여 얼로케이션 큐(132)로 이동시킨다(P1).
다음으로, 제2프로세서(430-3B)는 얼로케이션 큐(132)에 저장되어 있는 논리적 밴드에 할당된 가상 밴드에 기초하여 라이트할 위치에 대한 LBA에 대응되는 가상 어드레스를 할당한다. 구체적으로, 제2프로세서(430-3B)는 라이트할 위치에 대한 LBA를 포함하는 논리적 밴드에 새로운 가상 어드레스를 할당하여 얼로케이션 큐(132)에 저장한 경우에, 새로 할당된 논리적 밴드의 첫 번째 섹터에 대응되는 가상 어드레스를 커맨드에서 지정하는 LBA에 할당한다.
그리고, 제2프로세서(430-3B)는 라이트할 위치에 대한 LBA를 포함하는 논리적 밴드에 이미 할당된 가상 밴드가 얼로케이션 큐(132)에 존재하는 경우에, 해당 가상 밴드에서 할당되지 않은 가상 어드레스를 라이트할 위치에 대한 LBA에 할당한다. 일 예로서, 가상 밴드에서 마지막으로 액세스된 섹터 바로 다음 섹터에 대한 가상 어드레스를 라이트할 위치에 대한 LBA에 할당할 수 있다.
제2프로세서(430-3B)는 논리적 밴드에 할당된 가상 밴드들 중에서 데이터 업데이트에 따른 무효화된 가상 어드레스의 개수가 임계치를 초과하는 가상 밴드를 선택하여 가비지 큐(133)로 이동시킨다(P2).
그리고, 제2프로세서(430-3B)는 일 예로서, 프리 큐(1601)에 저장된 가상 밴드들의 개수가 초기 설정된 최소값 미만인 경우에, 가비지 컬렉션 프로세스를 수행한다. 즉, 제2프로세서(430-3B)는 가비지 큐(133)에 저장되어 있는 가상 밴드에서 유효한 가상 어드레스들의 섹터에 저장되어 데이터를 읽어내어 프리 큐(131)에서 새로 할당받은 가상 밴드에서 지정하는 가상 어드레스에 다시 쓰기를 실행한다.
제2프로세서(430-3B)는 가비지 큐(133)에 저장된 가상 밴드들 중에서 이와 같이 다시 쓰기를 수행한 가상 밴드에 대한 정보를 프리 큐(131)로 이동시킨다(P3).
다음으로, 제3프로세서(430-3C)는 제2프로세서(430-3B)에서 변환된 가상 어드레스를 디스크의 물리적 어드레스로 변환시키고, 변환된 물리적 어드레스에 따라서 저장 매체를 액세스하도록 저장 장치를 제어한다. 즉, 제3프로세서(430-3C)는 가상 어드레스를 디스크의 물리적 위치를 나타내는 CHS(Cylinder Head Sector) 정보로 변환시키고, 변환된 CHS(Cylinder Head Sector) 정보에 기초하여 디스크를 액세스하기 위한 보이스 코일 모터 구동 제어신호를 생성시킨다.
도 4A 및 도 4B를 참조하면, 제3프로세서(430-3C)에서 생성된 보이스 코일 모터 구동 제어신호가 VCM 구동부(440)에 인가되면, VCM 구동부(440)는 보이스 코일 모터 구동 제어신호에 상응하는 보이스 코일 모터 구동 전류를 생성시켜 보이스 코일 모터(30)에 공급한다. 이에 따라서, 자기 헤드(16)는 액세스하고자 하는 디스크의 트랙 위치로 이동되어, 커맨드에 상응하는 데이터 라이트 또는 데이터 리드 동작을 수행할 수 있게 된다.
다음으로, 도 1A 및 도 1B에 도시된 프로세서(110) 또는 도 4A 및 도 4B에 도시된 프로세서(430)의 제어에 의하여 실행되는 본 발명의 기술적 사상에 의한 일실시 예에 따른 데이터 라이트 방법을 도 15의 흐름도를 참조하여 설명하기로 한다.
프로세서(110)는 호스트 기기(2000)로부터 라이트 커맨드가 수신되는지를 판단한다(S101).
단계101(S101)의 판단 결과 호스트 기기(2000)로부터 라이트 커맨드가 수신된 경우에, 프로세서(110)는 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정한다(S102). 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 다양한 실시 예를 도 16 ~ 도 18을 참조하여 설명하기로 한다.
본 발명의 일 실시 예에 따른 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 방법을 도 16을 참조하여 설명하기로 한다.
프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S201). 세부적으로, 프로세서(110)는 라이트 커맨드에 포함된 (LBA, SIZE) 정보 중에서 LBA 값이 클러스터 단위 사이즈에 해당되는 섹터 수의 배수에 해당되면 클러스터의 시작 위치에 정렬되어 있다고 판정할 수 있다. 일 예로서, 라이트 커맨드에서 지정하는 제1영역이 도 24 및 도 도 25A와 같은 경우에, 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있다고 판단한다.
단계201(S201)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있다고 판단된 경우에, 프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S202). 일 예로서, 프로세서(110)는 라이트 커맨드에 포함된 (LBA, SIZE) 정보에 기초하여, (LBA+SIZE-1) 값이 클러스터 단위 사이즈에 해당되는 섹터 수로 나눈 나머지 값이 클러스터 단위 사이즈에 해당되는 섹터 수에서 1을 감산한 값에 해당되면 클러스터의 종료 위치에 정렬되어 있다고 판정할 수 있다. 다른 방법으로, (LBA+SIZE) 값이 클러스터 단위 사이즈에 해당되는 섹터 수의 배수에 해당되면 클러스터의 종료 위치에 정렬되어 있다고 판정할 수 있다.
단계202(S202)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있지 않다고 판단된 경우에, 프로세서(110)는 제1상태로 판정한다.
단계201(S201)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않거나, 또는 단계202(S202)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있다고 판단된 경우에, 프로세서(110)는 제2상태로 판정한다.
도 16과 같은 흐름도에서는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있고 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있지 않은 경우에만, 제1상태로 판정하여 더미 패턴 라이트를 이용하여 클러스터 단위로 라이트 되도록 처리한다.
본 발명의 다른 실시 예에 따른 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 방법을 도 17을 참조하여 설명하기로 한다.
프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S301). 도 16에서 설명한 단계201(S201)과 같은 방식으로 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있는지 판단할 수 있다.
단계301(S301)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있다고 판단된 경우에, 프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S302). 도 16에서 설명한 단계202(S202)와 같은 방식으로 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있는지 판단할 수 있다.
단계302(S302)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있다고 판단된 경우에, 프로세서(110)는 제2상태로 판정한다.
단계301(S301)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않거나, 또는 단계302(S302)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있지 않다고 판단된 경우에, 프로세서(110)는 제1상태로 판정한다.
본 발명의 또 다른 실시 예에 따른 라이트 커맨드에서 지정하는 제1영역에 대한 클러스터 단위 정렬 상태를 판정하는 방법을 도 18을 참조하여 설명하기로 한다.
프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S401). 도 16에서 설명한 단계202(S202)와 같은 방식으로 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있는지 판단할 수 있다.
단계401(S401)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있지 않다고 판단된 경우에, 프로세서(110)는 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있는지 판단한다(S402). 도 16에서 설명한 단계201(S201)과 같은 방식으로 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있는지 판단할 수 있다.
단계402(S402)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있다고 판단된 경우에, 프로세서(110)는 제1상태로 판정한다.
단계401(S401)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 종료 위치가 클러스터 단위로 정렬되어 있거나, 또는 단계402(S402)의 판단 결과 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않다고 판단된 경우에, 프로세서(110)는 제2상태로 판정한다.
도 16 ~ 도 18에 도시된 실시 예들에 따라 도 15에 도시된 단계102(S102)에 대한 프로세스를 수행할 수 있게 된다.
다시 도 15를 참조하면, 단계102(S102)의 판정 결과 제1상태로 판정된 경우에, 프로세서(110)는 클러스터 단위 정렬에 필요한 제2영역의 주소 정보를 산출한다(S103).
세부적으로, 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있고, 종료 위치가 클러스터 단위로 정렬되어 있지 않는 제1상태에서는 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)에 사이즈(SIZE) 정보를 더한 제1 논리적 블록 어드레스로부터 사이즈(SIZE) 정보를 클러스터 단위(CP) 사이즈로 나눈 나머지 값에 상기 제1논리적 블록 어드레스를 더한 후에 1을 감산한 제2논리적 블록 어드레스까지의 주소 정보로 제2영역(A2)에 대한 주소 정보를 결정할 수 있다.
다음으로, 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않고, 종료 위치가 클러스터 단위로 정렬되어 있는 제1상태에서는 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)를 클러스터 단위(CP) 사이즈로 나눈 나머지 값(X1)을 구한 후에, (LBA-X1) 값을 제2영역(A2)의 시작 어드레스로 결정하고, (LBA-1) 값을 제2영역(A2)의 종료 어드레스로 결정할 수 있다.
그리고, 라이트 커맨드에서 지정하는 제1영역의 시작 위치가 클러스터 단위로 정렬되어 있지 않고, 종료 위치도 클러스터 단위로 정렬되어 있지 않는 제1상태에서는 클러스터 단위 정렬에 2개의 제2영역(A2', A2")이 필요하게 된다. 2개의 제2영역(A2', A2")에 대한 주소 정보는 다음과 같이 산출할 수 있다. 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)를 클러스터 단위(CP) 사이즈로 나눈 나머지 값(X1)을 구한 후에, (LBA-X1) 값을 제2영역(A2')의 시작 어드레스로 결정하고, (LBA-1) 값을 제2영역(A2')의 종료 어드레스로 결정할 수 있다. 그리고, 라이트 커맨드에서 지정하는 논리적 블록 어드레스(LBA)에 사이즈(SIZE) 정보를 더한 값을 제2영역(A2")의 시작 어드레스로 결정하고, (SIZE+X1) 값을 클러스터 단위(CP) 사이즈로 나눈 나머지 값에 제2영역(A2")의 시작 어드레스를 더한 후에 1을 감산한 값을 제2영역(A2")의 종료 어드레스로 결정할 수 있다.
프로세서(110)는 단계103(S103)에서 산출된 제2영역의 주소 정보가 주소 사상 정보에 존재하는지 판단한다(S104). 즉, 프로세서(110)는 제2영역에 대한 주소가 RAM(130)에 저장된 주소 사상 정보(470-1)에 존재하는지를 판단한다. 참고적으로, 제2영역(A2)에 대한 주소가 주소 사상 정보(470-1)에 존재하는 경우에는 제2영역(A2)에 대응되는 저장 매체(150)의 물리적인 영역에 이미 유효한 데이터가 저장되어 있다는 것을 의미한다.
단계104(S104)의 판단 결과 제2영역의 주소 정보가 주소 사상 정보에 존재하지 않는 경우에, 프로세서(110)는 제1영역에는 라이트 커맨드에 따른 데이터를 라이트하고 제2영역에는 더미 패턴을 라이트하도록 저장 장치를 제어한다(S105). 그리고, 프로세서(110)는 라이트 커맨드에 따른 제1영역과 제2영역을 포함하는 논리적 블록 어드레스들에 대하여 하나의 키 정보로 매핑 정보를 생성시켜 주소 사상 정보에 추가한다. 그리고, 프로세서(110)는 LBA와 VA가 함께 순차적으로 증가되는 영역에서는 하나의 키 정보로 매핑 정보를 통합하여 주소 사상 정보를 생성시킨다. 단계105(S105)를 실행시키기 위한 세부적인 동작을 도 19를 참조하여 설명하기로 한다.
도 19를 참조하면, 프로세서(110)는 제2영역에 라이트할 더미 패턴을 생성시켜 라이트할 데이터에 부가한다(S501). 즉, 프로세서(110)는 도 12의 더미 라이트용 영역 산출부(520)에서 산출된 제2영역(A2)에 대한 주소 정보 중에서 주소 사상 정보에 존재하지 않는 경우에 산출된 제2영역(A2)에 라이트할 더미 패턴을 생성시켜 라이트할 데이터에 부가한다. 제2영역(A2)을 산출하는 동작에 대해서는 도 12 및 도 25A ~ 도 27B에서 상세히 설명하였으므로 중복적인 설명은 피하기로 한다.
그리고, 프로세서(110)는 제1영역과 제2영역이 포함되도록 라이트 커맨드를 변경한다(S502). 즉, 프로세서(110)는 제1영역과 제2영역이 포함되도록 라이트 커맨드에 지정하는 라이트할 영역을 나타내는 (LBA, SIZE) 정보를 변경한다.
다음으로, 프로세서(110)는 변경된 라이트 커맨드를 적용하여 라이트 동작을 수행한다(S503). 즉, 변경된 (LBA, SIZE) 정보를 적용하여 라이트 동작을 수행한다. 데이터 저장 장치의 일 예인 도 4A 및 도 4B의 디스크 드라이브에서 라이트 동작을 수행하는 프로세스에 대하여 도 20을 참조하여 상세히 설명하기로 한다.
프로세서(430)는 수신되는 라이트 커맨드 또는 변경된 라이트 커맨드에 따라 라이트하고자 하는 LBA에 대응되는 논리적 밴드(Logical Band; LB)를 결정한다(S601). 세부적으로, 프로세서(430)는 라이트하고자 하는 LBA를 포함하는 논리적 밴드 번호로 라이트하고자 하는 LBA에 대응되는 논리적 밴드를 결정한다. 예를 들어, 논리적 밴드 번호 0이 LBA 0~999로 할당되어 있고, 라이트하고자 하는 LBA가 75이라면, 라이트하고자 하는 LBA에 대응되는 논리적 밴드는 논리적 밴드 번호 0으로 결정된다.
프로세서(430)는 단계601(S601)에서 결정된 논리적 밴드에 할당된 가상 밴드가 존재하는지 판단한다(S602). 세부적으로, 프로세서(430)는 RAM(470)에 저장되는 있는 주소 사상 정보(470-1)를 검색하여 단계601(S601)에서 결정된 논리적 밴드에 할당된 가상 밴드가 이미 존재하는지 판단한다.
단계602(S602)의 판단 결과 단계601(S601)에서 결정된 논리적 밴드에 할당된 가상 밴드가 존재하는 경우에, 프로세서(430)는 할당된 가상 밴드에서 할당 가능한 가상 어드레스(VA)가 존재하는지 판단한다(S603). 즉, 할당된 가상 밴드에서 할당할 수 있는 가상 어드레스가 모두 소진되었는지 판단한다. 할당된 가상 밴드에서 마지막으로 액세스된 가상 어드레스가 가상 밴드에 포함된 마지막 섹터에 대응되는 가상 어드레스인 경우에 가상 어드레스가 모두 소진된 것으로 판단한다. 예를 들어, 가상 밴드의 사이즈가 200 섹터로 설정되고, 시작 가상 어드레스가 0~199로 설정되어 있는 경우에, 마지막으로 액세스된 가상 어드레스가 199이면 해당 가상 밴드에서 가상 어드레스가 모두 소진된 것으로 판단할 수 있다.
단계602(S602)의 판단 결과 단계601(S601)에서 결정된 논리적 밴드에 할당된 가상 밴드가 존재하지 않거나 또는 단계603(S603)의 판단 결과 할당된 가상 밴드에 할당 가능한 가상 어드레스가 존재하지 않은 경우에, 프로세서(430)는 물리적 존에 기초하여 단계601(S601)에서 결정된 논리적 밴드에 새로운 가상 밴드를 할당한다(S604). 즉, 프로세서(430)는 라이트하고자 하는 LBA를 포함하는 논리적 밴드에 대응되는 물리적 존에 포함된 가상 밴드들 중에서 다른 논리적 밴드에 할당되지 않은 가상 밴드를 라이트하고자 하는 LBA를 포함하는 논리적 밴드에 할당할 수 있다.
다음으로, 프로세서(430)는 할당된 가상 밴드에 기초하여 라이트하고자 하는 LBA에 대응되는 가상 어드레스(VA)를 할당한다(S605). 세부적으로, 프로세서(430)는 단계604(S604)에 의하여 새로운 가상 어드레스가 할당된 경우에는 새로 할당된 가상의 첫 번째 섹터를 나타내는 시작 가상 어드레스를 커맨드에서 지정하는 LBA에 할당할 수 있다. 그리고, 프로세서(430)는 논리적 밴드에 이미 할당되어 있는 가상 밴드에 LBA에 할당 가능한 가상 어드레스가 존재하는 경우에는 가상 밴드에서 마지막으로 액세스된 가상 어드레스에 연속되는 다음 가상 어드레스를 커맨드에서 지정하는 LBA에 할당할 수 있다. 프로세서(430)는 LBA와 VA가 함께 순차적으로 증가되는 영역에서는 하나의 키 정보로 매핑 정보를 통합하여 주소 사상 정보를 생성시킨다.
다음으로, 프로세서(430)는 단계605(S605)에서 할당된 가상 어드레스를 디스크(12)의 물리적 액세스 위치 정보에 해당되는 CHS(Cylinder Head Sector) 정보로 변환시킨다.
다음으로, 프로세서(430)는 단계606(S606)에서 변환된 물리적 액세스 위치 정보에 해당되는 CHS 정보에 기초하여 시크(seek) 동작을 실행한다(S607). 세부적으로, 프로세서(430)는 변환된 CHS 정보에 따른 디스크(12)의 목표 트랙 위치로 자기 헤드(16)를 이동시키기 위한 보이스 코일 모터 구동 제어신호를 생성시킨다. 도 4A 및 도 4B를 참조하면, 이와 같이 생성된 보이스 코일 모터 구동 제어신호가 VCM 구동부(440)에 인가되면, VCM 구동부(440)는 보이스 코일 모터 구동 제어신호에 상응하는 보이스 코일 모터 구동 전류를 생성시켜 보이스 코일 모터(30)에 공급한다. 이에 따라서, 자기 헤드(16)는 액세스하고자 하는 디스크의 트랙 및 섹터 위치로 이동된다.
단계607(S607)의 시크 동작을 마친 후에, 프로세서(430)는 디스크(12)의 VA에 대응되는 섹터 위치에서 데이터 또는 더미 패턴을 라이트하는 동작을 수행한다(S608). 위에서 설명한 바와 같이, 프로세서(430)는 제1영역에는 라이트 커맨드에 따른 데이터를 라이트하고, 제2영역에는 더미 패턴을 라이트하는 동작을 수행한다.
이와 같은 동작에 의하여 도 19에 도시된 단계503(S503)에 따른 디스크 드라이브에서의 변경된 라이트 커맨드를 실행할 수 있게 된다.
다시 도 15를 참조하면, 만일 단계102(S102)의 판정 결과 제2상태로 판정되거나 또는 단계104(S104)의 판단 결과 제2영역의 주소 정보가 주소 사상 정보에 존재하는 경우에, 프로세서(110)는 라이트 커맨드에서 지정하는 제1영역에만 라이트 커맨드에 따른 데이터를 라이트하도록 저장매체 인터페이스(140)를 제어한다(S106). 즉, 이 경우에는 클러스터 단위로 정렬시키기 위한 더미 라이트를 수행하지 않게 된다.
그리고, 도 15와 같은 흐름도에 따른 동작을 수행하면 저장매체(150)에는 다음과 같은 상태로 라이트된다.
라이트 커맨드에서 라이트할 제1영역(A1)이 도 25A와 같이 지정되어 제1상태로 판정되고 제2영역(A2)의 주소 정보가 주소 사상 정보에 존재하지 않는 경우에, 도 25B에 도시된 바와 같이 제1영역(A1)에는 라이트 커맨드에 따라 수신된 데이터가 라이트되고, 빗금친 제2영역(A2)에는 더미 패턴이 라이트된다.
라이트 커맨드에서 라이트할 제1영역(A1)이 도 26A와 같이 지정되어 제1상태로 판정되고 제2영역(A2)의 주소 정보가 주소 사상 정보에 존재하지 않는 경우에, 도 26B에 도시된 바와 같이 제1영역(A1)에는 라이트 커맨드에 따라 수신된 데이터가 라이트되고, 빗금친 제2영역(A2)에는 더미 패턴이 라이트된다.
라이트 커맨드에서 라이트할 제1영역(A1)이 도 27A와 같이 지정되어 제1상태로 판정되고 제2영역(A2', A2")의 주소 정보가 주소 사상 정보에 존재하지 않는 경우에, 도 27B에 도시된 바와 같이 제1영역(A1)에는 라이트 커맨드에 따라 수신된 데이터가 라이트되고, 빗금친 제2영역(A2', A2")에는 더미 패턴이 라이트된다.
다음으로, 본 발명의 기술적 사상에 의한 일실시 예에 따른 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 설명하기로 한다.
우선, 네트워크를 통하여 저장 장치의 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 수행하는 네트워크 시스템에 대하여 도 29를 참조하여 설명하기로 한다.
도 29에 도시된 바와 같이, 본 발명의 기술적 사상에 의한 일실시 예에 따른 네트워크 시스템은 프로그램 제공 단말기(610), 네트워크(620), 호스트 PC(630) 및 저장 장치(640)를 구비한다.
네트워크(620)는 인터넷 등과 같은 통신망으로 구현될 수 있다. 물론, 유선 통신망뿐만 아니라 무선 통신망으로 구현될 수도 있다.
프로그램 제공 단말기(610)에는 도 15 ~ 도 20에 도시된 흐름도에 따른 동작을 수행하기 위한 클러스터 얼라인먼트 관리용 프로그램이 저장되어 있다.
프로그램 제공 단말기(610)는 네트워크(620)를 통하여 접속된 호스트 PC(630)에서의 프로그램 전송 요청에 따라서 클러스터 얼라인먼트 관리용 프로그램을 호스트 PC(630)로 전송하는 프로세스를 수행한다.
호스트 PC(630)는 네트워크(620)를 통하여 프로그램 제공 단말기(610)에 접속한 후에 클러스터 얼라인먼트 관리용 프로그램의 전송을 요청하고, 요청한 클러스터 얼라인먼트 관리용 프로그램을 프로그램 제공 단말기(610)로부터 다운로드 받는 동작을 수행할 수 있는 하드웨어 및 소프트웨어를 구비하고 있다.
그리고, 호스트 PC(630)는 프로그램 제공 단말기(610)로부터 다운로드 받은 클러스터 얼라인먼트 관리용 프로그램에 의하여 도 15 ~ 도 20에 도시된 흐름도에 기초하여 본 발명의 기술적 사상에 따른 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 저장 장치(640)에서 실행시킬 수 있게 한다.
그러면, 본 발명의 기술적 사상에 의한 일실시 예에 따른 네트워크를 통한 라이트 동작에서의 클러스터 얼라인먼트 관리 방법을 도 30의 흐름도를 참조하여 설명하기로 한다.
우선, 디스크 드라이브 등과 같은 저장 장치(640)를 이용하는 호스트 PC(630)에서 네트워크(620)를 통하여 프로그램 제공 단말기(610)에 접속한다(S701).
프로그램 제공 단말기(610)에 접속한 후에, 호스트 PC(630)는 클러스터 얼라인먼트 관리용 프로그램의 전송을 요청하는 정보를 프로그램 제공 단말기(610)로 전송한다(S702).
그러면, 프로그램 제공 단말기(610)는 호스트 PC(630) 측으로 요청된 클러스터 얼라인먼트 관리용 프로그램을 전송함으로써, 호스트 PC(630)는 클러스터 얼라인먼트 관리용 프로그램을 다운로드 한다(S703).
그리고 나서, 호스트 PC(630)는 다운로드 된 클러스터 얼라인먼트 관리용 프로그램을 저장 장치에서 실행시키도록 처리한다(S704). 저장 장치에서 클러스터 얼라인먼트 관리용 프로그램을 실행함으로써, 도 15 ~ 도 20에 따른 방법을 수행할 수 있게 된다.
동적 주소 변환 방식을 이용하는 디스크 드라이브에서 본 발명을 적용하여 클러스터 단위 사이즈가 8섹터인 영역에서 라이트 커맨드에 포함되는 (LBA, SIZE) 정보가 각각 (80, 1), (88, 1), (96, 1), (104, 1)로 설정된 4번의 라이트 동작을 수행하는 경우에, 가상 밴드 번호 0에서 LBA에 매핑되는 가상 어드레스의 상태를 도 28A에 도시하였다.
클러스터 단위 사이즈가 8개 섹터이므로 단일 섹터를 라이트하기 위한 라이트 커맨드에서 대해서도 도 28A에 도시된 바와 같이 8개 섹터 단위로 라이트를 수행하게 된다. 1개 트랙이 20개의 섹터로 구성된 경우에는 적어도 2개 트랙에서 라이트 동작이 수행된다.
그리고, 이와 같이 라이트 동작을 수행하면 LBA 80부터 LBA 111까지 LBA가 순차적으로 증가되고, 이에 대응되는 가상 어드레스도 VA 0부터 VA 31까지 순차적으로 증가된다. 이에 따라서, LBA 80 ~ LBA 111 범위에서는 LBA에 대응되는 VA의 매핑 정보를 단일의 주소 사상 정보로 나타낼 수 있다.
만일, 동적 주소 변환 방식을 이용하는 디스크 드라이브에서 본 발명을 적용하지 않고 클러스터 단위 사이즈가 8섹터인 영역에서 라이트 커맨드에 포함되는 (LBA, SIZE) 정보가 각각 (80, 1), (88, 1), (96, 1), (104, 1)로 설정된 4번의 라이트 동작을 수행하는 경우에, 가상 밴드 번호 0에서 LBA에 매핑되는 가상 어드레스의 상태를 도 28B에 도시하였다. 1개 트랙이 20개의 섹터로 구성된 경우에는 1개 트랙에서 라이트 동작이 가능해진다.
라이트 커맨드에서 지정하는 각각의 LBA에 대응되는 섹터에 대해서만 라이트가 실행되므로 가상 밴드 번호 0에서 LBA에 매핑되는 가상 어드레스의 상태는 도 28B와 같다. 그리고, 라이트 동작에 따른 LBA에 대응되는 VA의 매핑 정보는 4개의 주소 사상 정보로 나타내게 된다.
본 발명은 슁글 라이트 방식을 이용하는 디스크 드라이브 뿐만 아니라, 다양한 라이트 방식을 이용하는 저장 장치에 적용할 수 있다.
본 발명은 방법, 장치, 시스템 등으로서 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필연적으로 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되어 질 수 있다. 프로세서 판독 가능 매체의 예로는 전자 회로, 반도체 메모리 소자, ROM, 플레쉬 메모리, 이레이져블 ROM(EROM: Erasable ROM), 플로피 디스크, 광디스크, 하드 디스크 등이 있다.
첨부된 도면에 도시되어 설명된 특정의 실시 예들은 단지 본 발명의 예로서 이해되어 지고, 본 발명의 범위를 한정하는 것이 아니며, 본 발명이 속하는 기술분야에서 본 발명에 기술된 기술적 사상의 범위에서도 다양한 다른 변경이 발생될 수 있으므로, 본 발명은 보여지거나 기술된 특정의 구성 및 배열로 제한되지 않는 것은 자명하다.
1000A, 1000B; 저장 장치, 2000; 호스트 기기, 3000; 커넥터, 110; 프로세서, 120; ROM, 130; RAM, 140; 저장매체 인터페이스, 150; 저장매체, 160; 호스트 인터페이스, 170; 버스, 410; 프리 앰프, 420; 리드/라이트 채널, 430; 프로세서, 440; 보이스 코일 모터 구동부, 450; 스핀들 모터 구동부, 460; ROM, 470; RAM, 480; 호스트 인터페이스, 430-1; 클러스터 얼라인먼트 관리 프로세서, 430-2; 주소 사상 정보 관리 프로세서, 430-3; 어드레스 변환 프로세서, 430-3A; 제1프로세서, 430-3B; 제2프로세서, 430-3C; 제3프로세서, 131; 프리 큐, 132; 얼로케이션 큐, 133; 가비지 큐, 610; 프로그램 제공 단말기, 620; 네트워크, 630; 호스트 PC, 640; 하드디스크 드라이브.

Claims (19)

  1. 방법으로서,
    데이터 저장 매체의 목표 위치에 라이트하기 위해 호스트 데이터를 포함하는 호스트로부터 라이트 요청을 수신하는 단계 ― 상기 목표 위치는 적어도 하나의 클러스터를 포함하고, 클러스터는 상기 데이터 저장 매체의 다수의 순차적으로 넘버링된 데이터 저장 어드레스들을 가짐 ―;
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터를 포함하는 라이트 데이터를 상기 적어도 하나의 클러스터에 라이트하는 단계 ― 상기 적어도 하나의 클러스터는 상기 적어도 하나의 클러스터의 선두 경계에서의 선두 저장 어드레스 및 상기 적어도 하나의 클러스터의 말단 경계에서의 말단 저장 어드레스를 포함하고, 더미 데이터는 호스트 데이터에 의해 라이트되지 않는 상기 목표 위치 내 데이터 저장 어드레스들을 채우도록 라이트되는 임의의 데이터임 ―
    를 포함하고,
    상기 라이트하는 단계는:
    상기 호스트 데이터에 의해 라이트되고 상기 호스트 데이터를 상기 라이트 데이터에 부가하는 상기 적어도 하나의 클러스터의 세그먼트를 결정하는 단계;
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 최초의 연이은 저장 어드레스들이 상기 호스트 데이터에 의해 라이트되지 않는 경우 및 기존 데이터가 아직 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 저장되지 않은 경우에 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 라이트하기 위한 상기 더미 데이터를 상기 라이트 데이터에 부가하는 단계 ― 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들은 상기 적어도 하나의 클러스터의 상기 선두 저장 어드레스를 포함함 ―;
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 마지막 연이은 저장 어드레스들이 호스트 데이터에 의해 라이트되지 않은 경우 및 기존 데이터가 아직 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 저장되지 않은 경우에 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 라이트하기 위한 상기 더미 데이터를 상기 라이트 데이터에 부가하는 단계 ― 상기 하나 또는 그 초과의 마지막 저장 연이은 어드레스들은 상기 적어도 하나의 클러스터의 말단 저장 어드레스를 포함함 ―; 및
    상기 라이트 데이터를 상기 적어도 하나의 클러스터에 라이트하는 단계
    를 포함하는,
    방법.
  2. 제 1 항에 있어서,
    상기 호스트 데이터가 상기 목표 위치를 완전히 채우는지 여부를 결정하는 단계; 및
    상기 호스트 데이터가 상기 목표 위치를 완전히 채우지 못할 경우, 상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들을 계산하는 단계
    를 더 포함하는,
    방법.
  3. 제 2 항에 있어서,
    상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들 내에 기존 데이터가 이미 저장되어 있는지 여부를 결정하기 위해 어드레스 맵을 체크하는 단계 ― 상기 어드레스 맵은 상기 데이터 저장 매체의 데이터 저장 위치들의 저장 상태에 관한 정보의 데이터베이스를 포함함 ―; 및
    기존 데이터를 포함하는 상기 목표 위치의 데이터 저장 어드레스들에 더미 데이터를 라이트하지 않는 단계
    를 더 포함하는,
    방법.
  4. 제 3 항에 있어서,
    상기 라이트된 호스트 데이터를 반영하기 위해 상기 어드레스 맵을 업데이트하는 단계; 및
    더미 데이터가 상기 목표 위치에 라이트되는 경우 상기 더미 데이터를 반영하기 위해 상기 어드레스 맵을 업데이트 하는 단계
    를 더 포함하는,
    방법.
  5. 제 3 항에 있어서,
    상기 정보의 데이터베이스를 포함하는 상기 어드레스 맵을 체크하는 단계를 더 포함하고, 상기 정보의 데이터베이스는:
    유효한 데이터의 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 최초 저장 어드레스; 및
    상기 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 순차적인 어드레스들의 개수를 나타내는 값
    을 포함하는,
    방법.
  6. 제 2 항에 있어서,
    상기 라이트 요청으로부터 상기 호스트 데이터의 최초 저장 어드레스가 상기 적어도 하나의 클러스터의 선두 경계에 정렬되어 있는지 여부를 결정하는 단계; 및
    상기 라이트 요청으로부터 상기 호스트 데이터의 마지막 저장 어드레스가 상기 적어도 하나의 클러스터의 말단 경계에 정렬되어 있는지 여부를 결정하는 단계
    를 통해 상기 호스트 데이터가 상기 목표 위치의 적어도 하나의 클러스터를 완전히 채울지 여부를 결정하는 단계; 및
    상기 적어도 하나의 클러스터의 선두 저장 어드레스와 상기 호스트 데이터의 상기 최초 저장 어드레스 사이의 저장 어드레스들을 계산하는 단계; 및
    상기 적어도 하나의 클러스터의 말단 저장 어드레스와 상기 호스트 데이터의 마지막 저장 어드레스 사이의 저장 어드레스들을 계산하는 단계
    를 통해 상기 호스트 데이터가 상기 목표 위치의 적어도 하나의 클러스터를 완전히 채우지 못할 경우 상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들을 계산하는 단계
    를 더 포함하는,
    방법.
  7. 제 1 항에 있어서,
    상기 데이터 저장 매체의 목표 위치에 라이트하기 위해 상기 라이트 요청을 수신하는 단계 ― 상기 데이터 저장 매체는 디스크 저장 매체를 포함함 ― 를 더 포함하고,
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터를 상기 목표 위치의 상기 적어도 하나의 클러스터에 라이트하는 단계는 제 1 트랙의 라이트가 제 2 트랙의 적어도 일부분과 중첩되도록 슁글 라이트 포맷으로 상기 디스크 저장 매체에 상기 호스트 데이터 및 더미 데이터를 라이트하는 단계를 포함하는,
    방법.
  8. 장치로서,
    데이터 저장 매체; 및
    프로세서를 포함하고, 상기 프로세서는:
    상기 데이터 저장 매체의 목표 위치에 라이트하기 위해 호스트 데이터를 포함하는 호스트로부터 라이트 요청을 수신하고 ― 상기 목표 위치는 하나 또는 그 초과의 클러스터들을 포함하고, 클러스터는 상기 데이터 저장 매체의 다수의 순차적으로 넘버링된 데이터 저장 어드레스들을 포함함 ―;
    상기 호스트 데이터가 상기 목표 위치의 클러스터들을 완전히 채울지 여부를 결정하고; 그리고
    상기 호스트 데이터가 상기 목표 위치의 클러스터들을 완전히 채우지 못할 경우:
    상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들을 계산하고;
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터로 상기 목표 위치의 적어도 하나의 클러스터를 라이트하도록 ― 상기 적어도 하나의 클러스터는 상기 적어도 하나의 클러스터의 초기 경계에서의 최초 저장 어드레스 및 상기 적어도 하나의 클러스터의 최후 경계에서의 마지막 저장 어드레스를 포함하고, 더미 데이터는 호스트 데이터에 의해 라이트되지 않는 상기 목표 위치 내 데이터 저장 어드레스들을 채우도록 라이트되는 임의의 데이터임 ―
    구성되고,
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터로 상기 목표 위치의 적어도 하나의 클러스터를 라이트하는 것은:
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 최초의 연이은 저장 어드레스들이 상기 호스트 데이터에 의해 라이트되지 않는 경우 및 호스트 데이터가 아직 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 존재하지 않은 경우에 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 상기 더미 데이터를 라이트하는 것 ― 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들은 상기 적어도 하나의 클러스터의 상기 최초 저장 어드레스를 포함함 ―; 및
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 마지막 연이은 저장 어드레스들이 호스트 데이터에 의해 라이트되지 않은 경우 및 호스트 데이터가 아직 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 존재하지 않는 경우에 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 상기 더미 데이터를 라이트하는 것 ― 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들은 상기 적어도 하나의 클러스터의 상기 마지막 저장 어드레스를 포함함 ―;
    을 포함하는,
    장치.
  9. 제 8 항에 있어서,
    네트워크 인터페이스를 더 포함하고, 상기 프로세서는, 상기 프로세서에 의해 실행될 때 상기 장치의 동작을 제어하는 상기 네트워크 인터페이스를 통한 명령들의 세트를 리트리브(retrieve)하도록 구성되는,
    장치.
  10. 제 8 항에 있어서,
    상기 프로세서는:
    상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들 내에 기존 데이터가 이미 저장되어 있는지 여부를 결정하기 위해 어드레스 맵을 체크하고 ― 상기 어드레스 맵은 상기 데이터 저장 매체의 데이터 저장 위치들의 저장 상태에 관한 정보의 데이터베이스를 포함함 ―; 그리고
    기존 데이터를 포함하는 상기 목표 위치의 데이터 저장 어드레스들에 더미 데이터를 라이트하지 않도록
    추가로 구성되는,
    장치.
  11. 제 10 항에 있어서,
    상기 프로세서는:
    상기 라이트된 호스트 데이터를 반영하기 위해 상기 어드레스 맵을 업데이트하고; 그리고
    더미 데이터가 상기 목표 위치에 라이트되는 경우 상기 더미 데이터를 반영하기 위해 상기 어드레스 맵을 업데이트 하도록 추가로 구성되는,
    장치.
  12. 제 10 항에 있어서,
    상기 어드레스 맵의 정보의 데이터베이스는:
    현재 데이터의 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 최초 저장 어드레스; 및
    상기 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 순차적인 어드레스들의 개수를 나타내는 값
    을 포함하는,
    장치.
  13. 제 8 항에 있어서,
    상기 데이터 저장 매체는 디스크 저장 매체를 포함하고,
    상기 프로세서는, 제 2 트랙의 라이트가 제 1 트랙의 적어도 일부분과 중첩되도록 슁글 방식으로 상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터로 상기 목표 위치의 상기 적어도 하나의 클러스터에 라이트하도록 구성되는,
    장치.
  14. 장치로서,
    컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 방법을 수행하게 하는 명령들을 저장하는 메모리 디바이스를 포함하고, 상기 방법은:
    데이터 저장 매체의 목표 위치에 라이트하기 위해 호스트 데이터를 포함하는 호스트로부터 라이트 요청을 수신하는 단계 ― 상기 목표 위치는 적어도 하나의 클러스터를 포함하고, 클러스터는 상기 데이터 저장 매체의 데이터 섹터들에 대하여 다수의 순차적으로 넘버링된 데이터 저장 어드레스들임 ―;
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터를 포함하는 라이트 데이터를 상기 적어도 하나의 클러스터에 라이트하는 단계 ― 상기 적어도 하나의 클러스터는 상기 적어도 하나의 클러스터의 초기 경계에서의 데이터 섹터에 대한 최초 저장 어드레스 및 상기 적어도 하나의 클러스터의 최후 경계에서의 데이터 섹터에 대한 마지막 저장 어드레스를 포함하고, 더미 데이터는 호스트 데이터에 의해 라이트되지 않는 상기 목표 위치 내 데이터 저장 어드레스들을 채우도록 라이트되는 임의의 데이터임 ―
    를 포함하고,
    상기 라이트하는 단계는:
    상기 호스트 데이터에 의해 점유되고 상기 호스트 데이터를 상기 라이트 데이터에 부가하는 상기 적어도 하나의 클러스터의 세그먼트를 결정하는 단계;
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 최초의 연이은 저장 어드레스들이 상기 호스트 데이터에 의해 라이트되지 않은 경우 및 기존 데이터가 아직 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 저장되지 않은 경우에 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들에 라이트하기 위한 상기 더미 데이터를 상기 라이트 데이터에 부가하는 단계 ― 상기 하나 또는 그 초과의 최초의 연이은 저장 어드레스들은 상기 적어도 하나의 클러스터의 상기 최초 저장 어드레스를 포함함 ―;
    상기 적어도 하나의 클러스터의 하나 또는 그 초과의 마지막 연이은 저장 어드레스들이 호스트 데이터에 의해 라이트되지 않은 경우 및 기존 데이터가 아직 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 저장되지 않은 경우에 상기 하나 또는 그 초과의 마지막 연이은 저장 어드레스들에 라이트하기 위한 상기 더미 데이터를 상기 라이트 데이터에 부가하는 단계 ― 상기 하나 또는 그 초과의 마지막 저장 어드레스들은 상기 적어도 하나의 클러스터의 상기 마지막 저장 어드레스를 포함함 ―; 및
    상기 라이트 데이터를 상기 적어도 하나의 클러스터에 라이트하는 단계
    를 포함하는,
    장치.
  15. 제 14 항에 있어서,
    상기 방법은:
    상기 호스트 데이터가 상기 목표 위치를 완전히 채우는지 여부를 결정하는 단계; 및
    상기 호스트 데이터가 상기 목표 위치를 완전히 채우지 못할 경우, 상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들을 계산하는 단계
    를 더 포함하는,
    장치.
  16. 제 15 항에 있어서,
    상기 방법은:
    상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들 내에 기존 데이터가 이미 저장되어 있는지 여부를 결정하기 위해 어드레스 맵을 체크하는 단계 ― 상기 어드레스 맵은 상기 데이터 저장 매체의 데이터 저장 위치들의 저장 상태에 관한 정보의 데이터베이스를 포함함 ―; 및
    기존 데이터를 포함하는 상기 목표 위치의 데이터 저장 어드레스들에 더미 데이터를 라이트하지 않는 단계
    를 더 포함하는,
    장치.
  17. 제 16 항에 있어서,
    상기 어드레스 맵의 정보의 데이터베이스는:
    유효한 데이터의 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 최초 저장 어드레스; 및
    상기 순차적으로 넘버링된 데이터 저장 어드레스들의 세트의 순차적인 어드레스들의 개수를 나타내는 값
    을 포함하는,
    장치.
  18. 제 15 항에 있어서,
    상기 방법은:
    상기 라이트 요청으로부터 상기 호스트 데이터의 최초 저장 어드레스가 상기 적어도 하나의 클러스터의 초기 경계에 정렬되어 있는지 여부를 결정하는 단계; 및
    상기 라이트 요청으로부터 상기 호스트 데이터의 마지막 저장 어드레스가 상기 적어도 하나의 클러스터의 최후 경계에 정렬되어 있는지 여부를 결정하는 단계
    를 통해 상기 호스트 데이터가 상기 목표 위치의 적어도 하나의 클러스터를 완전히 채울지 여부를 결정하는 단계; 및
    상기 적어도 하나의 클러스터의 초기 저장 어드레스와 상기 호스트 데이터의 상기 최초 저장 어드레스 사이의 저장 어드레스들을 계산하는 단계; 및
    상기 적어도 하나의 클러스터의 마지막 저장 어드레스와 상기 호스트 데이터의 마지막 저장 어드레스 사이의 저장 어드레스들을 계산하는 단계
    를 통해 상기 호스트 데이터가 상기 목표 위치의 적어도 하나의 클러스터를 완전히 채우지 못할 경우 상기 호스트 데이터에 의해 채워지지 않을 상기 목표 위치의 데이터 저장 어드레스들을 계산하는 단계
    를 더 포함하는,
    장치.
  19. 제 14 항에 있어서,
    상기 방법은 상기 데이터 저장 매체의 목표 위치에 라이트하기 위해 상기 라이트 요청을 수신하는 단계 ― 상기 데이터 저장 매체는 디스크 저장 매체를 포함함 ― 를 더 포함하고,
    상기 라이트 요청에 따라 호스트 데이터 및 더미 데이터로 상기 목표 위치의 상기 적어도 하나의 클러스터에 라이트하는 단계는 제 1 트랙의 라이트가 제 2 트랙의 적어도 일부분과 중첩되도록 슁글 라이트 포맷으로 상기 디스크 저장 매체에 상기 호스트 데이터 및 더미 데이터를 라이트하는 단계를 포함하는,
    장치.

KR1020110039713A 2011-04-27 2011-04-27 데이터 라이트 방법 및 이를 적용한 저장 장치 KR101854200B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110039713A KR101854200B1 (ko) 2011-04-27 2011-04-27 데이터 라이트 방법 및 이를 적용한 저장 장치
US13/459,012 US9063659B2 (en) 2011-04-27 2012-04-27 Method and apparatus for data sector cluster-based data recording

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110039713A KR101854200B1 (ko) 2011-04-27 2011-04-27 데이터 라이트 방법 및 이를 적용한 저장 장치

Publications (2)

Publication Number Publication Date
KR20120121740A KR20120121740A (ko) 2012-11-06
KR101854200B1 true KR101854200B1 (ko) 2018-06-20

Family

ID=47508145

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110039713A KR101854200B1 (ko) 2011-04-27 2011-04-27 데이터 라이트 방법 및 이를 적용한 저장 장치

Country Status (2)

Country Link
US (1) US9063659B2 (ko)
KR (1) KR101854200B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11899973B2 (en) 2021-04-22 2024-02-13 SK Hynix Inc. Controller and method of operating the same

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9281008B1 (en) 2012-10-10 2016-03-08 Seagate Technology Llc Multiple track pitches for SMR
US8922930B1 (en) 2012-10-11 2014-12-30 Seagate Technology Llc Limit disc nodes by band usage
US9785438B1 (en) 2012-10-11 2017-10-10 Seagate Technology Llc Media cache cleaning based on workload
US8896961B1 (en) 2012-10-11 2014-11-25 Seagate Technology Llc Reader positioning in shingled magnetic recording
US9286936B1 (en) 2013-02-21 2016-03-15 Seagate Technology Llc Zone based band mapping
WO2014198038A1 (en) * 2013-06-13 2014-12-18 Microsoft Corporation Data segmentation and visualization
US9117086B2 (en) 2013-08-28 2015-08-25 Seagate Technology Llc Virtual bands concentration for self encrypting drives
DE102014112329A1 (de) * 2013-08-28 2015-03-05 Lsi Corporation Konzentration von virtuellen Bändern für selbst-verschlüsselnde Laufwerk-Einrichtungen
JP2015149114A (ja) * 2014-02-07 2015-08-20 キヤノン株式会社 情報記録装置およびその制御方法、並びにプログラム
KR20200057473A (ko) * 2018-11-16 2020-05-26 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US10969965B2 (en) 2018-12-24 2021-04-06 Western Digital Technologies, Inc. Dynamic performance density tuning for data storage device
US10802739B1 (en) * 2019-05-13 2020-10-13 Western Digital Technologies, Inc. Data storage device configuration for accessing data in physical realms
CN111176583B (zh) * 2019-12-31 2021-03-30 北京百度网讯科技有限公司 一种数据写入方法、装置和电子设备
KR20220021796A (ko) * 2020-08-14 2022-02-22 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
JP2023139529A (ja) * 2022-03-22 2023-10-04 株式会社東芝 ディスク装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009140700A1 (en) * 2008-05-16 2009-11-19 Fusion Multisystems, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US20100277827A1 (en) * 2009-05-04 2010-11-04 Roger William Wood Correcting Errors in Position of an HDD Write-Head
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434991A (en) * 1990-03-20 1995-07-18 Sharp Kabushiki Kaisha Method and apparatus for recording and reproducing information in black on a rewritable recording medium
US7216251B2 (en) * 2000-02-19 2007-05-08 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
KR100468716B1 (ko) * 2001-09-07 2005-01-29 삼성전자주식회사 데이터 저장 시스템에서의 성능 개선을 위한 더미 라이트방법 및 장치
JP2004079087A (ja) * 2002-08-20 2004-03-11 Sony Corp 記録装置および方法、記録媒体、並びにプログラム
JP2007048335A (ja) * 2005-08-05 2007-02-22 Hitachi Global Storage Technologies Netherlands Bv ディスク装置
JP4695965B2 (ja) * 2005-11-15 2011-06-08 キヤノン株式会社 映像記録装置及びプログラム
US8046533B2 (en) * 2009-03-10 2011-10-25 Emulex Design & Manufacturing Corporation System and method for sector remapping
JP2011086321A (ja) 2009-10-13 2011-04-28 Yamamori Kazuki 垂直磁気記録ヘッド
JP4869418B2 (ja) 2010-03-12 2012-02-08 株式会社東芝 磁気記録装置および磁気記録方法
JP5485770B2 (ja) 2010-03-31 2014-05-07 ダブリュディ・メディア・シンガポール・プライベートリミテッド 磁気ディスク装置
US7982994B1 (en) 2010-05-12 2011-07-19 Seagate Technology, Llc Multi-level recording on shingled coherent magnetic media
JP5560100B2 (ja) 2010-05-31 2014-07-23 株式会社日立製作所 シングル記録方式に用いる磁気ヘッドおよび磁気ディスクドライブ
JP4922433B2 (ja) * 2010-05-31 2012-04-25 株式会社東芝 磁気ディスク装置及びデータブロックの書き換え方法
US8179627B2 (en) 2010-06-10 2012-05-15 Seagate Technology International Floating guard band for shingle magnetic recording
JP2012003805A (ja) 2010-06-16 2012-01-05 Wd Media (Singapore) Pte. Ltd 垂直磁気記録媒体及び磁気ディスク装置
JP5023204B2 (ja) 2010-09-08 2012-09-12 株式会社東芝 磁気記録装置
JP2012079380A (ja) 2010-09-30 2012-04-19 Toshiba Corp 情報記録装置、情報記録方法、及び電子機器
US8432633B2 (en) 2010-10-26 2013-04-30 HGST Netherlands B.V. System, method and apparatus for storage architecture for bit patterned media using both erase band and shingled magnetic recording
JP2012160233A (ja) 2011-01-31 2012-08-23 Toshiba Corp 磁気記録装置、および磁気記録装置の記録方法
US8270256B1 (en) 2011-05-06 2012-09-18 Hitachi Global Storage Technologies Netherland B.V. Magnetic recording disk drive with shingled writing and wide-area thermal assistance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009140700A1 (en) * 2008-05-16 2009-11-19 Fusion Multisystems, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US20100277827A1 (en) * 2009-05-04 2010-11-04 Roger William Wood Correcting Errors in Position of an HDD Write-Head
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11899973B2 (en) 2021-04-22 2024-02-13 SK Hynix Inc. Controller and method of operating the same

Also Published As

Publication number Publication date
KR20120121740A (ko) 2012-11-06
US9063659B2 (en) 2015-06-23
US20130027802A1 (en) 2013-01-31

Similar Documents

Publication Publication Date Title
KR101854200B1 (ko) 데이터 라이트 방법 및 이를 적용한 저장 장치
KR101833416B1 (ko) 데이터 리드 방법 및 이를 적용한 저장 장치
KR101890767B1 (ko) 주소 사상 정보 관리 방법 이를 적용한 저장 장치
KR101810932B1 (ko) 주소 사상 정보 관리 방법, 디스크 드라이브에서의 액세스 방법, 저장 장치, 컴퓨터 시스템, 네트워크를 통한 주소 사상 정보 관리 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR101854206B1 (ko) 라이트 방법 및 그 방법을 이용하는 저장 장치
US9009433B2 (en) Method and apparatus for relocating data
US9189395B2 (en) Method and apparatus for adjustable virtual addressing for data storage
US8583879B2 (en) Data storage device, storing medium access method and storing medium thereof
KR101874324B1 (ko) 리드 또는 라이트 동작 제어 방법, 그 방법을 이용하는 저장 장치 및 컴퓨터 시스템
KR101854214B1 (ko) 라이트 방법 및 그 방법을 이용하는 저장 장치
US8341339B1 (en) Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US6606714B1 (en) Disk drive using defect list to perform uninterrupted writing of non-relocated data blocks and caching of relocated data blocks for deferred writing
US9619178B2 (en) Hybrid storage apparatus and logical block address assigning method
KR20120121736A (ko) 데이터 라이트 방법 및 저장 장치
US20100169556A1 (en) Nonvolatile storage device, information recording system, and information recording method
KR101674015B1 (ko) 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
KR102067056B1 (ko) 저장 매체 액세스 방법, 데이터 라이트 방법, 저장 장치의 파라미터 조정 방법과 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장매체
JP2008117491A (ja) 記録装置、記録方法、およびプログラム
US20110093645A1 (en) Method and apparatus to record data, method and apparatus to reproduce data, and recording medium

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right