KR100497166B1 - 데이터 스트림을 처리하기 위한 장치 및 방법 - Google Patents

데이터 스트림을 처리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR100497166B1
KR100497166B1 KR10-1999-7009381A KR19997009381A KR100497166B1 KR 100497166 B1 KR100497166 B1 KR 100497166B1 KR 19997009381 A KR19997009381 A KR 19997009381A KR 100497166 B1 KR100497166 B1 KR 100497166B1
Authority
KR
South Korea
Prior art keywords
data stream
data
stream
isochronous
application
Prior art date
Application number
KR10-1999-7009381A
Other languages
English (en)
Other versions
KR20010006297A (ko
Inventor
스코트 디 스마이어스
브루스 페어맨
히사토 시마
Original Assignee
소니 일렉트로닉스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 일렉트로닉스 인코포레이티드 filed Critical 소니 일렉트로닉스 인코포레이티드
Publication of KR20010006297A publication Critical patent/KR20010006297A/ko
Application granted granted Critical
Publication of KR100497166B1 publication Critical patent/KR100497166B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40058Isochronous transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40065Bandwidth and channel allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

등시성 데이터 파이프는 애플리케이션과 버스 구조 사이에 양방향 데이터 경로를 제공한다. 등시성 데이터 파이프는 임의 개수의 등시성 채널 상의 데이터를 포함하여, 임의의 등시성 데이터 스트림을 보내고, 받고, 조작을 수행하는 능력을 포함한다. 등시성 데이터 파이프는 데이터가 등시성 데이터 파이프를 통과할 때 등시성 데이터 스트림에 대해 동작하는 프로그램 가능한 시퀀서이다. 등시성 데이터 파이프는 데이터가 버스 구조를 거쳐 전송되거나 애플리케이션에 보내지기 이전에 데이터 스트림에 대해 특정 동작을 수행하도록 애플리케이션에 의해 프로그램됨으로써, 데이터가 그 목적지에 전달되기 이전에 그 데이터를 전처리 및 조작한다. 동작은 패킷 헤더 및 데이터 패킷의 데이터 필드 모두에 대해 수행된다. 등시성 데이터 파이프는 특정 이벤트가 발생 시 정지되거나 시작될 수 있다. 본 발명의 대안적인 실시예에서, 등시성 데이터 파이프는 요청 및 적절한 패킷 헤더의 생성을 포함하여, 등시성 및 비동기 데이터 모두를 보내고 받도록 프로그램된다.

Description

데이터 스트림을 처리하기 위한 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING STREAMS OF DATA}
본 발명은 버스 구조를 통해 애플리케이션으로/으로부터의 등시성 데이터 전송 동작을 수행하는 분야에 관한 것이다. 보다 자세하게 말하자면, 본 발명은 버스 구조에 결합된 애플리케이션과 노드 사이의 데이터 전송 동작을 완료하기 위하여 고속의 등시성 데이터 스트림을 관리하고 조작하는 분야에 관한 것이다.
1995년 6월 16일에 발표된 IEEE 1394 표준인 "고성능 직렬 버스를 위한 표준 P1394" 초안 8.01vI는 비동기 및 등시성 포맷 데이터 전송 모두를 지원하는 저렴한 고속의 직렬 버스 구조를 구현하기 위한 국제 표준이다. 등시성 데이터 전송은 중요한 순간(instance)간의 시간 간격이 송신 및 수신 애플리케이션 모두에서 동일한 지속 기간을 갖도록 발생하는 실시간 전송이다. 등시적으로 전송되는 데이터 패킷 각각은 고유 시간 기간 안에 전송된다. 등시적으로 데이터를 전송하기 위한 이상적인 애플리케이션 예는 비디오 녹화기(video recorder)로부터 TV 세트로의 전송일 것이다. 비디오 녹화기는 영상 및 음향을 녹화하고, 이산적인 청크(chunks) 또는 패킷으로 그 데이터를 저장한다. 그런 다음 비디오 녹화기는 TV 세트에 디스플레이하기 위하여 제한된 시간 기간에 걸쳐 녹화된 상기 영상 및 음향을 나타내는 각 패킷을 그 기간 동안에 전송한다. IEEE 1394 표준 버스 구조는 애플리케이션간의 등시적인 데이터 전송을 위해 다중 채널을 제공한다. 6 비트의 채널 번호는 적절한 애플리케이션에 의한 수신을 보장하기 위하여 데이터와 함께 방송된다. 이것은 복수의 애플리케이션들이 상기 버스 구조를 통해 등시성 데이터를 동시에 송신하도록 허용한다. 비동기 전송은 가능한 한 빨리 이루어지는 전형적인 데이터 전송 동작이며, 일정 양의 데이터를 소스에서 목적지로 전송한다.
IEEE 1394 표준은 디지털 장치들을 상호 접속함으로써, 범용 입출력 접속을 제공하기 위한 고속 직렬 버스를 제공한다. IEEE 1394 표준은, 애플리케이션들을 위한 디지털 인터페이스를 정의함으로써, 디지털 데이터가 상기 버스를 통해 전송되기 이전에 애플리케이션이 상기 디지털 데이터를 아날로그 데이터로 변환해야 할 필요성을 제거한다. 유사한 방법으로, 수신 애플리케이션은 버스로부터 아날로그 데이터가 아닌 디지털 데이터를 수신할 것이며, 따라서 아날로그 데이터를 디지털 데이터로의 변환이 요구되지 않을 것이다. IEEE 1394 표준에 의해 요구되는 케이블은 그러한 장치들의 접속에 사용되는 다른 덩치가 큰 케이블에 비해 크기가 매우 가늘다. 장치들은 상기 버스가 활성 상태에 있는 동안 IEEE 1394 버스로부터 제거되거나 추가될 수 있다. 만약 장치가 그와 같이 추가되거나 제거되면, 상기 버스는 그 때 존재하는 노드들 사이의 데이터 전송을 위해 자체적으로 자동으로 재구성할 것이다. 하나의 노드는 버스 구조상에서 고유 주소를 갖는 논리적인 실체(entity)로 간주된다. 각 노드는 식별 ROM, 표준화된 제어 레지스터 세트 및 고유의 주소 공간을 제공한다.
IEEE 1394 표준은 도 1에 도시된 프로토콜을 정의한다. 이 프로토콜은 트랜잭션 계층(12), 링크 계층(14) 및 물리 계층(16)에 접속되는 직렬 버스 관리 블록(10)을 포함한다. 물리 계층(16)은 장치 또는 애플리케이션과 IEEE 1394 케이블 사이의 전기적 및 기계적 접속을 제공한다. 물리 계층(16)은 IEEE 1394 버스에 접속된 모든 장치들이 실제 데이터 전송 및 수신뿐만 아니라 버스에 엑세스하는 것을 보장하기 위하여 중재(arbitration)를 또한 제공한다. 링크 계층(14)은 비동기 및 등시성 데이터 패킷 전송 모두를 위해 데이터 패킷 전달 서비스를 제공한다. 링크 계층은 승인 프로토콜을 사용하는 비동기 데이터 전송과, 적시(just-in-time)의 데이터 전달을 위해 실시간 보장되는 대역폭 프로토콜을 제공하는 등시성 데이터 전송 모두를 지원한다. 트랜잭션 계층(12)은 비동기 데이터 전송을 완성하는데 필요한 명령들을 지원하며, 이 명령은 판독, 기록 및 잠금을 포함한다. 직렬 버스 관리 블록(10)은 등시성 데이터 전송을 관리하는 등시성 자원 관리자를 포함한다. 직렬 버스 관리 블록(10)은 중재 타이밍, 버스 상의 모든 장치를 위한 적절한 전력 보장, 주기 마스터 배정, 등시성 채널 및 대역폭 자원의 배정 및 기본적인 오류 통지를 최적화하는 형태로 직렬 버스의 전반적인 구성 제어를 역시 제공한다.
등시성 전송을 초기화하기 위하여, 몇몇 비동기 데이터 전송은, 애플리케이션들을 구성하고 상기 데이터의 전송을 위해 사용될 특정 채널을 결정하기 위하여 요구될 것이다. 상기 채널이 일단 결정되면, 버퍼들은 전송 애플리케이션에서 데이터가 보내지기 이전에 그 데이터를 저장하고, 수신 애플리케이션에서 데이터가 처리되기 이전에 그 데이터를 저장하는데 사용된다. 범용 호스트 또는 주변기기 구현에서, 전송된 데이터의 포맷은 애플리케이션에 의해 사용될 수 있는 형태가 아니다. 대부분의 경우, 범용 프로세서는 데이터를 애플리케이션에 보내기 이전에 그 데이터 스트림을 사전처리 해야만 한다. 때때로, 상기 사전처리 작업은 실시간 데이터 스트림을 효율적으로 처리하는 것을 불가능하게 할 수 있을 정도로 상당한 계산 전력을 소비한다.
버스 구조를 거쳐 애플리케이션으로부터 보내지거나 이에 의해 수신되는 고속 데이터 스트림을 관리하고 조작할 수 있는 능력을 상기 애플리케이션에 제공하는 등시성 데이터 파이프가 필요하다. 또한 애플리케이션이 자신의 원래 포맷으로 데이터를 전송하고 수신하도록 허용함으로써 시간에 걸쳐 연속적인 데이터 스트림을 효율적으로 다루는 애플리케이션의 능력을 향상시키는 등시성 데이터 파이프가 더 요구된다.
도 1은 IEEE 1394 표준에 의해 정의된 프로토콜을 도시하는 도면.
도 2는 본 발명에 따른 등시성 데이터 파이프와 비동기 데이터 파이프를 포함하는 링크 회로의 개략적인 블록도.
도 3은 등시성 데이터 파이프 내에 있는 레지스터 파일을 도시하는 도면.
도 4는 등시성 데이터 파이프 시퀀서 내에 있는 레지스터 파일을 도시하는 도면.
도 5는 등시성 녹화 포맷을 보여주는 등시성 데이터 스트림의 예를 도시하는 도면.
등시성 데이터 파이프는 애플리케이션과 버스 구조 사이에 양방향 데이터 경로를 제공한다. 등시성 데이터 파이프는 임의 개수의 등시성 채널 상의 데이터를 포함하는 임의의 등시성 데이터 스트림을 송신하고, 수신하고, 조작을 수행하는 능력을 포함한다. 등시성 데이터 파이프는 데이터가 등시성 데이터 파이프를 통과할 때 등시성 데이터 스트림에 대해 동작하는 프로그램 가능한 시퀀서이다. 등시성 데이터 파이프는, 데이터가 버스 구조를 거쳐 전송되거나 또는 애플리케이션에 보내지기 이전에 데이터 스트림 상에 특정 동작을 수행하도록 애플리케이션에 의해 프로그램됨으로써, 데이터가 그 목적지에 전달되기 이전에 그 데이터를 사전처리하고 조작한다. 상기 동작은 그 데이터 패킷의 패킷 헤더 및 데이터 필드 양측에 대해 수행된다. 등시성 데이터 파이프는 특정 이벤트가 발생하면 정지하거나 시작될 수 있다. 본 발명의 대안적인 실시예에서, 등시성 데이터 파이프는 요청과 적절한 패킷 헤더의 생성을 포함하여, 등시성 및 비동기 데이터 모두를 송신하고 수신하록 프로그램된다.
등시성 데이터 파이프는 버스 구조를 거쳐 애플리케이션을 위한 데이터를 전송하고 수신한다. 바람직하게는, 상기 버스 구조는 IEEE 1394 표준 버스 구조이다. 등시성 데이터 파이프는 프로그램 가능하며, 애플리케이션에 의해 요구되는 데이터에 대한 조작을 수행하기 위하여 데이터 스트림에 대해 일련의 명령어를 실행할 것이다. 링크 회로에는, 등시성 데이터 파이프가 등시성 데이터의 전송과 수신을 위해 포함되며, 또한 비동기 데이터 파이프가 비동기 데이터의 송신과 수신을 위해 포함된다. 등시성 데이터 파이프 및 비동기 데이터 파이프로부터의 데이터는 버스 구조상에서 다중화 된다. 버스 구조로부터 수신되는 데이터는 등시성 데이터 파이프 및 비동기 데이터 파이프에 디멀티플렉스 된다. 대안적으로, 등시성 데이터 파이프는 등시성 및 비동기 데이터 모두를 전송하고 수신하기 위하여 프로그램 된다.
본 발명에 따른 등시성 데이터 파이프(IDP)와 비동기 데이터 파이프를 포함하는 링크 회로는 도 2에 도시된다. 링크 회로(10)는 애플리케이션(12와 14)들과 버스 구조(58) 사이에 링크를 제공한다. 애플리케이션(12와 14)은 시스템 버스(16)에 모두 결합된다. 시스템 버스(16)는 등시성 데이터 파이프(20)와 비동기 데이터 파이프(26) 모두에 결합된다. 애플리케이션(12와 14)은 또한 애플리케이션 인터페이스 회로(18)에 모두 결합된다. 애플리케이션 인터페이스 회로(18)는 제어 레지스터 세트(38), 등시성 데이터 파이프(20), 비동기 데이터 파이프(26) 및 링크 코어(44)에 결합된다. 등시성 데이터 파이프와 비동기 데이터 파이프(26) 모두는 각각 레지스터 세트(24와 28)를 포함한다. 외향(outbound) FIFO(30)는 등시성 데이터 파이프(20)에 관련되며, 등시성 데이터 파이프(20) 및 멀티플렉서(40) 사이에 결합된다. 외향 FIFO(32)는 비동기 데이터 파이프(26)에 대응하며, 비동기 데이터 파이프(26)와 멀티플렉서(40) 사이에 결합된다. 제어 레지스터(38)는 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 양쪽에 역시 결합된다. 내향(inbound) FIFO(34)는 디멀티플렉서(42)에 결합된다. 디멀티플렉서(42)는 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 양쪽에 결합된다.
링크 코어(44)는 전송기(46), 수신기(48), 주기 타이머(50), 주기 모니터(52), CRC 오류 검사 회로(54), 및 버스 구조(58)에 물리적으로 인터페이스하는 물리적 인터페이스 회로(56)를 포함한다. 전송기(46)는 멀티플렉서(40), 주기 타이머(50), CRC 오류 검사 회로(54) 및 물리적 인터페이스 회로(56)에 결합된다. 수신기(48)는 내향 FIFO(34), 주기 모니터(52), CRC 오류 검사 회로(54) 및 물리적 인터페이스 회로(56)에 결합된다. 주기 타이머(50)는 주기 모니터(52)에 결합된다. 물리적 인터페이스 회로(56)는 버스 구조(58)에 결합된다.
도 2에 도시된 링크 회로(10)는 들어오는 모든 등시성 및 비동기 데이터를 위한 단일 FIFO(34), 외향 데이터를 위한 등시성 데이터 파이프(20) 전용 FIFO(30), 및 외향 데이터를 위한 비동기 데이터 파이프(26) 전용 FIFO(32)를 포함한다. FIFO(30과 32)로부터의 외향 데이터는 링크 코어(44)를 통해서 그리고 버스 구조(58) 상에서 멀티플렉서(40)에 의해 다중화 된다. FIFO(34)로부터의 내향 데이터는 아래에서 논의되는 바와 같이, 디멀티플렉서(42)에 의해 등시성 데이터 파이프(20) 또는 비동기 데이터 파이프(26)로 향하게 된다.
바람직하게, 내향 FIFO(34)는 33 비트의 폭을 갖고, 외향 FIFO(30)은 34 비트의 폭을 가지며, 외향 FIFO(32)는 33 비트의 폭을 갖는다. FIFO(30, 32 및 34) 각각에서, 비트 0에서 비트 31까지가 데이터를 운반하기 위해 지정되며, 비트 32가 패킷 경계 표시기를 운반하기 위해 지정된다. 외향 패킷에 대해서, 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26)는 각 패킷의 제 1 쿼드렛(quadlet)에 대해 비트 32를 논리적 고전압 레벨로 세트한다. 내향 패킷에 대해서, 링크 회로(44)는 각 패킷의 제 1 쿼드렛에 대해 비트 32를 논리적 고전압 레벨로 세트한다.
등시성 데이터 파이프(20)에 관련된 외향 FIFO(30)에서, 비트 33은 등시성 주기 경계를 나타내도록 지정된다. 등시성 데이터 파이프(20)는 각 등시성 주기에서 제 1 등시성 패킷의 제 1 쿼드렛에 대해 비트 33을 논리적 고전압 레벨로 세트한다. 링크 코어(44)가 논리적 고전압 레벨로 세트된 비트 33으로 데이터 쿼드렛을 수신할 때, 링크 코어는 다음 주기가 시작될 때까지 지연시켜, 비트 33이 논리적 고전압으로 세트된 다른 쿼드렛이 검출될 때까지 외향 FIFO(30)에 있는 모든 등시성 패킷을 전송한다.
애플리케이션(12와 14) 중 하나로부터 버스 구조(58)를 통해 애플리케이션 데이터를 전송하기 위하여, 등시성 데이터 파이프(20)와 비동기 데이터 파이프(26) 모두는 적절한 헤더 정보를 생성하여, 버스 구조(58)에 의해 요구되는 형태로 패킷을 형성하기 위하여 적절한 애플리케이션 데이터를 덧붙인다. 그런 다음 이들 패킷은 버스 구조(58)를 통한 전송을 위해 적절한 FIFO(30 및 32)에 저장된다.
비동기 데이터 파이프(26)는 본 출원과 동일한 날자에 출원되었으며, 1997년 9월 12에 국제 공개 번호 WO 97/33230로 해당 PCT 출원에서 공개된 "애플리케이션과 버스 구조 사이의 비동기 데이터 전송을 자동으로 관리하는 비동기 데이터 파이프"라는 명칭을 갖는 공동 계류중인 미국 특허 출원 번호 08/612,321에 기술된 바와 같이 구현되는게 바람직하다. 비동기 데이터 파이프(26)는 버스 구조를 통해 애플리케이션을 위한 비동기 데이터 전송 동작을 완성하는데 필요한 트랜잭션을 자동으로 생성한다. 비동기 데이터 파이프(26)는 애플리케이션에 의해 프로그램 되는 레지스터 파일(28)을 포함한다. 레지스터 파일(28)은 애플리케이션이 데이터 전송 동작을 위한 요구사항 및 특성을 프로그램하도록 허용한다. 레지스터 파일(28)은 버스 속도, 트랜잭션 레이블(label), 트랜잭션 코드, 목적지 노드 식별자, 목적지 옵셋(offset) 주소, 각 데이터 패킷의 길이, 패킷 카운터, 패킷 카운터 범프(bump) 필드, 제어 필드 및 상태 필드를 포함한다.
레지스터 파일(28)이 애플리케이션에 의해 프로그램되고 초기화된 이후에, 비동기 데이터 파이프(26)는, 레지스터 파일에 있는 정보를 트랜잭션 및 헤더를 생성하기 위한 템플릿(template)으로 사용하여 적절한 주소 범위에 걸쳐 데이터 전송 동작을 완성하는데 필요한 판독 또는 기록 트랜잭션을 자동으로 생성한다. 비동기 데이터 파이프(26)는, 각 데이터 패킷의 길이에 따라 각 트랜잭션에 대해 목적지 옵셋 주소 필드의 값을 자동으로 증가시키고, 증가 기능이 디스에이블(disable) 되어있지 않으면, 트랜잭션이 단일 주소에서 발생하도록 신호를 송신한다. 패킷 카운터 값은 생성될 잔여 트랜잭션의 개수를 나타낸다. 패킷 카운터 값은 각 데이터 패킷이 전송된 이후에 감소된다. 패킷 카운터 범프 필드는 애플리케이션이 패킷 카운터 범프 필드에 기록함으로써 패킷 카운터 값을 증가시키도록 허용한다.
다중 비동기 데이터 파이프는 다중 비동기 데이터 전송 동작을 관리하기 위하여 링크 회로(10) 내에 포함될 수 있다. 그러한 시스템에서, 각 비동기 데이터 파이프는 자기 자신의 고유 트랜잭션 레이블 값 또는 값의 범위를 갖는다. 멀티플렉서(40)는 비동기 데이터 파이프 및 등시성 데이터 파이프로부터의 트랜잭션과 데이터 패킷을 버스 구조(58) 상에 다중화 한다. 디멀티플렉서(42)는 버스 구조(58)로부터 신호와 데이터 패킷을 수신하고, 트랜잭션 코드 및 트랜잭션 레이블 값을 이용하여 그것들을 적절한 비동기 데이터 파이프 또는 등시성 데이터 파이프에 라우트(route)한다.
링크 회로(10)에는 단 하나의 등시성 데이터 파이프(20)가 있다. 이 등시성 데이터 파이프(20)는 다중 등시성 채널을 다룰 수 있으며, 그 데이터 인터페이스에서 등시성 데이터 파이프(20)는 하나 이상의 애플리케이션과 상호작용할 수 있다. 따라서, 등시성 데이터 파이프(20)는 하나 이상의 등시성 데이터 스트림을 지원할 수 있는데, 상기 각 데이터 스트림은 하나 또는 그 이상의 등시성 채널로 만들어진다. 아래에서 기술되는 바와 같은 대안적인 실시예에서, 등시성 데이터 파이프(20)는 비동기 데이터를 역시 송신하고 수신할 수 있으므로, 비동기 데이터 파이프의 기능들을 수행한다.
링크 코어(44)는 외향 FIFO(30과 32)로부터 데이터 패킷을 받아, 버스 구조(58)에 의해 요구되는 포맷에 부합하는 패킷들을 생성하여, 그 패킷들을 물리적 인터페이스(56)를 통하여 버스 구조(58) 상에 전송한다. 링크 코어(44)는 각 등시성 주기에서 외향 등시성 FIFO(30)로부터 등시성 주기 가치(worth)의 데이터를 전송한다. 등시성 데이터를 전송하지 않을 때, 링크 코어(44)는 외향 비동기 FIFO(32)로부터 비동기 패킷들을 전송한다.
링크 코어(44)는 수신된 모든 패킷을 내향 FIFO(34)에 전송한다. 만일 링크 코어(44)가 스누프(snoop) 모드로 동작하고 있지 않으면, 링크 코어(44)는 적절한 노드 식별자로 주소 지정된 비동기 패킷, 및 올바른 채널 번호를 갖는 등시성 패킷 만을 수신한다. 스누프 모드에서, 링크 코어(44)는 패킷의 목적지 노드 식별자 또는 등시성 채널 번호에 관계없이 모든 패킷을 수신한다.
등시성 데이터 파이프(20)는 버스 구조(58)를 거쳐 전송되어야 하는 애플리케이션 데이터를 위해 양방향 데이터 경로를 제공한다. 등시성 데이터 스트림은 하나 또는 그 이상의 등시성 채널 상에 있는 데이터로 만들어진다. 등시성 데이터 파이프(20)는 임의 개수의 등시성 채널에 있는 데이터를 포함하는, 어떠한 임의의 등시성 데이터 스트림 상에서 동작할 수 있다. 등시성 데이터 파이프(20)는 버스(16)로부터 외향 등시성 FIFO(30)로 향하는, 또는 수신 FIFO(34)에서 버스(16)로 향하는 등시성 데이터 스트림 상에 동작하는 프로그램 가능한 시퀀서이다.
전송된 각 데이터의 쿼드렛에 대해, 등시성 데이터 파이프(20)는 필요에 따라 데이터를 조작하기 위하여 미리 결정된 수의 명령어를 실행시킨다. 이들 명령어는 등시성 데이터 블록 패킷 상에 동작할 수 있다. 버스 구조(58) 상에 출력될 데이터를 보낼 때, 등시성 데이터 파이프(20)에 의해 출력된 데이터 스트림은 등시성 데이터 파이프(20)에 입력된 데이터 스트림 및 등시성 데이터 파이프(20)에 의해 데이터 상에 수행된 조작 모두에 종속적이다. 유사한 방법으로, 버스 구조(58)로부터 데이터를 수신할 때, 등시성 데이터 파이프(20)에 의해 버스(16)에 출력된 데이터 스트림은 등시성 데이터 파이프(20)에 입력된 데이터 스트림 및 등시성 데이터 파이프(20)에 의해 데이터 상에 수행된 조작에 종속적이다.
등시성 데이터 파이프(20)는 등시성 데이터 파이프의 현재 동작 모드에 따라 등시성 데이터 전송을 시작하고 중지하는 몇 개의 스케듈링 특징을 지원한다. 올바른 프로그래밍으로, 등시성 데이터 파이프는 SCSI-3 직렬 버스 프로토콜 표준에 정의된 바와 같은 등시성 녹화(record) 데이터 포맷을 지원한다. 이 프로토콜은 재생시 정확하게 재생성 될 수 있도록 데이터를 녹화할 때 등시성 데이터 스트림을 어떻게 레이블 할 것인가를 정의한다. 등시성 데이터 파이프는 등시성 데이터 경로에 있는 프로그램 가능한 데이터 처리 엔진이다. 올바른 프로그래밍으로, 이 엔진은 등시성 녹화 포맷을 구현하며, 이외에도 쿼드렛을 삭제함으로써 데이터를 여과하거나, 버스 구조(58)에 전송된 또는 버스 구조(58)로부터 전송된 각 쿼드렛에 대해 특별한 동작을 수행하는 능력을 포함한다.
등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두를 위한 FIFO 인터페이스는 각각 FIFO(30 및 32)에 직접 결합된다. FIFO(30)은 등시성 데이터 파이프(20)에 의해 제어되는 데이터 경로에 전용이다. FIFO(32)는 비동기 데이터 파이프(26)에 의해 제어되는 데이터 경로에 전용이다. 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26)를 위한 링크 인터페이스는 멀티플렉서(40) 및 디멀티플렉서(42)를 거쳐 링크 코어(44)에 모두 결합된다. 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26)로부터 링크 코어(44)에 제공되는 데이터는 링크 코어 기능에 의해 요구되는 포맷으로 존재한다. 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두는 링크 코어(44)로부터 오는 데이터가 링크 코어 규격에 의해 정의된 포맷으로 존재하도록 기대한다. 만일 추가적인 논리 블록들이 시스템 내에 포함되면, 각 논리 블록은 멀티플렉서(40) 및 디멀티플렉서(42)를 통해 링크 코어(44)에 결합된다. 예를 들어, 다중 비동기 데이터 파이프는 시스템 내에 포함될 수 있을 것이다. 다중 비동기 데이터 파이프를 구비하는 시스템에서, 비동기 데이터 파이프 각각은 FIFO(32)를 통하여 멀티플렉서(40)에 결합된다. 그러한 시스템에서, 추가적인 멀티플렉서는 데이터 패킷을 FIFO(32)에 다중화하기 위해 비동기 데이터 파이프와 FIFO(32) 사이에 포함된다.
데이터가 등시성 데이터 파이프(20)에서부터 인가될 때, 멀티플렉서(40)는 데이터가 등시성 데이터 파이프로부터 가용할 때 멀티플렉서(40)는 채널마다 등시성 주기 당 하나의 데이터 패킷을 전송한다는 것을 인식한다. 링크 코어(44)로부터 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26)에 보내진 데이터는 FIFO(34) 및 디멀티플렉서(42)를 거쳐 라우트 된다. 디멀티플렉서(42)는 패킷들을 링크 코어(44)로부터 등시성 데이터 파이프(20)나 비동기 데이터 파이프(26) 중 적절한 하나에 라우트 할 때 어떠한 정보도 변경하지 않는다. 링크 코어에 의해 생성된 모든 정보는 목적지 논리 블록에 보내진다. 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26)는 데이터가 애플리케이션(12 및 14) 중 하나에 전송되기 이전에 링크 코어(44)로부터의 데이터에 대한 필요한 모든 조작을 수행할 것인데, 상기 조작은 버스 구조(58)를 위한 프로토콜에 의해 요구되는 헤더 정보를 스트리핑하는 것(stripping)을 포함할 것이다. 외향 데이터에 대해, 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두는 링크 코어(44)에 의해 요구되는 것과 같은 적절한 형태로 존재하도록 애플리케이션으로부터의 데이터를 준비한다. 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두는 적절한 헤더 정보를 생성하여, 데이터를 멀티플렉서(40)를 통하여 링크 코어(44)에 보내기 이전에 상기 헤더 정보를 애플리케이션으로부터의 데이터 속에 집어넣는다.
등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두를 위해, 링크 인터페이스는 링크 코어(44) 기능의 요구사항에 부합하는 포맷으로 데이터를 생성하고 소비한다. 데이터 송신 동작 동안에, 등시성 데이터 파이프(20)는 요구되는 버스 구조 특정 헤더 정보를 생성하여, 링크 코어(44)에 의해 요구되는 바와 같이, 그것을 애플리케이션으로부터의 데이터 속에 삽입한다. 데이터 수신 동작 동안에, 링크 코어(44)로부터 등시성 데이터 파이프(20) 또는 비동기 데이터 파이프(26) 중 어느 하나로 이동하는 데이터에 대해, 등시성 데이터 파이프(20) 및 비동기 데이터 파이프(26) 모두는 링크 코어(44)에 의해 제공된 포맷으로 그 데이터를 받아들인다. 즉, 링크 코어(44)로부터 등시성 데이터 파이프(20) 또는 비동기 데이터 파이프(26)로 데이터를 송신하는데는 아무런 데이터 조작도 요구되지 않는다.
단 하나의 논리 블록이 시스템 내에 포함될 때, 그 논리 블록은 링크 코어(44)에 직접 연결될 수 있다. 시스템 내에 다수의 논리 블록이 있을 때, 그 시스템은 논리 블록들과 링크 코어(44) 사이에 적절한 멀티플렉서(40) 및 디멀티플렉서(42)를 포함한다. 멀티플렉서(40)는 다수의 논리 블록의 링크 인터페이스에서 데이터를 받고, 그 데이터를 링크 코어(44)를 통하여, 버스 구조(58) 상에 하나의 패킷씩 다중화하는 것을 책임진다. 이 정보는 특정의 애플리케이션이며, 전송 동작에 의해 세트된 우선 순위로 버스 구조에 라우트 된다. 각 등시성 데이터 패킷은 멀티플렉서(40)에 의해 그 적절한 시간 기간 동안에 보내진다. 디멀티플렉서(42)는 그 패킷을 적절한 논리 블록(20 또는 26)에 라우트하기 위하여 버스 구조(58)로부터 수신된 각 패킷의 트랜잭션 코드 및 채널 번호 필드에 있는 값을 사용한다. 만일 하나의 등시성 데이터 파이프(20) 및 하나의 비동기 데이터 파이프(26)만이 존재하면, 트랜잭션 코드만을 가지고서도 그 패킷을 적절하게 라우트 할 수 있다. 디멀티플렉서(42)는 패킷이 비동기 데이터이며, 비동기 데이터 파이프로 라우트 되어야만 하는가를 결정하기 위하여 먼저 상기 트랜잭션 코드를 읽을 것이다. 만일 시스템 내에 하나 이상의 비동기 데이터 파이프가 존재하면, 그 패킷을 올바른 비동기 데이터 파이프에 라우트하기 위하여 비동기 응답 패킷 헤더 중 트랜잭션 레이블에 있는 값을 사용한다.
본 발명의 등시성 데이터 파이프는 해당 FIFO와 링크 코어(44) 사이의 양방향 데이터 경로이다. 적절한 프로그래밍으로, 등시성 데이터 파이프는 SCSI-3 직렬 버스 프로토콜(SBP) 표준에 문서화된 바와 같은 등시성 데이터 녹화 포맷을 지원하며, 등시성 스트림에 있는 데이터의 프로그램 가능한 조작을 허용한다.
해당 FIFO(30)를 통해 링크 코어(44)에 데이터를 전송할 때, 또는 디멀티플렉서(42)로부터 데이터를 수신할 때, 등시성 데이터 파이프(20)는 각 데이터 쿼드렛에 대해 독립적으로 동작한다. 등시성 데이터 파이프(20)는 필요에 따라 데이터를 조작하기 위하여 각 쿼드렛에 대해 프로그램 가능한 수의 명령어들을 수행한다. 등시성 데이터 파이프(20)에 의해 수행될 수 있는 가능한 명령어는 명령어 세트 내에 포함되며, 상기 명령어 세트는 아래에서 자세하게 논의될 것이다. 등시성 데이터 파이프(20)는 독립적인 전용 레지스터 파일(24)을 역시 포함하는데, 상기 파일은 역시 아래에서 자세하게 논의될 것이다.
만일 등시성 데이터 파이프(20)가 데이터를 전송하고 있는 동안에 버스 리셋(reset)이 발생하면, 등시성 데이터 파이프(20) 동작은 다음 주기 시작 패킷이 버스 구조(58) 상에 나타날 때 그만 둔 곳에서 정확히 다시 시작한다. 등시성 데이터의 처리가 즉시 다시 시작한다 할지라도, 상기 내장된 애플리케이션은 IEEE 1394 표준 및 소비자 장치를 위한 IEC 표준에 정의된 바와 같이, 버스 리셋 이전에 사용 중이던 임의의 채널 번호, 대역폭 및 임의의 접속을 재 할당한다는 점을 유의하라.
등시성 데이터 파이프(20)는 도 3에 도시된 바와 같이 독립적인 전용 레지스터 파일에 의해 제어된다. 이 레지스터 파일은 발신 애플리케이션에 의해 프로그램되며, 버스 구조(58)를 거쳐 등시성 데이터 전송 동작을 완성하는데 필요한 헤더와 명령어 및 트랜잭션을 생성하는데 사용된다. 레지스터 파일(80)은 16 진수로 0에서 77까지 번호가 메겨진 120 바이트의 데이터를 포함한다. 도 3에서, 레지스터 파일(80)은 30개의 수평 행을 갖는 표 형태로 도시되며, 각 행은 4 바이트의 데이터를 포함한다. 옵셋 열(82)은 레지스터 파일(80)의 시작 주소로부터 각 행의 시작 바이트의 옵셋을 보여주기 위하여 도 3에 포함되어 있다. 판독/기록 열(84)은 각 행의 필드들이 판독 및 기록이 가능한지 또는 판독만이 가능한지를 보여주기 위하여 역시 포함된다.
주기 시간 필드 cycle_time은 레지스터 파일(80)의 바이트 0-2 내에 있는 20비트의 필드이다. 주기 시간 필드는 판독 및 기록이 가능하다. 아래에서 논의될 제어 이벤트(event) 필드가 주기 번호 값을 포함할 때, 주기 시간 필드는 등시성 데이터 파이프(20)가 등시성 데이터의 전송을 시작하고 정지할 주기 시간을 보유한다.
제어 필드는 레지스터 파일(80)의 바이트 4-7 내에 있는 32 비트의 필드이다. 제어 필드는 판독 및 기록이 가능하다. 제어 필드는 이벤트 필드, 출력 인에이블(enable) 필드, 오류 시 정지 필드, 전송 인에이블 필드 및 진행(go) 필드를 포함한다. 이벤트 필드는 제어 레지스터의 비트 28-31에 있는 4 비트의 필드이다. 이벤트 필드의 값은 트리거(trigger)로서 사용하기 위하여 등시성 데이터 파이프(20)를 위한 버스 이벤트를 정의한다. 이 버스 이벤트가 발생할 때, 등시성 데이터 파이프는 보류 채널 마스크(mask) 레지스터 pending_ch_mask에 저장된 값을 현행 채널 마스크 레지스터 ch_mask에 전송한다. 이벤트 필드는 아래 표 I에 도시된 바와 같은 가능한 버스 이벤트를 위해 인코드 된다.
표 I
의미
0 즉시
1 주기 번호
2 예약됨
3 예약됨
4-F 예약됨
따라서, 이벤트 필드가 0 값을 가질 때, 등시성 데이터 파이프는 즉시 시작하거나 정지할 것이다. 이벤트 필드가 1 값을 가질 때, 등시성 데이터 파이프는 위에서 논의된 바와 같이 주기 시간 필드에 있는 값에 의해 규정된 대로 시작하거나 정지할 것이다.
출력 인에이블 필드는 제어 필드의 비트 4-7에 있는 4 비트의 필드이다. 출력 인에이블 필드 중 임의의 비트가 논리적 고전압 레벨로 세트되면, 해당 직접 메모리 엑세스(DMA:Direct Memory Access) 채널은 프리필(prefill) FIFO가 계속 채워져 있는 것을 보장할 것이고, 등시성 데이터 파이프(20)는 외향 FIFO(30)에 빈 쿼드렛이 있을 때마다 제어 저장 출력 명령어를 보낼 것이다.
오류 시 정지 필드는 제어 필드의 비트 3에 있는 1 비트의 필드이다. 상기 오류 시 정지 비트가 논리적 고전압 레벨로 세트될 때, 등시성 데이터 파이프(20)는 채널 마스크 레지스터의 값을 논리적 저전압 레벨로 세트함으로써 발생된 제 1 오류 시 현재의 동작을 정지할 것이다. 데이터를 보낼 때 가능한 오류들은 FIFO 언더런(underrun) 또는 주기 시작 패킷 실종을 포함한다. 데이터를 수신할 때 가능한 오류들은 FIFO 오버런(overrun), 주기 시작 패킷 실종, 데이터 CRC 오류, 패킷 포맷 오류 또는 채널 실종 오류를 포함한다.
전송 인에이블 필드는 제어 필드의 비트 1에 있는 1 비트 필드이다. 전송 인에이블 비트가 논리적 고전압 레벨로 세트될 때, 등시성 데이터 파이프(20)는 출력 제어 저장 프로그램의 실행을 시작할 것이다. 진행 비트가 논리적 저전압 레벨에 있거나 또는 출력 제어 저장 프로그램이 복귀 명령어를 실행할 때. 전송 인에이블 비트는 클리어(clear)될 것이다.
진행 필드는 제어 필드의 비트 0에 있는 1 비트의 필드이다. 애플리케이션은 등시성 데이터 파이프가 이벤트를 감시하도록 허용하기 위하여 진행 비트를 논리적 고전압 레벨로 세트한다. 상기 규정된 이벤트 조건이 만족되면, 등시성 데이터 파이프(20)는 보류 채널 마스크 레지스터의 내용물을 현행 채널 마스크 레지스터에 전송한다.
상태 필드는 레지스터 파일(80)의 바이트 8-B 내에 있는 32 비트의 필드이다. 상태 필드는 판독 및 기록이 가능하다. 상태 필드는 등시성 데이터 파이프(20)의 현재 상태를 보고하는 상태 정보를 포함한다. 상태 필드의 비트 0-7은 제어 필드의 비트 0-7에 대응하며, 출력 필드, 오류 시 정지 필드, 전송 인에이블 필드 및 활성 필드를 포함한다. 상태 레지스터에 있는 이들 필드의 값은 등시성 데이터 파이프(20)의 현재 동작 상태를 나타낸다. 상태 필드의 비트 8-27은 예약되어 있다. 상태 필드 내에서, 활성 필드는 상태 필드의 비트 0에 있는 1 비트의 필드인데, 상기 활성 필드는 등시성 데이터 파이프가 활성 상태인지 아닌지를 나타낸다. 바람직하게는, 활성 비트가 논리적 고전압 레벨이면, 등시성 데이터 파이프는 현재 활성 상태이며, 데이터를 전송하고 있다. 활성 비트가 논리적 저전압 레벨이면, 등시성 데이터 파이프는 현재 활성 상태가 아니다. 오류 필드는 상태 필드의 비트 28-31에 있는 4 비트의 필드이다. 등시성 데이터 파이프(20)가 오류 때문에 동작을 중지하면, 오류 필드는 오류 상태를 나타내는 값을 포함한다. 오류 필드는 활성 비트가 논리적 저전압 레벨일 때만 유효하다. 오류 필드에 대한 가능한 값과 이들에 대응하는 오류가 아래 표 II에 나열되어 있다.
표 II
오류
0 FIFO 오버런
1 FIFO 언더런
2 주기 시작 패킷 실종
3 데이터 CRC 오류
4 주기 시작 패킷 실종
5 패킷 포맷 오류
보류 채널 마스크 하이(high) 필드 pending_ch_mask_hi는 레지스터 파일(80)의 바이트 20-23 내에 있는 4 바이트의 필드이다. 보류 채널 마스크 로우(low) 필드 pending_ch_mask_lo는 레지스터 파일(80)의 바이트 24-27 내에 있는 4 바이트의 필드이다. 상기 두 개의 보류 채널 마스크 필드 pending_ch_mask_hi 및 pending_ch_mask_lo는 함께 등시성 데이터 파이프(20)가 수신할 등시성 채널 번호의 마스크를 포함하는 8 바이트의 필드를 형성한다. 등시성 데이터 파이프(20)는 프로그램된 트리거(trigger) 이벤트가 발생할 때 이 필드의 내용물을 채널 마스크 레지스터에 전송한다. 보류 채널 마스크 필드의 비트 배정은 IEEE 1394 표준의 8장에 정의된 채널 가용 레지스터의 비트 배정과 동일하다.
현행 채널 마스크 하이 필드 ch_mask_hi는 레지스터 파일(80)의 바이트 28-2B 내에 있는 4 바이트의 필드이다. 현행 채널 마스크 로우 필드 ch_mask_lo는 레지스터 파일(80)의 바이트 2C-2F 내에 있는 4 바이트의 필드이다. 상기 두 개의 현행 채널 마스크 필드 ch_mask_hi 및 ch_mask_lo는 현재 동작 중인 채널 마스크를 포함하는 8 바이트의 필드를 함께 형성하고, 현행 채널 마스크 필드들의 각 비트는 등시성 채널을 나타낸다. 채널 마스크 필드는 트리거 이벤트가 발생할 때 오직 보류 채널 마스크 필드로부터 로딩된다. 등시성 데이터 파이프(20)는 현행 채널 마스크 필드에 있는 해당 비트가 논리적 고전압 레벨로 세트된 수신된 등시성 채널 번호를 무시한다.
제어 저장 출력 필드 CS_output는 레지스터 파일(80)의 바이트 34 내에 있는 한 바이트의 필드이다. 제어 저장 출력 필드 CS_output는, 외향 FIFO(30)에 빈 쿼드렛이 존재하고 등시성 데이터 파이프(20)가 등시성 데이터 패킷을 현재 수신하고 있지 않을 때마다, 등시성 데이터 파이프(20)가 발송하는 제어 저장 메모리 내의 제어 저장 주소를 포함한다. 제어 저장 메모리는 등시성 데이터 파이프가 데이터 스트림 상에 그 동작을 수행하는데 사용하는 명령어를 포함한다.
제어 저장 주기 시작 주소 필드 CS_addr_CS는 레지스터 파일(80)의 바이트 37 내에 있는 한 바이트의 필드이다. 제어 저장 주소 필드 CS_addr_CS는, 주기 시작 패킷이 수신될 때 등시성 데이터 파이프가 분기하는 제어 저장 주소를 포함한다. 제어 저장 프로그램에 사용 가능한 제 1 쿼드렛은 주기 시작 패킷의 제 1 쿼드렛이다. 제어 저장 주소 필드 CS_addr_0에서 CS_addr_63까지는 레지스터 파일(80)의 바이트 38 내지 바이트 77 내에 있는 각 한 바이트의 필드이다. 이들 필드는, 제어 저장 주소 필드의 바이트 수와 일치하는 등시성 채널 상에 데이터를 수신할 때 등시성 데이터 파이프가 분기할 제어 저장 주소 저장 장치를 포함한다. 예를 들어, 제어 저장 주소 필드 CS_addr_10은, 등시성 채널 번호 10 상에 데이터를 수신할 때 등시성 데이터 파이프가 분기할 제어 저장 장치에 있는 주소를 포함한다. 등시성 데이터 파이프는 제어 저장 주소 필드의 해당 값이 FFh인 모든 등시성 채널을 무시한다. 제어 저장 주소 필드의 작용은 등시성 데이터를 전송할 때와 수신할 때 동일하다는 점에 유의해야 한다.
시스템에는 64개의 잠재적인 등시성 채널 0-63이 있다. 제어 저장 주소 필드 CS_addr_0 내지 CS_addr_63 각각은 등시성 채널에 대응하며, 그 등시성 채널을 위한 명령어가 시작하는 제어 저장 메모리에 있는 주소를 포함한다. 따라서, 등시성 데이터 파이프(20)가 특정 등시성 채널 상의 데이터를 수신할 때, 등시성 데이터 파이프(20)는 그 채널에 대한 데이터를 조작하는 명령어들을 취득하기 위하여 해당 제어 저장 주소에 포함된 주소 필드로 분기한다. 제어 저장 주소 필드의 해당 값이 FFh인 등시성 채널은 무시된다.
등시성 데이터 스트림은 하나 또는 그 이상의 등시성 채널로 만들어진다. 등시성 데이터 파이프(20)는 현행 채널 마스크 필드의 해당 비트가 논리적 고전압 레벨로 세트된 등시성 채널들을 수신한다. 등시성 데이터 파이프(20)는 제어 저장 출력 CS_output 레지스터의 값에 의해 지시되는 제어 저장 주소에서 시작하는 제어 저장 프로그램에 따라 등시성 데이터를 전송한다. 예를 들어, 만일 등시성 채널 3, 4, 및 5가 버스 구조(58) 상에 존재하고, 애플리케이션이 등시성 데이터 파이프(20)로 하여금 이들 등시성 채널에 포함된 데이터에 어떠한 조작을 수행함이 없이 채널 3과 5를 단일 스트림으로 조합하기를 원하면, 애플리케이션은 예를 들어 "10h"의 값을 제어 저장 주소 필드 CS_addr_3 및 CS_addr_5로 프로그램 한다. 제어 저장 주소 "10h"에서, 애플리케이션은 표 III에 보여준 것과 같은 명령어 시퀀스를 로딩한다.
표 III
SHIFTI BUS_IN, 16, D0 ;데이터 길이 값을 얻기 위하여 자리 이동
ADDI D0, 3, D0 ;랩 업(wrap up)
ANDI D0, FFFC, D0 ;카운트 플러스 패드를 얻기 위하여 마스크
BZ HALT ;데이터 길이가 영이면 수행
CONT: MOVE BUS_IN, DATA_0 ;데이터 워드를 DMA 채널 0으로 이동
SUBI D0, 4, D0 ;바이트 카운트를 감소시킴
BNZ CONT ;영이 아니면 계속
HALT: RET ;이 패킷을 마지막으로 종료
그 다음에 애플리케이션은 "28h"의 값을 보류 채널 마스크로 프로그램하고서, "1" 값을 제어 필드에 기록한다. 제어 필드에 있는 이 값은 출력을 위해 프로그램된 DMA 채널이 없는 즉각적인 이벤트를 나타낸다. 그 결과는 등시성 데이터 파이프(20)가 보류 채널 마스크 필드의 값을 현행 채널 마스크 필드로 즉시 자리이동 시키는 것이다. 비트 3과 비트 5가 현행 채널 마스크 필드에서 논리적 고전압 레벨로 이제 세트되어 있기 때문에, 등시성 데이터 파이프(20)는 주소 "10h"에서 시작하는 제어 저장 프로그램에 따라 등시성 채널 3과 채널 5의 처리를 시작할 것이다. 이 예에서 제어 저장 필드 CS_addr_3과 CS_addr_5 모두는 "10h"의 값을 포함하여, 등시성 채널 3과 채널 5 모두에 대한 데이터는 주소 "10h"에서 시작하는 동일한 제어 저장 명령어 시퀀스에 따라 처리된다.
표(Ⅲ)에 도시된 제어 저장 프로그램은 데이터를 수신 FIFO(34)로부터 버스(16) 상의 DMA 채널 0에 이동시키는 프로그램이다. 등시성 데이터 파이프(20)는 현행 채널 마스크 필드에 있는 비트 4가 논리적 고전압 레벨로 세트되어 있지 않기 때문에 등시성 채널 4 상에 수신된 임의의 데이터를 무시한다.
표(Ⅲ)에 도시된 제어 저장 프로그램의 마지막 라인에는 복귀 명령어가 포함된다. 모든 경우에서, 복귀 명령어는 등시성 데이터 파이프(20)가 동일한 태스크를 수행하도록 하며 즉, 등시성 데이터 파이프는 스택(stack) 포인터의 값을 감소시키고, 그 스택 포인터가 현재 가리키고 있는 스택 내에 있는 명령어를 발송한다. 복귀 명령어가 수행될 때 만일 스택 포인터가 0이면, 등시성 데이터 파이프(20)는 다음 인에이블된 등시성 채널이 수신되거나 또는 주기 시작 패킷이 수신될 때까지 동작을 중단한다. 만일 등시성 데이터 파이프(20)가 출력 제어 저장 프로그램을 수행하고 있으면, 복귀 명령어는 등시성 데이터 파이프가 상기 출력 프로그램이 수신된 등시성 패킷에 의해 인터럽트 되었던 명령어에서 동작을 다시 시작하도록 할 것이다.
실제로 등시성 데이터 파이프는 수신된 등시성 데이터 스트림에 대해 동작을 수행하도록 프로그램될 수 있는 프로그램 가능한 시퀀서이다. 등시성 데이터 파이프 시퀀서는 도 4에 도시된 바와 같은 레지스터 파일을 포함한다. 레지스터 파일(90) 내에서, 즉시 값 레지스터 IMM은 레지스터 코드가 "0"인 34 비트의 레지스터인데, 상기 레지스터는 단지 소스 레지스터일 수 있다. 즉시 값 레지스터 IMM은 명령어의 34 비트의 즉시 필드가 주어진 동작을 위한 소스 데이터를 포함함을 규정한다.
버스 입력 레지스터 BUS_IN은 레지스터 코드가 "1"인 32 비트의 레지스터인데, 상기 레지스터는 단지 소스 레지스터일 수 있다. 버스 입력 레지스터 BUS_IN을 동작의 소스로서 엑세스하면 등시성 데이터 파이프(20)를 통해 수신 FIFO(34)로부터 하나의 데이터 쿼드렛을 클록(clock)한다. 버스 입력 레지스터 BUS_IN에의 후속 엑세스는 입력 데이터 스트림에 있는 후속 데이터 쿼드렛을 엑세스한다.
버스 출력 레지스터 BUS_OUT은 레지스터 코드가 "2"인 34 비트의 레지스터인데, 상기 레지스터는 단지 목적지 레지스터일 수 있다. 버스 출력 레지스터 BUS_OUT을 동작의 목적지로서 엑세스하면 하나의 데이터 쿼드렛을 등시성 데이터 파이프(20)를 통해 외향 등시성 FIFO(30)에 클록한다. 버스 출력 레지스터 BUS_OUT에의 후속 엑세스는 출력 데이터 스트림에 있는 후속 데이터 쿼드렛을 클록한다.
데이터 레지스터 D0-D7은 레지스터 코드가 각각 "4", "5", "6", "7", "8", "9", "A" 및 "B"인 각각이 34 비트의 레지스터인데, 상기 레지스터들은 소스 또는 목적지 레지스터일 수 있다. 데이터 레지스터 D0-D7은 임의의 동작을 위한 소스 또는 목적지 레지스터로 사용될 수 있다.
데이터 인터페이스 레지스터 DATA_0-DATA_3은 레지스터 코드가 각각 "10", "11", "12" 및 "13"인 각각이 32 비트의 레지스터인데, 상기 레지스터들은 소스 또는 목적지 레지스터일 수 있다. 데이터 인터페이스 레지스터 DATA_0-DATA_3 각각은 서로 다른 DMA 채널을 엑세스한다. 이들 레지스터의 사용은 출력 인에이블 필드 DMA_out_en의 프로그래밍과 일관성이 유지되어야 한다.
등시성 데이터 파이프(20)는 8개의 한 바이트 레지스터의 선형 목록으로 만들어진 스택을 구현한다. 상기 스택 레지스터들은 서브루틴(subroutine) 명령어 및 복귀 명령어로 분기하는 동안에만 엑세스된다. 본 발명의 바람직한 실시예에서, 각 스택 레지스터 S0-S7은 각자의 레지스터 주소 0-7을 갖는다. 대안적으로, 스택 레지스터의 실제 개수는 특정 구현에 따라 변할 것이다. 제어 저장 프로그램이 로딩될 때, 스택 포인터는 0 값으로 자동으로 초기화됨으로써, 해당 스택 레지스터 S0을 가리킨다.
등시성 데이터 파이프(20)가 서브루틴으로 분기할 때, 등시성 데이터 파이프(20)는 스택 포인터를 감소시키고, 다음 제어 저장 명령어의 주소를 현행 스택 레지스터에 저장하고, 그 스택 포인터의 값을 증가시킨 다음, 소스 필드의 저차수 바이트에 포함된 제어 저장 명령어로 분기한다. 등시성 데이터 파이프(20)가 복귀 명령어를 수행할 때, 등시성 데이터 파이프는 스택 포인터를 감소시킨 다음, 등시성 데이터 파이프(20)는 현행 스택 레지스터에 포함된 제어 저장 명령어로 분기한다. 만일 스택 포인터가 0 값을 포함할 때 감소되면, 스택 포인터의 값은 0으로 남을 것이며, 등시성 데이터 파이프(20)가 등시성 데이터 패킷 또는 주기 시작 패킷을 수신할 때까지 동작을 정지할 것이다. 등시성 데이터 파이프가 출력 제어 저장 프로그램을 수행 중에 있으며, 주기 시작 패킷 또는 인에이블된 등시성 채널이 수신될 때, 등시성 데이터 파이프(20)는 출력 제어 저장 프로그램의 수행을 인터럽트하고, 스택에 현행 명령어의 주소를 저장하고, 스택 포인터를 감소시킨 다음, 수신된 패킷을 처리하기 위하여 적절한 위치로 발송할 것이다.
각 등시성 제어 저장 명령어는 OpCode 필드, 소스 필드, 목적지 필드, 즉시 값 필드, 즉시 필드 및 예약 필드를 포함한다. OpCode 필드는 도 5를 참조하여 아래에서 논의되는 것처럼 수행하고자 하는 동작을 기술하는 6 비트의 필드이다. 소스 필드 src는 규정된 동작을 위한 소스 값을 포함하는 레지스터 또는 즉시 값을 규정하는 4 비트의 필드이다. 목적지 필드 dest는 규정된 동작을 위한 목적지 레지스터를 규정하는 4 비트의 필드이다. 즉시 값 필드 imm_val은 논리적 고전압 레벨로 세트되었을 때 연산자 중 하나가 즉시 필드에 포함됨을 규정하는 1 비트의 필드이다. 즉시 필드 imm은 만일 즉시 값 필드 imm_val이 논리적 고전압 레벨로 세트되면, 동작을 위해 사용할 즉시 값을 규정하는 34 비트의 필드이다. 본 발명의 바람직한 실시예에서, 예약 필드는 등시성 데이터 파이프(20)의 대안적 실시예에 사용하기 위해 예약된 13 비트를 포함한다.
데이터 스트림의 조작 동안에 등시성 데이터 파이프 시퀀서에 의해 구현되며, OpCode 필드에 포함될 수 있는 동작 코드는 아래 표 IV에 나열되어 있다. 등시성 데이터 파이프(20)는 데이터 레지스터 D0-D7, 외향 등시성 FIFO(30) 및 목적지로 구성된 임의의 DMA 채널을 포함하여, 이들 동작의 결과를 도 4에 도시된 바와 같이 목적지가 될 수 있는 임의의 레지스터에 저장할 것이다.
표 IV
이름 간략 기억 값(16진수) 기능
MOVE MOVEMOVEI 0 src 레지스터에 있는 값을 dest 레지스터로 이동
MOVEMultiple MOVEM 1 소스와 목적지 사이에 한 블록의 쿼드렛을 이동(예, DMA 레지스터와 외향 FIFO 사이)
2
3
AND ANDANDI 4 src 레지스터에 있는 값을 즉시 값 또는 dest 레지스터에 있는 값에 AND 동작을 수행하고, 그 결과를 dest 레지스터에 저장
OR ORORI 5 src 레지스터에 있는 값을 즉시 값 또는 dest 레지스터에 있는 값에 OR 동작을 수행하고, 그 결과를 dest 레지스터에 저장
SHIFT SHIFTSHIFTI 6 src 레지스터에 있는 값을 즉시 값 또는 dest 레지스터에 있는 값만큼 SHIFT 동작을 수행하고, 그 결과를 dest 레지스터에 저장; 양수 값은 등시성 데이터 파이프를 오른쪽으로 자리이동; 등시성 데이터 파이프는 입력 비트들을 0으로 채움.
COMPARE CMPCMPI 7 src 레지스터에 있는 값으로부터 즉시 값을 빼거나, 또는 dest 레지스터에 있는 값으로부터 src 레지스터에 있는 값을 빼되, 그 결과를 저장하지 않음; 빼기의 결과에 따라 Z 비트를 세트
ADD ADDADDI 8 src 레지스터에 있는 값을 즉시 값 또는 dest 레지스터에 있는 값에 더하고, 그 결과를 dest 레지스터에 저장
SUBTRACT SUBSUBI 9 src 레지스터에 있는 값으로부터 즉시 값을 빼거나, 또는 dest 레지스터에 있는 값으로부터 src 레지스터에 있는 값을 빼어, 그 결과를 dest 레지스터에 저장
MULTIPLY MULTMULTI A 즉시 값을 src 레지스터에 있는 값으로 곱하거나, 또는 src 레지스터에 있는 값을 dest 레지스터에 있는 값으로 곱하여, 그 결과를 dest 레지스터에 저장.
B
C
D
E
F
BRANCH BRA 10 imm 필드에 포함된 제어 저장 주소로 분기
BRANCHON ZERO BZ 11 이전 동작에 의한 dest 필드의 결과가 0이면, imm 필드에 포함된 제어 저장 주소로 분기
BRANCH ON NOT ZERO BNZ 12 이전 동작에 의한 dest 필드의 결과가 0이 아니면, imm 필드에 포함된 제어 저장 주소로 분기
13
BRANCH TO SUB BSR 14 스택 포인터를 감소시키고, 다음 명령어의 주소를 스택에 저장하고, imm 필드에 포함된 CS 주소로 분기
BRANCH TO SUB ON ZERO BSRZ 15 이전 동작에 의한 dest 필드의 결과가 0이었으면, 스택 포인터를 감소시키고, 다음 명령어의 주소를 스택에 저장하고, imm 필드에 포함된 CS 주소로 분기
BRANCH TO SUB ON NOT ZERO BSRNZ 16 이전 동작에 의한 dest 필드의 결과가 0이 아니었으면, 스택 포인터를 감소시키고, 다음 명령어의 주소를 스택에 저장하고, imm 필드에 포함된 CS 주소로 분기
17
RETURN RET 18 스택 상에 포함된 주소에 있는 명령어로 분기; 스택 포인터 증가시킴
표 IV에 나열된 대부분의 동작에는, 2개의 연상 기억 명령어가 포함된다. "I"를 포함하는 연상 기억 명령어는 그 동작이 즉시 값을 사용하여 수행되어야 함을 규정한다. "I"를 포함하지 않는 연상 기억 명령어는 그 동작이 소스와 목적지 레지스터에 있는 값들 사이에 수행되어야 함을 규정한다.
MOVE 동작이 수행될 때, 소스 필드 src에 규정된 레지스터에 있는 값은 목적지 필드 dest에 규정된 레지스터로 이동된다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고 차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고 차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다.
MOVE 다중 동작이 수행될 때, 카운트 값에 의해 규정된 다수의 데이터 쿼드렛들은 소스 필드 src에 규정된 레지스터로부터 목적지 필드 dest에 규정된 레지스터로 이동된다. 카운트 값은 명령어의 즉시 필드에 규정된 레지스터에 저장된다. MOVE 다중 동작에 있어, 소스 필드 src에 규정된 레지스터는 데이터 인터페이스 레지스터 DATA_0 - DATA_3 중 하나인 것이 바람직한데, 상기 데이터 인터페이스 레지스터는 DMA 채널 또는 버스 입력 레지스터 BUS_IN에 엑세스한다. 이 동작에 있어 목적지 필드 dest에 규정된 레지스터는 데이터 인터페이스 레지스터 DATA_0 - DATA_3 중 하나인 것이 바람직한데, 상기 데이터 인터페이스 레지스터는 DMA 채널 또는 버스 출력 레지스터 BUS_OUT에 엑세스한다.
AND 동작 중에, 논리적 AND 동작은 소스 필드 src 및 목적지 필드 dest에 있는 값들에 대해 수행되며, 그 결과는 목적지 필드 dest에 규정된 레지스터에 저장된다. 이 명령어의 ANDI 형은 연산자의 하나로 목적지 필드에 있는 값 대신에 즉시 필드에 있는 값을 사용하고, 그 결과를 목적지 필드 dest에 규정된 레지스터에 저장한다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 두 레지스터가 34 비트 레지스터이면, AND 동작은 모든 34 비트에 대해 수행된다.
OR 동작 중에, 논리적 OR 동작은 소스 필드 src 및 목적지 필드 dest에 의해 규정된 레지스터에 있는 값들에 대해 수행되며, 그 결과는 목적지 필드 dest에 규정된 레지스터에 저장된다. 이 명령어의 ORI 형은 연산자의 하나로 목적지 필드에 있는 값 대신에 즉시 필드에 있는 값을 사용하고, 그 결과를 목적지 필드 dest에 규정된 레지스터에 저장한다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 두 레지스터가 34 비트 레지스터이면, OR 동작은 모든 34 비트에 대해 수행된다.
SHIFT 동작이 수행될 때, 목적지 레지스터 dest에 있는 값은 소스 레지스터 src에 있는 값에 의해 규정된 비트의 수만큼 자리이동 되고, 그 결과는 목적지 필드 dest에 규정된 레지스터에 저장된다. 양수의 자리이동 값은 목적지 레지스터에 있는 값을 최하위 비트를 향하여 오른쪽으로 자리이동하고, 0은 최상위 비트로부터 시작하여 좌측의 자리이동 된 비트들을 채우기 위하여 사용된다. 음수의 자리이동 값은 목적지 레지스터에 있는 값을 최상위 비트를 향하여 좌측으로 자리이동하고, 0은 최하위 비트로부터 시작하여 우측의 자리이동 된 비트들을 채우기 위하여 사용된다. 이 명령어의 SHIFTI 형은 소스 레지스터에 있는 값을 즉시 필드에 규정된 비트의 수만큼 자리이동하여, 그 결과를 목적지 필드에 규정된 레지스터에 저장한다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 두 레지스터가 모두 34 비트 레지스터이면, 자리 이동 동작은 단지 저차수의 32 비트에 대해서만 수행된다.
CMP 동작이 수행될 때, 소스 레지스터 src에 있는 값은 목적지 레지스터 dest에 있는 값으로부터 감산된다. 만일 CMP 동작의 결과가 양수 값이면, Z 비트는 논리적 고전압 레벨로 세트된다. 만일 CMP 동작의 결과가 음수 또는 0 값이면, Z 비트는 논리적 저전압 레벨로 세트된다. CMP 동작의 결과들은 어느 곳에도 저장되지 않는다. 이 명령어의 CMPI 형은 소스 레지스터 src에 있는 값으로부터 즉시 값을 빼고, 그 결과에 따라 위에 규정된 바와 같이 z 비트를 세트한다. 이 명령어는 역시 동작의 결과를 저장하지 않는다.
ADD 동작이 수행될 때, 소스 레지스터 src에 있는 값은 목적지 레지스터 dest에 있는 값에 더해지고, 그 결과는 목적지 레지스터 dest에 저장된다. 이 명령어의 ADDI 형은 소스 레지스터 src에 있는 값을 즉시 값에 더해서, 그 결과를 목적지 레지스터 dest에 저장한다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 레지스터가 모두 34 비트 레지스터이면, ADD 동작은 단지 저차수의 32 비트에 대해서만 수행된다.
SUB 동작이 수행될 때, 목적지 레지스터 dest에 있는 값은 소스 레지스터 src에 있는 값으로부터 감산되고, 그 결과는 목적지 레지스터 dest에 저장된다. 이 명령어의 SUBI 형은 소스 레지스터에 있는 값으로부터 즉시 값을 빼고, 그 결과는 목적지 레지스터 dest에 저장된다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 레지스터가 모두 34 비트 레지스터이면, SUB 동작은 단지 저차수의 32 비트에 대해서만 수행된다.
MULT 동작이 수행될 때, 소스 레지스터 src에 있는 값은 목적지 레지스터 dest에 있는 값과 곱해지고, 그 결과는 목적지 레지스터 dest에 저장된다. 이 명령어의 MULTI 형은 즉시 값을 소스 레지스터 src에 있는 값과 곱하고, 그 결과는 목적지 레지스터 dest에 저장된다. 만일 소스 필드 src에 규정된 레지스터가 34 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 32 비트 레지스터이면, 고차수의 2 비트는 손실될 것이다. 만일 소스 필드 src에 규정된 레지스터가 32 비트 레지스터이고, 목적지 필드 dest에 규정된 레지스터가 34 비트 레지스터이면, 고차수의 2 비트는 모두 논리적 저전압 레벨로 세트될 것이다. 만일 소스 필드 src 및 목적지 필드 dest에 규정된 레지스터가 모두 34 비트 레지스터이면, MULT 동작은 단지 저차수의 32 비트에 대해서만 수행된다.
BRANCH 동작이 수행될 때, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다.
BRANCH ON ZERO 동작이 수행될 때, 만일 마지막 계산 또는 이동 제어 저장 명령어의 결과가 0이었으면, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다.
BRANCH ON NOT ZERO 동작이 수행될 때, 만일 마지막 계산 또는 이동 제어 저장 명령어의 결과가 0이 아니었으면, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다
BSR 동작이 수행될 때, 다음 제어 저장 명령어의 주소가 스택에 쌓여지고, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다.
BSR ON ZERO 동작이 수행될 때, 만일 마지막 계산 또는 이동 제어 저장 명령어의 결과가 0이었으면, 다음 제어 저장 명령어의 주소가 스택에 쌓여지고, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다.
BSR ON NOT ZERO 동작이 수행될 때, 만일 마지막 계산 또는 이동 제어 저장 명령어의 결과가 0이 아니었으면, 다음 제어 저장 명령어의 주소가 스택에 쌓여지고, 등시성 데이터 파이프(20)는 소스 필드 src의 저차수 바이트에 포함된 제어 저장 주소로 분기한다. 소스 필드 src는 레지스터 또는 즉시 값을 규정할 수 있다.
RETURN 동작이 수행될 때, 마지막 제어 저장 주소는 스택으로부터 꺼내지고, 등시성 데이터 파이프(20)는 그 주소로 분기한다.
직렬 버스 프로토콜에 정의된 등시성 녹화 포맷은 버스 구조(58)를 거쳐 전송되는 바와 같이 등시성 데이터 스트림의 녹화를 위한 표준 포맷을 정의한다. 본 발명의 등시성 데이터 파이프(20)는 직렬 버스 프로토콜에 따라 수신된 등시성 데이터 스트림을 등시성 녹화 포맷으로 변환하도록 프로그램될 수 있다. 유사한 방법으로, 등시성 데이터 파이프는 등시성 녹화 포맷의 데이터 스트림으로부터 등시성 데이터 스트림을 생성하도록 또한 프로그램될 수 있다. 등시성 녹화 포맷의 데이터 스트림은 도 5에 도시되어 있다. 도 5에 도시된 데이터 스트림은 등시성 주기 경계 상에서 시작한다는 것을 유의해야한다.
도 5에서, 데이터 스트림(94)은 각 등시성 주기를 위해 채널 A 및 채널 B에 포함된 데이터 패킷을 포함한다. 옵셋 열(92)은 각 수평 행의 시작의 옵셋을 보여주기 위하여 도 5에 포함된다. 헤더 수평 행 각각은 4 바이트를 포함한다. 데이터 섹션은 그 데이터 패킷을 전송하는데 필요한 양만큼의 바이트를 포함할 것이다. 각 패킷에 대한 헤더는 제 2 필드, 주기 번호 필드, 및 주기 필드를 포함한다. 각 패킷 내의 각 채널에 대한 각 서브헤더는 data_length 필드, 태그(tag)필드 tg, 채널 필드, 데이터 필드 및 동기화 필드 sy를 포함한다. 그런 다음 상기 서브헤더의 뒤에는 패킷 내의 데이터 섹션이 이어진다.
예 : 등시성 데이터를 등시성 녹화 포맷으로 변환
아래 표 V에 포함된 제어 저장 프로그램은 채널 3 및 채널 5로 구성되는 등시성 데이터 스트림을 캡쳐(capture)하고, 채널 3을 채널 7로 그리고 채널 5를 채널 9로 사상시키고, 그 결과인 데이터 스트림을 DMA 채널 0에 등시성 녹화 포맷으로 보내기 위하여 본 발명의 등시성 데이터 파이프(20)가 애플리케이션에 의해 어떻게 프로그램될 수 있는가의 예를 도시한다.
표 V
CS_addr_CS: ANDI BUS_In, 0XFFFFF000, D3 ;주기 시작 패킷을 마스크 처리
ORI D3, 0Xcycle0, DATA_0 ;그것을 DMA ch 0에 보냄
RET ; 완료
CS_addr_5: BSR GET_QUAD ;등시 헤더를 취득
ORI D2, 0X900, DATA_0 ;채널 9로 사상하고 출력
BRA GET_DATA ;데이터 필드를 취득하기 위해 분기
CS_addr_3: BSR GET_QUAD ;등시성 헤더를 취득
ORI D2, 0X700, DATA_0 ;채널 7로 사상하고 출력
GET_DATA: SHIFI D2, 16, D2 ;데이터 길이를 취득
ADDI D2, 3, D2 ;그것을 랩(WRAP) 처리
ANDI D2, FFFC, D2 ;그리고 마스크 처리
BZ HALT ;0이면 완료됨
MOVE_DATA: MOVE BUS_IN, DATA_0 ;다음 쿼드렛을 취득
SUBI D2, 4, D2 ;쿼드렛 카운터를 감소시킴
BNZ MOVE_DATA ;0이 아니면 계속
HALT: RET ;그렇지 않으면, 완료됨
GET_QUAD: ANDI BUS_IN,0XFFFFC00F,D2;hdr w/o ch 또는 tcode 취득
ORI D2, 0Xdata0, D2 ;데이터 표시기를 세트
RET ;그리고, 복귀
예 : 등시성 녹화 포맷으로부터의 변환
아래 표 VI에 포함된 제어 저장 프로그램은, 등시성 녹화 포맷으로 된 DMA 채널 3에서 데이터 스트림을 취하여, 버스 구조(58)를 거쳐 전송하기 위한 등시성 데이터 스트림을 생성하기 위하여 본 발명의 등시성 데이터 파이프(20)가 애플리케이션에 의해 어떻게 프로그램될 수 있는가의 예를 도시한다. 상기 데이터 스트림의 소스는 등시성 채널 7과 채널 9를 포함한다. 이 제어 저장 프로그램은 채널 7을 채널 1로, 그리고 채널 9를 채널 2로 사상시킨다. 표 VI에 도시된 프로그램은 DMA 채널에서 제공된 제 1 데이터 쿼드렛이 주기 시작 쿼드렛이기를 요구함을 유의하라.
표 VI
CS_output :MOVE DATA_3, D0 ;쿼드렛을 취득
MOVEI 0X100000000, D3 ;출력 레지스터를 준비
TEST_TYPE: ANDI D0, 0XF0, D1 ;op code 테스트
CMPI D1, 0Xdata0 ;패킷인가?
BZ CONT_HDR ;그렇다면 처리를 계속
MOVEI 0X300000000, D3 ;그렇지 않으면 주기 시작 플래그를 세트
MOVE DATA_3, D0 ;그리고 다음 쿼드렛을 취득
BRA TEST_TYPE ;그런 다음 이것을 역시 테스트
CONT_HDR: ANDI D0, 0X3F00, D1 ;ch 번호를 취득
ANDI D0, 0XFFFFC00F, D3 ;tcode와 ch 필드를 클리어(clear)
ORI D0, 0X'isoch'0, D3;tcode를 복원
CMPI D1, 0X700 ;채널 7인가?
BZ CH_7 ;그러면 처리하기 위해 분기
CMPI D1, 0X900 ;채널 9인가?
BNZ DISCARD ;그렇지 않으면 버림
ORI D3, 0X200, BUS_OUT;그렇지 않으면 채널 9인가?
BRA CONT_DATA ;그러면 데이터 필드로 계속
CH_7: ORI D3, 0X100, BUS_OUT;채널 1로 사상
CONT_DATA: BSR GET_COUNT ;쿼드렛 카운트를 취득
CONT_OUT: BZ CS_output ;그렇지 않으면 계속
MOVE DATA_3, BUS_OUT ;무엇인가를 내보냄
SUBI D3, 4, D3 ;쿼드렛 카운트를 감소시킴
BRA CONT_OUT ;그리고 출력을 계속
DISCARD: BSR GET_COUNT ;쿼드렛 카운터를 취득
CONT_DIS BZ CS_output ;그렇지 않으면 계속
MOVE DATA_3, D0 ;그렇지 않으면, 쿼드렛을 취득
SUBI D3, 4, D3 ;쿼드렛 카운터를 감소시킴
BRA CONT_DIS ;버리기 계속
GET_COUNT: SHIFTI D3, 16, D3 ;데이터 길이를 취득
ADDI D3, 3, D3 ;그것을 랩 처리
ANDI D3, FFFC, D3 ; 그리고 마스크 처리
RET ;그런 다음 복귀
디지털 소비자 오디오 및 비디오 데이터를 IEEE 1394 포맷 버스를 거쳐 등시성 채널로 운송하는 포맷은, 송신기에 의해 삽입되고, 그 데이터 스트림을 디코드하는데 필요한 타이밍 정보를 재생성하기 위하여 수신기에서 사용되는 절대 시간 소인(stamp)을 포함한다. 마찬가지로, 하드 디스크 드라이브와 같은 비-소비자 오디오 및 비디오 저장 장치는 상기 데이터가 추후에 재생될 때 상기 데이터를 수신하는 소비자 장치가 올바르게 기능을 하도록 이 삽입된 시간 소인 정보를 역시 변경할 것이다.
등시성 데이터 파이프(20)는 등시성 데이터를 전송할 수 있기 전에 애플리케이션에 의해 먼저 초기화된다. 일단 초기화되면, 애플리케이션은 제어 레지스터를 등시성 데이터 파이프(20)의 동작 상태를 변경하는데 사용한다. 현재의 동작 상태는 현행 채널 마스크 레지스터에 있는 값 및 상태 레지스터의 저차수 바이트에 포함된 정보에 의해 완벽하게 정의된다.
등시성 데이터 파이프(20)의 상태를 변경하기 위하여, 애플리케이션은 새로운 채널 마스크 값을 보류 채널 마스크 레지스터로, 그리고 새로운 동작 상태를 제어 레지스터로 프로그램한다. 제어 레지스터를 엑세스하는 동일한 레지스터에서, 애플리케이션은 또한 진행 비트를 세트하고, 이벤트를 이벤트 필드에 프로그램한다. 프로그램된 이벤트가 발생할 때, 등시성 데이터 파이프(20)는 보류 채널 마스크 레지스터에 있는 값을 현행 채널 마스크 레지스터로 전송한다. 등시성 데이터 파이프(20)는 또한 제어 레지스터의 저차수 바이트에 있는 정보를 상태 레지스터의 저차수 바이트에 전송한다.
등시성 데이터 파이프(20)의 동작을 중단하기 위하여, 애플리케이션은 1 값을 보류 채널 마스크 레지스터에, 그리고 논리적 저전압 레벨을 제어 레지스터의 전송 인에이블 비트에 프로그램한다. 임의의 상태 변경에서와 같이, 애플리케이션은 역시 진행 비트를 세트하고, 이벤트를 제어 레지스터의 이벤트 필드에 프로그램한다. 상기 이벤트가 발생할 때, 현행 채널 마스크 레지스터에 있는 값은 0이 되고, 상태 레지스터에 있는 전송 인에이블 비트는 논리적 저전압 레벨로 강하됨으로써, 등시성 데이터 파이프(20)의 동작을 정지시킨다. 등시성 데이터 파이프(20)의 동작이 정지될 때, 상태 레지스터에 있는 활성 비트는 역시 논리적 저전압 레벨로 강하된다.
등시성 데이터 파이프(20)를 활성화시키기 위하여, 애플리케이션은 먼저 제어 저장 프로그램을 로딩하고, 적절한 제어 저장 옵셋을 제어 저장 주소 레지스터 파일에 프로그램한다. 그런 다음, 보류 채널 마스크 레지스터는 등시성 데이터 파이프(20)가 수신해야 할 채널의 비트 마스크로 프로그램된다. 만일 등시성 데이터 파이프(20)가 데이터를 수신하고 있지 않으면, 보류 채널 마스크 레지스터에 있는 값은 0으로 프로그램된다. 제어 레지스터에 있는 진행 비트는 상태 변경을 나타내기 위하여 논리적 고전압 레벨로 세트된다. 제어 레지스터에 있는 전송 인에이블 비트는 만일 등시성 데이터 파이프(20)가 등시성 데이터를 전송하고 있으면, 논리적 고전압 레벨로 세트된다. 제어 레지스터에 있는 오류시 정지 비트는 만일 등시성 데이터 파이프(20)가 임의의 오류로 정지해야만 하면, 논리적 고전압 레벨로 세트된다. 만일 등시성 데이터 파이프(20)가 등시성 데이터를 전송 중에 있으면, 등시성 데이터의 전송에 관련된 DMA 채널에 대응하는 제어 레지스터에 있는 출력 인에이블 비트들은 논리적 고전압 레벨로 세트된다. 제어 레지스터에 있는 이벤트 필드는 등시성 데이터 파이프(20)가 상태를 변경해야만 하는 이벤트로 프로그램된다.
위에서 언급한 바와 같이 비동기 데이터 파이프(26)는 버스 구조(58)를 거쳐 애플리케이션에 대한 비동기 데이터 전송 동작을 완성하는데 필요한 트랜잭션을 자동으로 생성한다. 본 발명의 등시성 데이터 파이프(20)의 대안적인 실시예에서, 등시성 데이터 파이프(20)는 등시성 및 비동기 데이터 모두를 송신하고 수신하도록 프로그램될 수 있다. 따라서, 이 실시예에서, 비동기 데이터 파이프(26) 및 관련 FIFO(32)는 필요하지 않다. 더구나, 등시성 데이터 파이프(20)가 링크 회로 내의 유일한 논리 블록이기 때문에, 멀티플렉서(40) 및 디멀티플렉서(42)는 역시 필요하지 않다.
위에서 기술된 바와 같이, 바람직한 실시예의 등시성 데이터 파이프(20)는 제어 저장 프로그램을 실행하고, 등시성 데이터 스트림에 대해 일련의 동작을 수행하도록 프로그램된다. 이 대안적인 실시예에서, 등시성 데이터 파이프(20)는 비동기 데이터를 송신하고 수신하기 위하여 역시 프로그램될 수 있다. 이 실시예에서, 등시성 데이터 파이프(20)는 가상적인 비동기 데이터 파이프로 나타나며, 본 출원과 동일한 날자에 출원되었으며, 국제 공개 번호 WO 97/33230로 1997년 9월 12일에 해당 PCT 출원에 공개된 바와 같이 "애플리케이션과 버스 구조 사이에서 비동기 데이터 전송을 자동으로 관리하는 비동기 데이터 파이프"라는 제목을 갖는 미국 특허 출원 번호 08/612,321에 기술된 바와 같이, 데이터를 보낼 때 적절한 헤더를 생성하고 수신된 데이터로부터 헤더를 스트리핑하는 것(stripping)은 물론이고, 비동기 데이터 전송 동작을 완성하는데 필요한 트랜잭션을 생성하도록 프로그램된다.
이 대안적인 실시예에서, 등시성 데이터 파이프(20)는 등시성 및 비동기 데이터 모두를 송신하거나 또는 수신할 것이다. 등시성 데이터 파이프(20)는 필요에 따라 등시성 또는 비동기 데이터 스트림을 조작하기 위한 적절한 프로그램을 실행하도록 애플리케이션에 의해 프로그램된다. 비동기 데이터를 수신 또는 전송할 때, 등시성 데이터 파이프(20)는 적절한 주소 범위에 걸쳐 데이터 전송 동작을 완성하는데 필요한 판독 트랜잭션 또는 기록 트랜잭션을 자동으로 생성하도록 프로그램된다. 등시성 데이터 파이프는, 각 데이터 패킷의 길이에 따라 각 트랜잭션을 위해 목적지 옵셋 주소 필드에 있는 값을 적절하게 자동으로 증가시킬 것이며, 증가 기능이 디스에이블 되어 있지 않으면 상기 트랜잭션들이 단일 주소에서 일어나도록 신호를 보낸다.본 발명은 발명의 구성 및 동작 원리의 이해를 돕기 위하여 세부 사항을 포함하는 특정 실시예의 관점에서 기술되었다. 따라서, 본 명세서에서의 특정 실시예에 대한 참조와 세부 사항은 본 명세서에 첨부된 청구항들의 범위를 제한하고자 하는 것은 아니다.
상술된 바와 같이, 본 발명은 버스 구조를 통해 애플리케이션으로/으로부터의 등시성 데이터 전송 동작을 수행하는 분야에서 이용가능한데, 보다 자세하게 말하자면, 버스 구조에 결합된 애플리케이션과 노드 사이의 데이터 전송 동작을 완료하기 위하여 고속의 등시성 데이터 스트림을 관리하고 조작하는 분야에 이용가능하다

Claims (53)

  1. 애플리케이션(12,14)과 버스 구조(58) 사이에서 데이터 스트림을 제어하는 방법에 있어서,
    (a). 상기 애플리케이션(12,14) 및 상기 버스 구조(58)로부터 선택된 소스로부터 데이터 스트림을 수신하여, 수신 데이터 스트림을 형성하는 단계,
    (b). 상기 애플리케이션에 의해 얻어진 상기 수신된 데이터 스트림에 관한 조작을 수행하기 위해 일련의 최소 하나의 동작 코드를 데이터 파이프(data pipe)에서 취득하는 단계, 및
    (c). 상기 일련의 동작 코드를 실행함으로써 상기 수신된 데이터 스트림을 출력 데이터 스트림으로 상기 데이터 파이프에서 변환하여 상기 출력 데이터 스트림을 생성하는 단계를
    포함하는, 데이터 스트림을 제어하는 방법.
  2. 제 1항에 있어서, 상기 수신된 데이터 스트림은 등시성 데이터 스트림인, 데이터 스트림을 제어하는 방법.
  3. 제 2항에 있어서, 상기 일련의 동작 코드가 상기 수신된 등시성 데이터 스트림의 채널 번호에 해당하는 메모리 주소로부터 취득되는, 데이터 스트림을 제어하는 방법.
  4. 제 3항에 있어서, 상기 버스 구조(58)는 IEEE 1394 표준 버스 구조인, 데이터 스트림을 제어하는 방법.
  5. 제 1항에 있어서, 상기 수신된 데이터 스트림은 등시성 데이터 스트림 및 비동기 데이터 스트림 중 하나인, 데이터 스트림을 제어하는 방법.
  6. 제 5항에 있어서, 상기 데이터 스트림을 수신하는 단계는, 등시성 데이터 스트림인지 또는 비동기 데이터 스트림인지를 결정하는 단계를 포함하는, 데이터 스트림을 제어하는 방법.
  7. 제 6항에 있어서, 상기 일련의 동작 코드는, 만일 상기 수신된 데이터 스트림이 등시성 데이터 스트림이면 상기 채널 번호에 해당하는 메모리 주소로부터 취득되고, 만일 상기 수신된 데이터 스트림이 비동기 데이터 스트림이면 비동기 데이터에 해당하는 메모리 주소로부터 취득되는, 데이터 스트림을 제어하는 방법.
  8. 제 7항에 있어서, 상기 버스 구조(58)는 IEEE 1394 표준 버스 구조인, 데이터 스트림을 제어하는 방법.
  9. 애플리케이션(12,14)과 버스 구조(58) 사이에서 양방향 데이터 스트림을 제어하는 장치에 있어서,
    (a). 상기 애플리케이션(12,14) 및 상기 버스 구조(58)로부터 선택된 소스로부터 데이터 스트림을 수신하고, 수신 데이터 스트림을 형성하는 수단,
    (b). 상기 애플리케이션에 의해 얻어진 상기 수신된 데이터 스트림에 관한 조작을 수행하기 위해 일련의 최소 하나의 동작 코드를 취득하는 수단, 및
    (c). 상기 일련의 동작 코드를 실행함으로써 상기 수신된 데이터 스트림을 출력 데이터 스트림으로 변환하기 위하여 상기 취득 수단에 결합된 상기 출력 데이터 스트림을 생성하는 수단을
    포함하는, 양방향 데이터 스트림을 제어하는 장치.
  10. 제 9항에 있어서, 만일 상기 수신된 데이터 스트림이 상기 애플리케이션(12,14)으로부터 수신되면, 상기 출력 데이터 스트림은 상기 버스 구조(58)에 제공되고, 만일 상기 수신된 데이터 스트림이 상기 버스 구조(58)로부터 수신되면, 상기 출력 데이터 스트림은 상기 애플리케이션에 제공되는, 양방향 데이터 스트림을 제어하는 장치.
  11. 제 9항에 있어서, 상기 취득 수단에 결합되며, 상기 일련의 동작 코드를 저장하기 위해 상기 애플리케이션에 결합하도록 구성되는 메모리(24)를 더 포함하는, 양방향 데이터 스트림을 제어하는 장치.
  12. 제 11항에 있어서, 상기 수신된 데이터 스트림은 등시성 데이터 스트림인, 양방향 데이터 스트림을 제어하는 장치.
  13. 제 12항에 있어서, 상기 일련의 동작 코드는 상기 수신된 데이터 스트림이 전송된 채널 번호에 해당하는 메모리 주소에 저장되는, 양방향 데이터 스트림을 제어하는 장치.
  14. 제 13항에 있어서, 상기 버스 구조(58)가 IEEE 1394 표준 버스 구조인, 양방향 데이터 스트림을 제어하는 장치.
  15. 제 11항에 있어서, 상기 수신된 데이터 스트림이 등시성 데이터 스트림인지 또는 비동기 데이터 스트림인지를 결정하기 위한 상기 수신 수단에 결합된 결정 수단을 더 포함하는, 양방향 데이터 스트림을 제어하는 장치.
  16. 제 15항에 있어서, 상기 일련의 동작 코드는, 만일 상기 수신된 데이터 스트림이 등시성 데이터 스트림이면 상기 수신된 데이터 스트림이 전송된 채널 번호에 해당하는 메모리 주소에 저장되고, 만일 상기 수신된 데이터 스트림이 비동기 데이터 스트림이면 비동기 데이터에 해당하는 메모리 주소에 저장되는, 양방향 데이터 스트림을 제어하는 장치.
  17. 제 16항에 있어서, 상기 버스 구조(58)가 IEEE 1394 표준 버스 구조인, 양방향 데이터 스트림을 제어하는 장치.
  18. 적어도 하나의 애플리케이션(12,14)과 버스 구조(58) 사이에서 데이터 전송 동작을 제어하는 장치에 있어서,
    (a). 상기 애플리케이션(12,14) 중 하나와 상기 버스 구조(58) 사이에 결합되도록 구성된 등시성 데이터 처리 장치(20)로서,
    (ⅰ) 상기 애플리케이션(12,14) 중 하나와 상기 버스 구조(58)로부터 선택된 소스로부터 데이터 스트림을 수신하고, 수신 데이터 스트림을 형성하는 수단,
    (ⅱ) 상기 애플리케이션에 의해 얻어진 상기 수신된 데이터 스트림에 관한 조작을 수행하기 위해 일련의 최소 하나의 동작 코드를 취득하는 수단, 및
    (ⅲ) 상기 일련의 동작 코드를 실행함으로써 상기 수신 데이터 스트림을 상기 출력 데이터 스트림으로 변환하는 수단을 포함하는, 데이터 처리 장치(20), 및
    (b). 상기 버스 구조(58) 상에 데이터를 놓고, 또한 상기 버스 구조(58)로부터 데이터를 취득하기 위해 상기 버스 구조(58)에 결합하도록 구성된 물리적 버스 인터페이스(56)를
    포함하는, 데이터 전송 동작을 제어하는 장치.
  19. 제 18항에 있어서, 상기 취득 수단에 결합되고, 또한 상기 일련의 동작 코드를 저장하기 위해 상기 애플리케이션(12,14)에 결합하도록 구성된 메모리(24)를 더 포함하는, 데이터 전송 동작을 제어하는 장치.
  20. 제 19항에 있어서, 상기 버스 구조(58)를 거쳐 상기 애플리케이션(12,14)으로 및 상기 애플리케이션으로부터의 비동기 데이터 전송 동작을 자동으로 제어하기 위해 비동기 데이터 파이프(26)를 더 포함하되,
    (a). 비동기 데이터 전송 동작에 관한 명령어들을 수신하기 위해 상기 애플리케이션(12,14)에 결합하도록 구성된 명령어들을 수신하는 수단, 및
    (b). 상기 애플리케이션(12,14)과 상기 버스 구조(58)에 결합된 노드 사이의 상기 비동기 데이터 전송 동작을 완성하는데 필요한 트랜잭션들을 자동으로 생성하는 수단을
    포함하는, 데이터 전송 동작을 제어하는 장치.
  21. 제 20항에 있어서, 상기 등시성 데이터 처리 장치(20), 상기 비동기 데이터 파이프(26), 및 데이터 패킷들을 상기 등시성 데이터 처리 장치(20) 및 상기 비동기 데이터 파이프(26)로부터 상기 버스 구조(58)에 전송하는 상기 물리적 버스 인터페이스(56)에 결합된 멀티플렉싱 회로(40)를 더 포함하는, 데이터 전송 동작을 제어하는 장치.
  22. 제 21항에 있어서, 상기 등시성 데이터 처리 장치(20), 상기 비동기 데이터 파이프(26), 및 상기 버스 구조(58)로부터 취득된 데이터 패킷을 상기 등시성 데이터 처리 장치(20)와 비동기 데이터 파이프(26) 중 적절한 것에 라우팅하는 상기 물리적 버스 인터페이스(56)에 결합된 디멀티플렉싱 회로(42)를 더 포함하는, 데이터 전송 동작을 제어하는 장치.
  23. 제 22항에 있어서, 상기 버스 구조(58)는 IEEE 1394 표준 버스 구조인, 데이터 전송 동작을 제어하는 장치.
  24. 제 19항에 있어서, 상기 등시성 데이터 처리 장치(20)는 수신된 등시성 및 비동기 데이터 스트림 모두에 관한 일련의 동작 코드를 실행시킬, 데이터 전송 동작을 제어하는 장치.
  25. 제 24항에 있어서, 상기 일련의 동작 코드는, 만일 상기 수신된 데이터 스트림이 등시성 데이터 스트림이면 상기 수신된 데이터 스트림이 전송된 채널 번호에 해당하는 메모리 주소에 저장되고, 만일 상기 수신된 데이터 스트림이 비동기 데이터 스트림이면 비동기 데이터에 해당하는 메모리 주소에 저장되는, 데이터 전송 동작을 제어하는 장치.
  26. 제 25항에 있어서, 상기 버스 구조(58)는 IEEE 1394 표준 버스 구조인, 데이터 전송 동작을 제어하는 장치.
  27. 버스 구조(58)를 통한 애플리케이션(12,14)으로 및 상기 애플리케이션으로부터의 등시성 데이터 전송 동작을 제어하기 위해 상기 애플리케이션(12,14)과 IEEE 1394 표준 버스 구조(58) 사이에 결합하도록 구성된 등시성 데이터 처리 장치(20)에 있어서,
    (a). 상기 애플리케이션(12,14)이 등시성 데이터 스트림을 변환하기 위해 일련의 최소 하나의 동작 코드를 저장하는 제어 저장 메모리(24),
    (b). 상기 애플리케이션(12,14) 및 상기 IEEE 1394 표준 버스 구조(58)로부터 선택된 소스로부터 데이터 스트림을 수신하고, 수신 데이터 스트림을 형성하는 수신 회로(44), 및
    (c). 상기 일련의 동작 코드를 취득하고, 상기 일련의 동작 코드를 실행함으로써 상기 수신된 데이터 스트림을 출력 데이터 스트림으로 변환하기 위해 상기 제어 저장 메모리 및 상기 수신 회로에 결합된 변환 회로를
    포함하는, 등시성 데이터 처리 장치.
  28. 제 7항에 있어서,
    (a). 상기 버스 구조상의 노드 및 상기 애플리케이션으로부터 선택된 적어도 하나의 적절한 목적지로 출력 데이터 스트림을 송신하는 단계,
    (b). 만일 상기 수신된 데이터 스트림이 등시성 데이터 스트림이라면, 상기 수신된 데이터 스트림에 대한 채널 번호를 결정하는 단계를 더 포함하는, 데이터 스트림을 제어하는 방법.
  29. 제 28항에 있어서, 상기 버스 구조는 IEEE 1394 표준 버스 구조인, 데이터 스트림을 제어하는 방법.
  30. 애플리케이션과 버스 구조 사이의 데이터 스트림을 제어하는 장치에 있어서,
    (a). 상기 애플리케이션과 상기 버스 구조로부터 선택된 소스로부터 데이터 스트림을 수신하도록 구성된 수신 회로,
    (b). 만일 상기 수신된 데이터 스트림이 비동기이라면, 상기 수신된 스트림에 해당하는 일련의 최소 하나의 동작 코드를 취득하고, 만일 상기 수신된 스트림이 등시성이라면, 상기 수신된 스트림의 채널 번호에 해당하는 일련의 최소 하나의 동작 코드를 취득하도록 구성된 주소지정 회로, 및
    (c). 상기 취득된 일련의 동작 코드를 실행하여 상기 수신된 스트림을 출력 스트림으로 변환하도록 구성되는 변환 회로를
    포함하는, 데이터 스트림을 제어하는 장치.
  31. 제 30 항에 있어서, 상기 수신 회로는 상기 수신된 데이터 스트림이 등시성 데이터 스트림인지, 또는 비동기 데이터 스트림인지를 또한 결정하는, 데이터 스트림을 제어하는 장치.
  32. 제 30 항에 있어서, 만일 상기 수신된 데이터 스트림이 등시성 데이터 스트림이라면, 상기 수신된 데이터 스트림이 송신되는 채널 번호에 해당하는 메모리 주소에 일련의 동작 코드를 저장하고, 만일 상기 수신된 데이터 스트림이 비동기 데이터 스트림이라면, 비동기 데이터에 해당하는 메모리 주소에 상기 일련의 동작 코드를 저장하도록 상기 수신 회로와 상기 변환 회로에 연결된 메모리를 더 포함하는, 데이터 스트림을 제어하는 장치.
  33. 버스 구조와 애플리케이션 사이에 전달(flow)되는 데이터 스트림을 변환하는 장치에 있어서,
    (a). 버스로부터의 등시성 데이터 스트림을 송신하고, 버스로의 등시성 데이터 스트림을 수신하도록 구성된 버스 구조,
    (b). 상기 애플리케이션으로부터의 실시간 데이터 스트림을 생성하고, 상기 애플리케이션으로의 실시간 데이터 스트림을 수신하도록 구성된 애플리케이션,
    (c). 일련의 송신 명령어와 일련의 수신 명령어를 유지하도록 구성된 제어 저장 장치로서, 상기 버스로부터의 스트림내의 패킷은 각각이 복수의 일련의 명령어 중 하나에 대응하는 복수의 등시성 채널 중 하나에 대응하는, 저장 장치, 및
    (d). 상기 일련의 수신 명령어를 실행하여 상기 버스로부터의 스트림을 상기 애플리케이션으로의 스트림으로 변환하는 수신 모드에서 동작하고, 상기 일련의 송신 명령어를 실행하여 상기 애플리케이션으로부터의 스트림을 버스로의 스트림으로 변환하는 송신 모드에서 동작하도록 구성되는 시퀀서로서, 실행을 위한 대응하는 일련의 수신 명령어를 선택하기 위해 패킷의 채널을 사용하도록 또한 구성되는 시퀀서를
    포함하는, 데이터 스트림을 변환하는 장치.
  34. 제 33항에 있어서, 상기 버스 구조는 실질적으로 IEEE 1394 표준 버전을 준수하는, 데이터 스트림을 변환하는 장치.
  35. 제 33항에 있어서, 상기 일련의 수신 명령어는 상기 애플리케이션에 의해 상기 제어 저장 장치에 제공되는, 데이터 스트림을 변환하는 장치.
  36. 제 33항에 있어서, 상기 일련의 송신 명령어는 상기 애플리케이션에 의해 상기 제어 저장 장치에 제공되는, 데이터 스트림을 변환하는 장치.
  37. 제 33 항에 있어서, 상기 일련의 송신 명령어는 상기 버스 구조에 의해 요구되는 패킷 헤더를 생성하고, 상기 애플리케이션으로부터의 데이터 스트림을 상기 패킷 헤더에 첨부함으로써 선택된 상기 애플리케이션으로부터의 스트림 변환을 야기하고, 그로써 상기 버스로의 스트림을 생성하며, 제 1 포맷의 상기 애플리케이션으로부터의 스트림을 제 2 포맷의 버스로의 스트림으로 변환하고, 상기 애플리케이션으로부터의 스트림을 조작하고, 상기 애플리케이션으로부터의 스트림을 분석(parsing)하며 상기 애플리케이션으로부터의 스트림을 라우팅(routing)하도록 구성된, 데이터 스트림을 변환하는 장치.
  38. 제 33항에 있어서, 상기 일련의 수신 명령어는 상기 버스 구조에 의해 요구되는 패킷 헤더를 제거하고, 상기 버스로부터의 스트림을 조작하고, 상기 버스로부터의 스트림을 분석하며, 상기 버스로부터의 스트림을 라우팅하여 선택된 상기 버스로부터의 스트림의 변환을 야기하도록 구성된, 데이터 스트림을 변환하는 장치.
  39. 제 33항에 있어서, 상기 애플리케이션은 상기 애플리케이션으로부터의 스트림을 송신하고, 상기 시퀀서는 상기 애플리케이션으로부터의 스트림을 상기 버스로의 스트림으로 변환하고, 상기 버스 구조는 상기 버스로의 스트림을 동시에 수신하는, 데이터 스트림을 변환하는 장치.
  40. 제 33항에 있어서, 상기 버스 구조는 상기 버스로부터의 스트림을 송신하고, 상기 시퀀서는 상기 버스로부터의 스트림을 상기 애플리케이션으로의 스트림으로 변환하고, 상기 애플리케이션은 상기 애플리케이션으로의 스트림을 동시에 수신하는, 데이터 스트림을 변환하는 장치.
  41. 제 33항에 있어서, 상기 시퀀서는, 상기 버스로부터의 스트림의 패킷 내에 있는 상기 일련의 수신 명령어를 중단없이 실행하도록 또한 구성되는, 데이터 스트림을 변환하는 장치.
  42. 제 33항에 있어서, 상기 시퀀서는, 데이터 유닛에 액세스하기 위해, 상기 애플리케이션으로부터의 스트림 내의 각 데이터 유닛마다 한번씩 특정 명령어를 실행하는, 데이터 스트림을 변환하는 장치.
  43. 제 33항에 있어서, 상기 시퀀서는, 상기 데이터 유닛에 액세스하기 위해, 상기 버스로부터의 스트림 내의 각 데이터 유닛마다 한번씩 특정 명령어를 실행하는, 데이터 스트림을 변환하는 장치.
  44. 버스 구조와 애플리케이션 사이에서 데이터 스트림을 송신하는 방법에 있어서,
    (a). 버스 구조를 통해 버스로부터의 등시성 데이터 스트림을 송신하는 단계,
    (b). 시퀀서에서, 일련의 수신 명령어를 실행함으로써, 애플리케이션으로의 실시간 데이터 스트림을 생성하여 버스로부터의 스트림을 변환하는 단계,
    (c). 상기 애플리케이션으로의 스트림을 상기 애플리케이션에 제공하는 단계로서, 상기 단계(a, b 및 c)가 수신 모드 동안 동시에 발생하는, 애플리케이션에 스트림을 제공하는 단계,
    (d). 상기 애플리케이션으로부터, 상기 애플리케이션으로부터의 실시간 데이터 스트림을 제공하는 단계,
    (e). 시퀀서에서 일련의 송신 명령어를 실행함으로써, 버스로의 등시성 데이터 스트림을 생성하여 상기 애플리케이션으로부터의 스트림을 버스로의 스트림으로 변환하는 단계, 및
    (f). 상기 버스로의 스트림을 상기 버스 구조상으로 송신하는 단계로서, 상기 단계(d, e 및 f)가 송신 모드 동안 동시에 발생하는, 버스 구조 상에 스트림을 송신하는 단계를
    포함하는, 데이터 스트림을 송신하는 방법.
  45. 제 44항에 있어서, 상기 단계 (a 및 e)는 실질적으로 IEEE 1394 표준 버전에 따라 발생하는, 데이터 스트림을 송신하는 방법.
  46. 제 44항에 있어서, 상기 애플리케이션으로부터, 상기 일련의 수신 및 송신 명령어가 실행되는 제어 저장 장치로 상기 일련의 수신 및 송신 명령어를 제공하는 단계를 더 포함하는, 데이터 스트림을 송신하는 방법.
  47. 제 44항에 있어서, 상기 단계 (b)는 상기 버스로부터의 스트림 내에 있는 각 패킷에 대한 시퀀서의 중단 없이 발생하는, 데이터 스트림을 송신하는 방법.
  48. 제 44항에 있어서, 상기 단계 (e)는 상기 단계 (b)를 위해서 중단되는, 데이터 스트림을 송신하는 방법.
  49. 제 44항에 있어서,
    (a). 상기 버스로부터의 스트림 내의 패킷은, 각각 복수의 일련의 수신 명령어 중 하나에 대응하는 복수의 등시성 채널 중 하나에 대응하며,
    (b). 상기 시퀀서는 실행을 위한 대응하는 일련의 수신 명령어를 선택하기 위해 상기 패킷의 채널을 사용하도록 구성되는, 데이터 스트림을 송신하는 방법.
  50. 제 44항에 있어서, 상기 시퀀서는, 상기 일련의 수신 명령어의 실행이 제 1 채널에 대하여 종료되고 데이터 유닛이 제 2 채널로부터 보류 (pending)될 때, 상기 시퀀서가 상기 제 2 채널에 대응하는 상기 일련의 수신 명령어를 실행하도록 또한 구성되는, 데이터 스트림을 송신하는 방법.
  51. 제 44항에 있어서, 송신 동작을 통해서 상기 버스 구조를 경유하여 송신될 출력 등시성 스트림을 유지하도록 구성된 출력 버퍼를 더 포함하며, 상기 시퀀서는 상기 일련의 수신 명령어의 실행이 종료될 때, 상기 시퀀서가 송신 동작에 대한 일련의 송신 명령어를 실행하도록 또한 구성되는, 데이터 스트림을 송신하는 방법.
  52. 제 44항에 있어서, 송신 동작을 통해서 상기 버스 구조를 경유하여 송신될 출력 등시성 스트림을 유지하도록 구성된 출력 버퍼를 더 포함하며, 상기 시퀀서는 제 1 채널을 위한 상기 일련의 수신 명령어의 실행이 종료될 때, 상기 시퀀서가,
    (a). 만일 제 2 특정 채널로부터의 데이터 유닛이 보류중이라면, 상기 제2 특정 채널에 대응하는 상기 일련의 수신 명령어를 실행하며,
    (b). 만일 채널에 대응하는 어떠한 다른 데이터 유닛도 보류중이 아니면, 송신 동작을 위한 일련의 송신 명령어를 실행하도록 또한 구성되는, 데이터 스트림을 송신하는 방법.
  53. 제 52항에 있어서, 상기 제 2 특정 채널에 대응하는 상기 일련의 수신 명령어의 실행은 송신 동작을 위한 상기 일련의 송신 명령어의 실행에 우선하여 발생하는, 데이터 스트림을 송신하는 방법.
KR10-1999-7009381A 1997-04-15 1997-04-15 데이터 스트림을 처리하기 위한 장치 및 방법 KR100497166B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1997/006240 WO1998047271A1 (en) 1997-04-15 1997-04-15 Protocol processor for manipulating a stream of data

Publications (2)

Publication Number Publication Date
KR20010006297A KR20010006297A (ko) 2001-01-26
KR100497166B1 true KR100497166B1 (ko) 2005-06-23

Family

ID=22260718

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7009381A KR100497166B1 (ko) 1997-04-15 1997-04-15 데이터 스트림을 처리하기 위한 장치 및 방법

Country Status (8)

Country Link
EP (1) EP0976228B1 (ko)
JP (1) JP4033915B2 (ko)
KR (1) KR100497166B1 (ko)
AT (1) ATE298485T1 (ko)
AU (1) AU2669797A (ko)
CA (1) CA2286163C (ko)
DE (1) DE69733617T2 (ko)
WO (1) WO1998047271A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292844B1 (en) * 1998-02-12 2001-09-18 Sony Corporation Media storage device with embedded data filter for dynamically processing data during read and write operations
KR100316650B1 (ko) * 1998-08-29 2002-01-12 윤종용 상위 계층 데이터 전송을 위한 상위 프로토콜과 ieee 1394버스 정합 방법
DE19913585A1 (de) * 1999-03-25 2000-09-28 Thomson Brandt Gmbh Verfahren zum Verwalten von über einen Datenbus empfangenen Daten sowie Vorrichtung zur Durchführung des Verfahrens
US6519265B1 (en) * 1999-05-28 2003-02-11 Sony Corporation System and method for context switching in an electronic network
US6535940B1 (en) * 1999-07-28 2003-03-18 Sony Corporation System and method for fast data transfers in an electronic network
US6721859B1 (en) * 1999-10-21 2004-04-13 Sony Corporation Multi-protocol media storage device implementing protocols optimized for storing and retrieving both asynchronous and isochronous data
EP1178395A3 (en) 2000-07-31 2009-05-20 Texas Instruments Incorporated Apparatus and method for communicating a multiword digital message with an isochronous-signal processor
FR2813408B1 (fr) * 2000-08-29 2006-08-04 Canon Kk Procedes de transfert de types multiples de donnees au sein d'un noeud de communication, et reseaux comportant un tel noeud

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696853A2 (en) * 1994-07-15 1996-02-14 Sony Corporation Signal receiving apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696853A2 (en) * 1994-07-15 1996-02-14 Sony Corporation Signal receiving apparatus

Also Published As

Publication number Publication date
ATE298485T1 (de) 2005-07-15
JP4033915B2 (ja) 2008-01-16
AU2669797A (en) 1998-11-11
WO1998047271A1 (en) 1998-10-22
JP2001520823A (ja) 2001-10-30
EP0976228B1 (en) 2005-06-22
EP0976228A1 (en) 2000-02-02
DE69733617D1 (de) 2005-07-28
CA2286163A1 (en) 1998-10-22
CA2286163C (en) 2009-10-13
DE69733617T2 (de) 2006-05-11
KR20010006297A (ko) 2001-01-26

Similar Documents

Publication Publication Date Title
US6266727B1 (en) Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure
EP1055236B1 (en) Media storage device with embedded data filter for dynamically processing data during read and write operations
CA2247341C (en) Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
US7561576B2 (en) Apparatus for and method of predictive time stamping of isochronous data packets transmitted over an IEEE 1394-1995 serial bus network
KR100381646B1 (ko) 데이터 전송 제어 장치 및 전자 기기
KR100497166B1 (ko) 데이터 스트림을 처리하기 위한 장치 및 방법
US6904475B1 (en) Programmable first-in first-out (FIFO) memory buffer for concurrent data stream handling
US6519265B1 (en) System and method for context switching in an electronic network
US6041286A (en) Apparatus for and method of accurately obtaining the cycle time of completion of transmission of video frames within an isochronous stream of data transmitted over an IEEE 1394 serial bus network
US20010044861A1 (en) Information processing apparatus, information processing method and bridge utilizing the same
KR100516411B1 (ko) 패킷화된 데이터 통신 인터페이스 장치의 pci-직렬 버스 인터페이스 장치를 자율적으로 동작하는 방법 및 시스템
EP0932104A1 (en) Method and apparatus for transferring bi-directionally data between an IEEE 1394 bus and a device

Legal Events

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

Payment date: 20130527

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140528

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150527

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160602

Year of fee payment: 12