KR100628177B1 - 디지털 인터페이스의 버스 제어장치 및 방법 - Google Patents

디지털 인터페이스의 버스 제어장치 및 방법 Download PDF

Info

Publication number
KR100628177B1
KR100628177B1 KR1019990035131A KR19990035131A KR100628177B1 KR 100628177 B1 KR100628177 B1 KR 100628177B1 KR 1019990035131 A KR1019990035131 A KR 1019990035131A KR 19990035131 A KR19990035131 A KR 19990035131A KR 100628177 B1 KR100628177 B1 KR 100628177B1
Authority
KR
South Korea
Prior art keywords
value
node
lock
channel
register
Prior art date
Application number
KR1019990035131A
Other languages
English (en)
Other versions
KR20010018958A (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 엘지전자 주식회사
Priority to KR1019990035131A priority Critical patent/KR100628177B1/ko
Publication of KR20010018958A publication Critical patent/KR20010018958A/ko
Application granted granted Critical
Publication of KR100628177B1 publication Critical patent/KR100628177B1/ko

Links

Images

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
    • 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/40006Architecture of a communication node
    • H04L12/40032Details regarding a bus interface enhancer
    • 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/40071Packet processing; Packet format

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Information Transfer Systems (AREA)

Abstract

IEEE 1394 시리얼 버스상의 적어도 2개이상의 아이소크로너스 캐퍼블 노드에서 락 트랜잭션(lock transaction)을 이용하여 동시에 서로 다른 채널을 할당받으려고 할 경우 발생하는 리트라이(retry)를 감소시키기 위한 디지털 인터페이스의 버스 제어장치 및 방법을 제공하기 위한 것으로서, 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로 락 트랜잭션시 락 리퀘스트 패킷(Lock Request packet)과 락 리스펀스 패킷(Lock Response packet)의 확장코드 필드(Extended_code field)로 새로운 락 트랜잭션을 설정하는 단계와, 아이소크로너스 데이터(Isochronous data)를 전송하는 노드가 다른 노드에 의해서 먼저 수행된 락 트랜잭션(Lock Transaction)을 상기 아이소크러너스 리소스 매니저(Isochronous Resource Manager)를 이용하여 자신이 할당 및 양도를 요구한 채널(channel)의 값으로 항상 변경하는 단계로 이루어지며, IEEE 1394 시리얼 버스상의 적어도 2개이상의 노드에서 락 트랜잭션(lock transaction)을 이용하여 동시에 서로 다른 채널을 할당받으려고 할 경우 발생하는 리트라이를 감소시키도록 함으로써 디지털 인터페이스의 성능을 향상시킬 수 있는 효과가 있다.
Figure 111999010037955-pat00001
디지털 인터페이스, 버스

Description

디지털 인터페이스의 버스 제어장치 및 방법{apparatus and method for controlling bus in digital interface}
도 1 은 IEEE 1394 시리얼 버스로 연결된 노드의 토폴로지(topology)의 일예를 나타낸 도면
도 2a 내지 도 2d 는 종래 기술에 따른 디지털 인터페이스의 버스 제어방법에 따라 아이소크로너스 캐퍼블 노드(isochronous capable node)가 채널 할당 및 양도를 위해 사용하는 내부 레지스터들을 나타낸 도면
도 3a 및 도 3b 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법에 따라 IEEE 1394 시리얼 버스에 연결된 하나 또는 2개의 아이소크로너스 캐퍼블 노드(isochronous capable node)에서 채널 할당을 요구하기 위한 트랜잭션 시퀀스(transaction sequence)의 예를 나타낸 도면
도 4a 내지 도 4f 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법에 따라 아이소크로너스 캐퍼블 노드(isochronous capable node)가 채널 할당 및 양도를 위해 사용하는 내부 레지스터들을 나타낸 도면
도 5a 내지 도 5c 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법의 플로우 챠트를 나타낸 도면
본 발명은 디지털 인터페이스에 관한 것으로, 특히 디지털 인터페이스의 버스 제어장치 및 방법에 관한 것이다.
IEEE 1394 시리얼 버스는 버스 초기화중에 자동적으로 컨피거레이션(Configuration)이 이루어지며, 노드들은 다수의 케이블 포트(cable port)를 가질 수 있으며, 하나의 로지컬 버스(logical bus)를 만들기 위해서 서로 신호 리피터(repeater)로서 동작한다.
그리고, IEEE 1394 시리얼 버스에서는 컨트롤(control)과 커맨드(command)에 관련된 데이터는 어싱크로너스 패킷 데이터(Asynchronous Packet data) 구조로 전송하고, 리얼 타임 데이터(Real Time data)는 아이소크로너스 패킷 데이터(Isochronous Packet data) 구조로 전송을 하며, 도 1 은 IEEE 1394 시리얼 버스로 연결된 노드들 사이의 물리적인 연결을 나타낸다.
또한, IEEE 1394 시리얼 버스의 아이소크로너스 리소스 매니저(Isochronous Resource manager)는 다음과 같은 3종류의 레지스터를 제공하고 있는데, 아이소크로너스 데이터 전송에 사용하는 밴드위스(bandwidth)의 할당을 나타내는 32비트의 밴드위스 어베이러블 레지스터(Bandwidth Available Register:BAR)와, 아이소크로너스 데이터 전송에 사용하는 채널의 할당상태를 가리키는 64비트의 채널 어베이러블 레지스터(Channel Available Register:CAR)와, 버스 매니저(Bus Manager)를 결정하는데 이용되는 32비트의 버스 매니저 아이디 레지스터(Bus Manager ID Register:BMR)가 있다.
이러한 레지스터들의 값을 변경하기 위해서는 쿼드렛 리드 트랜잭션(Quadlet Read Transaction )과 컴페어 스왑 락 트랜잭션(Compare Swap Lock Transaction)이 이용된다.
이하, 종래 기술에 따른 디지털 인터페이스의 버스 제어장치 및 방법에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.
도 1 은 IEEE 1394 시리얼 버스로 연결된 노드의 토폴로지(topology)의 일예를 나타낸 도면으로, 노드 H(Node_H)는 루트(Root)이면서 사이클 마스터(Cycle Master)이고 버스 매니저(Bus Manager)이면서 아이소크로너스 리소스 매니저(Isochronous Resource Manager)이며, 노드 A와 노드 B는 아이소크로너스 캐퍼블 노드(Isochronous capable node)로서 아이소크너스 데이터를 전송하기 위하여 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)인 노드 H(Node_H)로부터 채널을 할당받게 된다.
도 2a 내지 도 2d 는 종래 기술에 따른 디지털 인터페이스의 버스 제어방법에 따라 아이소크로너스 캐퍼블 노드(isochronous capable node)가 채널 할당 및 양도를 위해 사용하는 내부 레지스터들을 나타낸 도면이다.
이와 같은 이루어진 종래 기술에 따른 디지털 인터페이스의 버스 제어장치 및 방법에 대하여 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.
먼저, 도 1 에 도시된 바와 같이 IEEE 1394 시리얼 버스상의 아이소크로너스 캐퍼블 노드 A(Isochronous capable Node_A)(또는 아이소크로너스 캐퍼블 노드 B(Node_B))는 아이소크로너스 데이터(Isochronous data)를 전송하려고 할 경우 전송에 필요한 채널이 이용 가능한지를 확인하기 위하여 노드 E(Node_E)(또는 노드 C(Node_C)와 노드 F(Node_F))를 통해 도 2a 에 도시된 바와 같은 IRM인 노드 H(Node_H)의 CAR(Channel Avail Register)로 쿼드렛 리드 리스펀스 서브액션(Quadlet Read Response subaction)을 수행한다.
그러면 상기 Quadlet Read Response subaction을 수신한 노드 H는 이에 대한 응답으로 쿼드렛 리드 리퀘스트 서브액션(Quadlet Read Request subaction)을 수행하여 CAR의 현재 상태를 알려준다.
이에 따라 상기 Quadlet Read Request subaction을 수신한 노드 A(또는 노드 B(Node_B))는 상기 Quadlet Read Request subaction의 리퀘스트 패킷(Request packet)내의 쿼드렛 데이터 필드(quadlet_data field)의 arg_value 필드값을 도 2b 에 도시된 바와 같은 자신의 arg_register에 저장한 후 아이소크로너스 데이터를 전송하기 위한 채널이 사용 가능한지를 검색한다.
즉, 처음 아이소크로너스 데이터를 전송하려는 노드(들)는 미사용 채널이 있는지를, 버스 리셋(Bus Reset) 발생전에 아이소크로너스 데이터를 전송하고 있던 노드(들)는 리셋 발생전에 자신이 할당받아 사용하던 채널이 사용 가능한지를 검색한다.
상기 검색결과 채널이 사용 가능하다면 노드 A(또는 노드 B(Node_B))는 사용하고자 하는 채널의 해당 비트를 "0"으로 설정하여 도 2c 에 도시된 바와 같은 data_register에 저장한 후 락 리퀘스트 패킷(lock request packet)의 data_value 필드값에 기록한 후, arg_register의 arg_value 필드값을 기록한 arg_value 필드와 함께 컴페어-스왑 락 리퀘스트 서브액션(Compare-swap Lock Request Subaction)을 이용하여 상기 노드 H로 채널 할당을 요구한다.
그러면 상기 Lock Request packet을 수신한 노드 H는 자신의 현재 CAR의 값(old_value)을 도 2d 에 도시된 바와 같은 old_register에 저장한 후 Response packet의 old_value 필드에 기록하여 Lock Response Subaction을 수행한다.
즉 노드 H는 상기 Lock Request packet의 arg_value 필드값과 현재 CAR의 값을 비교한 후 같으면 Request packet의 data_value 필드값으로 CAR의 값을 변경(new_value)하고, 같지 않으면 CAR의 값을 변경하지 않은 후 Lock Response Subaction을 수행한다.
이에 따라 채널 할당을 요구한 노드 A(또는 노드 B(Node_B))는 상기 노드 H로부터 수신된 Lock Response Subaction내 Lock Response packet의 rcode(response code)의 값이 resp_complete로 Lock Transaction이 성공적으로 수행되었을 경우, Response packet의 old_value 필드값을 자신의 arg_register의 값과 비교한다.
상기 비교결과 같으면 노드 A(또는 노드 B(Node_B))는 채널 할당에 성공한 것으로, 같지 않으면 자신이 채널을 할당받기 전에 다른 노드(들)가 먼저 Compare-swap Lock Transaction을 통하여 상기 노드 H의 CAR의 값을 변경시켜 채널을 할당받았다는 것으로 판단한 후 상기 Compare-swap Lock Request subaction을 디트라이(retry)하여 다시 채널을 할당을 요구한다.
이때 노드 A(또는 노드 B(Node_B))는 상기 Lock Response packet의 old_value 필드값이 현재 CAR의 값을 나타내므로, 상기 Quadlet read request subaction을 재차 수행할 필요는 없다.
한편, 노드 A와 노드 B에서 아이소크로너스 데이터를 전송하기 위하여 각각 노드 E(Node E), 노드 C와 노드 F를 통해 아이소크로너스 리소스 매니저이면서 루트 노드인 노드 H로 채널 할당을 요구하기 위한 Quadlet Read Transaction의 Quadlet Read Response subaction을 동시에 수행하였을 경우 노드 H는 노드 A가 노드 B보다 루트 노드에 가깝기 때문에 우선 순위가 높으므로 상기 노드 A의 Quadlet Read Response subaction에 상응하는 Quadlet Read Request subaction을 수행한다.
즉 상기 노드 A로부터 Quadlet Read Response subaction을 수신한 노드 H는 이에 대한 응답으로 Quadlet Read Request subaction을 수행하여 현재 자신의 CAR 상태를 상기 노드 A로 알려준다.
이후 상기 노드 B로부터 Quadlet Read Response subaction을 수신한 노드 H는 Quadlet Read Response subaction에 상응하는 Quadlet Read Request subaction을 수행하여 상기 노드 A로 알려준 CAR 상태와 동일한 CAR 상태를 노드 B로 알려준다.
이에 따라 상기 Quadlet Read Request subaction을 수신한 노드 A는 상기와 같은 과정을 통해 Compare-swap Lock Request Subaction을 이용하여 상기 노드 H로 채널 할당을 요구한다.
그러면 상기 Compare-swap Lock Request Subaction을 수신한 노드 H는 상기한 과정을 통해 상기 Lock Request packet의 arg_value 필드값과 현재 CAR의 값을 비교한 후 같으면 Request packet의 data_value 필드값으로 CAR의 값을 변경(new_value)하고, 같지 않으면 CAR의 값을 변경하지 않은 후 Lock Response Subaction을 수행한다.
이에 따라 채널 할당을 요구한 노드 A는 상기 노드 H로부터 수신된 Lock Response Subaction내 Lock Response packet의 rcode(response code)의 값이 resp_complete로 Lock Transaction이 성공적으로 수행되었을 경우, Response packet의 old_value 필드값을 자신의 arg_register의 값과 비교한다.
상기 비교결과 같으면 노드 A는 채널 할당에 성공한 것으로, 같지 않으면 자신이 채널을 할당받기 전에 다른 노드(들)가 먼저 Compare-swap Lock Transaction을 통하여 상기 노드 H의 CAR의 값을 변경시켜 채널을 할당받았다는 것으로 판단한 후 상기 Compare-swap Lock Request subaction을 디트라이(retry)하여 다시 채널을 할당을 요구한다.
이때 노드 A는 상기 Lock Response packet의 old_value 필드값이 현재 CAR의 값을 나타내므로, 상기 Quadlet read request subaction을 재차 수행할 필요는 없다.
이후, 상기 노드 A가 Lock Transaction을 성공적으로 수행하였을 경우, 상기 Quadlet Read Request subaction을 수신한 노드 B는 상기와 같은 과정을 통해 아이소크로너스 데이터를 전송하기 위한 채널이 사용 가능한지를 검색한다.
상기 검색결과 사용 가능하면 노드 B는 사용하고자 하는 채널의 해당 비트를 "0"으로 설정한 후 lock request packet의 data_value 필드에 기록하고, arg_register의 arg_value 필드값을 기록한 arg_value 필드와 함께 Compare-swap Lock Request Subaction을 이용하여 상기 노드 H로 채널 할당을 요구한다.
그러면 Lock Request packet을 수신한 노드 H는 자신의 현재 CAR의 값(new_value)을 Response packet의 old_value 필드에 기록한 후 Lock Response Subaction을 수행한다.
즉 노드 H는 상기 Lock Request packet의 arg_value 필드값과 현재 CAR의 값(new_value)을 비교한 후 같지 않으면 CAR의 값을 변경하지 않은 후 자신의 현재 CAR의 값(new_value)을 Response packet의 old_value 필드에 기록한 후 Lock Response Subaction을 수행한다.
이에 따라 채널 할당을 요구한 노드 A는 상기 노드 H로부터 수신된 Lock Transaction의 old_value 필드값을 자신의 arg_register의 값과 비교한다.
상기 비교결과 같지 않으므로 자신이 채널을 할당받기 전에 다른 노드(들)가 먼저 Compare-swap Lock Transaction을 통하여 상기 노드 H의 CAR의 값을 변경시켜 채널을 할당받았다는 것으로 판단한 후 Compare-swap Lock Request subaction을 디트라이(retry)하여 다시 채널을 할당을 요구한다.
이때 노드 B는 상기 Lock Response packet의 old_value 필드값이 현재 CAR의 값을 나타내므로, Quadlet read request subaction을 재차 수행할 필요는 없다.
그러나 종래 기술에 따른 디지털 인터페이스의 버스 제어장치 및 방법은 다음과 같은 문제점이 있다.
첫째, 아이소크로너스 캐퍼블 노드 2개 이상이 동시에 서로 다른 채널 할당을 요구하였을 경우 요구된 채널이 미사용 중일지라도 우선 순위에 따라 아이소크로너스 리소스 매니저인 노드의 CAR값이 변경되기 때문에 채널을 할당받지 못한 노드(들)는 채널을 할당받기 위한 락 트랜잭션(Lock Transaction)을 리트라이(retry)해야 함으로 불필요한 Lock Transaction이 발생하게 된다.
둘째, 아이소크로너스 데이터 전송을 마친 후 할당받은 채널을 양도(Deallocation)하기 위한 컴페어 스왑 락 트랜잭션(Compare-swap Lock Transaction)의 경우에도 채널을 할당받은 노드만이 해당 채널을 양도하는 것임에도 불구하고 채널을 할당받은 다른 노드(들)에 의해 아이소크로너스 리소스 매니저인 노드의 채널 어베이러블 레지스터(Channel Available Register)값이 변경되었기 때문에 채널 양도를 위한 락 트랜잭션(Lock Transaction)을 리트라이(retry)해야 함으로 불필요한 Lock Transaction이 발생하게 된다.
셋째, 임의의 노드의 부가나 제거로 인하여 버스 리셋(Bus Reset)이 발생하여 버스 리셋 이전에 아이소크로너스 데이터를 전송하고 있던 노드들이 버스 리셋후 이이소크로너스 데이터 전송을 계속하기 위해서 적어도 1000㎳ 이내에 버스 리셋전에 할당받았던 채널을 다시 할당받아야 하는 경우에도 불필요한 락 트랜잭션(Lock Transaction)으로 인하여 정해진 시간내에 채널을 재할당받지 못하는 경우 발생하게 된다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, IEEE 1394 시리얼 버스상의 적어도 2개이상의 아이소크로너스 캐퍼블 노드에서 락 트랜잭션(lock transaction)을 이용하여 동시에 서로 다른 채널을 할당받으려고 할 경우 발생하는 리트라이(retry)를 감소시키기 위한 디지털 인터페이스의 버스 제어장치 및 방법을 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 디지털 인터페이스의 버스 제어방법의 특징은, 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로 락 트랜잭션(Lock Transaction)시 락 리퀘스트 패킷(Lock Request packet)과 락 리스펀스 패킷(Lock Response packet)의 확장코드 필드(Extended_code field)로 새로운 락 트랜잭션(Lock Transaction)을 설정하는 단계와, 상기 설정된 락 트랜잭션(Lock Transaction)의 수행시 다른 노드에 의해서 수행된 락 트랜잭션(Lock Transaction)이 자신이 할당 및 양도를 요구한 채널의 값을 변경시키지 않는 경우 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로부터 항상 채널을 할당받고 양도하는 단계를 포함하여 이루어지는데 있다.
상기 새로운 락 트랜잭션(Lock Transaction)은 채널 할당 요구시 채널 할당 펑션(ch_alloc function), 채널 양도 요구시 채널 양도 펑션(ch_dealloc function)을 이용하는 락 트랜잭션(Lock Transaction)임을 다른 특징으로 하는데 있다.
상기 채널을 할당받고 양도하는 단계에서 상기 채널 할당 펑션(ch_alloc function)을 이용한 락 트랜잭션(Lock Transaction)은 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)의 채널 어베이러블 레지스터(Channel Available Register)의 값중에서 원하는 채널의 값을 "1"로 설정하고 나머지는 "0"으로 설정하여 데이터 레지스터(data_register)에 저장한 후 채널 할당 락 리퀘스트 서브액션(Ch_alloc Lock Request subaction)을 수행하여 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로 전송하는 것을 특징으로 하는데 또다른 특징이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 디지털 인터페이스의 버스 제어장치의 특징은, 현재 채널의 할당 상태를 나타내는 아이소크로너스 리소스 매니저(Isochronous Resource Manager:IRM)의 채널 어베이러블 레지스터(Channel Available Register:CAR)와, 리드 리스펀스 패킷(Read Response packet)의 arg_value 필드값과 락 리스펀스 패킷(Lock Response packet)의 old_value 필드값을 저장하는 arg 레지스터와, 채널 할당 요구시 상기 arg 레지스터에 기록된 arg값에 의해서 필요한 채널의 비트만을 세팅하여 락 리퀘스트 패킷(Lock Request packet)의 data_value 필드를 통해서 IRM 노드의 CAR의 값을 변경하기 위한 값을 저장하는 data 레지스터와, 상기 락 리퀘스트 패킷(Lock Request packet)을 수신한 IRM은 할당을 요구시에는 old_value 및 data_value로, 양도 요구시에는 상기 두 값을 비교하여 같은 값만을 저장하는 compare 레지스터와, 상기 락 리퀘스트 패킷(Lock Request packet)을 수신한 IRM 노드가 현재 CAR의 값과 락 리퀘스트 패킷(Lock Request packet)의 data_value 필드값에 대해서 채널 할당 요구시에는 old_value와 data_value를 Exclusive_OR한 값을, 양도시에는 OR한 값을 저장하는 new_data 레지스터를 포함하여 구성되는데 있다.
본 발명은 채널 할당과 양도를 요구하기 위한 Lock Transaction시 Lock Request packet과 Lock Response packet의 Extended_code로 채널 할당 요구에는 ch_alloc function, 채널 양도 요구에는 ch_dealloc function과 같은 새로운 Lock Transaction을 사용함으로써, 먼저 다른 노드(들)에 의해서 수행된 Lock Transaction이 자신이 할당 및 양도할 수 있도록 함으로써, 불필요한 Lock Transation의 리트라이(retry)를 방지하여 전체 IEEE 1394 시리얼 버스의 성능을 향상시킬 수 있다.
본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
이하, 본 발명에 따른 디지털 인터페이스의 버스 제어장치 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.
도 3a 및 도 3b 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법에 따라 IEEE 1394 시리얼 버스에 연결된 하나 또는 2개의 아이소크로너스 캐퍼블 노드(isochronous capable node)에서 채널 할당을 요구하기 위한 트랜잭션 시퀀스(transaction sequence)의 예를 나타낸 도면이고, 도 4a 내지 도 4f 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법에 따라 아이소크로너스 캐퍼블 노드(isochronous capable node)가 채널 할당 및 양도를 위해 사용하는 내부 레지스터들을 나타낸 도면이고, 도 5a 내지 도 5c 는 본 발명에 따른 디지털 인터페이스의 버스 제어방법의 플로우 챠트를 나타낸 도면이다.
이와 같이 구성된 본 발명에 따른 디지털 인터페이스의 버스 제어장치 및 방 법에 대하여 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.
먼저, 도 1 에 도시된 바와 같이 IEEE 1394 시리얼 버스상의 아이소크로너스 캐퍼블 노드 A(Isochronous capable Node_A)(또는 아이소크로너스 캐퍼블 노드 B(Node_B))는 아이소크로너스 데이터(Isochronous data)를 전송하려고 할 경우 전송에 필요한 채널이 이용 가능한지를 확인하기 위하여 도 3a 에 도시된 바와 같이 노드 E(Node_E)(또는 노드 C(Node_C)와 노드 F(Node_F))를 통해 도 4a 에 도시된 바와 같은 IRM인 노드 H(Node_H)의 CAR(Channel Avail Register)로 쿼드렛 리드 리스펀스 서브액션(Quadlet Read Response subaction)을 수행하여 채널 할당 락 리퀘스트 패킷(ch_alloc Lock Request packet)을 전송한다.
그러면 상기 Quadlet Read Response subaction을 수신한 노드 H는 이에 대한 응답으로 쿼드렛 리드 리퀘스트 서브액션(Quadlet Read Request subaction)을 수행하여 CAR의 현재 상태를 알려준다.
이에 따라 상기 Quadlet Read Request subaction을 수신한 노드 A(또는 노드 B(Node_B))는 상기 Quadlet Read Request subaction의 리퀘스트 패킷(Request packet)내의 쿼드렛 데이터 필드(quadlet_data field)의 arg_value 필드값을 도 4b 에 도시된 바와 같은 자신의 arg_register에 저장한 후 아이소크로너스 데이터를 전송하기 위한 채널이 사용 가능한지를 검색한다.
즉, 처음 아이소크로너스 데이터를 전송하려는 노드(들)는 미사용 채널이 있는지를, 버스 리셋(Bus Reset) 발생전에 아이소크로너스 데이터를 전송하고 있던 노드(들)는 리셋 발생전에 자신이 할당받아 사용하던 채널이 사용 가능한지를 검색 한다.
상기 검색결과 채널이 사용 가능하다면 노드 A(또는 노드 B(Node_B))는 사용하고자 하는 채널의 해당 비트만을 "1"로 설정(채널 양도시에서는 "0"으로 설정)하고, 나머지 비트들 모두를 "0"으로 설정(채널 양도시에는 "1"로 설정)하여 도 4c 에 도시된 바와 같은 data_register에 저장한 후 채널 할당 락 리퀘스트 패킷(Ch_alloc Lock Request packet)의 data_value 필드에 기록한 후 채널 할당 락 리퀘스트 서브액션(Ch_alloc Lock Request Subaction)을 이용(채널 양도시에는 채널 양도 락 리퀘스트 서브액션(Ch_dealloc Lock Request Subaction)을 이용)하여 상기 노드 H로 채널 할당을 요구한다.
그러면 상기 Ch_alloc Lock Request packet을 수신한 노드 H는 자신의 data_register에 기록한 후 자신의 현재 CAR의 값(old_value)과 논리곱(AND)한 값을 자신의 compare_register에 저장(채널 양도시에는 논리합(OR)한 값을 저장)하고, old_value와 data_value를 부정 논리합(Exclusive OR)한 값을 new_data_register에 저장(채널 양도시에는 상기 old_value와 data_value의 부정을 취한 값과 논리합(OR)하여 저장)한다.
이어 노드 H는 Ch_alloc Lock Response packet의 compare_value 필드에 자신의 compare_register의 값과 old_value 필드에 현재 자신의 CAR의 값을 기록한 후 노드 A로 전송하고, compare_register의 값이 data_register의 값과 같으므로 new_data_register의 값으로 CAR의 값을 변경하고, 같지 않을 경우는 CAR의 값을 변경하지 않는다.
이에 따라 노드 A는 상기 노드 H로부터 전송된 Ch_alloc Lock Response packet의 compare_value 필드값을 자신의 compare_register에 그리고 old_value 필드값을 자신의 arg_register에 저장한 후 상기 Ch_alloc Lock Response packet의 rcode가 resp_complete인지를 검색하여 resp_complete라면 자신의 compare_register의 값과 data_register의 값을 비교하여 같으면 채널 할당에 성공했다는 것을 인식하고, 상기 resp_complete가 아니거나 compare_register의 값과 data_register의 값이 같지 않다면 arg-register에 기록된 값을 이용하여 Ch_alloc Lock Request subaction을 리트라이(retry)한다.
한편, 노드 A와 노드 B에서 아이소크로너스 데이터를 전송하기 위하여 각각 노드 E(Node E), 노드 C와 노드 F를 통해 아이소크로너스 리소스 매니저이면서 루트 노드인 노드 H로 채널 할당을 요구하기 위한 Quadlet Read Transaction의 Quadlet Read Response subaction을 도 3b 에 도시된 바와 같이 수행하였을 경우 노드 H는 노드 A가 노드 B보다 루트 노드에 가깝기 때문에 우선 순위가 높으므로 상기 노드 A의 Quadlet Read Response subaction에 상응하는 Quadlet Read Request subaction을 수행한다.
즉 상기 노드 A로부터 Quadlet Read Response subaction을 수신한 노드 H는 이에 대한 응답으로 Quadlet Read Request subaction을 수행하여 현재 자신의 CAR 상태를 상기 노드 A로 알려준다.
이후 상기 노드 B로부터 Quadlet Read Response subaction을 수신한 노드 H는 Quadlet Read Response subaction에 상응하는 Quadlet Read Request subaction 을 수행하여 상기 노드 A로 알려준 CAR 상태와 동일한 CAR 상태를 노드 B로 알려준다.
이에 따라 상기 Quadlet Read Request subaction을 수신한 노드 A는 상기 Quadlet Read Request subaction의 리퀘스트 패킷(Request packet)내의 쿼드렛 데이터 필드(quadlet_data field)의 arg_value 필드값을 도 4b 에 도시된 바와 같은 자신의 arg_register에 저장한 후 아이소크로너스 데이터를 전송하기 위한 채널이 사용 가능한지를 검색한다.
즉, 처음 아이소크로너스 데이터를 전송하려는 노드(들)는 미사용 채널이 있는지를, 버스 리셋(Bus Reset) 발생전에 아이소크로너스 데이터를 전송하고 있던 노드(들)는 리셋 발생전에 자신이 할당받아 사용하던 채널이 사용 가능한지를 검색한다.
상기 검색결과 채널이 사용 가능하다면 노드 A는 사용하고자 하는 채널의 해당 비트만을 "1"로 설정하고, 나머지 비트들 모두를 "0"으로 설정하여 도 4c 에 도시된 바와 같은 data_register에 저장한 후 채널 할당 락 리퀘스트 패킷(Ch_alloc Lock Request packet)의 data_value 필드에 기록한 후 채널 할당 락 리퀘스트 서브액션(Ch_alloc Lock Request Subaction)을 이용하여 상기 노드 H로 채널 할당을 요구한다.
마찬가지로 상기 검색결과 채널이 사용 가능하다면 노드 B는 사용하고자 하는 채널의 해당 비트만을 "1"로 설정하고, 나머지 비트들 모두를 "0"으로 설정하여 도 4c 에 도시된 바와 같은 data_register에 저장한 후 채널 할당 락 리퀘스트 패 킷(Ch_alloc Lock Request packet)의 data_value 필드에 기록한 후 채널 할당 락 리퀘스트 서브액션(Ch_alloc Lock Request Subaction)을 이용하여 상기 노드 H로 채널 할당을 요구한다.
그러면 상기 노드 A로부터 Ch_alloc Lock Request packet을 수신한 노드 H는 자신의 data_register에 기록한 후 자신의 현재 CAR의 값(old_value)과 논리곱(AND)한 값을 자신의 compare_register에 저장하고, old_value와 data_value를 부정 논리합(Exclusive OR)한 값을 new_data_register에 저장한다.
이어 노드 H는 Ch_alloc Lock Response packet의 compare_value 필드에 자신의 compare_register의 값과 old_value 필드에 현재 자신의 CAR의 값을 기록한 후 노드 A로 전송하고, compare_register의 값이 data_register의 값과 같으므로 new_data_register의 값으로 CAR의 값을 변경하고, 같지 않을 경우는 CAR의 값을 변경하지 않는다.
또한, 노드 H는 도 3b 에 도시된 바와 같이, 노드 A로부터 Ch_alloc Lock Request Subaction 다음에 전송되어 펜딩(Pending)된 노드 B의 Ch_alloc Lock Request Subaction에 따라서 전송된 lock Request packet의 data_value 필드값을 자신이 data_register에 기록하고, old_value(현재 CAR의 값)와 data_value를 논리곱(AND)한 값을 compare_register에 저장하고, old_value와 data_value를 부정 논리합(Exclusive OR)한 값을 new_data_register에 저장한다.
이어 노드 H는 Ch_alloc Lock Response packet의 compare_value 필드에 자신의 compare_register의 값과 old_value 필드에 현재 자신의 CAR의 값을 기록한 후 노드 B로 전송하고, compare_register의 값이 data_register의 값과 같으므로 new_data_register의 값으로 CAR의 값을 변경하고, 같지 않을 경우는 CAR의 값을 변경하지 않는다.
이에 따라 노드 A는 상기 노드 H로부터 전송된 Ch_alloc Lock Response packet의 compare_value 필드값을 자신의 compare_register에 그리고 old_value 필드값을 자신의 arg_register에 저장한 후 상기 Ch_alloc Lock Response packet의 rcode가 resp_complete인지를 검색하여 resp_complete라면 자신의 compare_register의 값과 data_register의 값을 비교하여 같으면 채널 할당에 성공했다는 것을 인식하고, 상기 resp_complete가 아니거나 compare_register의 값과 data_register의 값이 같지 않다면 arg-register에 기록된 값을 이용하여 Ch_alloc Lock Request subaction을 리트라이(retry)한다.
마찬가지로 노드 B는 상기 노드 H로부터 전송된 Ch_alloc Lock Response packet의 compare_value 필드값을 자신의 compare_register에 그리고 old_value 필드값을 자신의 arg_register에 저장한 후 상기 Ch_alloc Lock Response packet의 rcode가 resp_complete인지를 검색하여 resp_complete라면 자신의 compare_register의 값과 data_register의 값을 비교하여 같으면 채널 할당에 성공했다는 것을 인식하고, 상기 resp_complete가 아니거나 compare_register의 값과 data_register의 값이 같지 않다면 arg-register에 기록된 값을 이용하여 Ch_alloc Lock Request subaction을 리트라이(retry)한다.
한편, 채널 양도(Channel Deallocation)일 경우에는 도 4a 내지 도 4f 에 도 시된 레지스터들의 값을 변경하는 연산만 다르고 기본적인 Lock Transition의 개념은 동일하므로 이에 대한 설명은 생략한다.
이상에서 설명한 바와 같이 본 발명에 따른 디지털 인터페이스의 버스 제어장치 및 방법은 다음과 같은 효과가 있다.
첫째, IEEE 1394 시리얼 버스상의 적어도 2개이상의 아이소크로너스 캐퍼블 노드에서 락 트랜잭션(lock transaction)을 이용하여 동시에 서로 다른 채널을 할당받으려고 할 경우 발생하는 리트라이(retry)를 감소시켜 불필요한 Lock Transaction의 발생을 방지함으로써 디지털 인터페이스의 성능을 향상시킬 수 있다.
둘째, 아이소크로너스 데이터 전송을 마친 후 할당받은 채널을 양도(Deallocation)하기 위한 락 트랜잭션(Lock Transaction)의 경우에 채널을 할당받은 다른 노드(들)에 의해 아이소크로너스 리소스 매니저인 노드의 CAR값이 변경되어도 할당받은 자신의 채널만 변경되지 않았다면 채널을 양도할 수 있게 된다.
셋째, 임의의 노드의 부가나 제거로 인하여 버스 리셋(Bus Reset)이 발생하여 버스 리셋 이전에 아이소크로너스 데이터를 전송하고 있던 노드들이 버스 리셋후 이이소크로너스 데이터 전송을 계속하기 위해서 적어도 1000㎳ 이내에 버스 리셋전에 할당받았던 채널을 다시 할당받아야 하는 경우에도 불필요한 Lock Transaction을 줄여 정해진 시간내에 채널을 재할당받을 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니 하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.


Claims (4)

  1. 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로 락 트랜잭션(Lock Transaction)시 락 리퀘스트 패킷(Lock Request packet)과 락 리스펀스 패킷(Lock Response packet)의 확장코드 필드(Extended_code field)로 새로운 락 트랜잭션(Lock Transaction)을 설정하는 단계와;
    아이소크로너스 데이터(Isochronous data)를 전송하는 노드가 다른 노드에 의해서 먼저 수행된 락 트랜잭션(Lock Transaction)을 상기 아이소크러너스 리소스 매니저(Isochronous Resource Manager)를 이용하여 자신이 할당 및 양도를 요구한 채널(channel)의 값으로 항상 변경하는 단계를 포함하여 구성된 것을 특징으로 하는 디지털 인터페이스의 버스 제어방법.
  2. 제 1 항에 있어서,
    상기 새로운 락 트랜잭션(Lock Transaction)은 채널 할당 요구시 채널 할당 펑션(ch_alloc function), 채널 양도 요구시 채널 양도 펑션(ch_dealloc function)을 이용하는 락 트랜잭션(Lock Transaction)임을 특징으로 하는 디지털 인터페이스의 버스 제어방법.
  3. 제 1 항에 있어서,
    상기 채널을 할당받고 양도하는 단계에서 상기 채널 할당 펑션(ch_alloc function)을 이용한 락 트랜잭션(Lock Transaction)은 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)의 채널 어베이러블 레지스터(Channel Available Register)의 값중에서 원하는 채널의 값을 "1"로 설정하고 나머지는 "0"으로 설정하여 데이터 레지스터(data_register)에 저장한 후 채널 할당 락 리퀘스트 서브액션(Ch_alloc Lock Request subaction)을 수행하여 상기 아이소크로너스 리소스 매니저(Isochronous Resource Manager)로 전송하는 것을 특징으로 하는 디지털 인터페이스의 버스 제어방법.
  4. 현재 채널의 할당 상태를 나타내는 아이소크로너스 리소스 매니저(Isochronous Resource Manager:IRM)의 채널 어베이러블 레지스터(Channel Available Register:CAR)와;
    리드 리스펀스 패킷(Read Response packet)의 arg_value 필드값과 락 리스펀스 패킷(Lock Response packet)의 old_value 필드값을 저장하는 arg 레지스터와;
    채널 할당 요구시 상기 arg 레지스터에 기록된 arg값에 의해서 필요한 채널의 비트만을 세팅하여 락 리퀘스트 패킷(Lock Request packet)의 data_value 필드를 통해서 IRM 노드의 CAR의 값을 변경하기 위한 값을 저장하는 data 레지스터와;
    상기 락 리퀘스트 패킷(Lock Request packet)을 수신한 IRM은 할당을 요구시에는 old_value 및 data_value로, 양도 요구시에는 상기 두 값을 비교하여 같은 값만을 저장하는 compare 레지스터와;
    상기 락 리퀘스트 패킷(Lock Request packet)을 수신한 IRM 노드가 현재 CAR 의 값과 락 리퀘스트 패킷(Lock Request packet)의 data_value 필드값에 대해서 채널 할당 요구시에는 old_value와 data_value를 Exclusive_OR한 값을, 양도시에는 OR한 값을 저장하는 new_data 레지스터를 포함하여 구성된 것을 특징으로 하는 디지털 인터페이스의 버스 제어장치.
KR1019990035131A 1999-08-24 1999-08-24 디지털 인터페이스의 버스 제어장치 및 방법 KR100628177B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990035131A KR100628177B1 (ko) 1999-08-24 1999-08-24 디지털 인터페이스의 버스 제어장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990035131A KR100628177B1 (ko) 1999-08-24 1999-08-24 디지털 인터페이스의 버스 제어장치 및 방법

Publications (2)

Publication Number Publication Date
KR20010018958A KR20010018958A (ko) 2001-03-15
KR100628177B1 true KR100628177B1 (ko) 2006-09-27

Family

ID=19608432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990035131A KR100628177B1 (ko) 1999-08-24 1999-08-24 디지털 인터페이스의 버스 제어장치 및 방법

Country Status (1)

Country Link
KR (1) KR100628177B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617831B1 (ko) * 2005-02-18 2006-08-28 삼성전자주식회사 Ieee 1394 네트워크에서 전송되는 스트림 수신을 위한자동 채널 선택 방법

Also Published As

Publication number Publication date
KR20010018958A (ko) 2001-03-15

Similar Documents

Publication Publication Date Title
US5689244A (en) Communication system and electronic apparatus
US7701855B2 (en) Communication device, communication system, communication method, communication program and recording medium storing the communication program
US7069373B2 (en) USB endpoint controller flexible memory management
JPS63300650A (ja) ネットワ−ク・システム
JP3194318B2 (ja) バス管理方法
KR100662484B1 (ko) 디지털 인터페이스에서의 버스 제어방법
KR920009449B1 (ko) 공통 버스제어방법 및 시스템
JP2001282701A (ja) 情報処理装置及び情報処理方法
US6950408B1 (en) Speed converter for IEEE-1394 serial bus network
KR100628177B1 (ko) 디지털 인터페이스의 버스 제어장치 및 방법
US7017180B1 (en) Logged-in device and log-in device
KR101197294B1 (ko) QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법
JP3091184B2 (ja) 通信システム及び通信装置
US7227846B2 (en) Data transmission/ reception system, connection restoring method and information transmission/ reception apparatus
JP2002033739A (ja) 通信制御装置および方法
KR100617831B1 (ko) Ieee 1394 네트워크에서 전송되는 스트림 수신을 위한자동 채널 선택 방법
JP3194381B2 (ja) バス管理方法
KR100677222B1 (ko) Ieee 1394 기반의 양방향 비동기 연결 방법
JP4129603B2 (ja) 情報処理装置および方法、並びに提供媒体
KR100294671B1 (ko) 시리얼버스 매니지먼트장치 및 방법
JP3194380B2 (ja) 電子機器
JP3194382B2 (ja) バス管理方法
JP3219085B2 (ja) バス管理方法
JP3221442B2 (ja) 電子機器
JPH11177589A (ja) データ転送装置およびデータ転送装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20090619

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee