KR101854206B1 - 라이트 방법 및 그 방법을 이용하는 저장 장치 - Google Patents

라이트 방법 및 그 방법을 이용하는 저장 장치 Download PDF

Info

Publication number
KR101854206B1
KR101854206B1 KR1020110039707A KR20110039707A KR101854206B1 KR 101854206 B1 KR101854206 B1 KR 101854206B1 KR 1020110039707 A KR1020110039707 A KR 1020110039707A KR 20110039707 A KR20110039707 A KR 20110039707A KR 101854206 B1 KR101854206 B1 KR 101854206B1
Authority
KR
South Korea
Prior art keywords
logical
band
data
virtual
logical block
Prior art date
Application number
KR1020110039707A
Other languages
English (en)
Other versions
KR20120121734A (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 KR1020110039707A priority Critical patent/KR101854206B1/ko
Priority to US13/458,994 priority patent/US8837067B2/en
Publication of KR20120121734A publication Critical patent/KR20120121734A/ko
Application granted granted Critical
Publication of KR101854206B1 publication Critical patent/KR101854206B1/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
    • 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
    • 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
    • G11B2020/10935Digital recording or reproducing wherein a time constraint must be met
    • G11B2020/10953Concurrent recording or playback of different streams or files

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

라이트 방법 및 그 방법을 이용하는 저장 장치가 개시된다. 복수의 트랙들을 포함하는 적어도 하나의 가상 밴드(virtual band)에 데이터를 라이트하는 방법에 있어서, 연속적인 논리적 블록 어드레스들을 가지는 데이터의 상기 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드(logical band)들을 하나의 논리적 밴드로 병합하는 단계 및 상기 병합된 하나의 논리적 밴드에 대응하는 적어도 하나의 가상 밴드에 상기 데이터를 라이트하는 단계를 구비할 수 있다.

Description

라이트 방법 및 그 방법을 이용하는 저장 장치{Method for writing and storage device using the method}
본 발명은 라이트 방법 및 그 방법을 이용하는 저장 장치에 관한 것으로, 특히 연속적인 논리적 블록 어드레스(logical block address)를 가지는 데이터의 라이트 방법 및 그 방법을 이용하는 저장 장치에 관한 것이다.
저장 장치의 하나인 디스크 드라이브는 호스트 기기에서 발행되는 명령에 따라 저장 매체에 데이터를 라이트(write)하거나 또는 저장 매체로부터 데이터를 리드(read)함으로써 컴퓨터 시스템 운영에 기여하게 된다. 디스크 드라이브의 기록 밀도를 향상시키기 위하여 다양한 라이트 방식이 연구되고 있다. 또한, 기록 밀도를 높이기 위한 새로운 라이트 방식에 적합한 저장 매체에 대한 새로운 액세스 방식이 필요하게 되었다.
본 발명이 해결하고자 하는 과제는 연속적인 논리적 블록 어드레스(logical block address)를 가지는 데이터를 효율적으로 라이트하는 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 과제는 상기 라이트 방법을 이용하는 저장 장치를 제공하는데 있다.
상기 과제를 달성하기 위한 본 발명의 일 실시예에 따른 복수의 트랙들을 포함하는 적어도 하나의 가상 밴드(virtual band)에 데이터를 라이트하는 방법에 있어서, 연속적인 논리적 블록 어드레스들을 가지는 데이터의 상기 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드(logical band)들을 하나의 논리적 밴드로 병합하는 단계 및 상기 병합된 하나의 논리적 밴드에 대응하는 적어도 하나의 가상 밴드에 상기 데이터를 라이트하는 단계를 구비할 수 있다.
상기 병합하는 단계는 상기 데이터의 첫 번째 논리적 블록 어드레스를 포함하는 논리적 밴드부터 상기 데이터의 마지막 논리적 블록 어드레스를 포함하는 논리적 밴드까지 상기 하나의 논리적 밴드로 병합하는 단계일 수 있다.
상기 라이트 방법은 상기 라이트된 데이터를 업데이트하기 위하여 수신된 복수의 업데이트용 데이터를 다른 적어도 하나의 가상 밴드에 연속적으로 라이트하는 단계를 더 구비할 수 있다.
상기 라이트 방법은 상기 라이트된 데이터를 업데이트하기 위하여 수신된 업데이트용 데이터를 상기 라이트된 데이터에 연속하여 라이트하는 단계 및 상기 라이트된 데이터에 연속하여 라이트하는 단계에서 상기 가상 밴드의 마지막 데이터 섹터까지 라이트한 경우, 다른 적어도 하나의 가상 밴드에 나머지 업데이트용 데이터를 연속적으로 라이트하는 단계를 더 구비할 수 있다.
상기 라이트하는 단계는 상기 적어도 하나의 가상 밴드에 데이터가 라이트되어 있는 경우, 상기 라이트된 데이터에 연속하여 상기 병합된 논리적 밴드에 포함되는 논리적 블록 어드레스들을 가지는 상기 데이터를 상기 적어도 하나의 가상 밴드에 라이트하는 단계일 수 있다.
상기 라이트 방법은 상기 병합된 논리적 밴드에 대응하는 상기 적어도 하나의 가상 밴드의 정보 및 상기 병합된 논리적 밴드의 범위에 관한 정보를 포함하는 매핑 정보를 생성하는 단계를 더 구비할 수 있다.
상기 가상 밴드는 인접한 트랙과 일 부분이 겹쳐지고 한 쪽 방향으로 연속적으로 데이터를 라이트하는 슁글(shingle) 라이트 방식을 이용하여 데이터가 라이트되는 복수의 트랙들을 포함할 수 있다.
상기 라이트 방법은 상기 라이트된 연속적인 논리적 블록 어드레스를 가지는 데이터가 무효한 데이터가 된 경우 상기 병합된 논리적 밴드를 분리하는 단계를 더 구비할 수 있다.
상기 과제를 달성하기 위한 본 발명의 일 실시예에 따른 저장 장치는 데이터가 저장되는 복수의 트랙들을 포함하는 복수의 가상 밴드(virtual band)들을 포함하는 저장 매체, 상기 저장 매체에 저장되어 있는 데이터를 리드하거나 상기 저장 매체에 데이터를 라이트하는 저장 매체 인터페이스 및 연속적인 논리적 블록 어드레스들을 가지는 데이터의 상기 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드(logical band)들을 하나의 논리적 밴드로 병합하여 관리하고, 상기 데이터를 상기 병합된 하나의 논리적 밴드에 대응하는 적어도 하나의 가상 밴드에 라이트하도록 저장 매체 인터페이스를 제어하는 패턴 감지부를 구비할 수 있다.
본 발명에 기술적 사상에 의한 일 실시예에 따른 라이트 방법 및 그 방법을 이용하는 저장 장치는 연속적인 논리적 블록 어드레스(logical block address)를 가지는 데이터를 복수의 가상 밴드(virtual band)들에 라이트하는 경우 논리적 밴드(logical band)의 범위를 조절함으로써, 최소의 가상 밴드를 추가하여 라이트된 데이터를 업데이트할 수 있는 장점이 있다. 또한, 상기 라이트된 데이터를 업데이트함에 따른 상기 가상 밴드의 추가를 최소화함으로써, 유효한 데이터를 포함하지 않는 프리 밴드 상태의 가상 밴드를 생성하기 위한 머지(merge) 동작을 최소화할 수 있는 장점이 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1(a)는 본 발명의 기술적 사상에 의한 일실시 예에 따른 컴퓨터 시스템의 블록도이다.
도 1(b)는 본 발명의 기술적 사상에 의한 다른 일실시 예에 따른 컴퓨터 시스템의 블록도이다.
도 2는 도 1(a) 또는 도 1(b)에 도시된 저장 장치의 소프트웨어 운영 체계도이다.
도 3은 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브의 헤드 디스크 어셈블리의 평면도이다.
도 4(a)는 도 1(a)의 저장 장치의 일 실시예인 디스크 드라이브의 전기적인 회로 구성을 도시한 도면이다.
도 4(b)는 도 1(b)의 저장 장치의 일 실시예인 디스크 드라이브의 전기적인 회로 구성을 도시한 도면이다.
도 5는 본 발명에 적용될 수 있는 저장 매체의 일 실시예인 디스크에서 하나의 트랙에 대한 섹터 구조를 보여주는 도면이다
도 6은 도 5에 도시된 서보 영역의 구조를 보여주는 도면이다.
도 7은 슁글 라이트 방식을 이용하는 저장 매체의 일 실시예를 도시한 도면이다.
도 8(a) 및 도 8(b)는 슁글 라이트 방식을 이용하여 데이터를 라이트하는 경우의 제한 조건을 설명하기 위한 도면이다.
도 9는 도 1(a) 또는 도 1(b)의 프로세서 또는 도 4(a) 또는 도 4(b)의 프로세서의 일 실시예를 도시한 도면이다.
도 10은 도 9의 제 2 프로세서의 일 실시예를 도시한 도면이다.
도 11은 본 발명의 기술적 사상에 의한 일 실시예에 따른 저장 장치의 블록도이다.
도 12는 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 방법의 흐름도이다.
도 13은 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 라이트 방법의 흐름도이다.
도 14(a)는 종래 기술에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이고, 도 14(b)는 본 발명의 기술적 사상의 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 15는 본 발명의 기술적 사상에 의한 일 실시예에 따라 라이트 동작을 수행한 이후 상기 라이트된 데이터를 업데이트하는 라이트 방법에 관한 흐름도이다.
도 16(a)는 종래 기술에 의하여 업데이트 동작을 수행한 경우 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이고, 도 16(b)는 본 발명의 기술적 사상의 일 실시예에 의하여 업데이트 동작을 수행한 경우 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 17은 도 18 내지 도 23을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명하기 위한 가상 밴드들의 도면이다.
도 18은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 12의 라이트 동작을 설명하기 위한 도면이다.
도 19는 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 13의 라이트 동작을 설명하기 위한 도면이다.
도 20은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 도면이다.
도 21은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 다른 도면이다.
도 22는 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 도면이다.
도 23은 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 다른 도면이다.
도 24는 도 25 내지 도 28(b)를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명하기 위한 논리적 밴드들 및 가상 밴드들의 도면이다.
도 25는 본 발명의 기술적 사상의 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 26(a) 및 도 26(b)는 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 27은 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 28(a) 및 도 28(b)는 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 29는 본 발명의 기술적 사상에 의한 일 실시예에 따른 네트워크를 통한 저장 장치의 라이트 방법을 설명하기 위한 네트워크 시스템의 구성도이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1(a)는 본 발명의 기술적 사상에 의한 일실시 예에 따른 컴퓨터 시스템(100)의 블록도이다.
도 1(a)를 참조하면, 본 발명의 기술적 사상에 의한 일실시 예에 따른 컴퓨터 시스템(100)은 저장 장치(101), 호스트 기기(102) 및 커넥터(103)를 구비한다.
세부적으로, 저장 장치(101)는 프로세서(110), ROM(Read Only Memory; 120), RAM(Random Access Memory; 130), 저장 매체 인터페이스(140), 저장 매체(150), 호스트 인터페이스(160) 및 버스(170)를 구비한다.
호스트 기기(102)는 저장 장치(101)를 동작시키기 위한 커맨드를 발행하여 커넥터(103)를 통하여 접속된 저장 장치(101)로 전송하고, 발행된 커맨드에 따라서 저장 장치(101)와 데이터를 송신 또는 수신하는 프로세스를 수행한다.
커넥터(103)는 호스트 기기(102)의 인터페이스 포트와 저장 장치(101)의 인터페이스 포트를 전기적으로 연결하는 수단으로서, 데이터 커넥터와 전원 커넥터가 포함될 수 있다. 일예로서, SATA(Serial Advanced Technology Attachment) 인터페이스를 이용하는 경우에, 커넥터(103)는 7핀의 SATA 데이터 커넥터와 15핀의 SATA 전원 커넥터로 구성될 수 있다.
우선, 저장 장치(101)의 구성 수단들에 대하여 설명하기로 한다.
프로세서(110)는 명령어를 해석하고, 해석된 결과에 따라 데이터 저장 장치의 구성 수단들을 제어하는 역할을 한다. 프로세서(110)는 코드 오브젝트 관리 유닛을 포함하고 있으며, 코드 오브젝트 관리 유닛을 이용하여 저장 매체(150)에 저장되어 있는 코드 오브젝트를 RAM(130)에 로딩시킨다. 프로세서(110)는 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 코드 오브젝트들을 RAM(130)에 로딩시킨다.
그러면, 프로세서(110)는 RAM(130)에 로딩된 코드 오브젝트들을 이용하여 도 11, 도 13 및 도 15의 라이트 방법에 대한 태스크(task)를 실행할 수 있다. 프로세서(110)에 의하여 실행되는 리드 동작 제어 방법 및 흐름도에 따른 라이트 동작 제어 방법에 대해서는 아래의 도 11, 도 13 및 도 15에 대한 설명에서 상세하게 다루어질 것이다.
ROM(120)에는 데이터 저장 장치를 동작시키는데 필요한 프로그램 코드 및 데이터들이 저장되어 있다. RAM(130)에는 프로세서(110)의 제어에 따라 ROM(120) 또는 저장 매체(150)에 저장된 프로그램 코드 및 데이터들이 로딩된다.
저장 매체(150)는 저장 장치의 주 저장 매체로서 디스크 또는 비휘발성 메모리 소자가 포함할 수 있다. 저장 장치는 일예로서 디스크 드라이브를 포함할 수 있으며, 디스크 드라이브에서의 디스크 및 헤드가 포함된 헤드 디스크 어셈블리(100)의 세부 구성을 도 3에 도시하였다.
도 3은 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브의 헤드 디스크 어셈블리(300)의 평면도이다.
도 3을 참조하면, 헤드 디스크 어셈블리(300)는 스핀들 모터(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는 본 발명에 적용될 수 있는 저장 매체의 일 실시예인 디스크에서 하나의 트랙에 대한 섹터 구조를 보여주는 도면이다
도 5에 도시된 바와 같이, 하나의 서보 섹터 구간(T)에는 서보 영역(S)과 데이터 영역으로 구성되고, 데이터 영역에는 복수개의 데이터 섹터(D)들이 포함될 수 있다. 물론, 하나의 서보 섹터 구간에 단일의 데이터 섹터(D)가 포함되도록 구성할 수도 있다. 데이터 섹터(D)는 섹터라고 칭해지기도 한다. 그리고, 서보 영역(S)에는 세부적으로 도 6과 같은 신호들이 기록되어 있다.
도 6은 도 5에 도시된 서보 영역(S)의 구조를 보여주는 도면이다.
도 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) 영역과 사용자가 접근할 수 있는 사용자 데이터 영역으로 구분된다. 메인터넌스 실린더 영역을 시스템 영역이라 칭하기도 한다. 메인터넌스 실린더 영역에는 디스크 드라이브 제어에 필요한 각종 정보들이 저장되어 있으며, 물론 본 발명에 따른 리드 동작 제어 방법 및 라이트 동작 제어 방법을 수행하는데 필요한 정보들도 저장될 수 있다. 특히, 가상 존(virtual zone) 또는 가상 밴드(virtual band)에 기초하여 논리적 블록 어드레스(Logical Block Address; LBA)를 가상 어드레스(Virtual Address; VA)로 변환시키기 위한 매핑 테이블(Mapping Table)이 메인터넌스 실린더 영역에 저장될 수 있다.
헤드(16)는 다른 트랙에 있는 정보를 읽거나 기록하기 위하여 디스크(12) 표면을 가로질러 이동된다. 디스크(12)에는 디스크 드라이브로 다양한 기능을 구현시키기 위한 복수개의 코드 오브젝트들이 저장될 수 있다. 일예로서, MP3 플레이어 기능을 수행하기 위한 코드 오브젝트, 네비게이션 기능을 수행하기 위한 코드 오브젝트, 다양한 비디오 게임을 수행하기 위한 코드 오브젝트 등이 디스크(12)에 저장될 수 있다.
다시 도 1(a)를 참조하면, 저장 매체 인터페이스(140)는 프로세서(110)가 저장 매체(150)를 액세스하여 정보를 라이트 또는 리드할 수 있도록 처리하는 구성 수단이다. 디스크 드라이브로 구현되는 저장 장치에서의 저장 매체 인터페이스(140)는 헤드 디스크 어셈블리를 제어하는 서보 회로 및 데이터 리드 및 라이트를 위한 신호 처리를 수행하는 리드 및 라이트 채널 회로를 포함할 수 있다.
호스트 인터페이스(160)는 퍼스널 컴퓨터, 모바일 기기 등과 같은 호스트 기기(102)와의 데이터 송/수신 처리를 실행하는 수단으로서, 예를 들어 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 인터페이스 등과 같은 다양한 규격의 인터페이스를 이용할 수 있다.
버스(170)는 저장 장치의 구성 수단들 간의 정보를 전달하는 역할을 한다.
다음으로, 저장 장치의 일예인 하드 디스크 드라이브의 소프트웨어 운영 체계에 대하여 도 2를 참조하여 설명하기로 한다. 즉, 도 2는 도 1(a)에 도시된 저장 장치(101) 또는 도 1(b)에 도시된 저장 장치(101')의 소프트웨어 운영 체계도이다.
도 2에 도시된 바와 같이, 하드 디스크 드라이브(HDD) 저장 매체인 디스크(150A)에는 복수의 코드 오브젝트(Code Object 1 ~ N)들이 저장되어 있다.
ROM(120)에는 부트 이미지(Boot Image) 및 압축된 RTOS 이미지(packed RTOS Image)가 저장되어 있다.
하드디스크 드라이브(HDD) 저장 매체인 디스크(150A)에는 복수의 코드 오브젝트(CODE OBJECT 1~N)들이 저장되어 있다. 디스크(150A)에 저장된 코드 오브젝트들은 디스크 드라이브의 동작에 필요한 코드 오브젝트들뿐만 아니라, 디스크 드라이브로 확장할 수 있는 다양한 기능에 관련된 코드 오브젝트들도 포함될 수 있다. 특히, 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 코드 오브젝트들이 HDD 저장 매체인 디스크(150A)에 저장되어 있다. 물론, 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 코드 오브젝트들을 HDD 저장 매체인 디스크(150A) 대신에 ROM(120)에 저장할 수도 있다. 그리고, MP3 플레이어 기능, 네비게이션 기능, 비디오 게임 기능 등의 다양한 기능을 수행하는 코드 오브젝트들도 디스크에 저장될 수 있다.
RAM(130)에는 부팅 과정에서 ROM(120)으로부터 부트 이미지(Boot Image)를 읽어내어 압축 해제된 RTOS 이미지(Unpacked RTOS Image)가 로딩된다. 그리고, HDD 저장 매체인 디스크(150A)에 저장되어 있는 호스트 인터페이스 수행에 필요한 코드 오브젝트들이 RAM(130)에 로딩된다. 물론, RAM(130)에는 데이터를 저장하기 위한 영역(DATA AREA)도 할당되어 있다.
채널(CHANNEL) 회로(200)에는 데이터 리드 및 라이트를 위한 신호 처리를 수행하는데 필요한 회로들이 내장되어 있으며, 서보 회로(SERVO; 210)에는 데이터 리드 및 라이트 동작을 수행하기 위하여 헤드 디스크 어셈블리(300)를 제어하는데 필요한 회로들이 내장되어 있다.
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)을 이용하여 HDD 저장 매체인 디스크(150A)에 저장되어 있는 코드 오브젝트들을 RAM(130)에 로딩시키거나, RAM(130)에 저장되어 있는 코드 오브젝트들을 HDD 저장 매체인 디스크(150A)로 언로딩시키는 처리를 수행한다. 이에 따라서, COL(110-2)는 HDD 저장 매체인 디스크(150A)에 저장되어 있는 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 코드 오브젝트들을 RAM(130)에 로딩시킬 수 있다.
RTOS(110A)는 RAM(130)에 로딩된 코드 오브젝트들을 이용하여 아래에서 설명될 도 11, 도 13 및 도 15의 라이트 방법을 실행시킬 수 있게 된다.
MH(110-3)는 ROM(120) 및 RAM(130)에 데이터를 라이트하거나 리드하는 처리를 수행한다.
CCM(110-4)은 데이터 리드 및 라이트를 위한 신호 처리를 수행하는데 필요한 채널 제어를 수행하고, SCM(110-5)는 데이터 리드 및 라이트를 수행하기 위하여 헤드 디스크 어셈블리를 포함하는 서보 제어를 수행한다.
도 1(b)는 본 발명의 기술적 사상에 의한 다른 일실시 예에 따른 컴퓨터 시스템(100')의 블록도이다.
도 1(b)에 도시된 바와 같은 컴퓨터 시스템(100')의 저장 장치(101')는 도 1(a)에 도시된 저장 장치(101)에 비휘발성 메모리 장치(180)가 추가된다. 도 1(b)에서 저장 매체(150)는 디스크로 구현될 수 있다.
비휘발성 메모리 장치(180)는 비휘발성 반도체 메모리 장치로 구현될 수 있으며, 일 예로서 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있다.
비휘발성 메모리 장치(180)에는 저장 장치(101')에 저장하고자 하는 데이터의 일부 또는 전부가 저장될 수 있다. 일 예로서, 저장 장치(101') 제어에 필요한 각종 정보들이 비휘발성 메모리 장치(180)에 저장될 수 있다.
그리고, 비휘발성 메모리 장치(180)에는 도 13 내지 도 22의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들이 저장될 수 있다. 또한, 저장 장치의 다양한 기능을 구현시키기 위한 코드 오브젝트들도 비휘발성 메모리 장치(180)에 저장할 수 있다. 매핑 테이블이 비휘발성 메모리 장치(180)에 저장되어 있는 경우에, 저장 장치는 비휘발성 메모리 장치(180)에 저장되어 매핑 테이블을 RAM(130)에 로딩시킬 수 있다.
도 1(a)의 컴퓨터 시스템에서 이미 설명한 동일한 구성 수단들에 대한 중복된 설명은 피하기로 한다.
도 4(a)는 도 1(a)의 저장 장치(101)의 일 실시예인 디스크 드라이브(400)의 전기적인 회로 구성을 도시한 도면이다.
도 4(a)에 도시된 바와 같이, 본 발명의 기술적 사상에 의한 일실시 예에 따른 디스크 드라이브(400)는 프리 앰프(410), 리드 및 라이트 채널(420, R/W CHANNEL), 프로세서(430), 보이스 코일 모터 구동부(440, VCM 구동부), 스핀들 모터 구동부(450, SPM 구동부), ROM(460), RAM(470) 및, 호스트 인터페이스(480)를 구비한다.
프로세서(430)는 디지털 신호 프로세서(DSP: Digital Signal Processor), 마이크로프로세서, 마이크로컨트롤러 등이 될 수 있다. 프로세서(430)는 호스트 인터페이스(480)를 통하여 호스트 기기(102)로부터 수신되는 커맨드(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)에는 디스크 드라이브를 제어하는 펌웨어 및 제어 데이터들이 저장되어 있다. 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들이 ROM(460)에 저장될 수 있다. 물론, 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들은 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)의 메인터넌스 실린더 영역에 저장된 프로그램 코드 및 정보들을 이용하여 도 11, 도 13 및 도 15의 라이트 방법을 실행하도록 디스크 드라이브를 제어할 수 있게 된다.
도 4(b)는 도 1(b)의 저장 장치(101')의 일 실시예인 디스크 드라이브(400')의 전기적인 회로 구성을 도시한 도면이다.
도 4(b)에 도시된 바와 같은 디스크 드라이브(400')는 도 4(a)에 도시된 디스크 드라이브(400)에 비하여 비휘발성 메모리 장치(490)가 추가된다. 비휘발성 메모리 장치(490)에는 디스크 드라이브(400')에 저장하고자 하는 데이터의 일부가 저장될 수 있다. 일 예로서, 디스크 드라이브(400') 제어에 필요한 각종 정보들이 비휘발성 메모리 장치(490)에 저장될 수 있다.
그리고, 비휘발성 메모리 장치(490)에는 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들이 저장될 수 있다. 또한 저장 장치의 다양한 기능을 구현시키기 위한 코드 오브젝트들도 비휘발성 메모리 장치(490)에 저장할 수 있다.
프로세서(430)는 ROM(460), RAM(470) 및 비휘발성 메모리 장치(490)와 각각 결합되어 있다. ROM(460)에는 디스크 드라이브를 제어하는 펌웨어 및 제어 데이터들이 저장되어 있다. 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들이 ROM(460)에 저장될 수 있다. 물론, 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 위한 프로그램 코드 및 정보들은 ROM(460) 대신에 디스크(12)의 메인터넌스 실린더 영역 또는 비휘발성 메모리 장치(490)에 저장될 수도 있다.
RAM(470)에는 프로세서(430)의 제어에 따라 ROM(460), 디스크(12) 또는 비휘발성 메모리 장치(490)에 저장된 프로그램 코드 및 정보들이 초기화 모드에서 로딩된다.
도 4(a)의 디스크 드라이브(400)에서 이미 설명한 동일한 구성 수단들에 대한 중복된 설명은 피하기로 한다.
다음으로, 도 4(a) 또는 도 4(b)를 참조하여 디스크 드라이브의 데이터 리드 동작 및 데이터 라이트 동작을 설명하기로 한다.
데이터 리드(read) 모드에서, 디스크 드라이브는 디스크(12)로부터 헤드(16)에 의하여 감지된 전기적인 신호를 프리 앰프(410)에서 증폭시킨다. 그리고 나서, 리드 및 라이트 채널(420)에서 신호의 크기에 따라 이득을 자동으로 가변시키는 자동 이득 제어 회로(도면에 미도시)에 의하여 프리 앰프(410)로부터 출력되는 신호를 증폭시키고, 이를 디지털 신호로 변환시킨 후에, 복호 처리하여 데이터를 검출한다. 검출된 데이터는 프로세서(430)에서 일예로서 에러 정정 코드인 리드 솔로몬 코드를 이용한 에러 정정 처리를 실행한 후에, 스트림 데이터로 변환하여 호스트 인터페이스(480)를 통하여 호스트 기기(102)로 전송한다.
데이터 라이트(write) 모드에서, 디스크 드라이브는 호스트 인터페이스(480)를 통하여 호스트 기기로부터 데이터를 입력받아, 프로세서(430)에서 리드 솔로몬 코드에 의한 에러 정정용 심볼을 부가하고, 리드 및 라이트 채널(420)에 의하여 기록 채널에 적합하도록 부호화 처리한 후에 프리 앰프(410)에 의하여 증폭된 기록 전류로 헤드(16)를 통하여 디스크(12)에 기록시킨다.
그러면, RAM(470)에 로딩된 프로그램 코드 및 정보들을 이용하여 프로세서(430)에서 도 11, 도 13 및 도 15의 라이트 방법을 실행시키기 동작에 대하여 설명하기로 한다.
우선, 본 발명의 일 실시예에 따른 저장 장치의 하나인 디스크 드라이브에서의 기록 밀도를 높이기 위하여 제안된 새로운 라이트 방식인 슁글 라이트(shingle write) 방식에 대하여 설명하기로 한다. 슁글 라이트(shingle write) 방식은 디스크의 트랙(track)들이 기왓장처럼 서로 겹쳐지면서 한 쪽 방향으로만 연속적으로 라이트를 실행하는 라이트 방식이다.
도 7은 슁글 라이트 방식을 이용하는 저장 매체의 일 실예를 도시한 도면이다.
도 7을 참조하면, 저장 매체는 X 개(X는 자연수)의 존들(ZONE 1 내지 ZONE X)을 포함하고, 하나의 존은 Y 개(Y는 자연수)의 밴드들(BAND1 내지 BAND N)을 포함하고, 하나의 밴드는 복수개의 트랙들을 포함하며, 하나의 트랙은 복수개의 데이터 섹터들(미도시)을 포함할 수 있다. 예를 들어, 도 7의 경우 밴드(BAND 1)는 Z 개(Z는 자연수)의 트랙들을 포함하고, 밴드(BAND 2)는 J 개(J는 자연수)의 트랙들을 포함할 수 있다. 각각의 존은 동일한 개수의 밴드들을 포함할 수도 있고 다른 개수의 밴드들을 포함할 수도 있다. 또한, 각각의 트랙은 동일한 개수의 섹터들을 포함할 수도 있고 다른 개수의 섹터들을 포함할 수도 있다.
밴드들(BAND1 내지 BAND N) 각각에 포함된 트랙들에는 슁글 라이트 방식을 이용하여 데이터가 연속적으로 라이트될 수 있다. 예를 들어, 트랙(TRACK 2)은 트랙(TRACK 1)의 일부 영역에 오버라이트되고, 트랙(TRACK 3)은 트랙(TRACK 2)의 일부 영역에 오버라이트되며, 트랙(TRACK M)은 트랙(TRACK M-1)의 일부 영역에 오버라이트될 수 있다. 그러므로, 도 7과 같은 구조를 가지는 저장 매체는 반경 방향의 기록 밀도인TPI(Track Per Inch) 특성을 높일 수 있다. 다만, 밴드(BAND 2)의 첫 번째 트랙인 트랙(TRACK M+1)은 밴드(BAND 1)의 마지막 트랙인 트랙(TRACK M)에 오버라이트되지 않는다. 이와 같이 슁글 라이트 시 각각의 밴드의 첫 번째 트랙은 이전 밴드의 마지막 트랙에 오버라이트되지 않는다. 도 7의 참조번호 710 및 720은 오버라이트된 영역들을 도시한 것이다.
또한, 수신된 라이트할 데이터는 대응하는 가상 밴드의 트랙들에 연속적으로 라이트될 수 있다. 예를 들어, 밴드(BAND 1)에 라이트하기 위하여 처음으로 수신된 데이터는 트랙(TRACK 1)의 첫 번째 데이터 섹터부터 라이트되고, 이후에 수신되는 라이트할 데이터는 이전에 라이트되어 있는 데이터 섹터 이후의 데이터 섹터부터 연속적으로 라이트될 수 있다. 만약, 하나의 트랙의 모든 데이터 섹터들에 데이터를 라이트한 경우, 인접한 다음 트랙의 첫 번째 데이터 섹터부터 나머지 데이터가 연속적으로 라이트될 수 있다. 그리고, 이후에 리드 커맨드가 수신된 경우 리드 동작을 수행하기 위하여 각각의 수신된 데이터의 논리적 블록 어드레스(LBA ; Logical Block Address)에 대한 새로운 디스크 주소를 동적으로 할당할 수 있다.
도 7은 설명의 편의를 위하여 각 트랙이 동일한 길이를 갖는 것으로 도시하였다. 그러나, 저장 매체가 하드디스크와 같이 플래터(platter)상의 동심원으로 데이터가 라이트되는 경우에, 트랙마다 길이가 다르다. 따라서 저장 매체가 하드디스크와 같은 디스크인 경우, 바깥쪽 트랙은 안쪽트랙보다 더 많은 수의 섹터로 구성될 수 있다.
도 7과 같은 구조로 슁글 라이트가 가능한 저장 매체는 하드디스크로 제한되는 것은 아니며, 트랙을 갖는 저장 매체에 데이터를 라이트하는 경우 적용될 수 있다.
도 8(a) 및 도 8(b)는 슁글 라이트 방식을 이용하여 데이터를 라이트하는 경우의 제한 조건을 설명하기 위한 도면이다.
도 8(a)를 참조하면, 도 8(a)와 같은 구조의 저장 매체에서 슁글 라이트 방식을 이용하여 화살표 방향으로 데이터를 라이트하는 경우, 화살표 방향으로만 플럭스(flux)가 발생하므로 트랙(TRACK N)을 라이트한 후에는 트랙(TRACK N-1)을 라이트할 수 없다는 제한 조건을 만족하여야 한다. 만일, 도 8(b)에 도시된 바와 같이 트랙(TRACK N)을 라이트한 후에 슁글 라이트 진행 방향과 반대 방향인 트랙(TRACK N-1)을 라이트하면, 트랙(TRACK N)에 라이트되어 있는 데이터가 인접 트랙 간섭(ATI ; Adjacent Track Interference)에 의하여 지워지는 문제가 발생한다.
따라서, 이러한 문제를 해결하기 위하여 항상 디스크의 내주 방향 또는 디스크의 외주 방향 중의 어느 한 방향으로만 연속적으로 라이트를 수행하도록 호스트에서 제공되는 논리 블록 어드레스(LBA)에 대한 새로운 디스크 주소를 동적으로 할당하는 기술이 필요하게 되었다.
이하에서는 상기 논리 블록 어드레스를 디스크 드라이브의 물리적 블록 어드레스(PBA ; Physical Block Address)인 CHS(Cylinder Head Sector)로 변환시키는 과정에 가상 어드레스(Virtual Address)를 이용하는 경우를 가정하여 설명한다. 즉, 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 상기 논리적 블록 어드레스와 상기 가상 어드레스의 매핑 정보를 이용하여 데이터를 라이트하거나 저장되어 있는 데이터를 리드할 수 있다.
도 9는 도 1(a) 또는 도 1(b)의 프로세서(110) 또는 도 4(a) 또는 도 4(b)의 프로세서(430)의 일 실시예를 도시한 도면이다.
도 10은 도 9의 제 2 프로세서(920)의 일 실시예를 도시한 도면이다.
도 1(a) 또는 도 1(b), 도 4(a) 또는 도 4(b) 및 도 9를 참조하면, 프로세서(110 또는 430)는 제 1 프로세서(910), 제 2 프로세서(920) 및 제 3 프로세서(930)를 포함할 수 있다. 이 경우, 제 2 프로세서(920) 및 제 3 프로세서(930)는 하나의 프로세서(940)로 통합하여 설계할 수도 있다. 물론, 도면에서 표시되어 있지 않지만 제 1 프로세서(910) 및 제 2 프로세서(920)도 하나의 프로세서로 통합하여 설계할 수도 있다.
제 1 프로세서(910)는 수신되는 커맨드에서 지정하는 논리적 블록 어드레스를 추출하는 동작을 수행한다.
제 2 프로세서(920)는 제 1 프로세서(910)에서 추출된 상기 논리적 블록 어드레스를 가상 어드레스로 변환시키는 동작을 수행한다. 즉, 제 2 프로세서(920)는 매핑 테이블을 이용하여 상기 논리적 블록 어드레스를 상기 가상 어드레스로 변환할 수 있다. 상기 매핑 테이블은 상기 논리적 블록 어드레스와 상기 가상 어드레스 간의 매핑 정보를 포함할 수 있다. 상기 매핑 테이블은 도 11의 정보 저장부(1120)에 저장될 수 있다.
도 9 및 도 10을 참조하면, 제 2 프로세서(920)는 프리 큐(free queue; 1010), 얼로케이션 큐(allocation queue; 1020) 및 가비지 큐(garbage queue; 1030)를 포함할 수 있다. 제 2 프로세서(920)는 프리 큐(1010), 얼로케이션 큐(1020) 및 가비지 큐(1030)를 이용하여 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 상기 가상 어드레스로 변환시킨다.
제 2 프로세서(920)는 논리적 밴드에 할당되어 있지 않은 가상 밴드들의 정보들을 정해진 규칙에 따른 순서로 프리 큐(1010)에 저장한다. 예를 들어, 상기 논리적 밴드에 할당되어 있지 않은 가상 밴드란 유효한 데이터(valid data)를 가지고 있는 데이터 섹터를 포함하지 않는 가상 밴드를 의미할 수 있다. 프리 큐(1010)에는 커맨드에 따라서 논리적 밴드에 할당될 수 있는 가상 밴드 정보들이 저장되어 선택을 위하여 대기하는 수단이다. 프리 큐(1010)에는 가상 존 별 또는 물리적 존 별로 논리적 밴드에 할당될 수 있는 가상 밴드 정보들이 분류되어 저장될 수 있다.
제 2 프로세서(920)는 논리적 밴드에 할당된 가상 밴드들에 대한 정보를 얼로케이션 큐(1020)에 저장한다. 예를 들어, 제 2 프로세서(920)는 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 할당된 가상 밴드가 상기 매핑 테이블에 존재하지 않거나 또는 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 할당된 가상 밴드에서 모든 가상 어드레스가 이미 할당되어 소진된 경우에, 프리 큐(1010)에 대기 중인 하나의 가상 밴드를 선택하여 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 할당하여 얼로케이션 큐(1020)로 이동시킨다(P1).
다음으로, 제 2 프로세서(920)는 얼로케이션 큐(1020)에 저장되어 있는 논리적 밴드에 할당된 가상 밴드에 기초하여 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스에 대응되는 가상 어드레스를 할당한다. 구체적으로, 제 2 프로세서(920)는 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 새로운 가상 어드레스를 할당하여 얼로케이션 큐(1020)에 저장한 경우에, 새로 할당된 논리적 밴드의 첫 번째 데이터 섹터에 대응되는 가상 어드레스를 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스에 할당한다.
그리고, 제 2 프로세서(920)는 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 이미 할당된 가상 밴드가 얼로케이션 큐(1020)에 존재하는 경우에, 해당 가상 밴드에서 할당되지 않은 가상 어드레스를 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스에 할당한다. 예를 들어, 상기 논리적 블록 어드레스를 포함하는 논리적 밴드에 이미 할당된 가상 밴드에서 마지막으로 액세스된 데이터 섹터 바로 다음의 데이터 섹터에 대한 가상 어드레스를 상기 수신된 커맨드에서 지정하는 상기 논리적 블록 어드레스에 할당할 수 있다.
제 2 프로세서(920)는 논리적 밴드에 할당된 가상 밴드들 중에서 데이터 업데이트에 따른 무효화(invalid)된 가상 어드레스의 개수가 임계치를 초과하는 가상 밴드를 선택하여 가비지 큐(1030)로 이동시킨다(P2).
그리고, 제 2 프로세서(920)는 프리 큐(1010)에 저장된 가상 밴드들의 개수가 초기 설정된 최소값 미만인 경우에, 가비지 컬렉션 프로세스를 수행한다. 즉, 제 2 프로세서(920)는 가비지 큐(1030)에 저장되어 있는 가상 밴드에서 유효한 가상 어드레스들의 섹터에 저장되어 데이터를 읽어내어 프리 큐(1010)에서 새로 할당받은 가상 밴드에서 지정하는 가상 어드레스에 다시 쓰기를 실행한다.
제 2 프로세서(920)는 가비지 큐(1030)에 저장된 가상 밴드들 중에서 이와 같이 다시 쓰기를 수행한 가상 밴드에 대한 정보를 프리 큐(1010)로 이동시킨다(P3). 이 경우, 상기 다시 쓰기를 수행한 가상 밴드에는 유효한 데이터(valid data)를 가지고 있지 않으며, 저장되어 있는 데이터는 모두 무효한 데이터(invalid data)이다.
다음으로, 제 3 프로세서(930)는 제 2 프로세서(920)에서 변환된 가상 어드레스를 디스크의 물리적 블록 어드레스로 변환시키고, 변환된 물리적 블록 어드레스에 따라서 저장 매체를 액세스하도록 저장 장치를 제어한다. 즉, 제 3 프로세서(930)는 가상 어드레스를 디스크의 물리적 위치를 나타내는 CHS(Cylinder Head Sector) 정보로 변환시키고, 변환된 CHS(Cylinder Head Sector) 정보에 기초하여 디스크를 액세스하기 위한 보이스 코일 모터 구동 제어신호를 생성시킨다.
도 4(a) 또는 도 4(b)를 참조하면, 제 3 프로세서(930)에서 생성된 보이스 코일 모터 구동 제어신호가 VCM 구동부(440)에 인가되면, VCM 구동부(440)는 보이스 코일 모터 구동 제어신호에 상응하는 보이스 코일 모터 구동 전류를 생성시켜 보이스 코일 모터(30)에 공급한다. 이에 따라서, 자기 헤드(16)는 액세스하고자 하는 디스크의 트랙 위치로 이동되어, 커맨드에 상응하는 데이터 라이트 또는 데이터 리드 동작을 수행할 수 있게 된다.
도 11은 본 발명의 기술적 사상에 의한 일 실시예에 따른 저장 장치(1100)의 블록도이다.
도 11을 참조하면, 저장 장치(1100)는 패턴 감지부(1110), 정보 저장부(1120), 저장 매체 인터페이스(1130) 및 저장 매체(1140)를 구비할 수 있다.
도 11의 패턴 감지부(1110)는 도 1의 프로세서(110) 또는 도 4(a) 또는 도 4(b)의 프로세서(430) 또는 도 9의 제 1 프로세서(910)에 포함될 수 있다. 다만, 본 발명이 이 경우에 한정되는 것은 아니며 패턴 감지부(1110)는 다른 구성 요소에 포함될 수도 있다.
패턴 감지부(1110)는 연속적인 논리적 블록 어드레스(LBA)들을 가지는 데이터의 상기 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드들을 하나의 논리적 밴드로 병합할 수 있다. 상기 논리적 밴드는 상기 가상 밴드들과 매핑될 수 있고, 상기 가상 밴드는 복수의 트랙들을 포함할 수 있다. 상기 복수의 트랙들 각각은 인접한 트랙과 일 부분이 겹쳐지고, 한 쪽 방향으로 연속적으로 데이터를 라이트하는 슁글(shingle) 라이트 방식을 이용하여 데이터가 라이트될 수 있다.
예를 들어, 하나의 논리적 밴드가 하나의 가상 밴드에 매핑되고, 각각의 논리적 밴드는 100개의 논리적 블록 어드레스들을 포함한다고 가정한다. 즉, 제 1 논리적 밴드는 논리적 블록 어드레스 "0"부터 "99"를 포함하고, 제 2 논리적 밴드는 논리적 블록 어드레스 "100"부터 "199"를 포함한다고 가정한다. 연속적인 150개의 논리적 블록 어드레스들(논리적 블록 어드레스"0"부터 "149")을 가지는 데이터를 라이트하기 위하여 수신한 경우, 상기 수신된 데이터의 논리적 블록 어드레스들은 제 1 논리적 밴드 및 제 2 논리적 밴드에 포함된다. 그러므로, 패턴 감지부(1110)는 상기 제 1 논리적 밴드 및 제 2 논리적 밴드를 병합하여 200개의 논리적 블록 어드레스들을 가지는 하나의 논리적 밴드를 설정할 수 있다. 다른 하나의 방법으로, 패턴 감지부(1110)는 상기 데이터의 첫 번째 논리적 블록 어드레스 "0"를 포함하는 제 1 논리적 밴드부터 상기 데이터의 마지막 논리적 블록 어드레스 "149"를 포함하는 제 2 논리적 밴드까지 하나의 논리적 밴드로 병합할 수 있다. 데이터를 라이트하기 위한 라이트 커맨드가 수신되는 경우 상기 논리적 블록 어드레스들에 관한 정보도 함께 수신되므로, 패턴 감지부(1110)는 라이트할 데이터의 논리적 블록 어드레스들의 정보를 이용하여 논리적 밴드들을 병합할 수 있다. 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 방법에 관하여는 도 12, 도 13, 도 14(b), 도 18 및 도 19를 참조하여 보다 상세하게 설명한다.
패턴 감지부(1110)는 상기 병합된 논리적 밴드의 범위에 관한 정보 및 상기 병합된 논리적 밴드에 매핑되는 적어도 하나의 가상 밴드의 정보를 포함하는 매핑 정보를 정보 저장부(1120)에 저장할 수 있다. 예를 들어, 정보 저장부(1120) 중 상기 병합된 논리적 밴드의 범위에 관한 정보 및 상기 병합된 논리적 밴드에 매핑되는 적어도 하나의 가상 밴드의 정보를 포함하는 매핑 정보가 저장되는 부분은 도 9의 얼로케이션 큐(1020)일 수 있다. 상기 매핑 정보에는 라이트된 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보도 포함할 수 있다. 상기 매핑 정보에 관하여도 도 18 및 도 19를 참조하여 보다 상세하게 설명한다.
패턴 감지부(1110)는 상기 수신된 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 저장 매체 인터페이스(1130)는 패턴 감지부(1110)의 제어에 의하여 저장 매체(1140)에서의 라이트 동작을 수행할 수 있다.
연속적인 논리적 블록 어드레스를 가지는 데이터는 한번에 수신될 수도 있고 여러 번에 나누어 수신될 수도 있다. 예를 들어, "00"부터 "150"까지의 연속된 논리적 블록 어드레스들을 가지는 제 1 데이터가 수신된 이후, "151"부터 "250"까지의 연속된 논리적 블록 어드레스들을 가지는 제 2 데이터가 수신될 수 있다. 이 경우, 패턴 감지부(1110)는 상기 제 1 데이터에 대하여 이상에서 설명한 것과 같이 상기 제 1 데이터의 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드들을 하나의 논리적 밴드로 병합할 수 있다. 그리고, 패턴 감지부(1110)는 이후에 수신된 상기 제 2 데이터가 상기 제 1 데이터에 연속하여 라이트되도록 저장 매체 인터페이스(1130)를 제어하고, 상기 제 2 데이터의 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드들이 존재하는 경우, 상기 복수의 논리적 밴드들을 하나의 논리적 밴드로 병합할 수 있다. 연속된 논리적 블록 어드레스를 가지는 데이터가 여러번에 나누어 수신되는 경우에 대하여도 도 18 및 도 19를 참조하여 보다 상세하게 설명한다.
본 발명의 기술적 사상에 의한 일 실시예와 같이 상기 논리적 밴드의 범위를 변경하는 경우, 이후에 업데이트 동작에 따른 다른 가상 밴드의 사용을 최소화할 수 있다. 상기 업데이트 동작에 관하여는 도 15, 도 16(b), 도 20 내지 도 23과 관련하여 상세하게 설명한다.
상기 라이트된 연속적인 논리적 블록 어드레스들을 가지는 데이터가 무효한(invalid) 데이터가 된 경우, 상기 병합된 논리적 밴드를 다시 최소의 논리적 밴드들로 분리할 수 있다.
도 12는 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 방법의 흐름도이다.
도 11 및 도 12를 참조하면, 패턴 감지부(1110)는 연속적인 논리적 블록 어드레스들을 가지는 데이터의 상기 논리적 블록 어드레스들을 포함하는 복수의 논리적 밴드들을 하나의 논리적 밴드로 병합할 수 있다(S1210). 패턴 감지부(1110)는 상기 데이터를 상기 병합된 하나의 논리적 밴드에 대응하는 적어도 하나의 가상 밴드에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다(S1220). 패턴 감지부(1110)는 상기 병합된 논리적 밴드의 범위에 관한 정보 및 상기 병합된 논리적 밴드에 매핑되는 상기 가상 밴드들의 정보를 포함하는 매핑 정보를 정보 저장부(1120)에 저장할 수 있다(S1230). 상기 매핑 정보는 상기 라이트된 데이터의 논리적 블록 어드레스들과 가상 어드레스 사이의 매핑 정보를 더 포함할 수 있다. 상기 S1210 단계와 S1220 단계는 동시에 수행될 수도 있고, 어느 하나의 단계가 먼저 수행되고 나머지 하나의 단계가 수행될 수도 있다.
도 13은 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 라이트 방법의 흐름도이다. 도 13의 실시예는 연속적인 논리적 블록 어드레스들을 가지는 데이터가 여러 번에 나누어 수신되는 경우에 관한 실시예이다.
도 11 내지 도 13을 참조하면, S1310 단계 내지 S1330 단계는 도 12의 S1210 단계 내지 S1230 단계와 동일하므로 S1310 단계 내지 S1330 단계에 대한 구체적인 설명은 생략한다. S1310 단계 내지 S1330 단계를 수행하여 상기 데이터를 라이트한 이후에 라이트할 새로운 데이터가 수신된 경우, 상기 수신된 새로운 데이터가 상기 라이트된 데이터에 연속하는 데이터인지를 판단한다(S1340). S1340 단계의 판단 결과 상기 수신된 라이트할 데이터가 상기 라이트된 데이터에 연속하는 경우, 패턴 감지부(1110)는 상기 수신된 데이터를 라이트된 데이터에 연속하여 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다(S1350). 그리고, 상기 수신된 데이터의 논리적 블록 어드레스들이 복수의 논리적 밴드들에 포함되는 경우, 패턴 감지부(1110)는 상기 복수의 논리적 밴드들을 하나의 논리적 밴드로 병합하고 정보 저장부(1120)에 저장되어 있는 상기 매핑 정보를 변경할 수 있다(S1360). 즉, 패턴 감지부(1110)는 상기 병합된 논리적 밴드의 범위에 관한 정보, 상기 병합된 논리적 밴드에 매핑되는 적어도 하나의 가상 밴드의 정보 및 S1350 단계에서 라이트된 데이터의 논리적 블록 어드레스들과 가상 어드레스들 사이의 매핑 정보를 정보 저장부(1120)에 저장할 수 있다. 상기 S1350 단계와 S1360 단계는 동시에 수행될 수도 있고, 어느 하나의 단계가 먼저 수행되고 나머지 하나의 단계가 수행될 수도 있다.
S1340 단계의판단 결과 상기 수신된 라이트할 데이터가 상기 라이트된 데이터에 연속하지 않는 경우, 패턴 감지부(1110)는 저장 매체 인터페이스(1130)가 상기 수신된 데이터를 대응하는 가상 밴드에 라이트하도록 제할 수 있다(S1370).
도 14(a)는 종래 기술에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이고, 도 14(b)는 본 발명의 기술적 사상의 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다. 이하에서는 설명의 편의상 가상 밴드들(VB00, VB01, VB02)에 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트한다고 가정한다.
도 14(a)를 참조하면, 종래의 경우 논리적 밴드와 가상 밴드는 1:1 매핑된다. 상기 논리적 밴드와 상기 가상 밴드가 반드시 동일한 크기를 가질 필요는 없지만, 하나의 논리적 밴드는 하나의 가상 밴드에 매핑된다. 즉, 논리적 밴드(LB00)는 가상 밴드(VB00)에 매핑되고, 논리적 밴드(LB01)는 가상 밴드(VB01)에 매핑되며, 논리적 밴드(LB02)는 가상 밴드(VB02)에 매핑될 수 있다. 1410은 유효한 데이터가 저장되어 있지 않은 프리 밴드 상태의 가상 밴드들을 도시하고 있다. 즉, 가상 밴드들(VB03, VB04, VB05) 각각은 상기 프리 밴드 상태임을 의미한다.
도 14(b)를 참조하면, 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 연속적인 논리적 블록 어드레스들을 가지는 데이터의 범위에 따라 논리적 밴드의 범위를 변경하므로, 논리적 밴드(LB00)는 도 14(a)의 논리적 밴드(LB00)의 3 배의 범위를 가질 수 있다. 즉, 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 논리적 밴드(LB00)는 도 14(a)의 논리적 밴드들(LB00, LB01, LB02)가 병합된 것일 수 있다. 도 14(b)의 실시예에서 논리적 밴드(LB00)에는 가상 밴드들(VB00, VB01, VB02)이 매핑될 수 있다. 1450은 유효한 데이터가 저장되어 있지 않은 프리 밴드 상태의 가상 밴드들을 도시하고 있다. 즉, 가상 밴드들(VB03, VB04, VB05) 각각은 상기 프리 밴드 상태임을 의미한다.
도 15는 본 발명의 기술적 사상에 의한 일 실시예에 따라 라이트 동작을 수행한 이후 상기 라이트된 데이터를 업데이트하는 라이트 방법에 관한 흐름도이다. 이하에서는 도 12 또는 도 13의 실시예와 같이 라이트 동작을 수행한 이후 상기 라이트된 데이터를 업데이트하는 동작을 설명한다.
도 11 내지 도 15를 참조하면, 먼저 상기 라이트된 데이터를 업데이트할 것인지 판단한다(S1510). S1510 단계의 판단 결과 상기 라이트된 데이터의 일부를 업데이트하기 위한 제 1 업데이트용 데이터가 수신된 경우, 패턴 감지부(1110)는 상기 제 1 업데이트용 데이터를 다른 적어도 하나의 가상 밴드에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다(S1520). 또는, 패턴 감지부(1110)는 상기 제 1 업데이트용 데이터를 라이트되어 있는 데이터에 연속하여 라이트하도록 상기 저장 매체 인터페이스(1130)를 제어할 수 있다. S1520 단계를 수행한 경우, 패턴 감지부(1110)는 상기 업데이트한 데이터에 관한 매핑 정보를 변경하여 정보 저장부(1120)에 저장할 수 있다(S1530). 상기 매핑 정보는 상기 논리적 밴드에 매핑되는 상기 다른 적어도 하나의 가상 밴드의 정보 및 S1520 단계에서 라이트된 데이터의 논리적 블록 어드레스들과 가상 어드레스들 사이의 매핑 정보를 포함할 수 있다. 이 경우, 상기 업데이트된 데이터에 대응하여 라이트되어 있던 데이터의 논리적 블록 어드레스들과 가상 어드레스들 사이의 매핑 정보를 삭제될 수 있다.
이후에 S1510 단계에서 상기 라이트된 데이터의 일부를 업데이트하기 위한 제 2 업데이트용 데이터가 수신된 경우, 패턴 감지부(1110)는 상기 제 2 업데이트용 데이터를 상기 제 1 업데이트용 데이터를 라이트한 마지막 가상 밴드에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다(S1520). 예를 들어, S1520 단계에서 패턴 감지부(1110)는 상기 제 2 업데이트용 데이터를 상기 라이트된 제 1 업데이트용 데이터에 연속하여 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 상기 제 2 업데이트용 데이터에 대하여 S1520 단계를 수행한 경우, 패턴 감지부(1110)는 상기 업데이트한 데이터에 관한 매핑 정보를 변경하여 정보 저장부(1120)에 저장할 수 있다(S1530). 상기 매핑 정보는 상기 논리적 밴드에 매핑되는 상기 다른 적어도 하나의 가상 밴드의 정보 및 S1520 단계에서 라이트된 데이터의 논리적 블록 어드레스들과 가상 어드레스들 사이의 매핑 정보를 포함할 수 있다. 이 경우, 상기 업데이트된 데이터에 대응하여 라이트되어 있던 데이터의 논리적 블록 어드레스들과 가상 어드레스들 사이의 매핑 정보를 삭제될 수 있다.
이상에서 설명한 것과 같이 이후에 업데이트용 데이터가 수신되어 업데이트 동작을 수행하는 경우, S1520 단계 및 S1530 단계를 수행할 수 있다. 그리고, 수신되는 업데이트용 데이터는 이전에 라이트된 업데이트용 데이터에 연속하여 라이트될 수 있다.
도 16(a)는 종래 기술에 의하여 업데이트 동작을 수행한 경우 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이고, 도 16(b)는 본 발명의 기술적 사상의 일 실시예에 의하여 업데이트 동작을 수행한 경우 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다. 이하에서는 설명의 편의상 가상 밴드(VB01)에 라이트된 데이터의 일부를 업데이트하기 위한 제 1 업데이트용 데이터, 가상 밴드(VB02)에 라이트된 데이터의 일부를 업데이트하기 위한 제 2 업데이트용 데이터 및 가상 밴드(VB00)에 라이트된 데이터의 일부를 업데이트하기 위한 제 3 업데이트용 데이터가 순차적으로 수신된다고 가정한다.
도 16(a)는 도 14(a)와 같이 라이트 동작을 수행한 이후에 업데이트 동작을 수행하는 경우에 대한 도면이다. 도 16(a)를 참조하면, 먼저 가상 밴드(VB01)에 라이트된 데이터의 일부를 업데이트하기 위한 제 1 업데이트용 데이터가 수신된 경우, 상기 프리 밴드 상태였던 가상 밴드(VB03)에 상기 제 1 업데이트용 데이터를 라이트하고 논리 밴드(LB01)와 가상 밴드(VB03)를 매핑시킨다. 이후에 가상 밴드(VB02)에 라이트된 데이터의 일부를 업데이트하기 위한 제 2 업데이트용 데이터가 수신된 경우, 상기 프리 밴드 상태였던 가상 밴드(VB04)에 상기 제 2 업데이트용 데이터를 라이트하고 논리 밴드(LB02)와 가상 밴드(VB04)를 매핑시킨다. 마지막으로, 가상 밴드(VB00)에 라이트된 데이터의 일부를 업데이트하기 위한 제 3 업데이트용 데이터가 수신된 경우, 상기 프리 밴드 상태였던 가상 밴드(VB05)에 상기 제 3 업데이트용 데이터를 라이트하고 논리 밴드(LB01)와 가상 밴드(VB05)를 매핑시킨다.
도 16(b)는 본 발명의 기술적 사상에 의한 일 실시예에 따라 도 14(b)와 같이 라이트 동작을 수행한 이후에 업데이트 동작을 수행하는 경우에 대한 도면이다. 도 16(b)를 참조하면, 먼저 가상 밴드(VB01)에 라이트된 데이터의 일부를 업데이트하기 위한 제 1 업데이트용 데이터가 수신된 경우, 상기 프리 밴드 상태였던 가상 밴드(VB03)에 상기 제 1 업데이트용 데이터를 라이트하고 논리 밴드(LB01)와 가상 밴드(VB03)를 매핑시킨다. 이후에 가상 밴드(VB02)에 라이트된 데이터의 일부를 업데이트하기 위한 제 2 업데이트용 데이터가 수신된 경우, 가상 밴드(VB03)에 라이트된 상기 제 1 업데이트용 데이터에 연속하여 상기 제 2 업데이트용 데이터를 라이트할 수 있다. 마지막으로, 가상 밴드(VB00)에 라이트된 데이터의 일부를 업데이트하기 위한 제 3 업데이트용 데이터가 수신된 경우, 가상 밴드(VB03)에 라이트된 상기 제 2 업데이트용 데이터에 연속하여 상기 제 3 업데이트용 데이터를 라이트할 수 있다. 도 16(b)에서는 제 1 내지 제 3 업데이트용 데이터를 합하여도 가상 밴드(VB03)를 초과하지 않는다고 가정한다. 만약, 제 1 내지 제 3 업데이트용 데이터를 합하여도 가상 밴드(VB03)를 초과하는 경우에는 상기 프리 밴드 상태의 가상 밴드(VB04)에 상기 초과하는 업데이트용 데이터를 라이트할 수도 있다.
도 16(a)와 같이 종래 기술의 경우에는 상기 논리적 밴드와 상기 가상 밴드가 1:1 매핑되어 있으므로, 상기 업데이트 동작을 수행하기 위하여 복수의 가상 밴드들을 필요로 한다. 그러나, 도 16(b)와 같이 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 상기 라이트된 데이터의 가상 밴드들은 하나의 논리적 밴드에 매핑되어 있으므로, 상기 업데이트 동작을 수행하기 위하여는 하나의 가상 밴드를 추가하면 된다. 만약, 추가된 가상 밴드에 데이터가 전부 라이트된 경우 새로운 가상 밴드가 다시 추가될 수 있다. 따라서, 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 종래에 비하여 업데이트 동작에 따라 필요한 가상 밴드의 개수를 최소화할 수 있다. 또한, 도 16(a)와 같이 상기 프리 밴드 상태의 가상 밴드가 부족하게 되는 경우, 데이터가 기록되어 있는 가상 밴드들의 데이터를 하나의 가상 밴드로 머지(merge)하여 상기 프리 밴드 상태의 가상 밴드를 확보하여야 한다. 그러나, 도 16(b)와 같이 본 발명의 기술적 사상에 의한 일 실시예에 의할 경우 종래보다 상기 머지 동작을 더 적게 수행하고도 상기 프리 밴드 상태의 가상 밴드들을 확보할 수 있다.
도 17은 도 18 내지 도 23을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명하기 위한 가상 밴드들의 도면이다.
도 17을 참조하면, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 25개의 데이터 섹터들을 포함하고 있고, 가상 밴드들(VB00, VB01, VB02, VB03) 각각과 동일한 크기를 가지는 논리적 밴드들이 있다고 가정한다. 즉, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 가상 어드레스들(0 내지 24)에 각각 대응하는 데이터 섹터들(SN00 내지 SN24)을 포함하고, 상기 논리적 밴드들 각각은 논리적 블록 어드레스들(0 내지 24)을 포함한다고 가정한다. 다만, 본 발명이 이 경우에 한정되는 것은 아니며 각각의 가상 밴드는 다른 개수의 데이터를 섹터들을 포함할 수도 있다. 또한, 설명의 도 18 내지 도 23에서는 각각의 논리적 밴드와 각각의 가상 밴드가 동일한 크기를 가지는 경우를 가정하고 있으나, 본 발명이 반드시 이 경우에 한정되는 것은 아니며 상기 가상 밴드와 상기 논리적 밴드가 다른 크기를 가질 수도 있다. 상기 가상 밴드와 상기 논리적 밴드가 다른 크기를 가지는 경우에 대하여는 도 27 내지 도 28(b)를 참조하여 설명한다.
도 18은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 12의 라이트 동작을 설명하기 위한 도면이다. 이하에서는 도 11, 도 12, 도 17 및 도 18을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명한다.
먼저, 1810과 같이 논리적 블록 어드레스(LBA) "0"부터 30개의 연속적인 논리적 블록 어드레스들에 대응하는 제 1 데이터를 라이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 1810에서 "LBA"는 상기 제 1 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 상기 제 1 데이터의 논리적 블록 어드레스들(0 내지 29)은 두 개의 논리적 밴드들에 포함되므로, 패턴 감지부(1110)는 상기 두 개의 논리적 밴드들을 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 제 1 데이터의 논리적 블록 어드레스들(0 내지 24)이 포함되는 논리적 밴드 및 상기 제 1 데이터의 논리적 블록 어드레스들(25 내지 29)이 포함되는 논리적 밴드를 하나의 논리적 밴드로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 제 1 데이터의 첫 번째 논리적 블록 어드레스 "0"이 포함되는 논리적 밴드부터 상기 제 1 데이터의 마지막 논리적 블록 어드레스 "29"가 포함되는 논리적 밴드까지 하나의 논리적 밴드로 병합할 수 있다. 그리고, 상기 제 1 데이터는 가상 밴드들(VB00, VB01)에 라이트될 수 있다. 패턴 감지부(1110)는 병합된 "0"번 논리적 밴드(LB)에 매핑되는 가상 밴드들(VB00, VB01)의 정보(VB) 및 논리적 밴드(LB00)의 범위 정보(LBR)를 1830과 같이 설정하여 정보 저장부(1120)에 저장할 수 있다. 25개씩의 논리적 블록 어드레스들을 포함하는 두 개의 논리적 밴드를 병합하였으므로, 논리적 밴드(LB00)의 범위 정보(LBR)는 "50"이 될 수 있다.
패턴 감지부(1110)는 가상 밴드(VB00)의 데이터 섹터(SN00)에 대응하는 가상 어드레스 "0"부터 상기 제 1 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 상기 제 1 데이터 중 가상 밴드(VB00)에 라이트되고 남은 데이터는 가상 밴드(VB01)의 데이터 섹터(SN00)에 대응하는 가상 어드레스 "0"부터 라이트될 수 있다. 상기 라이트 동작을 수행한 경우, 패턴 감지부(1110)는 상기 라이트된 제 1 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보(1850)를 생성하여 정보 저장부(1120)에 저장할 수 있다. 1850에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 1850에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 상기 라이트된 제 1 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보(1850)를 통하여, 논리적 블록 어드레스(LBA) "0"부터 25개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 25개의 데이터 섹터들에 저장되어 있고 논리적 블록 어드레스(LBA) "25"부터 5개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 5개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 19는 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 13의 라이트 동작을 설명하기 위한 도면이다. 이하에서는 도 11, 도 12, 도 13, 도 17 내지 도 19를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명한다.
먼저, 도 18과 관련하여 설명한 라이트 동작을 수행한 후에 1910과 같이 논리적 블록 어드레스(LBA) "30"부터 38개의 연속적인 논리적 블록 어드레스들에 대응하는 제 2 데이터를 라이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 1910에서 "LBA"는 상기 제 2 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 상기 제 2 데이터의 논리적 블록 어드레스들(30 내지 67)은 두 개의 논리적 밴드들에 포함되므로, 패턴 감지부(1110)는 상기 두 개의 논리적 밴드들을 병합할 수 있다. 즉, 패턴 감지부(1110)는 도 18에서 병합된 논리적 밴드(LB0)에 다른 하나의 논리적 밴드를 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 제 2 데이터의 논리적 블록 어드레스들(30 내지 49)이 포함되는 논리적 밴드 및 상기 제 2 데이터의 논리적 블록 어드레스들(50 내지 67)이 포함되는 논리적 밴드를 하나의 논리적 밴드로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 제 2 데이터의 첫 번째 논리적 블록 어드레스 "30"이 포함되는 논리적 밴드부터 상기 제 1 데이터의 마지막 논리적 블록 어드레스 "67"가 포함되는 논리적 밴드까지 하나의 논리적 밴드로 병합할 수 있다. 그리고, 상기 제 2 데이터는 가상 밴드(VB01)의 데이터가 저장되어 있지 않은 영역 뿐 아니라 가상 밴드(VB02)에도 라이트될 수 있다. 패턴 감지부(1110)는 병합된 "0"번 논리적 밴드(LB0)에 매핑되는 가상 밴드들(VB00, VB01, VB02)의 정보(VB) 및 논리적 밴드(LB00)의 범위 정보(LBR)를 1830과 같이 설정하여 정보 저장부(1120)에 저장할 수 있다. 50개의 논리적 블록 어드레스들을 포함하는 논리적 밴드(LB0)와 25개의 논리적 블록 어드레스들을 포함하는 논리적 밴드를 병합하였으므로, 논리적 밴드(LB00)의 범위 정보(LBR)는 "75"가 될 수 있다.
패턴 감지부(1110)는 상기 제 1 데이터가 라이트된 이후의 데이터 섹터인 가상 밴드(VB01)의 데이터 섹터(SN05)에 대응하는 가상 어드레스 "5"부터 상기 제 2 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 상기 제 2 데이터 중 가상 밴드(VB01)에 라이트되고 남은 데이터는 가상 밴드(VB02)의 데이터 섹터(SN00)에 대응하는 가상 어드레스 "0"부터 라이트될 수 있다. 상기 라이트 동작을 수행한 경우, 패턴 감지부(1110)는 상기 라이트된 제 2 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보(1950)를 생성하여 정보 저장부(1120)에 저장할 수 있다. 1950에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 1950에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 상기 라이트된 제 1 데이터 및 제 2 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보(1950)를 통하여, 논리적 블록 어드레스(LBA) "0"부터 25개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 25개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "25"부터 25개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 25개의 데이터 섹터들에 저장되어 있으며, 논리적 블록 어드레스(LBA) "50"부터 18개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 18개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 18 및 도 19에서 상기 라이트된 데이터가 모두 무효한(invalid) 데이터가 된 경우, 패턴 감지부(1110)는 상기 논리적 밴드의 범위에 대한 정보를 정보 저장부(1120)에서 삭제할 수 있다. 그리고, 패턴 감지부(1110)는 상기 병합된 논리적 밴드를 최소 논리적 밴드의 상태로 분할하여 분할된 논리적 밴드들의 범위에 관한 정보를 변경하여 정보 저장부(1120)에 저장할 수 있다. 예를 들어, 도 18 및 도 19의 실시예에서, 상기 라이트된 데이터가 모두 무효한(invalid) 데이터가 된 경우, 패턴 감지부(1110)는 정보 저장부(1120)에 저장되어 있는 상기 논리적 밴드의 범위에 대한 정보를 "25"로 변경할 수 있다.
도 20은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 도면이다. 이하에서는 도 11, 도 12, 도 15, 도 17 내지 도 20을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 업데이트 동작을 설명한다.
먼저, 도 18 및 도 19와 관련하여 설명한 라이트 동작들을 수행한 후에 2010과 같이 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 제 3 데이터를 업데이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 2010에서 "LBA"는 상기 제 4 데이터를 업데이트할 업데이트용 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 상기 제 3 데이터는 가상 밴드(VB00)에 라이트되어 있는 데이터이므로, 패턴 감지부(1110)는 새로운 가상 밴드(VB03)의 데이터 섹터(SN00)에 대응하는 가상 어드레스 "0"부터 상기 제 3 데이터를 업데이트할 업데이트용 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 또한, 패턴 감지부(1110)는 도 19의 1930과 같이 정보 저장부(1120)에 저장되어 있는 정보에 가상 밴드(VB03)의 정보를 포함하여 2030과 같이 변경할 수 있다. 다만, 이 경우에는 라이트되어 있는 데이터를 업데이트하는 것이고 새로운 연속된 논리적 블록 어드레스들을 가지는 데이터가 수신된 것은 아니므로 논리적 밴드(LB00)의 범위에 관한 정보(LBR)는 변경하지 않을 수 있다.
상기 업데이트용 데이터를 라이트하였으므로, 패턴 감지부(1110)는 상기 업데이트된 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보를 반영하여 정보 저장부(1120)에 1950과 같이 저장되어 있던 매핑 정보를 2050과 같이 변경할 수 있다. 2050에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 2050에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 매핑 정보(2050)를 통하여 논리적 블록 어드레스(LBA) "0"부터 12개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 12개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "18"부터 7개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 7개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 또한, 매핑 정보(2050)를 통하여 논리적 블록 어드레스(LBA) "25"부터 25개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 25개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "50"부터 18개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 18개의 데이터 섹터들에 저장되어 있으며, 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "3"번 가상 밴드(VB03)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 6개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 21은 본 발명의 기술적 사상에 의한 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 다른 도면이다. 이하에서는 도 11, 도 12, 도 15, 도 17 내지 도 21을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 업데이트 동작을 설명한다.
먼저, 도 18 및 도 19와 관련하여 설명한 라이트 동작들을 수행하고 도 20과 관련하여 설명한 업데이트 동작을 수행한 후에 2110과 같이 논리적 블록 어드레스(LBA) "36"부터 4개의 연속적인 논리적 블록 어드레스들에 대응하는 제 4 데이터를 업데이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 2110에서 "LBA"는 상기 제 4 데이터를 업데이트할 업데이트용 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 상기 제 4 데이터는 가상 밴드(VB01)에 라이트되어 있는 데이터이므로, 패턴 감지부(1110)는 상기 제 3 데이터를 업데이트한 데이터에 연속하여 가상 밴드(VB03)의 데이터 섹터(SN06)에 대응하는 가상 어드레스 "6"부터 상기 제 4 데이터를 업데이트할 업데이트용 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 이 경우 추가된 가상 밴드가 없고 논리적 밴드(LB00)의 범위도 변경되지 않았으므로, 정보 저장부(1120)에 저장되어 있는 정보(2130)는 변경되지 않아 도 20의 정보(2030)와 동일할 수 있다.
상기 업데이트용 데이터를 라이트하였으므로, 패턴 감지부(1110)는 상기 업데이트된 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보를 반영하여 정보 저장부(1120)에 2050과 같이 저장되어 있던 매핑 정보를 2150과 같이 변경할 수 있다. 2150에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 2150에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 매핑 정보(2150)를 통하여 논리적 블록 어드레스(LBA) "0"부터 12개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 12개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "18"부터 7개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 7개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 또한, 매핑 정보(2050)를 통하여 논리적 블록 어드레스(LBA) "25"부터 11개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 11개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "40"부터 10개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "15"에 대응하는 데이터 섹터부터 10개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 또한, 매핑 정보(2050)를 통하여 논리적 블록 어드레스(LBA) "50"부터 18개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 18개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "3"번 가상 밴드(VB03)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 6개의 데이터 섹터들에 저장되어 있으며, 논리적 블록 어드레스(LBA) "36"부터 4개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "3"번 가상 밴드(VB03)의 가상 어드레스(VA) "6"에 대응하는 데이터 섹터부터 4개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 22는 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 도면이다. 이하에서는 도 11, 도 12, 도 15, 도 17 내지 도 22를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 업데이트 동작을 설명한다.
먼저, 도 18 및 도 19와 관련하여 설명한 라이트 동작들을 수행한 후에 2210과 같이 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 제 3 데이터를 업데이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 2210에서 "LBA"는 상기 제 3 데이터를 업데이트할 업데이트용 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 도 20의 실시예와 달리 패턴 감지부(1110)는 가상 밴드(VB02)의 데이터 섹터들 중 데이터가 저장되어 있지 않은 데이터 섹터(SN18)에 대응하는 가상 어드레스 "18"부터 상기 제 3 데이터를 업데이트할 업데이트용 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 이 경우 추가된 가상 밴드가 없고 논리적 밴드(LB00)의 범위도 변경되지 않았으므로, 정보 저장부(1120)에 저장되어 있는 정보(2230)는 변경되지 않아 도 19의 정보(1930)과 동일할 수 있다.
상기 업데이트용 데이터를 라이트하였으므로, 패턴 감지부(1110)는 상기 업데이트된 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보를 반영하여 정보 저장부(1120)에 1950과 같이 저장되어 있던 매핑 정보를 2250과 같이 변경할 수 있다. 2250에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 2250에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 매핑 정보(2250)를 통하여 논리적 블록 어드레스(LBA) "0"부터 12개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 12개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "18"부터 7개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 7개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 또한, 매핑 정보(2050)를 통하여 논리적 블록 어드레스(LBA) "25"부터 25개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 25개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "50"부터 18개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 18개의 데이터 섹터들에 저장되어 있으며, 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 6개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 23은 본 발명의 기술적 사상에 의한 다른 일 실시예에 따른 도 15의 업데이트 동작을 설명하기 위한 다른 도면이다. 이하에서는 도 11, 도 12, 도 15, 도 17 내지 도 23을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 업데이트 동작을 설명한다.
먼저, 도 18 및 도 19와 관련하여 설명한 라이트 동작들을 수행하고 도 22와 관련하여 설명한 업데이트 동작을 수행한 후에 2310과 같이 논리적 블록 어드레스(LBA) "36"부터 4개의 연속적인 논리적 블록 어드레스들에 대응하는 제 4 데이터를 업데이트하기 위한 라이트 커맨드가 수신되었다고 가정한다. 2310에서 "LBA"는 상기 제 4 데이터를 업데이트할 업데이트용 데이터의 첫 번째 논리적 블록 어드레스를 의미하고, "SC"는 상기 첫 번째 논리적 블록 어드레스부터 연속적인 논리적 블록 어드레스가 몇 개인지를 의미한다. 이 경우, 상기 제 4 데이터는 가상 밴드(VB01)에 라이트되어 있는 데이터이므로, 패턴 감지부(1110)는 상기 제 3 데이터를 업데이트한 데이터에 연속하여 가상 밴드(VB02)의 데이터 섹터(SN24)에 대응하는 가상 어드레스인 "24"부터 상기 제 4 데이터를 업데이트할 업데이트용 데이터를 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 이 경우 패턴 감지부(1110)는 상기 제 4 데이터를 업데이트할 업데이트용 데이터 중 가상 밴드(VB02)에 라이트하고 남은 데이터를 새로운 가상 밴드(VB03)의 데이터 섹터(SN00)에 대응하는 가상 어드레스인 "00"부터 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 또한, 패턴 감지부(1110)는 도 19의 1930과 같이 정보 저장부(1120)에 저장되어 있는 정보에 가상 밴드(VB03)의 정보를 포함하여 2330과 같이 변경할 수 있다. 다만, 이 경우에는 라이트되어 있는 데이터를 업데이트하는 것이고 새로운 연속된 논리적 블록 어드레스들을 가지는 데이터가 수신된 것은 아니므로 논리적 밴드(LB00)의 범위에 관한 정보(LBR)는 변경하지 않을 수 있다.
상기 업데이트용 데이터를 라이트하였으므로, 패턴 감지부(1110)는 상기 업데이트된 데이터의 논리적 블록 어드레스와 가상 어드레스 사이의 매핑 정보를 반영하여 정보 저장부(1120)에 2250과 같이 저장되어 있던 매핑 정보를 2350과 같이 변경할 수 있다. 2350에서 "LBA"는 연속적으로 라이트된 데이터 중 첫 번째 논리적 블록 어드레스를 의미하고, "VA"는 상기 첫 번째 논리적 블록 어드레스에 대응하는 가상 어드레스를 의미할 수 있다. 그리고, 2350에서 "SC"는 상기 첫 번째 논리적 블록 어드레스부터 몇 개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 상기 가상 어드레스(VA)에 대응하는 데이터 섹터부터 몇 개의 데이터 섹터에 라이트되었는가를 의미하고, "VB"는 상기 가상 어드레스(VA)를 포함하는 가상 밴드를 의미한다.
즉, 매핑 정보(2350)를 통하여 논리적 블록 어드레스(LBA) "0"부터 12개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 12개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "18"부터 7개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "0"번 가상 밴드(VB00)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 7개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 그리고, 매핑 정보(2350)를 통하여 논리적 블록 어드레스(LBA) "25"부터 11개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 11개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "40"부터 10개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "1"번 가상 밴드(VB01)의 가상 어드레스(VA) "15"에 대응하는 데이터 섹터부터 10개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 그리고, 매핑 정보(2350)를 통하여 논리적 블록 어드레스(LBA) "50"부터 18개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 18개의 데이터 섹터들에 저장되어 있고, 논리적 블록 어드레스(LBA) "12"부터 6개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "18"에 대응하는 데이터 섹터부터 6개의 데이터 섹터들에 저장되어 있음을 알 수 있다. 또한, 논리적 블록 어드레스(LBA) "36"부터 1개의 연속적인 논리적 블록 어드레스에 대응하는 데이터가 "2"번 가상 밴드(VB02)의 가상 어드레스(VA) "24"에 대응하는 데이터 섹터에 저장되어 있고, 논리적 블록 어드레스(LBA) "37"부터 3개의 연속적인 논리적 블록 어드레스들에 대응하는 데이터가 "3"번 가상 밴드(VB03)의 가상 어드레스(VA) "0"에 대응하는 데이터 섹터부터 3개의 데이터 섹터들에 저장되어 있음을 알 수 있다.
도 20 내지 도 23에서도 상기 라이트된 데이터 및 상기 업데이트된 데이터가 모두 무효한(invalid) 데이터가 된 경우, 패턴 감지부(1110)는 상기 논리적 밴드의 범위에 대한 정보를 정보 저장부(1120)에서 삭제할 수 있다. 그리고, 패턴 감지부(1110)는 상기 논리적 밴드의 범위가 하나의 가상 밴드의 범위가 동일하도록 상기 논리적 밴드의 범위에 관한 정보를 변경하여 정보 저장부(1120)에 저장할 수 있다. 예를 들어, 도 20 내지 도 23의 실시예에서, 상기 라이트된 데이터 및 상기 업데이트된 데이터가 모두 무효한(invalid) 데이터가 된 경우, 패턴 감지부(1110)는 정보 저장부(1120)에 저장되어 있는 상기 논리적 밴드의 범위에 대한 정보를 "25"로 변경할 수 있다.
도 24는 도 25 내지 도 28(b)를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작을 설명하기 위한 논리적 밴드들 및 가상 밴드들의 도면이다.
도 24와 같이 논리적 밴드들(LB00, LB01)이 존재하고, 2450과 같이 유효한 데이터가 저장되어 있지 않은 프리 밴드 상태의 가상 밴드들(VB00, VB01, VB02, VB03)이 존재한다고 가정한다.
도 25는 본 발명의 기술적 사상의 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 11 내지 도 13, 도 24 및 도 25를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작에 대하여 설명한다. 설명의 편의상 도 24의 논리적 밴드(LB00)는 논리적 블록 어드레스들(0 내지 99)을 포함하고, 논리적 밴드(LB01)은 논리적 블록 어드레스들(100 내지 199)를 포함한다고 가정한다. 또한, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 100개의 가상 어드레스들을 포함한다고 가정한다.
예를 들어, 논리적 블록 어드레스 "0"부터 120개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 패턴 감지부(1110)는 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드들(LB00, LB01)을 하나의 논리적 밴드(LB00')로 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 데이터의 논리적 블록 어드레스들(0 내지 99)이 포함되는 논리적 밴드(LB00) 및 상기 데이터의 논리적 블록 어드레스들(100 내지 119)이 포함되는 논리적 밴드(LB01)를 하나의 논리적 밴드(LB00')로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 데이터의 첫 번째 논리적 블록 어드레스 "0"이 포함되는 논리적 밴드(LB00)부터 상기 데이터의 마지막 논리적 블록 어드레스 "119"가 포함되는 논리적 밴드(LB01)까지 하나의 논리적 밴드(LB00')로 병합할 수 있다.
패턴 감지부(1110)는 상기 데이터를 가상 밴드들(VB00, VB01)의 대응하는 데이터 섹터들에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 그리고, 패턴 감지부(1110)는 병합된 논리적 밴드(LB00')에 매핑되는 가상 밴드들(VB00, VB01)의 정보 및 병합된 논리적 밴드(LB00')의 범위 정보를 생성하여 정보 저장부(1120)에 저장할 수 있다. 병합된 논리적 밴드(LB00')는 200개의 논리적 블록 어드레스들(0 내지 199)을 포함하므로, 병합된 논리적 밴드(LB00')의 범위 정보는 "200"이 될 수 있다.
도 26(a) 및 도 26(b)는 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 11 내지 도 13, 도 24, 도 26(a) 및 도 26(b)를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작에 대하여 설명한다. 설명의 편의상 도 24의 논리적 밴드(LB00)는 논리적 블록 어드레스들(0 내지 99)을 포함하고, 논리적 밴드(LB01)은 논리적 블록 어드레스들(100 내지 199)를 포함한다고 가정한다. 또한, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 100개의 가상 어드레스들을 포함한다고 가정한다.
도 26(a)에서 논리적 블록 어드레스 "0"부터 80개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드(LB00)는 하나이므로 패턴 감지부(1110)는 논리적 밴드를 병합하지 않는다. 패턴 감지부(1110)는 상기 데이터를 가상 밴드(VB00)의 대응하는 데이터 섹터들에 라이트하도록 저장 매체 인터페이스(1130)를 제어하고, 논리적 밴드(LB00)에 매핑되는 가상 밴드(VB00)의 정보 및 논리적 밴드(LB00)의 범위 정보를 정보 저장부(1120)에 저장할 수 있다. 논리적 밴드(LB00)는 100개의 논리적 블록 어드레스들(0 내지 99)을 포함하므로, 논리적 밴드(LB00)의 범위 정보는 "100"이 될 수 있다.
도 26(b)에서 논리적 블록 어드레스 "80"부터 40개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 패턴 감지부(1110)는 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드들(LB00, LB01)을 하나의 논리적 밴드(LB00')로 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 데이터의 논리적 블록 어드레스들(80 내지 99)이 포함되는 논리적 밴드(LB00) 및 상기 데이터의 논리적 블록 어드레스들(100 내지 119)이 포함되는 논리적 밴드(LB01)를 하나의 논리적 밴드(LB00')로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 데이터의 첫 번째 논리적 블록 어드레스 "80"이 포함되는 논리적 밴드(LB00)부터 상기 데이터의 마지막 논리적 블록 어드레스 "119"가 포함되는 논리적 밴드(LB01)까지 하나의 논리적 밴드(LB00')로 병합할 수 있다.
패턴 감지부(1110)는 상기 데이터를 가상 밴드들(VB00, VB01)의 대응하는 데이터 섹터들에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 그리고, 패턴 감지부(1110)는 병합된 논리적 밴드(LB00')에 매핑되는 가상 밴드들(VB00, VB01)의 정보 및 병합된 논리적 밴드(LB00')의 범위 정보를 생성하여 정보 저장부(1120)에 저장할 수 있다. 병합된 논리적 밴드(LB00')는 200개의 논리적 블록 어드레스들(0 내지 199)을 포함하므로, 병합된 논리적 밴드(LB00')의 범위 정보는 "200"이 될 수 있다.
도 27은 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 11 내지 도 13, 도 24 및 도 27을 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작에 대하여 설명한다. 설명의 편의상 도 24의 논리적 밴드(LB00)는 논리적 블록 어드레스들(0 내지 99)을 포함하고, 논리적 밴드(LB01)는 논리적 블록 어드레스들(100 내지 199)을 포함한다고 가정한다. 또한, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 150개의 가상 어드레스들을 포함한다고 가정한다. 즉, 도 27의 실시예는 논리적 밴드들(LB00, LB01) 각각의 크기보다 가상 밴드들(VB00, VB01, VB02, VB03) 각각의 크기가 큰 경우에 관한 실시예이다.
예를 들어, 논리적 블록 어드레스 "0"부터 130개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 패턴 감지부(1110)는 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드들(LB00, LB01)을 하나의 논리적 밴드(LB00')로 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 데이터의 논리적 블록 어드레스들(0 내지 99)이 포함되는 논리적 밴드(LB00) 및 상기 데이터의 논리적 블록 어드레스들(100 내지 129)이 포함되는 논리적 밴드(LB01)를 하나의 논리적 밴드(LB00')로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 데이터의 첫 번째 논리적 블록 어드레스 "0"이 포함되는 논리적 밴드(LB00)부터 상기 데이터의 마지막 논리적 블록 어드레스 "129"가 포함되는 논리적 밴드(LB01)까지 하나의 논리적 밴드(LB00')로 병합할 수 있다.
패턴 감지부(1110)는 상기 데이터를 가상 밴드(VB00)의 대응하는 데이터 섹터들에 라이트하도록 저장 매체 인터페이스(1130)를 제어할 수 있다. 그리고, 패턴 감지부(1110)는 병합된 논리적 밴드(LB00')에 매핑되는 가상 밴드(VB00)의 정보 및 병합된 논리적 밴드(LB00')의 범위 정보를 생성하여 정보 저장부(1120)에 저장할 수 있다. 병합된 논리적 밴드(LB00')는 200개의 논리적 블록 어드레스들(0 내지 199)을 포함하므로, 병합된 논리적 밴드(LB00')의 범위 정보는 "200"이 될 수 있다.
도 28(a) 및 도 28(b)는 본 발명의 기술적 사상의 다른 일 실시예에 의한 논리적 밴드와 가상 밴드의 매핑 관계를 도시한 도면이다.
도 11 내지 도 13, 도 24, 도 28(a) 및 도 28(b)를 참조하여 본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 동작에 대하여 설명한다. 설명의 편의상 도 24의 논리적 밴드(LB00)는 논리적 블록 어드레스들(0 내지 99)을 포함하고, 논리적 밴드(LB01)는 논리적 블록 어드레스들(100 내지 199)을 포함한다고 가정한다. 또한, 가상 밴드들(VB00, VB01, VB02, VB03) 각각은 50개의 가상 어드레스들을 포함한다고 가정한다. 즉, 도 27의 실시예는 논리적 밴드들(LB00, LB01) 각각의 크기보다 가상 밴드들(VB00, VB01, VB02, VB03) 각각의 크기가 작은 경우에 관한 실시예이다.
도 26(a)에서 논리적 블록 어드레스 "0"부터 70개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드(LB00)는 하나이므로 패턴 감지부(1110)는 논리적 밴드를 병합하지 않는다. 패턴 감지부(1110)는 상기 데이터를 가상 밴드들(VB00, VB01)의 대응하는 데이터 섹터들에 라이트하도록 저장 매체 인터페이스(1130)를 제어하고, 논리적 밴드(LB00)에 매핑되는 가상 밴드들(VB00, VB01)의 정보 및 논리적 밴드(LB00)의 범위 정보를 정보 저장부(1120)에 저장할 수 있다. 논리적 밴드(LB00)는 100개의 논리적 블록 어드레스들(0 내지 99)을 포함하므로, 논리적 밴드(LB00)의 범위 정보는 "100"이 될 수 있다.
도 26(b)에서 논리적 블록 어드레스 "70"부터 50개의 연속적인 논리적 블록 어드레스들을 가지는 데이터를 라이트하는 경우, 패턴 감지부(1110)는 상기 논리적 블록 어드레스들을 포함하는 논리적 밴드들(LB00, LB01)을 하나의 논리적 밴드(LB00')로 병합할 수 있다. 예를 들어, 패턴 감지부(1110)는 상기 데이터의 논리적 블록 어드레스들(70 내지 99)이 포함되는 논리적 밴드(LB00) 및 상기 데이터의 논리적 블록 어드레스들(100 내지 129)이 포함되는 논리적 밴드(LB01)를 하나의 논리적 밴드(LB00')로 병합할 수 있다. 다른 예로, 패턴 감지부(1110)는 상기 데이터의 첫 번째 논리적 블록 어드레스 "70"이 포함되는 논리적 밴드(LB00)부터 상기 데이터의 마지막 논리적 블록 어드레스 "129"가 포함되는 논리적 밴드(LB01)까지 하나의 논리적 밴드(LB00')로 병합할 수 있다.
도 29는 본 발명의 기술적 사상에 의한 일 실시 예에 따른 네트워크를 통한 저장 장치의 라이트 방법을 설명하기 위한 네트워크 시스템(2900)의 구성도이다.
도 24를 참조하면, 네트워크 시스템(2900)은 프로그램 제공 단말기(2910), 네트워크(2920), 호스트 PC(2930) 및 저장 장치(2940)를 구비할 수 있다.
네트워크(2920)는 인터넷 등과 같은 통신망으로 구현될 수 있다. 물론, 유선 통신망뿐만 아니라 무선 통신망으로 구현될 수도 있다.
프로그램 제공 단말기(2910)에는 도 12, 도 13 및 도 15의 흐름도에 따른 라이트 동작용 프로그램이 저장되어 있다. 프로그램 제공 단말기(2910)는 네트워크(2920)를 통하여 접속된 호스트 PC(2930)에서의 프로그램 전송 요청에 따라서 리드 동작 제어용 프로그램 또는 라이트 동작 제어용 프로그램을 호스트 PC(2930)로 전송하는 프로세스를 수행한다.
호스트 PC(2930)는 네트워크(2920)를 통하여 프로그램 제공 단말기(2910)에 접속한 후에 리드 동작 제어용 프로그램 또는 라이트 동작 제어용 프로그램의 전송을 요청하고, 요청한 프로그램을 프로그램 제공 단말기(2910)로부터 다운로드 받는 동작을 수행할 수 있는 하드웨어 및 소프트웨어를 구비하고 있다. 그리고, 호스트 PC(2930)는 프로그램 제공 단말기(2910)로부터 다운로드 받은 프로그램에 의하여 도 12, 도 13 및 도 15의 흐름도에 따른 라이트 방법을 저장 장치(2940)에서 실행시킬 수 있게 한다.
본 발명의 기술적 사상에 의한 일 실시예에 따른 라이트 방법에 관하여는 도 11 내지 도 28(b)와 관련하여 상세하게 설명하였으므로 이하 상세한 설명은 생략한다.
본 발명은 방법, 장치, 시스템 등으로서 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필연적으로 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되어 질 수 있다. 프로세서 판독 가능 매체의 예로는 전자 회로, 반도체 메모리 소자, ROM, 플레쉬 메모리, 이레이져블 ROM(EROM: Erasable ROM), 플로피 디스크, 광디스크, 하드 디스크 등이 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (17)

  1. 장치에 있어서,
    프로세서를 포함하고, 상기 프로세서는:
    복수의 논리적 블록 어드레스(logical block address; LBA)들에 라이트 될 데이터를 포함하는 하나의 라이트 커맨드(single write command)를 수신하고;
    상기 복수의 논리적 블록 어드레스들이 데이터 저장 매체의 제 1 논리적 밴드 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는지 결정하고 ― 상기 제 1 논리적 밴드는, 상기 제 2 논리적 밴드의 논리적 블록 어드레스들과 구별(unique)되는 상기 데이터 저장 매체의 연속적인(consecutive) 논리적 블록 어드레스들의 범위임 ―;
    상기 복수의 논리적 블록 어드레스들이 상기 제 1 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는 경우,
    상기 하나의 라이트 커맨드에 기초하여 상기 제 1 및 제 2 논리적 밴드들을 하나의 논리적 밴드로 병합(combine)하고;
    상기 하나의 논리적 밴드에 상기 데이터를 라이트하고; 그리고
    상기 복수의 논리적 블록 어드레스들에 라이트 된 데이터가 무효(invalid)가 되면 상기 하나의 논리적 밴드를 상기 제 1 및 제 2 논리적 밴드들로 분리하도록 구성되는,
    장치.
  2. 제 1 항에 있어서, 상기 프로세서는,
    상기 제 1 및 제 2 논리적 밴드들이 병합될 때 어드레스 맵(address map)을 업데이트하고; 그리고
    상기 하나의 논리적 밴드가 분리될 때 어드레스 맵을 업데이트하도록 더 구성되는,
    장치.
  3. 제 2 항에 있어서, 상기 프로세서는,
    상기 하나의 논리적 밴드에 적어도 하나의 가상 밴드를 할당 ― 하나의 가상 밴드는 가상 어드레스들의 범위를 포함하고, 하나의 가상 어드레스는 논리적 블록 어드레스를 상기 데이터 저장 매체의 물리적 저장 위치에 매핑(mapping)시키는 데에 이용됨 ― 하고; 그리고
    상기 적어도 하나의 가상 밴드의 가상 어드레스들에 상기 데이터를 라이트하도록 더 구성되는,
    장치.
  4. 제 3 항에 있어서, 상기 프로세서는,
    상기 하나의 논리적 밴드에 가상 밴드들을 할당하고 ― 상기 가상 밴드들은 상기 병합 이전에 상기 제 1 및 제 2 논리적 밴드들에 할당이 된 것임 ―; 그리고
    상기 하나의 논리적 밴드를 분리한 이후 상기 하나의 논리적 밴드로부터의 상기 가상 밴드들을 상기 제 1 및 제 2 논리적 밴드들로 할당하도록 더 구성되는,
    장치.
  5. 제 4 항에 있어서, 상기 프로세서는,
    제 1 트랙이 제 2 트랙에 의해 부분적으로 오버라이트되는 슁글 방식 (shingled manner)으로 디스크 데이터 저장 매체의 트랙들에 상기 데이터를 라이트하도록 더 구성되는,
    장치.
  6. 제 5 항에 있어서, 상기 프로세서는,
    부분적으로 오버라이트 된 트랙에 대응되는 가상 어드레스들이 수정될 수 없도록, 상기 적어도 하나의 가상 밴드의 가상 어드레스들에 연속적으로 상기 데이터를 라이트하도록 더 구성되는,
    장치.
  7. 방법으로서,
    복수의 논리적 블록 어드레스들에 라이트 될 데이터를 포함하는 하나의 라이트 커맨드를 수신하는 단계;
    상기 복수의 논리적 블록 어드레스들이 제 1 논리적 밴드 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는지 결정하는 단계 ― 상기 제 1 논리적 밴드는, 상기 제 2 논리적 밴드의 논리적 블록 어드레스들과 구별되는 데이터 저장 매체의 연속적인 논리적 블록 어드레스들의 범위임 ―;
    상기 복수의 논리적 블록 어드레스들이 상기 제 1 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는 경우,
    상기 제 1 및 제 2 논리적 밴드들을 하나의 논리적 밴드로 병합하는 단계;
    상기 하나의 논리적 밴드에 상기 데이터를 라이트하는 단계; 및
    상기 복수의 논리적 블록 어드레스들에 라이트 된 데이터가 무효가 되면 상기 하나의 논리적 밴드를 상기 제 1 및 제 2 논리적 밴드들로 분리하는 단계를 포함하는,
    방법.
  8. 제 7 항에 있어서,
    상기 제 1 및 제 2 논리적 밴드들이 병합될 때 어드레스 맵을 업데이트하는 단계; 및
    상기 하나의 논리적 밴드가 분리될 때 어드레스 맵을 업데이트하는 단계를 더 포함하는,
    방법.
  9. 제 8 항에 있어서,
    상기 하나의 논리적 밴드에 적어도 하나의 가상 밴드를 할당하는 단계 ― 하나의 가상 밴드는 가상 어드레스들의 범위를 포함하고, 하나의 가상 어드레스는 논리적 블록 어드레스를 상기 데이터 저장 매체의 물리적 저장 위치에 매핑시키는 데에 이용됨 ―; 및
    상기 적어도 하나의 가상 밴드의 가상 어드레스들에 상기 데이터를 라이트하는 단계를 더 포함하는,
    방법.
  10. 제 9 항에 있어서,
    상기 하나의 논리적 밴드에 가상 밴드들을 할당하는 단계 ― 상기 가상 밴드들은 상기 병합 이전에 상기 제 1 및 제 2 논리적 밴드들에 할당이 된 것임 ―; 및
    상기 하나의 논리적 밴드를 분리한 이후 상기 하나의 논리적 밴드로부터의 상기 가상 밴드들을 상기 제 1 및 제 2 논리적 밴드들로 할당하는 단계를 더 포함하는,
    방법.
  11. 제 10 항에 있어서,
    제 1 트랙이 제 2 트랙에 의해 부분적으로 오버라이트되는 슁글 방식으로 디스크 데이터 저장 매체의 트랙들에 상기 데이터를 라이트하는 단계를 더 포함하는,
    방법.
  12. 제 11 항에 있어서,
    부분적으로 오버라이트 된 트랙에 대응되는 가상 어드레스들이 수정될 수 없도록, 상기 적어도 하나의 가상 밴드의 가상 어드레스들에 연속적으로 상기 데이터를 라이트하는 단계를 더 포함하는,
    방법.
  13. 프로세서로 하여금 방법을 실행시키게 하는 명령들을 저장하는 메모리 장치로서, 상기 방법은:
    복수의 논리적 블록 어드레스들에 라이트 될 데이터를 포함하는 하나의 라이트 커맨드를 수신하는 단계;
    상기 복수의 논리적 블록 어드레스들이 제 1 논리적 밴드 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는지 결정하는 단계 ― 상기 제 1 논리적 밴드는, 상기 제 2 논리적 밴드의 논리적 블록 어드레스들과 구별되는 데이터 저장 매체의 연속적인 논리적 블록 어드레스들의 범위임 ―;
    상기 복수의 논리적 블록 어드레스들이 상기 제 1 및 제 2 논리적 밴드로부터의 논리적 블록 어드레스들을 포함하는 경우,
    상기 제 1 및 제 2 논리적 밴드들을 하나의 논리적 밴드로 병합하는 단계;
    상기 하나의 논리적 밴드에 상기 데이터를 라이트하는 단계; 및
    상기 복수의 논리적 블록 어드레스들에 라이트 된 데이터가 무효가 되면 상기 하나의 논리적 밴드를 상기 제 1 및 제 2 논리적 밴드들로 분리하는 단계를 포함하는,
    메모리 장치.
  14. 제 13 항에 있어서, 상기 방법은,
    상기 제 1 및 제 2 논리적 밴드들이 병합될 때 어드레스 맵을 업데이트하는 단계; 및
    상기 하나의 논리적 밴드가 분리될 때 어드레스 맵을 업데이트하는 단계를 더 포함하는,
    메모리 장치.
  15. 제 14 항에 있어서, 상기 방법은,
    상기 하나의 논리적 밴드에 적어도 하나의 가상 밴드를 할당하는 단계 ― 하나의 가상 밴드는 가상 어드레스들의 범위를 포함하고, 하나의 가상 어드레스는 논리적 블록 어드레스를 상기 데이터 저장 매체의 물리적 저장 위치에 매핑시키는 데에 이용됨 ―; 및
    상기 적어도 하나의 가상 밴드의 가상 어드레스들에 상기 데이터를 라이트하는 단계를 더 포함하는,
    메모리 장치.
  16. 제 15 항에 있어서, 상기 방법은,
    상기 하나의 논리적 밴드에 가상 밴드들을 할당하는 단계 ― 상기 가상 밴드들은 상기 병합 이전에 상기 제 1 및 제 2 논리적 밴드들에 할당이 된 것임 ―; 및
    상기 하나의 논리적 밴드를 분리한 이후 상기 하나의 논리적 밴드로부터의 상기 가상 밴드들을 상기 제 1 및 제 2 논리적 밴드들로 할당하는 단계를 더 포함하는,
    메모리 장치.
  17. 제 16 항에 있어서, 상기 방법은,
    제 1 트랙이 제 2 트랙에 의해 부분적으로 오버라이트되는 슁글 방식으로 디스크 데이터 저장 매체의 트랙들에 상기 데이터를 라이트하는 단계; 및
    부분적으로 오버라이트 된 트랙에 대응되는 가상 어드레스들이 수정될 수 없도록, 상기 적어도 하나의 가상 밴드의 가상 어드레스들에 연속적으로 상기 데이터를 라이트하는 단계를 더 포함하는,
    메모리 장치.
KR1020110039707A 2011-04-27 2011-04-27 라이트 방법 및 그 방법을 이용하는 저장 장치 KR101854206B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110039707A KR101854206B1 (ko) 2011-04-27 2011-04-27 라이트 방법 및 그 방법을 이용하는 저장 장치
US13/458,994 US8837067B2 (en) 2011-04-27 2012-04-27 Method and apparatus for contiguous data address management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110039707A KR101854206B1 (ko) 2011-04-27 2011-04-27 라이트 방법 및 그 방법을 이용하는 저장 장치

Publications (2)

Publication Number Publication Date
KR20120121734A KR20120121734A (ko) 2012-11-06
KR101854206B1 true KR101854206B1 (ko) 2018-05-04

Family

ID=47508139

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110039707A KR101854206B1 (ko) 2011-04-27 2011-04-27 라이트 방법 및 그 방법을 이용하는 저장 장치

Country Status (2)

Country Link
US (1) US8837067B2 (ko)
KR (1) KR101854206B1 (ko)

Families Citing this family (13)

* 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
US8896961B1 (en) 2012-10-11 2014-11-25 Seagate Technology Llc Reader positioning in shingled magnetic recording
US9785438B1 (en) 2012-10-11 2017-10-10 Seagate Technology Llc Media cache cleaning based on workload
US8922930B1 (en) 2012-10-11 2014-12-30 Seagate Technology Llc Limit disc nodes by band usage
US9286936B1 (en) 2013-02-21 2016-03-15 Seagate Technology Llc Zone based band mapping
US20140281194A1 (en) * 2013-03-15 2014-09-18 Seagate Technology Llc Dynamically-sizeable granule storage
US9612956B2 (en) 2013-03-15 2017-04-04 Seagate Technology Llc Multi-tiered caching for data storage management in a device
US9588886B2 (en) 2013-03-15 2017-03-07 Seagate Technology Llc Staging sorted data in intermediate storage
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489294B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9129627B1 (en) * 2014-05-15 2015-09-08 Seagate Technology Llc Sector-based write operation
US9678864B2 (en) 2014-12-03 2017-06-13 Seagate Technology Llc Data reallocation upon detection of errors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034179A1 (en) * 2006-08-03 2008-02-07 Mewhinney Greg R Guard bands in very large virtual memory pages
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007048335A (ja) 2005-08-05 2007-02-22 Hitachi Global Storage Technologies Netherlands Bv ディスク装置
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 株式会社日立製作所 シングル記録方式に用いる磁気ヘッドおよび磁気ディスクドライブ
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034179A1 (en) * 2006-08-03 2008-02-07 Mewhinney Greg R Guard bands in very large virtual memory pages
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method

Also Published As

Publication number Publication date
US20130038960A1 (en) 2013-02-14
US8837067B2 (en) 2014-09-16
KR20120121734A (ko) 2012-11-06

Similar Documents

Publication Publication Date Title
KR101854206B1 (ko) 라이트 방법 및 그 방법을 이용하는 저장 장치
KR101854200B1 (ko) 데이터 라이트 방법 및 이를 적용한 저장 장치
KR101890767B1 (ko) 주소 사상 정보 관리 방법 이를 적용한 저장 장치
KR101854214B1 (ko) 라이트 방법 및 그 방법을 이용하는 저장 장치
KR101874324B1 (ko) 리드 또는 라이트 동작 제어 방법, 그 방법을 이용하는 저장 장치 및 컴퓨터 시스템
KR101833416B1 (ko) 데이터 리드 방법 및 이를 적용한 저장 장치
KR101810932B1 (ko) 주소 사상 정보 관리 방법, 디스크 드라이브에서의 액세스 방법, 저장 장치, 컴퓨터 시스템, 네트워크를 통한 주소 사상 정보 관리 방법 및 컴퓨터로 읽을 수 있는 저장 매체
US9189395B2 (en) Method and apparatus for adjustable virtual addressing for data storage
US9009433B2 (en) Method and apparatus for relocating data
KR101517761B1 (ko) 데이터 저장 위치 관리 방법 및 이를 데이터 저장 시스템
US8607007B2 (en) Selection of data storage medium based on write characteristic
US8576511B1 (en) Disk drive executing log structured writes to physical zones based on power mode
US20130031317A1 (en) Method and apparatus for redirecting data writes
US20100037017A1 (en) Hybrid storage apparatus and logical block address assigning method
US20120072755A1 (en) Method of controlling operation mode of storage device, and storage device implementing the storage
KR102067056B1 (ko) 저장 매체 액세스 방법, 데이터 라이트 방법, 저장 장치의 파라미터 조정 방법과 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장매체
US9058280B1 (en) Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
KR101663545B1 (ko) 코드의 동적 재배치 방법 및 이를 이용한 디스크 드라이브
JP2008117491A (ja) 記録装置、記録方法、およびプログラム
KR20130042374A (ko) 라이트 리트라이 동작 제어 방법 및 이를 적용한 저장 장치

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