KR100619806B1 - 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템 - Google Patents

디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템 Download PDF

Info

Publication number
KR100619806B1
KR100619806B1 KR1020017012114A KR20017012114A KR100619806B1 KR 100619806 B1 KR100619806 B1 KR 100619806B1 KR 1020017012114 A KR1020017012114 A KR 1020017012114A KR 20017012114 A KR20017012114 A KR 20017012114A KR 100619806 B1 KR100619806 B1 KR 100619806B1
Authority
KR
South Korea
Prior art keywords
time
access
unit
connection
controller
Prior art date
Application number
KR1020017012114A
Other languages
English (en)
Other versions
KR20010110679A (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 KR20010110679A publication Critical patent/KR20010110679A/ko
Application granted granted Critical
Publication of KR100619806B1 publication Critical patent/KR100619806B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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

Abstract

본 발명은 공유 콘트롤러 리소스들에 접속하는 것을 중개하는 방법 및 시스템에 관한 것이다. 본 발명의 일 실시예에서는, 첫 번째 사이클 지속시간에 대한 접속 사이클이 제공된다. 첫 번째 일정량의 시간이 첫번째 접속 유닛에 할당된다. 상기 공유 콘트롤러 리소스는 첫번째 접속 시간 동안에 첫번째 유닛을 이용하여 접속되는 바, 상기 첫번째 접속시간은 첫번째 일정량의 시간보다 길지 않다. 두번째 일정량의 시간과 첫 번째 일정량의 시간중 사용되지 않은 시간은 두번째로 접속하는 유닛에 할당된다.

Description

디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법 및 시스템{Arbitration Methods and Systems for Arbitrating Access to a Disk Controller Memory}
본 발명은 대용량 데이터 저장장치 콘트롤러에 관한 것이다. 좀 더 구체적으로, 본 발명은 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법 및 시스템에 관한 것이다.
대용량 데이터 저장장치는 컴퓨터 시스템을 구성하는 핵심요소이다. 일반적으로, 대용량 저장 유닛들은 하드디스크, 광 드라이브 또는 기타 다른 저장장치 등의 비휘발성(non-volatile) 기억장치들로 구성되어 있다. 또한, 컴퓨터 시스템에는 RAM 회로와 같은 휘발성 시스템 기억장치도 포함하고 있다. 현재 사용되는 대부분의 개인용 컴퓨터의 하드디스크의 용량은 10GB 또는, 그 이상인 반면, 256MB 이하의 RAM을 내장하고 있다.
컴퓨터의 대용량 기억장치는 프로그램 또는 데이터 등을 비휘발성 기억장치에 저장하는 용도로 사용되고 있다. 따라서, 상기 대용량 기억장치에 데이터를 저 장하면, 컴퓨터 및 대용량 기억장치의 전원이 꺼지는 경우에도 데이터가 보존된다. 반면, 휘발성 기억장치는 프로그램 코드나 데이터를 임시 저장하는 장소로 이용될 수 있을 뿐이다. 일반적으로, 휘발성 시스템 기억장치에는 대용량 기억장치에 비하여 훨씬 바른 속도로 접속할 수 있다. 마이크로프로세서가 시스템 기억장치에 저장되어있지 않은 프로그램이나 데이터에 접속하고자 하는 경우, 마이크로프로세서는 시스템 기억장치에 비하여 용량이 크기는 하나, 속도가 느린 대용량 기억장치에 있는 데이터를 우선적으로 복사한 다음, 시스템 메모리의 데이터에 빠르게 접속하게 된다. 또한, 마이크로프로세서는 시스템 메모리에 새롭거나 또는 수정된 데이터가 시스템 메모리에 저장되는 경우와 같이 불명료한 상태에서는 데이터를 대용량 기억장치에 기록하게 된다.
통상, 대용량 기억 유닛은 하드디스크와 하드디스크 콘트롤러(hard disc controller, HDC)로 구성된다. 상기 콘트롤러는 하드디스크를 구동하고, 디스크에 기록된 대로 데이터를 서식화하며, 디스로부터 읽은 데이터를 검사하고, 호스트 시스템으로부터 오거나 호스트시스템으로 보내질 데이터를 전송하며, 하드디스크와 호스트 컴퓨터 시스템 사이의 지연이나 데이터 전송 속도의 차이를 보상하기 위하여 데이터를 일시 보관하기도 한다.
대개, 상기 HDC는 디스크와 호스트 사이의 데이터를 일시 보관하기 위한 버퍼 메모리를 구비하고 있다. 상기 디스크, 호스트, 로컬 콘트롤러 등의 각종 기능 유닛들은 상기 버퍼 메모리와 상호 작용을 하여야 하기 때문에, 이들이 상기 버퍼 메모리에 접속하는 것을 일정한 방식으로 조정할 필요가 있다. 따라서, 상기 HDC 에는 접속이 필요한 다양한 장치들이 상기 버퍼 메모리에 접속되는 것을 조정하는 접속 중개장치가 사용된다. 그러나, 종래의 시스템에서는, 접속 유닛에 각 접속 사이클 마다 고정된 양의 접속시간을 비효율적으로 제공하는 중개장치가 사용되고 있었다. 따라서, 종래의 중개장치를 사용하는 경우, 상기 접속 유닛에 의하여 버퍼 메모리의 이용을 변환시키는 것을 동적으로 조절하는 것이 불가능하였다.
본 발명에는 대용량 기억장치 콘트롤러의 공유 리소스에 접속하는 것을 조절하는 방법 및 시스템이 개시되어 있다. 본 발명의 일 실시예로서, 상기 콘트롤러는 하드디스크이고, 공유 리소스가 하드디스크 콘트롤러의 로컬 버퍼 메모리인 시스템을 들 수 있다. 콘트롤러 내의 수 개의 유닛들과 회로들 각각은 정보를 저장하고 검색하기 위하여 버퍼 메모리에 접속한다. 상기 유닛들로서는 콘트롤러 마이크로프로세서, 디스크 포맷터 유닛, 버퍼 메모리 재생 유닛, 디스크 포맷 데이터 패치 유닛, 에러교정 유닛 등이 있다. 상기 버퍼 메모리에 접속하는 것을 중개할 때에, 다양한 상기 유닛들의 접속장치가 고려되어야 한다. 예를 들어, 하나의 실시예에서는, 상기 디스크 콘트롤러가 매우 정밀하고, 예측 가능하며, 주기적인 접속장치들이 사용되고, 나머지 유닛들은 덜 정밀하고, 덜 예측가능한 접속장치들이 사용되며, 상기 호스트 인터페이스 유닛이 가장 정밀하지 못하고 예측가능하지 않은 접속장치를 사용하고 있다.
본 발명의 일 실시예는 각 유닛들이 연속적인 접속 지속시간을 제공하는 하 나의 사이클을 작동시킨다. 가장 정밀한 접속장치를 사용하는 상기 디스크 포맷터가, 접속되지 않은 지연시간이 특정의 시간주기를 초과하지 않도록 주기적으로 접속한다.
상기 접속사이클이 고 레벨에서는 두 개의 부분으로 분지된다. 첫 번째 부분은 상기 디스크 포맷터가 버퍼 메모리에 접속되는 시간을 나타내고, 접속 사이클의 두 번째 부분은 나머지 유닛들 즉, 디스크 포맷터를 제외한 다른 유닛들이 버퍼 메모리에 접속되는 시간을 나타낸다. 그러나, 상기 나머지 유닛들이 버퍼 메모리에 접속하는 반면, 상기 디스크 포맷터는 버퍼 메모리에 접속하지 않는다. 본 발명의 다른 실시예에서는 소정의 시간 내에 디스크 포맷터의 주기적 접속이 허용되는지를 확인하기 위하여, 나머지 유닛들의 결합된 접속시간이 소정의 시간으로 제한되었다. 유사한 목적으로, 상기 나머지 유닛들이 접속할 수 있는가의 여부를 확인하기 위하여, 상기 디스크 포맷터의 접속시간이 소정의 시간으로 제한되었다. 상기 접근 사이클의 두 부분 각각이 최대 지속시간을 보일 때, 접속 사이클 자체는 최대의 허용된 지속시간을 갖는다.
다음 레벨에서는, 나머지 유닛들에 할당된 접속 사이클의 일부가 다시 위로 나누어진다. 나머지 유닛들 각각은 이들, 즉 디스크 포맷터 유닛이 아닌 유닛들에게는 할당된 시간 내에서 최대량의 시간이 할당된다. 나머지 유닛들이 자신들에게 할당된 최대량의 시간을 사용하지 못하는 경우에 사용되지 않은 시간은 남은 유닛들이 사용하게 된다. 따라서, 디스크 포맷터가 버퍼 메모리에 다시 접속하는 데에 이용되기 전의 시간이 다 소모되어, 특정의 최대 지속기간보다 짧아지게 된다.
본 발명의 일 실시예에서는, 접속 사이클 중에 나머지 유닛 각각이 연속하여 전체 할당 시간의 일부씩을 사용하게 됨에 따라, 각 유닛들에 할당된 전체 접속시간으로부터 시간이 줄어들게 된다. 결국, 맨 나중의 유닛을 제외한 모든 나머지 유닛들에 할당된 시간에 접속이 제공되었음의 여부를 불문하고, 나머지 모든 시간은 마지막 유닛에 할당되게 된다.
이하에서는, 도면을 참조하여 본 발명을 상세하게 설명하고자 한다. 도면에서 동일 구성 요소는 동일 도면 부호로 명세서 전체에서 표시된다.
도 1은 본 발명의 일 실시예에 채용된 컴퓨터 시스템의 예를 설명하는 블록도이고;
도 2는 디스크 콘트롤러 회로의 실시예를 설명하는 블록도이며;
도 3은 디스크 콘트롤러의 버스 구성의 실시예를 설명하는 블록도이고;
도 4는 디스크 콘트롤러 중개장치의 구성의 실시예를 설명하는 블록도이며;
도 5는 대표적인 디스크 기록 순서 및 데이터 포맷의 실시예를 보여주는 블록도이고;
도 6은 대표적인 디스크 판독 순서 및 데이터 포맷의 실시예를 보여주는 블록도이며;
도 7은 중개 순서의 실시예를 설명하는 블록도이고;
도 8A-8E는 중개 프로세스의 실시예를 설명하는 흐름도이며; 및,
도 9는 중개 한계들을 보여주는 시간 라인들과 예시적인 접속 타이밍들을 보여주는 순서도이다.
도면의 상세한 설명
이하의 설명에서, 도면에 참조번호가 함께 표시된 바, 이는 본 발명의 특정한 실시예를 설명하기 위한 것이다. 본 발명의 범위 내에서 변형된 실시예가 가능한 바, 명세서 전체에서 동일 참조번호는 동일 구성요소를 나타낸다. 본 발명을 보다 자세하게 설명하기 위하여 이하에서 많은 특정의 구체적인 사항이 설명되어질 것이나, 본 발명은 본 발명에 개시된 장치나 방법에 상당하는 대응물로도 실시가 가능함은 당업자에게 자명한 것이다. 이와는 달리, 공지의 방법, 구성요소 및 장치들은 상세하게 설명되지 않은 바, 이는 본 발명의 기술적 사상의 핵심을 흐리게 할 필요가 없기 때문이다.
이하에서 설명한는 발명의 상세한 설명은 다음의 부분들로 나뉘어져 있다: 본 발명의 일 실시예를 통하여 본 실시에 적절한 시스템에 관한 실시예의 구성에 대한 개관, 중개 프로세스의 실시에에 대한 상세한 설명, 타이밍 시나리오의 예 및 중개 한계값 계산의 예.
본 발명의 일 실시예를 통하여 본 실시에 적절한 시스템에 관한 실시예의 구성에 대한 개관
도 1은 본 발명의 일 실시예로서 하드디스크 콘트롤러(hard disk controller, 이하, `HDC`라 함) 122가 사용되는 시스템 100을 설명하는 블록도이다. 도 1에서, HDC의 코어 102는 호스터 버스 인터페이스 110을 경유하면서 호스트 시스템 버스 112를 이용하여 호스트 시스탬 108에 연결되어 있다. 상기 호스트 시스템 108은 하나 또는 그 이상의 시스템 마이크로프로세서, 시스템 RAM, 모니터, 키보드 또는 기타 장치들로 구성되어 있다.
상기 호스트 시스템 108은 하드디스크 114에 저장되거나, 또는 이로부터 검색될 데이터를 상기 호스트 시스템 버스 112를 통하여 교환한다. 어떤 데이터를 검색하고 어디에 저장할 것인가에 관한 명령이 호스트 시스템 108로부터 호스트 시스템 버스 112를 통해 HDC 코어 102로 보내진다.
또한, 콘트롤러 마이크로프포세서 104는 마이크로프로세서 인테페이스 106을 통하여 HDC 코어 102에 연결되어 있다. 실시예에서 호스트 시스템 마이크로프로세서와 구별되는 콘트롤러 마이크로프로세서 104는 호스트 시스템 108로부터 지시를 받아 이를 실행하며, HDC 코어 102를 관리한다. 상기 하드디스크 114는 디스크 포맷터 116을 통하여 HDC 코어 102에 연결되어 있다. 이하에서 보다 상세하게 설명되어지는 바와 같이, 상기 하드디스크 114는 자기 디스크 장치 및 회로소자들로 구성되어 있다. 콘트롤러 버퍼 메모리 118은 버퍼 인터페이스 120을 통하여 HDC 코 어 102에 연결되어 있다. 일 실시예에서, 상기 버퍼 메모리 118은 랜덤 액세스 메모리(RAM)들을 이용하여 구성된다.
도 2는 HDC 코어 102 및 이와 연관된 포트 204, 208, 210, 216로 구성된 실시예를 설명하는 블록도이다. 버스 인터페이스 202는 호스트 버스 포트 204의 데이터, 제어신호, 인터럽트 회선 등을 통하여 호스트 시스템 108과 정보를 주고받는다. 마이크로프로세서 인터페이스 로직 206은 콘트롤러 마이크로프로세서 208의 타이밍 신호, 주소, 데이터 회선 등을 통하여 콘트롤러 마이크로프로세서 106를 HDC 코어 102에 연결한다. 마이크로프로세서 버스 220은 콘트롤러 마이크로프로세서 104가 HDC 코어 102와 통신하여 상기 HDC 코어의 다양한 유닛들을 제어할 수 있도록 한다.
도 2에서 설명되어지는 것처럼, 디스크 포맷터 116은 디스크 포트 210의 데이터와 콘트롤 회선을 통하여 하드디스크 114에 연결된다. 리드 솔로몬 에러교정 코드(ECC) 엔진 212는 디스크 기록시 에러교정 코드를 발생시킬 뿐만 아니라, 디스크 검색시 에러교정을 수행한다. 버퍼 콘트롤러 214는 버퍼 포트 216의 주소, 타이밍 신호, 데이터 회선 등을 통하여 버퍼 메모리 118에 연결된다. 실시예에서, 버퍼 콘트롤러 214는, 디스크 포맷터 116, EEC 엔진 212, 호스트 버스 인터페이스 202 및 마이크로프로세서 인터페이스 206 뿐만 아니라, 이하에서 설명되어지는 기타 다른 유닛들을 이용하여 버퍼 메모리 118에 접속하는 것을 제어하는 중개장치(미도시)를 구비하고 있다. 상기 중개장치는 이하에서 보다 상세하게 설명되어질 것이다. 버퍼 메모리 118에 접속하는 다양한 유닛들은 데이터 버스 218을 통하여 접속한다. 상기 데이터 버스 218은 버퍼 포트 216을 통하여 버퍼 메모리 118에 연결된다.
도 3은 HDC의 버스 구성에 대한 실시예를 설명하는 블로도이다. 버퍼 메모리 118에 접속하는 유닛들은 각각의 “first in first out”(FIFO) 버퍼 308, 312, 314, 316, 318 및 320을 통하여 버퍼메모리 118에 접속한다. 이들 FIFO 버퍼들은 용량이 다양한 바, 실시예에서 64 내지 96 바이트의 저장 용량을 갖는다. 콘트롤러 마이크로프로세서 104는 마이크로프로세서 FIFO 308을 통하여 버퍼 메모리 118에 접속한다. 콘트롤러 마이크로프로세서 104에 대해서는 상기 버퍼 메모리 118이 명령 및 데이터를 저장하는 주 메모리로서의 역할을 한다.
디스크 포맷 데이터 패치 유닛 304는 버페 메모리 118로부터 받은 디스크 포맷 데이터를 추출한다. 디스크 포맷터 116은 이 데이터를 이용하여 하드디스크 114상의 호스트 시스템 데이터를 검색하고 조직화 한다. 메모리 재생 유닛 306은 상기 버퍼 메모리가 동적 RAM을 사용하는 경우 필요한 시간 간격마다 버퍼 메모리를 재생한다. 이하에서 설명되어지는 것처럼, 실시예에서, 디스크 포맷데이터 패치 유닛 304와 메모리 재생 유닛 306은 버퍼 메모리의 접속을 중개하기 위하여 하나의 중개 슬롯을 공유한다. 따라서, 한 사이클 내에서는 디스크 포맷 데이터 패치 유닛 304와 메모리 재생 유닛 306 중에서 오직 하나의 유닛만이 버퍼 메모리 118에 접속되게 된다. 그러나, 다른 실시예에서는 메모리 재생 유닛 306 및 디스 크 포맷 데이터 패치 유닛 304가 각자의 중개 슬롯을 가지고 있다. 상기 디스크 포맷 데이터 패치 유닛 304와 메모리 재생 유닛 306은 그들 각자의 FIFO 버퍼 314와 316을 통하여 버퍼 메모리 118에 접속한다.
도 3에서 설명된 바와 같이, 상기 ECC 엔진 212은 FIFO 318을 통하여 버퍼 메모리 118에 연결되어 있다. ECC 엔진의 FIFO 318은 데이터가 버퍼 메모리 118에 있는 경우에 하드디스크 114로부터 읽히는 데이터를 교정하는 데에 사용된다. 버퍼 콘트롤러 214는 판독/교정/기록 과정을 통하여 상기 교정을 행한다.
호스트 버스 인터페이스 110은 자신의 FIFO 320을 통하여 버퍼 메모리 118에 연결된다. 상기 호스트 버스 인터페이스 110은 호스트 시스템 108과 버퍼 메모리 118사이에서 데이터와 명령을 전달한다.
도 4는 디스크 포맷터 116과, 디스크 포맷 데이터 패치 유닛 304, 메모리 재생 유닛 306, ECC 엔진 212, 마이크로프로세서 308, 호스트 버스 인터페이스 110 및 중개장치 402의 연결상태에 관한 실시예를 설명하는 블록도이다. 중개장치 402는 버퍼 메모리에 접속하는 다양한 유닛들 사이를 중개한다. 상기 중개장치 402는 반복되는 접속 사이클 도중에 접속을 요구하는 유닛들에개 접속하는 것을 허용한다. 접속 사이클이란 버퍼 메모리에 접속하는 각 유닛들 또는 하나의 슬롯을 공유하는 일단의 유닛들에 접속이 허용되는 일정 시간을 말한다. 실시예에서, 각 유닛들은 “ACK”라 불리는 승인 회선뿐만이 아니라, 버퍼 메모리 118에 접속하기 위하여 “REQ”라 불리는 요구 회선을 구비하고 있는바, 이러한 방법으로 중재장치 402 가 필요한 접속을 허용한다.
각각 다른 중개 한계 값을 갖는 일련의 중개 한계 레지스터들 410-418이 중개장치 402에 연결된다. 실시예에서, 주어진 중개 한계 값은, 버퍼 메모리 118에 접속할 수 있는 가능한 접속 사이클을 단위로 하여 단위 사이클 당 HDC 클록 사이클의 수로 특정된다. 상기 중개 한계 레지스터 414에는 다음의 것들이 있다: 디스크 포맷터 중개 한계 레지스터 410, 공유 디스크 포맷 데이터 패치 유닛 및 메모리 재생 중개 한계 레지스터 412, ECC 엔진 중개 한계 레지스터, 마이크로프로세서 FIFO 중개 한계 레지스터 416, 및 호스트 버스 인터페이스(글로벌) 중개 한계 레지스터 418. 상기 디스크 포맷 데이터 패치 유닛 306과 메모리 재생 유닛 306이 동일한 중개 한계를 공유하고, 동일한 중개 한계 레지스터 412를 사용하고 있음에 유의하라. 상기 호스트 버스 인터페이스 중개 한계 레지스터 418은 이하에서 설명되어지는 이유로 글로벌 중개 한계 레지스터라 불리기도 한다. 상기 중개 한계 레지스터 410-418은 HDC 클록 사이클에서 각 사이클 중, 각 유닛의 특정의 최대 접속 지속시간을 저장한다. 일 실시예에서, 상기 접속시간은 특정의 연속된 사간이다. 아하에서 상세하게 설명되겠지만, 중개 한계 계수기 406 및 글로벌 중개 한계 계수기 408이 중개 장치 402에 연결되어 있어서, 중개 한계값을 입력하고 감소시키는 방법으로 유닛들의 접속 지속 기간에 대한 정보를 추적하는데 사용된다. 중개 한계 계수기 408은 호스트 버스 인터페이스의 이용 가능한 접속시간을 추적하며, 중개 한계 계수기 406은 나머지 유닛들의 이용 가능한 접속시간을 추적한다.
도 5는 기록 데이터가 상기 HDC 102의 다양한 유닛들을 통과하여 전송될 때의 디스크 기록 순서 500을 예시적으로 설명하는 블록도이다. 호스트 시스템 108로부터 받은 데이터 502는 호스트 버스 인터페이스 110에 도달한 다음, 호스트 버스 인터페이스 FIFO 320을 통과하여 버퍼 메모리 118로 전송된다. 상기 FIFO 320은 데이터 502를 일시 보관하며, 필요한 경우, 버퍼 메모리 118에 접속하기 위하여 대기한다. 실시예에서는, 하드디스크 114로부터 데이터를 읽거나 여기에 데이터를 기록하는 바, 통상 512byte인 하나의 섹터보다 적지 않은 단위로 판독하거나 기록한다. 만약, 데이터의 양이 접속하려는 하나의 섹터보다 적음 경우라면, 전체 섹터에 접속할 수 없게 된다. 최소한 하나 이상의 완전한 데이터 섹터가 버퍼 메모리 118에 저장되는 경우에만, 상기 데이터 502가 사이클릭 중복체크 태그(cyclic redundancy check tag)를 따라 디스크 포맷터 FIFO 312를 경유하여 디스크 포맷터 116으로 향하게 된다. 상기 CRC는 데이터의 정확도를 확인하기 위하여 사용되는 것으로, 데이터로부터 발생되는 코드이다. 상기 FIFO 312는 버퍼 메모리 118로부터 상기 데이터 502가 도착하는 경우 이를 일시 보관한다. 데이터 502와 CRC 508이 디스크 포맷터 116에 있을 때에는, 이들은 에러 교정 코드(ECC) 510을 발생시키는 ECC 엔진 212를 통과한다. 상기 ECC 510은 디스크 포맷터 116을 지나서 데이터 502 및 CRC 508에 부가되는 바, 이들 모두는 디스크 포맷터 116에 의하여 하드디스크 114에 기록된다.
도 6은 데이터가 HDC 102의 유닛들을 통과할 때의 검색 순서 600을 예시적으 로 설명하는 블록도이다. 하드디스크 104로부터 데이터를 검색하거나, 또는 여기에 데이터를 기록하는 과정 중에 섹터의 데이터 604, CRC 606 및 ECC 602에 오류가 발생할 가능성에 대비하기 위하여 ECC 기법이 사용된다. 이하에서 설명되어지는 바와 같이, 상기 ECC 엔진 212는 하드디스크 114에서 데이터가 검색된 다음 교정되지 않은 데이터 604 및/또는 CRC 606을 교정하는 작업을 수행한다. 하드디스크 114로부터 교정되지 않은 데이터 604, CRC 606 및 ECC 602가 검색되면, 디스크 포맷터 116이 이들을 ECC 엔진 212로 전송한다. 상기 디스크 포맷터 116은 ECC 602를 가공하고, 상기 교정되지 않은 데이터 604 및 CRC 606을 디스크 포맷터 FIFO 312로 보낸 다음, 버페 메모리 118로 전송한다. 디스크 포맷터 312는 버퍼 메모리 118에 접속하기 위하여 기다리는 대기시간 모두를 흡수한다. 교정되지 않은 데이터 604 및 CRC 606이 버페 메모리 118에 저장되어 있는 동안, ECC 엔진 212는 알고리즘을 실행하여 교정되지 않은 정보 604, CRC 606 및 ECC 602로부터 에러가 교정된 정보 612를 만든다. ECC 엔진 212는 상기 에러가 교정된 정보 612를 ECC FIFO 318로 전송한다. 다음으로, 버퍼 콘드롤러 214가 ECC FIFO 318에서 상기 에러가 교정된 정보 612를 이용하여 버퍼 118에 저장된 교정되지 않은 데이터 604 및 CRC 606의 에러를 교정한다. 버퍼 콘트롤러 214는 데이터 604 및 CRC 606을 교정하는 바, 이는 먼저 교정되지 않은 데이터 604 및/또는 CRC 606을 버퍼 메모리 118로부터 검색한 다음, ECC FIFO 318에 있는 정보 614를 이용하여 상기 교정되지 않은 정보 604 및/또는 CRC 606을 적절하게 변조시킨 다음, 마지막으로 상기 교정된 데이터 616 및/또는 CRC 618을 다시 버퍼 메모리 118에 기록하는 과정을 통하여 수행된 다. 상기 교정된 데이터 616 및 CRC 610은 다시 버스 인터페이스 FIFO 320으로 보내진 다음, CRC 618이 검사된다. 상기 CRC 검사는 데이터 교정작업이 성공적으로 수행되었는지를 검사한다, 상기 데이터 616이 정확하게 교정된 경우, 이는 호스트 버스 인터페이스 110을 통과하여 호스트 시스템 118로 보내진다. 만약, 상기 교정이 정확하게 수행되지 않은 경우에는 에러 신호가 발생하여 호스트 시스템으로 보내진다.
이상에서 설명된 바와같이, 통상적인 디스크 데이터 검색 또는 기록작업 도중에 HDC 102 내의 여러 유닛들이 버퍼 메모리 118에 접속하게 된다. 상기에서 설명된 검색 및 기록 순서 중의 접속에 더하여 콘트롤러 마이크로프로세서 104가 버퍼 메모리 118에 접속하는 바, 이는, 상기 버퍼 메모리가 마이크로프로세서의 주 메모리로서 기능을 하기 때문이다. 뿐만 아니라, 디스크 검색 또는 디스크 검색 또는 기록작업을 수행하는 도중에, 디스크 포맷터 116은 디스크 포맷 데이터 피치 유닛 304에 의하여 검색되어, 버퍼 메모리 118에 저장된 디스크 포맷 정보를 사용한다. 상기 버퍼 메모리의 동적 RAM 118은 주기적으로 재생될 필요가 있으며, 따라서, 버퍼 메모리 재생 유닛 306도 버퍼 메모리에 접속하게 된다.
중개 프로세스의 실시예에 대한 상세한 설명
중개 방법 및 장치에 대한 실시예로부터, 접속을 요하는 모는 유닛들과, 유닛들이 이용 가능한 접속 시간을 효과적으로 할당할 수 있는 동적 수단에 의한 주 기적 접속을 확인할 수 있다. 중개장치 402는 설정 가능한 중개 한계를 사용하여 기능한다. 실시예에서, 중개한계 값은 해당 유닛들에 할당된 최대 접속시간을 나타내는 클록 사이클의 수에 상당하는 값이다. 상기 한계들은 ROM이나 EEPROM과 같은 비휘발성 메모리상에 프로그램될 수 있다. 다른 경우에는, 상기 중개 한계들이 결정된 다음 호스트 시스템이나 마이크로프로세서에 의하여 즉석에서 결정되고 설정되기도 한다.
도 7은 접속 사이클 700의 실시예를 설명하는 블록도이다. 접속 사이클 중, 중개장치 402는 소정의 반복순서에 따라 유닛들의 접속 요구를 검사한다. 만약, 유닛이 REQ 라인을 중개장치 402에 요구하지 않은 경우라면, 중개장치 402는 다음 유닛의 REQ 라인을 검사하게 된다. 중개장치 402는 버퍼 메모리에 접속을 요구하는 다음 유닛을 발견할 때까지 상기 접속 사이클을 반복한다. 메모리 재생 유닛 306과 디스크 포맷 데이터 패치 유닛 304가 동일 접속 사이클 슬롯을 두고 경쟁하고 있다는 것에 주목하라. 주어진 하나의 접속 사이클에서, 상기 중개장치는 메모리 재생 유닛 306과 디스크 포맷 데이터 패치 유닛 304 중 하나에게만 접속을 허용한다. 동일 사이클에서, 304/306 유닛들이 모두 접속을 요구하는 경우라면, 중개장치 402는 메모리 재생 유닛 306의 요구에 우선 순위를 부여하는 바, 이는, 버퍼 메모리가 자신이 가진 데이터를 잃지 않은 상태에서 재생될 필요가 있기 때문이며; 디스크 포맷 데이터 패치 유닛 304는 다음 사이클에 접속하기 위하여 기다리게 된다.

도 8은 중개 프로세스의 한 사이클에 대한 실시예를 보여주는 자세한 흐름도 800이다. 실시예에서, 상기 중개장치는 중개 스테이트 머신(state machine)에 의하여 제어된다. 중개 프로세스가 사이클을 이루기 때문에 출발위치를 선택하는 것이 그리 중요하지는 않으나, 설명을 위하여 스테이트 802로부터 시작하기로 한다. 중개 프로세스 804-814의 첫 번째 일부가 디스크 포맷터 접속하기 위하여 전송된다. 중개장치 402는 디스크 포맷터 REQ 라인을 검사하여, 디스크 포맷터 116이 버퍼 메모리에 접속을 요구하는지를 검사한다. 만약, 디스크 포맷터 116이 접속을 요구한다면, 중개장치 402가 단계 806에서 디스크 포맷터의 ACK 라인을 올려 접속을 승인한다. 단계 808을 거치면서 중개장치 402가 중개 한계 레지스터 410으로부터 디스크 포맷터의 중개 한계를 읽고, 이 한계 값을 중개 한계 계수기 406에 입력한다. 상기 중개 한계 계수기 406은 매 HDC 클록사이클 마다 “1”씩 감소한다. 다음으로, 단계 810, 812에서, 상기 중개장치 402가 중개 한계 계수기 406이 “0”에 도달하였는지 및 디스크 포맷터의 요구 라인 REQ가 여전히 작동하는지를 반복하여 검사한다. 중개 한계 계수기 406이 “0”에 도달하였거나, 또는 디스크 포맷터의 REQ 라인이 작동하지 않은 경우에는, 단계 814에서 중개장치 402가 디스크 포맷터의 승인 ACK 라인을 포기한다. 상기 언급된 단계 804에서, 디스크 포맷터 116이 접속을 요구하지 않은 경우, 중개장치는 단계 804에서 단계 816으로 곧바로 향하게 된다.
중개 프로세스의 나머지 과정을 진행하기 전에, 단계 816에서, 중개장치 402 는 글로벌 중개 한계 레지스터 418로부터 읽힌 글로벌 중개 한계를 글로벌 중개 한계 계수기 408에 입력한다. 글로벌 중개 한계 계수기 408은 나머지 접속 사이클 동안 매 클록 사이클마다 감소한다. 따라서, 상기 중개 한계 값은 ECC 엔진 212, 마이크로프로세서 FIFO 308, 데이터 포맷 패치/메모리 재생 유닛 304/306 및 버스 인터페이스 유닛 110이 버퍼메모리 118에 접속할 때마다 감소한다. 글로벌 중개 한계 계수기 408이 “0”에 이르면 새로운 접속 사이클이 시작되고, 디스크 포맷터 118에 다시 접속할 수 있게 된다.
상기 글로벌 중개 한계는 두 가지 기능을 수행하는 바, 그 첫째는, 상기 중개 한계가 디스크 포맷 116을 제외한 다른 모든 유닛들이 이용가능한 시간의 한계를 정한다는 것이고, 둘째는, 상기 중개 한계가 실제로는 호스트 인터페이스 110에 대한 중개 한계 값으로 작용한다는 점이다. ECC 엔진 212, 마이크로프로세서 FIFO 308, 디스크 포맷 데이터 패치/메모리 재생 유닛 304/306은 각자 자신들의 고유한 중개 한계 값을 가지고 있다. 이들 유닛들이 버퍼 메모리 118에 접속하는 경우, 상기 중개 한계 계수기 406이 이들 각자의 중개 한계 값으로부터 카운트다운을 시작한다. 또한, 이들 유닛 각자가 버퍼 메모리 118에 접속하는 경우, 상기 중개 한계 계수기 408이 글로벌 중개 한계 값으로부터 카운트다운을 시작하여 호스트 인터페이스 유닛 110에 제공되는 시간을 결정한다. 일단, ECC 엔진 212, 마이크로프로세서 FIFO 308, 디스크 포맷 데이터 패치/메모리 재생 유닛 304/306들이 접속을 완료하면, 글로벌 중개 한계 계수기 408의 남은 시간은 호스트 인터페이스 110에게 주어지게 된다.
일단, 글로벌 중개 한계 계수기 408에 글로벌 한계 값이 채워지면, 중개장치 402가 단계 818로 이동한 다음, ECC 엔진의 REQ 라인을 검사하여 ECC 엔진 212가 접속을 요구하고 있는가를 확인한다. 이때, 상기 ECC 엔진 212가 접속을 요구하고 있는 경우라면, 중개장치가 단계 820으로 진행한 다음, ECC 엔진의 ACQ 라인을 승인하여 접속을 허용한다. 여기에서, 중개장치 402가 해당 중개 한계 레지스터 412로부터 ECC 엔진의 중개 한계 값을 읽은 다음, 단계 822로 진행하여 중개 한계 계수기 406을 설정하게 된다. 상기 중개 한계 계수기 406은 ECC 엔진이 접속하고 있는 시간 동안 각 클록 사이클마다 감소한다. 이 시간 동안 글로벌 중개 한계 계수기 408도 역시 감소되고 있음에 주목하라. 다음으로, 단계 824, 826에서, 상기 중개장치 402는 중개 한계 계수기 406이 “0”에 도달하였는지 및 ECC 엔진의 요구라인이 여전히 올라가 있는지를 반복적으로 검사한다. 만약, 상기 중개 한계 계수기 406이 “0”에 이르렀거나, 또는, ECC 엔진의 요구 라인 REQ가 작동하지 않는 경우라면, 중개장치 402는 단계 828에서 ECC 엔진의 ACK 라인을 포기하게 된다. 만약, 단계 818에서, ECC 엔진 212가 접속을 요구하지 않는 다면, 중개장치는 단계 830으로 곧바로 향하게 된다.
일단, 중개장치 402가 접속사이클 중 ECC 엔진에 해당하는 부분을 완료하면, 상기 중개장치 402는 위에서 설명된 ECC 엔진의 접속에서와 유사한 방법으로 단계 830-840에서 마이크로프로세서 FIFO 308에 접속한다. ECC 엔진 212에서와 같이, 마이크로프로세서 FIFO 308에 접속되어 있는 동안에는 매 사이클마다 중개 한계 계수기 406과 중개 한계 계수기 408이 감소한다. 일단, 중개장치 402가 마이크로프 로세서 FIFO에 해당하는 접속 사이클을 완료하면, 상기 중개장치 402는 단계 842로 진행한다
본 실시예에서, 상기 중개장치 402가 단일 사이클에서는 메모리 재생 유닛 306 또는 디스크 포맷 데이터 패치 유닛 304중 어느 하나에만 접속을 허용한다. 따라서, 단계 842에서 둘로 나뉘어지게 된다. 버퍼 메모리 재생 유닛의 요구가 디스크 포맷 데이터 패치 유닛의 요구보다는 우선 순위를 갖는다. 이에 따라, 상기 중개장치 402는 재생 유닛 306이 접속을 요구하는 지를 먼저 확인한다. 만약, 재생 유닛 306이 접속을 요구하고 있다면, 중개장치 402는 앞에서 상술한 바와 유사하게 순서 844-852를 따라 진행한다. 물론, 이 경우 상기 중개 한계 계수기 406에는 이들 재생/데이터 패치 중개 한계들이 입력된다. 만약, 재생 유닛 306이 접속을 요구하지 않는 경우에는, 중개장치 402가 단계 854로 이동하여 데이터 패치 유닛 304가 접속을 요구하고 있는지를 확인한다. 이 경우, 중개장치 402는 재생 유닛 306에서의 순서와 유사한 순서 856-864를 따라 진행한다. 만약, 디스크 포맷 데이터 패치 유닛 304나 재생 유닛 306 중 어느 것도 접속을 요구하지 않는 경우라면, 중개장치 402는 단계 854에서 단계 866으로 곧바로 진행한다. 여기에서, 중개장치 402는 호스트 인터페이스 110에 접속을 제공하게 된다.
본 실시예에서, 호스트 인터페이스 110의 접속 지속시간은 오로지 글로벌 중개 한계 값에 의하여서만 한정된다. 위에서 설명한 바와 같이, 글로벌 중개 한계 계수기 406은, 디스크 포맷터 116에 접속이 허용된 다음 ECC 엔진 212에 접속이 허용되기 전에 재설정 되어, 호스트 인터페이스 110 앞에 있는 유닛들이 버퍼 메모리 118에 접속하였을 때 계속 감소한다. 상기 호스트 인터페이스 110은 이전의 유닛들에 의하여 사용되고 남은 글로벌 중개 한계 동안에만 접속이 허용된다. 디스크 포맷터 116이 버퍼 메모리 118에 접속되어 있는 시간이 글로벌 중개 한계 계수기 408이나 호스트 인터페이스 110에 할당된 시간에 영향을 미치지 않음을 주목하라. 이는, 접속 사이클에서 디스크 포맷터 116의 차례가 된 다음에서야 글로벌 중개 한계 계수기 408이 설정되기 때문이다. 따라서, 호스트 인터페이스에게 제공되는 접속 시간이 소정의 하한 값에서 중개 한계에 해당하는 상한 값 사이에서 변동하게 된다.
단계 866에서, 호스트 인터페이스 110에 접속을 할당하기 위해서는, 중개장치가 호스트 인터페이스 110이 접속을 요구하는지를 우선 확인한다. 만약, 접속을 요구하는 경우라면 단계 868에서 상기 중개장치가 호스트 인터페이스 ACK 라인을 주장하여 버퍼 메모리 118에 접속하는 것을 허용한다. 글로벌 중개 한계 계수기 408은 호스트 인터페이스 110에 접속이 허용되어 있는 동안 계속하여 감소된다. 본 실시예의 글로벌 중개 한계 값은 이전 유닛들의 중계한계 값보다 충분히 커서, 호스트 인터페이스 유닛에 할당될 얼마간의 잔여시간이 여전히 남아 있다. 다음으로, 단계 870, 872에서 상기 중개장치 402는 반복하여 글로벌 중개 한계 계수기 408이 “0”에 이르렀는지 또는 호스트 인터페이스 유닛 110이 여전히 접속을 요구하는지를 반복하여 검사한다. 만약 상기 글로벌 중개 한계 값이 “0”에 이르거나 또는, 호스트 인터페이스 유닛 110이 단계 874에서 REQ 라인을 포기한 경우에는, 중개장치 402도 호스 인터페이스의 ACK 라인을 포기하게 된다. 단계 866에서 만 약, 호스트 인터페이스 유닛 110이 접속을 요구하지 않는 경우라면, 상기 중개장치 402가 단계 866에서 단계 876으로 곧바로 이동한다. 여기에서, 상기 중개장치 402가 하나의 접속사이클을 완성하고, 흐름도 800의 출발 단계 802로 돌아가게 된다.
본 발명의 또 다른 실시예에서, 호스트 인터페이스 유닛의 중개 한계 값을 이제까지 설명된 감소시키는 방법을 대신하여 증가시키는 방법으로 검사할 수도 있다. 이 경우, 글로벌 중개 한계 계수기 408은 최초에는 호스트 인터페이스 110에 대한 최소 중개 한계 값으로 초기화된 상태가 된다. 이 때에는, ECC 엔진 212, 마이크로프로세서 FIFO 308, 메모리 재생 유닛 306 또는 디스크 포맷 데이터 패치 유닛 304 중 어느 하나에 의하여 접속이 해제되면, 이 값이 글로벌 중개한계 계수기 408에 더해지게 된다. 이 경우, 오직 호스트 인터페이스 110이 버퍼 메모리 118에 접속하고 있는 때에만 글로벌 중개 한계 계수기 408이 감소하게 된다. 이러한 과정에 의하여 앞에서 이미 상술한 기법과 동일한 결과를 얻을 수 있다. 또 다른 실시예에서, 초기 유닛들에 사용되지 않은 잔여 시간이 뒤에 오는 유닛들에게 할당될 수도 있다. 또 다른 실시예에서는, 초기 유닛들이 사용하지 않은 잔여 시간이 맨 나중에 오는 유닛을 제외한 다른 특정의 유닛에 모두 할당될 수도 있다.
타이밍 시나리오의 예
도 9는 상기 중개장치의 작동을 설명하는 몇 개의 예시적인 중개 한계 및 이 에 해당하는 순서도들이다. 위의 실시예에서 설명된 바와 같이, 중개 한계는 각 유닛들이 버퍼 메모리 118에 접속할 수 있도록 해당 유닛에 할당된 매 접속사이클에서의 HDC 클록 사이클의 수를 나타내낸다. 시간 라인 902-918에서, 시간은 도면의 좌측으로 진행한다. 도면의 최상단에 있는 시간 라인 902로부터 중개 프로세스가 두 부분으로 분할된 것을 확인할 수 있다. 첫 번째 부분은 디스크 포맷터 116에 할당된 시간으로, 디스크 중개 한계이고, 두 번째 부분은 상기 디스크 포맷터를 제외한 다른 모든 유닛들에 할당된 시간으로, 글로벌 중개 한계를 나타낸다. 두 번째 시간 라인 904로부터 동적 호스트 인터페이스 중개 한계로 나타낸, 호스트 인테페이스 110에 할당된 시간이, ECC 212, 마이크로프로세서 308 및 재생/데이터 패치 304/306들에 허용된 시간 때문에 감소되었음을 확인할 수 있다. 시간 라인 906은 발명의 일 실시예에서, ECC 중개 한계, 마이크로프로세서 중개 한계 및 재생/포맷 데이터 패치 중개 한계들을 합한 것이 글로벌 중개 한계 값보다 적다는 것을 보여주는 것으로, 이로부터 최소한의 시간, 즉, 최소 호스트 인터페이스 중개 한계가 호스트 인터페이스에 할당된 다는 것을 확인할 수 있다. 따라서, ECC 212, 마이크로프로세서 308 및 재생/데이터 패치 304/306들이 이들에 할당된 모든 시간을 사용하더라도 호스트 인터페이스 110이 버퍼 메모리 118에 접속할 수 있는 시간은 여전히 남이 있다.
도 9에서는 또한, 예시적인 버퍼 메모리 중개 순서 908-918을 설명한다. 각 도표에, 접속 시간이 어떻게 변동될 수 있는지를 보여주는 하나의 사이클 전체가 표시되어 있다. 첫 번째 예시적인 중개 순서 908은 각 유닛들 모두가 그들에 할당 된 최대 접속시간을 요구하는 경우에 각 유닛들에 할당되는 상대적인 시간을 표시한 것이다. 이 경우, 전체 접속 사이클 시간도 최대가 된다. 다음 순서 910은 ECC 엔진 212가 자신의 REQ 라인을 포기하고 라인 906에 보이는 자신에 할당된 중재시간의 중간 정도에 접속을 중단하는 경우이다. 이 경우에는, 마이크로프로세서 FIFO 308은 자신에 할당된 시간 모두를 요구하지 않으나, 호스트 인터페이스 110는 자신에 할당된 시간 모두를 요구하며, 이에 따라, 나머지 이용 가능한 시간까지 호스트 인터페이스에게 허용된다. 다음 순서인 912에서는, ECC 엔진 212, 재생/포맷 데이터 패치 유닛 304/306 및 마이크로프로세서 308이 버퍼 접속을 요구하지 않는다. 따라서, 전체 글로벌 중개 한계를 호스트 인터페이스 110이 이용할 수 있게 된다. 이 순서에서는, 디스크 포맷터 116 및 호스트 인터페이스 110 모두 각자에 할당된 시간을 사용한다.
다음 순서 914는 디스크 포맷터 116이 자신의 REQ 라인을 해제하고 자신에 할당된 시간의 절반 정도만을 사용한 경우이다. 이 순서에서는, ECC 엔진 212, 재생/포맷 데이터 패치 유닛 304/306 및 호스트 인터페이스 110이 자신이 이용 가능한 모든 시간을 소비한다. 이 경우, 디스크 포캣터 116이 접속을 일찍 포기하였기 때문에 전체 시간은 이전의 예에서 보다 짧아지게 된다. 순서 916은, ECC 엔진 212, 마이크로프로세서 308 및 재생/데이터 패치 304/306 유닛들이 접속을 요구하지 않는다는 점을 제외하고는 순서 914와 유사한 경우이다. 그러나, 이 경우 호스트 인터페이스 110이 최대 접속시간을 요구하여, 나머지 유닛들이 포기한 시간들도 사용하게 된다. 마지막 순서 918은 디스크 포맷터 116이 자신의 최대 접속시간을 요구하고, ECC 엔진 212, 마이크로프로세서 308, 재생/데이터 패치 304/306 유닛은 접속을 요구하지 않으며, 호스트 인터페이스 110은 자신의 시간 중 일부만을 요구하는 경우이다. 이 경우, 글로벌 중계 한계 값에는 결코 이르지 못하게 되며, 따라서, 전체 접속 사이클의 시간은 가능한 접속시간의 최대값 보다 작아지게 된다.
중개 한계값 계산의 예
중개 한계 값은 다음의 몇 가지 요인들에 의하여 정하여진다: 디스크 포맷터의 용량, 버퍼 메모리 데이터 버스의 넓이, 하드디스크가 데이터를 검색하고 기록하는 속도, HDC 102의 클록 속도, 요구된 데이터가 버퍼 메모리 118로부터 검색되는 지연시간, 및, 중개장치 402가 작동하는데 소요되는 시간. 통상, 이들은 하드디스크 유닛들을 설계하고 제작할 때에 결정되는 상수들이다. 상기 중개 한계들은 비휘발성 메모리에 저장되거나 또는, 이들 요인들이 시스템 작동 중에 동적으로 계산되어질 수 있다.
본 발명의 일 실시예에서, 하드디스크 114의 사용상태를 최적으로 하기 위하여 글로벌 중개 한계가 설정되었다. 이는 디스크 포맷터 FIFO 312를 비워진 상태 또는, 전부 채워진 상태로 두지 않아야 가능하다. 글로벌 중개 한계는 전 사이클에서 디스크 포맷터 116이 버퍼 메모리 118에 접속을 중단하는 순간부터 그 뒤 사이클에서 버퍼 메모리 118로부터 온 데이터가 상기 FIFO 312에 도달하는 순간까지 있었던 클록 사이클의 수로 정의된다. 디스크 기록 헤드(disk write)의 FIFO 312 에 데이터가 존재하거나 또는, 디스크 판독 헤드(disk read)의 FIFO 312가 채워져 있지 않은 한 하드디스크 114는 최적의 상태로 작동하게 된다.
도 5로 되돌아가서, 디스크 기록 작업 중 데이터 502가 버퍼 메로리 118로부터 디스크 포맷터 FIFO 312로 전송된다. 디스크 포맷터 116이 버퍼 메모리 118에 접속하고 있지 않은 경우라면, 데이터가 하드디스크 114에 디스크 데이터 속도로 기록되는 채로, 디스크 포맷터 FIFO 312는 계속하여 비워진 상태로 있게 된다. 상기 디스크 데이터 속도는 하드디스크 114에 데이터가 기록되거나 판독되는 속도를 말한다. 따라서, 일 실시예에서, 전부 채워진 디스크 포맷터 FIFO 312를 완전히 비우는데 소요되는 시간은 다음으로 정의할 수 있다:
비우는데 소요되는 시간 = (FIFO 용량/디스크 데이터 속도)
상기 시간을 클록 빈도와 곱하면 클록 사이클들의 시간을 구할 수 있다.
비우는데 소요되는 클록 사이클 수 = (클록 빈도) X (FIFO 용량/디스크 데이 터 속도)
글로벌 중개 한계를 상기 클록 사이클의 수 근처로 설정하는 방법으로, 상기 디스크 포맷터 116은 상기 FIFO 312가 막 비워지자마자 곧바로 다시 채우기 시작할 수 있게 된다. 따라서, 디스크의 사용이 최적화될 수 있다.
상기 글로벌 중개 한계를 설정함에 있어, 추가적으로 고려되어야 할 사항이 있다. 첫째, 상기 중개장치 402는 어느 하나의 유닛에 접속 허용하는 데에는 중개 지연(arbitration delay)이라 불리는 한정된 수의 클록 사이클들을 소비한다. 둘째, 버퍼 메모리 118이 데이터 전송을 개시하는 데에 셋업 시간(setup time)이라 불리는 몇 개의 클록 사이클들이 소비한다. 세 번째로는, 버퍼 메모리 118로부터 디스크 포맷터 FIFO 312로 데이터를 전송하는 데에 판독 지연(read delay)이라 불리는 몇 개의 클록들을 소비한다. 따라서, “비우는데 소요되는 클록 사이클”의 수는 상기 중개 지연, 셋업 시간 및 판독지연만큼 감소하게 되며, 이에 따라, 버퍼 메모리 118로부터 전송되는 데이터는 상기 FIFO 312가 비워지자 마자 곧바로 디스크 포맷터 FIFO 312에 도착하게 된다. 이상에서 설명한 조정이 행하여진 실시예에서는, 글로벌 중개 한계 값은 다음의 식으로 계산된다:
글로벌 중개 한계 = (클록 빈도) X (FIFO 용량/디스크 데이터 속도) - (중개 지연) - (셋업 지연) - (판독 지연)
비록, 상기 글로벌 중개 한계값이 디스크 기록의 타이밍에 근거하여 계산된 값이기는 하나, 디스크 기록의 타이밍도 유사하며, 이에 근거하여도 유사한 결과를 얻을 수 있다.
상기와 동일한 조정은 중개 한계 값을 증가시키는 방법에도 그대로 적용될 수 있다. 이 경우, 디스크 포맷터를 이용함에 있어서 디스크 포맷터 중개 한계 값 에 글로벌 중개 한계값이 주어진 다는 점이 핵심적인 사항이다. 그러나, 디스크 포맷터 중개 한계 값에 상기 조정을 행하기 전에, 기본적인 중개 한계가 공식으로 주어진다.
디스크 포맷터 중개 한계를 계산함에 있어서, 디스크 포맷터 FIFO 312가 동시에 비워지고 채워진 다는 점이 고려되어야 한다. 바람직한 실시예에서, 디스크 포맷터 116이 접속하여 버퍼 메모리 118로부터 디스크 포맷터 FIFO 312로 데이터를 전송하는 경우, 디스크 포맷터 116이 동시에 FIFO 312의 데이터를 비워 하드디스크 114로 전송한다. 디스크 포맷터 312가 동시에 채워지고 비워지는 경우에, 채워지는 알짜 속도(net rate)는 실제로 FIFO 312로 채워지거나 FIFO 312로부터 비워지는 실제 속도와는 다르게 된다. FIFO에 데이터가 채워지는 속도는, 버퍼 데이터 속도라 불리는 바, 이 값은 HDC의 버스 폭과 클록 빈도의 곱으로 주어지는 값이다. 이로부터, 채워지는 속도는 다음의 식으로 표시될 수 있다:
채워지는 속도 = (버스 폭) X (클록 빈도) - (디스크 데이터 속도)
디스크 포맷터 FIFO 312를 채우는데 소요되는 시간은 디스크 포맷터 용량을 상기 채워지는 속도로 나눈 값으로 주어진다. 이 값을 다시, 클록 빈도와 곱하면 디스크 포맷터 FIFO 312를 채우는데 필요한 클록 사이클의 수를 얻을 수 있다.
채우는데 필요한 클록 사이클 수 = (FIFO 용량) X (클록 빈도) / ((버스용 량) X (클록빈도)- 디스크 데이터 속도))
상기에서 설명하는 디스크 포맷터 FIFO 312를 채우는데 필요한 클록사이클의 수를 계산함에 있어서는 중개, 셋업, 및 판독 지연시간이 고려되어야 한다. 그러나, FIFO 312가 채워짐에 따라, 버퍼 메모리 118의 페이지 경계(page boundary)가 교차될 가능성이 있다. 상기 페이지 경계가 교차하게 되면, 또다른 셋업 지연이 발생하게 되는 바, 이 두 번째 지연도 계산에 포함되어야 한다. 그 결과로, 디스크 포맷터 한계가 추가된 만큼 증가하여, 아래의 식으로 표시되게 된다.
디스크 포맷터 중개 한계 = (FIFO 용량) X (클록 빈도) / ((버스용량) X (클 록빈도) - 디스크 데이터 속도)) + (중개 지연)
+ 2 X (셋업 지연) + (판독 지연)
이상에서 바와 같이 디스크 포맷터 및 글로벌 중개 한계값들이 설정되면, 디스크 포맷터 116과 하드디스크 114가 최적으로 작동하게 된다. HDC 102 내의 다른 유닛들의 중개 한계들은 상기 글로벌 중개 한계 값에 의하여 제한을 받는다. 메모리 재생/디스크 포맷터 데이테 패치 유닛 304/306 및 ECC 엔진 212의 버퍼 이용 특성을 예측할 수 있게 된다. 따라서, 상기 특성들에 의하여 중개 한계 값들이 쉽게 선택되어질 수 있다. 마이크로프로세서 FIFO의 중개 한계 역시 합리적으로 예상할 수 있다. 마지막으로, 호스트 버스 인터페이스를 사용하는 것은 예측하기가 상대 적으로 어려운 바, 이는 잔여 시간들이 버스 인터페이스 110에 할당되기 때문이다.
본 발명의 또 다른 실시예에서, 글로벌 중개 한계의 범위 밖에서 둘 또는 그 이상의 유닛들에 접속 시간이 할당될 수도 있다. 또한, 글로벌 중개 한계의 범위 밖에서 접속시간이 할당된 유닛이 없을 수도 있다. 뿐만 아니라, 글로벌 중개 한계 내에서 모든 유닛들에 접속 시간이 할당되어, 글로벌 중개 한계 값 자체가 최대 접속시간이 될 수도 있으며, 또 다른 실시예에서는 글로벌 중개 한계에 의하여 제한된 유닛들의 수가 변동될 수도 있다. 그리고, 추가적인 글로벌 한계가 추가로 주어져 동시에 또는 연속적으로 작동할 수도 있다. 상술한 글로벌 중개 한계 밖에서 본 발명의 버퍼 메모리 118 또는 디스크 포맷터 116에 추가적인 유닛들이 접속되는 것이 복사되는 형태의 다른 실시예가 얼마든지 있을 수 있음은 물론이다.
본 발명의 실시예에 대하여 도면과 함께 설명하였지만, 본 발명이 이들에 한정되는 것은 아니다. 뿐만 아니라, 본 발명의 기술적 사상에서 벗어나지 않은 채로 본 발명을 다양하게 변경 또는 변화시키는 것이 가능한 바, 본 발명이 실시예에 나타난 특정의 구성이나 배열에 한정되지 않는다 할 것이다. 본 발명의 범위는 발명의 상세한 설명에 의하여 정하여지는 것이 아니고, 이하에 첨부하는 청구범위에 의하여 정하여 진다.

Claims (34)

  1. 첫 번째 일정량의 시간을 에러교정 유닛에 할당하는 단계;
    두 번째 일정량의 시간을 호스트 인터페이스 유닛에 할당하는 단계;
    상기 첫 번째 일정량의 시간을 초과하지 않는 첫 번째 지속시간 동안에, 상기 에러교정 유닛을 이용하여 버퍼 메모리에 접속하는 단계;
    상기 두 번째 일정량의 시간을 상기 첫 번째 일정량의 시간과 상기 첫 번째 지속시간의 차이에 해당하는 일정한 시간에 의하여 조정하는 단계; 및,
    상기 두 번째 일정량의 시간을 초과하지 않는 두 번째 지속시간 동안에, 상기 호스트 인터페이스 유닛을 이용하여 버퍼 메모리에 접속하는 단계를 포함하는 하드디스크 콘트롤러의 버퍼 메모리에 접속하는 방법.
  2. 제 1항에 있어서,
    세 번째 일정량의 시간을 디스크 포맷터 유닛에 할당하는 단계;
    버퍼 메모리가 상기 디스크 포맷터 유닛에 접속할 수 있도록 허용하는 단계; 및,
    상기 세 번째 일정량의 시간을 초과하지 않는 세 번째 지속시간 동안에, 상기 디스크 포맷터 유닛을 이용하여 상기 버퍼 메모리에 접속하는 단계(이때, 상기 세 번째 일정량의 시간 중 사용되지 않은 시간은 상기 호스트 인터페이스 유 닛에 할당되지 않음)를 추가로 포함하는 것을 특징으로 하는
    하드디스크 콘트롤러의 버퍼 메모리에 접속하는 방법.
  3. 제 2항에 있어서,
    상기 디스크 포맷터 유닛은, 상기 세 번째 지속시간이 종료된 후 소정의 네 번째 시간 내에, 다시 버퍼 메모리에 접속할 수 있도록 허용된 것을 특징으로 하는
    하드디스크 콘트롤러의 버퍼 메모리에 접속하는 방법.
  4. 제 1항에 있어서,
    상기 버퍼 메모리에의 접속은, 어떤 유닛도 상기 버퍼 메모리에 한번을 초과하여 접속하지 않는 반복되는 접속 사이클 중 하나의 사이클 동안에 이루어지는 것을 특징으로 하는
    하드디스크 콘트롤러의 버퍼 메모리에 접속하는 방법.
  5. 공유 콘트롤러 리소스가 중개되는 첫 번째 접속 사이클을 허용하는 단계;
    첫 번째 접속 사이클의 처음 일부를 연속된 첫 번째 접속시간 블록으로 첫 번째 접속 유닛에 할당하는 단계;
    상기 첫 번째 접속 유닛을 이용하여 상기 연속된 첫 번째 접속시간 블록의 일정량을 사용하는 단계;
    상기 첫 번째 접속 사이클의 두 번째 일부와 상기 연속된 첫 번째 접속시간 블록 중 사용되지 않은 시간을 연속된 두 번째 접속시간 블록으로 두 번째 접속 유닛에 할당하는 단계; 및,
    상기 두 번째 접속 유닛을 이용하여 상기 연속된 두 번째 접속시간 블록의 일정량을 사용하는 단계를 포함하는 대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  6. 제 5항에 있어서,
    상기 첫 번째 접속 사이클의 세 번째 일부를 연속된 세 번째 접속시간 블록으로 세 번째 접속 유닛에 할당하는 단계;
    상기 첫 번째 접속 사이클 중에 리소스가 상기 세 번째 접속 유닛에 접속할 수 있도록 허용하는 단계;
    상기 첫 번째 접속 사이클 중에 상기 세 번째 접속 유닛을 이용하여 상기 연속된 세 번째 접속시간 블록의 일정량을 사용하는 단계;
    상기 세 번째 접속 유닛을 이용하여 상기 리소스의 접속을 해제하는 단계; 및,
    상기 두 번째 접속 사이클에서 리소스가 상기 세 번째 접속 유닛에 접근할 수 있도록 허용하는 단계(이때, 상기 두 번째 접속 사이클은 상기 해제 단계 후 소정의 시간 내에 수행됨)를 추가로 포함하는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  7. 제 6항에 있어서,
    상기 접근사이클에 대응하는 지속시간을 특정시키는 단계; 및
    상기 연속된 두 번째 접속시간 블록 중 사용되지 않은 시간에 해당하는 시간만큼 상기 접속 사이클의 반복 중 최소한 하나의 지속시간을 감소시키는 단계를 추가로 포함하는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  8. 제 6항에 있어서,
    상기 공유 콘트롤러 리소스는 버퍼 메모리인 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  9. 제 6항에 있어서,
    상기 첫 번째 접속 유닛은 중앙연산처리장치이고; 및, 상기 두 번째 접속 유닛은 호스트 인터페이스 회로인 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  10. 사이클 지속시간을 갖는 접속 사이클을 제공하는 단계;
    첫 번째 일정량의 시간을 첫 번째 접속 유닛에 할당하는 단계;
    상기 첫 번째 일정량의 시간보다 길지 않은 상기 첫 번째 지속시간 동안에 상기 첫 번째 유닛을 이용하여 상기 공유 콘트롤러 리소스에 접속하는 단계; 및,
    두 번째 일정량의 시간 및 상기 첫 번째 일정량의 시간 중 사용되지 않은 시간을 두 번째 접속 유닛에 할당하는 단계를 포함하는 대용량 기억장치 콘트롤러 공유 리소스의 접속사이클(이때, 다중 유닛은 공유 콘트롤러 리소스에 중개되어 접속되어 있음)의 지속시간을 변환하는 방법.
  11. 제 10항에 있어서,
    세 번째 일정량의 시간을 세 번째의 접속 유닛에 할당하는 단계;
    상기 세 번째 일정량의 시간보다 길지 않은 상기 세 번째 지속시간 동안에 상기 세 번째 유닛을 이용하여 상기 공유 콘트롤러 리소스에 접속하는 단계; 및,
    상기 세 번째 일정량의 시간 중 사용되지 않은 시간에 해당하는 만큼 상기 접속 사이클의 지속시간을 감소시키는 단계를 추가로 포함하는
    대용량 기억장치 콘트롤러 공유 리소스의 접속사이클의 지속시간을 변환하는 방법.
  12. 제 10항에 있어서,
    상기 공유 콘트롤러 리소스는 콘트롤러 메모리인 것을 특징으로 하는
    대용량 기억장치 콘트롤러 공유 리소스의 접속사이클의 지속시간을 변환하는 방법.
  13. 제 11항에 있어서,
    상기 첫 번째 접속 유닛은 메모리 재생 회로이고; 상기 두 번째 접속 유닛은 호스트 인터페이스 회로이며; 및, 상기 세 번째 접속 유닛은 디스크 포맷터 회로인 것을 특징으로 하는
    대용량 기억장치 콘트롤러 공유 리소스의 접속사이클의 지속시간을 변환하는 방법.
  14. 일정량의 시간을 이용 가능한 메모리 접속 시간으로서 최소 둘 이상의 유닛 각각에 할당하는 단계; 및,
    상기 최소 둘 이상의 유닛을 이용하여 상기 공유 콘트롤러 메모리에 접속하는 단계(이때, 상기 최소 둘 이상의 유닛들 중 첫 번째 유닛에 할당되었으나 사용되지 않은 시간은 상기 최소한 둘 이상의 유닛들 중 두 번째 유닛에 재할당됨)를 포함하는 디스크 콘트롤러의 공유 콘트롤러 메모리에 접속하는 방법.
  15. 제 14항에 있어서,
    상기 최소한 둘 이상의 유닛들은 최소한 하나 이상의 데이터 패치 회로 및 호스트 인터페이스 회로를 포함하는 것을 특징으로 하는
    디스크 콘트롤러의 공유 콘트롤러 메모리에 접속하는 방법.
  16. 첫 번째 일정량의 시간을 첫 번째 접속 유닛에 할당하는 단계;
    두 번째 일정량의 시간을 두 번째 접속 유닛에 할당하는 단계;
    상기 첫 번째 일정량의 시간을 초과하지 않는 첫 번째 지속시간 동안에, 상기 첫 번째 유닛을 이용하여 공유 콘트롤러 리소스에 접속하는 단계;
    상기 두 번째 일정량의 시간을 상기 첫 번째 일정량의 시간과 상기 첫 번째 지속시간의 차이에 해당하는 일정한 시간에 의하여 조정하는 단계; 및,
    상기 조정된 두 번째 일정량의 시간을 초과하지 않는 두 번째 지속시간 동안에, 상기 두 번째 유닛을 이용하여 상기 공유 콘트롤러 리소스에 접속하는 단계를 포함하는 대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  17. 대용량 기억장치로부터 읽히는 데이터를 교정하는 에러교정 회로(이때, 상기 에러교정 회로는 상기 공유 메모리에 접속하기 위하여 할당된 첫 번째 일정량의 시간에 대응함);
    호스트 시스템과 데이터를 교환하는데 이용되는 호스트 시스템 인터페이스 회로(이때, 상기 호스트 시스템 인터페이스 회로는 상기 공유 메모리에 접속하기 위하여 할당된 두 번째 일정량의 시간에 대응함);
    상기 대용량 기억장치를 연결하는데 이용되는 기억장치 포맷터 회로(이때, 상기 기억장치 포맷터 회로는 상기 공유 메모리에 접속하기 위하여 할당된 세 번째 일정량의 시간에 대응함); 및,
    최소한 상기 호스트 시스템 인터페이스 회로, 상기 에러교정 회로 및 상기 기억장치 포맷터 회로가 공유 메모리에 접속되도록 중개하는 데에 이용되는 중개 회로(이때, 에러교정 회로가 상기 첫 번째 일정량의 시간을 초과하지 않는 상기 첫 번째 지속기간 내에 메모리 접속을 공유할 수 있고, 또한, 상기 첫 번째 일정량의 시간과 상기 첫 번째 지속시간 사이의 차이에 해당하는 시간으로 상기 두 번째 일정량의 시간을 조정할 수 있도록 상기 중개회로가 배열되어 있음)를 포함하며, 다중 회로들에 공유된 메모리를 구비한 대용량 기억장치 콘트롤러 회로.
  18. 제 17항에 있어서,
    상기 중개장치는, 어떠한 회로도 한번을 초과하여 공유 메모리에 접속할 수 없는 단위 접속 사이클 사이에서, 상기 공유 메모리에 접속하는 것이 허용되도록 추가로 배열된 것을 특징으로 하는
    대용량 기억장치 콘트롤러 회로.
  19. 제 17항에 있어서,
    상기 기억장치 포맷터 회로는 상기 공유 메모리에 먼저 접속한 후 소정의 시간 내에, 상기 기억장치 포맷터 회로가 상기 버퍼 메모리에 접근할 수 있도록 허용되는 것을 특징으로 하는
    대용량 기억장치 콘트롤러 회로.
  20. 제 17항에 있어서,
    상기 중개회로는 스테이트 머신(state machine)인 것을 특징으로 하는
    대용량 기억장치 콘트롤러 회로.
  21. 호스트 시스템;
    상기 호스트 시스템과 데이터를 교환하기 위하여 사용되는 것으로, 상기 호스트 시스템과 결합된 호스트 시스템 인터페이스 회로;
    대용량 기억장치로부터 읽히는 데이터의 오류를 교정하는 데에 이용되는 에러교정 회로;
    상기 대용량 기억장치로 연결하는 데에 이용되는 기억장치 포맷터 회로; 및,
    최소한 상기 호스트 시스템 인터페이스 회로, 상기 에러교정 회로 및 상기 기억장치 포맷터 회로가 버퍼 메모리에 접속되도록 중개하는 데에 이용되는 중개 회로(이때, 첫 번째 일정량의 시간을 상기 에러교정 회로에 할당하고, 두 번째 일정량의 시간을 상기 호스트 인터페이스 회로에 할당하며, 세 번째 일정량의 시간을 상기 기억장치 포맷터 회로에 할당하도록 상기 중개회로가 배열되어 있고; 및, 상기 에러교정 회로가 상기 첫 번째 일정량의 시간을 초과하지 않는 상기 첫 번째 지속시간 내에 접속할 수 있고, 또한, 상기 첫 번째 일정량의 시간과 상기 첫 번째 지속시간 사이의 차이에 해당하는 시간으로 상기 두 번째 일정량의 시간을 조정할 수 있도록 상기 중개회로가 추가로 배열되어 있음)를 포함하는 컴퓨터 시스템.
  22. 제 21항에 있어서,
    상기 중개회로가, 어떠한 회로도 한번을 초과하여 공유 콘트롤러 리소스에 접속할 수 없는 단위 접속 사이클 사이에, 상기 공유 메모리에 접속하는 것이 허용되도록 추가로 배열된 것을 특징으로 하는
    컴퓨터 시스템.
  23. 데이터를 일시보관하기 위한 수단;
    상기 데이터를 일시 보관하기 위한 수단과 결합되어 있으며, 호스트 시스템과 데이터를 교환할 수 있는 수단;
    상기 데이터를 일시 보관하기 위한 수단에 결합되어 있는 데이터 처리 수단;
    상기 데이터를 일시 보관하기 위한 수단에 결합되어 있으며, 대용량 기억장치와 데이터를 교환할 수 있는 수단; 및,
    최소한 상기 호스트 시스템과 데이터를 교환할 수 있는 수단, 상기 데이터 처리 수단 및 대용량 기억장치와 데이터를 교환할 수 있는 수단이 상기 데이터를 일시 보관하기 위한 수단에 접속하는 것을 중개하는 수단(이때, 첫 번째 일정량의 시간을 상기 데이터 처리 수단에 할당하고, 두 번째 일정량의 시간을 상기 호스트 시스템과 데이터를 교환할 수 있는 수단에 할당하며, 세 번째 일정량의 시간을 상기 대용량 기억장치와 데이터를 교환할 수 있는 수단에 할당하도록 상기 중개회로가 배열되어 있고; 및, 상기 데이터 처리수단이 상기 첫 번째 일정량의 시간을 초과하지 않는 상기 첫 번째 지속시간 내에 접속할 수 있고, 또한, 상기 첫 번째 일정량의 시간과 상기 첫 번째 지속시간 사이의 차이에 해당하는 시간으로 상기 두 번째 일정량의 시간을 조정할 수 있도록 상기 중개회로가 추가로 배열되어 있음)를 포함하는 대용량 기억장치 콘트롤러.
  24. 제 23항에 있어서,
    상기 접속을 중개하는 수단은, 어떠한 접속수단도 한번을 초과하여 상기 데이터를 일시 보관하기 위한 수단에 접속할 수 없는 단위 접속 사이클 중에, 상기 데이터를 일시 보관하기 위한 수단에 접속하는 것이 허용되도록 추가로 배열된 것을 특징으로 하는
    대용량 기억장치 콘트롤러.
  25. 첫 번째 일정량의 시간을 첫 번째 사용 가능한 접속시간으로 첫 번째 접속 유닛에 할당하는 단계;
    두 번째 일정량의 시간을 두 번째 사용 가능한 접속시간으로 하여 두 번째 접속 유닛에 할당하는 단계(이때, 두 번째 사용 가능한 접속시간은 최소한 상기 첫 번째 사용 가능한 접속시간을 포함함);
    상기 첫 번째 사용 가능한 접속시간을 초과하지 않는 첫 번째 지속시간 동안에, 상기 첫 번째 유닛을 이용하여 상기 공유 콘트롤러 리소스에 접속하는 단계;
    상기 첫 번째 지속시간에 만큼 상기 두 번째 사용 가능한 접속시간을 감소시키는 단계; 및,
    상기 감소된 두 번째 사용 가능한 접속시간을 초과하지 않는 두 번째 지속시간 동안에, 상기 두 번째 유닛을 이용하여 공유 콘트롤러 리소스에 접속하는 단계를 포함하는 대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  26. 제 25항에 있어서,
    세 번째 일정량의 시간을 세 번째 사용 가능한 접속시간으로 하여 세 번째 접속 유닛에 할당하는 단계; 및,
    상기 세 번째 사용 가능한 접속시간을 초과하지 않는 세 번째 지속시간 동안에, 상기 세 번째 유닛을 이용하여 공유 콘트롤러 리소스에 접속하는 단계를 추가로 포함하는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  27. 제 25항에 있어서,
    상기 공유 콘트롤러 리소스에 접속은, 어떠한 유닛도 한번을 초과하여 공유 콘트롤러 리소스에 접속할 수 없는 단위 접속 사이클 중에 허용되는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  28. 제 26항에 있어서,
    상기 접속 사이클의 최대 지속시간은 상기 두 번째 일정량의 시간과 상기 세 번째 일정량의 시간의 합과 근사치인 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  29. 제 26항에 있어서,
    상기 세 번째 유닛은, 데이터가 상기 공유 콘트롤러 리소스와 상기 세 번째 접속 유닛 사이를 오갈 때 데이터를 통과하는 데이터 버퍼를 구비한 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  30. 제 26항에 있어서,
    상기 세 번째 일정량의 시간은, 최소한 부분적이라도, 상기 데이터 버퍼의 용량; 및, 상기 공유 콘트롤러 리소스와 상기 데이터 버퍼 사이에서 데이터가 전송되는 속도와 상기 세 번째 접속 유닛에 의하여 데이터가 처리되는 속도의 차이에 의하여 정하여지는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  31. 제 26항에 있어서,
    상기 두 번째 일정량의 시간은, 최소한 부분적이라도, 상기 데이터 버퍼의 용량; 및, 상기 세 번째 접속 유닛에 의하여 데이터가 처리되는 속도에 의하여 정하여지는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  32. 제 26항에 있어서,
    상기 두 번째 및 세 번째 일정량의 시간은, 접속 유닛에 의한 접속을 해제하는 경우, 상기 공유 콘트롤러 리소스와 상기 데이터 버퍼 사이에서 전송을 개시하는데 필요한 시간의 양을 최소한 부분적이라도 고려하여 정하여지는 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  33. 제 26항에 있어서,
    상기 두 번째 유닛은 호스트 인터페이스 유닛이고; 및, 상기 세 번째 유닛은 기억장치 포맷터 유닛인 것을 특징으로 하는
    대용량 기억장치 콘트롤러의 공유 콘트롤러 리소스에 접속하는 방법.
  34. 상응하는 첫 번째로 할당된 접속 지속시간을 갖는 첫 번째 콘트롤러 회로;
    상응하는 두 번째로 할당된 접속 지속시간을 갖는 두 번째 콘트롤러 회로; 및,
    상기 첫 번째 콘트롤러 회로에 의한 실제적인 접속시간에 상응하는 시간을 측정하고, 상기 첫 번째 할당된 접속 지속시간과 상기 실제적인 접속 지속시간의 차이에 대응하는 시간으로 상기 두 번째 일정량의 시간을 조정하는 중개회로를 포함하는, 복수의 디스크 콘트롤러 회로에 의하여 접속되는 메모리를 구비한 디스크 콘트롤러 회로.
KR1020017012114A 1999-03-24 2000-03-23 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템 KR100619806B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/275,629 1999-03-24
US09/275,629 US6530000B1 (en) 1999-03-24 1999-03-24 Methods and systems for arbitrating access to a disk controller buffer memory by allocating various amounts of times to different accessing units

Publications (2)

Publication Number Publication Date
KR20010110679A KR20010110679A (ko) 2001-12-13
KR100619806B1 true KR100619806B1 (ko) 2006-09-13

Family

ID=23053180

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017012114A KR100619806B1 (ko) 1999-03-24 2000-03-23 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템

Country Status (9)

Country Link
US (1) US6530000B1 (ko)
EP (1) EP1163573B1 (ko)
JP (1) JP4313516B2 (ko)
KR (1) KR100619806B1 (ko)
AT (1) ATE368885T1 (ko)
AU (1) AU3915300A (ko)
CA (1) CA2364625C (ko)
DE (1) DE60035774T2 (ko)
WO (1) WO2000057267A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6715009B1 (en) * 1999-12-21 2004-03-30 Intel Corporation Method and apparatus for coordinating cooperating resources and its application
US7406547B2 (en) * 2000-08-09 2008-07-29 Seagate Technology Llc Sequential vectored buffer management
US6763437B1 (en) * 2000-09-07 2004-07-13 Maxtor Corporation Control system, storage device and method for controlling access to a shared memory using a bus control or handshaking protocol
JP4213338B2 (ja) * 2000-12-22 2009-01-21 富士通マイクロエレクトロニクス株式会社 リアルタイムレコーディングシステム及びリアルタイムレコーディング方法
US7007114B1 (en) * 2003-01-31 2006-02-28 Qlogic Corporation System and method for padding data blocks and/or removing padding from data blocks in storage controllers
US7492545B1 (en) 2003-03-10 2009-02-17 Marvell International Ltd. Method and system for automatic time base adjustment for disk drive servo controllers
US7099963B2 (en) * 2003-03-10 2006-08-29 Qlogic Corporation Method and system for monitoring embedded disk controller components
US7039771B1 (en) 2003-03-10 2006-05-02 Marvell International Ltd. Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers
US7457903B2 (en) * 2003-03-10 2008-11-25 Marvell International Ltd. Interrupt controller for processing fast and regular interrupts
US7870346B2 (en) * 2003-03-10 2011-01-11 Marvell International Ltd. Servo controller interface module for embedded disk controllers
US7206922B1 (en) * 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US7139150B2 (en) * 2004-02-10 2006-11-21 Marvell International Ltd. Method and system for head position control in embedded disk drive controllers
US7120084B2 (en) * 2004-06-14 2006-10-10 Marvell International Ltd. Integrated memory controller
US8166217B2 (en) * 2004-06-28 2012-04-24 Marvell International Ltd. System and method for reading and writing data using storage controllers
US9201599B2 (en) * 2004-07-19 2015-12-01 Marvell International Ltd. System and method for transmitting data in storage controllers
US7757009B2 (en) 2004-07-19 2010-07-13 Marvell International Ltd. Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device
US8032674B2 (en) * 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
US7386661B2 (en) 2004-10-13 2008-06-10 Marvell International Ltd. Power save module for storage controllers
US7240267B2 (en) 2004-11-08 2007-07-03 Marvell International Ltd. System and method for conducting BIST operations
US7802026B2 (en) * 2004-11-15 2010-09-21 Marvell International Ltd. Method and system for processing frames in storage controllers
US7609468B2 (en) 2005-04-06 2009-10-27 Marvell International Ltd. Method and system for read gate timing control for storage controllers
JP2006301810A (ja) * 2005-04-18 2006-11-02 Fujitsu Ltd データ転送処理方法、データ転送処理装置およびデータ転送処理制御プログラム
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
WO2010045445A2 (en) 2008-10-15 2010-04-22 Marvell World Trade Ltd. Architecture for data storage systems
CN102385555B (zh) * 2010-08-27 2015-03-04 深圳市朗科科技股份有限公司 一种缓存系统和数据缓存的方法
US9268649B1 (en) * 2011-06-23 2016-02-23 Western Digital Technologies, Inc. Disk drive with recent write streams list for data refresh determination
US20130132621A1 (en) * 2011-11-23 2013-05-23 Ankit Sihare Method and apparatus to share hardware resources across storage controllers within a system using resource sharing module
US9886209B2 (en) * 2016-02-16 2018-02-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling file placement on a disk drive to improve file access

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4000485A (en) 1975-06-30 1976-12-28 Honeywell Information Systems, Inc. Data processing system providing locked operation of shared resources
US4558429A (en) 1981-12-17 1985-12-10 Honeywell Information Systems Inc. Pause apparatus for a memory controller with interleaved queuing apparatus
US5276807A (en) 1987-04-13 1994-01-04 Emulex Corporation Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking
US5193197A (en) 1987-09-24 1993-03-09 Digital Equipment Corporation Apparatus and method for distributed dynamic priority arbitration for access to a shared resource
US5072420A (en) 1989-03-16 1991-12-10 Western Digital Corporation FIFO control architecture and method for buffer memory access arbitration
US5506989A (en) 1990-01-31 1996-04-09 Ibm Corporation Arbitration system limiting high priority successive grants
US5249271A (en) 1990-06-04 1993-09-28 Emulex Corporation Buffer memory data flow controller
US5301333A (en) 1990-06-14 1994-04-05 Bell Communications Research, Inc. Tree structured variable priority arbitration implementing a round-robin scheduling policy
JP2703668B2 (ja) 1991-03-18 1998-01-26 株式会社日立製作所 データ転送制御装置および磁気ディスク制御装置
EP0543560B1 (en) 1991-11-19 1999-12-22 Sun Microsystems, Inc. Arbitrating multiprocessor accesses to shared resources
CA2080608A1 (en) 1992-01-02 1993-07-03 Nader Amini Bus control logic for computer system having dual bus architecture
US5408644A (en) 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5524268A (en) 1992-06-26 1996-06-04 Cirrus Logic, Inc. Flexible processor-driven control of SCSI buses utilizing tags appended to data bytes to determine SCSI-protocol phases
US5276662A (en) * 1992-10-01 1994-01-04 Seagate Technology, Inc. Disc drive with improved data transfer management apparatus
US5546548A (en) 1993-03-31 1996-08-13 Intel Corporation Arbiter and arbitration process for a dynamic and flexible prioritization
US5465343A (en) * 1993-04-30 1995-11-07 Quantum Corporation Shared memory array for data block and control program storage in disk drive
US5487170A (en) 1993-12-16 1996-01-23 International Business Machines Corporation Data processing system having dynamic priority task scheduling capabilities
JPH07244635A (ja) 1994-01-14 1995-09-19 Fujitsu Ltd バス使用権調停回路及び方法
US5574867A (en) 1994-07-08 1996-11-12 Intel Corporation Fast first-come first served arbitration method
US5519837A (en) 1994-07-29 1996-05-21 International Business Machines Corporation Pseudo-round-robin arbitration for a shared resource system providing fairness and high throughput
US5881313A (en) 1994-11-07 1999-03-09 Digital Equipment Corporation Arbitration system based on requester class and relative priority including transmit descriptor valid bit for a shared resource having multiple requesters
US5546545A (en) 1994-12-09 1996-08-13 International Business Machines Corporation Rotating priority selection logic circuit
US5623672A (en) 1994-12-23 1997-04-22 Cirrus Logic, Inc. Arrangement and method of arbitration for a resource with shared user request signals and dynamic priority assignment
WO1996035173A1 (en) 1995-05-03 1996-11-07 Apple Computer, Inc. Arbitration of computer resource access requests
US5664121A (en) 1995-11-07 1997-09-02 Sun Microsystems, Inc. Dual mode arbitration apparatus and method for reducing latency by allowing the possibility of simultaneous request and access for a shared bus
US5692135A (en) 1995-12-14 1997-11-25 International Business Machines Corporation Method and system for performing an asymmetric bus arbitration protocol within a data processing system
US5784569A (en) 1996-09-23 1998-07-21 Silicon Graphics, Inc. Guaranteed bandwidth allocation method in a computer system for input/output data transfers
US6178486B1 (en) * 1998-02-19 2001-01-23 Quantum Corporation Time allocation shared memory arbitration for disk drive controller

Also Published As

Publication number Publication date
WO2000057267A1 (en) 2000-09-28
JP2002540499A (ja) 2002-11-26
JP4313516B2 (ja) 2009-08-12
EP1163573A1 (en) 2001-12-19
CA2364625C (en) 2012-08-07
AU3915300A (en) 2000-10-09
CA2364625A1 (en) 2000-09-28
US6530000B1 (en) 2003-03-04
DE60035774D1 (de) 2007-09-13
ATE368885T1 (de) 2007-08-15
DE60035774T2 (de) 2007-12-06
EP1163573B1 (en) 2007-08-01
KR20010110679A (ko) 2001-12-13

Similar Documents

Publication Publication Date Title
KR100619806B1 (ko) 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템
US6401149B1 (en) Methods for context switching within a disk controller
TWI382308B (zh) 供具有記憶體請求緩衝器之一記憶體系統用之緩衝器控制系統及方法
US6330626B1 (en) Systems and methods for a disk controller memory architecture
EP1754229B1 (en) System and method for improving performance in computer memory systems supporting multiple memory access latencies
US7543114B2 (en) System and controller with reduced bus utilization time
US20180113614A1 (en) Direct data move between dram and storage on a memory module
KR20100077026A (ko) 직렬 인터페이스 nand
US5506968A (en) Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
WO1996032674A2 (en) Semiconductor memory device for mass storage block access applications
US5813024A (en) Disk control method for use with a data storage apparatus having multiple disks
US20060107003A1 (en) Separate handling of read and write of read-modify-write
TW202102974A (zh) 主機輸出入命令的執行裝置及方法及電腦程式產品
US20210096985A1 (en) Memory controller and storage device including the same
EP1513071B1 (en) Memory bandwidth control device
US7127530B2 (en) Command issuing apparatus for high-speed serial interface
US20090119429A1 (en) Semiconductor integrated circuit
US11899947B2 (en) Storage device, storage system, and operating method thereof capable of dynamically allocating write blocks to a stream
JP2017097466A (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
KR102088944B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US20050097272A1 (en) Disk array device and control method of disk array device
EP1188106A1 (en) Systems and methods for a disk controller memory architecture
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
US8402233B2 (en) Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems
US20010002481A1 (en) Data access unit and method therefor

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: 20120808

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130812

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140807

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150807

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160811

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170814

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180810

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190812

Year of fee payment: 14