KR0163234B1 - 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템 - Google Patents

데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템 Download PDF

Info

Publication number
KR0163234B1
KR0163234B1 KR1019950022603A KR19950022603A KR0163234B1 KR 0163234 B1 KR0163234 B1 KR 0163234B1 KR 1019950022603 A KR1019950022603 A KR 1019950022603A KR 19950022603 A KR19950022603 A KR 19950022603A KR 0163234 B1 KR0163234 B1 KR 0163234B1
Authority
KR
South Korea
Prior art keywords
data
control unit
adapter
buffer
data stream
Prior art date
Application number
KR1019950022603A
Other languages
English (en)
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 윌리암 티. 엘리스
Application granted granted Critical
Publication of KR0163234B1 publication Critical patent/KR0163234B1/ko

Links

Classifications

    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/4143Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

본 발명의 목적은 데이타 스트림 기능을 처리하는데 있어서, 종래의 시스템에 비해 프로세서 인터럽트 처리와 관련된 시간지연을 줄이며 소요되는 메모리 버퍼의 양을 감축하는 더욱 효율적인 방법을 제공하는 것이다.
본 발명에 따른 데이타 처리를 위한 구성은 멀티미디어 시스템에 특히 적합한 것으로, 시스템에 장착된 장치 어댑터(제어 유닛)로 하여금 시스템 프로세서에 인터럽트를 걸지 않고도 스트림보다 더 작은 용량의 메모리 버퍼를 통하여 임의의 길이의 데이타 스트림 처리를 자율적으로 제어할 수 있도록 한다. 이러한 스트림 처리 연산에 있어서, 데이타 스트림을 구성하는 데이타는 어댑터에 의해 제어되는 장치를 통하여 연쇄적으로 흘러가며, 장치 사이를 통과하는 도중에 공유 메모리 버퍼에 저장된다. 이 어댑터는 시스템 프로세서에 의한 스트림 처리 연산을 위하여 준비되는 것으로, 자신의 준비 상태를 해당 프로세서에 알리고 이 프로세서로부터 개시 신호를 수신한 후, 프로세서로부터 더이상의 도움을 받지 않고 해당 연산을 진행하여 완료한다. 그리고 어댑터는 각 장치에 의한 메모리 버퍼의 사용을 조정하며, 이는 어댑터의 준비 과정에서 정의된 통지 신호 프로토콜을 사용하여 수행된다. 버퍼의 여러가지 상이한 사건을 통지하기 위하여(채움, 비움 등), 어댑터는 해당 어댑터와 장치를 시스템 프로세서 및 메모리에 연결시키는 시스템 채널의 동배 통신의 특성을 이용한다. 이 특성을 이용함으로써 시스템 프로세서를 개입시키지 않고 하나의 어댑터가 다른 제어 유닛에 통지 정보를 직접 전달할 수 있다. 어댑터의 준비 과정에서 어댑터에 제공되는 정보에는 메모리 버퍼와 통지 프로토콜을 정의하는 디스크립터가 포함된다. 또한 이 정보는 스트림 데이타 처리와 해당 스트림 외부의 사건(예: 외부 타이머 기능 혹은 다른 데이타 스트림 처리에 관련된 사건)을 동기시키기 위하여 제어 유닛을 인에이블하는 디스크립터에 포함된다. 이에 따라, 예를 들어 생생한 동화상 상영을 위한 비디오 및 오디오 부분은 동기시킬 수 있다. 스트림 처리에 영향을 주는 제어 기능은 제어되는 장치로부터 격리되며, 각 장치의 임의의 스트림 데이타에 대해 수행하는 처리 기능은 동일한 스트림에 대하여 여타의 장치가 수행하는 기능과는 독립적으로 수행되므로 새로운 장치 및 처리 기능의 개발이 용이해 진다.

Description

데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템
제1도는 종래 컴퓨터 시스템의 대용량 데이타 처리에 있어서, 중앙 프로세서와 주변장치에 의해 수행되는 기능을 설명하는 블럭도.
제2도는 제1도에 도시된 구성에서 중앙 프로세서와 주변장치에 의해 수행되는 연산의 순서를 나타내는 타이밍도.
제3도는 제1도의 공유 메모리 데이타 버퍼 B1-2가 복수개의 분할 혹은 구간으로 구성될 수 있음을 도시한 도면.
제4도는 본 발명에 따른 데이타 스트리밍 연산 처리에 있어서 중앙 프로세서와 주변장치의 신호전달 기능을 나타내는 블럭도.
제5도는 본 발명에 따른 데이타 스트리밍 연산을 실행하는데 있어서 프로세서와 주변장치에 의해 수행되는 연산 순서를 설명하는 타이밍도.
제6도는 본 발명에 따른 제어 정보를 근간으로 하지 않는 상이 구조의 제어 유닛(예: 기존에 있던 제어 유닛)에 접속하기 위하여 중앙 프로세서 서브시스템에서 에뮬레이트되는 대리(혹은 가상) 제어 유닛의 활용을 설명하는 블럭도로서, 상기에 따라 상이구조의 제어 유닛과 결합하여 작동하는 대리 유닛이 마치 정식구조의 제어 유닛과 동일하게 동작하는 것처럼 보이도록 도시한 도면(스트리밍 연산에 관련된 여타의 제어 유닛에 대하여).
제7도는 프로세서 서브시스템에서 수행되는 대리 제어 기능 및 선택적인 스트림 처리 기능을 보유하기 위하여, 주변장치로 부터 중앙 프로세서 서브시스템에서 에뮬레이트되는 가상장치로의 스트리밍 처리 기능의 기능적 전이를 나타내는 블럭도로서, 이러한 형태의 구성은, 컴퓨터 시스템 사용자에게 시스템 외부의 장치로부터 얻을 수 있는 것에 비해 스트림처리 기능을 잠재적으로 더 낮은 비용에(그러나 속도는 더 느림) 제공하거나 혹은 독자형(stand-alone) 장치에서는 구현되지 않는 스트림 처리 기능을 제공하는데 유용하게 사용되는 도면.
제8도는 장치의 관점에서, 제어 정보 이동과 스트림 데이타 이동의 개략적인 흐름을 도시하며, 하나의 장치가 다수의 데이타 스트림 처리를 동시에 지원할 수 있음을 도시한 도면으로, 적정 환경 하에서 단일 데이타 스트림이 다수의 스트림으로 어떻게 분할될 수 있는 지 혹은 다수의 스트림이 단일 스트림으로 어떻게 병합될 수 있는 지를 예시한 도면.
제9도는 서로 통신하고 있는 한쌍의 스트림 처리 유닛이 공유하고 있는 다수의 데이타 버퍼가 어떻게 하나의 FIFO(first in first out) 버퍼로 대체될 수 있는 지를 예시한 도면.
제10도는 직접 통신하고 있는 스트림 처리 장치 사이에 전달되는 스트림 데이타의 기억장소를 관리하기 위하여, 해당 장치와 이들 장치가 공유하는 버퍼가 물리적으로 단일 유닛 내에 존재할 때에 특히 효과적일 수 있는 개별 버퍼 전략에 이들 장치들이 어떻게 적응될 수 있는 가를 도시한 도면.
제11도는 본 발명에 따른 스트림 처리에 관련된 가능한 모든 입력 및 출력을 요약한 도면.
제12도는 본 발명에 따라 제공되는 제어 정보의 요소인 개방형 스트림 리퀘스트(Open Stream Request) 블럭의 형식을 도시한 도면.
제13도는 개방형 스트림 리퀘스트 요소에 포함된 개방형 스트림 인자 필드를 자세히 도시한 도면.
제14도는 버퍼 그룹 디스크립터(buffer group descriptor) 서브필드를 도시한 도면.
제15도는 버퍼 디스크립터(buffer descriptor) 서브필드를 도시한 도면.
제16도는 버퍼 통지 디스크립터(buffer notification descriptor) 서브필드를 도시한 도면.
제17도는 입력 신호 코드 디스크립터 서브필드를 도시한 도면.
제18도는 동기 디스크립터 서브필드를 도시한 도면.
제19도는 변형 디스크립터 서브필드를 도시한 것으로, 이러한 서브필드의 세부 및 기능은 발명의 상세한 설명에서 기술되는 도면.
제20도는 본 발명에 따라 구비된 제어 정보의 일부분인 버퍼 제어 리퀘스트 요소의 형식을 나타낸 도면.
제21도는 버퍼 제어 리퀘스트 요소 내에 포함된 제어 인자 필드의 형식을 도시한 도면.
제22도는 본 발명의 제어 정보의 일부분인 버퍼 동기 제어 리퀘스트 요소의 형식을 도시한 도면.
제23도는 제22도의 제어 요소에 포함된 동기 제어 인자 필드를 도시한 도면.
제24도는 본 발명에 따른 스트림 제어 리퀘스트 요소의 형식을 나타낸 도면.
제25도는 제24도의 리퀘스트 요소에 포함된 스트림 제어 인자 필드를 자세히 예시한 도면.
제26도, 제27도, 제28도는 본 발명에 따른 데이타 스트리밍에 적응되는 제어 유닛의 연산 및 논리적 구성을 설명하는 흐름도.
제29도는 제26도, 제27도, 제28도의 흐름도에 따라 동작하는 제어 유닛의 논리적 구성요소를 설명하는 블럭도.
* 도면의 주요부분에 대한 부호의 설명
1 : 프로세서/메모리 서브 시스템 2 : 장치 관리자
3 : 스트림 관리자 4 : 운영체제
5, 6 : 장치 구동기 7, 8, 13a, 14a, 90a, 91a, 92a : 라우터
10 : 채널 15, 16, 90b, 92b : 장치
90, 91, 92 : 장치 제어유닛 93, 94 : 메모리 데이타 버퍼
95 : 대리 제어유닛
본 발명은 컴퓨터 시스템의 여러 구성요소 사이의 데이타 전송 처리에 관한 것으로, 멀티미디어 기능의 개선에 특히 적합하다.
컴퓨터 시스템에 있어서, 프로세서나 메모리 서브시스템과 주변장치 사이의 데이타 전송은 통상적으로 프로세서 서브시스템에 의해 긴밀히(tightly) 제어되어 왔다. 이에 대한 전형적인 방식으로서, 각 주변장치는 메모리 서브시스템 중 미리 정해진 부분과의 단일 데이타 전송 연산을 개시하는 명령 블럭을 프로세서 서브시스템으로부터 수신하고, 이 연산을 수행하며, 프로세서 서브시스템에 인터럽트를 걸어 해당 연산의 종료상태를 알리고, 프로세서 서브시스템으로부터 다른 명령을 기다린다.
이 방식에 있어서의 문제점으로, 메모리 서브시스템의 버퍼공간과 다수의 주변장치 사이에 많은 양의 데이타 이동(추후 다수의 블럭을 포함하는 데이타 스트림으로 표기함)을 요하는 연산의 경우, 프로세서의 인터럽트 처리 연산으로 인하여 시스템의 효율이 저하될 수 있다(데이타 처리율 감소). 이러한 문제점은, 예를 들어 장시간의 동화상(예: 상영에 한시간이상 소요되는 경우)에 있어서, 오디오 및 비디오 부분이 대용량 매체(예: CD-ROM)에 압축(compression) 및 암호화(encryption)된 형태로 저장되고 또한 이들 부분이 스피커와 디스플레이 모니터로 인가되기 전에 주변장치에서 압축복원(decompression) 및 암호해독(decryption)되는 멀티미디어 시스템에서 빈번히 지적되고 있다.
메모리 서브시스템에서 버퍼공간을 효율적으로 사용하기 위해서, 프로세서는 각 장치에 대하여 해당 프로세스를 각각 작은 데이타 블럭(처리될 데이타 스트림을 합한 길이보다 더 작은 단위 길이의 블럭)에 대한 처리 방법을 지정하는 여러개의 명령으로 분할하며, 이들 해당 프로세스를 진행하기 전에 각 블럭 연산의 상태를 감시한다(인터럽트 처리를 통하여). 각각의 블럭 전송에 대하여 메모리 버퍼공간이 적정한 크기로 할당되어 있다고 가정하면, 이러한 상태 감시로 인하여 부가되는 시간지연(latency/delay)은 수용되기 어렵다.
블럭 처리 프로세스들이 동기되어야 한다는 제약이 있을 경우, 예를 들어 음성 및 화상 데이타 블럭이 각각 스피커 및 디스플레이 장치에 동기되어 인가되어야 한다는 제약이 있을 경우, 이러한 문제점은 더욱 심각하다. 더우기 해당 데이타를 순차적으로 처리해야 하는 장치의 수에 따라 문제는 매우 복잡해 진다. 예를 들어, 네개의 장치에 의해서 연쇄적으로 처리되어야 하는 데이타는(예: 제1의 장치에 의해 메모리 버퍼에 적재되고, 제2의 장치에 의해 압축복원되고, 제3의 장치에 의해 암호해독되고, 제4의 장치에 의해 목적지로 경로이송됨) 하나 혹은 두개의 장치에 의해 연쇄적으로 처리되는 데이타의 경우에 비해 프로세서 인터럽트 처리에 있어 매우 긴 시간지연에 봉착하게 된다.
본 발명은 이러한 데이타 스트림 기능을 처리하는데 있어서, 종래의 시스템에 비해 프로세서 인터럽트 처리와 관련된 시간지연을 줄이며 이에 따라 소요되는 메모리 버퍼의 양을 감축하는 더욱 효율적인 방법을 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위하여, 프로세서와 주변장치 사이에 이들 장치로 하여금 버스 마스터의 역할을 담당하게 하고 중앙의 프로세서를 경유하지 않고도 다른 장치와 직접 대화할 수 있도록 허용하는 버스 시스템을 제공하며, 또한 각 연산을 개시하는 중앙 프로세서 시스템에 인터럽트를 걸지 않고도 이러한 버스 시스템에 연결된 장치들이 데이타 스트림 처리 연산을 자율적으로 수행할 수 있도록 해야 한다.
중앙 프로세서와 주변장치로 하여금 버스 마스터의 역할을 교대로 담당하게 하는 버스 시스템은 공지이나(예: 마이크로 채널(마이크로 채널은 IBM사의 등록상표임) 버스 시스템), 장치들이 이러한 버스 시스템을 통하여 데이타 스트림 연산을 자율적으로 수행하도록 하는 것은 새로운 기술로 간주된다.
그리고 본 발명의 목적을 심층 달성하기 위하여, 해당 데이타 스트림을 실제 처리하기에 앞서 중앙 프로세서 시스템은 다수의 장치(즉 데이타 스트리밍을 위하여 적응된 장치) 혹은 이에 대응되는 장치 제어 유닛을 동시에 준비하며, 해당 장치 사이의 데이타 스트리밍 연산을 개시하기 전에 이 연산에 관련된 모든 장치들이 적절히 준비되었는 지를 검증한다. 이 준비 과정에서 모든 장치 혹은 이에 대응하는 장치 제어 유닛과 각각의 데이타 스트리밍 기능을 수행하는데 필요한 모든 제어 정보가 마련된다. 제어 정보는 제어 유닛과 관련 장치들이 상호 협력하여 프로세서로부터 더이상의 도움을 받지 않고도 전체 스트림을 처리할 수 있도록 준비한다.(즉 프로세서와 프로세서 내에서 스트리밍 처리에 관련된 소프트웨어 부분이 발생시킨 인터럽트 및 중재에 소요되는 시간에 무관하게). 제어 유닛과 이에 관련된 장치는 프로세서에 주변장치로서 부착되거나 혹은 프로세서 서브시스템 내에서 시뮬레이트되는 가상의 구성요소일 수 있다.
이러한 준비가 완료되면, 해당 데이타 스트림을 처리하도록 맨처음에 스케줄되어 있는 장치 제어 유닛에 진행(go-ahead) 신호가 전달된다(제어 정보에 지정된 발신 장치로부터 데이타 스트림을 검색하여 변환이 지시되어 있는 경우 이 데이타 스트림에 대한 변환 과정을 수행한다).
또한 본 발명의 목적은, 제어 유닛으로 하여금 프로세서가 구비한 제어 정보를 논리적으로 해석하고 스트림 처리 과정 중 다른 제어 유닛으로부터 수신된 신호(제어 정보에 의해 사전에 정의됨)에 미리 정해진대로 반응하도록 하여, 각자의 데이타 스트림 처리 기능을 수행할 수 있는 논리적인 능력을 이들 제어 유닛에 부여함으로써 성취될 수 있다.
이 진행(go-ahead) 신호가 주어진 후, 제어 유닛은 제어 정보에 의해 정의된 데이타 스트림 처리(데이타 스트리밍) 연산을 수행한다. 이렇게 처리된 데이타는 많은 데이타 블럭으로 이루어질 수도 있으며, 서로 통신 중인 제어 유닛 쌍에 의해 공유되고 있는 블럭 크기의 메모리 버퍼를 통하여 전달된다. 각 버퍼는 단일 스트리밍 프로세스를 실행하는 동안 여러번 채워지고 비워지는 과정을 거치게 된다. 버퍼는 프로세서에 의해 사전에 할당되기는 하나 이들 버퍼를 적절히 관리하는 것은 장치 제어 유닛이다.
데이타 스트리밍 프로세스를 위하여 이들 장치 제어 유닛을 준비하는 제어 정보에 의해 정의되는 필수 기능은 아래와 같다.
1) 각 장치 제어 유닛의 입력 데이타의 발신지;
2) 이 발신지가 이전의 제어 유닛과 공유하던 하나 이상의 입력 (메모리) 버퍼인 경우(즉 이전의 제어 유닛에 대한 출력 버퍼로서 할당된 경우), 이러한 입력 버퍼를 관리하는 전략(예: 이들 버퍼의 크기 및 갯수와 가능하다면 시스템의 메모리 어드레스 공간에 있어서의 이들 버퍼의 위치);
3) 각개의 제어 유닛이 해당 스트림을 처리함으로써 발생되는 데이타의 목적지;
4) 목적지가 후속 제어 유닛과 공유된 출력 버퍼인 경우, 이 버퍼를 관리하는 전략;
5) 각 유닛에 입력 버퍼를 사용할 수 있음을 알리는 신호 혹은 사건;
6) 각 유닛이 이전 유닛과 공유하던 입력 버퍼의 처리를 완료하였음을 이전 유닛에 통지하기 위하여 각 유닛이 발생시키는 신호 혹은 표시(즉 이러한 버퍼는 효과적으로 재사용 가능)
7) 후속 유닛에게 출력 버퍼를 사용할 수 있음을 알리기 위하여 발생되는 신호 혹은 표시;
8) 각 유닛이 자신의 발신/입력 데이타에 대하여 수행하는 연산;
9) 각 유닛이 스트림 데이타의 처리를 여타 스트림의 데이타 처리와 동기시키기 위하여 수행하는 기능(예: 제1의 스트림에 있는 화상/비디오 데이타의 처리와 이에 해당하는 제2 스트림의 오디오 데이타를 동기시킴);
10) 에러의 검출 및 복원을 위하여 각 유닛에 의해 사용되는 절차; 각 유닛은 프로세서에 의해 구비된 제어 정보를 해석하고, 정의된 스트림 처리 기능을 수행하며, 또한 다른 유닛으로부터 전달된 신호에 반응하고, 다른 유닛에 신호를 발생시킬 수 있는 논리적 구조로 이루어져 있다. 본 발명이 해당하는 분야의 전문지식을 가진 사람이면, 이러한 구조를 위한 논리적 기능은 종래의 유닛으로도 용이하게 구현될 수 있음을 알 수 있을 것이며, 또한 스테이트머신과 같은 특정목적 전용의 논리나 마이크로프로그램 형태의 펌웨어를 해석하기 위하여 설계된 범용목적의 논리로써 이러한 기능을 구현하는데 관련된 성능 트레이드 오프를 이해할 수 있을 것이다.
1. 본 발명이 해결하고자 하는 과제
제1도는 멀티미디어 기능을 보유한 종래의 컴퓨터 시스템의 블럭도로서, 본 발명에서 해결하고자 하는 인터럽트 지연을 설명하는데 이용된다. 프로세서 및 메모리 서브시스템(1)은 프로세서/메모리 서브시스템(PSS)으로 나타낸다. 주변장치 사이의 데이타 이동을 제어하기 위하여 이 서브시스템 체제 내에서 프로그래밍 엔티티의 계층 구조가 사용된다. 이러한 엔티티에는 장치 관리자 서브시스템(2), 스트림 관리자 서브시스템(3), 운영체제(4), 특정 장치에 관련된 장치 구동기(5, 6), PSS서브시스템과 장치 사이에 신호를 전달하기 위한 라우터(7, 8)가 포함된다.
라우터(7, 8)는 기존 출판물
1) SCB Architecture Supplement to the IBM Personal System/2 Hardware Interface Technical Reference Architectures(Copyright 1991, International Business Machines Corporation)
및 보나벤토(Bonavento) 등에 의한 특허출원서에 기재된 서브시스템 제어 블럭(SCB) 구조의 개념에 따라, 컴퓨터 시스템의 서브시스템 사이에 일정 형식을 갖춘 제어 정보의 전달 경로를 배정하는데 유용하다. SCB 구조에 있어서, 서버 엔티티에 의해 실행될 작업 단위를 정의하기 위하여 기결정된 형식의 가변장(varied length) 제어 요소는 클라이언트와 서버 엔티티 사이에 전달된다. 보나벤토 등의 출원에 따르면, 제어 요소는 큐에 들어있는 요소의 파이프 구성으로 전달되며, 라우터는 각 요소에 있는 목적지 코드를 디코드하여 해당 정보를 파이프에 적절히 배정한다.
비록 도면 상의 혼동을 피하기 위하여 이들 라우터를 별도의 박스로 도시하였으나, 실제적으로 이들 라우터는 PSS와 같은 하나의 프로세서 서브시스템 내에서 단일의 엔티티(프로그램 모듈)로 구현될 수 있다.
입출력 채널(10)은 각 장치를 제어하는 장치 제어 유닛(12)과 PSS 서브시스템을 연결시킨다. 두개의 장치 제어 유닛(13, 14)과 유닛(13)(CU1) 및 유닛(14)(CU2)에 의해 각각 제어되는 장치(15, 16)이 도시되어 있다. 채널 (10)은 제어 유닛 사이의 직접 통신이 가능하도록(즉 PSS의 중재없이) (13, 14)와 같은 제어 유닛을 인에이블시키는 동배 통신의 특성을 가진다. 이러한 종류의 특성을 가진 채널로서 적합한 것은 IBM 마이크로 채널
2) 마이크로 채널은 IBM 사의 등록 상표이다.
(Micro Channel)이다.
CU1에 부속된 라우터(13a)는, CU1이 시스템의 다른 부분에 있는 파이프에 제어 요소를 송신하고 있을 때, 이러한 요소가 적절한 파이프 목적지에 전달되도록 한다(예: PSS의 일부분 및/혹은 CU2와 같은 다른 제어 유닛). 이와 마찬가지로 CU2는 PSS와 CU1과 같은 다른 제어 유닛에 있는 파이프에 자신의 제어 요소를 전달하는 라우터(14a)를 가진다.
장치 (15, 16)는 대용량 데이타의 연속 처리(먼저 장치 (15)에 의한 처리 후 장치 (16)에 의한 처리를 수행)를 포함하는 연산에 관련된 것으로 가정한다. B1-2로 표시된 데이타 버퍼(17)는 이러한 장치에 의해 공유되는 것으로, 장치 (15)에 의해 처리된 데이타를 수신하고 다시 이 데이타를 장치 (16)으로 전달한다. 버퍼 B1-2는 PSS의 메모리 서브시스템에 포함되는 것이 더 바람직하나, 설명의 편의상 제1도에서는 별도의 구성요소로 도시되었다(또한 B1-2는 본 발명의 연산에 반드시 영향을 주지는 않고 장치 (15)와 (16)에 의해서만 사용되는 전용의 메모리 버퍼일 수도 있다).
앞서 설명한 바와 같이, 채널(10)의 동배 통신의 특징은 제어 유닛과 여타 주변장치가 직접 상호 통신하도록 허용한다. 이러한 상호 통신에 있어서, 중앙 프로세서, 메모리, 주변장치 서브시스템이 교대로 버스 마스터의 역할을 담당하는 것으로 가정한다.
주변장치가 버스의 마스터 제어권을 가질 때, 이들 주변장치는 메모리 서브시스템이나 프로세서 서브시스템 혹은 다른 주변장치와 직접 통신한다. 프로세서가 버스를 제어하는 경우, 프로세서는 주변장치와 메모리 서브시스템의 외측 부분과 통신을 하는 것이 보통이다. 메모리 서브시스템이 버스를 제어하는 경우, 메모리 서브시스템은 직접 메모리 액세스(Direct Memory Access, DMA) 제어기를 통하여 장치와 통신하거나, 혹은 메모리 제어기를 통하여 메모리 서브시스템의 외측에 있는 구성요소와 통신한다.
제2도는 장치 (15)/CU1으로부터 B1-2, 그리고 B1-2로부터 장치 (16)/CU2로의 대용량의 데이타 이동을 포함하는 종래의 데이타 전송 프로세스의 처리과정을 나타낸다. 본 명세서에서 의미하는 대용량의 데이타란 B1-2 용량의 수십배를 능가하는 크기를 의미한다.
제2도에서 수직으로 그어진 선 (30∼32)는 시간을 나타내고 아래쪽 진행방향이 시간의 경과를 의미하며, 수평으로 그어진 선은 특정 동작을 도시한다. 수직선 (30)에서 시작되는 수평선(다른 수직선을 가리키는 화살표에서 끝나는)은 PSS에 의해 발생된 동작을 나타낸다. 수직선 (31)에서 나오는 수평선은 CU1이나 장치 (15)에서 발생된 동작을 의미한다. 수직선 (32)에서 나오는 수평선은 CU2나 장치 (16)에서 발생된 동작을 의미한다.
연산 (40)은 PSS로부터 CU1과 장치 (15)로 전달된 명령에 의해 개시되어, 이들로 하여금 해당 명령에 지정된 발신지로부터 처음의 n개의 데이타 블럭을 인출하고(이들 데이타 블럭은 메모리 서브시스템이나 CD-ROM과 같은 다른 장치에 있을 수 있음), 해당 블럭을 처리하고, 그 결과를 공유 버퍼 B1-2로 기록하도록 지시한다.
그런 다음, 명령된 연산이 CU1과 장치 (15)에 의해 수행된다(도시되지 않음). (41)에 도시된 것처럼, 이러한 동작이 완료되면(성공적이든 아니든 관계없이) CU1은 PSS에 완료 인터럽트 신호를 전달한다. 이 신호를 수신하고 어느 정도의 시간이 경과한 후(현재 PSS의 태스크 부하 등에 따라 일정치 않음), PSS는 채널을 제어하여 CU1과 장치 (15)로부터 상태 정보를 검색하도록 한다.
(41)에 수신된 인터럽트에 관련된 상태 정보를 복원하고 해당 정보가 (40)에서 개시된 연산이 성공적으로 완료되었음을 나타내는 경우, PSS는 (42)에서 CU2와 장치 (16)에 명령을 내려 B1-2에 저장된 데이타 블럭을 처리하도록 한다. 그러면 CU2와 장치 (16)은 각 프로세스를 수행하고, 결과적으로 (43)에 도시된 바와 같이 CU2로부터 PSS로 완료 인터럽트 신호를 보낸다. 이 과정에서, 데이타는 B1-2로부터 판독되고, (42)에서 주어진 명령에 지정된 목적지로(공유 메모리의 다른 블럭이나 비공유 메모리의 블럭으로, 혹은 디스플레이 모니터나 스피커와 같은 특정 출력 장치로) 전송된다. (43)에 나타난 것처럼 인터럽트 신호를 수신한 후 어느 정도 시간이 경과한 지점에서 PSS는 CU2와 장치 (16)으로부터 관련 상태 정보를 복원한다.
이 상태 정보가 성공적인 완료를 나타낼 경우, 다른 데이타 블럭(두번째, 세번째, ..., n-1번째)에 대하여 한번에 한 블럭씩 위에서 설명한 과정이 반복되며, 이는 (44)의 파선으로 도시되었다. 수평선 (50)∼(53)으로 표시된 마지막 반복 과정에서, 마지막 혹은 n번째 데이타 블럭은 CU1에 의해 처리되어 B1-2에 기록되며, 그 결과는 다시 CU2에 의해 처리되어 지정된 목적지로 기록된다.
여기에서, n은 미지수이고 매우 큰 숫자일 수 있으며, 이에 따라 PSS에서 2×n번의 완료 인터럽트를 처리하는데 누적되어 소요되는 시간은 매우 길어질 가능성이 있다.
제3도는 B1-2가 B1-2A, B1-2B 등 두개 이상의 구간으로 구성될 수 있음을 보인다. 이들 구간은 CU1의 장치 (15)에 의해 별도로 채워지고 CU2의 장치 (16)에 의해 별도로 비워질 수 있다. 통상 알려진 바와 같이, 이러한 분할된 버퍼는 병행 엑세스(반드시 시간적인 동시성이 아니더라도)를 목적으로 구성되는 것으로, CU2가 B1-2B에 저장되어 있던 데이타에 대하여 연산을 수행하는 동안, PSS는 CU1로 하여금 B1-2A을 처리하도록 함으로써 장치 (15) 및 (16)에서의 데이타 처리율을 증대시키고자 하는 것이다. 따라서, PSS는 CU1에 의한 다음 데이타 블럭의 처리를 개시하기 전에, 완료 인터럽트와 CU2로부터의 상태 정보를 기다릴 필요가 없다.
그러나 각각의 데이타 블럭을 처리하는데 있어서, PSS는 최소한 CU1으로부터의 완료 인터럽트를 처리해야 하므로 이에 따른 지연시간으로 인하여 전체 연산의 효율성이 감소될 것이다. 또한 PSS가 블럭 완료 상태 기능을 수집 및 분석해야 하며, 이에 따라 PSS가 다른 태스크를 처리하는데 사용될 수 있는 시간이 낭비된다.
본 발명의 목적은 PSS가 블럭 완료 인터럽트를 처리하는데 관련된 지연시간을 제거하고, PSS로부터 블럭 완료 인터럽트 처리에 관련된 많은 작업량을 덜어주는 것이다.
2. 본 발명에 따른 데이타 스트림 처리
제4도는 제1도의 시스템과 유사하나, 복수개의 장치를 통하여 대용량의 데이타 스트림을 더욱 효율적으로 처리할 수 있도록 구성된 것이다.
제4도에서 호스트 시스템 PSS를 장치 제어 유닛 CU1 및 CU2에 각각 연결하는 신호 경로 (56)과 (57)은 여러 제어 유닛의 상호 협력 하에 자율적으로 처리되어야 할 데이타 스트리밍 연산을 위한 제어 유닛을 초기 준비하는데만 사용된다(즉, 해당 연산이 개시된 후 PSS에 인터럽트를 걸거나 대화할 필요없이). 이 때 공유 버퍼 B1-2가 모든 데이타를 동시에 저장할 수는 없으므로, CU1과 CU2는 각 장치의 연산이 임의의 길이의 데이타 스트림에 상대적으로 수행되도록 지시하여 데이타가 공유 버퍼 B1-2를 통하여 조금씩 전달되도록 한다.
이 데이타는 PSS의 중재없이 먼저 CU1의 장치 (15)에 의해 처리되고 그런 다음 CU2의 장치 (16)에 의해 처리되어 완료된다. 스트리밍 연산의 종료시점에서, 스트리밍 연산이 완료되었음을 나타내는 사건과 이에 대한 상태는 인터럽트를 통하여 PSS에 전달된다.
연산을 수행하는 동안, CU1과 CU2는 버퍼 B1-2(예: 장치 (16)에 의해 처리될 데이타를 보유한 구간 혹은 장치 (15)로부터 수신된 데이타가 사용할 수 있도록 된 구간, 왜냐하면 이전에 이 구간에 있던 데이타는 장치 (16)에 의해 판독 및 처리되었기 때문)에 관련된 사건을 서로에게 통지하기 위하여 채널(10)의 직접/동배 통신의 특성을 이용한다. CU의 버퍼 구간 활용을 조정하도록 하는 이러한 통지 전송은 CU1의 파이프로부터 CU2의 파이프로 전달되는 일정 형식을 갖춘 제어 요소의 형태, 혹은 CU2 내의 특정 레지스터로 전달되는 신호의 형태를 가진다. 이 전송이 파이프로 전달될 경우 라우터 (13a)와 (14a)를 통하여 처리되며, 레지스터로 전달되는 신호인 경우 이러한 라우터는 바이패스된다.
제어 신호를 CU2로 보낼 때, B1-2의 영역을 데이타로 채울 것을 지시하기 위하여 CU1(혹은 라우터 (13a))은 자신이 채널 (10)을 포함하는 버스의 제어를 관장한다는 가정하에, CU2에 있는 레지스터에 제어신호를 직접 기록하거나 혹은 라우터 (14a)를 통하여 CU2에 있는 파이프로 일정 형식의 제어 요소를 전달한다.
PSS에 의해 수행되는 이 프로페리토닐(properitoneal) 기능과 제어 유닛 및 각 장치에 의해 (자율적으로) 수행되는 스트리밍 연산은 제5도를 참조로 설명된다. PSS에 의해 제어 유닛에 제공되는 프로페리토닐 제어 정보와, CU1로부터 CU2로 제공되는 제어 신호의 특정 형태는 추후 설명될 것이다.
제2도와 마찬가지로 제5도는 시간을 나타내기 위하여 수직선을 사용하고, 수직선에서 나오는 수평선은 PSS와 각 제어 유닛에 의해 수행되는 동작을 표시한다.
(70)에서, PSS는 CU1에 하나 이상의 명령을 제공하여 CU1으로 하여금 임의의 스트리밍 연산을 준비하도록 하고, 이 연산을 정의하며(메모리 서브시스템에서 사용되는 버퍼 공간은 공유 데이타 버퍼로서), 또한 장치 (15)에 의해 검색 및 처리되는 데이타의 발신지 등을 정의하도록 한다. (71)에서, PSS는 CU1으로부터 CU1이 스트리밍 연산을 시작할 준비가 완료되었음이나 CU1이 해당 준비를 완료할 수 없었음을 나타내는 인터럽트 상태를 수신한다.
(72)에서, PSS는 CU2에 하나 이상의 명령을 전달하여 CU2로 하여금 동일한 스트리밍 연산을 준비하도록 하고 해당 연산을 정의하도록 한다(B1-2로 사용될 버퍼 공간, 장치 (16)에 의해 처리될 데이타의 목적지 등). (73)에서 PSS는 CU2로부터 CU2의 상태(준비완료 혹은 미준비)를 나타내는 인터럽트 상태를 수신한다.
만약 다른 제어 유닛이 이 스트리밍 연산에 관여되었을 경우, 이들 제어 유닛은 PSS로부터의 셋업 명령어와 PSS에 대한 인터럽트를 통한 신호 준비완료 상태를 수신할 것이다. PSS로 변환된 임의의 인터럽트 상태가 어떤 제어 유닛이 스트리밍 연산 준비를 완료할 수 없음을 나타낸다면, 해당 셋업 프로세스는 중단되고 해당 스트리밍 연산은 개시되지 않는다.
앞서 상호참조한 보나벤토 등에 의해 출원 공개된 파이프 신호 기술을 이용하여, 각 제어 유닛을 셋업하는데 사용되는 명령이 해당 제어 유닛에 제공될 수 있을 것이다.
모든 제어 유닛이 준비완료 상태를 나타낸다고 가정하면, PSS는 (74)에서 GO 신호를 발생한다. 이 신호는 스트리밍 연산에 있어 최초 동작을 수행하도록 요구되는 제어 유닛에만 제공된다. 이 경우, 이 신호는 CU1으로 전달되어 CU1의 장치 (15)가 지정된 발신지로부터 데이타 블럭의 인출을 시작하고 이 데이타를 처리하며, 그 결과를 B1-2로 기록하여 이것이 CU2에 연관된 장치 (16)에 의해 처리되도록 한다.
이 스트리밍 연산 중 최초 6 블럭의 데이타를 처리하는 과정에서 연속적으로 발생하는 동작들은 (80)∼(85)의 수평선으로 표시되어 있고, 부가적인 데이타 블럭에 대한 후속 동작은 수직파선 (86)으로 도시되었다.
동작 (80)∼(86)에서, 공유 메모리 버퍼 B1-2는 B1-2A, B1-2B 등 복수개의 블럭 저장 구간을 포함한다고 가정한다(제3도 참조).
(80)에서, CU1은 CU2에 신호를 보내어, 공유 메모리 버퍼 B1-2의 B1-2A 영역에 있는 첫번째 데이타 블럭이 사용가능한 지를 표시하도록 한다(이 신호가 전달되기 이전에, CU1의 장치 (15)가 첫번째의 해당 데이타 블럭을 이미 처리하여 그 결과 블럭을 B1-2A로 기록했음을 상기할 것).
(81)에서, CU1은 B1-2의 B1-2B 영역에 있는 두번째 데이타 블럭이 사용가능한 지를 신호한다(이 신호가 발생되기 이전에, 이 데이타가 장치 (15)에 의해 이미 B1-2B로 기록되었음을 나타냄). (82)∼(86)에서, CU1은 B1-2A 및 B1-2B에 교대로 저장된 세번째, 네번째,... 등의 데이타 블럭이 사용가능한 지를 신호한다.
(80)∼(86)에서 주어진 신호는 CU2와 CU2의 장치 (16)의 수행동작에 소요되는 시간적인 제약을 고려하여, 보나벤토 등에 의해 출원된 파이프 형태로 혹은 직접 신호(CU2에 의해 즉시 복호되는)로써 전달될 수 있다.
(80)∼(86)의 각 신호가 발생된 후, CU2는 장치 (16)이 B1-2의 지정된 영역으로부터 관련 데이타 블럭을 판독하고 이를 처리한 다음 그 결과 데이타 블럭을 CU2의 초기 준비과정에서 정의된 목적지로 전송하도록 제어해야할 책임이 있다. CU2와 장치 (16)에 부가된 시간적 제약에 따라, 장치 (16)의 동작에 의해 B1-2의 각 영역이 비워질 때마다 CU2는 CU1으로 신호를 반환해야 할 것이다.
(80)∼(86) 과정을 통하여, CU1과 CU2 그리고 각 장치들은 자율적으로 동작한다(PSS에 인터럽트를 보내거나 시스템으로부터 더이상의 지침 혹은 제어를 받지 않고).
장치 (15)에 의해 마지막 데이타 블럭이 처리된 후(이 블럭은, 발신지에서 혹은 CU1의 준비단계에서 제공되는 계수 함수 등에서 이 블럭의 끝에 붙여놓은 신호를 근거로 이 장치가 결정한다), CU1은 PSS에 완료 인터럽트 신호를 보내어(87) PSS로 하여금 CU2와 장치 (16)으로부터 뿐아니라 CU1과 장치 (15)로부터 완료 상태를 계속적으로 복원하도록 한다. CU2의 장치 (16)이 자신에 부여된 연산을 종료했을 때, CU2는 PSS에 별도의 완료 인터럽트를 임의로 보내야 한다.
3. 대리/가상 제어 유닛과 장치
지금까지 설명한 바와 같이, 상술된 스트리밍 동작에 관련된 제어 유닛은 호스트 시스템 PSS에 의해 셋업되기 위하여 논리적으로 장착되어야 하며, 적어도 첫번째 장치가 시스템에 의해 초기화된 후, 호스트 시스템으로부터 더이상의 입력을 받지 않고도 스트리밍 프로세스에서 상호 협조하는 여타 제어 유닛에 대한 신호발생 기능을 수행하기 위하여 이들 장치가 적응되어야 한다는 것은 자명한 사실이다. 경우에 따라 이러한 장치 제어 유닛을 구비하지 않은 사용자는 호스트 시스템에서 이들의 기능을 에뮬레이트하기를 원할 수도 있다. 제3도는 이러한 점을 설명한다.
라우터 (90a, 91a, 92a)를 보유한 장치 제어 유닛 (90, 91, 92)와 장치 (90b, 91b, 92b)는 스트리밍 연산에 순차적으로 관련되도록 구성된다. 이 연산에서, 장치 (90b, 91b)는 메모리 데이타 버퍼 B1-2(93)를 공유하며 장치 (91b, 92b)는 메모리 데이타 버퍼 B2-3(94)을 공유할 것이다. 그러나 제어 유닛 (91)이, PSS에 의해 구비되는 셋업 명령을 인터프리트할 수 있는 논리적인 능력이 결여되고, 해당 스트리밍 프로세스 그 자체에 있어서 다른 두개의 제어 유닛에 대하여 자율적으로 동작할 수 있는 능력을 갖지 못한다고 가정해 보자.
그러한 경우, 시뮬레이트된 혹은 대리의 제어 유닛 CU2s(95)가 PSS로부터 초기의 셋업 명령을 받고 제어 유닛 (90, 91, 92)와 상호 협력하여, 제어 유닛 (91) 자체가 수행하지 못하는 스트리밍 연산의 자율적이 제어 기능을 수행한다.
이 중 셋업 과정에서, 제어 유닛 (90, 92)는 적절한 셋업 명령을 받아 각 신호 경로 (96, 97)을 통하여 준비완료를 알리는 신호를 반환하며 대리 제어 유닛 (95)는 자신의 명령을 수신하여 경로 (98)을 통하여 준비완료를 알린다. 그러므로 물리적인 실제 제어 유닛 (90, 92)는 채널 (10)을 통하여 초기화되며, 대리의 제어 유닛 (95)는 PSS 체제에 전적으로 내부적인 프로세스에 의하여 자신의 명령을 수신하고, 제어 유닛 (91), 라우터 (91a), 채널을 통한 장치 (91b)와 통신함으로써 준비완료 여부를 결정하며, PSS 체제에 전적으로 내부적인 인터럽트 프로세스에 의해 준비완료 상태를 알린다. 준비완료 여부를 결정하는데 있어서, 대리 유닛 (95)는 신호 경로 (99)와 채널 (10)을 통하여 제어 유닛과 통신한다.
모든 제어 유닛이 준비완료되었을 때, PSS는 첫번째 제어 유닛CU1(90)에 GO 신호를 보냄으로써 스트리밍 연산을 개시하며, 장치 (90b)는 지정된 장소로부터 인출된 데이타 블럭을 처리하고 그 결과 데이타를 버퍼 B1-2 내의 영역에 기록하는 동작을 시작한다. 각 버퍼 영역이 채워질 때마다 제어 유닛 (90)은 데이타 사용가능(DATA AVAILABLE) 신호를 발신하여(제5도 참조) 버퍼 영역이 채워졌음을 대리 제어 유닛 (95)에 통지한다. 이 통지는 일정 형식을 갖춘 SCB 요소의 형태로서, 라우터 (90a)에 의해 PSS에서 대리 제어 유닛 (95)에 할당된 파이프로 전달된다. 즉, 이 통지 정보는 신호 경로 (100)을 경유하여 대리 제어 유닛 (95)로 전달된다.
이 때, 장치 (91b)로 하여금 버퍼 (93)의 각 특정 영역에 있는 데이타 블럭을 처리하고, 장치 (91b, 92b)가 공유하는 버퍼 (94)의 특정 영역으로 그 결과 데이타를 전달하도록 하기 위하여, 대리 제어 유닛 (95)는 제어 유닛 (91)과 통신하여 제어 유닛 (91) 내의 명령을 셋업한다.
장치 (91b)가 이러한 데이타 블럭의 처리를 종료할 경우, 제어 유닛 (91)는 경로 (99)를 통하여(인터럽트 혹은 직접적인 신호발생 프로세스를 통하여) 제어 유닛 (91)로부터 완료를 알리는 신호를 수신하는 즉시, 채널 (10)과 경로 (101)을 통하여 데이타 사용가능 신호를 제어 유닛 (92)에 보낸다. 이 데이타 사용가능 신호로 인하여 제어 유닛 (92)는 앞서 설명한 바와 같이 자율적인 방식으로 각 해당 데이타 블럭 처리를 개시한다.
이러한 대리 제어 구성요소를 구현하는데 소요된 프로그램 코드의 양은 그리 크지 않으며, 또한 이 코드는 다수의 장치를 지원할 수 있도록 쉽게 적응될 수 있기 때문에(예: 한 부류의 장치에 공통된 하나의 전단(front-end) 세그먼트와 특정 장치 구동기를 따르는 복수개의 후단(back-end) 세그먼트), 시스템 사용자에게는 상업적으로 가치있는 자원이 될 수 있을 것이다.
4. 스트리밍을 위한 제어 유닛 및 장치의 에뮬레이션
제7도는 제6도의 구성을 변형한 것으로, 모든 장치는 물론이고 하나의 장치에 관련된 장치 제어 기능이 PSS의 가상 장치/제어 유닛 프로그램 요소로 변형될 수 있음을 보인다.
제7도의 구성은 제6도와 기능적으로 동일하다. 그러나 제7도에 있어서 제어 유닛 (91)은 제6도의 대리 제어기 (95)에 전적으로 통합되어 있으며(즉, 제7도에서 전체 제어 유닛 (91)은 PSS에서 실행가능한 소프트웨어 루틴으로 구현되어 있음), 제7도의 장치 (91a) 또한 PSS에서 실행가능한 루틴으로만 구현되어 있다.
제어 유닛 (91)과 장치 (91a) 사이의 통신이 PSS의 내부 기능으로써 수행된다는 점을 제외한다면(정보전달이 채널 (10)을 통하지 않음), 제7도에 도시된 구성의 동작은 제6도와 근본적으로 동일하며, 유닛 (91)을 나타내는 프로그램 모듈은 완전히 자율적인 스트리밍 연산을 위하여 구성될 수 있다(즉, 이 유닛은 스트리밍 연산 중에 유닛 (90, 92)와만 통신을 하며, 전체 연산이 완료되거나 중단될 때까지는 상태 정보를 PSS의 스트리밍 관리자 같은 곳으로 전달할 필요가 없다).
5. 다수의 동시 스트리밍 연산
제8도는 단일 장치와 장치 제어 유닛의 관점에서 본 제어 신호 및 데이타 이동의 개략도이다. 또한 제8도는 하나의 제어 유닛과 장치가 다수의 스트리밍 연산을 동시에 수행할 수 있음을 보인다. 이 도면에는 도시되지 않았으나 해당 장치가 이러한 스트림에 대하여 수행하는 처리 기능에 따라, 다수의 스트림이 하나의 스트림으로 결합되거나 혹은 하나의 스트림이 다수의 스트림으로 분할될 수 있음을 쉽게 알 수 있을 것이다.
장치 제어기 (120)는 도면에서 스트림 1∼3으로 구분된 세개의 데이타 스트림을 처리하기 위하여, 데이타 버퍼 관리부(121)와 상호 대화함으로써 하나 이상의 장치 (122)를 제어한다. 이 스트림에 포함된 데이타는, PSS 메모리의 일부일 수 있고 장치 (122)와 해당 데이타를 버퍼에 기록하는 업스트림(upstream) 장치와의 사이에 공유될 수도 있는 입력 버퍼 (124)∼(126)로부터 장치 (122)로 전달된다. 장치 (122)의 연산으로부터 산출되는 데이타는 출력 버퍼 (127)∼(129)에 기록되고, 이 출력 버퍼는 장치 (122)에 의해 발생되는 데이타를 처리해야 하는 다운스트림(downstream) 장치와 공유된다.
제8도에서 스트림 1은 입력 버퍼 (124)와 출력 버퍼 (127)을 통하여 전달되고, 스트림 2는 입력 버퍼 (125)와 출력 버퍼 (128)을 통과하며, 스트림 3은 입력 버퍼 (126)과 출력 버퍼 (129)를 통하여 전송된다.
물론 이러한 스트림에 대하여, PSS로부터 수신된 셋업 명령 정보에 의해 제어기 (120)이 준비된다. 또한 제어기 (120)은 (130)에서 업스트림 제어 유닛(도시되지 않음)으로부터 입력 제어 기능을 받아, (131)에서 다운스트림 제어 유닛(도시되지 않음)으로 출력 제어 기능을 공급한다.
추후 도시될 예정인 바, 최근 출판된 것으로 앞서 언급한 서브시스템 제어 블럭(SCB) 구조에 따라 이 셋업 명령의 형식이 정해질 것이다. 전형적으로, 최소한 이러한 명령에는 스트림을 여는 명령(즉 새로운 스트리밍 연산의 준비), 스트림을 일시 중지 혹은 중단하는 명령(예: 사용자로 하여금 동화상 상연을 잠시 중지하거나 완전히 중단하도록 허용하기 위하여), 이전에 일시 중지 혹은 중단되었던 스티림 연산을 재개하는 명령이 포함되어야 한다.
제어기 (120)과 관리부 (121)은 단일 제어 유닛 혹은 장치 어댑터의 일부분으로 구성될 수 있다.
제8도에 도시된 구성부와 이 구성부의 업스트림 및 다운스트림 제어 유닛 사이의 통신은, 업스트림 및 다운스트림 유닛이 호스트 시스템의 루틴으로 구현된 가상 장치와 통신할 것이라는 사실을 이들 유닛이 인지하지 못하는 방식으로 수행된다.
6. FIFO 방식의 공유 데이타 버퍼링
제9도는 장치 A(138)와 장치 B(139)에 의해 공유되는 버퍼가 (140)에 제안된 바와 같이 FIFO(First In First Out) 메모리로 구성될 수 있음을 보인다. 이러한 구성에서는 제어가 내포되어 있으므로(즉, 해당 버퍼가 항상 데이타를 수신할 수 있다고 가정하기 때문에, 버퍼가 외연적으로 비어있지만 않다면 장치 B는 데이타를 FIFO 순서로 처리해야 함), 발신지 장치 A의 제어기와 목적지 장치 B의 제어기 사이에 제어 정보를 전달해야 할 필요가 없다는 장점이 있다. 이러한 구성의 단점은, 발신지 장치나 제어기가 아무런 통지를 받지 못한 상태에서 버퍼가 넘칠 수 있다는 것이다.
FIFO의 구성은 앞서 도면에서 설명한 버퍼의 일종으로 간주될 수 있으며, 여기에서 버퍼는 전체 길이(FIFO의 폭)가 하나의 유닛이고 효과적으로 순환연결된다. 만약 FIFO로의 데이타 전송이, 어드레스를 자동으로 증가시키면서 버스트 모드로 전송된다면, 공유 버퍼 영역에 속하지 않은 메모리 영역에 대한 어드레싱 가능성을 배제하기 위하여, 전송되는 데이타를 위한 충분한 공간과 어드레싱의 연속성이 FIFO에 마련되어야 한다.
7. 개별 버퍼 전략
제19도는 개별 버퍼 (146)를 공유하는 발신지 장치 A(144)와 목적지 장치 B(145)를 보이고 있는데, 이 버퍼는 다른 장치에는 할당될 수 없는 전형적인 것이며, 더 바람직하게는 이렇게 두 장치 사이에 위치함으로써 채널 (10)을 통하지 않고도 버퍼와 장치 간에 데이타가 상호 전달되도록 하는 것이다. 이러한 형태의 구성에 있어서, 해당 장치들은 개별적으로 버퍼의 세그먼트 혹은 블럭 영역이 채워지고 비워지는 순서에 관한 불변의 상호 협약 혹은 프로토콜을 보유하며, 이에 따라 가장 최근에 채워진 영역의 위치를 알리기 위하여 발신지로부터 목적지로 제어 정보를 전송할 필요가 없다.
8. 가능한 입력 및 출력의 요약
제11도는 앞서 설명한 바와 같은 가능한 모든 입력 및 출력(제어와 데이타)을 일목요연하게 보인다. 가능한 입력 및 출력 버퍼의 유형은 (148)과 (149)에 각각 표시되었다. 임의의 버퍼를 공유하는 장치들 사이의 데이타 이동을 적절히 보장하기 위하여, 모든 장치와 관련 제어 유닛에 있어서 최소공분모(least common denominator)가 합의되어 구성되어야 한다.
공유 시스템 메모리에 있어서 버퍼 구성에 대한 한가지 방안으로, 버퍼를 두개의 영역으로 나누어 이들 영역이 핑퐁 방식으로 활용되도록 하는(즉, 발신지에서는 해당 영역을 교대로 채우며 목적지에서는 이것과 동일한 순서로 판독함) 단순 버퍼를 채택할 수 있다. 장치가 시스템에 장착될 때, 장치와 장치 제어 유닛의 능력에 관하여 시스템이 알고 있는 정보를 근거로 시스템 관리자는 버퍼의 유형 및 발신지와 목적지 사이에 전달될 제어 정보의 형태를 결정한다.
9. 셋업 명령 형식
본 발명의 스트리밍 연산을 셋업하는데 사용되는 명령(리퀘스트 타입 제어 요소)과 이러한 리퀘스트에 포함된 디스크립터 정보가 제12도∼제25도에 나타나 있다. 이러한 리퀘스트는 보나벤토 등에 의한 특허 출원서와 앞서 주석에 표시한 SCB 구조에 대한 공개 문건에 기술된 것과 유사한 서브시스템 제어 블럭(SCB) 구조의 형식을 가진다. 그러나 스트리밍 프로세스를 셋업하는데 사용되는 이러한 오브젝트의 정보 내용은 유일한 것이다.
리퀘스트 제어 요소는 SCB 구조 형태의 한가지 유형이다. 다른 제어 요소로는 응답 타입 요소, 사건 타입 요소, 오류 타입 요소가 있다. 리퀘스트는 클라이언트/발신지로부터 단위 작업을 수행하도록 지정된 서버/목적지로 전송된다. 응답은 서버가 특정 유형의 리퀘스트에 반응하는 것이다. 사건(통지) 요소는 요청된 작업의 진행과정, 리퀘스트 상황, 클라이언트나 서버의 상태에 대한 정보를 제공한다. 오류 타입 요소는 리퀘스트나 서버의 상태에 대한 오류 정보를 제공한다.
리퀘스트 요소는 현재의 스트리밍 연산을 셋업하는데 사용되며, 사건 요소는 스트리밍 연산의 수행 과정에서 제어 유닛 사이의 상호 통지에 사용된다.
스트리밍을 셋업하는데 사용되는 리퀘스트는 개방형 스트림(OPEN STREAM), 스트림 제어(STREAM CONTROL), 버퍼 제어(BUFFER CONTROL), 버퍼 동기 제어(BUFFER SYNCHRONIZATION CONTROL)의 레이블이 붙어 구분된다.
개방형 스트림 리퀘스트 형식은 제12도와 제13도에 도시되어 있고, 이 리퀘스트에 제공되는 디스크립터 정보의 형식은 제14도∼제19도에 나타나 있다. 버퍼 제어 리퀘스트 형식은 제20도와 제21도에 도시되며, 버퍼 동기 제어 리퀘스트 형식은 제22도와 제23도에, 그리고 스트림 제어 리퀘스트 형식은 제24도와 제25도에 나타나 있다.
9-1. 개방형 스트림 리퀘스트
개방형 스트림 리퀘스트 제어 요소의 형식은 제12도와 제13도에 도시되어 있다. 이 리퀘스트는 아래에 기술된 바와 같이 많은 정보 필드(160∼170)를 포함한다.
필드 160 - 제어 요소의 타입을 구분하는데 사용되는 형식 ID 정보를 포함
필드 161 - 리퀘스트의 길이를 바이트 단위로 지정하는 길이 정보를 포함
필드 162 - 이산된 8개의 서브필드를 가짐
REQ(REQUEST) - 제어 요소의 타입을 지정한다(이 경우 리퀘스트 타입)
S(supress reply) - 클라이언트가, 서버에 요청된 작업을 서버가 성공적으로 완료했을 때 응답을 반환하기를 원하는 지의 여부를 나타내는 비트
C(chaining) - 출현 순서에 입각하여 처리되어야 할 단위 작업을 나타내는 두개 이상의 제어 요소 간 연결 링크를 표시하는 비트
I(indirect) - (리퀘스트 타입의 제어 요소에 있어서만 유효) 아래에 논의되는 인자 (혹은 값) 필드에 정보가 직접 포함되어 있는 지 혹은 그러한 정보가 저장된 메모리 위치에 대한 포인터가 지정되어 있는 지를 표시하는 비트
N(notification bit) - (리퀘스트 요소에 있어서만 유효) 각각의 리퀘스트 요소에 대한 처리가 시작되었을 때 클라이언트가 서버로 하여금 이를 통지하도록 요청했는 지 여부를 표시하는 비트
W(wait) - (리퀘스트 타입의 요소에 있어서만 유효) 각 제어 요소를 처리하기 전에, 클라이언트로부터 특정 재개 통지가 전달될 때까지 서버가 대기해야 하는 지를 표시하는 비트
E(expedite) - 각 제어 요소가 가능한한 빨리(가능한한 expedite가 표시되지 않은 여타 제어 요소에 앞서) 처리되어야 함을 표시하는 비트
개방형 스트림 - (개방형 스트림 제어 요소에 대한 기능 코드) 해당 리퀘스트에 있어서 아래의 인자 필드가 어떻게 해석되어야 하는지를 정의(리퀘스트와 제어 요소 별로 다른 기능 코드를 가짐)
필드 163 - 향후의 기능 확장을 위하여 사용이 보류됨
필드 164 - 이 리퀘스트와 관련된 명령이 발신지(예: 클라이언트)를 정의
필드 165 - 리퀘스트의 목적지(즉, 해당 리퀘스트가 전달될 파이프나 여타 서버)를 정의
필드 166 - 리퀘스트와 응답 제어 요소를 상호 관련시키기 위한 상관 필드를 포함
필드 167 - 가변의 디스크립터가 포함된 가변장 인자(값이라 고도 불림) 필드. 디스크립터는 아래의 사항을 정의하는데 사용된다.
1) 버퍼 그룹을 형성하는 개별 버퍼(공유 입출력 버퍼의 그룹)
2) 버퍼 관리 전략(공유 장치를 제어하는 CU에 의해 버퍼가 어떻게 관리될 것인가)
3) 각 입출력 버퍼의 통지 전략(즉, 버퍼에 처리되어야 할 데이타가 남아 있을 때 혹은 새로운 데이타 등으로 다시 채울 버퍼가 있을 때, 이를 통지받아야 할 CU나 엔티티)
4) 버퍼 동기 전략(버퍼 데이타의 처리를 개시토록 하는 것으로서, 상이한 스트림을 처리하는데 있어서의 사건 혹은 업스트림 CU로부터의 가용 통지이외의 여타 조건)
5) 각 장치에 의해 처리되는 입출력 데이타 간의 상관관계(해당 데이타를 판독한 장치에 의해 수행되는 변환 프로세스)
디스크립터 형식은 제13도에 나타나 있다. 각 디스크립터는 아래와 같이 서브필드(169∼172)를 포함한다.
서브필드 169 - 디스크립터 타입을 정의하는 정보를 포함(제14도∼제19도 참조)
서브필드 170 - 각 디스크립터의 길이를 정의하는 정보를 포함(예: 바이트 수)
서브필드 171 - 사용이 보류됨
서브필드 172 - 디스크립터 정보를 포함(특정 디스크립터에 대한 정보 혹은 각 디스크립터에 의존하는 정보)
상이한 타입의 디스크립터에 있어서 타입 및 길이 서브필드는 유일하다. 임의의 개방형 스트림 리퀘스트에 있어서 디스크립터의 개수는 가변적이다(정의된 버퍼의 수, 각 버퍼 채움/비움 사건에 필요한 통지의 수, 통지에 사용되는 신호 형태).
이러한 리퀘스트에 제공되는 디스크립터 타입으로는, 버퍼 그룹 디스크립터(제14도 참조), 버퍼 디스크립터(제15도), 버퍼 통지 디스크립터(제16도), 입력 신호 코드 디스크립터(제17도), 동기 디스크립터(제18도), 변환 디스크립터(제19도)가 있다.
해당 장치가 이 서브필드를 용이하게 파싱할 수 있도록 하기 위하여, 인자 필드 167에 있어서 디스크립터의 순서는 미리 정의된 규칙에 따라야 한다. 이러한 규칙으로는 :
A) 임의의 버퍼 그룹 디스크립터 다음에는 적어도 하나의 버퍼 디스크립터가 와야 한다.
B) 임의의 버퍼 디스크립터 다음에는 하나 이상의 버퍼 통지 디스크립터가 올 수 있다.
C) 임의의 입력 버퍼 그룹은 출력 버퍼 그룹에 앞서 정의되어야 한다.
D) 모든 입력 신호 코드 디스크립터는 출력 버퍼 그룹 디스크립터 다음에 와야 한다.
E) 동기 디스크립터는 입력 신호 코드 디스크립터 다음에 와야 한다.
F) 변환 디스크립터는 동기 디스크립터 다음에 와야 한다.
버퍼 그룹 디스크립터(제14도)는 하나의 공유 입출력 버퍼로서 총체적으로 사용 및 관리되어야 하는 버퍼 그룹을 정의하는데 사용된다(각각의 단일 버퍼 혹은 그룹 구성부는 하나의 데이타 블럭을 저장하며 이들 부분들은 하나의 단위로서 미리정해진 순서에 입각하여 채워지거나 비워진다). 이러한 디스크립터 타입(제14도)에 포함된 정보 필드는 다음과 같다.
0∼1번째 바이트 : x'010C'(이 디스크립터 타입을 구분하는 코드)
2∼3번째 바이트 : 사용이 보류됨
4∼5번째 바이트 : 각 버퍼 그룹의 ID
6∼7번째 바이트 : 사용이 보류됨
8번째 바이트 : 해당 그룹의 버퍼 개수
9번째 바이트 : 아래에 대한 플러그
입력/출력 제어
버퍼 관리 전략(순환, FIFO, 개별 등)
오류 보고 전략
오류 복원 전략
10번째 바이트 : 스트림의 상대적 우선순위(여타 스트림에 대하여, 이 버퍼 그룹을 통과하는 스트림의 수선순위 처리)
11번째 바이트 : 사용이 보류됨
버퍼 디스크립터(제15도)는 버퍼 그룹의 일부 구성요소인 퍼퍼를 정의하는데 사용된다. 이 디스크립터는 다음의 정보를 포함한다.
0∼1번째 바이트 : x'0214'(이 디스크립터 타입에 특정한 코드값)
2∼3번째 바이트 : 사용이 보류됨
4∼5번째 바이트 : 버퍼 그룹 ID
6∼7번째 바이트 : 버퍼 ID(이 디스크립터에 기술된 특정 버퍼의 ID)
8∼11번째 바이트 : 버퍼 어드레스(시스템의 메모리 어드레스 공간에서 이 버퍼에 대한 초기 위치를 정의하는 32비트)
12∼15번째 바이트 : 버퍼의 크기(바이트 수)
16번째 바이트 : 아래에 대한 플래그
입력/출력 제어
버퍼 꽉채워짐(full) 통지(출력 버퍼에만 해당)
버퍼가 비워지기를 기다림(출력 버퍼에만 해당)
버퍼 텅비워짐(empty) 통지(입력에만 해당)
버퍼가 채워지기를 기다림(입력에만 해당)
17∼19번째 바이트 : 사용이 보류됨
버퍼 통지 디스크립터(제16도)는 임의의 버퍼가 경계조건(처리될 데이타가 존재함을 나타내는 꽉채워짐 조건, 혹은 버퍼의 모든 데이타가 이미 처리되었음을 나타내는 텅비워짐 조건)에 도달했을 때, 어느 장치에 이를 통지할 것인 가를 정의한다. 이 디스크립터의 요소는 아래와 같다.
0∼1번째 바이트 : x'030C'(이 디스크립터 타입을 유일하게 구분하는 코드)
2∼3번째 바이트 : 사용이 보류됨
4∼5번째 바이트 : 버퍼 그룹 ID
6∼7번째 바이트 : 버퍼 ID
8∼9번째 바이트 : 아래에 대한 플래그
0번 비트 - 모든 버퍼 ID의 경우에만 유효(임의의 그룹 내의 단일 특정 버퍼에만 통지하는 것이 아니라 그룹 내의 모든 버퍼에 대하여 통지함을 표시)
1번 비트 - 신호/사건(신호(예: 목적지 CU에 있는 레지스터를 직접 어드레싱하는 통신) 혹은 SCB 형식을 갖춘 사건 제어 요소 중 어떤 형태로 통지되어야 하는 지를 표시)
2번 비트 - 버퍼가 꽉채워질 경우 통지됨
3번 비트 - 버퍼가 텅비워질 경우 통지됨
4번 비트 - 오류 발생 시 통지됨(복원 가능)
5번 비트 - 오류 발생 시 통지됨(복원 불가능)
10번째 바이트 : (적용가능한 경우) 방향성을 가진 신호를 통하여 다른 유닛에 통지할 때 사용되는 신호 코드를 표시하거나, 1번 비트가 사건으로 세트되어 있는 경우에 사건을 전송하는데 사용되는 유닛 어드레스(목적지)를 표시
11번째 바이트 : I/O 포트 어드레스(시스템 I/O 공간에 있어서 통지 신호가 전달되는 특정 레지스터의 어드레스 혹은 여타 엔티티의 어드레스), 혹은 1번 비트가 사건임을 나타내는 값으로 세트되었을 경우 사건을 전송하는데 사용되는 엔티티의 어드레스(목적지).
입력 신호 코드 디스크립터(제17도)는 해당 디스크립터가 전달되는 장치가 수신해야 할 신호 코드를 정의한다. 이 디스크립터에 포함된 내용은 아래와 같다.
0∼1번째 바이트 : x'040C'(이 디스크립터 타입을 유일하게 구분하는 코드 값)
2∼3번째 바이트 : 사용이 보류됨
4∼5번째 바이트 : 버퍼 그룹 ID
6∼7번째 바이트 : 버퍼 ID
8번째 바이트 : 다음과 같은 플래그를 지정
0번 비트 - 모든 버퍼 ID의 경우에만 유효(0번 비트에 대한 이전의 정의 참조)
1번 비트 - 출력 버퍼가 텅비워져 있음을 표시
2번 비트 - 입력 버퍼가 꽉차 있음을 표시
9번째 바이트 : 사용이 보류됨
10번째 바이트 : 신호 코드(직접 신호 통지에 사용되는 신호 코드를 표시)
11번째 바이트 : I/O 포트 어드레스(시스템 I/O 공간에 있어서 신호 통지를 수신하기 위한 레지스터의 어드레스 혹은 여타 엔티티의 어드레스)
동기 디스크립터(제18도)는 대상 장치의 각 버퍼 그룹이 다른 스트림 혹은 타이머와 어떻게 동기되는 가를 정의한다(예: 비디오 스트림을 처리하는 버퍼 그룹이 오디오 스트림을 따로 처리하는 것과 어떻게 동기되어야 할 것인 가를 정의). 이 디스크립터에 포함된 내용은 아래와 같다.
0∼1번째 바이트 : x'0510'(이 디스크립터 타입을 유일하게 구분하는 코드)
2∼3번째 바이트 : 사용이 보류됨
4∼5번째 바이트 : 버퍼 그룹 ID
6∼7번째 바이트 : 사용이 보류됨
8번째 바이트 : 다음과 같은 플래그를 지정
동기화(Sync)를 하지 않음
동기 소스가 스트림에 내포됨
동기 소스가 타이머임
사전 지정된 전달/소비율과 관련된 동기
9번째 바이트 : 전달/소비율을 정의
10∼11번째 바이트 : 사용이 보류됨
12∼15번째 바이트 : 스트림 ID 혹은 타이머 어드레스(동기 소스 즉, 입력 데이타가 처리되는 속도를 정의하는 시간맞춤 함수의 소스를 지정하는 플래그와 결합되어 사용됨.)
변환 디스크립터(제19도)는 해당 디스크립터가 향하는 장치에 의해 처리되는 입출력 데이타 사이의 연관관계를 정의한다(즉, 수신된 입력 데이타에 대하여 해당 장치가 수행하는 프로세스). 이 디스크립터에 포함된 내용은 다음과 같다.
0번째 바이트 : x'06'(이 디스크립터를 유일하게 구분하는 코드 값)
1번째 바이트 : 디스크립터의 길이(바이트 수)
2∼3번째 바이트 : 사용이 보류됨
4∼7번째 바이트 : 스트림 상관 ID(여타 스트림 등과 같이, 동기를 결정하는 함수를 구분하는데 사용됨)
7∼x번째 바이트 : 장치에 종속된 제어 정보(x는 가변의 수)로서, 아래의 것들을 포함한다.
판독 및 기록 타입의 명령. 여타 디스크립터와 유사하게 형식이 갖춰진 제어 요소에 대한 변화로 인하여 이 영역에 있어서의 발신지 및 목적지 어드레스가, 공유 버퍼의 물리적 위치를 나타내는 메모리 어드레스가 아니라 버퍼 그룹 ID를 지정할 수 있다.
9-2. 버퍼 제어 리퀘스트
버퍼 제어 리퀘스트 요소(제20도와 제21도)는 리퀘스트와 응답 및 오류 제어에 사용된다. 그리고 이 요소는 임의의 버퍼 그룹 내에서 버퍼를 채우고 비우는 것을 제어하는데 필요한 인자를 포함한다. 이 리퀘스트의 구성 필드는 제20도에 나타나 있으며, 인자 필드의 서브필드는 제21도에 도시되어 있다.
이 리퀘스트에 있어 버퍼 제어 및 인자 필드를 제외한 필드의 기능 및 위치는, 개방형 스트림 리퀘스트(제12도)에 있어서 대응되는 레이블이 붙은 필드와 기능 및 위치가 실질적으로 동일하다. 버퍼 제어 필드는 해당 리퀘스트가 버퍼 제어 타입 리퀘스트임을 구분해 주는 코드를 포함한다. 버퍼 제어 리퀘스트에 있어서 인자 필드는 다음의 정보를 포함한다.
0∼1번째 바이트 : 버퍼 그룹 ID
2∼3번째 바이트 : 버퍼 ID
4번째 바이트 : 아래와 같은 플래그를 표시
0번 비트 - 출력 버퍼가 텅비어 있음을 표시
1번 비트 - 입력 버퍼가 꽉차 있음을 표시
2번 비트 - 출력 버퍼 오류(복원 가능)
3번 비트 - 출력 버퍼 오류(복원 불가능)
4번 비트 - 입력 버퍼 오류(복원 가능)
5번 비트 - 입력 버퍼 오류(복원 불가능)
5∼7번째 바이트 : 사용이 보류됨
8~11번째 바이트 : 오류 코드(복원 가능 및 복원 불가능 오류를 구분해 주는 0번 비트)
12∼15번째 바이트 : 잔여 바이트 수(오류로 인하여 미처리된 데이타의 양을 표시). 오류 조건에서만 유효하며, 정상적인 연산 도중에는 0의 값을 가져야 함.
16번째 바이트 : 장치에 종속적임(부가적인 상태, 오류, 기타 사항을 표시)
9-3. 버퍼 동기 제어 리퀘스트
앞서 설명한 버퍼 제어 리퀘스트와 마찬가지로 이 리퀘스트 요소(제22도와 제23도)도 리퀘스트, 응답, 오류 제어의 상황에서 사용되며, 임의의 버퍼 그룹 내에서 동기를 제어하는데 필요한 모든 정보를 담고 있다. 이 리퀘스트를 구성하는 필드는 제22도에 도시되어 있으며, 각 인자를 구성하는 필드의 서브필드는 제23도에 나타나 있다. 버퍼 동기 제어 리퀘스트에 있어서, 동기제어와 인자로 레이블이 붙은 필드를 제외한 다른 모든 필드는 개방형 스트림 및 버퍼 제어 리퀘스트에서 이에 상당하는 레이블이 붙은 필드와 근본적으로 동일한 것이다. 동기제어로 레이블이 붙은 필드는 이 리퀘스트를 버퍼 동기 제어 타입의 리퀘스트로 구분하는 코드를 포함한다.
버퍼 동기 제어 리퀘스트에 있어서, 인자 필드를 구성하는 서브필드는 다음과 같다.
0∼1번째 바이트 : 버퍼 그룹 ID
2∼3번째 바이트 : 사용이 보류됨
4번째 바이트 : 아래와 같은 플래그를 표시
타이머에 따른 동기를 표시
스트림 그 자체에 따른 동기를 표시
5번째 바이트에 지정된 소비/전달율에 따른 동기를 표시
5번째 바이트 : 소비/전달율
6∼7번째 바이트 : 사용이 보류됨
8∼11번째 바이트 : 타이머 어드레스 혹은 스트림 상관 ID
9-4. 스트림 제어 리퀘스트
스트림 제어 리퀘스트는 리퀘스트, 응답, 오류 제어의 상황에서도 사용되며, 스트림 처리를 제어하는데 필요한 정보를 포함하고 있다. 이 리퀘스트를 구성하는 필드(제24도) 중 스트림 제어와 인자로 레이블이 붙은 필드를 제외한 다른 모든 필드는 앞서 설명한 다른 리퀘스트에서 이에 상당하는 레이블이 붙은 필드과 동일한 것이다. 스트림 제어로 레이블이 붙은 필드에는 해당 리퀘스트를 스트림 제어 타입의 리퀘스트로 구분하는 코드가 포함된다. 스트림 제어 타입의 리퀘스트에 있어 인자로 레이블이 붙은 필드(제25도)는 다음의 서브필드를 포함한다.
0∼3번째 바이트 : 스트림 상관 ID
4번째 바이트 : 대상 장치 및 제어기에 의해 즉시 수행되어야 할 기능을 지정하는 비트가 포함된 스트림 명령
프라임 스트림 (버퍼를 채우되 처리를 개시하지는 않음)
스트림 개시(버퍼 스트림 데이타의 처리를 개시)
스트림 중지(버퍼에 있는 데이타 처리를 일시중지)
스트림 재개(처리가 일시중지된 후 처리를 재개)
스트림 중단(스트림 중지, 스트림 비움과 동일)
스트림 비움(데이타를 처리하지 않고 버퍼를 완전히 비움)
5번째 바이트 : 동기 플래그
0번 비트 - 즉시 시작을 표시
1번 비트 - 타이머 값이 x일 때 시작함을 표시
2번 비트 - 입력 버퍼가 꽉차 있을 때 시작함을 표시
6∼7번째 바이트 : 사용이 보류됨
8∼11번째 바이트 : 타이머 값 x의 어드레스(5번째 바이트 참조)
12∼15번째 바이트 : 현재의 타이머 값
16∼xx번째 바이트 : 임의 변환 디스크립터(제19도)로서, xx는 가변임
10. 스트리밍을 위한 제어 유닛의 논리적 구성
제26도, 제27도, 제28도는 본 발명에 따른 스트리밍 프로세스를 수행하는 장치 제어 유닛의 논리적 구성을 설명할 목적으로 작성된 흐름도의 일부이다. 제29도는 수단과 기능의 넓은 의미의 맥락에서, 스트리밍에 필요한 논리적 요소를 도시하는 블럭도이다.
제26도, 제27도, 제28도 사이의 연결관계는 원으로 둘러싸인 ⓐ, ⓑ, ⓒ로서 표시한다. 따라서 제26도와 제27도에서 ⓐ는 제26도에 도시된 흐름부의 출력이 제27도에 도시된 흐름부의 입력으로 연결됨을 나타낸다. 마찬가지로 ⓑ는 제28도에 도시된 흐름부의 출력이 제26도에 도시된 흐름부의 입력으로 연결됨을 표시한다. 또한 ⓒ는 제27도에 도시된 흐름부의 출력이 제28도에 도시된 흐름부의 입력으로 연결됨을 나타낸다.
장치 제어 유닛의 관점에서 본 스트리밍 프로세스의 셋업 과정은 제26도에 도시되어 있다. 이 과정의 단계 (240)에서, 제어 유닛은 앞서 설명한 타입의 리퀘스트 및 디스크립터를 수신하고, 자신을 이러한 기능에 의해 정의되는 작업 구성으로 세트한다. 작업 구성은 입출력 데이타에 대하여 요구되는 버퍼 전략, 필요한 경우 동기 전략, 통지 전략을 정의하는 인자와, 이러한 인자에 의해 정의된 전략을 준수하는 제어 유닛 내의 논리를 조절하는 인자를 포함한다.
이 프로페리토닐(properitoneal) 단계의 일부분으로서, 단계 (241)에서 제어 유닛은 해당 구성 논리를 조절하여 Pmax값에 의해 정의되는 가변의 버퍼 수를 가지는 입력 버퍼 그룹 및 Qmax값에 의해 정의되는 가변의 버퍼 수를 가지는 출력 버퍼 그룹과 연동하도록 한다. 각 그룹에 있어 버퍼의 개수(Pmax와 Qmax의 값)와 그룹별 각 버퍼의 크기는 단계 (240)에서 수신한 디스크립터에 포함된 정보에 의해 정의된다. 첨자 max는 각 그룹에 대하여 PSS에 의해 할당된 버퍼의 개수를 의미하며, 이는 임의의 그룹에 할당될 수 있는 버퍼의 상한선을 암시하는 것은 아니다(실제 상황에서는 PSS에 이러한 제한이 부가될 수도 있음).
다음으로 단계 (242)에서, 제어 유닛은 계수 함수 P와 Q의 값을 초기값 1로 세트하며(입력 및 출력 버퍼 그룹에 있어서 첫번째의 특정 버퍼를 지시함), 이들 함수는 각각 다음에 처리될 입력 버퍼와 다음에 채워질 출력 버퍼를 가리킨다.
단계 (243)에 도시된 판단 부분으로 진행하기 전에, 제어 유닛은 인터럽트를 통하여 자신의 상태를 프로세서 시스템(PSS)에 신호한다. 만약 이 상태가 해당 제어 유닛이 오류로 인하여 수행불능임을 나타낸다면, 스트리밍 연산의 준비 및 개시 프로세스는 PSS에 의해 중단된다(앞서 제5도에서 상태 인터럽트가 스트리밍 연산의 개시에 어떻게 영향를 미치는 가를 상기할 것).
단계 (243)에서, 제어 유닛은 호스트 시스템 PSS로부터 스트림 처리를 시작하라는 신호가 수신되었는 지를 판단한다(예: PSS로부터의 GO 신호 혹은 일시중지된 스트림 처리 연산의 즉각적인 재개를 요청하는 리퀘스트에 있어서 이 GO 신호와 동등한 것). 이러한 신호가 수신된 경우 제27도의 흐름부로 진행하며, 그렇지 않을 경우 해당 유닛은 기졀정된 시간동안 대기한 후(단계 (244)) 단계 (243)을 반복한다.
제27도에 도시된 스트리밍 프로세스의 흐름부에서, 제어 유닛은 먼저 단계 (245)에서 장치에 대한 입력 데이타의 발신지가 다른(업스트림) 장치와 공유하고 있는 입력 버퍼인 지 혹은 여타의 특정한 장치(CD-ROM, 테이프, 하드디스크, 네트워크 포트 등)인 지를 판단한다.
만약 해당 발신지가 입력 버퍼가 아닌 경우, 각 장치는 단계 (246)에서 특정 발신지 장치로부터 데이타를 판독하도록 지시받는다. 이 때 단계 (247)에서, 발신지로부터 검색된 데이타가 특정 프로세스 처리를 필요로 하는 지 혹은 단순히 다운스트림 장치로 진행되고 있는 것인 지를 판단한다. 특정 변환/프로세스 처리가 요구되는 경우, 단계 (248)에서 해당 프로세스(제26도의 셋업 과정에서 수신된 임의의 리퀘스트에 의해 정의됨)를 수행하며, ⓒ를 통하여 제28도의 흐름부로 계속 진행된다. 단계 (247)에서 데이타에 대한 변환 처리를 필요로 하지 않을 경우, 단계 (248)을 건너뛰고 제28도로 진행된다.
단계 (245)에서 입력 데이타의 발신지가 입력 버퍼(즉, 업스트림 장치와 공유하는 버퍼)로 판단한 경우, 단계 (250)에서 임의의 버퍼 중 어느 버퍼를 다음에 처리할 것인가와 이 버퍼의 가용 상태를 판단한다(제28도에서 계수 P가 어떻게 사용되는 지를 참조할 것).
단계 (250)의 판단에서 입력 버퍼가 가용하지 않을 경우, 기결정된 시간동안 대기한 후 이 판단 단계를 반복한다. 입력 버퍼가 가용한 데이타를 보유하고 있을 경우, 단계 (251)에서 이 버퍼에 있는 데이타가 프로세스/변환 처리 혹은 단순 버퍼 처리를 필요로 하는 지를 판단한다.
단계 (251)에서 프로세스 처리를 필요로 함이 판단된 경우, 단계 (252)에서 해당 장치는 셋업 리퀘스트에서 정의된 각각의 프로세스를 수행하게 되며, 다시 단계 (253)과 (254)로 진행한다. 단계 (251)에서 변환 처리가 필요치 않다고 판단된 경우, 단계 (252)를 건너 뛰고 단계 (253)과 (254)로 곧바로 진행한다.
단계 (253)에서 입력 버퍼의 현재 상태(예: 버퍼 텅비워짐 상태 혹은 다시 채울 수 있음 상태)로 인하여 여타 구성부/장치 제어 유닛에 통지해야 하는 지 여부를 판단한다. 통지해야 할 필요가 있는 경우, 단계 (254)에서 통지를 수행하고 ⓒ를 통하여 제28도의 흐름부로 계속 진행된다. 그러나 통지가 필요치 않는 경우에는 단계 (254)를 건너 뛰고 ⓒ를 통하여 제28도로 곧바로 진행된다.
제28도의 단계 (260)에서는 제27도의 흐름부에서 산출된 데이타에 대하여, 공유 출력 버퍼나 특정 장치(모니터, 스피커 등)와 같은 목적지를 결정한다.
만약 목적지가 특정 장치라면, 단계 (261)에서 해당 데이타를 이 장치로 전달한 후 단계 (262)∼(267)의 과정을 수행한다. 모든 출력 데이타가 이러한 방식으로 처리된 다음, ⓑ를 통하여 제26도의 단계 (243)으로 분기하여 진행된다.
출력 데이타의 목적지가 특정 출력 버퍼인 경우, 단계 (270)에서 해당 데이타를 이 버퍼로 기록한다. 그런 다음, 단계 (271)와 (272)을 지나 전술한 바와 같이 단계 (262)∼(267)로 진행한다. 단계 (271)에서는 통지해야 할 필요가 있는 부분이 있는 지 여부를 판단하며, 통지가 필요한 경우 단계 (272)에서 이 통지를 수행한다. 통지가 필요치 않은 경우 단계 (272)를 건너 뛰고 단계 (262)∼(267)로 곧바로 진행한다.
단계 (262)에서는, 데이타가 현재 판독되고 있는 입력 버퍼를 지정하는 계수 함수 P의 값을 제26도의 단계 (241)에서 설정된 최대값 Pmax와 비교한다. P의 값이 Pmax의 값보다 작은 경우 단계 (263)에서 P의 값을 1만큼 증가시킨다. P의 값이 Pmax의 값과 동일할 경우 단계 (264)에서 P의 값을 1로 리셋하여 다시 첫번째 입력 버퍼로부터 데이타 판독을 시작한다.
단계 (265)에서, 현재 채워지고 있는 출력 버퍼를 지정하는 Q의 값과 현재 사용 중인 출력 버퍼의 총개수를 정의하는 Qmax의 값을 비교한다. Q가 Qmax보다 작은 경우 단계 (266)에서 Q를 1만큼 증가시킨다. Q가 Qmax와 동일한 경우 Q를 1로 리셋하여 첫번째 출력 버퍼를 다시 채우는 작업을 시작한다.
전술한 모든 연산은 다음의 사항을 바탕으로 하고 있다.
다른 장치 제어기에 대한 통지는 제1도에 도시된 채널 (10)을 통해서 수행된다. 이를 위하여, 이러한 작업을 개시하는 해당 제어 유닛은 채널에 대한 접근을 조정하고, 이 채널을 포함하는 버스 제어를 관장하며, 이 채널을 이용하여 다른 부분으로 통지 정보를 전달해야 한다. 통지 정보는, 채널의 동배 통신의 특성을 통하여 어드레싱할 수 있는 레지스터에 저장되어 직접 해석되는 신호로써 이루어질 수도 있고, 혹은 다른 제어 유닛의 입력단 파이프에 전달되는 SCB 사건 요소로써 구성될 수도 있다.
파이프는 시스템/PSS 메모리 내의 버퍼(공유 데이타 버퍼와는 별도인)에 혹은 이 파이프가 입력단이 되는 다른 제어 유닛에 일체된 버퍼 메모리에 위치할 수 있다. 해당 작업을 개시한 제어 유닛 내의(혹은 이와 관련된) 라우터는 해당 통신에 대한 물리적인 경로를 결정한다(시스템 메모리 경로 혹은 일체된 버퍼에 있는 어드레스로의 동배 통신 경로).
여기에서 흥미로운 사항은, 데이타 스트림에 대하여 임의의 장치가 수행하는 특정 변환 프로세스는 동일한 스트림을 처리하는 여타의 장치에 아무런 영향을 주지 못한다는 것이다. 공유 버퍼를 통하여 해당 스트림의 흐름을 관리하고 입력 데이타 처리를 외부의 타이머 사건아나 다른 데이타 스트림과 동기시키는데 필요한 모든 동작은, 입력 데이타를 수신하는 해당 장치에 투명한(transparent) 방식으로 제어 유닛에 의해 제어된다. 따라서 이러한 장치는 상대적으로 표준 구조를 가지므로, 현존하지 않는 변환 기능을 처리하기 위한 새로운 장치는 이러한 기능이 어떻게 스트림 프로세스의 다른 측면에 영향을 주지 않는 지를 고려하지 않고도 쉽게 개발될 수 있을 것이다.
제29도는 제26도∼제28도에 설명된 기능을 수행하기 위한 수단의 관점에서, 본 발명에 따른 자율적 스트림 처리에 대한 제어 유닛의 논리적 구성을 나타낸다.
(290)에 표시한 바와 같이, 제어 유닛은 PSS로부터 스트리밍 프로세스를 정의하는 리퀘스트 요소를 수신하는 수단을 필요로 한다.
(291)에 도시한 것처럼 제어 유닛은, 스트리밍 연산의 각 유닛을 준비하기 위한 셋업 과정에서 구비되는 리퀘스트 요소에 대한 응답수단을 필요로 한다(연산에 필요한 레지스터 조건을 설정하고 특정 입출력 버퍼에 대한 경로의 사용가능성을 테스트하는 등).
(292)에 도시된 수단은 제어 유닛을 인에이블시켜 이 제어 유닛의 준비완료 상태 혹은 오류 상태를 PSS에 알려 준다.
(293)의 수단은 호스트로부터의 개시 신호(GO 신호 혹은 즉각적인 재개 기능을 가진 스트림 제어 리퀘스트)와, 자율적 방식으로(즉, 처리되어야 할 모든 데이타가 완전히 처리될 때까지 호스트 시스템 PSS로부터 더이상의 입력을 잠정적으로 받아들이지 않는 방식으로) 스트리밍 프로세스를 시작하고 계속 수행할 수 있도록 하기 위하여 셋업 과정에서 설정된 조건에 의해 논리적으로 조절된다. 자연히 이러한 수단은 통지 타입의 디스크립터에 지정된 통지 기능을 수행하는 수단을 포함하게 된다.

Claims (21)

  1. 프로세서 서브시스템(a processor subsystem)과, 메모리 서브시스템(a memory subsystem)과, 주변장치(peripheral devices)와, 상기 프로세서 서브시스템으로부터 수신된 명령(commands)에 응답하여 상기 주변장치를 제어하는 장치 제어 유닛(device control units)과, 그리고 상기 장치 제어 유닛을 상기 프로세서 및 메모리 서브시스템에 연결하는 채널(a channel)로서, 상기 제어 유닛을 인에이블(enable)시켜 상기 프로세서 서브시스템의 중재(intervention)없이 그리고 상기 제어 유닛간에 통신되는 정보를 상기 메모리 서브시스템의 버퍼에 임시로 저장하지 않고도 상기 제어 유닛이 상호 직접 통신을 하도록 하는 동배 통신의 특성(a peer communication feature)을 갖는 상기 채널을 구비한 컴퓨터 시스템에서, 상기 제어 유닛중 하나의 제어 유닛이 상기 하나의 제어 유닛에 의해 제어되는 장치에 의한 가변장 데이타 스트림 처리를 제1 및 제2의 여타 장치를 제어하는 제 1 및 제 2의 여타 제어 유닛과 협력하여 지시(derect)하도록 인에이블시키는 데이타 스트리밍 메카니즘에 있어서, 상기 메카니즘은: 상기 하나의 제어 유닛 내에서, (1) 상기 메모리 서브시스템에서 상기 하나의 제어 유닛이 상기 제1 및 제2의 여타 제어 유닛과 각기 협력하여 관리(manage)하는 입출력 버퍼 저장공간(input and output buffer storage spacess)과 (2) 상기 채널의 상기 동배 통신의 특성을 통하여 상기 하나의 제어 유닛과 상기 제1 및 제2의 여타 제어 유닛 사이에 직접 전달되는 신호를 정의하는 통지 프로토콜(a notification protocol)로서, 상기 신호는 상기 제어 유닛에 의해 상기 입력 및 출력 버퍼 저장공간의 활용을 관리하는데 사용되는 상기 통지 프로토콜과 (3) 상기 입력 버퍼 저장공간에 있는 상기 가변장의 데이타 스트림에 대하여 상기 하나의 제어 유닛이 제어하는 상기 장치에 의해 수행되는 프로세스로서, 상기 데이타는 상기 제1의 여타 장치에 의해 상기 입력 버퍼 저장공간에 기록되고, 상기 프로세스는 결과 데이타를 산출하여 상기 제2의 여타 장치가 계속 처리하도록 상기 출력 버퍼 저장공간에 기록하며, 상기 프로세스는 상기 프로세서 서브시스템의 중재없이 완료될 수 있으며, 상기 입력 및 출력 버퍼 저장공간은 상기 데이타 스트림에 잠재적으로 포함된 모든 데이타를 동시에 저장할 수 있는 충분한 저장공간을 갖지 못한다는 것을 특징으로 하는 상기 프로세스를 정의하는 셋업 명령 정보(setup command information)를 수신하기 위한 수단과; 상기 하나의 제어 유닛 내에서 상기 셋업 명령 정보에 응답하여, (1) 상기 명령 정보에 의해 정의되는 상기 프로세스를 상기 입력 버퍼 저장공간을 통하여 전달되는 상기 데이타 스트림에 대하여 수행하고 (2) 상기 프로세스를 수행한 결과 데이타를 상기 출력 버퍼 저장공간을 통하여 상기 제2의 여타 장치로 이송하며 (3) 상기 통지 프로토콜 및 상기 채널의 상기 동배 통신의 특성을 통하여 상기 제1 및 제2의 여타 제어 유닛과 각기 협력함으로써 상기 입력 및 출력 버퍼 저장공간의 사용을 관리하기 위하여, 상기 하나의 제어 유닛과 상기 하나의 제어 유닛에 의해 제어되는 상기 장치를 준비하기 위한 수단과; 상기 하나의 제어 유닛에서 상기 프로세서 서브시스템으로부터의 개시 신호와 상기 준비 수단에 의해 설정된 조건에 응답하여 스트리밍 연산을 지시하기 위한 수단으로서, (1) 상기 프로세스는 상기 입력 버퍼 저장공간을 통하여 이송된 상기 데이타 스트림내의 데이타에 대하여 수행되고 (2) 상기 프로세스의 수행 결과 데이타는 상기 출력 버퍼 저장공간을 통하여 상기 제2의 여타 장치에 이송되며 (3) 상기 입력 버퍼 저장공간을 통한 상기 데이타 스트림의 전송과 상기 출력 버퍼 저장공간을 통한 상기 결과 데이타의 전송은 상기 하나의 제어 유닛과 상기 제1 및 제2의 여타 제어 유닛이 연계하여 상기 통지 프로토콜과 상기 채널의 상기 동배 통신의 특성을 이용하여 관리하며 (4) 전술한 모든 기능(all of the foregoing function)은 상기 프로세서 서브시스템의 중재없이 데이타 스트림 내의 모든 데이타가 처리되고 이송될 때까지 계속 수행되어 완료되는 상기 스트리밍 연산 지시 수단을 포함하는 데이타 스트리밍 메카니즘.
  2. 제1항에 있어서, 상기 하나의 제어 유닛에 의해 수신되는 상기 셋업 명령 정보는 다수의 가변 크기 리퀘스트의 형태(in the form of a plurality of various sized requests)로 구성되고, 각 리퀘스트는 하나 이상의 디스크립터(descriptors)를 포함하는 인자 필드를 보유하며, 각 디스크립터는 상기 스트리밍 연산에 필수적인 기능을 정의하는 데이타 스트리밍 메카니즘.
  3. 제2항에 있어서, 상기 디스크립터는 상기 메모리 서브시스템내의 상기 입력 및 출력 버퍼 저장공간의 크기를 정의하는 정보를 포함하는 데이타 스트리밍 메카니즘.
  4. 제3항에 있어서, 상기 디스크립터는 상기 입력 버퍼 저장공간을 구성하는 입력 버퍼 그룹으로서 최소한 두개의 이산분리된 가변 크기의 부저장공간(at least two descretely separate variably sized storage subspaces)을 포함하는 입력 버퍼 그룹을 정의하는 정보와, 상기 각 부저장공간의 크기를 정의하는 정보와, 상기 하나의 제어 유닛에 의해 제어되는 상기 장치가 상기 부저장공간의 다른 부분으로부터 데이타를 판독하는 것과 병행하여 상기 제1의 여타 장치를 인에이블시켜 상기 부저장공간의 한 영역에 데이타를 기록하도록 하기 위하여 상기 입력 그룹의 상기 부저장공간에 대한 동시 접근을 허용하는 정보를 포함하는 데이타 스트리밍 메카니즘.
  5. 제3항에 있어서, 상기 디스크립터는 상기 출력 버퍼 저장공간을 구성하는 출력 버퍼 그룹으로서 최소한 두개의 이산분리된 부저장공간을 포함하는 출력 버퍼 그룹을 정의하는 정보와, 상기 출력 버퍼 그룹 내의 각 부저장공간의 크기를 정의하는 정보와, 상기 하나의 제어 유닛에 의해 제어되는 상기 장치가 산출한 데이타가 상기 부저장공간의 한 부분에 기록되는 것과 병행하여 상기 제2의 여타 장치가 상기 부저장공간의 다른 부분에 기록된 데이타를 판독 및 처리할 수 있도록 하기 위하여, 상기 하나의 제어 유닛이 상기 제2의 여타 제어 유닛과 공동으로 상기 출력 버퍼 그룹에 대한 접근을 관리하도록 상기 하나의 제어 유닛을 구성하는 정보를 포함하는 데이타 스트리밍 메카니즘.
  6. 제4항에 있어서, 상기 디스크립터는 상기 하나의 제어 유닛과 상기 제1의 여타 제어 유닛 사이에 상기 채널의 상기 동배 통신의 특성을 통하여 수행되는 통신 프로토콜을 정의하는 정보를 포함하고, 상기 프로토콜은, 상기 상기 데이타 스트림 내의 데이타를 상기 입력 버퍼 그룹을 통하여 효율적으로 이동되는 것을 보장하는 방식으로 하나의 장치 및 상기 제1의 여타 장치에 의해 제어되는 상기 장치에 의한, 상기 입력 버퍼 그룹내의 상기 부저장공간에 대한 타임 인터리브된(time interleaved) 접근을 제어하도록, 상기 하나의 제어 유닛과 상기 제1의 여타 제어 유닛을 인에이블시키는 데이타 스트리밍 메카니즘.
  7. 제5항에 있어서, 상기 통지 프로토콜은, 상기 결과 데이타가 상기 출력 버퍼 그룹을 통해 효율적으로 이동되는 것을 보장하는 방식으로, 상기 하나의 제어 유닛에 의해 제어되는 상기 장치와 상기 제2의 여타 제어 유닛에 의해 제어되는 상기 장치에 의한 상기 출력 버퍼 그룹 내의 상기 부저장공간에 대한 접근을 함께 관리하도록 하기 위하여, 상기 하나의 제어 유닛과 상기 제2의 여타 제어 유닛을 인에이블시키는 형태로 이루어지는 데이타 스트리밍 메카니즘.
  8. 제1항에 있어서, 상기 스트리밍 연산을 수행하도록 상기 하나의 제어 유닛을 준비시키는 수단이 그의 작업을 종료할 때 이를 상기 프로세서 서브시스템에 신호를 제공하기 위한 수단을 상기 하나의 제어 유닛내에 포함하며, 상기 프로세서 서브시스템으로 전송되는 상기 신호는 상기 하나의 제어 유닛이 상기 스트리밍 연산을 위한 준비가 되었는 지 혹은 상기 하나의 제어 유닛이 오류로 인하여 상기 스트리밍 연산의 준비가 될 수 없는 지를 표시하며, 상기 프로세서 서브 시스템으로 전송되는 상기 신호는 상기 프로세서 서브시스템에 의하여 상기 개시 신호가 발생되기 전에 상기 프로세서 서브시스템으로 전송되며 상기 프로세서 서브시스템에 의해 상기 개시 신호의 발생에 선행하는 조건으로 사용되는 데이타 스트리밍 메카니즘.
  9. 제1항에 있어서, 상기 셋업 명령 정보는 상기 하나의 제어 유닛을 인에이블시켜 상기 스트리밍 연산을 상기 하나의 제어 유닛 외부에서 발생되는 다른 스트리밍 연산과 동기시키는 동기 정보를 포함하는 데이타 스트리밍 메카니즘.
  10. 제3항에 있어서, 상기 입력 버퍼 저장공간은 상기 제1의 여타 장치로부터 데이타 블럭을 연속적으로 수신하고 상기 하나의 제어 유닛에 의해 제어되는 상기 장치로 하여금 블럭이 수신된 순서대로 상기 블럭 데이타에 접근할 수 있도록 하는 FIFO 버퍼 장치로 사용되도록 구성되는 데이타 스트리밍 메카니즘.
  11. 컴퓨터 시스템에서, 가변장 데이타 스트림 처리를 필요로 하는 연산을 수행하는 장치를 제어하는 스트리밍 장치 어댑터(a streaming device adapter)에 있어서, 직접 통신을 허용하는 동배 통신의 특성을 가지는 상기 컴퓨터 시스템의 채널을 통하여 다른 장치 어댑터와 직접 통신하도록 상기 어댑터를 인에이블시키는 수단과, (1) 상기 컴퓨터 시스템에 의해 선택된 크기(dimensions)를 갖는 출력 버퍼 저장공간을 정의하고 (2) 상기 어댑터에 의해 제어되는 상기 장치로 순차적으로 공급될, 가변장 데이타 스트림으로 구성되는 데이타의 발신지(a source of data)를 정의하고 (3) 상기 데이타 스트림내의 모든 데이타에 대하여 상기 어댑터가 제어하는 상기 장치에 의해 수행되며, 다른 어댑터에 의해 제어되는 다른 장치가 추후 처리할 수 있도록 하기 위하여 산출되는 결과 데이타를 상기 출력 버퍼에 기록하는 프로세스(a process)를 정의하고 (4) 상기 장치 및 상기 다른 장치에 의한 상기 출력 버퍼의 사용을 조정(coordinate)하기 위하여, 상기 데이타 스트림에 대한 상기 프로세스의 수행 과정에서, 상기 어댑터와 상기 다른 어댑터 사이에 수행되는 통신 프로토콜을 정의하는 셋업 명령 정보를 상기 컴퓨터 시스템으로부터 수식하기 위한 수단과, 상기 데이타 스트림의 길이는 상기 출력 버퍼의 크기를 능가하므로 상기 출력 버퍼를 통하여 상기 결과 데이타의 일부분을 상기 다른 장치로 이송하기 위하여는 상기 출력 버퍼를 반복 사용해야 하며, 상기 통신 프로토콜은 상기 채널의 상기 직접 통신의 특성을 이용하여 상기 출력 버퍼에 있는 데이타가 언제 사용가능한 지를 나타냄으로써 상기 다른 장치가 추후 처리할 수 있도록 하는 상기 셋업 명령 정보 수신 수단과, 상기 수신 수단에 의해 상기 셋업 명령 정보가 수신된 후 상기 컴퓨터 시스템이 발생하는 개시 신호에 응답하여, 상기 어댑터에 의해 제어되는 상기 장치에게 상기 프로세스를 수행하도록 지시하고, 상기 프로토콜을 사용하여 상기 데이타 스트림의 이산 부분의 데이타가 상기 출력 버퍼 저장공간에서 사용가능할 경우 이를 상기 다른 어댑터에 통지하되, 상기 컴퓨터 시스템으로부터 개입이나 지시없이 상기 데이타 스트림 내의 모든 데이타가 처리될 때까지 상기 프로세스가 계속적으로 수행되도록 하는 수단을 포함하는 스트리밍 장치 어댑터.
  12. 제11항에 있어서, 상기 어댑터는 상기 컴퓨터 시스템과는 별도의 분리된 유닛에 포함되며 상기 채널을 통하여 상기 컴퓨터 시스템에 주변장치로서 장착되는 스트리밍 장치 어댑터.
  13. 제11항에 있어서, 상기 어댑터는 상기 컴퓨터 시스템에 의해 실행되는 프로그램내에서 대리 유닛(a surrogate unit)으로 구현되는 스트리밍 장치 어댑터.
  14. 제11항에 있어서, 상기 출력 버퍼 저장공간은 각각 사전결정된 길이의 데이타 블럭을 저장할 수 있는 최소한 두개의 영역으로 구성되며, 상기 통신 프로토콜은 상기 어댑터와 상기 다른 장치에 의해 제어되는 상기 장치로 하여금 상이한 상기 영역에 대해 병행 접근 할 수 있도록 허용함으로써, 하나의 결과 데이타 블럭이 상기 영역의 한 부분에 기록되는 것과 병행하여 상기 다른 장치가 상기 영역의 다른 결과 데이타 블럭을 처리할 수 있도록 하는 스트리밍 장치 어댑터.
  15. 제11항에 있어서, 상기 출력 버퍼 저장공간은 상기 컴퓨터 시스템의 메모리 서브시스템에 포함되어 상기 어댑터에 의해 제어되는 상기 장치가 상기 채널을 통하여 접근할 수 있으며, 상기 셋업 명령 내의 상기 정보는 상기 출력 버퍼 저장공간에서 상기 영역의 갯수와 각 영역의 크기를 정의하는 정보를 포함하며, 상기 통신 프로토콜을 정의하는 상기 셋업 명령 정보는, 상기 어댑터로부터 상기 다른 어댑터로의 통신 개시에 대한 선행 조건으로서 상기 영역 내에서 발생하는 사건과, 상기 통신에 포함되는 신호의 형태를 정의하는 정보를 포함하는 스트리밍 장치 어댑터.
  16. 제11항에 있어서, 상기 컴퓨터 시스템은 상기 어댑터와 여타 어댑터가 제어하는 장치에 의해 상이한 복수개의 데이타 스트림의 동시 처리를 개시할 수 있으며, 상기 어댑터에 제공되는 상기 셋업 명령 정보는 상기 어댑터에 의해 제어되는 상기 장치에 있어 하나의 데이타 스트림 처리와 상이한 장치에서의 상이한 데이타 스트림 처리를 동기시키기 위한 정보를 포함하는 스트리밍 장치 어댑터.
  17. 제16항에 있어서, 상기 동기 정보는 상기 상이한 데이타 스트림 처리에 대한 시간 참조(a time reference)를 제공하는 시간 함수의 위치를 상기 컴퓨터 시스템의 메모리 내에서 정의하는 정보를 포함하는 스트리밍 장치 어댑터.
  18. 제11항에 있어서, 데이타에 대하여 상이한 다수의 변환 프로세스를 수행할 수 있는 하나 이상의 장치를 제어하며, 상기 셋업 명령 정보는 상기 다수의 변환 프로세스중에서 상기 데이타 스트림에 대하여 수행될 상기 프로세스로서 선택된 변환 프로세스를 정의하는 정보를 포함하는 스트리밍 장치 어댑터.
  19. 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은, 프로세서 서브시스템과, 메모리 서브시스템과; 다수의 장치 어댑터와; 상기 어댑터에 의해 제어되는 다수의 장치와; 상기 서브시스템, 상기 어댑터, 상기 장치를 연결하는 I/O 채널을 포함하되; 상기 채널은, 상기 어댑터를 인에이블시켜 상기 서브시스템중 어떤 것의 개입도 없이 제어 정보를 직접 교환할 수 있도록 하는 동배 통신의 특성을 포함하며; 상기 프로세서 서브시스템은, 최소한 두개의 상기 어댑터와 상기 최소한 두개의 어댑터에 의해 제어되는 각 장치를 병행 준비하여 상기 프로세서 서브시스템의 중재없이 모든 데이타가 처리될 때까지 가변장 데이타 스트림내의 데이타를 자율적으로 처리하기 위한 수단을 포함하며; 상기 준비 수단은: 상기 최소한 두개의 어댑터에, 상기 최소한 두개의 어댑터에 의해 제어되는 장치 사이에 상기 데이타 스트림내의 상기 데이타를 이송시키기 위하여 상기 어댑터가 상호 협력하여 관리하여야 하며 상기 데이타 스트림 내의 모든 데이타를 동시에 저장하기에는 충분하지 못한 상기 메모리 서브시스템 내의 버퍼 저장공간을 정의하고, 상기 최소한 두개의 어댑터에 의해 제어되는 장치가 상기 데이타 스트림내의 상기 데이타에 대하여 수행해야 할 프로세스를 정의하고, 상기 최소한 두개의 어댑터에 의해 제어되는 상기 장치가 판독 및 처리할 데이타가 상기 버퍼 저장공간에 포함되어 있는 시점을 알리기 위하여, 상기 채널의 상기 동배 통신의 특성을 통하여 상기 최소한 두개의 어댑터에 의해 준수(observe)되어야 할 통신 프로토콜을 또한 정의하는 정보를 제공하는 수단과; 상기 최소한 두개의 어댑터로부터, 상기 어댑터가 상기 데이타 스트림내의 데이타 처리를 제어할 준비가 각각 완료되었음을 통보받기 위한 수단과; 상기 데이타 스트림 처리의 제어를 시작하도록 상기 최소한 두개의 어댑터에 신호하기 위한 수단을 포함하며; 상기 최소한 두개의 어댑터는, 상기 신호에 응답하여 각각의 장치로 하여금 상기 데이타 스트림의 데이타를 처리하도록 제어를 개시하는 수단을 포함하며, 상기 어댑터는 상기 통신 프로토콜을 통하여 상호 협력하여 상기 프로세서 서브시스템의 중재없이, 상기 데이타 스트림내의 모든 데이타가 처리될 때까지 상기 버퍼 저장공간에 대한 접근을 관리하고 상기 데이타 스트림 내의 데이타에 대한 자율적 처리를 제어하는 컴퓨터 시스템.
  20. 프로세서와, 메모리 서브시스템과, 상기 서브시스템을 연결하며 동배 통신의 특성을 제공하는 채널과, 상기 채널을 통하여 상기 서브시스템에 연결되며 상기 채널의 동배 통신의 특성을 이용하여 상호 직접 통신할 수 있는 다수의 장치 제어 유닛 및 데이타 처리 장치를 구비한 컴퓨터 시스템에 있어서, 다수의 상기 장치에 의해 순차적으로 처리될 가변장 데이타 스트림을 나타내는 데이타의 발신지와; 상기 프로세서 서브시스템에서 상기 최소한 두개의 제어 유닛이 각각 제어하는 장치에 의한 상기 데이타 스트림 처리를 제어하기 위하여 최소한 두개의 상기 제어 유닛을 준비하는 수단으로서, 상기 준비는 상기 제어 유닛에 상기 메모리 서브시스템내에서 상기 최소한 두개의 제어 유닛이 제어하는 장치의 쌍에 의해 공유되는 가변 크기 및 위치의 데이타 버퍼를 정의하는 정보를 제공하고, 상기 버퍼는 각 쌍의 한 장치에 의해 채워지고 같은 쌍의 다른 장치에 의해 비워지며, 임의의 상기 장치의 쌍에 의해 공유되는 상기 버퍼는 전체 데이타 스트림을 한꺼번에 저장하기 위한 충분한 공간을 가지지는 못하며, 또한 상기 준비에는 제각기의 제어 유닛이 제각기의 장치에 의한 상기 데이타 스트림 처리를 제어할 준비가 되었을 때 상기 최소한 두개의 제어 유닛이 이를 상기 프로세서 서브시스템에 알리는 것과, 상기 최소한 두개의 제어 유닛이 둘다 준비가 완료되었음을 표시했을 때 상기 프로세서 서브시스템으로부터 상기 최소한 두개 중 적어도 하나의 제어 유닛에 개시 신호를 송출하는 것을 포함하는 상기 준비 수단과, 상기 최소한 두개의 제어 유닛내에서, 상기 준비 과정에서 수신한 상기 개시 신호와 정보에 응답하여 제각기의 장치로 하여금 상기 프로세서 서브시스템의 개입없이 상기 데이타 스트림내의 모든 데이타를 순차적으로 처리하도록 제어하는 수단으로서, 상기 최소한 두개의 제어 유닛은 쌍으로 상호 협력하여 각 유닛의 쌍에 의해 제어되는 장치 사이의 데이타 이송을 제어하며, 제어 유닛의 상기 제각기의 쌍에 있어서 상기 응답 수단은 상기 통지 프로토콜을 이용하여 유닛의 각 쌍에 의해 제어되는 장치의 임의의 쌍이 공유하는 버퍼가 동일한 쌍의 한 장치가 기록하고 동일한 쌍의 다른 장치가 처리하기 위한 데이타를 포함하고 있는 시점을 알리는 상기 제어 수단을 포함하는 컴퓨터 시스템.
  21. 데이타 처리 시스템(a data handling system)에 있어서, 상기 시스템은, 프로세서와 메모리 서브시스템과; 최소한 두개의 제어 유닛과; 상기 최소한 두개의 제어 유닛에 의해 제각기 제어되는 최소한 두개의 데이타 처리 장치와; 상기 제어 유닛 및 장치를 상기 프로세서 및 메모리 서브시스템에 연결하며 상기 최소한 두개의 제어 유닛으로 하여금 상기 프로세서 서브시스템의 개입없이 상호 직접 통신하도록 허용하는 동배 통신의 특성을 가지는 채널을 포함하되; 상기 프로세서 서브시스템은 상기 최소한 두개의 제어 유닛에 의해 자율적으로 제어되는 데이타 스트리밍 연산을 셋업하고 개시하는 수단으로서, 가변장 데이타 스트림은 상기 최소한 두개의 장치에 의해 순차적으로 처리되고, 상기 데이타는 상기 프로세서 서브시스템에 의해 할당된 공유 메모리 버퍼를 통하여 연속된 상기 장치에 전달되며, 상기 장치 각각은 상기 서브시스템에 의해 선택적으로 지정된 데이타 변환 기능을 수행하는 상기 셋업 및 개시 수단을 포함하고; 상기 최소한 두개의 제어 유닛 각각은, 상기 셋업과 개시 수단에 의해 조정되어, 상기 최소한 두개의 장치중 제각기의 장치에 의한 상기 데이타 스트리밍 연산을, 상기 데이타 스트리밍 연산의 완료에 앞서 상기 프로세서 서브시스템의 개입를 필요로 하지 않는 자율적인 방식으로, 그리고 상기 제각기의 장치의 외부에서 발생하는 조건 및 사건으로부터 상기 제각기의 장치를 효과적으로 격리시키는 방식으로, 수행을 지시하는, 수단을 포함하며, 상기 지시 수단은 상기 데이타 스트림을 상기 제각기의 장치로 공급하고 각 장치로부터 상기 데이타 스트림내의 변환된 데이타를 전송하기 위하여 상기 프로세서 서브시스템에 의해 할당된 상기 공유 메모리 버퍼의 반복적인 사용을 관리하는 수단을 포함하며, 상기 반복적인 사용은 상기 채널을 경유하여 상기 제어 유닛 사이에 전송되는 통지 통신을 통하여 다른 상기 최소한 두개의 제어 유닛과의 협조 하에 관리되며 상기 통지 통신의 결과로써 발생하는 버퍼 재사용 사건으로부터 상기 제각기의 장치를 격리시키는 방식으로 관리되는 데이타 처리 시스템.
KR1019950022603A 1994-07-29 1995-07-27 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템 KR0163234B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/282,993 1994-07-29
US08/282,993 US5568614A (en) 1994-07-29 1994-07-29 Data streaming between peer subsystems of a computer system

Publications (1)

Publication Number Publication Date
KR0163234B1 true KR0163234B1 (ko) 1999-01-15

Family

ID=23084023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950022603A KR0163234B1 (ko) 1994-07-29 1995-07-27 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템

Country Status (5)

Country Link
US (1) US5568614A (ko)
EP (1) EP0694847A3 (ko)
JP (1) JP3251815B2 (ko)
KR (1) KR0163234B1 (ko)
CA (1) CA2152984A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100593320B1 (ko) * 2001-06-19 2006-06-26 박장현 스트리밍 버퍼를 이용한 인터넷 원격조작 시스템

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793980A (en) 1994-11-30 1998-08-11 Realnetworks, Inc. Audio-on-demand communication system
US7349976B1 (en) * 1994-11-30 2008-03-25 Realnetworks, Inc. Audio-on-demand communication system
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5848367A (en) * 1996-09-13 1998-12-08 Sony Corporation System and method for sharing a non-volatile memory element as a boot device
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US6020900A (en) * 1997-04-14 2000-02-01 International Business Machines Corporation Video capture method
US6088716A (en) * 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
IL135874A0 (en) * 1997-11-03 2001-05-20 Harris Corp Receiver for a reconfigurable radio system and method therefor
US6430652B1 (en) 1997-12-30 2002-08-06 Lsi Logic Corporation Method and apparatus for streaming data in a data processing system
US6298409B1 (en) * 1998-03-26 2001-10-02 Micron Technology, Inc. System for data and interrupt posting for computer devices
US20030120775A1 (en) * 1998-06-15 2003-06-26 Compaq Computer Corporation Method and apparatus for sending address in the message for an e-mail notification action to facilitate remote management of network devices
US6219730B1 (en) * 1998-06-20 2001-04-17 Nghi Nho Nguyen Method and apparatus for producing a combined data stream and recovering therefrom the respective user input stream and at least one additional input signal
CN1867068A (zh) 1998-07-14 2006-11-22 联合视频制品公司 交互式电视节目导视系统及其方法
US6132520A (en) 1998-07-30 2000-10-17 Howmet Research Corporation Removal of thermal barrier coatings
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6651074B1 (en) * 1999-12-20 2003-11-18 Emc Corporation Method and apparatus for storage and retrieval of very large databases using a direct pipe
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US7103906B1 (en) 2000-09-29 2006-09-05 International Business Machines Corporation User controlled multi-device media-on-demand system
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
KR20190096450A (ko) 2000-10-11 2019-08-19 로비 가이드스, 인크. 매체 콘텐츠 배달 시스템 및 방법
US20020073238A1 (en) * 2000-11-28 2002-06-13 Eli Doron System and method for media stream adaptation
US6622222B2 (en) * 2001-04-26 2003-09-16 International Business Machines Corporation Sequencing data on a shared data bus via a memory buffer to prevent data overlap during multiple memory read operations
KR20030018141A (ko) * 2001-08-27 2003-03-06 주식회사 엘지이아이 스트림 데이터 처리시스템 및 그 방법
ATE388438T1 (de) * 2001-12-14 2008-03-15 Nxp Bv Verfahren zur datenverarbeitung
WO2003052586A2 (en) * 2001-12-14 2003-06-26 Koninklijke Philips Electronics N.V. Data processing system having multiple processors
US7249291B2 (en) * 2002-02-15 2007-07-24 Digital Fountain, Inc. System and method for reliably communicating the content of a live data stream
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
US7154886B2 (en) 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
EP2357732B1 (en) 2002-10-05 2022-04-06 QUALCOMM Incorporated Systematic encoding and decoding of chain reaction codes
JP2006518057A (ja) * 2002-10-31 2006-08-03 ロッキード マーティン コーポレーション 改善された計算アーキテクチャ、関連システム、並びに、方法
US7386704B2 (en) 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
JP2004180092A (ja) * 2002-11-28 2004-06-24 Sony Corp 情報処理装置および情報処理方法、並びにコンピュータ・プログラム
US7493646B2 (en) 2003-01-30 2009-02-17 United Video Properties, Inc. Interactive television systems with digital video recording and adjustable reminders
US6961784B1 (en) * 2003-04-17 2005-11-01 Qlogic Corporation Method and system for processing non-data frames in host bus adapters
US7471635B2 (en) 2003-07-16 2008-12-30 Qlogic, Corporation Method and apparatus for test pattern generation
US7152132B2 (en) * 2003-07-16 2006-12-19 Qlogic Corporation Method and apparatus for improving buffer utilization in communication networks
US7453802B2 (en) 2003-07-16 2008-11-18 Qlogic, Corporation Method and apparatus for detecting and removing orphaned primitives in a fibre channel network
US7388843B2 (en) 2003-07-16 2008-06-17 Qlogic, Corporation Method and apparatus for testing loop pathway integrity in a fibre channel arbitrated loop
US7463646B2 (en) 2003-07-16 2008-12-09 Qlogic Corporation Method and system for fibre channel arbitrated loop acceleration
US7522522B2 (en) 2003-07-21 2009-04-21 Qlogic, Corporation Method and system for reducing latency and congestion in fibre channel switches
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
US7630384B2 (en) 2003-07-21 2009-12-08 Qlogic, Corporation Method and system for distributing credit in fibre channel systems
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
KR101170629B1 (ko) 2003-10-06 2012-08-02 디지털 파운튼, 인크. 단일 송신기 또는 다중 송신기를 갖는 통신 시스템의 에러 정정 다중-스테이지 코드 생성기 및 디코더
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
GB2410578B (en) 2004-02-02 2008-04-16 Surfkitchen Inc Routing system
WO2005093570A1 (fr) * 2004-02-25 2005-10-06 Opencube Technologies Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste
FR2866729B1 (fr) * 2004-02-25 2006-08-11 Opencube Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
EP1743431A4 (en) 2004-05-07 2007-05-02 Digital Fountain Inc SYSTEM FOR DOWNLOADING AND RECORDING AND CONTINUOUS READING OF FILES
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US20060101250A1 (en) 2004-10-01 2006-05-11 Lockheed Martin Corporation Configurable computing machine and related systems and methods
US7380030B2 (en) 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US8015306B2 (en) * 2005-01-05 2011-09-06 Control4 Corporation Method and apparatus for synchronizing playback of streaming media in multiple output devices
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7716359B2 (en) * 2005-05-09 2010-05-11 Microsoft Corporation Method and system for providing an interface through which an application can access a media stack
US20070011287A1 (en) * 2005-05-16 2007-01-11 Charbel Khawand Systems and methods for seamless handover in a streaming data application
US20070073965A1 (en) * 2005-09-28 2007-03-29 Rajakarunanayake Yasantha N Direct storage and retrieval of multimedia data using a data storage device
US9681105B2 (en) 2005-12-29 2017-06-13 Rovi Guides, Inc. Interactive media guidance system having multiple devices
US9136983B2 (en) 2006-02-13 2015-09-15 Digital Fountain, Inc. Streaming and buffering using variable FEC overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US7895635B2 (en) * 2006-06-30 2011-02-22 Versteeg William C Systems and methods of assembling an elementary stream from an encapsulated multimedia transport stream
US7876768B2 (en) * 2006-06-30 2011-01-25 Ver Steeg William C Systems and methods of assembling an elementary stream from an encapsulated multimedia transport stream
JP5405716B2 (ja) 2006-09-29 2014-02-05 富士通株式会社 光送信機
JP5055968B2 (ja) 2006-11-14 2012-10-24 富士通株式会社 差動4位相偏移変調器
US7433977B2 (en) * 2006-11-28 2008-10-07 Telefonaktiebolaget Lm Ericsson (Publ) DMAC to handle transfers of unknown lengths
US20080205229A1 (en) * 2007-02-26 2008-08-28 Yung-Chih Li Method of identifying optical disc
JP5211528B2 (ja) 2007-03-29 2013-06-12 富士通株式会社 光変調装置および光変調方式切替方法
US20090019492A1 (en) 2007-07-11 2009-01-15 United Video Properties, Inc. Systems and methods for mirroring and transcoding media content
AU2008298602A1 (en) 2007-09-12 2009-03-19 Digital Fountain, Inc. Generating and communicating source identification information to enable reliable communications
US8639830B2 (en) * 2008-07-22 2014-01-28 Control4 Corporation System and method for streaming audio
US10063934B2 (en) 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
KR101267621B1 (ko) * 2009-11-20 2013-05-23 한국전자통신연구원 다중 스트림으로 구성된 그룹 미디어 전송 응용 서비스를 위한 오버레이 멀티캐스트 시스템 및 방법
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US8805418B2 (en) 2011-12-23 2014-08-12 United Video Properties, Inc. Methods and systems for performing actions based on location-based rules
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
FR3011704A1 (fr) * 2013-10-07 2015-04-10 Orange Procede de mise en œuvre d'une session de communication entre une pluralite de terminaux
US9747167B2 (en) * 2014-02-27 2017-08-29 Nice Ltd. Persistency free architecture
US10744407B2 (en) 2015-09-08 2020-08-18 Sony Interactive Entertainment LLC Dynamic network storage for cloud console server
GB2562520A (en) * 2017-05-17 2018-11-21 John Hamlin Derrick Digital processing connectivity
US11501142B1 (en) * 2019-04-03 2022-11-15 Xilinx, Inc. Tiling control circuit for downloading and processing an input tile based on source and destination buffer availability
CN113742753B (zh) * 2021-09-15 2023-09-29 北京宏思电子技术有限责任公司 一种数据流加解密的方法、电子设备及芯片系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185877A (en) * 1987-09-04 1993-02-09 Digital Equipment Corporation Protocol for transfer of DMA data
JPH0810445B2 (ja) * 1990-09-21 1996-01-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的バス調停方法及び装置
US5263139A (en) * 1992-05-19 1993-11-16 Sun Microsystems, Inc. Multiple bus architecture for flexible communication among processor modules and memory subsystems and specialized subsystems
US5339413A (en) * 1992-08-21 1994-08-16 International Business Machines Corporation Data stream protocol for multimedia data streaming data processing 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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100593320B1 (ko) * 2001-06-19 2006-06-26 박장현 스트리밍 버퍼를 이용한 인터넷 원격조작 시스템

Also Published As

Publication number Publication date
JP3251815B2 (ja) 2002-01-28
EP0694847A3 (en) 1999-08-04
CA2152984A1 (en) 1996-01-30
US5568614A (en) 1996-10-22
JPH0855075A (ja) 1996-02-27
EP0694847A2 (en) 1996-01-31

Similar Documents

Publication Publication Date Title
KR0163234B1 (ko) 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템
US6658477B1 (en) Improving the control of streaming data through multiple processing modules
US5337410A (en) Data stream concentrator providing attribute data storage and graphics pipeline access
US6145015A (en) Multimedia data transferring method
PL170083B1 (pl) Sposób przetwarzania danych w multimedialnym urzadzeniu komputerowym i multimedialne urzadzenie komputerowe PL PL
JPH06266649A (ja) 複数のデータチャネルを介してデータを転送する方法及びその回路アーキテクチャ
JPH06266650A (ja) データを転送する方法と装置及びデータ転送をインタリーブする装置
JPH0562382B2 (ko)
JPH03156562A (ja) バス間アダプタ
JP2010271808A (ja) ストレージ装置及びデータコピー方法
JPH09224044A (ja) 配信システム
JPH09325944A (ja) I/oデバイス及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
JP2845162B2 (ja) データ転送装置
JPH09288654A (ja) 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o
US6721826B2 (en) Buffer partitioning for managing multiple data streams
JP2009282917A (ja) サーバ間通信機構及びコンピュータシステム
JP3288213B2 (ja) サーバ
JP2723022B2 (ja) ディスク装置のインタフェース及びその制御方法
EP1780976A1 (en) Methods and system to offload data processing tasks
JP3484056B2 (ja) データ転送装置及びデータ転送システム
JPH04295947A (ja) 動的割振りが可能なバスを備えるコンピュータ
US6070201A (en) Alternate selection of virtual data buffer pathways
WO2009033971A1 (en) System and method for splitting data and data control information
JP4285307B2 (ja) データ処理装置およびその方法
JPH09288653A (ja) Cpu間のリファレンスによるコンピュータシステムデータi/o

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee