KR19980024866A - 기억 서브시스템 타겟 디바이스에서 다중 콘텍스트등을 자동적으로 스위칭하는 방법 및 구조체 - Google Patents
기억 서브시스템 타겟 디바이스에서 다중 콘텍스트등을 자동적으로 스위칭하는 방법 및 구조체 Download PDFInfo
- Publication number
- KR19980024866A KR19980024866A KR1019970048209A KR19970048209A KR19980024866A KR 19980024866 A KR19980024866 A KR 19980024866A KR 1019970048209 A KR1019970048209 A KR 1019970048209A KR 19970048209 A KR19970048209 A KR 19970048209A KR 19980024866 A KR19980024866 A KR 19980024866A
- Authority
- KR
- South Korea
- Prior art keywords
- context
- inactive
- active
- priority value
- disk
- Prior art date
Links
Classifications
-
- 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
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명에 의하면, 다중 명령 콘텍스트(context)들을 관리할 수 있는 기억 타겟 디바이스에서, 스테이트 머신 모델(state machine model)을 이용하여 다수의 콘텍스트들을 자동적으로 관리하기 위한 방법 및 관련 장치가 제공된다. 이 스테이트 머신 모델은 호스트 채널상에서 현재 활성 전송을 처리하기 위한 활성 콘텍스트(active context) 레지스터 세트와, 비활성 콘텍스트(inactive context)를 저장하기 위한 비활성 콘텍스트 레지스트 세트를 가지는 타겟 디바이스 제어기에서 동작한다. 활성 콘텍스트 레지스트 세트 및 비활성 콘텍스트 레지스트 세트는 비활성 콘텍스트의 처리를 재개하거나 시작하는 스테이트 머신 모델의 동작에 의해 빠르게, 자동적으로 스왑된다. 부가적인 비활성 콘텍스트들이 타겟 디바이스 제어기와 결합된 버퍼 메모리에서 저장된다. 비활성 콘텍스트 레지스트 세트는 부가적인 비활성 콘텍스트들중 선택된 하나에 자동적으로 저장되거나 또는 본 발명의 스테이트 머신 모델의 동작에 의해 부가적인 비활성 콘텍스트들중 선택된 하나로부터 로딩된다. 스테이트 머신 모델은 타겟 디바이스의 성능을 개선시키기 위해 우선순위에 따라서 콘텍스트들을 위한 적합한 스왑, 로딩 및 저장 동작들을 수행한다. 최우선 순위는 데이터가 호스트 채널에서 급하게 수신되는 기록 명령에 상응하는 자동 기록 콘텍스트이다. 다음 우선순위는 연속적인 디스크 채널 동작을 유지하기 위해서 충분한 호스트 채널 활성을 제공하기 위한 디스크 콘텍스트이다. 마지막 우선순위는 자동 기록 콘텍스트 또는 현재의 디스크 콘텍스트가 아닌 다른 명령에 상응하는 다른 콘텍스트이다.
Description
본 발명은 기억 서브시스템 타겟 디바이스들에 관한 것으로서, 특히 다중 명령 콘텍스트(context)들을 처리하는 능력을 가지는 타겟 디바이스내의 다수의 콘텍스트들중에서 자동적으로 스위칭하고 선택하기 위한 방법들 및 관련 구조체에 관한 것이다.
기억 서브시스템은 정보의 지속적인 기억을 위한 하나 또는 그 이상의 기억 디바이스들을 포함하고 있다. 정보 기억에 관하여 정보 및 구조체는 통상적으로 입/출력 어댑터를 통해 호스트 컴퓨터 시스템 (또는 다른 기억 관리 디바이스)에 의해 기억 디바이스들에 제공된다. 여기서 이용되는 개시 프로그램 디바이스(initiator device)는 호스트 컴퓨터 시스템 및/또는 관련 입/출력 어댑터에 관한 것이다. 여기서 이용되는 타겟 디바이스는 개시 프로그램 디바이스가 입/출력 요구를 지시하는 기억 디바이스들중 선택된 하나에 관한 것이다. 개시 프로그램 및 타겟 디바이스가 통신하는 버스는 호스트 채널로서 언급된다.
개시 프로그램/타겟 디바이스의 전문용어는 컴퓨터들과 주변 디바이스들을 상호접속하는데 이용되는 널리 보급된 전자 버스인 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface)(이하, SCSI라 함)로서 잘 알려진 표준 버스에 공통적인 것이다. 그러나, 하기 설명된 종래기술에서 알려진 문제점들과 본 발명에 의해 제공된 해결책들은 광 채널(Fibre Channel), SSA, IPI, IDE, EIDE 등을 포함하지만 거기에 제한되지 않는 잘 알려진 여러개의 호스트 채널 매체 및 아키텍처에 공통적인 것이다. 설명의 편의를 위해, 본 발명에 의해 역점을 두고 다루어진 문제점들 및 해결책들은 여기서 SCSI 호스트 채널 접속의 콘텍스트에 나타내었다. 그러나, 본 발명이 속한 기술분야에서 통상의 지식을 가진 자는 여기서 역점을 두고 다루어진 문제점들 및 해결책들이 다른 호스트 채널 환경들에 적용 가능하다는 것을 용이하게 인식할 것이다.
SCSI 버스는 디스크 드라이브들, 테이프 드라이브들, 디스크 어레이들, 및 다른 기억 디바이스와 주변 입/출력 디바이스들 같은 기억 주변 장치 디바이스들에 (컴퓨터 시스템에서 SCSI 어댑터를 통해) 컴퓨팅 디바이스들을 접속하기 위해 공통적으로 선택되었다. 버스상에서 교환된 정보 및 버스에 대한 SCSI 표준들에 대한 명세들은 ANSI 퍼블리케이션(publication)SCSI 2 Standards Document×3T9.2/375R 개정 10L을 포함하는 여러 형태로 공개적으로 이용 가능하다. SCSI 명세에서, SCSI 버스에 부속된 각 디바이스는 SCSI 버스에서 식별되는 유일한 ID 값을 가지고 있다. 개시 프로그램 디바이스는 식별된 타겟 디바이스로 입/출력 요구를 개시하고, (이용 가능하면) SCSI를 제어함으로써 그리고 식별된 타겟 디바이스로 하나 또는 그 이상의 명령들을 지시함으로써 필요한 데이터를 전송한다. 일반적으로 타겟 디바이스는 요구된 동작을 수행하고 정보를 반송한다. 반송된 정보는 간단한 인식 정보 및 상태 정보를 포함하거나 또는 (예를 들어) 대용량 기억 주변 디바이스로부터 검색된 데이터를 포함한다.
디스크 드라이브는 자기(magnetic) 또는 광 매체에서 정보의 필요한 물리적 기억 및 검색을 수행하기 위해 헤드 디스크 어셈블리(Head Disk Assembly : HDA)를 명령하는 (삽입된 제어기) 제어 회로들과 방법들을 통해 데이터를 저장하고 검색한다. HDA에 대한 제어기내의 인터페이스는 여기서 디스크 채널 또는 포매터로 언급된다. 통상적으로 호스트 채널에서의 데이터 전송 차선개수(bandwidth)는 디스크 채널에서의 차선개수보다 상당히 더 크다.
호스트 채널의 차선개수의 상당 부분이 디스크 드라이브(또는 다른 SCSI 주변 디바이스)가 더 느린 디스크 채널을 통해 액추에이터(actuator)와의 상호작용을 통해 입/출력 요구를 처리하려고 시도하는 동안 유휴(idle)한다. 표준 SCSI 단속 및 재접속 프로토콜들은 다른 디바이스들이 이 기간동안 SCSI 버스를 이용하는 것을 허용할 것이다. 다른 개시 프로그램/타겟 접속이 설정되지 않으면, 호스트 채널은 단속된 타겟 디바이스가 요구를 처리하는 동안 유휴상태(idle)로 잔류할 것이다. 또한, 개시 프로그램은 단순히 동일한 타겟 디바이스와 더 한층 인터페이싱하기전에 (타겟이 개시 프로그램을 재선택할 때) 개시된 명령의 완료를 기다린다.
비록 타겟 디바이스는 첫 번째 개시된 명령 시퀀스에 응답할 수 없지만, 또한 전형적인 타겟 디바이스들은 통화중 디스크 채널을 이용하지 않고 처리될 수 있는 다른 명령들에 응답할 수도 없다. 그러므로, SCSI 표준들에 따라서 타겟 디바이스들은 단지 단일 명령(단일 스레드(thread))만이 주어진 시간에 처리될 수 있도록 제한한다는 의미에서 단일 스레디드(threaded) 타겟 디바이스로 언급된다. 그러므로, 단일 스레디드 아키텍처는 고속 호스트 채널을 충분히 이용하지 않는 경향이 있어서 다른 대기행렬의 명령들의 대기시간을 늘어나게 한다.
미국 특허 출원 제08/724,385호에서 제안된 해결책은 타겟 디바이스내의 자원 이용도를 개선시키기 위해 타겟 디바이스내의 다중 명령들의 처리에 제공된다. 특히, 다중 호스트 명령들은 명령 처리에 관련하는 모든 매개변수들을 포함하는 유일한 콘텍스트에서 각각 처리된다. 하나의 명령인, 활성 콘텍스트(active context)는 한 번에 처리된다. 그러나, 활성 콘텍스트의 처리는 타겟 디바이스의 자원들을 충분히 이용하지 않을 경우, 또 다른 명령인, 다수의 비활성 콘텍스트(inactive context)들중 하나가 타겟 디바이스의 자원을 충분히 이용하기 위해 활성 콘텍스트와 스왑(swap)된다.
그러나, 다수의 이러한 콘텍스트들중에서 비활성 콘텍스트를 선택하는 것과 활성 콘텍스트를 선택된 비활성 콘텍스트와 스위칭(또는 스와핑(swapping))하는 것은 빠르게 일어나야 한다. 콘텍스트들의 이러한 선택 및 스와핑을 수행하기 위해 프로그램된 일반용 처리기에 의한 중재가 너무 느려서 원하는 성능 목표들을 획득할 수 없다. 예를 들어, 현재 활성 콘텍스트를 호스트 채널이 임박하게 데이터를 수신하는 기록 명령에 대한 새로운 콘텍스트와 스와핑하는 것은 호스트 채널로부터 수신된 데이터의 손실을 방지하기 위해 매우 빠른 응답을 필요로 한다. 또는 예를 들어, 디스크 채널이 동작을 개시했던 호스트 채널 콘텍스트와 독립적으로 동작할 경우 및 디스크 채널이 부가적인 데이터 블록들을 교환하기 위해 호스트 채널과 부가적인 상호작용을 필요할 경우, 상기 응답이 호스트 채널 상호작용의 결핍 때문에 디스크 채널을 중지시키는 것을 방지할 만큼 빨라야 한다.
본 발명은 다수의 콘텍스트들중에서 처리될 다음 콘텍스트를 자동적으로 빠르게 선택하고 선택된 콘텍스트를 현재 활성 콘텍스트와 스왑하기 위한 방법 및 관련 구조체를 제공함으로써 상기 문제 및 다른 문제들을 해결하여 유용한 기술의 수준을 진보시킨다.
본 발명은 제어기상의 레지스터 세트들에서 활성 콘텍스트 및 비활성 콘텍스트를 저장하는 타겟 디바이스 제어기에서의 특징들을 포함한다. 활성 및 비활성 콘텍스트 레지스터 세트들은 본 발명의 다른 특징들에 의해 빠르게 스왑될 수 있어 이전 비활성 콘텍스트를 활성화시킨다. 다른 비활성 콘텍스트들은 타겟 디바이스 제어기와 결합된 버퍼 메모리의 세그먼트(segment)들에서 저장된다. 이들 다른 비활성 콘텍스트들은 비활성 콘텍스트 레지스터에 로딩되고, 비활성 콘텍스트 레지스터 세트는 추후 검색 및 로딩하기 위해 버퍼 메모리에 저장된다. 적합한 로딩, 저장 및 스왑 동작들을 통해 본 발명의 스테이트 머신 모델(state machine model)은 다수의 콘텍스트들의 관리를 자동화한다.
본 발명은 다수의 비활성 콘텍스트들을 관리하고 각각에 할당된 우선순위 값에 따라 비활성 콘텍스트들중에서 선택하는 스테이트 머신 모델에 제공된다. 본 발명의 스테이트 머신 모델은 특히 비활성 콘텍스트 레지스터 세트를 통해 제어기의 버퍼 메모리로부터 로딩되거나 또는 버퍼 메모리로 저장되는 3개의 비활성 콘텍스트들을 관리하기 위해 동작한다. 자동 기록 콘텍스트는 호스트 채널로부터 타겟 디바이스에 의해 기록 데이터를 직접 수신하기 위해 호스트 채널로부터 기록 명령의 수신에 응답하여 비활성 콘텍스트로 로딩되어 활성 콘텍스트로 스왑된다. 자동 기록 콘텍스트는 호스트 채널 데이터의 수신을 위한 준비를 하기 위해 최우선 순위를 가진다. 여기서 이용되는 디스크 콘텍스트는 이전 활성 콘텍스트가 디스크 채널의 현재 동작을 개시했는지를 언급한다. 디스크 콘텍스트는 디스크 채널이 디스크 채널 처리를 정지하는 것을 방지하기 위해 호스트 채널에 대해 교환된 부가적인 데이터 블록들을 필요로 하고 있음을 지시할 때 비활성 콘텍스트로 로딩되어 활성 콘텍스트로 스왑된다. 디스크 콘텍스트는 디스크 채널 처리를 정지시키는 것을 방지하기 위한 두 번째 최우선 순위이다. 여기서 이용되는 이차 콘텍스트는 타겟 디바이스 제어기에서 현재 비활성 상태에 있는 다른 명령들을 언급한다. 예를 들어, 현재 다른 콘텍스트들이 활성 및 비활성 콘텍스트 레지스터 세트들(즉, 자동기록 및 디스크 콘텍스트들)을 이용하고 있을 때, 현재 처리중에 있는 다른 명령 콘텍스트는 이차 콘텍스트에 저장된다. 이차 콘텍스트는 최하위 순위이고, 현재의 활성 및 비활성 콘텍스트들이 모두 유휴하여 타겟 디바이스의 자원들을 충분히 이용하고 있지 않을 경우 비활성 콘텍스트로 로딩되어 활성 콘텍스트로 스왑된다.
본 발명이 전자 회로들에서 구현되기 위해 간단한 스테이트 머신 모델로서 이들 특징들을 제공한다. 이러한 하드웨어 스테이트 머신 모델 구현은 콘텍스트 상태 및 처리에서의 변경들에 대한 빠른 자동 응답을 보증한다.
그러므로, 본 발명의 목적은 스테이트 머신 모델을 이용하여 기억 타겟 디바이스에서 다중 콘텍스트들을 자동적으로 관리하기 위한 방법들 및 관련 장치들을 제공하는 것이다.
또한, 본 발명의 다른 목적은 스테이트 머신 모델을 이용하여 기억 타겟 디바이스에서 활성 콘텍스트 및 다수의 비활성 콘텍스트들을 자동적으로 관리하기 위한 방법들 및 관련 장치들을 제공하는 것이다.
또한, 본 발명의 다른 목적은 스테이트 머신 모델을 이용하여 기억 타겟 디바이스에서 활성 콘텍스트와 다수의 비활성 콘텍스트들중 선택된 하나 사이에서 스와핑을 자동적으로 관리하기 위한 방법들 및 관련 장치들을 제공하는 것이다.
또한, 본 발명의 다른 목적은 스테이트 머신 모델을 이용하여 기억 타겟 디바이스에서 활성 콘텍스트 레지스터로 스와핑하기 위해 다수의 비활성 콘텍스트들중 선택된 하나를 비활성 콘텍스트 레지스터 세트로 자동적으로 로딩하기 위한 방법들 및 관련 장치들을 제공하는 것이다.
또한, 본 발명의 또 다른 목적은 스테이트 머신 모델을 이용하여 기억 타겟 디바이스에서 비활성 콘텍스트 레지스터 세트를 다수의 비활성 콘텍스트들중에 선택된 하나로 자동적으로 저장하기 위한 방법들 및 관련 장치들을 제공하는 것이다.
도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)를 통해 호스트 채널 인터페이스(108)와 버퍼 메모리(114)와 버퍼 관리자(112)사이에서 직접 메모리 액세스를 제공한다. 호스트 채널의 높은 차선개수(bandwidth) 용량은 CPU(102)에 의한 중재없이 버퍼 메모리(114)로 빠른 액세스를 필요로 한다. 이러한 고속 데이터 교환이 특정 명령을 처리하는데 필요없을 경우, 호스트 채널 인터페이스(108)는 버스(158, 156)를 통해 버퍼 메모리(114) 및 버퍼 관리자(112)와 정보를 교환하여 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) 및 제어기(101)의 버퍼 관리자(112)의 조합내에서 동작한다. 다중 콘텍스트의 스위칭을 관리하기 위한 특정 스테이트 머신 모델은 도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)을 가지고 있고 이러한 다수의 레지스터들은 하기의 콘텍스트 데이터 구조체들을 저장하는데 충분하다.
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) 조건들로 라벨되고 또한 (만일 존재한다면) 상태 천이로 야기된 이들 변수의 값들에 영향을 주는 사이드 효과(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 (22)
- 디스크 채널 및 호스트 채널을 가지는 기억 타겟 디바이스 제어기의 다수의 콘텍스트들사이에서 자동적으로 스위칭하기 위한 시스템에 있어서,개시 프로그램 디바이스 생성 명령들에 상응하는 비활성 콘텍스트를 저장하기 위한 수단;상기 호스트 채널의 현재의 동작에 상응하는 활성 콘텍스트를 저장하기 위한 수단;상기 비활성 콘텍스트가 상기 호스트 채널에 의한 처리를 요구하고 있음을 검출하기 위한 수단; 및새로이 활성 콘텍스트로서 상기 비활성 콘텍스트의 처리를 시작하기 위해 상기 활성 콘텍스트를 상기 비활성 콘텍스트로 스와핑하기 위한 수단을 포함하여 이루어진 자동 스위칭 시스템.
- 제 1 항에 있어서,우선순위 값은 상기 활성 콘텍스트 및 상기 비활성 콘텍스트와 결합하고 있고, 상기 검출하기 위한 수단은 상기 활성 콘텍스트와 결합된 우선순위 값이 상기 비활성 콘텍스트와 결합된 상기 우선순위 값보다 더 낮은지를 결정하기 위한 수단을 포함하는 자동 스위칭 시스템.
- 제 2 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 시스템.
- 제 1 항에 있어서,버퍼 메모리;상기 버퍼 메모리에 적어도 하나의 부가적인 비활성 콘텍스트를 저장하기 위한 수단; 및상기 적어도 하나의 부가적인 비활성 콘텍스트중 하나로부터 상기 비활성 콘텍스트를 로딩하기 위한 수단을 더 포함하여 이루어진 자동 스위칭 시스템.
- 제 4 항에 있어서,우선순위 값은 상기 활성 콘텍스트와 결합되어 있고 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 선택된 하나와 결합되어 있으며,상기 로딩하기 위한 수단은상기 활성 콘텍스트와 결합된 상기 우선순위 값이 상기 적어도 하나의 비활성 콘텍스트중 상기 선택된 하나와 결합된 상기 우선순위 값보다 더 낮은지 결정하기 위한 수단과, 상기 활성 콘텍스트가 상기 비활성 콘텍스트를 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 선택된 하나와 로딩하기 위해 상기 적어도 하나의 부가적인 비활성 콘텍스트중 선택된 하나보다 더 낮은 우선순위 값을 가지고 있다는 결정에 응답하는 수단을 포함하는 자동 스위칭 시스템.
- 제 5 항에 있어서,상기 우선순위 값은 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트, 및 이차 콘텍스트로 이루어진 상기 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 시스템.
- 디스크 채널 및 호스트 채널을 가지는 기억 타겟 디바이스 제어기의 다수의 콘텍스트들사이에서 자동적으로 스위칭하기 위한 시스템에 있어서,개시 프로그램 디바이스 생성 명령들에 상응하는 비활성 콘텍스트를 저장하기 위한 수단;상기 호스트 채널의 현재 동작에 상응하는 활성 콘텍스트를 저장하기 위한 수단;버퍼 메모리;상기 버퍼 메모리에 적어도 하나의 부가적인 비활성 콘텍스트를 저장하기 위한 수단; 및상기 활성 콘텍스트를 상기 비활성 콘텍스트와 상기 적어도 하나의 부가적인 비활성 콘텍스트로 이루어진 상기 그룹에서 선택된 또 다른 콘텍스트를 스위칭하기 위한 수단을 포함하여 이루어진 자동 스위칭 시스템.
- 제 7 항에 있어서,우선순위 값이 상기 활성 콘텍스트와 결합되어 있고 상기 비활성 콘텍스트와 결합되어 있으며, 상기 적어도 하나의 부가적인 비활성 콘텍스트 각각과 결합되어 있고,상기 스위칭하기 위한 수단은상기 활성 콘텍스트와 결합된 상기 우선순위 값이 상기 비활성 콘텍스트와 결합된 상기 우선순위 값보다 더 낮은지 결정을 하기 위한 제1 우선순위 결정 수단과, 상기 제1 우선순위 결정 수단에 응답하여 상기 활성 콘텍스트 우선순위 값이 상기 비활성 콘텍스트 우선순위 값보다 작을 때 상기 활성 콘텍스트와 상기 비활성 콘텍스트를 스와핑하기 위한 스와핑 수단을 포함하는 자동 스위칭 시스템.
- 제 8 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 상기 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 시스템.
- 제 8 항에 있어서,상기 스위칭하기 위한 수단은상기 활성 콘텍스트와 결합된 우선순위 값이 상기 적어도 하나의 부가적인 비활성 콘텍스트중 하나와 결합된 상기 우선순위 값보다 더 낮은지 결정을 하기 위한 제2 우선순위 결정 수단; 및상기 제2 우선순위 결정 수단에 응답하여, 상기 활성 콘텍스트 우선순위 값이 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 하나의 상기 우선순위 값보다 작을 때 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 하나를 상기 비활성 콘텍스트로 로딩하기 위한 로딩 수단을 포함하여 이루어진 자동 스위칭 시스템.
- 제 10 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 상기 그룹으로부터 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 시스템.
- 디스크 채널 및 호스트 채널을 가지는 기억 타겟 디바이스 제어기의 다수의 콘텍스트들사이에서 자동적으로 스위칭하기 위한 방법에 있어서,개시 프로그램 디바이스 생성 명령들에 상응하는 비활성 콘텍스트를 제공하는 단계;상기 호스트 채널의 현재의 동작에 상응하는 활성 콘텍스트를 제공하는 단계;상기 비활성 콘텍스트가 상기 호스트 채널에 의한 처리를 요구하고 있음을 검출하는 단계; 및새로이 활성 콘텍스트로서 상기 비활성 콘텍스트의 처리를 시작하기 위해 상기 활성 콘텍스트를 상기 비활성 콘텍스트로 스와핑하는 단계를 포함하여 이루어진 자동 스위칭 방법.
- 제 12 항에 있어서,우선순위 값은 상기 활성 콘텍스트 및 상기 비활성 콘텍스트와 결합하고 있고, 상기 검출하는 단계는 상기 활성 콘텍스트와 결합된 우선순위 값이 상기 비활성 콘텍스트와 결합된 상기 우선순위 값보다 더 낮은지를 결정하는 단계를 포함하는 자동 스위칭 방법.
- 제 13 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 방법.
- 제 12 항에 있어서,상기 타겟 디바이스는 버퍼 메모리를 포함하고,상기 방법은 적어도 하나의 부가적인 비활성 콘텍스트를 상기 버퍼 메모리에 저장하는 단계와, 상기 적어도 하나의 부가적인 비활성 콘텍스트중 하나로부터 상기 비활성 콘텍스트를 로딩하는 단계를 더 포함하여 이루어진 자동 스위칭 방법.
- 제 11 항에 있어서,우선순위 값은 상기 활성 콘텍스트와 결합되어 있고 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 선택된 하나와 결합되어 있으며,상기 로딩하는 단계는상기 활성 콘텍스트와 결합된 상기 우선순위 값이 상기 적어도 하나의 비활성 콘텍스트중 상기 선택된 하나와 결합된 상기 우선순위 값보다 더 낮은지 결정하는 단계와, 상기 활성 콘텍스트가 상기 적어도 하나의 부가적인 비활성 콘텍스트중 선택된 하나보다 더 낮은 우선순위 값을 가지고 있다는 결정에 응답하여 상기 비활성 콘텍스트를 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 선택된 하나와 로딩하는 단계를 포함하는 자동 스위칭 방법.
- 제 16 항에 있어서,상기 우선순위 값은 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트, 및 이차 콘텍스트로 이루어진 상기 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 방법.
- 디스크 채널 및 호스트 채널을 가지는 기억 타겟 디바이스 제어기의 다수의 콘텍스트들사이에서 자동적으로 스위칭하기 위한 방법에 있어서,개시 프로그램 디바이스 생성 명령들에 상응하는 비활성 콘텍스트를 제공하는 단계;상기 호스트 채널의 현재 동작에 상응하는 활성 콘텍스트를 제공하는 단계;상기 버퍼 메모리에서 적어도 하나의 부가적인 비활성 콘텍스트를 저장하는 단계; 및상기 활성 콘텍스트를 상기 비활성 콘텍스트와 상기 적어도 하나의 부가적인 비활성 콘텍스트로 이루어진 상기 그룹에서 선택된 또 다른 콘텍스트를 스위칭하는 단계를 포함하여 이루어진 자동 스위칭 방법.
- 제 18 항에 있어서,우선순위 값은 상기 활성 콘텍스트와 결합되어 있고 상기 비활성 콘텍스트와 결합되어 있으며, 상기 적어도 하나의 부가적인 비활성 콘텍스트 각각과 결합되어 있고,상기 스위칭하는 단계는상기 활성 콘텍스트와 결합된 상기 우선순위 값이 상기 비활성 콘텍스트와 결합된 상기 우선순위 값보다 더 낮은지 결정을 하는 제1 우선순위 결정 단계와, 상기 제1 우선순위 결정 수단에 응답하여 상기 활성 콘텍스트 우선순위 값이 상기 비활성 콘텍스트 우선순위 값보다 작을 때 상기 활성 콘텍스트와 상기 비활성 콘텍스트를 스와핑하는 단계를 포함하는 자동 스위칭 방법.
- 제 19 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 상기 그룹에서 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 방법.
- 제 19 항에 있어서,상기 스위칭하는 단계는상기 활성 콘텍스트와 결합된 우선순위 값이 상기 적어도 하나의 부가적인 비활성 콘텍스트중 하나와 결합된 상기 우선순위 값보다 더 낮은지 결정하는 단계; 및상기 활성 콘텍스트 우선순위 값이 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 하나의 상기 우선순위 값보다 작다고 결정될때, 상기 적어도 하나의 부가적인 비활성 콘텍스트중 상기 하나를 상기 비활성 콘텍스트로 로딩하는 단계를 더 포함하여 이루어진 자동 스위칭 방법.
- 제 21 항에 있어서,상기 우선순위 값은 상기 결합된 콘텍스트의 형태에 따라서 결정되고, 상기 형태는 자동 기록 콘텍스트, 디스크 콘텍스트 및 이차 콘텍스트로 이루어진 상기 그룹으로부터 선택되며, 상기 자동 기록 콘텍스트는 차례차례 상기 이차 콘텍스트보다 더 높은 우선순위 값을 가지는 상기 디스크 콘텍스트보다 더 높은 우선순위 값을 가지는 자동 스위칭 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/720,393 | 1996-09-30 | ||
US08/720,393 US6247040B1 (en) | 1996-09-30 | 1996-09-30 | Method and structure for automated switching between multiple contexts in a storage subsystem target device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980024866A true KR19980024866A (ko) | 1998-07-06 |
KR100259597B1 KR100259597B1 (ko) | 2000-06-15 |
Family
ID=24893854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970048209A KR100259597B1 (ko) | 1996-09-30 | 1997-09-23 | 기억서브시스템타겟디바이스에서다중콘텍스트등을자동적으로스위칭하는방법및구조체 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6247040B1 (ko) |
KR (1) | KR100259597B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100766732B1 (ko) * | 2000-01-07 | 2007-10-15 | 프리스케일 세미컨덕터, 인크. | 고속의 낮은 오버헤드의 콘텍스트 전환을 실행하는 디바이스 및 방법 |
KR100770034B1 (ko) * | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341315B1 (en) * | 1999-02-26 | 2002-01-22 | Crossroads Systems, Inc. | Streaming method and system for fiber channel network devices |
US7649901B2 (en) | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US7155516B2 (en) * | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7032226B1 (en) * | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7165257B2 (en) * | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7065096B2 (en) * | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7058064B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7042887B2 (en) * | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
DE60130836T2 (de) * | 2000-06-12 | 2008-07-17 | Broadcom Corp., Irvine | Architektur und Verfahren zur Kontextumschaltung |
US7164689B2 (en) * | 2000-12-05 | 2007-01-16 | Matsushita Electric Industrial Co., Ltd. | Multi-initiator control unit and method |
US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US7216204B2 (en) * | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
GB2379586A (en) * | 2001-09-06 | 2003-03-12 | Zarlink Semiconductor Ltd | Processing requests for service using FIFO queues |
US20070005942A1 (en) * | 2002-01-14 | 2007-01-04 | Gil Vinitzky | Converting a processor into a compatible virtual multithreaded processor (VMP) |
US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US7584311B2 (en) * | 2003-03-21 | 2009-09-01 | Lsi Corporation | Elasticity buffer restarting |
US20060085573A1 (en) * | 2004-10-15 | 2006-04-20 | Dell Products L.P. | Multi-context selection with PCI express to support hardware partitioning |
US7500210B2 (en) * | 2006-11-15 | 2009-03-03 | Mplicity Ltd. | Chip area optimization for multithreaded designs |
US20090044159A1 (en) * | 2007-08-08 | 2009-02-12 | Mplicity Ltd. | False path handling |
US8261284B2 (en) * | 2007-09-13 | 2012-09-04 | Microsoft Corporation | Fast context switching using virtual cpus |
US8555141B2 (en) * | 2009-06-04 | 2013-10-08 | Lsi Corporation | Flash memory organization |
US8321639B2 (en) * | 2009-12-30 | 2012-11-27 | Lsi Corporation | Command tracking for direct access block storage devices |
US8286004B2 (en) * | 2009-10-09 | 2012-10-09 | Lsi Corporation | Saving encryption keys in one-time programmable memory |
US8352689B2 (en) * | 2009-11-30 | 2013-01-08 | Lsi Corporation | Command tag checking in a multi-initiator media controller architecture |
US8166258B2 (en) * | 2009-07-24 | 2012-04-24 | Lsi Corporation | Skip operations for solid state disks |
US8245112B2 (en) * | 2009-06-04 | 2012-08-14 | Lsi Corporation | Flash memory organization |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US20100306451A1 (en) * | 2009-06-01 | 2010-12-02 | Joshua Johnson | Architecture for nand flash constraint enforcement |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
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 |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
Family Cites Families (38)
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 |
US5428163A (en) | 1986-12-31 | 1995-06-27 | Mills; Randell L. | Prodrugs for selective drug delivery |
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 |
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 |
US5127098A (en) * | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
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 |
US5280603A (en) | 1991-09-19 | 1994-01-18 | Quantum Corporation | Servo pause for disk drive embedded multi-tasked controller |
JPH0736175B2 (ja) | 1991-10-11 | 1995-04-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムのシステム構成設定方法、データ処理システム、及びデータ処理システム用拡張ユニット |
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 |
US5371861A (en) | 1992-09-15 | 1994-12-06 | International Business Machines Corp. | Personal computer with small computer system interface (SCSI) data flow storage controller capable of storing and processing multiple command descriptions ("threads") |
US5430841A (en) | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
US5428779A (en) | 1992-11-09 | 1995-06-27 | Seiko Epson Corporation | System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions |
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 |
JP3169779B2 (ja) | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US5694333A (en) | 1995-04-19 | 1997-12-02 | National Instruments Corporation | System and method for performing more efficient window context switching in an instrumentation system |
US5678024A (en) | 1995-05-08 | 1997-10-14 | International Business Machines Corporation | Method and system for dynamic performance resource management within a computer based system |
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 |
US5727211A (en) | 1995-11-09 | 1998-03-10 | Chromatic Research, Inc. | System and method for fast context switching between tasks |
US5708808A (en) * | 1996-02-27 | 1998-01-13 | Shoichi; Horio | Method and apparatus for concurrency with critical regions |
US5754818A (en) * | 1996-03-22 | 1998-05-19 | Sun Microsystems, Inc. | Architecture and method for sharing TLB entries through process IDS |
US5758051A (en) * | 1996-07-30 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a processor |
-
1996
- 1996-09-30 US US08/720,393 patent/US6247040B1/en not_active Expired - Lifetime
-
1997
- 1997-09-23 KR KR1019970048209A patent/KR100259597B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100766732B1 (ko) * | 2000-01-07 | 2007-10-15 | 프리스케일 세미컨덕터, 인크. | 고속의 낮은 오버헤드의 콘텍스트 전환을 실행하는 디바이스 및 방법 |
KR100770034B1 (ko) * | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR100259597B1 (ko) | 2000-06-15 |
US6247040B1 (en) | 2001-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100259597B1 (ko) | 기억서브시스템타겟디바이스에서다중콘텍스트등을자동적으로스위칭하는방법및구조체 | |
US6081849A (en) | Method and structure for switching multiple contexts in storage subsystem target device | |
US6336150B1 (en) | Apparatus and method for enhancing data transfer rates using transfer control blocks | |
US5721840A (en) | Information processing apparatus incorporating automatic SCSI ID generation | |
US5201053A (en) | Dynamic polling of devices for nonsynchronous channel connection | |
US4905184A (en) | Address control system for segmented buffer memory | |
KR910005997B1 (ko) | 데이타 처리장치에 있어서 오퍼레이팅 시스템 슈퍼바이저 방법 및 장치 | |
US5038275A (en) | Status transfer structure within a data processing system with status read indication | |
US11397675B2 (en) | Storage device, computer system, and operation method of storage device configured to arbitrarily stop garbage collection | |
US20010008007A1 (en) | Command insertion and reordering at the storage controller | |
US5210865A (en) | Transferring data between storage media while maintaining host processor access for I/O operations | |
KR100285637B1 (ko) | 기억서브시스템타겟디바이스에서독립적인디스크및호스트전송을위한방법및구조체 | |
EP0240616A1 (en) | Method to test and set data in a record on disk in one atomic input/output operation | |
US5727183A (en) | Data transfer between disk storage and host device under the control of file control device employing cache and associated batch write-back operation | |
JP2007102436A (ja) | ストレージ制御装置およびストレージ制御方法 | |
KR100638378B1 (ko) | 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법 | |
JP2000040057A (ja) | 計算機システム、バッファ制御装置及び転送方法 | |
KR920007949B1 (ko) | 컴퓨터 주변장치 제어기 | |
JPH07121308A (ja) | ディスク装置のライトバック制御方法 | |
US8271744B2 (en) | Apparatus, system, and method for switching data library managers | |
JPH06348503A (ja) | マスタ/スレーブ制御系を有する装置と、その制御方法 | |
EP0489285B1 (en) | External memory control device | |
JP3599099B2 (ja) | 電子ディスク装置用シーズ制御回路 | |
EP0363087A2 (en) | Status transfer within a data processing system | |
WO1994022134A1 (en) | Buffer control for data transfer within hard disk during idle periods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20050221 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |