KR100285637B1 - 기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체 - Google Patents

기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체 Download PDF

Info

Publication number
KR100285637B1
KR100285637B1 KR1019970048210A KR19970048210A KR100285637B1 KR 100285637 B1 KR100285637 B1 KR 100285637B1 KR 1019970048210 A KR1019970048210 A KR 1019970048210A KR 19970048210 A KR19970048210 A KR 19970048210A KR 100285637 B1 KR100285637 B1 KR 100285637B1
Authority
KR
South Korea
Prior art keywords
context
channel
disk
inactive
counter
Prior art date
Application number
KR1019970048210A
Other languages
English (en)
Other versions
KR19980024867A (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 KR19980024867A publication Critical patent/KR19980024867A/ko
Application granted granted Critical
Publication of KR100285637B1 publication Critical patent/KR100285637B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/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/0658Controller construction 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

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)
  • Software Systems (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명에 따르면, 복수의 명령어 콘텍스트(context)를 관리할 수 있는 기억 타겟 디바이스에서, 디스크 채널 및 호스트 채널을 동시적이고 독립적인 동작을 가능하게 하는 방법 및 관련 장치가 제공된다. 멀티-콘텍스트 타겟 디바이스 제어기에서, 활성 콘텍스트(active context)는 타겟 디바이스의 디스크 채널과 호스트 채널 사이에서의 데이터 블록들의 요구된 교환을 개시한다. 제어기는 호스트 채널 대역폭(bandwidth)과 같은 타겟 디바이스의 자원들을 충분히 이용하기 위해 활성 콘텍스트를 비활성 콘텍스트(inactive context)와 스왑할 수 있다. 본 발명은 호스트 채널 및 디스크 채널의 계속되는 독립적인 동작을 제공한다. 활성 콘텍스트와 관련된 카운터들은 활성 콘텍스트가 디스크 동작들의 개시 콘텍스트인 경우에 디스크 채널의 동작에 의해서만 갱신된다. 만일 비활성 콘텍스트가 디스크 동작을 개시하면, 디스크 채널과 관련된 카운터들은 비활성 상태의 개시 콘텍스트에서 아직 고려되지 않은, 버퍼 메모리와 디스크 채널 사이에서 교환된 데이터 블록들의 카운트를 유지한다. 비활성 개시 콘텍스트가 활성 콘텍스트로 다시 스왑되는 경우에, 디스크 채널과 관련된 카운터는 활성 콘텍스트에서 카운터를 자동적으로 갱신하기 위해 이용된다.

Description

기억 서브시스템 타겟 디바이스에서 독립적인 디스크 및 호스트 전송을 위한 방법 및 구조{METHOD AND STRUCTURE FOR INDEPENDENT DISK AND HOST TRANS FERS IN A STORAGE SUBSYSTEM TARGET DEVICE}
본 발명은 기억 서브시스템 타겟 디바이스에 관한 것으로서, 특히 복수의 명령어 콘텍스트(context)를 처리하는 능력을 가지는 타겟 디바이스 내에서의 분리적이고(separate), 동시적이며(simultaneous) 및 독립적인(independent) 호스트 및 디스크 전송을 관리하기 위한 방법 및 관련 구조에 관한 것이다.
기억 서브시스템은 정보의 지속적인 기억을 위한 하나 또는 그 이상의 기억 디바이스(storage device)를 포함하고 있다. 정보 기억에 관한 정보 및 구조는 통상적으로 입/출력 어댑터를 통해 호스트 컴퓨터 시스템 (또는 다른 기억 관리 디바이스)에 의해 기억 디바이스로 제공된다. 여기서 이용되는 개시 프로그램 디바이스(initiator device)는 호스트 컴퓨터 시스템 및/또는 관련 입/출력 어댑터를 말한다. 여기서 이용되는 타겟 디바이스는 개시 프로그램 디바이스가 입/출력 요구를 지시하는 기억 디바이스들 중 선택된 하나를 말한다. 개시 프로그램 및 타겟 디바이스가 통신하는 버스는 본 명세서에서 호스트 채널로서 언급된다.
개시 프로그램/타겟 디바이스라는 전문용어는 컴퓨터와 주변 디바이스를 상호 접속하는데 이용되는 널리 보급된 전자 버스인 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface)(이하, SCSI라 함)로서 잘 알려진 표준 버스에 공통적인 것이다. 그러나, 여기서 논의되는 종래 기술에서 알려진 문제점들과 본 발명에 의해 제공되는 해결책들은 파이버 채널(Fibre Channel), SSA, IPI, IDE, EIDE 등을 포함하여 잘 알려진 여러 개의 호스트 채널 매체 및 아키텍처에 공통적인 것이다. 설명의 편의를 위해, 본 발명에 의해 다루어진 문제점들 및 해결책들은 SCSI 호스트 채널 접속과 관련하여 제공된다. 그러나, 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 여기서 역점을 두고 다루어진 문제점들 및 해결책들이 다른 호스트 채널 환경에도 적용될 수 있다는 것을 용이하게 인식할 것이다.
SCSI 버스는 디스크 드라이브, 테이프 드라이브, 디스크 어레이, 및 다른 기억 디바이스와 주변 입/출력 디바이스들 같은 기억 주변 디바이스들에 (컴퓨터 시스템에서 SCSI 어댑터를 통해) 컴퓨팅 디바이스들을 접속하기 위한 공통적인 선택이 되었다. 버스 및 버스 상에서 교환되는 정보에 대한 SCSI 표준에 대한 명세는 ANSI 공보(publication) SCSI 2 Standards Document X3T9.2/375R 개정판 10L을 포함하여 여러 형태로 공개적으로 이용 가능하다. SCSI 명세에서, SCSI 버스에 부착된 각각의 디바이스는 그것이 SCSI 버스 상에서 식별되도록 하는 유일한 ID 값을 가지고 있다. 개시 프로그램 디바이스는 식별된 타겟 디바이스로 입/출력 요구를 개시하고, SCSI 버스(이용가능한 경우) 상에 제어 신호를 표명하고, 식별된 타겟 디바이스로 하나 또는 그 이상의 명령들을 지시함으로써 필요한 데이터를 전송한다. 일반적으로 타겟 디바이스는 요구된 동작을 수행하고 정보를 반송한다. 반송된 정보는 간단한 감지(sense) 정보 및 상태 정보를 포함하거나 또는 예를 들어, 대용량 기억 주변 디바이스로부터 검색된 데이터를 포함할 수 있다.
디스크 드라이브는 자기(magnetic) 또는 광학 매체에서 정보의 필요한 물리적 기억 및 검색을 수행하도록 헤드 디스크 어셈블리(Head Disk Assembly:HDA)에 명령하는 제어 회로 및 절차(methods)(내장형 제어기)를 통해 데이터를 저장하고 검색한다. HDA에 대한 제어기 내의 인터페이스는 여기서 디스크 채널 또는 포매터(formatter)로 언급된다. 통상적으로 호스트 채널을 통한 데이터 전송 대역폭(bandwidth)은 디스크 채널에서의 대역폭보다 상당히 더 크다.
디스크 드라이브(또는 다른 SCSI 주변 디바이스)가 더 느린 디스크 채널을 통해 액추에이터(actuator)와의 상호작용을 통해 입/출력 요구를 처리하려고 시도하는 동안에 호스트 채널의 대역폭의 상당 부분이 유휴상태(idle)로 될 수 있다. 표준 SCSI 분리 및 재접속 프로토콜들은 다른 디바이스들이 이 기간동안 SCSI 버스를 이용하는 것을 허용하게 된다. 만일 다른 개시 프로그램/타겟 접속이 설정되지 않으면, 호스트 채널은 분리된 타겟 디바이스가 수신된 요구를 처리하는 동안 유휴상태(idle)로 남아 있게 된다. 오히려, 개시 프로그램은 단순히 (타겟이 개시 프로그램을 재선택할 때) 다수의 개시된 명령어의 완료를 기다린다.
비록 타겟 디바이스가 첫 번째 개시된 명령어 시퀀스에 응답할 수 없지만, 전형적인 타겟 디바이스들도 역시 비지상태(busy)의 디스크 채널의 이용을 필요로 하지 않고 처리될 수 있는 다른 명령어에 응답할 수 없다. 다시 말하면, 현재의 타겟 디바이스들은 동시에 다수의 명령어를 처리하는 것이 아니라 수신된 명령어들을 직렬로 처리한다. 그러므로, SCSI 표준들에 따르면 타겟 디바이스들은 그것이 소정의 시간에 단지 단일의 명령어(단일 스레드(thread))만이 처리될 수 있도록 제한한다는 의미에서 단일 스레드 방식(threaded)으로 불린다. 그러므로, 단일 스레드 방식의 아키텍처는 고속 호스트 채널을 충분히 이용하지 않는 경향이 있으며, 따라서 다른 큐잉된(queued) 명령어들의 대기시간을 늘어나게 한다.
미국 특허 출원 제 08/724,385 호에서 제안된 해결책은 타겟 디바이스 내의 자원 이용도를 개선시키기 위해 타겟 디바이스내의 복수의 명령어들의 처리를 위해 제공된 것이다. 특히, 명령어의 처리에 관련된 모든 파라미터를 포함하는 유일한 콘텍스트에서 각각 복수의 호스트 명령어들이 처리될 수 있다. 하나의 명령어, 즉 활성 콘텍스트(active context)가 한 번에 처리된다. 그러나, 활성 콘텍스트의 처리가 타겟 디바이스의 자원들을 충분히 이용하지 않을 경우에는, 타겟 디바이스의 자원을 충분히 이용하기 위해 다른 명령어, 즉 하나 또는 다수의 비활성 콘텍스트(inactive context)가 활성 콘텍스트와 스왑된다(swapped).
비록 이러한 아키텍처가 타겟 디바이스에서 자원들의 이용도를 개선할 수 있도록 하지만, 디스크 채널의 최대 활용을 보증하는데 있어서는 문제점이 야기된다. 디스크 채널이 활성 콘텍스트(호스트 전송)를 위해 디스크 전송을 처리하는 동안에, 이러한 전송 처리에 관련된 다양한 레지스터 및 카운터들이 디스크 채널 처리에 의해 갱신된다. 만일 활성 콘텍스트가 타겟 디바이스의 호스트 채널 자원을 충분히 이용하기 위해 다른 비활성 콘텍스트와 스왑되면, 디스크 채널은 관련된 현재 비활성인 콘텍스트를 위해 디스크 전송의 처리를 쉽게 계속할 수 없다. 전송의 파라미터와 관련된 레지스터 및 카운터는 활성 콘텍스트에서 디스크 채널에 의한 갱신에 더 이상 이용될 수 없다.
본 발명은 디스크 채널 및 호스트 채널의 분리된 동시적인 동작을 허용하도록 하는 방법 및 관련 구조를 제공함으로써 상기 문제 및 다른 문제들을 해결하여 유용한 기술 수준을 진보시킨다.
본 발명은 호스트 채널의 이용불가능으로 인해 디스크 채널을 정지시키는 것을 피하기 위해 복수의 콘텍스트들의 처리에 이용되는 레지스터들의 특정 구조를 제공한다. 특히, 바람직한 실시예에서, 활성 명령어 콘텍스트와 관련된 카운터들의 제1 세트는 타겟 디바이스의 버퍼 메모리와 호스트 사이에서의 데이터 교환을 제어하기 위해 이용되고, 디스크 채널과 관련된 카운터들의 제2 세트는 호스트 채널을 다른 명령어 콘텍스트가 점유하고 있는 동안에 버퍼 메모리와의 디스크 블록의 교환에 관한 정보를 저장하기 위해 이용된다. 만일 활성 콘텍스트가 비활성 콘텍스트와 스왑되어 동일하지 않은 콘텍스트를 위해 디스크 채널이 동작하고 있다면(즉, 활성 콘텍스트가 디스크 콘텍스트와 동일하지 않다면), 본 발명의 구조의 다른 카운터들은 디스크 채널의 계속되는 동작과 관련된 신호들을 저장하는데 이용된다.
제1 레지스터 세트에서의 활성 명령어 상태 및 디스크 채널 동작과 관련된 카운터들은 활성 및 비활성 명령어 구조들이 스왑되어야 하는 때를 자동적으로 판단하기 위해 이용된다. 디스크 채널과 관련된 카운터들과의 임계값 비교는 호스트 채널이 데이터 전송을 시작하지 않는 경우에 디스크 채널이 일시정지할 예정인지 판단하기 위해 이용된다. 이러한 경우에, 활성 명령어 콘텍스트는 가능한 빨리 디스크 채널과 관련된 비활성 콘텍스트와 스왑되게 된다. 또한, 활성 콘텍스트가 디스크 채널과 동일한 명령어 처리 콘텍스트로 스왑될 때, 디스크 채널과 관련된 카운터들에 저장된 값들이 활성 콘텍스트의 카운터로 전송된다.
그러므로, 본 발명의 목적은 기억 타겟 디바이스의 호스트 채널 및 디스크 채널 모두에서 분리적인 동시 전송을 관리하기 위한 방법 및 관련 장치를 제공하는 것이다.
본 발명의 다른 목적은 기억 타겟 디바이스의 호스트 채널 및 디스크 채널 모두에서 분리적인 동시 전송을 가능하게 하기 위해 기억 타겟 디바이스에서 이중 카운터들을 관리하기 위한 방법 및 관련 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 호스트 채널이 다른 목적에 이용되고 있는 동안에 진행중인 디스크 채널 동작과 관련된 정보를 저장하기 위한 방법 및 관련 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 명령어 콘텍스트가 재활성화 될 때 진행중인 디스크 채널 동작과 관련된 저장된 정보에 상응하는 명령어 콘텍스트를 갱신하기 위한 방법 및 관련 장치를 제공하는 것이다.
도1은 본 발명의 방법 및 구조를 구체화하는 기억 타겟 디바이스(디스크) 제어기의 블록도.
도2는 본 발명의 복수의 콘텍스트(multiple context) 관리 특징을 구현하기 위한 레지스터 세트의 블록도.
도3은 타겟 디바이스에서 자원들을 충분히 이용하기위해 복수의 콘텍스트들 사이에서 스위치하기 위한 본 발명의 방법의 동작을 설명하는 흐름도.
도4는 복수의 콘텍스트들의 관리에서 호스트 채널 동작 및 디스크 채널 동작 사이에서의 빠른 스위칭을 위해 제공되는 본 발명의 회로의 블록도.
도5는 본 발명에 따른 복수의 콘텍스트들을 관리하는 본 발명의 방법의 상태도.
*도면의 주요부분에 대한 부호의 설명
100:기억 타겟 디바이스 101:제어기
102:CPU 103:CPU 인터페이스
104:디스크 포매터 106:DMA
108:호스트 채널 인터페이스 112:버퍼 관리자
114:버퍼 메모리 140:호스트
비록 본 발명이 다양한 변형 및 다른 형태가 가능하지만, 특정 실시예가 도면에 예시적으로 도시되었으며 여기서 상세히 설명될 것이다. 그러나, 이것은 본 발명을 개시된 특정 형태에 제한하고자 하는 것은 아니며, 본 발명은 청구범위에 의해 정의된 바와 같은 본 발명의 사상 및 범위 내에 속하는 모든 변형, 등가물 및 대안을 포괄하는 것임을 이해해야 한다.
타겟 디바이스 제어기
도1은 본 발명의 기술분야에서 현재 알려진 (디스크 디바이스와 같은) 기억 타겟 디바이스(100)에 대한 전형적인 제어 구성요소의 블록도이다. 타겟 디바이스(100)는 버스(150)와 호스트 채널 인터페이스(108)를 통해 부착된 호스트(140)와의 통신을 위한 제어 처리 기능을 제공하는 제어기(101)를 포함한다. 제어기(101) 내의 디스크 포매터(104)는 버스(152)를 통해 헤드 디스크 어셈블리(110)(HDA)를 위한 실시간 제어 기능을 수행한다. 본 발명의 기술분야에서 알려진 바와 같이, 버스(150)는 타겟 기억 디바이스(100)를 연결하기 위한 SCSI, 파이버 채널(Fibre Channel), IDE, EIDE, IPI, PCI, SSA 등을 포함하여 여러 개의 표준 버스 구조 중 하나가 될 수 있다. 버스(152)는 액추에이터와 모터의 동작을 위한 디지털 및 서보 제어 신호 및 제어기(101)와 (회전 자기 또는 광 디스크들과 같은) HDA(110) 기억 매체 사이에서의 정보 전송을 위한 아날로그 신호들을 포함하는 버스 구조를 나타낸다.
도1에 도시된 바와 같이, 타겟 디바이스(100)는 버스(154)를 경유하여 CPU 인터페이스(103)를 통해 제어기(101)의 전반적인 동작을 제어하는 CPU(102)를 포함한다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 상호접속 버스(도시?? 않음)는 CPU(102)가 제어기(101)의 다른 구성요소들과 신호를 교환하도록 허용한다는 것을 용이하게 인식할 것이다. 또한, CPU(102)는 제어기(101)의 다른 구성요소들과 일체로 구성될 수 있다. 특정 응용에 요구되는 집적도 레벨을 결정하는 이러한 디자인 선택사항들과 고려대상들은 본 발명이 속한 기술분야에서 잘 알려져 있다. 타겟 디바이스(100) 내의 버퍼 메모리(114)는 버스(156)를 통하여 제어기(101)의 버퍼 관리자(112)에 접속되어 있다. 버퍼 메모리(114)는 부착된 호스트(140)와 HDA(110) 내의 기억 매체 사이에서 간접적으로 교환된 정보를 일시적으로 버퍼링하고, 저장 및 검색하기 위해 이용된다. 또한, 버퍼 메모리(114)는 엔지니어링 디자인 선택사항의 전형적인 대상으로서 제어기(101)의 구성요소들 내에 통합될 수 있다. 또한, 도1에 도시된 바와 같이, CPU(102)는 제어기(101)의 전반적인 제어를 위해 명령어들 및 변수들의 기억을 위한 프로그램 메모리를 포함한다.
본 명세서에서, 호스트 채널 버스(150) 및 호스트 채널 인터페이스(108)는 조합하여 또는 단독으로 호스트 채널로서 언급되고, 디스크 포매터(104), 버스(152) 및 HDA(110)는 조합하여 또는 단독으로 디스크 채널로서 언급된다.
CPU(102)는 (호스트 채널 인터페이스(108)와 관련하여) 호스트 채널을 통하여 부착된 호스트로부터의 요구를 수신하고, 그 요구를 해석하고, 그 요구를 충족시키기 위해 (즉, HDA 상에서 정보를 판독하거나 또는 기록하기 위해) 타겟 디바이스(100) 내에서 적절한 처리를 개시하는 타겟 디바이스(100)의 전반적인 동작을 제어한다. 디스크 채널은 디스크 포매터(104)를 이용하여 버스(152)를 통해 HDA(110)를 관리하는데 필요한 디지털, 아날로그 및 서보 제어신호들에 대한 특정 처리를 수행한다.
DMA(106)는 버스(156,162,164) 및 버퍼 관리자(112)를 통해 호스트 채널 인터페이스(108)와 버퍼 메모리(114) 사이에서 직접 메모리 액세스를 제공한다. 호스트 채널의 높은 대역폭(bandwidth) 용량은 CPU(102)에 의한 개입을 필요로 하지 않고 버퍼 메모리(114)에 대한 빠른 액세스를 필요로 한다. 이러한 고속 데이터 교환이 특정 명령어를 처리하는데 필요로 되지 않을 경우에, 호스트 채널 인터페이스(108)는 버스(158,156) 및 버퍼 관리자(112)를 통해 버퍼 메모리(114)와 정보를 교환할 수 있으며, 그에 따라 DMA(106)의 이용을 바이패스하게 된다. 디스크 포매터(104)는 버스(156,160) 및 버퍼 관리자(112)를 통해 버퍼 메모리(114)와 데이터를 교환한다.
CPU(102), 호스트 채널 및 디스크 채널과 관련하여 콘텍스트 관리자(context management)(107)는 복수의 명령어 콘텍스트를 관리하기 위해 본 발명의 방법들의 특정 처리를 수행한다. 특히, 활성 명령어 콘텍스트 및 하나 또는 그 이상의 비활성 명령어 콘텍스트들이 콘텍스트 관리자(107)내의 구조에 저장된다. 보다 상세하게 후술되는 바와 같이, 콘텍스트들을 저장하기 위한 콘텍스트 관리자(107) 내의 콘텍스트 구조는 레지스터 세트 또는 다른 메모리 구성요소가 될 수 있다. 또한, 후술되는 바와 같이, 본 발명의 방법들에 의해 관리될 수 있는 비활성 명령어 콘텍스트들의 수를 확장시키기 위해 추가적인 명령어 콘텍스트들이 버퍼 메모리(114)에 저장될 수 있다.
콘텍스트 관리자내의 로직은 비활성 콘텍스트가 버퍼 메모리(114)로부터 콘텍스트 관리자(107)로 로딩되거나 또는 콘텍스트 관리자(107)로부터 버퍼 메모리(114)로 저장되어야 하는 때를 판단한다. 또한, (DMA(106) 및 디스크 포매터(104)내에 포함되어 도시된) 전송 제어 로직(109)과 함께 콘텍스트 관리자(107)는 콘텍스트 관리자(107)내의 활성 콘텍스트 및 비활성 콘텍스트가 타겟 디바이스 내의 자원을 최대한 이용하거나 또는 호스트 채널 대역폭의 이용도를 개선하기 위해 스왑(토글)되어야 하는 때를 판단한다.
본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 도1이 본 발명의 방법 및 구조가 유용하게 적용될 수 있는 타겟 디바이스 제어기의 개념적인 블록도로서만 의도되어진 것임을 용이하게 인식할 것이다. 도1에 도시된 디자인의 많은 등가의 변형들 역시 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 자명하다. 특히, 제어기(101)의 세부 구성요소들은 여러 가지 기능적으로 동가의 방식으로 세분화될 수 있다. 특히, 이 기술분야에 통상의 지식을 가진 자는 특정 기능들이 CPU(102) 내의 프로그램된 명령어들에서 유연성 있게 구현될 수 있다는 것을 판단할 수 있으며, 또는 다중 콘텍스트들의 관리를 위해 통상의 집적 회로의 속도가 요구된 다는 것을 판단할 수 있다. 그러므로, 본 발명의 방법은 도1의 타겟 디바이스(100)내에서 일반적으로 동작가능한 것으로 후술되어 있다. 이 방법들은 CPU(102)내의 프로그램된 명령어나 또는 제어기(101)내의 통상적인 회로 및 로직(즉, 콘텍스트 제어기(107) 및 전송 제어기(109))으로서 구현될 수 있다. 그러므로, 도1의 블록도는 본 발명의 방법 및 구조가 구체화될 수 있는 타겟 디바이스(100) 내의 한가지 가능한 구성요소들의 배열을 제안하기 위해 의도된 것이다.
명령어 콘텍스트
여기서, 사용되는 바와 같이, 콘텍스트 또는 명령어 콘텍스트는 타겟 디바이스의 제어기 내에서 단일 명령어를 처리하기 위해 필요한 모든 정보를 말한다. 이러한 콘텍스트의 요소들은 요구된 데이터 전송이 진행됨에 따라 증가되거나 또는 감소되는 어드레스 및 길이 값들과 전송의 특정 옵션들을 정의하는 플래그들을 포함할 수 있다. 이러한 어드레스 포인터 및 카운터는 디스크 채널 및/또는 버퍼 메모리로/로부터 정보의 호스트 채널 전송에 적용된다. 여기서 사용되는 바와 같이, 활성 콘텍스트는 부착된 호스트 디바이스로부터의 명령어(즉, 호스트 채널을 통해 현재 데이터를 전송하는 명령어)를 대신하여 도1의 제어기(101)내에서 현재 처리되는 명령어의 명령어 콘텍스트이다. 본 발명의 방법 및 구조는 타겟 디바이스내의 하나 또는 그 이상의 부가적인 콘텍스트들을 관리하기 위한 기능을 부가한다. 또한, 본 명세서에서 부가적인 콘텍스트들은 비활성 콘텍스트들 또는 비활성 명령어 콘텍스트들로서 언급된다.
본 발명의 구조는 복수의 명령어들을 처리하는데 이용하기 위해 복수의 명령어 콘텍스트들을 저장한다. 하나의 활성 콘텍스트 및 하나 또는 그 이상의 비활성 콘텍스트들이 본 발명의 제어기내에 저장된다. 본 발명의 방법은 타겟 디바이스에서 복수의 명령어들을 동시에 처리하기 위해 저장된 콘텍스트들을 관리한다. 활성 콘텍스트가 비활성 콘텍스트들 중 하나로 대체되어야 하는지 여부와 그 때를 판단하기 위해 본 발명의 방법들에 의해 다양한 상태들이 모니터된다. 활성 및 비활성 콘텍스트들의 이러한 스왑(또한, 여기서 토글(toggle)로서도 언급됨)은 활성 콘텍스트를 이제 비활성화시키고, 이전의 비활성 명령어 콘텍스트에 관련된 처리를 시작한다(그에 따라 활성 콘텍스트로 만든다). 콘텍스트 정보는 그 사이에 부과되는 최소 지연으로 콘텍스트 스위치를 달성하기 위해 본 발명의 구조 및 장치들에 의해 빠르게 자동적으로 스위치된다.
그러므로, 타겟 디바이스의 제어기는 초기에 호스트 채널 인터페이스에서 수신된 명령어들을 처리한다. 만일 인터페이스가 명령어가 바로 처리될 수 있다고 판단하면, 콘텍스트 관리자내의 사전-정의된 콘텍스트가 버퍼 메몰로부터 선택되고, 로딩되며(필요한 경우), 활성 콘텍스트로 스왑된다. 제어기의 마이크로프로세서는 호스트 채널 인터페이스(108)를 통해 수신된 미래의 명령어들을 예상하여 콘텍스트들을 생성한다. 이러한 방식으로, 마이크로프로세서는 가장 공통적인 명령어 처리 환경에서 성능상의 문제를 일으키지 않게 되며, 오히려 백그라운드 콘텍스트 관리 처리를 수행하다.
다중 콘텍스트 관리 방법
일반적으로 본 발명의 방법은 특정 타겟 디바이스의 특정 성능 속성들을 개선하기 위해서 콘텍스트들을 스위칭 또는 스왑한다. 예를 들어, 부착된 호스트로/로부터 데이터를 이동시키기 위해 호스트 채널 대역폭의 이용을 최대화하거나 또는 하나의 타겟 디바이스로 지시된 호스트로부터의 복수의 명령어들을 처리하는데 있어 대기시간을 최소화하는 것이 바람직하다. 또는, 예를 들어 타겟 디바이스 내에서 연속적인(합체된) 명령어들을 처리하기 위해서 디스크 기억 타겟 디바이스에서 최소 회전 대기시간을 보증하는 것이 바람직하다. 이들 및 다른 성능상의 목표들은 원하는 성능 목표를 최대화하기 위해 어떤 명령어 콘텍스트가 활성 콘텍스트로서 처리되어야 하는지를 판단하기 위해 조합될 수 있다.
본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 특정 성능 목표들이 특정 타겟 디바이스 환경 및 응용에 유일한 것임을 용이하게 인식할 것이다. 원하는 목표들은 호스트 채널, 디스크 채널, 버퍼 메모리 및 HDA 어셈블리들의 특성에 따라 변화될 수 있다. 본 발명의 방법은 복수의 명령어 콘텍스트들 사이에서의 콘텍스트 스위칭을 통해 소정의 성능 목표들이 조정되고 최대화될 수 있는 구조 및 방법들을 정의한다.
도3은 타겟 디바이스내의 복수의 콘텍스트들을 관리하기 위한 본 발명의 방법을 고레벨로 설명하는 흐름도이다. 본 발명의 방법의 세부적인 동작은 개선될 성능 목표들 및 정밀한 응용 환경에 의존한다. 도3의 처리는 전술한 바와 같이 도1의 제어기(101) 내에서 실시될 수 있으며, 특히 CPU(102), DMA(106), 디스크 포매터(104) 및 제어기(102)의 버퍼 관리자(112)의 조합 내에서 실시될 수 있다. 복수의 콘텍스트의 스위칭을 관리하기 위한 특정 상태(state) 머신 모델은 도5와 관련하여 상세하게 후술된다. 그러므로, 도3의 흐름도는 본 발명의 방법의 전반적인 제어 흐름을 나타낸다.
현재 활성 명령어 콘텍스트의 처리를 개시하거나 계속하기 위해, 먼저 도3의 요소(300)가 실시될 수 있다. 요소(302)는 활성 콘텍스트의 처리가 완료되거나 또는 일시정지되는 것을 검출하기 위해 도1의 제어기(101)내에서의 상태 변화에 응답하여 실시된다. 요소(302)의 처리를 개시할 수 있는 상태의 변화는 예를 들어, 현재 활성 명령어 콘텍스트의 완료, 호스트로부터의 다른 명령어 콘텍스트의 수신, 디스크 채널의 상태 변화 등을 포함한다.
만일 요소(302)가 현재 활성 콘텍스트 처리가 완료된 것으로 판단하면, 다른 현재 비활성 상태의 콘텍스트가 활성 (현재 완료된) 콘텍스트에 링크되어 있는지 판단하기 위해 요소(304)가 실시될 수 있다. 만일 이러한 비활성 콘텍스트가 (방금 완료된) 현재 활성 상태의 콘텍스트에 링크되어 있다면, 이 콘텍스트는 요소(306)에 의해 활성 콘텍스트로 로딩된다. 다음에, 새로 활성화된 콘텍스트에 관한 처리를 개시하기 위해 요소(300)가 실시될 수 있다. 활성 콘텍스트가 카피되는 비활성 콘텍스트는 로컬 마이크로프로세서와 교환될 상태로 유지되지 않는 한 호스트로부터 수신되는 다른 명령어 콘텍스트를 저장하는데 자유롭다. 이런 경우에, 활성 콘텍스트는 로컬 마이크로프로세서가 비활성 콘텍스트를 소거할 때까지 비활성 콘텍스트로 스왑되어 유지된다. 콘텍스트들의 링킹(linking)에 대해서는 본 발명의 방법 및 구조들의 하나의 유용한 응용예로서 상세하게 후술된다.
만일 요소(304)가 완료된 활성 콘텍스트와 관련된 링크된 콘텍스트를 발견할 수 없으면, (비어있는 미사용 명령어 콘텍스트와 구별되는) 소정의 처리 단계에서 현재 명령어들을 저장하고 있는 비활성 콘텍스트들이 존재하는지 판단하기 위해 요소(308)가 실시될 수 있다. 만일 활성 상태로 처리될 수 있는 비활성 명령어들이 존재하지 않는다면, 부착된 호스트로부터 다른 명령어가 수신될 때까지 도3의 방법의 처리가 완료된다. 그렇지 않으면, 선택된 비활성 콘텍스트로부터 활성 콘텍스트를 로딩하기 위해 요소(310)가 실시된다. 만일 하나 이상의 비활성 콘텍스트들이 본 발명에 따라 저장된다면, 비활성 콘텍스트들 중 바람직한 하나를 선택하여 활성 콘텍스트로 로딩하기 위해 요소(310)가 실시된다. 이러한 선택은 특정 타겟 디바이스 환경 및 응용의 필요성 및 성능 목표에 따른 것이다. 어떠한 응용예에서는, 다음 활성 콘텍스트가 될 비활성 콘텍스트의 선택 순서가 중요할 수 있다. 다른 응용예에서 있어서는, 선택 순서가 중요하지 않을 수 있다. 본 발명이 속한 기술분야에 통상의 지식을 가진 자는 요소(310)에서 수행되는 바와 같이 다수의 비활성 콘텍스트들 중에서 가능한 많은 선택 기준을 용이하게 인식할 것이다. 다음에, 처리는 요소(300)로 되돌아가서 계속되어, 새로 활성화된 콘텍스트의 처리를 개시하게 된다. 그로부터 활성 콘텍스트가 로딩되었던 비활성 콘텍스트는 이제, 전술한 바와 같이 상태 정보가 로컬 마이크로프로세서와 교환되어야 하지 않는다면 호스트로부터 수신되는 다른 명령어에 의한 재사용이 자유롭다.
만일 요소(302)가 현재 활성 콘텍스트가 여전히 처리중에 있다고 판단하면, 타겟 디바이스 자원들이 본 발명의 응용예의 특정 성능 목표들에 관하여 불충분하게 이용되고 있는지를 판단하기 위해 요소(312)가 실시될 수 있다. 만일 타겟 디바이스 자원들이 불충분하게 이용되고 있다면, 요소(314)가 동작하여 자원 이용도를 개선하게 되는 비활성 명령어 콘텍스트들 중 하나를 선택한다.
요소(310)에 관하여 전술된 바와 같이, 원하는 성능 목표들을 결정하는데 이용되는 기준은 특정 타겟 디바이스 응용에 독특한 것이다. 예를 들어, 많은 환경에서 이용 가능한 호스트 채널 대역폭의 증가된 활용은 부가적인 명령어 콘텍스트들을 수용하여 처리함으로써 호스트 명령어들의 처리에서의 대기시간을 감소시키는데 있어 바람직한 목표가 된다. 마찬가지로 회전하는 디스크 드라이브들에서 나타나는 회전 지연시간으로 인한 타겟 디바이스내의 명령어 처리에서 지연시간 감소는 (즉, 타겟 디바이스의 디스크 채널의 최대 이용도를 유지하는) 바람직한 목표이다. 그러므로, 활성화될 예정된 비활성 콘텍스트의 선택은 이들 및 다른 성능상의 목표를 개선시키기 위해 추구할 수 있다. 호스트 채널을 통해 정보를 전송할 준비가 되어 있는 비활성 콘텍스트의 선택은 호스트 채널 이용도를 개선시키게 된다. 예를 들어, 디스크 채널의 상태에 관계없이 호스트 채널을 통해 정보를 전송하기 위해 디스크 채널 정보 교환을 필요로 하지 않는 명령어가 동작할 수 있다. SENSE(감지) 및 INQUIRY(질의)와 같은 SCSI 명령어들은 디스크 채널의 상태에 관계없이 호스트 채널을 통해 데이터를 전송할 수 있는 이러한 명령어들의 예이다. 디스크 채널 프로세서에 의해 결정되는 바와 같은 현재의 디스크 위치에 인접하는 디스크 어드레스를 지정하는 비활성 명령어 콘텍스트는 회전 지연시간을 감소시키기 위해 선택될 수 있다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 요소(310,314)의 처리에 의해 적절한 평가 및 선택에 의해 개선될 수 있는 많은 동등한 성능 목표들을 용이하게 인식할 것이다.
다음에, 요소(316)가 동작하여 현재 활성 명령어 콘텍스트를 선택된 비활성 명령어 콘텍스트와 스왑한다. 그에 따라 활성 콘텍스트는 비활성이 상태가 되는 반면에, 선택된 비활성 콘텍스트가 활성 상태로 된다. 하기에서 상세히 설명되는 본 발명의 장치는 다음 명령어를 활성화시키는 잠재적인 성능상의 장점들을 최대화하기 위해 매우 빠르게 자동적으로 스왑을 수행한다. 다음에, 처리는 요소(300)와 계속되어, 새로 활성화된 명령어 콘텍스트의 처리를 계속하거나 또는 개시한다.
본 발명의 방법들은 소정의 성능 기준에 관하여 타겟 디바이스의 성능을 계속해서 평가한다. 또한, 본 발명의 방법들은 처리를 위해 다수의 명령어들 중 바람직한 하나를 선택하게 되며, 그에 따라 타겟 디바이스의 성능을 개선시킨다.
콘텍스트 기억의 바람직한 실시예
도2는 현재 잘 알려진 방식으로 본 발명의 콘텍스트 스왑 구조를 구현하는 본 발명의 회로들의 블록도이다. 도2에 도시된 시스템은 도1의 콘텍스트 관리자(107)내의 한 세트의 레지스터 각각에 2개의 콘텍스트를 저장한다. 활성 콘텍스트(202)는 (여기서 활성 파라미터로도 언급된) 현재 활성 명령어를 처리하는데 이용된 파라미터들의 현재의 값들을 저장하는 (여기서 활성 레지스터 세트로도 언급된) 한 세트의 레지스터(214,216,218)를 포함한다.
제어기의 호스트 채널 인터페이스 및 마이크로프로세서는 각각 현재 활성 명령어를 개시하는데 요구되는 레지스터 값들을 조작할 수 있다. 멀티플렉서(MUX)(234, 236, 238)는 각각 레지스터(214, 236, 238)와 결합되어 있다. 각각 멀티플렉서는 신호 경로(294, 296, 298)를 통해 결합된 레지스터에 각 멀티플렉서의 출력을 제공한다.
활성 명령어가 처리되면, 각 레지스터 값은 명령어 처리에 요구되는 바대로 수정된다. 예를 들어, 어드레스 레지스터 값들과 카운터 레지스터 값들은 각 데이터가 소스 위치에서 타겟 디바이스내의 목적지로 이동될 때 증가 및/또는 감소된다. 각 레지스터(214, 216, 218)의 현재 값 출력은 각각 기능 블록(264, 266, 268)으로 경로(254, 256, 258)를 통해 인가된다. 기능 블록들은 명령어를 처리함에 있어 전송된 각 데이터에 요구되는 레지스터 값을 조정(즉, 필요한 값들을 증가 또는 감소)한다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 명령어 콘텍스트에서 일정 값들이 각 데이터의 전송과 조정될 필요가 없는 반면 다른 값들은 단순한 증가 또는 감소 동작보다 더 복잡한 기능을 필요로 한다는 것을 용이하게 인식할 것이다. 또한, 이러한 무동작 또는 더 복잡한 기능들은 기능 블록(264∼268)에 의해 나타난다.
기능 블록(264, 266, 268)의 수정된(또는 수정되지 않은) 출력 값은 각각 경로(295, 297, 299)를 통해 멀티플렉서(MUX)(234, 236, 238)에 각각 인가된다. 멀티플렉서들은 결합된 레지스터로 수정 값 입력을 인가하기 위해 제어기의 (도시되지 않은) 다른 회로들에 의해 요구되는 바대로 제어된다.
(결합된 멀티플렉서 및 기능 블록들을 따라) 요구되는 레지스터들의 수는 명령어 콘텍스트를 저장하기 위해 필요한 다수의 파라미터들에 따라서 결정된다. 또한, 레지스터들의 폭(width)은 특정 타겟 디바이스 환경에서 요구되는 레지스터 값들에 의해 결정된다. 본 발명을 구현하는 현재 가장 잘 알려진 모드에서, 모든 레지스터들은 동일한 폭(width)을 가지고 있고 이러한 다수의 레지스터들은 하기의 콘텍스트 데이터 구조를 저장하는데 충분하다.
Figure pat00001
여기서, HSBA는 호스트 세그먼트 최저 어드레스(32비트),
HSCA는 호스트 세그먼트 최고 어드레스(32비트),
HAP는 호스트 어드레스 포인터(32비트),
HXFER은 호스트 블록 전송 카운트(16비트),
HBSC는 호스트 버퍼 공간 카운터(16비트),
모드, 구성, 태그 및 상태는 DMA 동작에 대한 플래그(각각 8비트),
SSC는 섹터(블록) 크기 카운터(16비트),
LSC는 논리적 섹터 카운터(32비트), 및
에러 체크는 메모리에서의 콘텍스트 재로딩의 성공 여부를 확인하기 위한 체크 코드(체크섬(checksum) 또는 주기적인 리던던시(redundancy) 코드와 같은 32비트)이다.
본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 많은 동등한 데이터 구조들이 특정 데이터 전송 명령어의 명령어 콘텍스트를 나타내기 위해 이용될 수 있음을 인식할 것이다. 그러므로, 전술한 데이터 구조에 이용된 특정 어드레스 포인터들과 카운터들은 명령어 콘텍스트의 기억을 위한 데이터 구조를 구현하는 하나의 모드 예로서 의도된 것이다.
비활성 콘텍스트(200)는 활성 콘텍스트(202)의 레지스터 수와 동일한 다수의 레지스터(204, 206, 208)를 포함한다. 각 비활성 콘텍스트 레지스터(204, 206, 208)는 활성 콘텍스트의 레지스터, 주로 레지스터(214, 216, 218)와 동일한 폭을 가지고 각각 일대일 대응한다. 비활성 레지스터 세트(204, 206, 208)는 하나의 비활성 명령어의 처리와 관련한 (여기서, 비활성 파라미터들로 언급된) 파라미터들을 저장하는데 이용된다. 각 비활성 레지스터(204, 206, 208)는 각각 경로(284, 286, 288)를 통해 레지스터에 인가되는 입력 값을 결정하는 각 멀티플렉서(224, 226, 228)와 결합되어 있다.
각 비활성 레지스터(204, 206, 208)의 출력은 각각 경로(244, 246, 248)를 통해 상응하는 각 활성 레지스터(214, 216, 218)와 결합된 멀티플렉서(234, 236, 238)의 입력단에 인가된다. 마찬가지로, 각 레지스터(214, 216, 218)의 출력 값은 상응하는 각 비활성 레지스터(204, 206, 208)와 결합된 각 멀티플렉서(224, 226, 228)의 입력단에 인가된다. 이러한 레지스터 및 멀티플렉서의 알려진 정정 시간들(settling times)과 관련하여, 이러한 구조는 활성 및 비활성 레지스터 세트들의 값들이 멀티플렉서(224, 226, 234, 236, 228, 238)의 적합한 선택에 의해 빠르게 스왑되게 한다.
전술한 바와 같이, 제어기에서 처리 구성요소들은 도시되지 않은 적합한 경로를 통해 레지스터들(204, 214, 206, 216, 208, 218)에서 값들을 직접적으로 로딩 및 조작할 수 있다. 비활성 레지스터들로 값들을 로딩하기 위한 이러한 액세스에 대한 경로예는 비활성 레지스터들과 결합된 멀티플렉서들의 입력단에 마이크로프로세서 공급 값을 인가하는 경로(250)로서 도시되어 있다. 레지스터들에 대한 더 공통적인 액세스는 비활성 명령어 콘텍스트와 결합된 모든 값들을 가진 전체 비활성 레지스터 세트의 완전한 로딩을 통한 것이다.
전체 비활성 레지스터 세트가 전형적으로 명령어 콘텍스트 구조로 로딩되기 때문에, 이러한 로딩에 대한 효율적인 경로가 제공된다. (비활성 파라미터들의 또 다른 세트를 포함하는) 전체 비활성 콘텍스트는 시프트 레지스터로서 구성되며, 여기서 각 레지스터는 하나의 레지스터의 완전한 폭(width) 출력 값이 다음 레지스터의 입력단으로 시프트되도록 다음 레지스터에 체인된다. 최종 레지스터는 필수적으로 시프트 체인을 완료하기 위해 첫 번째 레지스터에 다시 최종 레지스터값을 시프트한다. 특히, 비활성 레지스터(204, 206)의 출력 값은 비활성 레지스터 체인에서 각각 다음 비활성 레지스터(206, 208)의 멀티플렉서(226, 228)로 각각 경로(244, 246)를 통해 인가된다. 최종 비활성 레지스터(208)는 PAD(212)에 차례차례 멀티플렉서의 출력을 인가하는 경로(248)를 통한 멀티플렉서(210)의 입력에 최종 비활성 레지스터(208)의 출력을 인가한다. 또한 PAD(212)는 레지스터(204)로 로딩하기 위한 멀티플렉서(224)에 대한 입력으로서 경로(292)로 값을 인가한다.
이러한 구조는 비활성 레지스터가 시프트 레지스터 체인으로서 수행하게 하며, 여기서 각 레지스터는 체인에서 다음 레지스터로 각 레지스터의 값을 시프트한다. 멀티플렉서(224, 226, 228, 210)의 적합한 선택은 비활성 레지스터들이 출력 경로(248)를 통해 PAD(212)로 순차적으로 비활성 레지스터 값들을 각각 시프트하는 시프트 레지스터로서 수행하게끔 한다. PAD(212)는 타겟 디바이스 제어기와 결합된 버퍼 메모리로 비활성 레지스터 체인에 대한 직접적인 인터페이스를 제공한다. 이러한 방식에서, 완전한 비활성 명령어 콘텍스트는 버퍼 메모리 위치들로 비활성 콘텍스트(200)에서 빠르게 시프트될 수 있어 비활성 명령어 콘텍스트를 저장한다. 마찬가지 방식으로, 완전한 비활성 명령어 콘텍스트는 버퍼 메모리에서 비활성 콘텍스트(200)으로 시프트된다. 마찬가지로, 활성 명령어 콘텍스트는 활성 콘텍스트(202)를 비활성 콘텍스트(200)로 스와핑함으로써 저장될 수 있으며, 이때 비활성 콘텍스트(200)를 버퍼 메모리로 시프팅한다.
그러므로, 부가적인 비활성 콘텍스트들은 타겟 디바이스 제어기의 버퍼 메모리에 저장된다. 하나의 비활성 콘텍스트(200)는 활성 콘텍스트(202)와 빠르게 스왑된다. 다른 비활성 콘텍스트들은 제어기의 버퍼 메모리에서 저장되고, 그 다음에 활성 콘텍스트(202)로 스와핑할 필요가 있을 경우 비활성 콘텍스트(200) 레지스터로 시프트된다.
도2에 도시된 레지스터 구조는 활성 및 비활성 콘텍스트들을 빠르게 자동적으로 스와핑(토글링)하고 비활성 콘텍스트가 버퍼 메모리에서 로딩되게 하고 버퍼 메모리로 저장되게 하는 메모리 디바이스(레지스터 세트들)에서 활성 및 비활성 명령어 콘텍스트를 저장하는 구조의 예이다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 함께 결합된 특정 콘텍스트 데이터 구조와 활성 콘텍스트 값들을 수정하는 결합된 기능들을 가진 특정 응용들에 적합한 많은 동등한 구조를 인식할 것이다. 본 발명의 범위는 모든 이러한 구조를 포함한다.
디스크 콘텍스트 이중 카운터 동작
비록 다수의 명령어 콘텍스트들은 전술한 바와 같이 관리될 수 있지만, 디스크 채널은 비활성 명령어 콘텍스트를 위해 정보를 전송하기 위해 계속 동작한다. 예를 들어, 활성 콘텍스트에서 호스트 발생 판독 요구는 호스트 채널로 전송하기 위한 필요한 데이터의 수신을 대기하는 동안, 비활성 명령어 콘텍스트는 다른 전송들을 위한 유휴 호스트 채널을 이용하기 위해 활성화될 수 있다(활성 콘텍스트와 스왑될 수 있다). 디스크 채널은 이전 활성(현재, 비활성) 판독 명령어를 위해 계속해서 동작할 것이다. 그러므로, 비활성 콘텍스트는 제어기의 버퍼 메모리로 계속된 디스크 판독 전송들을 반영하기 위해 갱신되지 않을 것이다.
(디스크 및 호스트 콘텍스트들이 정합되지 않을 때) 디스크 블록 전송들이 추후 레지스터 갱신을 위해 보류되어야 하는 2가지 형상의 예가 존재한다. 첫 번째로, 현재 비활성 명령어 콘텍스트를 위한 전송과, 두 번째로, 요구에 앞서 디스크 판독이 보다 더 많은 블록들을 판독할 경우 전송이 호스트 명령어를 위해 전송될 것이다. 요구에 앞서 이러한 판독은 다수의 블록들을 위한 호스트 판독 명령어에 응답하고 순차적으로 부가적인 블록들을 요구하여 부속된 호스트로부터 수신된 순차적인 판독 명령어들을 예상하여 (여기서, CPU에 의해) 제어기내에서 발생된다. 예를 들어, 비록 호스트가 디스크의 영역에서 단지 몇 개의 블록들을 요구하지만, 제어기는 동일한 트랙에서 모든 블록들을 판독하는 명령어로서 디스크로 판독 명령어를 전송할 수 있다. 순차적인 판독 명령어들은 호스트로부터 수신되고, (버퍼 메모리 캐쉬에서) 이들 부가적인 블록들은 빠르게 반송된다.
이러한 방식으로, 디스크 채널은 현재 활성 명령어 콘텍스트에서 카운트들과 독립적인 방식으로 디스크로 또는 디스크에서 전송하기 위해 요구된다. 현재의 호스트 채널 전송과 결합된 명령어 콘텍스트(활성 콘텍스트)와 무관한 디스크 채널 전송의 동작을 허용하는 것이 바람직하다. 그러므로, 본 발명은 이중 카운터 구조를 이용하여 효율적으로 이러한 상태를 관리하고 호스트 채널로 하여금 호스트 채널을 이용하여 현재 활성 콘텍스트에 관계없이 동작을 계속하게 한다.
디스크 및 호스트 채널들이 HDA 디스크 매체나 호스트로 또는 HDA 디스크 매체나 호스트에서 전송된 데이터의 각 블록에 대한 2개의 펄스 신호들을 발생시킬 것으로 추정된다. 호스트 및 디스크 채널 모두가 전송된 데이터에서 에러들을 검출 및/또는 수정하기 위해 데이터에서 잘 알려진 에러 체킹 및/또는 수정 코드들을 이용하기 때문에, 제1 펄스는 데이터의 블록이 전송되었음을 지시하고, 제2 펄스는 블록이 성공적으로 전송되어 제어기의 버퍼 메모리에서 현재 ″해제(released)″되었음을 지시한다. 여기서 사용된 ″해제″되었음은 제어기에 의한 처리와 같은 다음에 의도된 목적을 위해 이용할 수 있다는 것을 의미하고 또 다른 명령어 콘텍스트에 의한 재사용을 위해 버퍼 메모리에서 자유롭게 이용 가능하다는 것을 의미한다. 제1 신호는 여기서 섹터 종료(end of sector : EOS) 신호로서 언급되고 제2 신호는 여기서 블록 해제(block released : BR) 신호로서 언급된다. 호스트 채널 전송과의 결합에서 이용된 이들 신호들은 섹터의 호스트 종료(host end of sector : HEOS) 및 호스트 블록 해제(host block released : HBR) 신호로서 언급된다. 디스크 채널에 관하여, 신호들은 섹터의 디스크 종료(disk end of sector : DEOS) 및 디스크 블록 해제(disk block released : DBR) 신호로서 언급된다.
그것을 대신하여 디스크 채널이 현재 동작하고 있는 명령어 콘텍스트(만일 존재한다면)를 여기서는 디스크 콘텍스트로서 언급한다. 전술한 바와 같이 호스트 채널이 현재 동작하고 있는 명령어 콘텍스트는 여기서 활성 콘텍스트로서 언급된다. 디스크 콘텍스트가 활성 콘텍스트와 동일하지 않으면, 카운터들은 언제 요구된 동작이 완료되는지를 판단하는 디스크 채널에 대해 전송 및 해제된 블록들을 카운트한다. 카운터들의 독립적인(이중) 세트는 언제 특정 호스트 전송이 완료되는지를 판단하는데 이용된다. 이들 카운트들의 일부는 전술된 콘텍스트 데이터 구조와 결합되어 있으며, 그러므로 그것이 활성화되고 비활성화되는 콘텍스트와 함께 저장되고 복원된다. 그러므로, 본 발명의 이중 카운터 특징은 현재 활성 콘텍스트에 상응하지 않는 디스크 채널에 의해 전송된 블록들의 카운트에 관한 정보를 유지한다. 적합한 콘텍스트가 다시 활성화되면(또는 디스크 동작에 앞서 판독의 경우에 생성되고 활성화되면), 이때 저장된 블록 카운트는 활성 콘텍스트에서 상실된 펄스로 인해 명령어 콘텍스트의 카운터들에 자동적으로 인가된다.
(특정 콘텍스트에 상응되지 않는 호스트 요구를 초과하는 여분의 블록들에) 앞서 제어기 개시 판독에 대한 여분의 DBR 펄스들은 디스크 데이터 블록 해제 카운터(disk data block released counter : DDBRC)로서 언급된 카운터에서 카운트된다. 또한, 여분의 DBR 펄스들은 호스트 채널과 결합된 카운터, 주로 디스크 콘텍스트가 활성 콘텍스트일 경우 호스트 버퍼 공간 카운터(host buffer space counter : HBSC), 또는 디스크 콘텍스트가 현재 활성 콘텍스트이지 않을 경우 호스트 데이터 블록 해제 카운터(host data block released counter : HDBRC)에서 저장된다. DDBRC에서 여분의 카운트들이 동작에 앞서 판독의 상태를 제어기로 지시하거나 또는 다시 활성화되면 다스크 채널 동작에 상응하는 명령어 콘텍스트를 갱신하는 것을 지시한다.
만약 다음 명령어 콘텍스트가 동작에 앞서 판독에 의해 판독된 여분의 블록들의 순차적인 판독이라면, DDBRC 및 HDBRC에서 여분의 카운트들은 저장된 블록 펄스 신호들로 인해 다른 카운터들을 빠르게 자동적으로 조정하는데 이용될 수 있다. 만약 여분의 블록 펄스들이 동작에 앞서 판독을 위한 것이었다면 그리고 다음 호스트 명령어가 블록들에 앞서 판독 사용을 필요하지 않는다면, 제어기의 CPU는 카운터 레지스터들에서 여분의 펄스 카운트들을 소거할 것이다. 명령어 콘텍스트에 상응하는 여분 펄스 신호들이 일시적으로 비활성화 되었다면, 저장된 펄스 카운트들은 콘텍스트가 다시 활성화될 때 이러한 명령어 콘텍스트를 빠르게 갱신하는데 이용된다.
도4는 앞서 디스크 판독을 위한 또는 비활성 명령어 콘텍스트를 위한 디스크 채널을 통해 발생하는 디스크 전송들의 카운트를 유지하는 회로의 바람직한 실시예의 블록도이다. 도4의 회로는 도1의 전송 제어(109) 요소들의 바람직한 구현을 나타낸다. 도1에서 전술된 바와 같이 카운터 값들은 부분적으로 DMA(106) 및 부분적으로 디스크 포매터(104)와 통합될 수 있다.
경로(478)에 인가된 섹터 디스크 종료(DEOS) 신호는 기억 매체에서 제어기의 버퍼 메모리로 전송되는 각 블록(섹터)에 대해 디스크 채널에 의해 펄스된다. 경로(458)에 인가된 디스크 블록 해제(DBR) 신호는 기억 매체에서 제어기의 버퍼 메모리로 정확히 전송되는 각 블록(섹터)에 대해 디스크 채널에 의해 펄스된다. 마찬가지의 방식으로, 블록이 호스트 채널에 전송되고 성공적으로 호스트 채널에 전송되면 각각 경로(482, 480)에 인가된 섹터 호스트 종료(HEOS) 신호 및 호스트 블록 해제(HBR) 신호 각각이 펄스된다.
콘텍스트 비교 엘리먼트(400)는 현재 활성 콘텍스트가 현재 동작하는 디스크 전송을 개시했던 (여기서 디스크 콘텍스트로 언급된) 콘텍스트에 상응하면 (″A″로 라벨된) 경로(450)에 인가된 TRUE 신호를 발생한다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 콘텍스트 ID가 콘텍스트 구조 및 레지스터들에 저장된 파라미터들중 하나로서 각 명령어 콘텍스트와 결합될 수 있음을 인식할 것이다. 그러므로, 디스크 채널과 결합된 레지스터는 디스크 전송을 개시했던 명령어 콘텍스트의 콘텍스트의 ID를 유지한다. 또한, 단순한 비교기 디바이스는 현재 활성 콘텍스트 ID가 디스크 채널내에서 유지된 콘텍스트 ID와 정합되는지를 판단한다.
2개의 카운터 요소들은 다수의 DBR 신호 펄스들을 카운트하기 위해 일정한 조건들에서 이용된다. 즉 HDBRC 카운터(404) 및 DDBRC 카운터(410)가 존재한다. HDBRC 카운터(404) 값은 입력 경로(458)에 인가된 (각 DBR 신호 펄스)에 대해 한 번 증가되고 입력 경로(454)에 인가된 각 펄스 신호(각 REL_HDBR 펄스 신호)에 대해 한 번 감소한다. DDBRC 카운터(410)는 입력 경로(462)에 인가된 각 DBR 펄스 신호에 대해 한 번 증가하고, 입력 경로(464)에 인가된 각 REL_DDBR 펄스 신호에 대해 한 번 감소한다. HDBRC 카운터(404)의 현재 값이 0과 동일하지 않는지를 판단하기 위해 경로(456)를 통해 엘리먼트(408)로 인가된다. 경로(456)에서 값이 0이 아니라면, 엘리먼트(408)는 경로(452)에 TRUE 신호를 인가하며, 그렇지 않으면 FALSE 신호가 경로(452)에 인가된다.
2개의 부가적인 카운터들은 카운터 회로들을 제어하는데 이용된다. 디스크 전송 카운터(DXFERC), 카운터(418)는 입력 경로(474)에 인가된 각 DBR 펄스 신호에 대해 한 번 감소된다. DXFERC 카운터(418)의 현재 값이 0과 동일하지 않는지를 판단하기 위해 경로(470)를 통해 엘리먼트(424)에 인가된다. 경로(470)에서 값이 0이면, 엘리먼트(424)는 경로(472)에 TRUE 신호를 인가하며, 그렇지 않으면 FALSE 신호가 경로(472)에 인가된다. 호스트 버퍼 공간(HBSC) 카운터(406)는 입력 경로(454)에 인가된 각 REL_HDBR 펄스 신호에 대해 한 번 증가된다. HBSC(406)는 버퍼 세그먼트에서 섹터들의 수를 지시하는 활성 콘텍스트에서의 레지스터를 대표한다. HBSC 카운터(406)는 경로(482)에 인가된 섹터 호스트 종료(HEOS) 신호 펄스들에 의해 감소되거나 또는 콘텍스트가 새로운 호스트 명령어를 위해 재프로그램되면 제어기의 CPU에 의해 재설정된다.
디스크 채널 프로세서에서 디스크 동작에 앞서 판독을 처리할 경우, DXFERC 카운터(418)는 디스크 매체로부터 전송되는 다수의 블록들과 함께 로딩된다. 또한, DXFERC 카운터(418)는 0에 도달한후에 경로(458)에서 DBR 펄스들에 응답하여 더 감소될 수 없다. 또한, 부가적인 DBR 신호 펄스들은 DXFERC 카운터(418)가 0이 아닌 값으로 로딩될 때 까지 DDBRC 카운터(410)에서 저장된다. 이 시점에, DDBRC 카운터(410)에서 저장된 DBR 펄스들이 DXFERC 카운터(418)를 더 감소시키기 위해 ″해제″된다. DDBRC 카운터(410)에 저장된 펄스 카운터는 감소되어, DDBRC 카운터(410) 또는 DXFERC 카운터(418)가 다시 0이 될 때까지 DXFERC 카운터(418)를 다시 감소시키기 위해 DBR 펄스를 ″해제″한다.
AND 게이트(416)는 DDBRC 카운터(410) 및 DXFERC 카운터(418) 각각이 현재 0인지를 지시하기 위해 경로(468, 472)에서 각각 DDBR_NZ 및 DXFER_NZ 신호들을 수신한다. 카운터(410, 418)는 0이 아니면, AND 게이트(417)는 경로(464)로 TRUE 값을 인가하여 DBR 신호 펄스가 DXFERC 카운터(418)를 감소시키기 위해 현재 해제되어야 함을 지시한다. AND 게이트(412)는 경로(458)에서 DBR 펄스 및 경로(472)에서 부정화된 DXFER_NZ 신호를 수신하고 경로(462)에 펄스로서 2개 신호들의 논리곱을 인가한다. 이때, 펄스 신호는 DXFER_NZ 신호가 FALSE일 경우(DXFERC가 0과 동일할 경우) 각 DBR 신호 펄스에 대해 DDBRC 카운터(410)를 증가시킨다. AND 게이트(422)가 경로(458)에서 DBR 펄스 신호 및 경로(472)에서 DXFER_NZ 신호를 수신하고, 경로(474)에 펄스로서 2개 신호들의 논리곱을 인가한다. 이러한 펄스 신호와 경로(464)에서 REL_DDBR 신호는 DXFERC 카운터(418)를 감소시키기 위해 경로(476)에서 펄스로서 2개 신호들의 논리합을 인가하는 OR 게이트(420)에서 입력으로서 수신된다.
그러므로, 카운터 구조에 앞서 판독되는 디스크는 하기의 논리 방정식들에 따라서 동작한다:
DDBR_NZ := ((DDBRC=0)의 부정)
DXFER_NZ := ((DXFERC=0)의 부정)
REL_DDBR := (DDBR_NZ와 DXFER_NZ의 논리곱)
증가 DDBRC := (DBR과 (DXFER_NZ의 부정)의 논리곱)
감소 DDBRC := (REL_DDBR)
감소 DXFERC := (REL_DDBR과 (DBR과 DXFER_NZ의 논리곱)의 논리합)
비활성 명령어 콘텍스트를 위해 디스크 전송 기능을 처리할 경우 (즉, 디스크 콘텍스트 ID가 활성 콘텍스트 ID일 경우), 호스트 버퍼 공간(HBSC) 카운터(406)는 디스크 콘텍스트가 활성 콘텍스트와 다시 동일할 때까지 DBR 신호들에 응답하여 증가될 수 없다. 또한, 디스크 콘텍스트가 다시 활성화될 경우에 저장된 카운트가 해제될 수 있을때까지 HDBRC 카운터(404)는 카운트에서 DBR 펄스 신호들을 저장한다. 디스크 콘텍스트가 다시 활성 콘텍스트가 되면, HDBRC 카운터(404)에서 저장된 카운트는 펄스들을 증가시키는 HBSC 카운터(406)에 빠르게 전송된다.
특히, AND 게이트(402)가 DBRC 카운터(404)가 0이 아닌(카운터에 저장된 DBR 펄스들인) 것을 지시하는 HDBR_NZ 신호를 경로(452)에서 수신하고 경로(450)에서 (여기서 DCA로 언급된) 디스크 콘텍스트 활성 신호를 수신한다. 이때, 2개 신호들의 논리곱이 HBSC 카운터(406)를 증가시키기 위해 펄스 신호로서 경로(454)에 인가된다.
그러므로, 비활성 디스크 콘텍스트 카운터 구조는 하기의 논리 방정식들에 따라서 동작한다:
DCA := (디스크 콘텍스트=활성 콘텍스트)
HDBR_NZ := ((HDBRC=0)의 부정)
증가 HBSC := REL_HDBR :=(DCA와 HDBR_NZ의 논리곱)
감소 HBSC := HEOS
증가 HDBRC := DBR
감소 HDBRC := REL_HDBR
본 발명의 이러한 이중 카운터 구조가 효율적인 다중 콘텍스트 동작을 가능하게 하고 동작에 앞서 동시 디스크 판독을 허용한다. (디스크 콘텍스트를 위해서) 디스크 채널은 하나의 전송 동작을 위해 앞서 판독될 수 있는 반면 호스트 채널은 완전히 다른 동작에 이용된다. 그러나, 디스크 콘텍스트 및 활성 콘텍스트가 다시 동일하게 되면, 전송 카운터들은 활성화 발생에 대한 조정이 되게 빠르게 자동적으로 갱신될 수 있는 반면 활성 콘텍스트는 비활성화되었다. 이러한 빠른 갱신은 제어기 동작에서 CPU 중재가 필요 없이 발생한다.
이중 카운터 구조는 디스크 채널에서 판독 동작에 관해 전술되었다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 구조가 유사한 기능으로 호스트 채널을 동작시키는 다른 명령어 콘텍스트들과 병렬로 디스크 매체에 데이터를 기록하기 위해 디스크 채널을 동작시킴을 용이하게 인식할 것이다. 비록 호스트 채널은 다른 활성 콘텍스트에 동작하지만, 디스크 채널은 카운터 구조를 통해 버퍼 메모리에서 디스크 매체로 데이터 블록들을 계속해서 전송한다. 활성 콘텍스트가 디스크 채널 동작에 상응하는 기록 명령어 콘텍스트(디스크 콘텍스트)로 다시 또 토글되면, 활성 콘텍스트에서 호스트 채널 카운터 레지스터들은 디스크 채널 활성을 반영하기 위해 빠르게 자동적으로 갱신될 수 있다.
도4에 도시되어 전술된 이중 카운터 구조의 또 다른 특징은 언제 디스크 채널이 디스크 채널 대역폭의 완전한 활용을 유지하기 위해 호스트 채널 활성을 필요한지를 판단하기 위해 임계값을 사용한다는 것이다. 예를 들어, 활성 콘텍스트에서 판독 동작은 판독 채널에서 상응하는 판독 동작을 개시할 것이다. 활성 명령어 콘텍스트는 전형적으로 호스트 채널을 이용하기 위해 또 다른 명령어로 스왑(토글)되는 반면 디스크 채널은 요구된 블록들을 판독하기 시작한다. (디스크 콘텍스트에서 동작하는) 디스크 채널이 현재 비활성 명령어 콘텍스트를 위해 버퍼 메모리를 충분히 충만시키면, 비활성 명령어 콘텍스트는 호스트 채널로 충만된 블록들을 전송하기 위해 재활성화되어서 블록들이 부가적인 데이터 블록들을 위해 재사용되게 한다. 비활성 콘텍스트는 활성 콘텍스트로 다시 스왑되지 않는다면, 이때 디스크 채널은 충분한 버퍼 공간이 호스트에 의해 해제될 때까지 데이터 전송을 정지시키게 될 것이다.
그러므로, 본 발명의 이중 카운터 구조는 디스크 채널 동작에 대한 한계 비교 값을 포함한다. 도4를 다시 참조하면, 디스크 버퍼 공간(DBSC) 카운터(426)는 경로(478)에 인가된 각 DEOS 신호 펄스에 대해 한 번 증가된다. DBSC 카운터(426)는 경로(484)에 인가된 각 펄스 신호에 대해 한 번 감소한다. (호스트 채널로 블록의 성공적인 전송을 지시하는) 경로(480)에서의 HBR 신호 펄스는 AND 게이트(430)에 입력으로서 인가된다. (″A″로 레이블된) 경로(450)에서 디스크 콘텍스트 활성(DCA) 신호는 AND 게이트(430)에 다른 입력으로서 인가된다. 이때 (활성 콘텍스트가 디스크 콘텍스트가 되면 성공적인 호스트 채널 블록 전송을 지시하는) 2개 신호들의 논리곱이 경로(484)에 인가된 출력 펄스 신호들을 생성한다.
DBSC 카운터(426)의 현재 출력 값이 경로(486)를 통해 임계값 비교기(428)에 입력 신호로서 인가된다. 임계값 비교기(428)는 입력 값(DBSC 카운터(426)값)과 소정의 프로그램 가능한 임계값을 비교한다. DBSC 카운터(426)값이 임계값 비교기(428)의 소정 값보다 더 크거나 동일하다면, 비교기는 출력에 논리 TRUE를 인가하여 콘텍스트 관리자 논리(도1의 107)로 디스크 콘텍스트를 활성 콘텍스트로 스왑하도록 요구한다.
소정 임계값이 선택되어 디스크 채널이 이용 가능한 버퍼 공간의 결핍으로 정지되기전에 콘텍스트들을 스왑하는데 충분한 시간을 콘텍스트 관리 논리에 허용한다. 특히, 임계값은 (만일 존재한다면) 현재 활성 콘텍스트를 위해 처리중에 DMA 전송이 현재의 블록 전송을 완료시킬 수 있는 값이어야 한다. 콘텍스트 관리 논리의 특정 동작은 상태 머신의 형태로 하기에 나타난다. 디스크 콘텍스트로 토글을 요구하는 DBSC 카운터(426)의 이용은 하기의 논리 방정식들에 따라서 동작한다:
증가 DBSC := DEOS
감소 DBSC := (HBR와 DCA의 논리곱)
DTOG(디스크 콘텍스트 토글 요구) := DBSC〉=임계값
콘텍스트 관리 상태 머신 모델
또한 본 발명은 다중 명령어 콘텍스트들의 자동화된 관리를 위한 상태 머신 모델을 포함한다. 또한 본 발명의 이러한 특징은 타겟 디바이스내에서 다중 콘텍스트들의 효율적인 관리를 가능하게 하고 CPU에 의해 요구되는 중재를 최소화한다. 본 발명의 상태 머신 모델은 (도2에 관해 전술된 바와 같이) 비활성 콘텍스트 레지스터 세트로부터 버퍼 메모리에서 비활성 콘텍스트들을 로딩하고 저장하는 것을 제어한다. 또한, 본 발명의 상태 머신 모델은 기억 타겟 디바이스의 성능을 개선하기 위해 필요한 활성 및 비활성 콘텍스트들의 스와핑을 자동화한다.
전송 요구는 CPU(102) 또는 도1의 제어기(101)의 호스트 채널 인터페이스(108)에 의해 콘텍스트로 프로그램되어야 한다. 바람직하게도 제어기의 콘텍스트 관리자 논리(107)내의 레지스터 세트들에서 유지되는 2개의 콘텍스트들, 주로 활성 콘텍스트 및 (적어도 하나의) 비활성 콘텍스트가 존재한다. 비활성 콘텍스트는 CPU에 의해 완전히 프로그램될 수 있는 반면 활성 콘텍스트는 요구되는 통화중 전송 데이터이다.
도1의 DMA(106)는 전송을 완료하고 (요구되는 적합한 상태 및 인터럽트 조건들을 설정하는) 일시정지 상태를 입력할 때까지 요구된 데이터를 전송할 것이다. 또한, DMA(106)는 활성 콘텍스트의 완료 전에 콘텍스트를 변경하기 위해 CPU(102) 또는 DMA내의 호스트 채널 인터페이스(108) 또는 콘텍스트 관리자(107)와 같은 외부 제어에 의해 일시정지 상태에 위치될 수 있다. 또한, (도4와 관련하여 전술된) HBSC 카운터는 더 이상 데이터가 이용되지 않거나(판독 동작의 경우) 또는 버퍼가 충만되어 있다는 것(기록 동작의 경우)을 지시하는 0로 감소하면 DMA는 일시정지할 것이다.
비록 DMA(106)가 어떤 이유로 일시정지되지만, 활성 및 비활성 콘텍스트는 DMA가 이때 다른 명령어 콘텍스트에서 동작을 재시작하도록 스왑(토글)될 수 있다.
판독 또는 기록 동작을 수행하기 위해 제어기(101)의 CPU(102)는 비활성 콘텍스트를 비활성 콘텍스트 레지스터 세트로 프로그램한다. 전술한 바와 같이, 비활성 콘텍스트는 CPU에 의해 로딩될 수 있는 반면 DMA는 활성 콘텍스트에서 동작한다. 프로그램된 비활성 콘텍스트는 활성 콘텍스트와 스왑될 때, DMA는 새로운 판독 또는 기록 명령어에 관한 동작을 시작한다. 새로이 프로그램된 명령어 콘텍스트가 경합할 때, (도4의) DXFERC 카운터는 0로 되어 어떤 차후 DBR 펄스 신호들이 DDBRC 카운터에 누적되게 한다. 다음 명령어가 막 완료된 명령어와 합체될 수 있다면, DXFER 카운터가 다음 명령어의 예상된 길이로 프로그램될 경우 DDBRC 카운터에 누적된 DBR 펄스들은 해제될 것이다. 2개의 명령어들의 어드레스 및 크기에 의해 지시된 바대로 이전 명령어로부터 순차적으로 진행한다면 다음 명령어는 합체될 수 있다.
요구된 콘텍스트 스왑들을 자동적으로 빠르게 수행하기 위해서, 본 발명은 (활성 콘텍스트에서 스와핑하기 위해) 비활성 콘텍스트에서 빠르게 위치되고 로딩될 수 있도록 비활성 콘텍스트 또는 버퍼 메모리에 저장된 자동 기록 콘텍스트에 제공한다. 자동 기록 콘텍스트는 (SCSI 프로토콜들에서 처럼) 호스트 채널 단속/재접속 시퀀스를 필요치 않고 기록 명령어의 빠른 개시를 가능하게 한다. 명령어가 비활성, 이차 또는 디스크 콘텍스트들같은 또 다른 콘텍스트에 저장되면, 이때 호스트 채널은 콘텍스트가 프로그램되고 저장되도록 일시적으로 단속될 것이다. 자동 기록 콘텍스트는 기록 동작에 공통적인 여러 개의 파라미터들과 마이크로프로세서에 의해 프로그램된다. (전송 길이 또는 LSC와 같은) 다른 값들은 호스트 채널 인터페이스에 의해 직접 프로그램된다.
호스트 채널 인터페이스는 수신된 기록 명령어가 자동 기록 콘텍스트에서 최적으로 처리되는지를 판단한다. 만약 그렇다면, 호스트 채널 인터페이스는 호스트 채널에 접속된 상태로 잔류하고, 명령어를 분석하며 DMA 콘텍스트 관리 논리에 의해 활성 콘텍스트로 이미 로딩된 자동 기록 콘텍스트로 적합한 값을 로딩시킨다. 이러한 동작은 CPU 중재를 요구하지 않아서 기록 동작의 수신과 실제로 요구된 데이터의 전송사이에서 시간을 최소화한다.
자동 기록 콘텍스트가 호스트 채널 인터페이스에 의한 사용을 준비하고 있지 않으면 또는 기록 명령어가 또 다른 (초기) 기록 명령어와 합체될 수 있다면, 이때 자동 기록 콘텍스트는 이용되지 않는다. 또한, 명령어가 또 다른 콘텍스트와 합체되거나 또는 DMA에서 처리하기 위해 또 다른 콘텍스트를 생성하는 CPU에 의해 처리될 것이다. CPU는 다른 콘텍스트들과 관련한 명령어의 우선순위에 따라서 비활성 콘텍스트, 이차 콘텍스트, 또는 디스크 콘텍스트로 명령어를 프로그램할 것이다.
또 다른 콘텍스트, 이차 콘텍스트는 비활성 콘텍스트로 추후 로딩하고 활성 콘텍스트와 실제로 스와핑하기 위해 제2 비활성 콘텍스트를 준비하기 위해 버퍼 메모리에서 프로그램된다. 자동 기록 콘텍스트를 이용할 수 없고 (또 다른 콘텍스트와 합체될 수 없는) 판독 또는 기록 명령어는 이차 콘텍스트, 비활성 콘텍스트 또는 디스크 콘텍스트로 CPU에 의해 프로그램될 수 있다. 비활성 또는 이차 콘텍스트는 관련 데이터가 버퍼 메모리에 저장될 수 있을 때 이용되는 반면 디스크 채널은 다른 전송들에 이용된다. 디스크 콘텍스트가 현재의 디스크 채널 활성에 상응하여 이용상태에 현재 있지 않을 때 CPU는 디스크 콘텍스트로 직접적으로 새로운 명령어를 프로그램할 수 있다. 바람직한 실시예에서, 디스크 채널이 부가적인 전송 요구에 이용되고 있을 때 새로운 명령어는 전형적으로 이차 콘텍스트로 프로그램되어 디스크 콘텍스트로 이동될 것이다.
이차 콘텍스트는 비활성 콘텍스트로 로딩되고호스트 채널이 유휴상태일 때(즉, 활성 및 비활성 콘텍스트들이 호스트 채널을 이용하고 있지 않을 때) 활성 콘텍스트로 스왑된다. 활성화될 때 이차 콘텍스트에서 판독 명령어는 버퍼 메모리(판독 캐쉬 히트(hit))로부터 요구된 데이터를 반송할 것이다. 활성화될 때 이차 콘텍스트에서 기록 명령어는 버퍼 메모리에서 수신된 기록 데이터를 저장할 것이다. 추후 동작들은 디스크 매체에서 기억을 위해 버퍼 메모리에서의 기록 데이터를 디스크 채널로 전달하기 위해 개시될 것이다.
그러므로, 본 발명의 상태 머신 모델은 호스트 전송 요구들과 관련하여 4개의 콘텍스트들, 즉 활성 콘텍스트, 비활성 콘텍스트, 자동 기록 콘텍스트 및 이차 콘텍스트의 이용을 제어한다. 디스크 채널은 디스크 동작이 개시되었을 때 활성 콘텍스트였던 콘텍스트이다. 전술한 바와 같이, 활성 콘텍스트는 호스트 채널 전송들을 서비스하기 위해 여러 번 스왑되는 반면 디스크 채널은 또 다른 콘텍스트에 관해 동작한다.
콘텍스트 관리 논리의 상태 머신 모델은 활성과 비활성 콘텍스트들의 스와핑 및 (자동 기록 콘텍스트 또는 이차 콘텍스트와 같은) 콘텍스트와 함께 비활성 콘텍스트의 자동화된 로딩을 자동적으로 제어한다. 상태 머신 모델은 각 콘텍스트에 할당된 우선순위에 따라서 동작한다. (도1의) DMA 엘리먼트의 콘텍스트 관리 논리는 현재의 활성 콘텍스트보다 상위 순위이면 새로운 콘텍스트를 자동적으로 로딩(및 활성 콘텍스트로 스왑)할 것이다. 호스트 채널 인터페이스는 기록 요구가 즉시 충족되어야 하는지를 이미 판단했기 때문에 최상위 순위는 자동 기록 콘텍스트이다. 호스트 채널 인터페이스는 이 시간동안 호스트 채널에 접속된 상태에서 잔류하기 때문에, DMA는 가능한 빠르게 새로운 자동 기록에서 자동적으로 시작한다.
다음 우선순위는 디스크 콘텍스트에 상응하는 콘텍스트이다. 전술한 바와 같이, DBSC 카운터가 사전 정의된 임계값에 도달하면, 디스크 콘텍스트에 상응하는 호스트 콘텍스트는 디스크 채널의 동작을 정지시키는 것을 방지하기 위해 빠르게 활성화되어야 한다. 디스크 콘텍스트가 비활성 콘텍스트로 이미 로딩되어 있다면, 이때 콘텍스트 관리 상태 머신은 가능한 빠르게 활성 및 비활성 콘텍스트를 토글(스왑)할 것이다. 자동 기록 콘텍스트 요구는 디스크 콘텍스트가 재활성화를 요구하는 동일한 시점에 완결 상태에 있지 않으면, 자동 기록 콘텍스트는 한 블록 기간동안 활성화되고 나서 활성 콘텍스트로서 디스크 콘텍스트로 다시 스왑될 것이다.
활성 콘텍스트가 현재 데이터 전송을 준비하고 있지 않고 디스크 콘텍스트가 활성화를 현재 요구하고 있지 않다면(즉, DBSC 카운터가 사전 정의된 임계값에 도달하지 않았다면), 이때 상태 머신은 다음 우선순위로서 비활성 콘텍스트를 기대한다. 비활성 콘텍스트는 순간적으로 유효한 프로그램 콘텍스트를 포함하고 있다면, 이때 활성 및 비활성 콘텍스트들은 스왑(토글)되고, 새로이 활성화된 콘텍스트가 DMA에 의해 재시작될 것이다.
활성 콘텍스트가 유휴상태가 되면, 디스크 콘텍스트는 활성화를 요구하지 않으며, 비활성 콘텍스트가 (명령어 콘텍스트와 프로그램되지 않는) 유휴상태가 되면, 이차 콘텍스트가 최종 우선순위가 된다. 이차 콘텍스트가 비활성 콘텍스트에서 로딩되고 동작을 시작하기 위해 활성 콘텍스트와 스왑되는 버퍼 메모리에서 (즉, 새로이 수신된 호스트 요구에 응답하여 CPU에 의해) 프로그램된 콘텍스트이다.
버퍼 메모리에서 프로그램된 이차 콘텍스트가 존재하지 않으면, 이때 디스크 콘텍스트는 가능한 날짜까지 디스크 채널 카운터 레지스터들을 유지하기 위해 초기 상태로서 활성 콘텍스트로 스왑된다.
콘텍스트와 결합된 상태 비트들은 콘텍스트가 버퍼 메모리로 저장될 수 있는지를 판단하는데 이용된다. 콘텍스트가 구별되는 상태 정보를 가지고 있다면, 이때 콘텍스트는 상태 정보가 CPU 또는 호스트 채널 인터페이스에 의해 검출되고 소거될때까지 버퍼 메모리에 저장되지 않을 것이다. 이러한 특징들은 CPU가 버퍼 메모리로 액세스를 요구하지 않고 상태를 판단하게 한다.
하기 표1은 활성 콘텍스트에서 가능한 로딩 및 스와핑에 대한 다양한 콘텍스트들의 우선순위를 요약한다.
우선순위 설명
1. 자동 기록 데이터가 즉시 수신될 수 있도록 호스트 채널이 호스트 기록 명령어에 응답했을 경우
2. 디스크 콘텍스트 DBSC 레지스터가 호스트 채널로 디스크 채널 활성을 유지하는 부가적인 버퍼 공간을 해제하거나 제공하도록 요구하는 임계값에 도달했다.
3. 비활성 콘텍스트 활성 콘텍스트가 유휴상태에 있고 일정 명령어 콘텍스트가 비활성 콘텍스트 레지스터 세트에 존재한다.
4. 이차 콘텍스트 활성 및 비활성 레지스터 세트들이 모두 유휴상태이다.
본 발명의 완전한 상태 머신 모델이 버퍼 메모리에서 비활성 콘텍스트로 로딩하기 위해 필요한 동작들과 로딩된 비활성 콘텍스트와 활성 콘텍스트를 스왑하는 차후 동작을 포함한다.
특히, 상태 머신 모델은 도5의 상태도에 따라서 동작한다. 도5에 도시된 상태 머신은 ″유휴″상태(500)에 의해 반으로 나뉘어질 수 있다. 천이(500)는 상태 머신의 재설정에서 유휴상태(500)로 들어감으로써 상태 머신의 처리를 시작한다. 도5의 좌측 반에 대한 상태들 및 천이들, 즉 상태(502∼508) 및 천이(552∼566)는 활성 및 비활성 콘텍스트들의 스와핑을 제어한다. 도5의 우측 반에 대한 상태들 및 천이들, 즉 상태(514∼524) 및 천이(572∼590)는 버퍼 메모리에서 콘텍스트들의 자동적인 로딩 및 저장을 제어한다.
상태 머신은 다수의 신호들의 특정 논리 상태들에 응답하여 하나의 상태에서 또 다른 상태로 천이한다. 상태들 사이에 각 천이는 (만일 존재한다면) 상태 천이를 야기시키는 이들 변수를 포함하는 부울(boolean) 조건들로 레이블되고(labeled), 또한 (만일 존재한다면) 상태 천이로 야기된 이들 변수의 값들에 영향을 주는 사이드 효과(side effect)로 레이블된다.
유휴상태(500)에서 6개의 천이들은 천이들을 유발하는 조건들에 관하여 상호 배타적이다. 우선순위 값(1∼7)이 결정되기 위해 유휴상태에서 각 천이로 할당되고 천이에서 충돌들은 주어진 시간에 발생한다. 유휴상태(500)에서 천이(552∼558) 및 천이(572∼578)와 결합된 우선순위들은 타겟 디바이스 성능에서 최선책에 대해 하기 표2에서 바람직하게 정의된다.
천이 우선순위
556 1
552 2, 7
558 3
572 5
574 4
578 6
천이(552)에 할당된 우선순위는 활성 호스트(기록) 콘텍스트에서 디스크 콘텍스트로 활성 콘텍스트의 빠른 토글을 보증하기 위해 두 번째 및 다시 (최종) 일곱 번째에 시험이 된다는 것을 지시한다.
도5를 참조하면, 토글이 또 다른 콘텍스트를 활성화시키기 위해 요구된다면, 상태 머신 모델의 좌측은 요구된 토글형태에 대해 SWAP_IDLE 상태(500)에서 적합한 TOGGLE_x 상태로 천이하기 위해 동작한다. 특히, 도5에서 지시된 우선순위 순서로, 천이가 자동 기록 콘텍스트가 동작 준비를 할 경우 상태 TOGGLE_WRITE(504)로 되며, 디스크 콘텍스트가 호스트 채널 처리를 요구할 경우 상태 TOGGLE_DISK(502)로 되거나 또는 다른 콘텍스트가 활성화를 준비하고 있지 않을 경우 상태 TOGGLE_SECOND(506)로 된다. 이때 TOGGLE_x 상태는 상응하는 콘텍스트에 대해 토글을 준비하고 비활성 및 활성 콘텍스트들 사이에서 요구된 토글을 실제로 수행하기 위해 AUTO_TOGGLE 상태(508)로 천이한다. 최종적으로, AUTO_TOGGLE 상태(508)는 스왑이 완료될 때 다시 SWAP_IDLE 상태(500)로 천이한다.
상태 머신의 토글 사이드는 하기의 상태 변수를 이용하여 동작한다.
EN_TOG- 1은 토글 상태 머신 동작 0 디스에이블들(disables)을 인에이블(enable)시킨다.
WTOG- 1은 활성 콘텍스트로서 자동 기록 콘텍스트로 토글하기 위한 요구를 지시한다.
DTOG- 1은 비활성 콘텍스트로 토글하기 위한 요구를 지시한다.
STOG- 1은 이차 콘텍스트로 토글하기 위한 요구를 지시한다.
WPRIV- 1은 자동 기록 콘텍스트가 활성 콘텍스트에서 보류되어야 함을 지시한다.
DPRIV- 1은 디스크 콘텍스트가 우선순위를 가지고 있음을 지시한다.
DEFAULT_TO_DISK- 1은 다른 콘텍스트가 활성화를 필요치 않을 경우 디스크 콘텍스트가 최종 다시 체크되어야함을 지시한다.
AUTO_PAUSE- 1은 다음 섹터 경계에서 디스크 채널로부터 메모리로 DMA 전송을 일시정지시키는 요구를 지시한다.
AUTO_PAUSED- 1은 DMA가 다음 섹터 경계에 도달하여서 일시정지했음을 지시한다.
또한, 상태 머신의 토글 (자동 스왑 또는 좌측) 영역은 하기 표3의 상태 천이표에 따라서 동작한다.
상태(라벨) 조건(라벨) 다음 상태(라벨) 사이드 효과
SWAP_IDLE(500) EN_TOG=1 및(DTOG=1 또는 DEFAULT_TO_DISK=1)(552) TOGGLE_DISK(502) AUTO_PAUSE:=1
SWAP_IDLE(500) EN_TOG=1 및 WTOG=1(556) TOGGLE_WRITE(504) AUTO_PAUSE:=1
SWAP_IDLE(500) EN_TOG=1 및(STOG=1 또는 ITOG=1) 및 DTOG=0 및 DPRIV=0 및 WPRIV=0)(558) TOGGLE_SECOND(506) AUTO_PAUSE:=1
TOGGLE_DISK(502) AUTO_PAUSED=1(560) AUTO_TOGGLE(508) AUTO_PAUSE:=0
TOGGLE_WRITE(504) AUTO_PAUSED=1(562) AUTO_TOGGLE(508) AUTO_PAUSE:=0
TOGGLE_SECOND(506) AUTO_PAUSED=1(564) AUTO_TOGGLE(508) AUTO_PAUSE:=0
AUTO_TOGGLE(508) TRUE(566) SWAP_IDLE(500)
도5를 참조하면, 토글이 필요치 않을 경우, 이때 더 낮은 우선순위 로딩/저장 동작들은 도5의 상태 머신 모델의 우측에 의해 요구될 경우 처리된다. 특히, 상태 머신 모델은 동작하여 요구된 로딩/저장 동작의 형태에 대해 SWAP_IDLE 상태(500)에서 적합한 STORE_x 상태로 천이한다. 특히, 도5에 지시된 우선순위 순서로, 천이는 자동 기록 콘텍스트가 비활성 콘텍스트로 로딩할 준비를 할 경우 STORE_WRITE 상태(516)로 되며, 디스크 콘텍스트가 비활성 콘텍스트로 로딩될 경우 STORE_DISK 상태(514)로 되거나 또는 이차 콘텍스트가 비활성 콘텍스트로 로딩될 경우 STORE_SECOND 상태(518)로 된다. 또한, WAIT_STORE 상태(520)는 새로운 비활성 콘텍스트를 로딩하기 위해 준비하는 버퍼 메모리에서 현재의 비활성 콘텍스트를 저장한다. 또한, WAIT_STORE 상태(520)는 현재의 비활성 콘텍스트가 저장된 후에 LOAD 상태(522)로 천이되고 새로운 콘텍스트가 로딩될 수 있다. 또한, WAIT_LOAD 상태(524)는 버퍼 메모리로부터 새로운 비활성 콘텍스트의 로딩의 완료를 기다린다. 최종적으로, WAIT_LOAD 상태(524)는 저장/로딩 동작이 완료되었을 경우 SWAP_IDLE 상태(500)로 다시 천이된다.
상태 머신의 로딩/저장측(또는 우측)은 전술한 동일한 상태 변수 및 하기의 부가적인 상태 변수들을 이용하여 동작한다.
EN_AUTO- 1은 인에이블드(enabled) 0이 로딩/저장 동작에 대한 디스에이블드(disabled)를 지시한다.
SLOAD- 1은 비활성 콘텍스트로 이차 콘텍스트의 로딩이 필요함을 지시한다.
DLOAD- 1은 비활성 콘텍스트로 디스크 콘텍스트의 로딩이 필요함을 지시한다.
WLOAD- 1은 비활성 콘텍스트로 자동 기록 콘텍스트의 로딩이 필요함을 지시한다.
CNTXTVLD=1은 콘텍스트가 현재 유효함을 지시한다.
CNTXTDID- 현재 디스크 콘텍스트인 콘텍스트 ID값
SCONTXT- 이차 콘텍스트의 ID값
WCONTXT- 자동 기록 콘텍스트의 ID값
AUTO_CTXSTORE- 1은 추후 재로딩을 위해 버퍼 메모리에서 현재의 비활성 콘텍스트를 저장하기 위한 요구를 지시한다.
AUTO_CTXLOAD- 1은 버퍼 메모리에서 비활성 콘텍스트로 새로운 콘텍스트를 로딩하기 위한 요구를 지시한다.
AUTO_CTXID- 로딩되는 새로운 콘텍스트의 ID값
또한, 상태 머신의 로딩/저장(또는 우측) 영역은 하기 표4의 상태 천이표에 따라서 동작한다.
상태(라벨) 조건(라벨) 다음 상태(라벨) 사이드 효과
SWAP_IDLE(500) EN_AUTO=1 및 DLOAD=1(572) STORE_DISK(514) AUTO_CTXSTORE:=1
SWAP_IDLE(500) EN_AUTO=1 및 WLOAD=1(574) STORE_WRITE(516) AUTO_CTXSTORE:=1
SWAP_IDLE(500) EN_AUTO=1 및 SLOAD=1 및 GET_WCNTXT=0 및 DPRIV=0(578) STORE_SECOND(518) AUTO_CTXSTORE:=1
STORE_DISK(514) CNTXTVLD=0(580) WAIT_STORE(520) AUTO_CTXSTORE:=0, AUTO_CNTXTID:=DCONTXT
STORE_WRITE(516) CNTXTVLD=0(582) WAIT_STORE(520) AUTO_CTXSTORE:=0, AUTO_CNTXTID:=WCONTXT
STORE_SECOND(518) CNTXTVLD=0(584) WAIT_STORE(520) AUTO_CTXSTORE:=0, AUTO_CNTXTID:=SCONTXT
WAIT_STORE(520) CNTXTVLD=1(586) LOAD(522) AUTO_CTXLOAD:=1
LOAD(522) CNTXTVLD=0(588) WAIT_LOAD(524) AUTO_CTXLOAD:=0
WAIT_LOAD(524) CNTXTVLD=1(590) SWAP_IDLE(500) AUTO_CTXLOAD:=0
전술된 상태 머신 모델은 일반용 컴퓨터에서 소프트웨어, 프로그램 가능한 논리 디바이스들, 또는 통상적인 이산 또는 집적 회로들을 포함하여 여러개의 잘 알려진 형태로 구현될 수 있다. 전술된 상태 머신 모델은 바람직하게도 타겟 디바이스(100)의 제어기(101)에서 구성요소로 도1에서 도시된 바와 같이 통합된 통상적인 집적 회로에서 구현될 수 있다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 다른 상태 변수 및 중간 상태들이 특정 타이밍 및 속도 억제로 특정 집적 회로 매체에서 상태 머신을 구현하기 위해 필요하다는 것을 용이하게 인식할 것이다. 통상적으로 본 발명이 속한 기술 분야에서 통상의 지식을 가진 자에게 잘 알려진 디자인 도구들은 상태 및 천이들에 관련한 이러한 타이밍의 생성 및 삽입으로 디자이너를 보조할 것이다.
비록 본 발명이 도면 및 전술한 설명에서 상세하게 예시 및 설명되었지만, 이와 같은 예시 및 설명은 예로서 고려된 것이고 특성에서 제한적인 것이 아니며, 단지 바람직한 실시예 및 그 약간의 변형이 도시 및 설명된 것이며 본 발명의 사상에 속한 모든 변경 및 수정도 보호되어야만 한다.
전술한 바와 같이 본 발명은, 기억 타겟 디바이스의 호스트 채널 및 디스크 채널 모두에서 분리적인 전송 및 동시적인 전송을 가능하게 기억 타겟 디바이스에서 이중 카운터들을 관리하며 명령어 콘텍스트가 재활성화 될 때 진행중인 디스크 채널 동작과 관련된 저장된 정보에 상응하는 명령어 콘텍스트를 갱신할 수 있다.

Claims (11)

  1. 디스크 채널 및 호스트 채널을 구비한 기억 타겟 디바이스 제어기에서, 다른 명령어들을 대신하여 상기 호스트 채널 및 상기 디스크 채널을 독립적으로 동작시키기 위한 시스템에 있어서,
    개시 프로그램 디바이스에 의해 생성된 명령어들에 상응하는 다수의 비활성 콘텍스트들을 저장하기 위한 수단;
    상기 호스트 채널의 현재의 동작에 상응하여 활성 콘텍스트를 저장하기 위한 수단;
    상기 다수의 비활성 콘텍스트들 중 이전의 활성 콘텍스트에 상응하는 상기 디스크 채널의 현재의 동작에 상응하여 디스크 콘텍스트를 저장하기 위한 수단; 및
    상기 이전의 활성 콘텍스트가 상기 활성 콘텍스트에 저장될 때 상기 디스크 콘텍스트로부터 상기 이전의 활성 콘텍스트를 갱신하기 위한 수단
    을 포함하는 시스템.
  2. 제 1 항에 있어서,
    상기 활성 콘텍스트를 저장하기 위한 수단은 상기 디스크 채널 및 상기 호스트 채널 사이에서 완료된 전송의 수를 나타내는 제1 카운터를 포함하고,
    상기 디스크 콘텍스트를 저장하기 위한 수단은 상기 제1 카운터에서 아직 고려되지 않은 상기 디스크 채널에 의해 완료된 동작들의 수를 나타내는 제2 카운터를 포함하는
    시스템.
  3. 제 2 항에 있어서,
    상기 갱신하기 위한 수단은 상기 제2 카운터의 값에 따라서 상기 제1 카운터의 값을 조정하기 위한 수단을 포함하는
    시스템.
  4. 제 2 항에 있어서,
    상기 제2 카운터가 소정의 임계값 보다 작지 않다는 것을 나타내는 토글 신호를 생성하기 위해 상기 제2 카운터를 소정의 임계값과 비교하기 위한 임계값 비교기 수단
    을 더 포함하는 시스템.
  5. 제 4 항에 있어서,
    상기 토글 신호의 생성에 응답하여, 상기 다수의 비활성 콘텍스트들 중 상기 이전의 활성 콘텍스트를 상기 활성 콘텍스트로 재저장하기 위한 스왑 수단
    을 더 포함하는 시스템.
  6. 호스트 채널, 디스크 채널 및 버퍼 메모리를 구비한 기억 타겟 디바이스 제어기에서, 상기 호스트 채널 및 상기 디스크 채널을 독립적으로 동작시키기 위한 방법에 있어서,
    상기 타겟 디바이스 제어기 내의 비활성 콘텍스트를 위해 상기 디스크 채널과 상기 버퍼 메모리 사이에서 전송될 블록들을 나타내는 파라미터를 상기 타겟 디바이스 제어기 내의 디스크 콘텍스트에 로딩하는 단계;
    상기 버퍼 메모리와 상기 호스트 채널 사이에서 데이터 블록을 교환하기 위해 상기 타겟 디바이스 제어기 내의 활성 콘텍스트를 위해 상기 호스트 채널을 동작시키는 단계;
    상기 버퍼 메모리와 상기 디스크 채널 사이에서 데이터 블록을 교환하기 위해 상기 비활성 콘텍스트를 위해 상기 호스트 채널 동작과 독립적으로 상기 디스크 채널을 동작시키는 단계;
    상기 활성 콘텍스트 및 상기 비활성 콘텍스트를 스와핑하는 단계; 및
    상기 활성 콘텍스트 및 상기 비활성 콘텍스트의 스와핑에 응답하여, 상기 활성 콘텍스트를 위해 상기 디스크 채널의 독립적인 동작을 반영하도록 상기 활성 콘텍스트의 파라미터를 갱신하는 단계
    를 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 디스크 채널을 동작시키는 단계는,
    상기 비활성 콘텍스트를 위해 상기 호스트 채널로 전송되지 않은 상기 버퍼 메모리와 상기 디스크 채널 사이에서 교환된 각 데이터 블록에 대해 제1 카운터를 증가시키는 단계를 포함하고,
    상기 갱신하는 단계는,
    상기 제1 카운터에서의 값에 따라 상기 활성 파라미터를 조정하는 단계; 및
    상기 활성 파라미터의 조정에 응답하여 상기 제1 카운터를 소거하는 단계를 포함하는
    방법.
  8. 제 6 항에 있어서,
    상기 디스크 채널이 상기 디스크 채널의 동작을 계속하기 위해 상기 비활성 콘텍스트를 위한 상기 호스트 채널의 동작을 더 필요로 하는지를 판단하는 단계
    를 더 포함하고,
    상기 스와핑하는 단계는 상기 디스크 채널이 상기 호스트 채널의 동작을 더 필요로 한다는 판단에 응답하는
    방법.
  9. 제 8 항에 있어서,
    상기 디스크 채널을 동작시키는 단계는 상기 버퍼 메모리와 상기 디스크 채널 사이에서 교환된 각 데이터 블록에 대해 제2 카운터를 증가시키는 단계를 포함하고,
    상기 호스트 채널을 동작시키는 단계는 상기 디스크 콘텍스트가 상기 활성 콘텍스트와 동일할 때 상기 버퍼 메모리와 상기 호스트 채널 사이에서 교환된 각 데이터 블록에 대해 상기 제2 카운터를 감소시키는 단계를 포함하고,
    상기 디스크 채널이 상기 호스트 채널의 동작을 더 필요로 하는지를 판단하는 단계는,
    상기 제2 카운터 값을 소정의 임계값과 비교하는 단계; 및
    상기 소정의 임계값보다 작지 않은 상기 제2 카운터 값에 응답하여, 상기 디스크 채널이 상기 호스트 채널의 동작을 더 필요로 하는지를 판단하는 단계를 포함하는
    방법.
  10. 호스트 채널 및 디스크 채널을 구비한 기억 타겟 디바이스 제어기에서, 상기 호스트 채널 및 상기 디스크 채널을 독립적으로 동작시키기 위한 시스템에 있어서,
    데이터 블록의 일시적인 기억을 위한 버퍼 메모리;
    상기 디스크 채널과 상기 호스트 채널 사이에서의 데이터 블록의 교환을 위해 현재 활성상태인 명령어에 관련된 활성 파라미터들의 기억을 위한 활성 콘텍스트;
    상기 디스크 채널과 상기 호스트 채널 사이에서의 데이터 블록의 교환을 위해 현재 비활성 상태인 명령어에 관련된 비활성 파라미터들의 기억을 위한 비활성 콘텍스트;
    제1 카운터;
    상기 디스크 채널과 결합되어, 상기 비활성 콘텍스트를 위해 상기 버퍼 메모리와 상기 디스크 채널 사이에서 교환된 각 데이터 블록에 대해 상기 제1 카운터를 증가시키기 위한 수단;
    상기 활성 콘텍스트와 상기 비활성 콘텍스트를 스와핑하기 위한 수단; 및
    상기 제1 카운터의 값에 따라 상기 활성 콘텍스트를 갱신하기 위한 수단
    을 포함하는 시스템.
  11. 제 10 항에 있어서,
    상기 활성 콘텍스트는 상기 디스크 채널과 상기 호스트 채널 사이에서 완료된 전송의 수를 나타내는 제2 카운터를 포함하고,
    상기 갱신하기 위한 수단은 상기 제1 카운터의 값에 따라 상기 제2 카운터의 값을 조정하기 위한 수단을 포함하는
    시스템.
KR1019970048210A 1996-09-30 1997-09-23 기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체 KR100285637B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/719,830 US6148326A (en) 1996-09-30 1996-09-30 Method and structure for independent disk and host transfer in a storage subsystem target device
US8/719,830 1996-09-30

Publications (2)

Publication Number Publication Date
KR19980024867A KR19980024867A (ko) 1998-07-06
KR100285637B1 true KR100285637B1 (ko) 2001-04-02

Family

ID=24891522

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970048210A KR100285637B1 (ko) 1996-09-30 1997-09-23 기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체

Country Status (2)

Country Link
US (1) US6148326A (ko)
KR (1) KR100285637B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135674A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. In-band storage management
US7424556B1 (en) * 2004-03-08 2008-09-09 Adaptec, Inc. Method and system for sharing a receive buffer RAM with a single DMA engine among multiple context engines
JP4908017B2 (ja) * 2006-02-28 2012-04-04 富士通株式会社 Dmaデータ転送装置及びdmaデータ転送方法
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9582320B2 (en) * 2013-03-14 2017-02-28 Nxp Usa, Inc. Computer systems and methods with resource transfer hint instruction

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688166A (en) * 1984-08-03 1987-08-18 Motorola Computer Systems, Inc. Direct memory access controller supporting multiple input/output controllers and memory units
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US5136692A (en) * 1987-02-13 1992-08-04 International Business Machines Corporation Memory disk buffer manager
US5293597A (en) * 1987-03-09 1994-03-08 At&T Bell Laboratories Concurrent context memory management unit
US4930065A (en) * 1987-08-20 1990-05-29 David Computer Corporation Automatic data channels for a computer system
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US4843544A (en) * 1987-09-25 1989-06-27 Ncr Corporation Method and apparatus for controlling data transfers through multiple buffers
US5317715A (en) * 1987-12-15 1994-05-31 Advanced Micro Devices, Inc. Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics
US5057997A (en) * 1989-02-13 1991-10-15 International Business Machines Corp. Interruption systems for externally changing a context of program execution of a programmed processor
JP2978539B2 (ja) * 1989-07-24 1999-11-15 日本電気株式会社 データ転送制御装置
US5175825A (en) * 1990-02-02 1992-12-29 Auspex Systems, Inc. High speed, flexible source/destination data burst direct memory access controller
US5367680A (en) * 1990-02-13 1994-11-22 International Business Machines Corporation Rendering context manager for display adapters supporting multiple domains
US5421014A (en) * 1990-07-13 1995-05-30 I-Tech Corporation Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices
CA2050658C (en) * 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a graphics rendering processor
US5289583A (en) * 1990-10-19 1994-02-22 International Business Machines Corporation Bus master with antilockup and no idle bus cycles
US5471639A (en) * 1990-10-24 1995-11-28 At&T Global Information Solutions Company Apparatus for arbitrating for a high speed direct memory access bus
CA2060820C (en) * 1991-04-11 1998-09-15 Mick R. Jacobs Direct memory access for data transfer within an i/o device
JPH0736175B2 (ja) * 1991-10-11 1995-04-19 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムのシステム構成設定方法、データ処理システム、及びデータ処理システム用拡張ユニット
DE69228975T2 (de) * 1991-10-28 1999-11-18 Eastman Kodak Co Steuerungsschaltung zur Datenübertragung von einem VME-Bus zu einer SCSI-Platteneinheit
US5537566A (en) * 1991-12-17 1996-07-16 Fujitsu Limited Apparatus and method for controlling background processing in disk array device
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
US5469553A (en) * 1992-04-16 1995-11-21 Quantum Corporation Event driven power reducing software state machine
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
US5430841A (en) * 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5513368A (en) * 1993-07-16 1996-04-30 International Business Machines Corporation Computer I/O adapters for programmably varying states of peripheral devices without interfering with central processor operations
US5513374A (en) * 1993-09-27 1996-04-30 Hitachi America, Inc. On-chip interface and DMA controller with interrupt functions for digital signal processor
US5634081A (en) * 1994-03-01 1997-05-27 Adaptec, Inc. System for starting and completing a data transfer for a subsequently received autotransfer command after receiving a first SCSI data transfer command that is not autotransfer
US5659750A (en) * 1995-05-15 1997-08-19 Nvidia Corporation Apparatus for context switching of input/output devices in responses to commands from unprivileged application programs

Also Published As

Publication number Publication date
KR19980024867A (ko) 1998-07-06
US6148326A (en) 2000-11-14

Similar Documents

Publication Publication Date Title
KR100259597B1 (ko) 기억서브시스템타겟디바이스에서다중콘텍스트등을자동적으로스위칭하는방법및구조체
US6081849A (en) Method and structure for switching multiple contexts in storage subsystem target device
US5920893A (en) Storage control and computer system using the same
US6324594B1 (en) System for transferring data having a generator for generating a plurality of transfer extend entries in response to a plurality of commands received
US6338101B1 (en) Memory initialization method for volatile memory
KR910005997B1 (ko) 데이타 처리장치에 있어서 오퍼레이팅 시스템 슈퍼바이저 방법 및 장치
US11397675B2 (en) Storage device, computer system, and operation method of storage device configured to arbitrarily stop garbage collection
EP0405926A2 (en) Method and apparatus for managing a shadow set of storage media
US5201053A (en) Dynamic polling of devices for nonsynchronous channel connection
US5038275A (en) Status transfer structure within a data processing system with status read indication
US5210865A (en) Transferring data between storage media while maintaining host processor access for I/O operations
KR100285637B1 (ko) 기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체
EP0240616B1 (en) Method to test and set data in a record on disk in one atomic input/output operation
JP4461089B2 (ja) ストレージ制御装置およびストレージ制御方法
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US6209057B1 (en) Storage device having data buffer
EP1517246B1 (en) A method for transferring data and a data transfer interface
JPH05233513A (ja) データ転送制御用インタフェース回路
JPH06348503A (ja) マスタ/スレーブ制御系を有する装置と、その制御方法
JP2000040057A (ja) 計算機システム、バッファ制御装置及び転送方法
WO1994022134A1 (en) Buffer control for data transfer within hard disk during idle periods
JP3599099B2 (ja) 電子ディスク装置用シーズ制御回路
JPH09305330A (ja) ディスクアレイ装置
JPH07121307A (ja) 多重化ディスク装置
JP2002196980A (ja) データローディング方法および装置

Legal Events

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

Payment date: 20041230

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee