KR950010944B1 - 분할 가능한 버퍼메모리의 관리방법 및 장치 - Google Patents
분할 가능한 버퍼메모리의 관리방법 및 장치 Download PDFInfo
- Publication number
- KR950010944B1 KR950010944B1 KR1019920014677A KR920014677A KR950010944B1 KR 950010944 B1 KR950010944 B1 KR 950010944B1 KR 1019920014677 A KR1019920014677 A KR 1019920014677A KR 920014677 A KR920014677 A KR 920014677A KR 950010944 B1 KR950010944 B1 KR 950010944B1
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- register
- data blocks
- data
- addresses
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Transfer Systems (AREA)
Abstract
내용 없음.
Description
제 1 도는 본 발명이 레디(ready) 용도에 적용된 디스크 제어장치를 나타낸 개통도.
제2a도~제2h도는 본 발명의 동작의 이해를 돕기 위한 개략도.
본 발명은 버퍼 메모리에 관한 것이며, 디스크 드라이브와 1 이상의 호스트(host)와 같은 장치들간의 데이타 인터페이스에 설치되는 유형의 버퍼 메모리로서, 분할 사용이 가능한 버퍼 메모리의 관리방법 및 장치에 관한 것이다.
인터페이스는 통상, 2 이상의 데이타장치간에 설치되어, 하나의 장치로부터 독출된 데이타가 다른 장치로 공급되는 것을 가능하게 한다. 이러한 인터페이스는 통상적으로, 데이타 기억장치와 데이타 처리장치간에 설치되며, 전자의 일예는 디스크 기억장치이고, 후자의 일예는 호스트 컴퓨터이다.
디스크 드라이브로도 알려진 디스크 기억장치와 주컴퓨터간의 대표적 인터페이스는, 스몰 컴퓨터 시스템 인터페이스(Small Computer System Interface : SCSI)이다.
통상, 인터페이스는, 상기 호스트의 억세스 요구에 응답하여, 디스크 드라이브로부터 돌출된 데이타를 기억하기 위한 버퍼 메모리와 같은, 임시 메모리를 구비하고 있다.
이 버퍼 메모리는, 번지지정 가능한 장소를 구비하고 있고, 데이타는 "블록"에 기억되며 여기서, 데이타 블록 각각은, 다양한 통상의 프로토콜과 합치되는 소정의 바이트수로 구성돼 있다. 제어장치는 버퍼 메모리와 협조하고, 특정 메모리 번지를, 상기 디스크 드라이브에 대해 독출 또는 기입되고 상기 호스트에 전송되거나, 또는 호스트로 전송된 각각의 데이타블록들에 대해 특정의 메모리 번지를 할당하도록 동작한다.
상기 제어장치는, 상기 버퍼번지들의 트랙을 유휴상태로, 또한 사용상태로 유지시킨다.
상기 제어장치는 또한, 상기 호스트에 의해서 상기 디스크 드라이브로부터 호출되어 상기 호스트에 전송되거나, 또는 전송을 대기하고 있는, 데이타블록의 트랙을 유지한다.
통상의 "데이타 독출"동작중에는 상기 디스크 드라이브로부터 데이타블록이 독출되어, 상기 버퍼 메모리내에 일시적으로 기억된후, 호스트에 전송되며, 상기 호스트는 상기 블록들 다수로 구성된 일련의 데이타블록들을 호출한다.
상기 호스트에 의해서 호출되는 특정 데이타블록들을 검색하는 이외에, 상기 제어장치가, 호출이 특정된 것은 아니지만 요구된 데이타블록들과 근사하고, 따라서 후속의 독출동작에서 호출될 것으로 마땅히 예상되는, 소정의 데이타블록들을 "프리페치(prefetch)"하는 동작을 행한다. 통상, 상기 제어장치에 의해 프리페치된 것들 뿐만 아니라 상기 호스트에 의해 호출된 데이타블록들이, 일련의 버퍼번지들에 기억된다. 즉, 일정기간 경과후에, 즉, 수회의 독출 동작후에, 상당수의 데이타블록이 버퍼 메모리에 기억되나, 호스트에는 전송되지 않을 수 있음이 인정된다. 예를들어, 인터럽션(interruption)들과 호스트에 의해 실행되는 다른 작업 때문에, 특정적으로 호출된 약간의 데이타블록들이 아직 독출안된 상태일 수 있다. 다른 예로서는, 상기 제어장치에 의해서 프리페치된, 다수의 데이타블록들이 요구되지 않아서, 호스트에 의해서 회수안될 수가 있다. 결과적으로, 유용한 번지(즉, 회수된 데이타블록들을 함유한 번지)가 산재된 상태로, 수개의 점유된 번지(즉, 호스트에 의해서 회수안된 데이타블록들을 함유하는 번지)를 갖게 된다. 그러나, 상기 디스크 드라이브로부터 새로운 일련의 데이타블록이 독출되거나, 또는 프리페치되면, 통상의 버퍼 메모리와 메모리 제어장치는, 연속된 번지들에 기억된 데이타블록들을 필요로 한다. 즉, 상기와 같은 데이타블록들은 후속의 번지지정 가능한 장소에 기억돼야 하고, 다른 유용한 무작위적 번지에 기억될 수 없다.
상기 디스크 드라이브로부터 독출돼야 하는 데이타블록의 수가, 이들 데이타블록들을 기억하는데 유용한 후속의 버퍼번지수를 초과하면, 제어장치가 동작하여, 상기 버퍼내에 기억된 데이타블록을 제거하든지, 또는, 현재 상기 호스트에 의해 호출된 새로운 데이타블록들로 치환할 것인지 여부를 결정한다. 이러한 결정은, 본 기술분야에 통상의 지식을 가진자에게 알려진 소정의 치환 알고리즘에 따라서 행하여진다.
따라서, 상기 호스트에 전송되지 않을 데이타블록들은 제거된다. 그러나, 상기 버퍼의 기억용량의 한계 때문에, 상기 디스크 드라이브로부터 독출된 새로운 데이타블록을 버퍼가 수용할 수 있도록 간단히 제거되는 다수의 데이타블록들이 보유돼 있어야 한다.
결과적으로, 상기 호스트에 의해 회수안된 유용한 데이타블록들은 새로운 데이타로 치환되고 ; 치환된 데이타는 상실된다.
제거된 데이타블록을 상기 호스트에 공급해줄 필요가 있는 경우, 새로운 데이타 독출 동작이 실행돼야 하고, 후속 번지에 데이타블록을 기억시킬 필요 때문에, 새로운 데이타블록이 아직 회수안된 데이타블록을 치환하는 상기와 같은 문제점이 반복된다.
호스트에 의해 호출되거나, 또는 버퍼 제어부에 의해 프리페치된 일련의 데이타블록이 버퍼 메모리의 일련의 기억될 필요가 없는 경우, 버퍼 메모리의 효율적 사용이 향상될 수 있다. 일련의 데이타블록이 예비기억 되었으나, 아직 회수안된 데이타블록을 구비한 버퍼내에 산포될 수 있는 경우, 유용한 데이타를 새로운 데이타로써 치환하는 상기 문제점을 실질상 피할 수 있다.
그러나, 현재까지는 상기 버퍼 메모리의 상기 분할이 가능하게 버퍼 제어부를 동작시키는 시도는 복잡화되고, 비용이 높아지는 것으로 판단되었다.
상기 버퍼 제어부에서 통상 사용되는 마이크로 프로세서의 구체적 설계도 마찬가지로, 복잡화되고, 통상의 마이크로 프로세서의 동작 용량을 초과하기도 하는 것으로 판단됐다.
따라서, 종래기술의 버퍼 메모리에서, 버퍼 분할이 현재까지는 허용되거나 또는 실현된 바 없다.
그러므로, 본 발명의 한 목적은, 버퍼 메모리의 분할을 허용하며, 종래 기술의 버퍼 관리 구성의 상기 문제들과 곤란점들을 배제한, 개량된 기술을 제공하는데 있다.
본 발명의 다른 목적은, 데이타장치들과 통신하는 버퍼 메모리를 그 이용효율이 최대가 되게 관리하는 기술을 제공하는데 있다.
본 발명의 또다른 목적은, 데이타장치들간의 인터페이스내의 버퍼 메모리를 관리하는데 있어서 예정돼 있으나 상기 장치들중 하나에 의해 아직 회수안된 데이타를 중복기입할 위험을 최소화하는데 있다.
본 발명의 다른 목적, 장점 및 특징은, 하기의 상세한 설명으로부터 명백하게 이해할 수 있으며, 신규한 특징들은 청구범위에 특정될 것이다.
본 발명에 의하면, 버퍼 메모리는, 상기 제 1 과 제 2 데이타장치와 통신하도록 관리되며, 상기 제 1 장치로부터의 일련의 데이타블록이, 메모리의 유용한 장소에 기억되나, 이 장소가 반드시 순차적이고, 번지지정 가능한 것은 아니다. 최근 일련의 데이타블록이 기입되는 버퍼번지들의 서열순으로된 번지목록이, 레지스터 장소를 갖는 목록 레지스터에 생성된다.
상기 메모리로부터 상기 제 2 장치로 독출되는 상기 일련의 제 1 데이타블록의 버퍼번지가 기억되는 레지스터 장소가 표시되고, 상기 일련내에 잔존하는 데이타블록들을 기억하는 버퍼번지를 함유하는 서열 목록내의 레지스터 장소들이 계속적으로 표시됨으로써, 상기 번지로부터 데이타블록 시리즈를 상기 제 2 장치로 독출한다.
본 발명의 한 특징으로서, 버퍼 제어부가 동작하여, 데이타블록을 기억하기 위해 선택된 (반드시 순차적은 아님)버퍼번지를 할당하며, 할당된 번지들은, 상기 목록 레지스터의 장소들에 로드(load)된다.
상기 장소들로부터의 번지들이 독출되고, 상기 목록 레지스터로부터 독출된 각 번지로, 각각의 데이타블록이 기입된다. 일련의 레지스터 장소들을 억세스하여, 그 내부의 버퍼번지를 검색함으로써, 상기 버퍼로부터 데이타가 상기 제 2 장치로 전달되고, 상기 회수된 버퍼번지들에 기억된 데이타블록들이 상기 제 2 장치로 독출된다.
본 발명의 일태양에 의하면, 일련의 데이타블록중의 첫째 데이타블록에 할당된 버퍼번지가 기억되는 레지스터 장소에 제 1 포인터가 세트되고, 상기 포인터가 후속의 레지스터 장소로 전진함으로써, 상기 데이타블록들이 기입되는 버퍼번지들을 독출한다.
제 2 포인터 또한, 상기 제 1 장치로부터 독출된 데이타블록들중 첫째 데이타블록에 할당된 버퍼번지가 기억되는 레지스터 장소에 세트되고 ; 상기 제 2 포인터는, 일련의 레지스터 장소들을 통하여 전진하여, 그 내부에 기억된 버퍼번지들을 검색한다. 각각의 검색된 버퍼번지내에 기억된 데이타블록은, 상기 제 2 장치로 전달된다.
본 발명의 다른 태양에 의하면, 상기 제 1 포인터가 통과전진하는, 목록 레지스터의 일련의 레지스터 장소의 수는, 상기 제 2 포인터가 통과전진하는 레지스터 장소의 수와 다르다. 따라서, 상기 제 1 포인터는 전진하여, 상기 제 2 장치에 의해 호출된 데이타블록과, 상기 제어부에 의해 프리페치된 데이타블록이 기입되는 번지들을 확인하는 한편 ; 상기 제 2 포인터는 전진하여, 호스트에 의해 특정적으로 호출된 데이타블록이 기억되는 번지들을 검색하기만 한다.
양호실시예들을 첨부 도면을 참조하여 상세히 설명한다.
제 1 도를 참조해 보면, 디스크 제어부(40)가 데이타장치(10)과 (12)간에 통신되도록 설치돼 있다.
설명 편의의 목적상, 데이타장치(10)는, 본 기술분야의 통상의 지식을 가진자에게 통례적인, 데이타블록 형태로 데이타가 기록되는 1 이상의 하드디스크등의 디스크 기억장치로서 도시돼 있고, 데이타장치(12)는, 디스크(10)에 대해 데이타를 기입 및 독출하기 위한 호스트로서 도시돼 있다.
통상적으로, 호스트(12)는, 통상의 마이크로 컴퓨터등의 컴퓨터를 포함하고 있다. 디스크 제어부(40)를 통하여 하드디스크(10)와 호스트(12)간에서 데이타가 전송된다.
상기 디스크 제어부(40)는, 개통도를 도시된, 버퍼 메모리(14), 버퍼 제어부(16) 및 기타 장치들을 갖고 있다. 디스크 버스라고 하는 버스(11)에 의해서, 디스크 제어부(40)와 하드디스크(10)간에서 데이타가 통신되며 ; 호스트 버스라고 하는 버스(13)에 의해서 호스트(12)와 디스크 제어부(40)간에서 데이타가 통신된다. 상기 호스트 버스는 통상의 SCSI버스일 수 있다. 상기 설명한 바와 같이, 하드디스크(10), 호스트(12), 디스크 제어부(40) 및 버스들(11, 13)은 종래의 것이다.
버퍼 메모리(14)는, 하드디스크(10)로부터 수신된 데이타블록 또는 호스트(12)로부터 수신된 데이타블록들을, 버퍼 메모리의 번지 지정가능한 장소에 기입하도록 채용된 버퍼기입부(18)에 결합돼 있다. 제 1 도를 간략히 하기 위해서, 버퍼 기입부(18)는 호스트 버스(13)에도 결합되나, 디스크 버스(11)에만 결합된 것으로 도시돼 있다.
이와 유사하게, 버퍼 메모리(14)는, 이 버퍼 메모리내의 기억된 데이타블록을 독출하여, 이 데이타블록들을 호스트(12) 또는 하드디스크(10)에 전송하도록 채용된 버퍼 독출부(20)에 결합돼 있다. 편의상, 상기 버퍼 독출부가 호스트 버스(13)에만 결합되는 것으로 도시돼 있으나, 디스크 버스(11)에도 결합돼 있다.
제어부(16)는, 버퍼 기입부(18)와 버퍼 독출부(20)에 결합돼 있고, 버퍼 메모리(14)의 번지들을, 데이타 블록이 기입되는 것과, 데이타블록이 독출되는 것으로 할당하도록 채용돼 있다. 통상과 같이, 제어부(16)는 종래의 마이크로 프로세서를 포함하며, 데이타블록을 기입하고 또한 데이타블록을 독출하는 버퍼 메모리들을 트랙시켜줄 뿐만 아니라 데이타블록들을 식별해준다.
통상의 독출동작에서, 호스트(12)에 의해 호출된 데이타블록들은 하드디스크(10)로부터 판독되어, 데이타블록들을 기억하도록 어드레스들을 미리 할당해주는 제어부(16)의 제어하에서 버퍼 기입부(18)에 의해 버퍼메모리(14)의 어드레스내에 기입된다. 디스크로부터 독출된 하나 이상의 데이타블록들이 버퍼 메모리내에 기억된 버퍼 독출부(20)는 제어부(16)의 제어하에 미리 할당된 어드레스들로부터 데이타블록들을 독출한다. 독출된 데이타블록들은 호스트 버스(13)를 통해 호스트(12)로 전송한다. 통상의 기입동작은 현재 데이타블록들이 호스트(12)로부터 버퍼 메모리(14)로 흐른 다음 버퍼 메모리로부터 하드디스크(10)로 흐르는 것을 제외하고는 동일방식으로 기능을 한다.
본 발명의 특징에 의하면, 기입 또는 독출할 버퍼 어드레스의 순서 목록을 작성하기 위해 목록 레지스터(22)가 구비된다.
이 목록은 제 2 도와 관련하여 이하에 상세히 설명한다. 목록 레지스터(22)는 복수의 레지스터 장소들로 구성되며, 각 장소마다 버퍼 어드레스가 기억된다.
디스크 포인터(disc pointer)(24)는 식별된 장치에 기억된 버퍼 어드레스를 독출하기 위해 목록 레지스터(22)의 레지스터 장소를 지정하거나 또는 식별하도록 채용된다.
이하에 기술되는 바와같이, 데이타블록은 디스크 포인터에 의해 목록 레지스터로부터 독출된 어드레스내에 기입된다. 세트(set)회로(28)는 제어부(16)에 의해 결정된 바와같은 선택된 레지스터 장소로 디스크 포인터를 설정하는 기능을 한다.
어드반스(advance)회로(30)는 하기에 기술하는 바와같이 디스크 포인터를 연속하는 레지스터 장소로 전진시키는 기능을 한다. 디스크 포인터(24)에 의해 식별된 레지스터 장소로부터 독출된 특정 어드레스는 버퍼 기입부(18)로 공급되며 그에 의해 하드디스크(10)로부터 독출된 데이타블록이 기입될 어드레스를 설정한다.
동일한 방식으로, 호스트 포인터(26)는 목록 레지스터(22)에 결합되며, 버퍼 어드레스가 독출되는 레지스터 장소를 지정 또는 식별하는 기능을 한다. 이 버퍼 어드레스는 버퍼 독출부(20)에 의해 데이타블록이 독출되는 버퍼 메모리의 어드레스를 설정하기 위해 채용된다. 세트회로(32)는 호스트 포인터(26)를 특정 레지스터 장소로 세트하도록 제어부(16)에 의해 제어된다. 하기에 기술하는 바와같이, 이 레지스터 장소는 통상적으로 디스크(10)로부터 호스트(12)에 의해 일련으로 호출되는 제 1 데이타블록을 내장하는 버퍼 어드레스를 기억하는 장소이다.
어드반스회로(34)는 호스트 포인터를 연속하는 레지스터 장소들로 전진시킴으로써 그 장소들에 기억된 버퍼 어드레스들은 독출하여 이들 어드레스들에 기입된 데이타블록들을 호스트(12)에 전송하도록 채용된다.
카운터(19)는 완전한 데이타블록이 기입될때, 어드반스회로(30)를 트리거하도록 버퍼 기입부(18)에 의해 버퍼 메모리(14)내에 기입된 바이트수를 카운트한다. 디스크 트랜스퍼(transfet) 블록 카운터(25)는 제어부(16)의 제어하에 세트회로(21)에 의해 디스크(10)로부터 독출되고 버퍼 메모리내에 기입될 데이타블록들의 수와 동일한 카운트로 세트된다. 카운터(19)가 완전한 데이타블록을 검출할때, 증/감회로(23)는 디스크 트랜스퍼 블록 카운터의 카운트를 감소시키도록 트리거된다.
이 카운트는 전시리즈의 데이타블록들이 버퍼 메모리(14)내에 기입됐을때 0의 카운트로 감소됨을 알 수 있을 것이다.
동일한 방식으로, 카운터(29), 세트회로(31), 호스트 트랜스퍼 블록 카운터(35) 및 증/감회로(33)는 버퍼 메모리로부터 호스트(12)로 데이타블록들의 전송을 모니터하고 또한 호스트에 의해 호출된 일련의 데이타블록들이 그와같이 전송됐을때를 검출하도록 모니터한다.
디스크콘트롤부(40)가 예를들어 하드디스크(10)로부터 호스트(12)로 데이타를 전송하도록 동작하는 방식에 대해 제2a도-제2h도를 참조하여 이후 상세히 설명한다. 간단히 말해, 일련의 데이타블록들이 호스트(12)에 의해 하드디스크(10)로부터 독출되도록 호출되면, 우선 제어부(16)는 이들 각 데이타블록들에 버퍼 어드레스들을 할당한다. 버퍼 메모리(14)가 채워지면, 할당된 어드레스들은 반드시 버퍼 메모리의 순차 어드레스들일 필요가 없음을 알 수 있다.
호스트(12)에 의해 호출된 데이타블록들에 버퍼 어드레스들을 할당한후, 할당된 어드레스들이 기입되는 목록 레지스터(22)내에서 연속하는 장소들을 선택한다.
세트회로(28)는 디스크 포인터(24)를 이 레지스터 장소들의 처음으로 세트하도록 제어부(16)에 의해 제어되며, 또한 세트회로(32)는 호스트 포인터(26)를 그와 동일한 장소로 세트하도록 동일하게 제어된다.
그다음 디스크 포인터(24)에 의해 식별된 레지스터 장소에 기억된 버퍼 어드레스가 독출되어 버퍼 기입부(18)로 공급된 다음 이 어드레스 디스크(10)로부터 독출된 최초의 데이타블록을 기입한다. 버퍼 메모리에 이 데이타블록이 기입된후 어드반스회로(30)는 디스크 포인터(24)를 전진시켜 그다음 연속 레지스터 장소를 식별한다. 이 장소에 기억된 어드레스는 버퍼 기입부에 공급된 다음, 디스크(10)로부터 독출된 그다음 데이타블록을 이 어드레스에 기입한다.
전술한 동작은 디스크 포인터(24)가 호스트(12)에 의해 호출된 데이타블록들이 기입되는 할당된 버퍼 어드레스들의 수에 상응하는 레지스터 장소들의 수를 통과할대까지 반복된다.
일단 버퍼 메모리에 기억되면, 데이타블록들은 목록 레지스터(22)와 협동하는 버퍼 독출부(20)에 의해 호스트(12)로 전송된다. 호스트 포인터(26)는 디스크(10)로부터 독출된 일련의 데이타블록중 최초의 것을 내장하는 버퍼 어드레스를 기억하고 있는 목록 레지스터(22)내의 장소를 식별한다.
이 어드레스는 식별된 레지스터 장소로부터 독출되어 버퍼 독출부(20)에 공급되어 그 어드레스에 기억된 데이타블록을 독출한다. 그러므로 이 데이타블록은, 버퍼 메모리(14)로부터 호스트(12)로 전송된다. 그다음, 어드반스회로(34)는 호스트 포인터(26)를 그다음 연속 레지스터 장소로 전진시켜, 그내에 기억된 버퍼 어드레스를 버퍼 독출부(20)에 공급하여 이 어드레스에 내장된 데이타블록을 독출한다.
전술한 동작은 호스트 포인터(26)가 호스트에 의해 호출된 일련의 데이타블록들을 내장하는 버퍼 어드레스들을 기억하는 레지스터 장소들을 두루 통과 전진할때까지 연속한다.
지금까지 데이타블록이 하드디스크(10)로부터 독출되어, 버퍼 메모리(14)에 기억된 다음 호스트(12)로 전송되는 방식에 대해 설명했다. 호스트에 의해 발생된 데이타블록들은 버퍼 메모리에 기입되어, 그내에 기억된 다음 하드디스크(10)상에 기억되도록 독출됨을 알 수 있다.
이 데이타 기입 동작에서, 호스트 포인터(26)는 데이타 독출동작중 디스크 포인터(24)와 동일한 방식으로 기능을 하며, 마찬가지로, 디스크 포인터(24)는 데이타 독출동작중 호스트 포인터와 동일한 방식으로 동작한다. 또한 데이타 독출 및 데이타 기입동작은 호스트에 의해 데이타블록들이 호출될때와 같이 변화, 조작 또는 처리된 다음 디스크로 복귀됨을 알 수 있다. 그럼에도 불구하고, 제어부(40)의 동작은 전술한 것과 동일한 방식으로 기능을 한다.
통상의 데이타 전송 동작에서와 같이, 관리 제어부와 같은 제어부(16) 또는 그의 등가물은 호스트(12)에 의해 호출되지 않은 디스크(10)로부터 데이타블록들은 프리페치하도록 동작한다. 전술한 바와같이, 그러한 프리페치된 데이타블록들은 특정하게 요청된 데이타블록들이 처리된후 호스트에 의해 호출될 수 있는 것들이다.
억세스타임을 절약하기 위해 그러한 예상되는 데이타블록들은 특정하게 호출된 데이타블록들과 동일한 방식으로 프리페치되어 버퍼 메모리(14)에 로드된다.
그러나, 종종 그러한 프리페치된 데이타블록들은 호스트에 의해 요청되지 않으므로 검색되지 못한다. 결과적으로, 데이타블록들이 기입되는 버퍼 어드레스들의 수는 데이타블록들이 검색되는 버퍼 어드레스들의 수를 초과한다. 이는 디스크 포인터(24)가 호스트 포인터(26)보다 레지스터 장소들의 더 많은 수를 통해 전진될 수 있음을 의미한다. 이는 본 발명에 의해 고려되었으므로 전체 동작에 악영향을 주지 않는다.
이에 대해서는 위에서 설명했지만 이하에서 더욱 상세히 설명한다.
또한 버퍼 메모리(14)가 채워져 있을 수도 있으므로 버퍼 메모리가 호스트(12)에 의해 디스크(10)로부터 호출된 추가 데이타블록들을 기억할 수 있도록 채워진 버퍼 어드레스들중 일부가 제어부(16)에 의해 새로운 데이타블록들에 할당되야함을 알 수 있다.
제어부는 버퍼 메모리(14)에 기억된 데이타블록들중 어느것이 무시되거나 또는 호스트에 의해 호출된 새로운 데이타블록들에 의해 치환 즉, 교체돼야 할지를 결정하고, 또한 기술상 통상의 지식을 가진자에게 공지된 소정의 교체 알고리즘에 따라 교체될 데이타블록들을 선택한다.
종전에 데이타블록들을 내장하고 있던 버퍼 어드레스들이 새로운 데이타블록들에 할당된다. 즉, 종전에 독출된 데이타블록들로 로드됐던 버퍼 어드레스들이 새로이 독출된 데이타블록들로 교체된다.
제 2 도는 디스크 보관장치 및 호스트 컴퓨터와 같은 2데이타장치들과 통신하도록 채용된 어드레스 가능한 버퍼 메모리(102)(이후 종종 버퍼로 약칭함)의 개략도이다.
일예로서 버퍼(102)는 SCSI인터페이스와 같은 인터페이스내에 내장될 수 있다. 여기서 소정 사이즈의 데이타블록들이 디스크 보관장치(이후 "디스크"로 약칭함)로부터 독출되고 버퍼 메모리의 어드레스 가능 장소들에 기입된 다음 그로부터 호스트 컴퓨터(이후 호스트로 약칭함)로 독출되어 독출 동작을 구성할 수 있다.
반대로, 데이타가 호스트로부터 버퍼 메모리(102)의 어드레스 가능 장소들에 기입된후 그로부터 독출하여 디스크상에 기억하므로서 기입동작을 구성할 수 있다.
디스크로부터 독출될 데이타블록들과 버퍼 메모리내에 기억될 데이타블록들은 호스트에 의해 선택됨을 알 수 있다.
따라서 그러한 데이타블록들은 호스트 컴퓨터에 의해 "호출"된다.
공지된 바와같이, 데이타는 디스크상의 "섹터들(sectors)"내에 기억되며, 일실시예로서, 각 데이타블록은 1섹터를 구성한다. 디스크상에 기억된 데이타블록의 사이즈가 호스트에 의해 발생되거나 또는 호스트에 공급되는 데이타블록의 사이즈와 다르더라도, 간략히 하기 위해, 디스크로부터 독출 또는 디스크에 기입된 데이타블록이 호스트에 의해 발생 또는 그에 공급되는 데이타블록과 동일한 사이즈(즉, 동일 바이트수를 포함함)라고 가정한다.
그에 더하여, 공지된 바와같이, 호스트가 특정 데이타블록을 호출할때, 추가 연속 데이타들(통상 연속 섹터들내에 기억됨)이 디스크로부터 버퍼로 프리페치될 수도 있다.
대표적인 예로서, 버퍼 메모리(102)는 128블록들을 기억하도록 채용된 128메모리 장소들로 구성된다. 그러나, 간략히 하기 위해, 버퍼(102)는 데이타블록을 기억하도록 채용된 12어드레스 가능 장소들로 구성되는 것으로 한다. 통상의 지식을 가진자에 의해 인정되고 있는 바와같이, 데이타블록은 통상적으로 512바이트들로 구성된다. 그러나, 어떤 경우에는 256바이트로 구성할 수도 있으며, 다른 경우에는 1024바이트 또는 다른 원하는 수로 구성할 수도 있다. 본 발명은 데이타블록의 정밀한 사이즈에 의해 제한되지 않는다.
제 2 도는 또한 본 실시예의 경우 버퍼(102)보다 적은 수의 어드레스 가능 장소들(이후 레지스터 장소로서 칭함)로 구성되고 또한 버퍼 어드레스들을 기억하도록 채용된 목록 레지스터(104)(즉 목록을 나타내는 한 세트의 레지스터들)를 나타낸다.
여기서 기술한 간략화한 실시예와 일치시키도록 버퍼(102)는 12어드레스 가능 장소들로 구성되며 또한 목록 레지스터는 버퍼 어드레스들중 6개를 기억하도록 채용된 6레지스터 장소들로 구성된다.
목록 레지스터(104)는 제각기 디스크 드라이브 및 호스트와 연관된 각각의 포인터들(DALP, HALP)을 구비하며 또한 편의상 디스크와 호스트 포인터들로서 칭한다.
상술한 바와같이, 디스크 포인터(DALP)는 그다음 버퍼 어드레스를 독출될 수도 있는 것으로부터 디스크에서 독출된 그다음 데이타블록이 기억될 것까지 목록 레지스터(104)의 그다음 레지스터 장소를 지정한다. 다시말해, 디스크 포인터는 디스크로부터 독출된 그다음 데이타블록이 기입되는 버퍼 어드레스(목록 레지스터에 기억됨)를 식별한다. 호스트 포인터(HALP)는 호스트 컴퓨터에 의해 디스크로부터 호출된 데이타블록을 포함하는 버퍼 어드레스를 기억하고 있는 레지스터 장소를 식별한다. 본 실시예에서 디스크 포인터(DALP)는 데이타블록을 버퍼 어드레스들에 기입할때 순차 레지스터 장소들은 지정하도록 전진한다. 호스트 포인터(HALP)도 마찬가지로 호스트 컴퓨터가 새로운 데이타블록을 호출하는 시간마다 새로운 레지스터를 식별하도록 전진한다. 즉, 호스트 컴퓨터(HALP)는 호스트로 그다음 독출되야할 데이타블록을 기억하고 있거나 또는 기억해야할 버퍼 어드레스를 식별하는 레지스터 장소를 지정한다. 데이타블록들이 호스트로부터 디스크로 흐를때, 호스트 포인터(HALP)는 호스트로부터 독출된 데이타블록이 기억된 그다음 버퍼 어드레스를 식별하도록 사용되며 디스크 포인터(DALP)는 그다음 디스크에 기입돼야 하는 데이타블록을 기억하고 있는 그다음 버퍼 어드레스를 식별하도록 사용된다.
비록 여기에 도시하지는 않았지만, 디스크와 호스트 포인터들(DALP, HALP)은 제 1 도에서 버퍼로부터 독출되거나 또는 그에 기입되는 데이타블록내의 바이트를 계수하는 카운터(19, 29)와 같은 카운터에 의해 결정될 수 있는 바와같이 버퍼(102)가 로드(load)/언로드(unload)될때 각각 증분되는 단순한 레지스터들에 의해 실행하여 특정 레지스터 장소를 식별함을 알 수 있다.
버퍼의 관리방식을 나타내는 버퍼(102)와 목록 레지스터(104)의 동작 순서에 대해 이하에 설명한다.
본 발명을 쉽게 이해하기 위해, 호스트 컴퓨터가 디스크로부터 독출되고 또한 추후 호스트 컴퓨터로 전송될 버퍼(102)내에 기억된 특정 데이타블록을 호출하는 것으로 가정한다. 그러한 최후 시간은 초와 같은 긴 기간 또는 마이크로초로 측정될 수 있다.
데이타블록들은 "데이타 기입"동작에서와 같이 호스트 컴퓨터로부터 디스크로 흐를 수 있으며, 또한 "데이타 기입"과 "데이타 독출"동작들은 호스트가 사용자에 의해 조작되는 디스크로부터 독출된 데이타블록을 호출한 다음 디스크로 복귀(또는 기입)될때와 같이 교대될 수 있음을 알 수 있다.
그러한 양방향 데이타흐름은 본 발명에 의해 쉽게 조정되지만 상술한 바와같이 간략히 하기 위해 디스크로부터 버퍼로 그후 호스트로의 데이타블록들의 일방향 흐름으로 가정한다.
우선, 데이타블록들(81, 82, 83)과 같이 수치적으로 식별된 일련의 데이타블록을 호스트가 호출했고, 이 데이타블록들이 제 1 도에 보인 제어부(16)의 제어하에서 버퍼(102)의 어드레스들(1, 2, 3)내로 제각기 기입되는 것으로 가정하자.
제어부(16)는 세트회로(21)를 제어하여 디스크 트랜스퍼 블록 카운터(25)를 3의 카운트로 세트한다. 이 카운트 수는 디스크로부터 버퍼(102)로 독출된 데이타블록수를 나타낸다. 뒤에 설명하는 바와같이 카운터(19)는 버퍼(102)내에 기입된 블록내의 바이트들을 카운트하여 완전한 블록이 로드됐을때 카운터는 디스크 트랜스퍼 블록 카운터(25)의 카운트를 감소시키도록 증/감회로(23)를 트리거한다.
디스크 트랜스퍼 블록 카운터가 0으로 감소됐을때 호스트에 의해 호출된 특정 데이타수가 버퍼내에 기입된후 또 다른 데이타 독출동작이 실행될때까지 더 이상의 데이타블록들이 디스크로부터 독출되지 않음을 알 수 있다.
또한 목록 레지스터(104)의 레지스터 장소들(1, 2, 3)의 버퍼 어드레스들을 기억하기 위해 이용될 수 있고 또한 제어부가 이들 레지스터 장소들을 선택하여 데이타블록들(81, 82, 83)이 기입될 버퍼 어드레스들을 기억한다고 가정하자. 이때, 이 데이타 독출동작(즉, 데이타블록들이 디스크로부터 독출되는 동작)을 설정하기 위해, 어떤 데이타가 디스크로부터 버퍼로 전송되기 전에 제어부는 레지스터 장소들(1, 2, 3)내에 버퍼 어드레스들(1, 2, 3)을 제각기 기입하고, 또한 디스크 포인터(DALP)와 호스트 포인터(HALP)는 둘다 제 1 도의 세트회로들(28, 32)에 의해 레지스터 장소(1)를 식별하도록 제조된다.
따라서 디스크 포인터(DALP)는 디스크로부터 그다음 독출된 데이타블록(여기서 데이타블록(81)로 가정함)이 로드될 그다음 버퍼 어드레스(여기서 버퍼 어드레스(1)로 가정함)를 기억하는 제 1 레지스터 장소를 식별한다.
또한 호스트 포인터(HALP)는 그다음 데이타블록이 페치(fetch)되어 호스트로 전송되는 버퍼 어드레스를 기억하는 그다음 레지스터 장소로서 처음 레지스터 장소를 식별한다.
이제, 데이타블록(81)내의 모든 바이트들이 디스크로부터 버퍼 어드레스(1)로 독출되면, 카운터(19)는 제 1 도의 어드반스회로(30)를 트리거하여 디스크로부터 독출될 그다음 데이타블록(82)을 기억하도록 채용된 버퍼 어드레스(2)를 기억하는 그다음 순차 레지스터 장소(즉, 둘째 레지스터 장소)를 지정한다. 그와 동시에, 디스크 트랜스퍼 블록 카운터(25)의 카운트는 감소된다(제 1 도).
데이타블록(82)이 독출되어 버퍼 어드레스(2)로 로드되면, 디스크 포인터(DALP)는 전진하여 디스크로부터 독출된 그다음 데이타블록(83)을 기억하도록 채용된 버퍼 어드레스(3)를 기억하는 세째 레지스터 장소를 지정하고 디스크 트랜스퍼 블록 카운터의 카운트는 감소된다. 데이타블록(83)이 독출되면, 디스크 포인터(DALP)는 네째 레지스터 장소(비어있는 것으로 가정함)로 전진하여, 데이타블록(83)는 버퍼 어드레스(3)에 기입되고, 또한 디스크 트랜스퍼 블록 카운터의 카운트는 0의 카운트로 감소된다. 따라서, 연속 데이타들이 디스크로부터 독출되어 버퍼 어드레스(1, 2, 3)으로 기입될때, 카운터(19)는 어드반스회로(30)(제 1 도)를 트리거하여 디스크 포인터(DALP) 첫째 레지스터 장소로부터 둘째, 세째로 연속 전진하여 네째에서 종료하고 디스크 트랜스퍼 블록 카운트는 3→2→1→0으로 감소된다.
데이타블록(83)이 버퍼 어드레스(3)내에 기입될때 디스크 포인터는 전진하여 네째 레지스터 장소를 식별하고 데이타 독출동작을 중단한다. 마찬가지로, 버퍼(102)에 기억된 데이타블록들이 독출동작을 완료하도록 호스트로 전송될 경우 카운터(29)(제 1 도)는 한 블록이 독출될때 어드반스회로(34)를 트리거하도록 전송되는 바이트수를 카운트하여 줌으로써 데이타블록(81, 82, 83)이 버퍼 어드레스(1, 2, 3)으로부터 각각 독출될때 호스트 포인터(HALP)를 첫째에서 둘째, 세째, 마지막으로 네째 레지스터 장소로 전진시켜 준다. 마찬가지로, 제어부(16)는 세트회로(31)를 제어하여 호스트에 의해 호출될때 버퍼(102)로부터 호스트로 독출될 데이타블록들의 수를 나타내는 3의 카운트로 호스트 트랜스퍼 블록 카운터(35)를 세트한다.
카운터(29)가 호스트 포인터(HALP)를 전진시키도록 어드반스회로(34)를 트리거할때, 그것은 증/감회로(33)도 트리거하여 호스트 트랜스퍼 블록 카운터를 감소시킨다. 이 카운트가 0으로 감소되면, 호스트에 의해 호출된 특정 데이타수는 그에 전송되고 그다음 데이타 독출동작이 실행될때까지 더 이상의 데이타들이 전송되지 않는다. 데이타블록(83)이 버퍼 어드레스(3)으로부터 독출된후, 호스트포인터는 세째로부터 네째 레지스터 장소로 전진한다.
이제, 데이타블록(81, 82, 83)중 어느것이 버퍼로부터 호스트로 독출되기 전에 호스트가 일련의 데이타블록들(121, 122)을 호출하고, 또한 제어부가 이들 데이타블록들을 기억하도록 버퍼 어드레스들(4, 5)을 선택한다고 가정하자.
목록 레지스터(104)의 네째와 다섯째 레지스터 장소를 이용할 수 있다고 가정하면, 제어부는 레지스터들(4, 5)를 선택하여 버퍼 어드레스들(4, 5)을 각각 기억하고, 이들 버퍼 어드레스들(4, 5)는 네째와 다섯째 레지스터 장소들에 기입된다. 전술한 디스크-버퍼 전송동작의 완료시에 네째 레지스터 장소를 지정하는 디스크 포인터(DALP)는 데이타블록(121)이 디스크로부터 독출될때 이 데이타블록를 로드시키는 어드레스로서 버퍼 어드레스(4)를 식별한다. 호스트 포인터(HALP)는 마찬가지로 이 레지스터 장소를 지정한다. 앞에서와 같이, 디스크 트랜스퍼 블록 카운터(25)와 호스트 트랜스퍼 블록 카운터(35)(제 1 도)는 호스트에 의해 호출된 데이타블록들의 수(2)로 세트된다. 데이타블록(121)이 버퍼내에 로드될때 디스크 포인터(DALP)는 전진하여 버퍼 어드레스(5)을 기억하는 다섯째 레지스터 장소를 지정하고 또 디스크 트랜스퍼 블록 카운터는 2에서 1로 감소된다. 만일 데이타블록(121)이 이때 호스트로 공급되지 않으면, 호스트 포인터(HALP)는 이 네째 레지스터 장소를 지정하도록 남아있다.
그다음, 데이타블록(122)은 디스크로부터 디스크 포인터(DALP)에 의해 식별된 버퍼 어드레스로 즉, 버퍼 어드레스(5)로 독출된다. 따라서, 디스크 포인터는 전진하여 여섯째 레지스터 장소를 지정하고, 디스크 트랜스퍼 블록 카운터 0으로 감소된다.
이때, 디스크 포인터(DALP)는 버퍼 어드레스를 독출하는 그다음 장소로부터 디스크로부터 독출된 그다음 데이타블록이 기억되는 그다음 장소까지의 레지스터 장소(6)(현재 비어있는 것으로 가정함)를 식별하고, 호스트 포인터(HALP)는 호스트에 의해 호출됐으나 아직 공급되지 않은 종전 데이타블록을 포함하는 버퍼 어드레스를 기억하는 네째 레지스터 장소를 식별한다. 제2a도는 실선으로 나타낸 디스크 포인터(DALP)가 최종 위치를 나타내고, 점선이 디스크 포인터의 시작 및 전진위치를 나타내는 전술한 동작을 나타낸다.
마찬가지로 버퍼(102)로부터 호스트로 데이타들을 독출하도록 실선은 호스트 포인터(HALP)의 최종위치를 나타내고 점선은 출발 및 전진위치를 나타낸다. 제2a도로부터, 그내에 이미 기억된 데이타블록들의 어느것을 "중복 기입"할 위험없이 추가 데이타블록들을 기억할 수 있도록 버퍼(102)내에 풍부한 용량이 남아 있음을 알 수 있다.
또한 제어부(16)는 버퍼의 내용을 모니터함으로써 호스트에 의해 호출된 데이타블록들이 기억된 장소들을 알 수 있다는 것을 알 수 있다.
이제, 제2a도에 보인 바와같은 버퍼(102)와 목록 레지스터(104)의 조건으로서, 디스크로부터 독출될 예정에 있고 또한 버퍼의 그다음 이용할 수 있는 어드레스들에 기억된 일련의 데이타블록들(315, 316)을 호스트가 호출한다고 가정하자.
제2b도에 보인 바와같이, 제어부는 데이타들 블록(315, 316)을 기억하도록 버퍼 어드레스들(6, 7)을 선택한다. 편의상, 종전에 기억된 데이타블록들과 종전에 기억된 버퍼 어드레스들은 점선으로 나타내고 호스트에 의해 새로이 호출된 일련의 데이타블록들과 새로이 선택된 버퍼 어드레스들은 실선으로 나타낸다. 또한 제어부는 버퍼 어드레스들(6, 7)을 제각기 기억하도록 레지스터 장소들(6, 7)을 선택하고, 버퍼 에드레스(6)는 여섯째 레지스터 장소에 기억되고 또한 버퍼 어드레스(7)는 첫째 레지스터 장소에 기억된다.
이제 버퍼 어드레스(6)에 데이타블록(315)을 로드시키기 위해서는 여섯째 레지스터 장소(이제 디스크 포인터(DALP)에 의해 식별됨)의 내용을 독출하여 데이타블록(즉, 이 레지스터 장소의 내용)을 버퍼 어드레스(6)에 기입한다.
호스트 포인터(HALP)는 호스트에 의해 호출된 최근 일련의 첫째 데이타블록을 기억하는 버퍼 어드레스를 기억하고 있는 장소로서 여섯째 레지스터 장소를 식별하도록 전진하고 또한 디스크 포인터(DALP)는 버퍼 어드레스(7)가 기억되는 첫째 레지스터 장소(제2B도에 의해 나타낸 동작의 시초에 지정됐던 여섯째 레지스터 장소로부터) 전진(또는 복귀)한다.
데이타블록(316)이 디스크로부터 독출될때, 그것은 버퍼 어드레스(7)(디스크 포인터(DALP)에 의해 식별될)에 기억되고, 또한 디스크 포인터는 목록 레지스터(104)의 둘째 장소로될 그다음 순차 레지스터 장소로 전진한다. 만일 데이타블록(315)이 버퍼로부터 호스트로 전송되면, 호스트 포인터(HALP)는 호스트에 의해 호출된 일련의 데이타블록들중에서 처음으로 로드됐던 버퍼 어드레스를 기억하고 있는 여섯째 레지스터 장소로부터 호스트로 독출될 그다음 데이타블록(316)을 로드하고 있는 버퍼 어드레스(7)를 기억하는 첫째 레지스터 장소로 전진한다.
디스크 트랜지스터 블록 카운터(25)와 호스트 트랜스퍼 블록 카운터(35)는 제각기 호스트에 의해 호출된 데이타블록의 수로 세트되고 또한 버퍼(102)에 데이타블록이 기입될때마다 감소되어 호스트로 전송됨을 알 수 있다.
레지스터 장소(1)에 종전에 기억됐던 버퍼 어드레스는 새로운 버퍼 어드레스로 제어부에 의해 중복기업 됐음을 알 수 있다. 그러나, 이때, 버퍼(102)가 채워지지 않았기 때문에, 목록 레지스터(104)에서 생성되는 어드레스 목록 부분들의 중복기입은 버퍼(102)내에 현재 기억된 데이타블록들중 어느것도 제거하지 않으며, 또한 제어부는 이들 데이타블록들의 버퍼 기억장소들을 레지스터하도록 계속한다. 따라서, 데이타블록(81)은 버퍼 어드레스(1)내에 기억되어 남아있으므로 요청될때 제어부에 의해 호스트 컴퓨터로 독출될 수 있다.
제2b도에 의해 나타낸 조건으로부터 디스크로부터 독출될 일련의 데이타블록들(221, 222, 223)을 호스트가 호출하고, 또한 제어부가 이들 데이타블록들을 기억하도록 버퍼 어드레스들(8, 9, 10)이 둘째, 세째, 네째 레지스터 장소들에 기억되야 할지를 결정하여 이들 새로운 데이타블록들의 기억될 버퍼 어드레스들로서 이들 레지스터 장소들내의 종전 엔트리들을 중복기입한다.
이 데이타 독출동작 시초에 디스크 포인터(DALP)와 호스트 포인터(HALP)는 둘다 둘째 레지스터 장소를 식별하고, 또한 디스크 트랜스퍼 블록 카운터(25)와 호스트 트랜스퍼 블록 카운터(35)는 호스트에 의해 호출된 데이타블록수(3)으로 세트한다. 이 데이타 독출동작을 수행하기 위해서는, 버퍼 어드레스(8)가 디스크 포인터에 의해 둘째 레지스터 장소로부터 독출되고 또한 이 일련의 것들중 첫째 데이타블록(221)은 이 버퍼 어드레스에 로드된다. 목록 레지스터(104)의 둘째 레지스터 장소를 현재 지정하는 호스트 포인터(HALP)는 이 독출동작하는 동안 호스트에 의해 호출됐던 최신의 일련의 첫째 데이타블록이 기억되는 버퍼 어드레스를 식별하는 것을 알 수 있다.
데이타블록(221)이 버퍼 어드레스(8)내에 기입될때, 디스크 포인터(DALP)는 데이타블록(222)을 기억할 버퍼 어드레스를 식별하도록 둘째 레지스터 장소로부터 그다음 연속하는 레지스터 장소로 전진하고, 이 데이타블록(222)은 버퍼 어드레스(9)내에 기입된다. 디스크 포인터는 데이타블록(223), 즉, 호스트에 의해 호출된 일련의 마지막 데이타블록을 내장할 버퍼 어드레스(10)를 식별하도록 네째 레지스터 장소로 전진한다. 이 데이타블록이 디스크로부터 독출되어 버퍼 어드레스(10)내에 로드될때 디스크 포인터(DALP)는 제어부에 의해 선택된 그다음 버퍼 어드레스가 독출될 그다음 장소인 다섯째 레지스터 장소를 식별하도록 전진한다. 각 데이타블록이 버퍼(102)내에 로드될때마다 감소되어 디스크 트랜스퍼 블록 카운터(25)의 카운트는 0카운트로 감소될 것이다.
상술한 데이타 독출동작에서는 데이타블록들(222, 223)이 호스트에 의해 호출되거나, 그렇지 않으면 이 데이타블록들이 데이타블록(221)이 호출될때 통상의 지식을 가진자에게 공지된 방식으로 프레피치될 수 있음을 알 수 있을 것이다. 만일 데이타들이 호스트에 의해 호출되면, 호스트 포인터(HALP)는 한 레지스터 장소로부터 다음으로 순차로 전진하여 버퍼 어드레스들(8, 9, 10)을 순차로 식별하여 버퍼로부터 호스트로 데이타블록들(221, 222, 223)을 순차로 독출하고, 호스트 트랜스퍼 블록 카운터(35)는 그의 세트 카운트 3을 0으로 감소시킨다. 그러나, 만일 데이타블록들(222, 223)이 프리페치되면, 호스트 트랜스퍼 블록 카운터는 1의 카운트로만 세트되고 또한 호스트 포인터(HALP)는 버퍼호부터 호스트로 데이타블록(221)을 독출하도록 버퍼 어드레스(8)만을 식별하도록 세트된다.
그후, 호스트 포인터는 호스트 트랜스퍼 블록 카운터(35)가 0으로 감소되는 동안 그다음 (세째) 레지스터 장소로 전진된다. 결과적으로, 그 세째 레지스터 장소에 기억된 버퍼 어드레스의 내용이 독출되지 않는다.
제2c도에 보인 조건으로부터, 2버퍼 어드레스들이 데이타블록들을 기억하도록 이용 가능하게 남아있음을 알 수 있다.
여기서 설명한 실시예에 맞도록 호스트가 데이타블록들(15, 16)을 호출하고, 또한 제2d도에 보인 바와같이 제어부가 이들 데이타블록들을 기억하도록 버퍼 어드레스들(11, 12)을 제각기 선택한다고 가정하자.
제어부는 버퍼 어드레스들(11, 12)이 다섯째와 여섯째 레지스터 장소들에 기억될 것을 결정하고 또한 그내의 종전 엔트리들을 중복 기입한다. 이 데이타 독출동작의 시초에서, 디스크 포인터(DALP)와 호스트 포인터(HALP)는 둘다 비퍼 어드레스(11)이 기억될 장소로서 버퍼에 의해 선택됐던 다섯째 레지스터 장소를 식별하도록 전진되고 또한 디스크와 호스트 트랜스퍼 블록 카운터들은 둘다 호스트에 의해 호출된 데이타블록들의 수를 나타내는 그의 카운트로 세트된다.
이제, 디스크 포인터(DALP)는 목록 레지스터로부터 버퍼 어드레스(11)를 독출하고, 이 버퍼 어드레스(11)에 또한 호스트에 의해 막 호출됐던 데이타블록(15)이 기입된다.
디스크 포인터(DALP)는 여섯째 레지스터 장소로 전진하고 또한 디스크 트랜스퍼 블록 카운터는 1까지 감소된다. 만일 제어부가 한 데이타블록이 지금 호스트로 전송되야 하는 것으로 결정하면, 호스트 포인터(HALP)(즉, 버퍼 어드레스(11))에 의해 식별된 버퍼 어드레스가 독출되고 이 버퍼 어드레스(즉, 데이타블록(15))에 기억된 데이타이 호스트로 독출된다. 그다음 호스트 포인터는 그다음 레지스터 장소로 전진하고 또한 호스트 트랜스퍼 블록 카운터는 1까지 감소된다.
이제 목록 레지스터(104)의 여섯째 레지스터 장소를 지정하는 디스크 포인터(DALP)는 버퍼 어드레스(12)를 식별하여 이 버퍼 어드레스에 디스크로부터 데이타블록(16)이 로드된다. 그다음 디스크 포인터는 첫째 장소로 보이는 그다음 연속 레지스터 장소로 전진하고, 디스크 트랜스퍼 블록 카운터는 데이타블록(16)이 버퍼 어드레스(12)로 기입될때 0으로 감소된다.
제2d도에 나타낸 조건으로부터, 호스트가 일련의 데이타블록들(175, 176)을 호출하는 것으로 가정한다.
버퍼(102)가 채워지기 때문에, 제어부는 버퍼내에 기억된 데이타블록들중 어느것이 무시될 수 있는지 또는 호스트에 의해 이제 호출된 새로운 데이타블록들에 의해 교체될 수 있는지를 결정한다. 버퍼내에 교체될 데이타블록들은 통상의 지식을 가진자에게 알려진 소정의 교체 알고리즘에 따라 선택된다. 설명을 위해, 제어부가 교체를 위해 데이타블록들(82, 83)을 선택한 것으로 가정한다.
따라서, 이들 데이타블록들을 기억했던 버퍼 어드레스들(2, 3)을 새로운 데이타블록들(175, 176)을 기억시키기 위해 선택한다.
그밖에도 제어부는 버퍼 어드레스들(2, 3)이 첫째와 둘째 레지스터 장소들내에 기억될 것인지를 결정하여 그내에 어드레스들을 기입한다.
제2e도에 의해 나타낸 데이타 독출동작의 시초에, 디스크 포인터(DALP)와 호스트 포인터(HALP)는 둘다 첫째 레지스터 장소를 식별하도록 세트되며 또한 디스크와 호스트 트랜스퍼 블록 카운터들은 2(디스크로부터 독출될 그리고 호스트로 전송될 데이타블록들의 수)로 세트된다. 그 때문에, 버퍼 어드레스(2)는 디스크 포인터에 의해 첫째 레지스터 장소로부터 독출되고 또한 데이타블록(175)은 디스크로부터 이 어드레스에 기입된다. 그다음 디스크 포인터(DALP)는 버퍼 어드레스(3)가 독출되고 또한 데이타블록(176)이 로드될 그다음 연속 레지스터 장소(즉, 둘째 장소로)로 전진한다. 그다음 디스크 포인터는 데이타블록(176)이 버퍼내로 로드될때 그다음 연속 레지스터 장소 즉, 셋째 레지스터 장소로 전진한다. 데이타블록이 로드될때마다 감소되는 디스크 트랜스퍼 블록 카운터는 이제 0카운트가 된다. 첫째 레지스터 장소를 지정하는 호스트 포인터(HALP)는 그로부터 버퍼 어드레스(2)를 독출하고, 데이타블록(175)이 버퍼 어드레스로부터 호스트로 전송된다. 그다음 호스트 포인터는 데이타블록(176)이 호스트로 전송되는 버퍼 어드레스(3)을 식별하도록 제 2 레지스터 장소로 전진한다. 그후 호스트 포인터는 셋째 레지스터 장소로 전진하고 또한 호스트 트랜스퍼 블록 카운터는 0카운터로 감소된다.
제2e도에 의해 나타낸 조건으로부터, 호스트가 일련의 데이타블록들(401, 402, 403)을 호출하는 것으로 가정한다. 버퍼(102)가 채워져 있기 때문에, 제어부는 전술한 바와같이 교체를 위한 종전에 기억된 데이타블록들을 선택한다. 교체 알고리즘은 교체를 위해 버퍼 어드레스들(5, 7, 10)내에 기억됐던 데이타블록들(122, 316, 223)을 선택하는 것으로 가정한다.
결과적으로, 제어부는 데이타블록들(401, 402, 403)을 제각기 기억하도록 버퍼 어드레스들(5, 7, 10)을 재할당한다. 그밖에도, 제어부는 버퍼 어드레스들(5, 7, 10)을 기억하도록 세째, 네째, 다섯째 레지스터 장소들을 선택한다.
이 데이타 독출동작의 시초에, 디스크 포인터(DALP)와 호스트 포인터(HALP)는 둘다 세째 레지스터 장소 즉, 데이타블록(401)을 기억할 버퍼 어드레스(5)를 기억하는 장소를 지정하고 디스크와 호스트 트랜스퍼 블록 카운터들 둘다는 카운트 3으로 세트된다. 독출동작을 실행하기 위해서는 디스크 포인터(HALP)는 세째 레지스터 장소로부터 버퍼 어드레스(5)를 검색하여 데이타블록(401)을 그 버퍼 어드레스에 로드한다. 디스크 트랜스퍼 블록 카운터는 감소되고 그다음 디스크 포인터는 버퍼 어드레스(7)를 검색하도록 네째 레지스터 장소로 전진한다. 데이타블록(402)는 버퍼 어드레스(7)내에 기입된다.
그다음, 디스크 트랜스퍼 블록 카운터는 감소되고 또한 디스크 포인터는 버퍼 어드레스(10)가 독출되는 다섯째 레지스터 장소로 전진한다. 데이타블록(403)은 그 버퍼 어드레스내에 로드된다. 디스크 트랜스퍼 블록 카운터는 0의 카운트로 감소되고 그다음 디스크 포인터(DALP)는 데이타(403)이 버퍼 어드레스(10)내에 기입될때 그다음 레지스터 장소 즉, 여섯째 레지스터 장소로 전진한다.
이들 데이타블록들을 버퍼로부터 호스트로 전송하기 위해서 호스트 포인터(HALP)는 호스트에 의해 최근에 호출된 일련의 데이타블록들중 첫째것(즉 데이타블록(401))을 내장하는 버퍼 어드레스(5)를 기억하고 있는 세째 레지스터 장소로부터 네째 레지스터 장소로 그다음 다섯째로 전진한다.
전진할때마다, 호스트 트랜스퍼 블록 카운터는 감소되고 또한 호스트 포인터에 의해 식별된 버퍼 어드레스는 호스트로 독출될 기억된 데이타블록을 그내에 갖고 있다. 그러므로, 데이타블록들(401, 402, 403)이 전송된다. 그후, 호스트 트랜스퍼 블록 카운터는 0으로 감소되고, 호스트 포인터(HALP)는 여섯째 레지스터 장소로 전진한다.
제2f도에 나타낸 조건에 도달한후 호스트가 4데이타블록들(241, 242, 243, 244)를 호출하는 것으로 가정한다. 다시한번 제어부는 교체를 위해 버퍼(102)내에 기억된 데이타블록들을 선택한다.
전술한 교체 알고리즘에 따라 데이타블록들(81, 176, 222, 16)이 선택된 것으로 가정하자. 제어부의 제어하에 버퍼 어드레스(1)는 데이타블록(241)을 기억하도록 할당되고, 버퍼 어드레스(3)는 데이타블록(242)를 기억하도록 할당되고, 버퍼 어드레스(9)는 데이타블록(243)를 기억하도록 할당되고, 버퍼 어드레스(12)는 데이타블록(244)를 기억하도록 할당된다.
또한 제어부는 목록 레지스터(104)의 6째, 1째, 2째 및 3째에 레지스터 장소들에 제각기 버퍼 어드레스들(1, 3, 9, 12)을 기입하고, 6째 레지스터 장소(즉 1째 데이타블록이 기입될 버퍼 어드레스를 기억하는 레지스터 장소)를 지정하도록 호스트 포인터(HALP)와 디스크 포인터(DALP)를 세트하고, 디스크와 호스트 트랜스퍼 블록 카운터들(25, 35)을 4의 카운트로 세트한다. 이때, 디스크 포인터는 이미 6째 레지스터 장소를 지정하고 있음을 상기한다.
독출동작을 실행하기 위해, 디스크 포인터(DALP)는 6째 레지스터 장소로부터 버퍼 어드레스(1)를 독출하고 또한 디스크로부터 독출된 데이타블록(241)은 이 버퍼 어드레스내에 로드된다. 그다음 디스크 포인터는 상술한 방식으로 1째, 2째, 3째 및 4째 레지스터 장소들로 전진한다.
디스크 포인터가 전진할때, 그에 의해 식별된 버퍼 어드레스는 목록 레지스터(104)로부터 독출되고 또한 디스크로부터 독출된 연속 데이타블록들을 각 버퍼 어드레스내에 로드되며 독출되는 동안 디스크 트랜스퍼 블록 카운터는 감소된다. 그 때문에, 제2G도에 보인 바와같이, 호스트에 의해 호출된 데이타블록들(241, 242, 243 ; 244)은 비연속 버퍼 어드레스들(1, 3, 9, 12)내에 제각기 기억된다.
이제, 이들 데이타블록들을 호스트로 전송하기 위해, 제어부는 호스트 포인터(HALP)가 지정하는 버퍼 어드레스를 독출하고 또한 이 버퍼 어드레스를 독출하고 또한 이 버퍼 어드레스에 기억된 데이타블록은 호스트로 독출된다. 그 때문에, 6째 레지스터 장소(호스트 포인터가 지정한 장소)내에 기억된 버퍼 어드레스(1)가 식별되고 또한 데이타블록(241)은 이 버퍼 어드레스로부터 호스트로 독출된다. 호스트 트랜스퍼 블록 카운터는 감소되고 또한 호스트 포인터는 그다음 레지스터 장소(즉 제 1 레지스터 장소)로 전진하고 또한 전술한 수순이 반복된다. 결론적으로, 호스트 포인터(HALP)는 3째 레지스터 장소로 순차 전진하고, 또한 호스트 포인터가 전진할때 데이타블록들(241, 242, 243, 244)은 버퍼(102)로부터 호스트로 순차로 독출된다. 이와 동시에 호스트 트랜스퍼 블록 카운터는 0의 카운트로 감소된다.
전술한 실시예들은 호스트가 디스크로부터 검색해야만 데이타블록들을 호출한 다음 호스트로 독출되지 전에 버퍼(102)내에 임시로 기억되는 것으로 가정했다.
이제 호스트가 종전 독출동작들 때문에 버퍼내에 이미 기억된 일련의 데이타블록들을 호출하는 것으로 가정하자.
예를들어, 이 요청된 데이타블록들이 프리페치 되었거나 또는 호스트는 단순히 그들을 재독출하길 원한다. 어쨋거나, 호스트는 데이타블록들(15, 121, 221, 315)을 그 순서로 호출하는 것으로 가정한다.
제2g도로부터 이들 데이타블록들은 버퍼 어드레스들(11, 4, 8, 6)내에 제각기 기억되고 있고 또한 디스크로부터 이 데이타들을 재독출할 필요가 없음을 알 수 있다.
버퍼 제어부는 제2h도에 보인 바와같이 버퍼 어드레스들(11, 4, 8, 6)이 기입된 1째, 2째, 3째 및 4째 레지스터 장소들을 선택한다.(다른 레지스터 장소들이 선택될 수도 있음). 그밖에도, 호스트 포인터(HALP)는 제 1 레지스터 장소를 지정하도록 세트되고 또한 호스트 트랜스퍼 블록 카운터는 4의 카운트로 세트된다. 이때, 디스크 트랜스퍼 블록 카운터는 0의 카운트로 세트된다. 데이타 전송동작을 위해, 데이타블록들이 디스크로부터 독출되지 않기 때문에, 제어부는 디스크 포인터(DALP)의 위치를 변동시키지 않는다. 이제 이 데이타 전송을 실행하기 위해, 호스트 포인터(HALP)가 지정하는 레지스터 장소내에 기억된 버퍼 어드레스가 독출되고 또한 버퍼 어드레스내에 로드된 데이타블록은 호스트로 전송된다. 호스트 전송블록 카운터는 카운트수를 감소하고 호스트 포인터는 그다음 연속 레지스터 장소로 전진하여 상술한 수순을 반복한다. 따라서 버퍼 어드레스(11)는 1째 기억장소로부터 독출되고 버퍼 어드레스(11)내에 기억된 데이타블록(15)은 호스트로 전송되고 호스트 포인터(HALP)는 2째 레지스터 장소로 전진한다.
이러한 식으로, 데이타블록들(15, 221, 221, 315)은 버퍼(102)로부터 호스트로 차례로 전송된다. 제어부는 데이타(315)이 전송된후 이 전송동작을 종료하며, 이때 호스트 포인터는 제2H도에 보인 바와같이 5째 레지스터 장소로 전진하게 되고 호스트 트랜스퍼 블록 카운터는 0으로 감소된다.
전술한 설명으로부터 데이타블록들이 버퍼(102)내에 구획 형식으로 기억되더라도 어드레스 목록은 버퍼(102)내에 기억된 적당한 순서의 데이타블록들을 호스트로 독출하는 버퍼 어드레스들을 순차로 식별하도록 목록 레지스터(104)내에 제어부에 의해 편집된다.
호스트 포인터(HALP)는 이 순서로 1째 버퍼 어드레스를 식별하므로 호스트에 의해 순차로 호출되는 데이타블록들을 쉽게 독출할 수 있다.
본 발명을 양호한 실시예를 참조하여 지금까지 설명했으나 본 발명의 정신과 범위로부터 벗어나지 않는 범위내에서 여러가지로 수정변경 가능하다.
예를들어, 제 1 도에 디스크 제어부(40)는 회로 또는 하드웨어와 관련하여 그의 실시를 설명했으나 그에 대해 기술된 기능들을 소프트웨어에 의해 실시할 수도 있음을 알 수 있다. 또한 버퍼 어드레스들은 목록 레지스터(104)내의 연속 레지스터 장소들내에 기억됐으나 그러한 장소들의 순서는 연속일 필요는 없다. 그러한 경우, 어드반스회로(30)는 버퍼 레지스터들이 기억된 레지스터 장소들의 원하는 순서를 설정하도록 디스크 포인터를 제어할 수도 있다.(마찬가지로, 어드반스회로(34)는 호스트 포인터를 제어할 수도 있다). 여기서 설명된 실시예 뿐만 아니라 그의 등가물들은 청구범위에 모두 포함될 것이다.
Claims (25)
- 제1 및 제 2 의 데이타장치들과 통신하도록, 기입되고 독출될 데이타블록들의 어드레스 가능한 장소들을 갖는 버퍼 메모리를 관리하는 방법에 있어서, 상기 제 1 장치로부터 일련의 데이타블록들을 상기 버퍼 메모리의 이용 가능한 반드시 순서적일 필요가 없는 장소들내로 기입하는 단계와, 최신 일련의 데이타블록들이 기입되는 버퍼 어드레스들의 순서화된 어드레스 목록을 레지스터 장소들을 갖는 목록 레지스터내에 생성하는 단계와, 상기 버퍼 메모리로부터 독출된 1째 데이타블록의 버퍼 어드레스를 상기 일련으로 기억하는 레지스터 장소를 상기 제 2 장치로 지시하는 단계와, 상기 버퍼 메모리로부터 상기 추가 데이타블록들을 독출하도록 추가 데이타블록들을 상기 일련으로 기억하는 버퍼 어드레스들을 내포하는 상기 순서화된 어드레스 목록내의 레지스터 장소들을 상기 제 2 장치에 순서적으로 지시하는 단계를 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 1 항에 있어서, 상기 버퍼 메모리내에 일련의 데이타블록들을 기입하는 단계는 상기 목록 레지스터 내의 레지스터 장소를 식별하도록 기입 포인터를 제공하여, 상기 기입 포인터에 의해 식별된 레지스터 장소 내에 기억된 버퍼 어드레스를 독출한후, 상기 기입 포인터에 의해 식별된 레지스터 장소로부터 독출된 버퍼 어드레스내에 데이타블록를 기입하고, 그다음 레지스터 장소를 식별하도록 상기 기입 포인터를 전진시키는 단계들을 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 2 항에 있어서, 상기 순서화된 어드레스 목록을 생성하는 단계는 일련의 데이타블록들이 기입될 각 버퍼 어드레스들을 상기 목록 레지스터의 선택된 수의 레지스터 장소들내에 로딩시키는 단계를 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 3 항에 있어서, 상기 선택된 수의 레지스터 장소들중 적어도 일부내에 이미 기억되어 있는 버퍼 어드레스들은 일련의 데이타블록들이 기입될 각 버퍼 어드레스들이 상기 목록 레지스터내에 로드될때 중복 기입되는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 4 항에 있어서, 상기 순서화된 목록을 생성하는 단계는 기입될 일련의 데이타블록들을 기억하기 위해 선택된 버퍼 어드레스들을 미리 할당하는 단계를 더 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제1 및 제 2 장치들간에 데이타를 전송하도록 데이타블록들이 기입되고 또한 독출되는 어드레스 가능한 장소들을 갖는 버퍼 메모리를 관리하는 방법에 있어서, 상기 제 1 장치로부터 공급된 일련의 데이타블록들내에 포함된 데이타들을 기억하도록 반드시 순차적으로 선택할 필요가 없는 버퍼 어드레스들을 할당하는 단계와, 상기 할당된 버퍼 어드레스들을 목록 레지스터의 선택된 레지스터 장소들내에 로딩하는 단계와, 순서화된 레지스터 장소들의 목록으로부터 버퍼 어드레스들을 독출하여 독출된 버퍼 어드레스내에 각 데이타 블록을 기입하는 단계와, 검색된 버퍼 어드레스들내에 기억된 데이타블록들을 상기 제 2 장치에 전송하기 위해 로드된 버퍼 어드레스들을 검색하도록 연속하는 레지스터 장소들을 억세스하는 단계들을 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 6 항에 있어서, 상기 할당된 버퍼 어드레스들이 로드된 상기 순서화된 레지스터 장소들의 목록은 버퍼 어드레스들이 검색되는 상기 연속하는 레지스터 장소들과 다른 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 6 항에 있어서, 상기 순서화된 레지스터 장소들의 목록으로부터 버퍼 어드레스들을 독출하는 단계는 우선 일련의 데이타블록중에서 1째 것에 할당된 버퍼 어드레스를 로드하는 레지스터 장소를 선정한 다음, 상기 제 1 장치로부터의 데이타블록이 종전에 선정된 레지스터 장소들로부터 독출된 버퍼 어드레스내에 기입될때 그다음 레지스터 장소를 선정하는 단계를 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 8 항에 있어서, 그다음 레지스터 장소를 선정하는 단계는 상기 일련의 모든 데이타블록들이 그들 각각에 할당된 버퍼 어드레스들내에 기입될때까지 각 버퍼 어드레스내로의 데이타블록의 기입에 응답하여 장소에서 장소로 연속하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 6 항에 있어서, 선택된 레지스터 장소들내에 할당된 버퍼 어드레스들을 로딩하는 상기 단계는 상기 레지스터 장소들내에 종전에 로드됐던 버퍼 어드레스들을 중복 기입하는 단계를 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제10항에 있어서, 버퍼 어드레스들을 검색하도록 연속하여 레지스터 장소들을 억세스하는 상기 단계는 우선 상기 제 1 장치로부터 공급된 일련의 데이타블록들중 1째 것이 할당된 버퍼 어드레스를 로드하는 레지스터 장소를 식별한 다음, 종전에 식별된 레지스터 장소로부터 검색된 버퍼 어드레스로부터 상기 제 2 장치에 데이타블록이 전송될때, 그다음 레지스터 장소를 식별하는 단계를 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제11항에 있어서, 그다음 연속하는 레지스터 장소를 식별하는 상기 단계는 상기 일련의 모든 데이타블록들이 전송될때까지 각 버퍼 어드레스로부터 데이타블록의 전송에 응답하여 장소에서 장소로 연속 식별하는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제6항에 있어서, 상기 데이타블록들을 기억하도록 선택된 버퍼 어드레스들을 할당하는 단계는 현재 데이타블록을 기억할 수 있는 버퍼 어드레스를 할당하는 단계를 포함하며, 그에 의해, 현재 기억된 데이타 블록이 상기 제 1 장치로부터 공급된 일련의 데이타블록들내에 포함된 새로운 데이타에 의해 중복 기입되는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제 1 장치에서, 제 2 장치로 데이타를 전송하기 위해, 어드레스 가능한 장소들을 갖는 버퍼 메모리가 제어부에 의해 선택된 어드레스들내에 상기 제 1 장치로부터 수신된 데이타블록들을 기억하는 장치에 있어서, 상기 버퍼 제어부에 의해 버퍼 어드레스들을 기억하기 위한 복수의 레지스터 장소들을 갖는 목록 레지스터 수단과, 순서화된 버퍼 어드레스들의 목록을 생성하도록 상기 목록 레지스터 수단의 선택된 장소들내에 기입된 버퍼 어드레스들을 독출하기 위한 제 1 포인터 수단과, 상기 목록 레지스터 수단으로부터 독출된 버퍼 어드레스내에 상기 제 1 장치로부터의 데이타블록을 기입하기 위한 버퍼 기입 수단과 상기 순서화된 버퍼 어드레스들의 목록을 검색하도록 상기 목록 레지스터 수단의 연속 장소들을 억세스하기 위한 제 2 포인터 수단과, 검색된 버퍼 어드레스들의 버퍼 메모리에 기억된 데이타블록들을 상기 제 2 장치에 전송하는 전송수단을 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제14항에 있어서, 버퍼 어드레스들이 상기 제 1 포인터 수단에 의해 독출된 목록 레지스터 수단의 레지스터 장소들의 수는 버퍼 어드레스들이 상기 제 2 포인터 수단에 의해 검색되는 목록 레지스터 수단의 레지스터 장소들의 수와 다른 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제14항에 있어서, 상기 버퍼 메모리내에 기입된 데이타블록들은 상기 제 2 장치에 의해 호출되며, 일련의 데이타블록들내에 포함되며, 상기 제어부는 상기 제 2 장치에 의해 호출된 일련의 데이타블록들중 1째 것을 기억하도록 상기 제어부에 의해 선택된 버퍼 어드레스를 기억하는 상기 목록 레지스터 수단의 레지스터 장소에 상기 제 1 포인터 수단을 세트하도록 동작하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제16항에 있어서, 한 데이타블록이 상기 목록 레지스터 수단으로부터 최종 독출된 버퍼 어드레스내에 기입될때 상기 순서화된 목록내에서 상기 목록 레지스터 수단의 그다음 레지스터 장소로 상기 제 1 포인터 수단을 전진시키기 위한 수단을 더 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제16항에 있어서, 상기 제어부는 상기 제 2 장치에 의해 호출된 일련의 데이타블록중 1째 것을 기억하도록 상기 제어부에 의해 선택된 버퍼 어드레스를 기억하는 상기 목록 레지스터 수단의 레지스터 장소로 상기 제 2 포인터 수단을 세트하도록 동작하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제18항에 있어서, 한 데이타블록이 상기 목록 레지스터 수단으로부터 최종 검색된 버퍼 어드레스로부터 상기 제 2 장치로 전송될때 상기 순서화된 목록내에서 상기 목록 레지스터 수단의 그다음 레지스터 장소로 상기 제 2 포인터 수단을 전진시키는 수단을 더 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제19항에 있어서, 상기 제어부는 상기 제 2 장치에 의해 호출되지 않은 데이타블록들을 프리페치하도록 동작 가능하며, 상기 프리페치된 데이타블록과 상기 제 2 장치에 의해 호출된 데이타블록들은 상기 제어부에 의해 선택된 버퍼 어드레스들내에 기입되고 또한 상기 목록 레지스터 수단내에 기억되며, 또한 상기 제 2 포인터 수단을 전진시키는 상기 수단은 상기 제 2 장치에 의해 일련의 데이타블록중 최종 것을 호출후 상기 제 2 포인터 수단을 정지시키는 수단을 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제14항에 있어서, 버퍼 어드레스들을 검색하는 상기 목록 레지스터 수단의 연속하는 레지스터 장소들은 버퍼 레지스터들이 독출되는 상기 목록 레지스터 수단의 선택된 레지스터 장소들과 다르며, 상기 제어부는 검색된 버퍼 어드레스들 내에 기억된 데이타블록들을 상기 제 2 장치로 전송하도록 상기 제 2 포인터 수단에 의해 상기 선택된 순서의 레지스터 장소로부터 순차 검색되는 상기 선택된 순서로 지정된 버퍼 어드레스들의 레지스터 장소들내로 기입하도록 또한 레지스터 장소들의 수순을 선택하도록 동작할 수 있는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제21항에 있어서, 상기 제어부는 상기 제 2 장치에 의해 호출된 데이타블록들을 기억하는 버퍼 어드레스들을 지정하도록 동작할 수 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제14항에 있어서, 상기 제어부는 새로이 선택된 버퍼 어드레스들로서 상기 선택된 레지스터 장소들중 적어도 일부에 종전에 기입된 버퍼 어드레스들을 중복 기입하도록 동작할 수 있는 것이 특징인 분할 가능한 버퍼 메모리의 관리방법.
- 제23항에 있어서, 상기 제어부는 상기 목록 레지스터 수단내에 기입될 버퍼 어드레스들을 선택하고 또한 상기 버퍼 기입 수단에 의해 기입된 데이타블록들을 갖도록 동작할 수 있으며 상기 선택된 버퍼 어드레스들은 종전에 기입된 데이타블록들을 이미 기억하고 있으며, 그에 의해 종전에 기억된 데이타블록들은 상기 제 1 장치로부터 수신된 새로운 데이타블록들에 의해 중복 기입되는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
- 제16항에 있어서, 버퍼 메모리내에 기입된 데이타블록들은 상기 제 2 장치에 의해 호출되며, 일련의 복수의 데이타블록들을 포함하며, 상기 제어부는 상기 제 2 장치에 의해 호출된 일련의 데이타블록들중 첫째 것을 기억하도록 상기 제어부에 의해 선택된 버퍼 어드레스를 기억하는 상기 목록 레지스터 수단의 레지스터 장소에 상기 제1 및 제 2 포인터 수단을 둘다 세트하도록 동작하며 또한 상기 제 1 포인터 수단을 상기 일단의 데이타블록에 포함된 데이타블록들의 수에 상응하는 상기 순서화된 목록내의 레지스터 장소들의 수로 전진시키는 수단과 상기 제 2 포인터 수단을 동일한 레지스터 장소들을 억세스하도록 전진시키는 수단을 포함하는 것이 특징인 분할 가능한 버퍼 메모리의 관리장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74631891A | 1991-08-16 | 1991-08-16 | |
US07/746,318 | 1991-08-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR930004864A KR930004864A (ko) | 1993-03-23 |
KR950010944B1 true KR950010944B1 (ko) | 1995-09-26 |
Family
ID=25000322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019920014677A KR950010944B1 (ko) | 1991-08-16 | 1992-08-14 | 분할 가능한 버퍼메모리의 관리방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5539897A (ko) |
EP (1) | EP0528273B1 (ko) |
JP (1) | JP2531907B2 (ko) |
KR (1) | KR950010944B1 (ko) |
DE (1) | DE69230204T2 (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561823A (en) * | 1994-03-14 | 1996-10-01 | Conner Peripherals, Inc. | Monitor system for determining the available capacity of a READ buffer and a WRITE buffer in a disk drive system |
US5717918A (en) * | 1994-06-17 | 1998-02-10 | Hitachi, Ltd. | Method for concurrently performing a physical sequential scan of a database into a database buffer which is queued until a preceding scan is completed |
US5634099A (en) * | 1994-12-09 | 1997-05-27 | International Business Machines Corporation | Direct memory access unit for transferring data between processor memories in multiprocessing systems |
US6178471B1 (en) | 1998-07-21 | 2001-01-23 | International Business Machines Corporation | Method of sharing buffers for the streaming of unchanged data |
GB2373612B (en) * | 1999-12-22 | 2004-05-05 | Seagate Technology Llc | Buffer management system for managing the transfer of data into and out of a buffer in a disc drive |
JP2001251375A (ja) * | 2000-03-06 | 2001-09-14 | Sony Corp | 伝送方法、伝送システム、入力装置、出力装置及び伝送制御装置 |
US6826650B1 (en) | 2000-08-22 | 2004-11-30 | Qlogic Corporation | Disk controller configured to perform out of order execution of write operations |
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 |
US7457903B2 (en) | 2003-03-10 | 2008-11-25 | Marvell International Ltd. | Interrupt controller for processing fast and regular interrupts |
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 |
US7492545B1 (en) | 2003-03-10 | 2009-02-17 | Marvell International Ltd. | Method and system for automatic time base adjustment for disk drive servo controllers |
US7870346B2 (en) | 2003-03-10 | 2011-01-11 | Marvell International Ltd. | Servo controller interface module for embedded disk controllers |
US7139150B2 (en) | 2004-02-10 | 2006-11-21 | Marvell International Ltd. | Method and system for head position control in embedded disk drive controllers |
US8166217B2 (en) | 2004-06-28 | 2012-04-24 | Marvell International Ltd. | System and method for reading and writing data using 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 |
US9201599B2 (en) | 2004-07-19 | 2015-12-01 | Marvell International Ltd. | System and method for transmitting data 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 |
JP3926374B2 (ja) * | 2005-08-15 | 2007-06-06 | 株式会社ソニー・コンピュータエンタテインメント | バッファ管理方法およびバッファ管理装置 |
US7752356B1 (en) * | 2006-10-26 | 2010-07-06 | Marvell International Ltd. | Buffer management system and method |
US8127100B1 (en) * | 2007-04-16 | 2012-02-28 | Marvell International Ltd | Unlimited sub-segment support in a buffer manager |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4065810A (en) * | 1977-01-26 | 1977-12-27 | International Business Machines Corporation | Data transfer system |
US4866601A (en) * | 1987-09-24 | 1989-09-12 | Ncr Corporation | Digital data bus architecture for computer disk drive controller |
US4876642A (en) * | 1988-01-19 | 1989-10-24 | Gibson Glenn A | Rules and apparatus for a loop capturing code buffer that prefetches instructions |
WO1989007296A1 (en) * | 1988-01-27 | 1989-08-10 | Storage Technology Corporation | An early start mode method and apparatus |
JP2736092B2 (ja) * | 1989-01-10 | 1998-04-02 | 株式会社東芝 | バッファ装置 |
US5072369A (en) * | 1989-04-07 | 1991-12-10 | Tektronix, Inc. | Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates |
JP3085391B2 (ja) * | 1989-06-19 | 2000-09-04 | 株式会社日立製作所 | 通信装置 |
JP2989665B2 (ja) * | 1990-02-28 | 1999-12-13 | イーエムシー コーポレーション | ステージングメモリを介してデータを転送する方法および装置 |
-
1992
- 1992-08-05 EP EP92113337A patent/EP0528273B1/en not_active Expired - Lifetime
- 1992-08-05 DE DE69230204T patent/DE69230204T2/de not_active Expired - Fee Related
- 1992-08-12 JP JP4215104A patent/JP2531907B2/ja not_active Expired - Fee Related
- 1992-08-14 KR KR1019920014677A patent/KR950010944B1/ko not_active IP Right Cessation
-
1993
- 1993-11-02 US US08/147,096 patent/US5539897A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0528273A2 (en) | 1993-02-24 |
DE69230204D1 (de) | 1999-12-02 |
US5539897A (en) | 1996-07-23 |
DE69230204T2 (de) | 2000-02-10 |
KR930004864A (ko) | 1993-03-23 |
JPH0675897A (ja) | 1994-03-18 |
EP0528273B1 (en) | 1999-10-27 |
JP2531907B2 (ja) | 1996-09-04 |
EP0528273A3 (ko) | 1995-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR950010944B1 (ko) | 분할 가능한 버퍼메모리의 관리방법 및 장치 | |
US5884093A (en) | Hard disk cache for CD-ROM and other slow access time devices | |
JP3308554B2 (ja) | 制御装置及び制御装置の制御方法 | |
US6457102B1 (en) | Cache using multiple LRU's | |
US6115787A (en) | Disc storage system having cache memory which stores compressed data | |
US6023744A (en) | Method and mechanism for freeing disk space in a file system | |
EP0375188B1 (en) | File system | |
US6490666B1 (en) | Buffering data in a hierarchical data storage environment | |
US5717886A (en) | Semiconductor disk device and memory management method | |
US4974197A (en) | Batching data objects for recording on optical disks with maximum object count | |
JPS6148182B2 (ko) | ||
EP0439920B1 (en) | System and method for memory management in a microcomputer | |
JP4186509B2 (ja) | ディスクシステムとそのキャッシュ制御方法 | |
US5765193A (en) | System for controlling a write operation involving data held in a write cache | |
JPH0574102B2 (ko) | ||
US5136692A (en) | Memory disk buffer manager | |
US5664224A (en) | Apparatus for selectively loading data blocks from CD-ROM disks to buffer segments using DMA operations | |
JPS5942897B2 (ja) | テキストデ−タ内容転送装置 | |
US6029229A (en) | Digital data storage subsystem including directory for efficiently providing formatting information for stored records | |
JPS6141018B2 (ko) | ||
JP3020512B2 (ja) | フアイルデータ管理方法 | |
US5623639A (en) | Memory management system for the time-wise management of memory | |
EP0278425B1 (en) | Data processing system and method with management of a mass storage buffer | |
JPH05258585A (ja) | ファイル装置 | |
EP0341036B1 (en) | A method of operating an information handling system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
G160 | Decision to publish patent application | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20060925 Year of fee payment: 12 |
|
LAPS | Lapse due to unpaid annual fee |