KR20010077984A - 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러 - Google Patents

데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러 Download PDF

Info

Publication number
KR20010077984A
KR20010077984A KR1020010002134A KR20010002134A KR20010077984A KR 20010077984 A KR20010077984 A KR 20010077984A KR 1020010002134 A KR1020010002134 A KR 1020010002134A KR 20010002134 A KR20010002134 A KR 20010002134A KR 20010077984 A KR20010077984 A KR 20010077984A
Authority
KR
South Korea
Prior art keywords
command
write
recording
write command
read
Prior art date
Application number
KR1020010002134A
Other languages
English (en)
Other versions
KR100368964B1 (ko
Inventor
우치이케히로시
구로다다카시
가나마루아츠시
니시미야히로미
사이토다카히로
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR20010077984A publication Critical patent/KR20010077984A/ko
Application granted granted Critical
Publication of KR100368964B1 publication Critical patent/KR100368964B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/02Recording, reproducing, or erasing methods; Read, write or erase circuits therefor
    • G11B5/09Digital recording
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 실행 대기의 기록 명령이 있는 경우의 판독의 효율화를 도모하여, 하드 디스크 드라이브 장치의 성능을 향상시키는 것을 그 해결 과제로 한다.
실행 대기의 기록 명령(W1, W2)이 있는 상태에서 판독 명령(R)이 발생된 경우에, 기록 명령(W1, W2)에 우선하여 판독 명령(R)을 실행한다.

Description

데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브 장치 및 디스크 드라이브 장치의 컨트롤러{DATA WRITING METHOD, DATA READING METHOD, DISK DRIVE APPARATUS AND DISK DRIVE APPARATUS CONTROLLER}
본 발명은 디스크 드라이브 장치에 있어서의 데이터의 판독 방법 및 기록 방법에 관한 것으로, 특히 데이터의 판독 및 기록을 신속히 행할 수 있는 방법에 관한 것이다.
컴퓨터의 외부 기억 장치로서의 하드 디스크 드라이브 장치에 대하여 호스트 컴퓨터로부터 복수의 기록 요구가 이루어진 경우에, 실제로 하드 디스크 드라이브 장치에 데이터의 기록이 실행되어 종료할 때까지는 상당한 시간이 필요하다. 따라서, 하드 디스크 드라이브 장치는 기록 요구에 대한 명령을 수신한 것을 호스트 컴퓨터에 통지하는 한편, 실행 대기의 기록 명령을 유지하게 된다.
실행 대기의 기록 명령이 복수 개 존재하는 경우에는, RPO(Rotational Position Optimization)에 의해서 순차 실행하는 명령을 선택하는 것이 행해지고 있다. RPO는 실행 대기의 명령을 실행했을 때에, 자기 디스크 상의 목표가 되는 트랙에서의 탐색을 시작하고 나서 상기 트랙에 도달할 때까지의 탐색 시간과, 도달후에 목표 섹터에 액세스를 시작할 때까지의 디스크 회전 대기 시간을 예상한다. 그리고, 이 탐색 시간 및 회전 대기 시간의 합계가 가장 짧게(最短) 되는 실행 대기 명령을, 후속해서 실행하는 명령으로서 선택하는 방법이다.
RPO에 의해 명령의 실행 시간을 단축할 수 있기 때문에, 하드 디스크 드라이브 장치의 성능이 향상된다. 그러나, RPO에 의해 명령의 실행 시간을 한층 단축하고 하드 디스크 드라이브 장치의 성능을 향상시키는 것이 바람직한 것은 물론이다.
그런데, 하드 디스크 드라이브 장치는 실행 대기의 기록 명령이 존재하는 상태에서 호스트 컴퓨터로부터 자기 디스크에 기억된 데이터의 판독 요구가 이루어지는 경우도 있다. 이러한 경우에 종래의 하드 디스크 드라이브 장치는 실행 대기의 기록 명령이 모두 실행, 즉 자기 디스크로의 기록이 종료된 후에 판독 명령을 실행하여 데이터의 판독이 행해지고 있었다. 따라서, 실행 대기의 기록 명령이 존재하는 경우에는 판독이 행해질 때까지 상당한 시간을 필요로 하고 있었다. 이 점에서도, 하드 디스크 드라이브 장치의 성능을 향상시키는 것이 요망되고 있었다.
그래서 본 발명은 실행 대기의 기록 명령이 있는 경우의 기록 또는 판독의 효율화를 도모하여, 하드 디스크 드라이브 장치의 성능을 향상시키는 것을 해결 과제로 하고 있다.
도 1은 본 실시예에 따른 HDD(Hard Disk Drive) 장치의 개략 구성을 나타낸 도면이다.
도 2는 본 실시예에 따른 HDD의 HDC(Hard Disk Controller)의 주요 구성을 나타낸 도면이다.
도 3은 버퍼 데이터와 기록 명령과의 관계를 설명하기 위한 도면이다.
도 4는 버퍼 데이터와 기록 명령과의 관계를 판단하기 위한 흐름도이다.
도 5는 버퍼 데이터와 기록 명령과의 관계를 판단하기 위한 흐름도이다.
도 6은 버퍼 데이터와 기록 명령과의 관계를 판단하기 위한 흐름도이다.
도 7은 버퍼 데이터와 기록 명령과의 관계가 NO HIT-A인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 8은 버퍼 데이터와 기록 명령과의 관계가 TAIL_SEQ인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 9는 버퍼 데이터와 기록 명령과의 관계가 OV_TAIL인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 10은 버퍼 데이터와 기록 명령과의 관계가 OV_ALL인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 11은 버퍼 데이터와 기록 명령과의 관계가 OV_ALL인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 12는 버퍼 데이터와 기록 명령과의 관계가 OV_COVER인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 13은 버퍼 데이터와 기록 명령과의 관계가 OV_HEAD인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 14는 버퍼 데이터와 기록 명령과의 관계가 HEAD_SEQ인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 15는 버퍼 데이터와 기록 명령과의 관계가 NO HIT-B인 경우의 그 후의 처리를 나타내는 흐름도이다.
도 16은 RAM(43)에 저장되는 테이블을 나타낸 도면이다.
도 17은 기록 세그먼트의 구성을 나타낸 도면이다.
도 18은 본 실시예에 의한 데이터의 기록을 설명하기 위한 도면이다.
도 19는 본 실시예에 의한 오버레이 히트(OVERLAY HIT)시의 데이터의 기록을 설명하기 위한 도면이다.
도 20은 기록 명령과 판독 명령과의 관계를 나타낸 도면이다.
도 21은 기록 명령이 복수 개의 실행 대기일 때에 판독 명령이 발생했을 때의 상태를 설명하는 도면이다.
도 22는 기록 명령이 복수 개의 실행 대기일 때에 판독 명령이 발생했을 때의 상태를 설명하는 도면이다.
도 23은 베스트 테일 스킵 길이(BEST TAIL SKIP LENGTH)를 설명하기 위한 도면이다.
도 24는 도 7∼도 15에 의해 판단된 각 히트 상태(HIT STATUS)와의 관계를 버퍼 데이터와의 위치 관계를 포함해서 나타낸 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
10 : HDD(Hard Disk Drive) 장치.
21 : 자기 디스크.
22 : 스핀들 모터.
23 : 자기 헤드.
24 : 헤드 아암.
25 : 액츄에이터.
30 : 제어 회로.
31 : HDC(Hard Disk Controller).
32 : ROM.
33 : RAM.
34 : 호스트 I/F(인터페이스).
35 : 버스.
40 : 호스트.
41 : MPU(마이크로 프로세싱 유닛).
42 : MM(메모리 매니저).
43 : RAM.
44 : SG(세그먼트 핸들러).
본 발명은 호스트 장치로부터 기록 요구가 이루어진 기록 데이터를 기록 매체에 기록하는 데이터의 기록 방법에 있어서, 기록 실행 대기 상태에 있는 선행 기록 명령의 논리적 블록 어드레스와 새롭게 기록 요구가 이루어진 후속 기록 명령의논리적 블록 어드레스를 비교하여, 상기 선행 기록 명령과 상기 후속 기록 명령과의 논리적 블록 어드레스 상의 위치 관계를 판단하는 위치 관계 판단 단계와, 상기 위치 관계 판단 단계에 의해 상기 선행 기록 명령과 상기 후속 기록 명령이 논리적 블록 어드레스 상에서 이격되어 있다고 판단된 경우에, 그 이격 거리가 규정된 이격 거리 이하인지의 여부를 판단하는 이격 거리 판단 단계와, 상기 이격 거리 판단 단계에 의해 상기 선행 기록 명령과 상기 후속 기록 명령과의 논리적 블록 어드레스 상의 이격 거리가 규정된 이격 거리 이하라고 판단된 경우에, 상기 선행 기록 명령에 대응하는 기록 데이터와 상기 후속 기록 명령에 대응하는 기록 데이터를 연속해서 상기 기록 매체에 기록하는 데이터 기록 단계를 포함하는 것을 특징으로 하는 데이터 기록 방법에 의해 상기 과제를 해결한다.
상기 본 발명의 데이터 기록 방법에 있어서, 상기 이격 거리 판단 단계에 있어서 이격 거리가 규정된 이격 거리 이하라고 판단된 상기 선행 기록 명령이 복수 개 존재하는 경우에, 상기 데이터 기록 단계는 상기 선행 기록 명령에 대응하는 기록 데이터를 기록한 직후에, 상기 이격 거리가 가장 작은 상기 후속의 기록 명령에 대응하는 기록 데이터를 기록하는 것이 바람직하다.
또한, 본 발명에서는 데이터 기록 요구가 실행 대기인 상태에서 호스트 장치로부터 데이터 판독 요구가 이루어졌을 때의 데이터 판독 방법에 있어서, 기록 실행 대기 상태에 있는 기록 명령의 논리적 블록 어드레스와 새롭게 판독 요구가 이루어진 판독 명령의 논리적 블록 어드레스를 비교하여, 상기 기록 명령과 상기 판독 명령에 논리적 블록 어드레스 상의 중복이 존재하지 않는지의 여부를 판단하는위치 관계 판단 단계와, 상기 위치 관계 판단 단계에 의해 상기 기록 명령과 상기 판독 명령에 논리적 블록 어드레스 상의 중복이 존재하지 않는다고 판단된 경우에, 상기 기록 명령의 전부가 실행되기 전에 상기 판독 명령을 실행하는 데이터 판독 단계를 포함하는 것을 특징으로 하는 데이터 판독 방법에 의해 상기 과제를 해결한다.
상기 본 발명의 데이터 판독 방법에 있어서, 상기 판독 명령의 실행은 상기 판독 명령의 논리적 블록 어드레스의 선단과 논리적 블록 어드레스의 후단과의 거리가 최소가 되는 상기 기록 명령의 실행후에 연속해서 행하는 것으로 할 수 있다.
또한, 본 발명은 랜덤 액세스 가능한 디스크형 기록 매체와, 외부 장치로부터 송신된 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과, 상기 명령 유지 수단에 유지된 기록 명령과 상기 외부 장치로부터 새롭게 송신된 기록 명령과의 사이에서 논리적 블록 어드레스의 중복 부분이 있는지의 여부를 판단하는 명령 관계 판단 수단과, 상기 명령 관계 판단 수단에 의해서 상기 중복 부분이 없다고 판단된 경우에, 상기 명령 유지 수단에 유지된 기록 명령과 상기 새롭게 송신된 기록 명령이 논리적 블록 어드레스 상에서 규정된 거리보다도 벗어나 있는지의 여부를 판단하는 명령 거리 판단 수단과, 상기 명령 거리 판단 수단에 의해 상기 명령 유지 수단에 유지된 기록 명령과 상기 새롭게 송신된 기록 명령이 상기 규정된 거리보다도 벗어나 있지 않다고 판단된 경우에, 상기 2 개의 명령에 대응하는 기록 데이터를 연속해서 상기 기록 매체에 기록하도록 지시하는 기록 지시 수단을 구비하는 것을 특징으로 하는 디스크 드라이브 장치이다.
본 발명의 디스크 드라이브 장치에 있어서, 상기 명령 거리 판단 수단은 상기 새롭게 송신된 기록 명령에 대하여 상기 거리가 규정치 이하가 되는 상기 명령 유지 수단에 유지된 기록 명령이 복수 개 존재하는 경우에, 상기 거리가 최소가 되는 상기 명령 유지 수단에 유지된 기록 명령을 특정할 수 있다.
또한, 본 발명은 랜덤 액세스 가능한 디스크형 기록 매체와, 외부 장치로부터 송신된 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과, 상기 외부 장치로부터 송신된 판독 요구에 대한 판독 명령과 상기 명령 유지 수단에 유지되어 있는 기록 명령과의 논리적 블록 어드레스에 있어서의 관계를 판단하는 명령 비교 수단과, 상기 명령 비교 수단의 비교 결과에 기초하여 판독을 지시하는 판독 지시 수단을 구비하는 것을 특징으로 하는 디스크 드라이브 장치이다.
이상의 디스크 드라이브 장치에 있어서, 상기 명령 비교 수단은 상기 기록 명령에 대하여 논리적 블록 어드레스 상에서 중복되는 상기 판독 명령이 존재하는지의 여부를 판단할 수 있다.
또한, 이상의 디스크 드라이브 장치에 있어서, 상기 판독 지시 수단은 상기 명령 비교 수단이 상기 기록 명령에 대하여 논리적 블록 어드레스 상에서 중복되는 상기 판독 명령이 존재한다고 판단한 경우에, 상기 명령 유지 수단에 유지되어 있는 상기 기록 명령 중 상기 중복되는 기록 명령을 실행한 후에, 상기 명령 유지 수단에 상기 판독 명령을 실행하도록 지시할 수 있다.
또한, 상기 판독 지시 수단은 상기 기록 명령과 상기 판독 명령이 논리적 블록 어드레스 상에서 중복되지 않는다고 상기 명령 비교 수단이 판단하면, 상기 명령 유지 수단에 실행 대기의 상기 기록 명령이 유지된 상태에서 상기 판독 명령을 실행하도록 지시할 수 있다.
또한, 본 발명에서는 랜덤 액세스 가능한 디스크형 기록 매체로의 데이터의 기록을 제어하는 디스크 드라이브 장치의 컨트롤러에 있어서, 외부 장치로부터 선행하여 송신된 선행 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과, 상기 외부 장치로부터 새롭게 송신된 후속 기록 명령과 논리적 블록 어드레스 상에서 규정치 이하의 범위에서 벗어나 있는 상기 선행 기록 명령이 있는지의 여부를 판단하는 명령 비교 수단과, 상기 명령 비교 수단에 의해 상기 규정치 이하의 범위에서 벗어나 있는 상기 선행 기록 명령이 있다고 판단한 경우에, 상기 후속 기록 명령을 상기 선행 기록 명령보다 우선하여 기록 실행을 행하도록 지시하는 기록 지시 수단을 구비한 것을 특징으로 하는 디스크 드라이브 장치의 컨트롤러가 제공된다.
또한, 본 발명에서는 랜덤 액세스 가능한 디스크형 기록 매체로부터의 데이터의 판독을 제어하는 디스크 드라이브 장치의 컨트롤러에 있어서, 외부 장치로부터 선행하여 송신된 복수의 선행 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과, 상기 외부 장치로부터 새롭게 송신된 판독 명령과 논리적 블록 어드레스 상에서 중복되는 상기 선행 기록 명령이 있는지의 여부를 판단하는 명령 비교 수단과, 상기 명령 비교 수단에 의해 상기 판독 명령과 논리적 블록 어드레스 상에서 중복되는 상기 선행 기록 명령이 없다고 판단된 경우에, 상기 기록 명령의 실행에 우선하여 상기 판독 명령을 실행하는 것을 지시하는 판독 지시 수단을 구비한 것을 특징으로 하는 디스크 드라이브 장치의 컨트롤러가 제공된다.
이하, 본 발명을 실시예에 기초하여 설명한다.
도 1은 본 발명을 실시하는 컴퓨터의 외부 기억 장치로서의 HDD(Hard Disk Drive) 장치(10)의 개략 구성을 나타낸 도면이다.
이 도면에 도시된 바와 같이, HDD 장치(10)는 기록 매체로서 데이터를 기억하는 자기 디스크(21), 자기 디스크(21)를 회전 구동하는 스핀들 모터(22)를 구비하고 있다. 자기 헤드(23)는 자기 디스크(21)로의 데이터의 기록·재생(기록·판독)을 행한다. 헤드 아암(24)은 그 선단에 자기 헤드(23)를 구비하고, 자기 디스크(21)의 기록면의 상공을 이동하고 있다. 또한, 액츄에이터(25)는 헤드 아암(24)을 유지함과 동시에 헤드 아암(24)을 회전 구동시키고 있다. 이것에 의해서, 자기 헤드(23)는 자기 디스크(21)의 대략 반경 방향을 이동하여, 자기 디스크(21)의 기록면에 대하여 랜덤하게 액세스할 수 있게 구성되어 있다.
자기 디스크(21), 스핀들 모터(22), 자기 헤드(23) 및 액츄에이터(25)로 구성되는 구동 기구는 제어 회로(30)에 의해서 제어되고 있다. 이 제어 회로(30)는 HDC(Hard Disk Controller)(31), ROM(32), RAM(33) 및 호스트 I/F(인터페이스)(34)를 구비하고 있고, 이들은 버스(35)를 통해 서로 접속되어 있다.
HDC(31)는 HDD 장치(10)의 내부 컨트롤러에 있어서, ROM(32)에 기억된 제어 프로그램과 제어 데이터에 따라서 HDD 장치(10)의 전체를 제어하고 있다. 이 HDC(31)는 서보 제어나 데이터의 기록 및 판독시의 제어를 위한 연산 처리를 실행하고 있다. 이것에 의해서, 스핀들 모터(22)나 액츄에이터(25)를 구동하고, 자기 헤드(23)의 기록용 헤드 및 재생용 헤드를 이용하여 기록 및 판독을 실행하고 있다. 또한, HDC(31)는 기록 매체로서의 자기 디스크(21)에 기록되는 데이터의 일부를 RAM(33)에 유지하고, 또한, 자기 디스크(21)에 저장되어 있는 데이터의 일부를 미리 판독하여 RAM(33)에 유지하기 위한 제어를 행하고 있다.
ROM(32)에는 HDC(31)에 의해 실행되는 제어 프로그램 및 이 제어 프로그램에 의해 사용되는 제어 데이터가 저장되어 있다.
RAM(33)은 자기 디스크(21)에 기록되는 기록 데이터를 일시적으로 기억함과 동시에, 자기 디스크(21)로부터 판독된 판독 데이터를 일시적으로 기억하기 위한 캐시 메모리로서의 기능을 갖는다.
또한, 호스트 I/F(34)는 호스트(40)와의 사이에서 데이터나 명령을 주고받는 인터페이스 회로이다.
도 2는 HDC(31)의 주요 기능 블록을 나타내고 있다.
HDC(31)는 MPU(마이크로 프로세싱 유닛)(41), MM(메모리 매니저)(42), RAM(43) 및 SG(44)(세그먼트 핸들러)를 구비하고 있다.
RAM(43)에는 도 16에 나타내는 구성의 테이블 및 도 17에 나타내는 구성의 기록 세그먼트가 테이블 형식으로 저장되어 있다. 또, 도 16의 테이블은 후술하는 NO OF HIT(OVERLAY HIT(오버레이 히트)의 수), 헤드 베스트 스킵 길이(HEAD BEST SKIP LENGTH), 헤드 베스트 스킵 세그먼트 ID(HEAD BEST SKIP SEGMENT ID), 테일 베스트 스킵 길이(TAIL BEST SKIP LENGTH), 테일 베스트 스킵 세그먼트 ID(TAIL BEST SKIP SEGMENT ID)를 기억한다. 또한, 도 17의 기록 세그먼트는 4 워드로 구성되어 있고, 그 중의 1 워드 및 2 워드째를 LBA가 사용하고, 3 워드째를 블록길이(LENGTH)가, 또 4 워드째를 히트 상태(HIT STATUS)가 사용하는 구성으로 되어있다.
SG(44)는 MM(42)을 통하여 RAM(43)에 액세스하여 RAM(43) 내의 테이블의 서치를 실행한다. 또한, SG(44)는 후술하는 스킵 길이(SKIP LENGTH)를 일시적으로 저장하는 레지스터를 구비하고 있다.
본 실시예에서는 호스트(40)로부터 이미 송신된 선행 기록 명령과 새롭게 호스트(40)로부터 송신된 후속 기록 명령과의 논리적 블록 어드레스(이하, LBA) 상의 위치 관계를 판단한다. 또, LBA에 관한 정보, 즉 상기 기록 명령에 관한 선단 및 후단의 LBA 및 블록 길이는 기록 명령, 기록 데이터와 함께 호스트(40)로부터 송신된다. 이 기록 데이터는 일단 RAM(33)에 기억되고, 또, LBA에 관한 정보는 도 17에 나타낸 기록 세그먼트에 기억된다.
본 실시예에서는 선행 기록 명령의 것을 버퍼 데이터라 칭하고, 후속 기록 명령의 것을 단순히 기록 명령이라 칭하기로 한다. 또한, 본 실시예에서는 LBA 상의 위치 관계를 단순히 관계 혹은 위치 관계라고 칭하는 경우가 있다.
본 실시예에서는 제1 단계로서, 버퍼 데이터와 기록 명령과의 관계가 도 3에 나타내는 NO HIT-A, TAIL_SEQ, OV_TAIL, OV_ALL, OV_COVER, OV_HEAD, HEAD_SEQ 및 NO HIT-B의 8개의 분류 중 어느 것에 해당하는지를 LBA에 기초하여 판단한다. 이 판단은 도 4∼도 6에 나타내는 흐름에 기초해서 행해진다.
다음에, 제2 단계로서, 역시 LBA를 이용하여 도 7∼도 14에 나타내는 흐름에 기초하여 버퍼 데이터와 기록 명령과의 관계를 상세히 판단한다. 그리고, 이 판단결과에 기초하여, RPO를 실행하는 것이 본 실시예에 의한 HDD 장치이다.
우선, 도 3에 기초하여 제1 단계에서 판단되는 8개의 분류를 설명한다.
도 3에 있어서, 버퍼 데이터의 기록처의 후단의 LBA를 LLBA라 표기한다. 또, 버퍼 데이터의 블록 길이를 LENGTH라 표기하고 있다. 또한, 기록 명령의 기록처의 선단의 LBA를 SLBA, 후단의 LBA를 ELBA라 표기한다. 또한, 기록 명령의 LBA의 블록 길이를 SLEN이라고 한다.
도 3 중의 #1∼#8이라 표기된 것이 기록 명령을 나타내고 있다. 한편, #1∼#8은 기록 명령을 편의상 구분하기 위해서 기재한 것으로, 호스트(40)로부터 송신된 순서를 나타내는 것이 아님을 미리 언급하고자 한다.
본 실시예에 있어서는 버퍼 데이터에 대한 기록 명령의 위치 관계를, 도 3에 나타낸 바와 같이 8 종류로 분류한다. 각각의 내용은 다음과 같다.
<NO HIT-A>
기록 명령 #1은 버퍼 데이터의 LLBA로부터 떨어진 위치에 존재하고 있다. 이와 같이 버퍼 데이터에 대하여 기록 명령 #1이 중복 부분을 갖고 있지 않은 경우에는 NO HIT-A라고 판단한다.
<TAIL_SEQ>
기록 명령 #2와 같이, 버퍼 데이터의 후단에 기록 명령 #2의 선단이 연속적으로 이어지는 경우에는 TAIL_SEQ라고 판단한다.
<OV_TAIL>
기록 명령 #3과 같이, 버퍼 데이터의 후단측에서 버퍼 데이터와 기록 명령#3이 중복되어 있는 경우에는 OV_TAIL이라고 판단한다.
<OV_ALL>
기록 명령 #4는 버퍼 데이터 중에 전부 포함되어 있다. 이러한 경우에는 OV_ALL이라고 판단한다.
<OV_COVER>
기록 명령 #5는 버퍼 데이터를 전부 포함하고 있다. 이러한 경우에는 OV_COVER라고 판단한다.
<OV_HEAD>
기록 명령 #6과 같이, 버퍼 데이터의 선단측에서 버퍼 데이터와 기록 명령 #6이 중복되어 있는 경우에는 OV_HEAD라고 판단한다.
<HEAD_SEQ>
기록 명령 #7과 같이, 버퍼 데이터의 선단에 기록 명령 #7의 후단이 연속적으로 이어지는 경우에는 HEAD_SEQ라고 판단한다.
<NO HIT-B>
기록 명령 #8과 같이, 버퍼 데이터의 선단측에 있어서 기록 명령 #8이 버퍼 데이터와 떨어져 있는 경우에는 NO HIT-B라고 판단한다.
이상의 판단은 HDC(31)의 SG(세그먼트 핸들러)(44)가 기록 명령의 LBA 정보와, RAM(33) 내에 기억되어 있는 세그먼트 테이블의 LBA 정보를 비교함으로써 실행된다. 구체적인 흐름을 도 4∼도 6에 기초하여 설명한다.
도 4∼도 6에 있어서, 단계 S11에서, LLBA<SLBA-1인가의 여부를 판단하여,LLBA<SLBA-1인 경우에는 단계 S12로 진행하고, 그렇지 않은 경우에는 단계 S13으로 진행한다. 또, 단계 S11에 있어서의 판단은 버퍼 데이터의 후단의 LBA와 기록 명령의 선단의 LBA와의 위치를 비교한 것이다. LLBA<SLBA-1이라면, 단계 S12에 있어서, 버퍼 데이터와 기록 명령과의 사이에 LBA 상의 중복이 없으므로, 버퍼 데이터에 대한 기록 명령의 관계, 즉 히트 상태(HIT STATUS)를 NO HIT-A라고 판단한다. 또, 「A」는 기록 명령이 버퍼 데이터의 후방에 존재하는 것을 나타내고 있다.
단계 S13에서는 LLBA=SLBA-1인지의 여부, 즉 버퍼 데이터의 후단의 LBA에 기록 명령의 선단의 LBA가 연속하는 것인지의 여부를 판단한다. 연속하고 있으면, 단계 S14에서 히트 상태를 TAIL_SEQ라고 판단한다. LLBA=SLBA-1이 아니면, 단계 S15로 진행한다(이하, 도 5).
단계 S15에서는 LENGTH<LLBA-SLBA+1인지의 여부를 판단한다. 그렇다면 단계 S19로 진행하고, 그렇지 않으면 단계 S16으로 진행한다.
단계 S16에서는 LLBA<ELBA인지의 여부를 판단한다. LLBA<ELBA라면 단계 S17에 있어서 히트 상태를 OV_TAIL이라고 판단하고, 그렇지 않으면 단계 S18에 있어서 히트 상태를 OV_ALL이라고 판단한다.
한편, 단계 S19에서는 LLBA≤ELBA인지의 여부를 판단하여, 그렇다면 단계 S20에 있어서 히트 상태를 OV_COVER라고 판단한다. 그렇지 않으면, 단계 S21로 진행한다.
단계 S21에서는 LENGTH<LLBA-ELBA인지의 여부를 판단하여, 그렇다면 단계 S22에 있어서 히트 상태를 NO HIT-B라고 판단한다. 그렇지 않으면, 단계 S23으로진행한다(이하, 도 6).
단계 S23에서는 LENGTH=LLBA-ELBA인지의 여부를 판단하여, 그렇다면 히트 상태를 HEAD_SEQ라고 판단한다. 한편, 그렇지 않으면 히트 상태를 OV_HEAD라고 판단한다.
이상으로 제1 단계의 판단이 종료된다.
다음에, 제2 단계의 처리를 도 7∼도 14에 기초하여 설명한다.
<NO HIT-A>
NO HIT-A라고 판단된 경우에는, 도 7에 나타내는 판단이 이루어진다. 즉, 단계 S101에서 스킵 길이(SKIP LENGTH)가 스킵 표준(SKIP CRITERIA)보다 큰지의 여부를 판단한다. 또, 여기서 스킵 길이란, LLBA-SLBA+1로 정의되는 값이며, 버퍼 데이터의 후단과 기록 명령의 선단과의 거리를 나타내고 있다.
스킵 길이가 스킵 표준보다 큰 경우에는, 단계 S102에 있어서, 기록 명령은 버퍼 데이터에 대하여 NO HIT라고 판단한다. 즉, 기록 명령의 선단과 버퍼 데이터의 후단과의 이격 거리가 규정된 이격 거리인 스킵 표준을 초과해서 벗어나 있는 경우에는 NO HIT라고 판단한다. NO HIT라고 판단되면, 상기 버퍼 데이터와 상기 기록 명령과의 사이에 관련성이 없는 것으로 간주하여, 데이터의 기록 실행시에 연속하여 기록하는 등의 처치를 하지 않는다.
스킵 길이가 스킵 표준 이하인 경우에는 기록 명령은 단계 S1O3에서, 버퍼 데이터에 대하여 테일 히트(TAIL HIT)라고 판단한다. 즉, 상기 버퍼 데이터와 상기 기록 명령은 이격되어 있지만, 그 거리가 규정치 이하이기 때문에 연속성이 있는데이터에 관한 것으로 간주하여 데이터의 기록 실행시에 연속하여 기록을 실행하는 대상으로 삼는다. 따라서, RPO에 의한 성능 향상에 유효하다. 이 점은 NO HIT-B라고 판단된 경우에 대해서도 마찬가지이다.
테일 히트라고 판단한 경우에는 지금까지의 테일 베스트 스킵 길이(TAIL BEST SKIP LENGTH)가 0 미만인지의 여부를 단계 S1O4에서 판단한다. 테일 베스트 스킵 길이가 0 미만인 경우에는 처리가 종료된다. 그렇지 않으면 단계 S1O5에서, 금번(今回)의 스킵 길이가 테일 베스트 스킵 길이보다 작은지의 여부를 판단한다. 작은 경우에는 단계 S1O6에서, 금번의 스킵 길이를 테일 베스트 스킵 길이로 하여, 테일 베스트 스킵 길이 및 테일 베스트 스킵 세그먼트 ID를 갱신한다. 그렇지 않으면, 처리를 종료한다.
여기서, 테일 베스트 스킵 길이에 관해서, 도 23을 참조하면서 설명한다. 도 23은 기록 명령이 2 개의 버퍼 데이터 중 어디에 대해서도 테일 히트로 되어 있는 것으로 한다. 그런데, 스킵 길이는 세그먼트 ID가 2 인 버퍼 데이터 쪽이 세그먼트 ID가 1 인 버퍼 데이터보다도 작은 것을 알 수 있다. 이 경우, 그 기록 명령의 테일 베스트 스킵 길이는 세그먼트 ID가 2 인 버퍼 데이터와의 스킵 길이가 되어, 테일 스킵 세그먼트 ID는 2가 된다. 그리고, 테일 베스트 스킵 길이 및 테일 스킵 세그먼트 ID는 도 16에 나타내는 테이블에 기억된다.
<TAIL_SEQ>
TAIL_SEQ라고 판단된 경우에는, 도 8에 나타내는 처리가 이루어진다.
TAIL_SEQ의 경우에는 단계 S201에서, 히트 상태를 테일 히트라고 판단한다.이어서, 지금까지의 테일 베스트 스킵 길이가 0 미만인지의 여부를 단계 S202에서 판단한다. 테일 베스트 스킵 길이가 0 미만인 경우에는 처리를 종료한다. 그렇지 않으면 단계 S203에 있어서, 스킵 길이가 테일 베스트 스킵 길이보다 작은지의 여부를 판단한다. 작은 경우에는 단계 S204에 있어서, 테일 베스트 스킵 길이 및 테일 베스트 스킵 세그먼트 ID를 갱신한다.
<OV_TAIL>
OV_TAIL이라고 판단된 경우에는, 도 9에 나타내는 처리가 이루어진다.
우선, 단계 S301에서 히트 상태를 테일 히트라고 판단하고, 이어서 단계 S302에서 스킵 길이가 테일 베스트 스킵 길이보다 작은지의 여부를 판단한다. 작은 경우에는, 단계 S303에 있어서, 테일 베스트 스킵 길이 및 테일 베스트 스킵 세그먼트 ID를 갱신한다. 그렇지 않은 경우에는 처리를 종료한다.
<OV_ALL>
OV_TALL이라고 판단된 경우에는 도 10 및 도 11에 나타내는 처리가 이루어진다.
우선, 단계 S401에 있어서 LLBA와 ELBA가 일치하는지의 여부를 판단한다. 일치하는 경우에는 단계 S402로 진행하고, 일치하지 않은 경우에는 도 11의 단계 S408로 진행한다.
단계 S402에서는 SLBA=LLBA-LENGTH+1인지의 여부를 판단한다. 그렇다면 단계 S403으로, 그렇지 않으면 단계 S405로 진행한다.
단계 S404에서는, 단계 S402에서 SLBA와 버퍼 데이터의 선단 LBA가 일치한다고 판단한 경우에, 히트 상태를 커버 오버레이라고 판단하고, 계속해서 단계 S404에서 오버레이 히트(OVERLAY HIT)의 카운트를 1 증가시킨다.
단계 S405에서는 히트 상태를 테일 히트라고 판단한다. 계속해서 단계 S406에서 스킵 길이가 테일 베스트 스킵 길이보다 작은지의 여부를 판단한다. 작은 경우에는 단계 S407에 있어서, 테일 베스트 스킵 길이 및 테일 베스트 스킵 세그먼트 ID를 갱신한다. 그렇지 않은 경우에는 처리를 종료한다.
단계 S408에서는 SLBA=LLBA-LENGTH+1인지의 여부를 판단한다. 그렇다면 단계 S409로, 그렇지 않으면 단계 S412로 진행한다.
단계 S409에서는 히트 상태를 헤드 히트(HEAD HIT)라고 판단한다. 계속해서, 단계 S410에서 스킵 길이(여기서는, SLEN)가 헤드 베스트 스킵 길이(HEAD BEST SKIP LENGTH)보다 작은지의 여부를 판단한다. 그렇다면 단계 S411로 진행하고, 또한, 그렇지 않으면 처리를 종료한다.
단계 S411에서는 헤드 베스트 스킵 길이 및 헤드 베스트 스킵 세그먼트 ID(HEAD BEST SKIP SEGMENT ID)를 갱신하여, 그 후 처리를 종료한다.
단계 S412에서는 히트 상태를 올 오버레이(ALL OVERLAY)라고 판단하고, 이어서 단계 S413에서 오버레이 히트의 카운트를 1 증가시키고 처리를 종료한다. 또, 오버레이 히트의 카운트는 도 16에 나타내는 테이블의 NO OF HIT의 셀에 의해 증가된다.
<OV_COVER>
OV_COVER라고 판단된 경우에는, 도 12에 나타낸 바와 같이 단계 S501에 있어서 히트 상태를 올 오버레이라고 판단하고, 계속해서 단계 S502에서 오버레이 히트의 카운트를 1 증가시키고 처리를 종료한다.
<OV_HEAD>
OV_HEAD라고 판단된 경우에는 도 13에 나타내는 처리가 이루어진다.
OV_HEAD의 경우에는 단계 S601에서 히트 상태를 헤드 히트라고 판단한다. 이어서, 단계 S602에 있어서, 스킵 길이(이 판단에서는 (LLBA-LENGTH+1)-ELBA)가 헤드 베스트 스킵 길이보다 작은지의 여부를 판단한다. 작은 경우에는, 단계 S603에서, 헤드 베스트 스킵 길이 및 헤드 베스트 스킵 세그먼트 ID를 갱신한다. 그렇지 않으면 처리를 종료한다.
<HEAD_SEQ>
HEAD_SEQ라고 판단된 경우에는, 도 14에 나타내는 처리가 이루어진다.
HEAD_SEQ의 경우에는, 단계 S701에 있어서 히트 상태를 헤드 히트라고 판단한다. 계속해서 단계 S702에서 지금까지의 베스트 히트 스킵 길이가 마이너스인지의 여부를 판단한다. 마이너스인 경우에는 처리를 종료한다. 마이너스가 아닌 경우에는 단계 S703으로 진행한다.
단계 S703에서는 스킵 길이가 헤드 베스트 스킵 길이보다 작은지의 여부를 판단한다. 한편, 여기서의 스킵 길이는 제로이다. 스킵 길이가 헤드 베스트 스킵 길이보다 작은 경우에는 단계 S704에서 헤드 베스트 스킵 길이 및 헤드 베스트 스킵 세그먼트 ID를 갱신하고 처리를 종료한다.
<NO HIT-B>
NO HIT-B라고 판단된 경우에는, 도 15에 나타내는 처리가 이루어진다. 즉, 단계 S801에 있어서, (LLBA-LENGTH+1)-ELBA가 스킵 표준보다 큰지의 여부를 판단한다.
스킵 길이가 스킵 표준보다 큰 경우에는 단계 S802에 있어서, 히트 상태를 노 히트(NO HIT)라고 판단한다.
스킵 길이가 스킵 표준 이하인 경우에는 단계 S803에 있어서, 히트 상태가 헤드 히트라고 판단하여, 단계 S804로 진행한다.
단계 S804에서는 스킵 길이가 헤드 베스트 스킵 길이보다 작은지의 여부를 판단한다. 또, 여기서의 스킵 길이는 (LLBA-LENGTH+1)-ELBA로 정의된다. 헤드 베스트 스킵 길이가 스킵 길이 이하인 경우에는 처리를 종료한다. 스킵 길이가 헤드 베스트 스킵 길이보다 작은 경우에는 단계 S805에 있어서, 헤드 베스트 스킵 길이 및 헤드 베스트 스킵 세그먼트 ID를 갱신하고 처리를 종료한다.
이상의 설명으로부터 분명히 알 수 있는 바와 같이, 본 실시예에서는, 당초 도 3에 나타낸 바와 같이 버퍼 데이터와 기록 명령과의 관계를 대략 분류하고, 그 후에 도 7∼도 15에 나타낸 바와 같이 버퍼 데이터와 명령과의 관계를 상세히 판단한다고 하는 방법을 채용하고 있다. 또, NO HIT-A, TAIL_SEQ, OV_TAIL, OV_ALL, OV_COVER, OV_HEAD, HEAD_SEQ 및 NO HIT-B와 도 7∼도 15에 의해 판단된 각 히트 상태와의 관계를 버퍼 데이터와의 위치 관계를 포함해서 도 24에 도시하고 있다.
이상의 판단은 호스트(40)로부터 기록 요구가 이루어질 때마다 세그먼트 핸들러(SG)가 메모리 매니저(MM)를 통하여 세그먼트 테이블이 저장되어 있는 RAM(43)에 액세스함으로써 실행된다. 세그먼트 테이블을 구성하는 기록 세그먼트는 도 16에 나타낸 바와 같이 4 워드로 구성된다. 그 중의 1 워드 및 2 워드째를 LBA가 사용하고, 3 워드째를 블록 길이(LENGTH)가, 또한 4 워드째를 히트 상태가 사용하는 구성으로 되어 있다.
종래의 HDD는 이 기록 세그먼트가 1 세트밖에 존재하고 있지 않고, 또한, 4 워드째는 사용하지 않았다. 이상에 대하여 본 실시예에서는, 도 16에 나타내는 기록 세그먼트를 64 세트 준비하고, 또한 종래 사용하지 않았던 4 워드째를 히트 상태를 위해 사용하는 것으로 했다. 따라서, 기록 명령은 RAM(43)에 유지되게 된다.
이 기록 세그먼트에 저장된 히트 상태를 RPO(Rotational Position Optimization)에 반영시킨다. RPO는 우선 실행 대기의 명령을 실행했을 때에, 자기 디스크(21) 상의 목표가 되는 트랙에서의 탐색을 시작하고 나서 그 트랙에 도달할 때까지의 탐색 시간과, 도달후에 목표 섹터에 액세스를 시작할 때까지의 디스크 회전 대기 시간을 예상한다. 그리고, 이 탐색 시간 및 회전 대기 시간의 합계가 가장 짧게 되는 실행 대기 명령을, 다음에 실행하는 명령으로서 선택하는 방법이다.
본 실시예에 있어서는, 전술한 바와 같이 기록 세그먼트에 저장된 히트 상태를 참조함으로써, 복수의 기록 명령 중, 일련의 데이터로 간주할 수 있는 기록 명령을 관련지을 수 있다. 즉, 서로 NO-HIT 이외인 경우에는 일련의 명령의 뭉치로서 연속적으로 기록 실행의 대상으로 삼을 수 있다.
본 실시예에서는 전술한 바와 같이 기록 세그먼트를 64 세트 준비하고 있기 위해서, 그 중에서 이상과 같은 명령 뭉치가 복수 개 존재하는 경우도 있다. 이와같이 명령 뭉치가 복수 개 존재한 경우에는, 종래의 RPO에 따라, 탐색 시간 및 회전 대기 시간의 합계가 가장 짧게 되는 명령 뭉치부터 먼저 기록을 실행한다. 물론, 명령 뭉치를 구성하지 않는 기록 명령이 존재하는 경우도 있으므로, 그와 같은 기록 명령끼리, 또, 명령군과의 사이에서는 종래의 RPO에 따라서, 기록 명령의 실행 순위가 결정된다.
이상의 처리 개념에 관해서, 도 18을 이용하여 설명한다.
도 18의 (a)는 호스트(40)로부터의 기록 요구가 있었던 복수의 명령 ①∼⑥을 나타내고 있다. 각 명령에 붙여진 번호 ①∼⑥은 호스트로부터 송신된 기록의 요구 순위를 나타내고, 또한, 횡축은 LBA를 나타내고 있다.
도 18의 (a)에 있어서, 전술한 LBA의 비교에 기초하여, 명령 ①과 명령 ③, 또, 명령 ②와 명령 ⑤는 각각 일련의 데이터군을 구성하고 있다고 판단한다. 그러나, 명령 ④, 명령 ⑥은 다른 명령과의 관련이 없고, 노 히트라고 판단되는 것이다. 따라서, 명령 ①∼⑥은 도 18의 (b)에 나타낸 바와 같이 A∼D의 6 개의 데이터군으로 대체할 수 있다. 그리고, 기록할 때의 순서를, 호스트(40)로부터 송신된 순서가 아니라, A, B, C 및 D의 순서가 되도록 재배열한다.
다음에, 오버레이 히트가 된 데이터군의 기록 실행을 할 때의 처리에 관해서 도 19에 기초하여 설명한다.
도 19에 나타낸 바와 같이, 선행하는 기록 요구의 명령(버퍼 데이터)의 LBA가 1, 2 및 3, 후속의 기록 요구의 명령(기록 명령)의 LBA가 0 및 1로 한다. 버퍼 데이터에 대한 기록 명령의 히트 상태는 오버레이 히트이며, LBAl의 블록이 중복하고 있다. 단순히 RPO에 따라서 기록 명령의 기록을 실행한 후에 버퍼 데이터의 기록을 실행했다고 하면, LBA1의 블록에 대해서는 기록 명령의 데이터 위에 버퍼 데이터의 데이터가 오버라이트된다. 버퍼 데이터의 데이터는 기록 명령의 데이터보다 이전 것이므로, 상기 오버라이트에 의해 이전 데이터가 새로운 데이터 위에 기록되게 된다.
그래서, 본 실시예에 있어서, 도 19의 우측과 같이, 버퍼 데이터 중 중복되는 블록을 소거(DISCARD)한다. 그 후에, 버퍼 데이터의 기록을 실행하고, 이어서 기록 명령의 기록을 실행한다. 그렇게 함으로써, 중복되는 부분에 대해서도 새로운 데이터가 기록되게 된다.
다음에, 기록 명령이 복수 개의 실행 대기 상태에서 판독 요구 명령이 호스트(40)로부터 이루어진 경우의 처리에 대해서 설명한다.
종래의 HDD 장치는 기록 명령이 실행 대기의 상황에서 판독 요구가 있었던 경우에는, 실행 대기의 기록 명령이 모두 실행되고 나서 판독 요구의 명령을 실행하고 있었다. 그런데, 기록 명령의 실행이 모두 종료된 후에 판독 요구의 명령을 실행했다면, 데이터의 판독이 지연된다. 지금 현재 우선하여야 하는 것은 판독 명령이다. 그래서, 본 실시예에서는 기록 명령이 복수 개의 실행 대기인 상태에서 판독 요구 명령이 호스트(40)로부터 이루어진 경우에, 기록 명령이 모두 실행되기 전에, 판독 명령을 인터럽트 실행할 수 있도록 했다.
기록 명령이 복수 개의 실행 대기 상태에서 판독 요구가 있고, 그 판독 요구의 명령을 기록 명령의 도중에 인터럽트하게 되는 경우에 주의가 필요한 것은 판독요구의 명령과 실행 대기의 기록 요구의 명령에 중복이 있는 경우이다. 이것을 도 20을 이용하여 설명한다.
도 20은 이해를 쉽게 하기 위해서, 하나의 기록 명령과 하나의 판독 명령과의 관계를 나타내고 있다.
도 20의 (a)는 선행하는 기록 명령(도면에서, W)과 후속하는 판독 명령(도면에서, R)에 LBA 상의 중복이 없는 경우를 나타내고 있다. 이러한 경우에는, 기록 명령(W)을 실행하기 전에, 판독 명령(R)을 우선하여 실행하더라도 문제는 없다. 그런데, 도 20의 (b)에 나타낸 바와 같이, 기록 명령(W)과 판독 명령(R)에 LBA 상의 중복 부분이 존재하는 경우에는 기록 명령(W)을 실행하기 전에 판독 명령(R)을 우선하여 실행하면 다음과 같은 문제가 있다.
호스트(40)로부터의 판독 요구는 최신 데이터에 대하여 이루어져야 하는 것이다. 도 20의 (b)에 나타내는 경우에는, 기록 명령(W)에 의한 데이터가 최신의 것이다. 상술한 바와 같이, 기록 명령(W)과 판독 명령(R)에는 LBA에 중복이 있다. 이 중복 부분에 대해서, 판독 명령(R)의 대상이 되는 데이터는 기록 명령(W)에 의한 데이터이다. 따라서, 기록 명령(W)이 실행되어 상기 데이터가 실제로 기록되기 전에 판독 명령(R)이 실행되었다고 하면, 이 판독 명령(R)의 실행에 의해 판독된 데이터는 최신의 것이 아닌 부분을 포함한다. 이것으로는 판독 명령(R)이 적정하게 실행된 것은 아니다.
그래서, 본 실시예에서는 실행 대기의 기록 명령이 복수 개 존재할 때에 판독 요구가 있었던 경우에, 실행 대기 기록 명령의 LBA와 호스트(40)로부터 요구된판독 명령의 LBA와의 위치 관계를 확인하는 것으로 했다. 그리고, 도 20의 (b)와 같은 관계에 있는 실행 대기의 기록 명령이 있는 경우에는, 그 기록 명령을 실행한 후에 판독 명령을 인터럽트시켜서 다른 실행 대기의 기록 명령에 우선하여 실행하는 것으로 했다.
도 21에 그 일례를 나타낸다. 도 21의 (a)에 있어서, W1∼W4를 실행 대기의 기록 명령, R을 기록 명령(W1∼W4)이 실행 대기일 때에 호스트(40)로부터 요구된 판독 명령으로 한다.
도 21의 (a)에 나타낸 바와 같이, 판독 명령(R)과 기록 명령(W2, W3)에 LBA 상의 중복이 있다. 따라서, 판독 명령(R)을 실행하려면, 도 21의 (b)에 나타낸 바와 같이, 기록 명령(W1, W2 및 W3)을 실행한 후에, 판독 명령(R)을 실행한다. 그리고, 판독 명령(R)의 실행후에 기록 명령(W4)을 실행하는 것으로 했다. 이와 같이 함으로써, 판독 명령(R)의 실행에 의해 판독된 데이터는 최신의 데이터를 포함하는 것으로 된다. 한편, 도 21의 (b)의 ①∼⑤는 실행 순위를 나타내고 있다.
도 21에서는 판독 명령(R)과 기록 명령(W2, W3)에 LBA 상의 중복이 있는 예에 대해서 도시되고 있지만, 도 22의 (a)에 나타낸 바와 같이 판독 명령(R)과 기록 명령에 LBA 상의 중복이 없는 경우에는 도 22의 (b)에 나타낸 바와 같이, 판독 명령(R)을 기록 명령(W1)의 앞에 인터럽트하여 실행할 수도 있다.
이상 설명과 같이, 본 발명에 따르면, 실행 대기의 기록 명령이 있는 경우의 기록 또는 판독의 효율화를 도모하고, 하드 디스크 드라이브 장치의 성능을 향상시킬 수 있다.

Claims (12)

  1. 호스트 장치로부터 기록 요구가 이루어진 기록 데이터를 기록 매체에 기록하는 데이터 기록 방법에 있어서,
    기록 실행 대기 상태에 있는 선행 기록 명령의 논리적 블록 어드레스와 새롭게 기록 요구가 이루어진 후속 기록 명령의 논리적 블록 어드레스를 비교하여, 상기 선행 기록 명령과 상기 후속 기록 명령과의 논리적 블록 어드레스 상의 위치 관계를 판단하는 위치 관계 판단 단계와;
    상기 위치 관계 판단 단계에 의해 상기 선행 기록 명령과 상기 후속 기록 명령이 논리적 블록 어드레스 상에서 이격되어 있다고 판단된 경우에, 그 이격 거리가 규정된 이격 거리 이하인지의 여부를 판단하는 이격 거리 판단 단계와;
    상기 이격 거리 판단 단계에 의해 상기 선행 기록 명령과 상기 후속 기록 명령과의 논리적 블록 어드레스 상의 이격 거리가 규정된 이격 거리 이하라고 판단된 경우에, 상기 선행 기록 명령에 대응하는 기록 데이터와 상기 후속 기록 명령에 대응하는 기록 데이터를 연속해서 상기 기록 매체에 기록하는 데이터 기록 단계
    를 포함하는 것을 특징으로 하는 데이터 기록 방법.
  2. 제1항에 있어서, 상기 이격 거리 판단 단계에 있어서 이격 거리가 규정된 이격 거리 이하라고 판단된 상기 선행 기록 명령이 복수 개 존재하는 경우에, 상기 데이터 기록 단계는 상기 선행 기록 명령에 대응하는 기록 데이터를 기록한 직후에, 상기 이격 거리가 가장 작은 상기 후속의 기록 명령에 대응하는 기록 데이터를 기록하는 것을 특징으로 하는 데이터 기록 방법.
  3. 데이터 기록 요구가 실행 대기인 상태에서 호스트 장치로부터 데이터 판독 요구가 이루어졌을 때의 데이터 판독 방법에 있어서,
    기록 실행 대기 상태에 있는 기록 명령의 논리적 블록 어드레스와 새롭게 판독 요구가 이루어진 판독 명령의 논리적 블록 어드레스를 비교하여, 상기 기록 명령과 상기 판독 명령에 논리적 블록 어드레스 상의 중복이 존재하지 않는지의 여부를 판단하는 위치 관계 판단 단계와;
    상기 위치 관계 판단 단계에 의해 상기 기록 명령과 상기 판독 명령에 논리적 블록 어드레스 상의 중복이 존재하지 않다고 판단된 경우에, 상기 기록 명령의 전부가 실행되기 전에 상기 판독 명령을 실행하는 데이터 판독 단계
    를 포함하는 것을 특징으로 하는 데이터 판독 방법.
  4. 제3항에 있어서, 상기 판독 명령의 실행은 상기 판독 명령의 논리적 블록 어드레스의 선단과 논리적 블록 어드레스의 후단과의 거리가 최소가 되는 상기 기록 명령의 실행후에 연속해서 행해지는 것을 특징으로 하는 데이터 판독 방법.
  5. 랜덤 액세스 가능한 디스크형 기록 매체와;
    외부 장치로부터 송신된 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과;
    상기 명령 유지 수단에 유지된 기록 명령과 상기 외부 장치로부터 새롭게 송신된 기록 명령과의 사이에서 논리적 블록 어드레스의 중복 부분이 있는지의 여부를 판단하는 명령 관계 판단 수단과;
    상기 명령 관계 판단 수단에 의해서 상기 중복 부분이 없다고 판단된 경우에, 상기 명령 유지 수단에 유지된 기록 명령과 상기 새롭게 송신된 기록 명령이 논리적 블록 어드레스 상에서 규정된 거리보다도 벗어나 있는지의 여부를 판단하는 명령 거리 판단 수단과;
    상기 명령 거리 판단 수단에 의해 상기 명령 유지 수단에 유지된 기록 명령과 상기 새롭게 송신된 기록 명령이 상기 규정된 거리보다도 벗어나 있지 않다고 판단된 경우에, 상기 2 개의 명령에 대응하는 기록 데이터를 연속해서 상기 기록 매체에 기록하도록 지시하는 기록 지시 수단
    을 구비하는 것을 특징으로 하는 디스크 드라이브 장치.
  6. 제5항에 있어서, 상기 명령 거리 판단 수단은 상기 새롭게 송신된 기록 명령에 대하여, 상기 거리가 규정치 이하가 되는 상기 명령 유지 수단에 유지된 기록 명령이 복수 개 존재하는 경우에, 상기 거리가 최소가 되는 상기 명령 유지 수단에 유지된 기록 명령을 특정하는 것을 특징으로 하는 디스크 드라이브 장치.
  7. 랜덤 액세스 가능한 디스크형 기록 매체와;
    외부 장치로부터 송신된 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과;
    상기 외부 장치로부터 송신된 판독 요구에 대한 판독 명령과 상기 명령 유지 수단에 유지되어 있는 기록 명령과의 논리적 블록 어드레스에 있어서의 관계를 판단하는 명령 비교 수단과;
    상기 명령 비교 수단의 비교 결과에 기초하여 판독을 지시하는 판독 지시 수단
    을 구비하는 것을 특징으로 하는 디스크 드라이브 장치.
  8. 제7항에 있어서, 상기 명령 비교 수단은 상기 기록 명령에 대하여 논리적 블록 어드레스 상에서 중복되는 상기 판독 명령이 존재하는지의 여부를 판단하는 것을 특징으로 하는 디스크 드라이브 장치.
  9. 제7항에 있어서, 상기 판독 지시 수단은 상기 명령 비교 수단이 상기 기록 명령에 대하여 논리적 블록 어드레스 상에서 중복되는 상기 판독 명령이 존재한다고 판단한 경우에, 상기 명령 유지 수단에 유지되어 있는 상기 기록 명령 중 상기 중복되는 기록 명령을 실행한 후에, 상기 명령 유지 수단에 상기 판독 명령을 실행하도록 지시하는 것을 특징으로 하는 디스크 드라이브 장치.
  10. 제7항에 있어서, 상기 판독 지시 수단은 상기 기록 명령과 상기 판독 명령이논리적 블록 어드레스 상에서 중복하지 않는다고 상기 명령 비교 수단이 판단하면, 상기 명령 유지 수단에 실행 대기의 상기 기록 명령이 유지된 상태에서 상기 판독 명령을 실행하도록 지시하는 것을 특징으로 하는 디스크 드라이브 장치.
  11. 랜덤 액세스 가능한 디스크형 기록 매체로의 데이터의 기록을 제어하는 디스크 드라이브 장치의 컨트롤러에 있어서,
    외부 장치로부터 선행하여 송신된 선행 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과;
    상기 외부 장치로부터 새롭게 송신된 후속 기록 명령과 논리적 블록 어드레스 상에서 규정치 이하의 범위에서 벗어나 있는 상기 선행 기록 명령이 있는지의 여부를 판단하는 명령 비교 수단과;
    상기 명령 비교 수단에 의해 상기 규정치 이하의 범위에서 벗어나 있는 상기 선행 기록 명령이 있다고 판단한 경우에, 상기 후속 기록 명령을 상기 선행 기록 명령보다 우선하여 기록 실행을 행하도록 지시하는 기록 지시 수단
    을 구비하는 것을 특징으로 하는 디스크 드라이브 장치의 컨트롤러.
  12. 랜덤 액세스 가능한 디스크형 기록 매체로부터의 데이터의 판독을 제어하는 디스크 드라이브 장치의 컨트롤러에 있어서,
    외부 장치로부터 선행하여 송신된 복수의 선행 기록 명령을 실행할 때까지 유지하는 명령 유지 수단과;
    상기 외부 장치로부터 새롭게 송신된 판독 명령과 논리적 블록 어드레스 상에서 중복되는 상기 선행 기록 명령이 있는지의 여부를 판단하는 명령 비교 수단과;
    상기 명령 비교 수단에 의해 상기 판독 명령과 논리적 블록 어드레스 상에서 중복되는 상기 선행 기록 명령이 없다고 판단된 경우에, 상기 기록 명령의 실행에 우선하여 상기 판독 명령을 실행하는 것을 지시하는 판독 지시 수단
    을 구비하는 것을 특징으로 하는 디스크 드라이브 장치의 컨트롤러.
KR10-2001-0002134A 2000-01-27 2001-01-15 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러 KR100368964B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000-019379 2000-01-27
JP2000019379A JP2001216092A (ja) 2000-01-27 2000-01-27 データの書き込み方法、データの読み出し方法、ディスクドライブ装置およびディスクドライブ装置のコントローラ

Publications (2)

Publication Number Publication Date
KR20010077984A true KR20010077984A (ko) 2001-08-20
KR100368964B1 KR100368964B1 (ko) 2003-01-24

Family

ID=18546080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0002134A KR100368964B1 (ko) 2000-01-27 2001-01-15 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러

Country Status (4)

Country Link
US (1) US6654852B2 (ko)
JP (1) JP2001216092A (ko)
KR (1) KR100368964B1 (ko)
SG (1) SG115353A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1374070A2 (en) * 2001-02-28 2004-01-02 Crossroads Systems, Inc. Method and system for overlapping data flow within a scsi extended copy command
US7003644B2 (en) * 2002-03-28 2006-02-21 Seagate Technology Llc Execution time dependent command schedule optimization
US7000483B2 (en) * 2003-02-03 2006-02-21 Dielectrics Industries, Inc. Inflatable manometers
US7376784B2 (en) 2004-01-26 2008-05-20 Hitachi Global Storage Technologies Netherlands B.V. System and method for selecting command for execution in HDD based on benefit
US7299334B2 (en) * 2003-07-15 2007-11-20 Xiv Ltd. Storage system configurations
JP5030387B2 (ja) * 2005-03-08 2012-09-19 エイチジーエスティーネザーランドビーブイ データ記憶装置
JP2012063875A (ja) * 2010-09-14 2012-03-29 Toshiba Corp データ記憶装置、コマンド制御装置及び電子機器
CN102063271B (zh) * 2010-12-17 2014-08-13 曙光信息产业(北京)有限公司 一种磁盘外置Cache基于状态机的写回方法
US8949489B1 (en) * 2012-03-21 2015-02-03 Google Inc. Method for combining bulk and latency-sensitive input and output
US10423568B2 (en) * 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
US20190286342A1 (en) * 2018-03-16 2019-09-19 Seagate Technology Llc Efficient storage drive read-write head verification
US11657848B1 (en) * 2022-02-24 2023-05-23 Western Digital Technologies, Inc. Data access and logical mapping for magnetic disks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02276083A (ja) * 1989-04-17 1990-11-09 Seiko Instr Inc ディスク・ヘッドのシーク動作の最適化方法
JPH0612189A (ja) * 1992-06-29 1994-01-21 Nec Corp 補助記憶装置におけるシーク動作制御方式
US5708796A (en) * 1994-11-18 1998-01-13 Lucent Technologies Inc. Method of retrieving continuous and non-continuous media data from a file system
US5664143A (en) * 1994-11-23 1997-09-02 International Business Machines Corporation Method and apparatus for sorting disk access commands in a rotational position queue according to time differences between the commands
US5570332A (en) * 1995-05-25 1996-10-29 Seagate Technology, Inc. Method for reducing rotational latency in a disc drive
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
US6571298B1 (en) * 2000-01-11 2003-05-27 International Business Machines Corporation System and method for grouping disk access commands in a queue according to proximate disk positions

Also Published As

Publication number Publication date
JP2001216092A (ja) 2001-08-10
KR100368964B1 (ko) 2003-01-24
US6654852B2 (en) 2003-11-25
SG115353A1 (en) 2005-10-28
US20010020260A1 (en) 2001-09-06

Similar Documents

Publication Publication Date Title
US6735678B2 (en) Method and apparatus for disc drive defragmentation
US6330640B1 (en) Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
US7373477B2 (en) Fragmentation executing method and storage device
US7783828B1 (en) File system write to storage without specifying location reference
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
US6779081B2 (en) Apparatus and method for defragmentation in disk storage system
JP4163461B2 (ja) キャッシュ・バッファ制御方法及び制御装置
US6842801B2 (en) System and method of implementing a buffer memory and hard disk drive write controller
US6789163B2 (en) Optimizing data transfer performance through partial write command purging in a disc drive
JP4675881B2 (ja) 磁気ディスク装置およびその制御方法
US5983319A (en) Information recording and reproduction apparatus and a method of data caching including read-ahead capability
US10152236B2 (en) Hybrid data storage device with partitioned local memory
JP2004171411A (ja) データ記憶装置及びバッファメモリの管理方法
KR100368964B1 (ko) 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러
US20050033930A1 (en) High-speed snapshot method
JPH1063578A (ja) 情報記録再生装置
KR19980029917A (ko) 자기 디스크 드라이브에서 읽기 캐쉬의 성능을 높이기 위한 방법
US20020015252A1 (en) Method and apparatus for a disc drive adaptive file system
KR20070060301A (ko) 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버
US10459658B2 (en) Hybrid data storage device with embedded command queuing
US6957300B2 (en) Reducing delay of command completion due to overlap condition
JP3969809B2 (ja) 記憶装置におけるデータバッファの管理方法
JP3847888B2 (ja) ディスク装置及び同装置における欠陥による再配置データの高速ホスト転送方法
US7362539B2 (en) Disk drive and method of controlling the same
JPH08286836A (ja) 情報記録再生装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20051213

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee