KR100677222B1 - Ieee 1394 기반의 양방향 비동기 연결 방법 - Google Patents

Ieee 1394 기반의 양방향 비동기 연결 방법 Download PDF

Info

Publication number
KR100677222B1
KR100677222B1 KR1020040110656A KR20040110656A KR100677222B1 KR 100677222 B1 KR100677222 B1 KR 100677222B1 KR 1020040110656 A KR1020040110656 A KR 1020040110656A KR 20040110656 A KR20040110656 A KR 20040110656A KR 100677222 B1 KR100677222 B1 KR 100677222B1
Authority
KR
South Korea
Prior art keywords
client
input
port
server
information
Prior art date
Application number
KR1020040110656A
Other languages
English (en)
Other versions
KR20060072255A (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 KR1020040110656A priority Critical patent/KR100677222B1/ko
Publication of KR20060072255A publication Critical patent/KR20060072255A/ko
Application granted granted Critical
Publication of KR100677222B1 publication Critical patent/KR100677222B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • 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
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN

Landscapes

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

Abstract

본 발명은 IEEE 1394 기반의 양방향 비동기 연결 방법에 관한 것으로 특히, IEEE 1394 규격의 비동기 연결 규칙(Asynchronous connection protocol)을 확장하고 이를 이용하여 단일 플러그(plug)만으로 양방향 데이터 송수신을 할 수 있도록 함에 그 목적이 있다. 이러한 목적의 본 발명은 클라이언트(420)와 서버(430) 간에 연결을 설정하는 컨트롤러(410)를 구비하여 비동기 연결을 설정하는 방법에 있어서, 상기 클라이언트(420)로 포트 할당을 위한 ALLOCATE_EX 명령을 보내 그 클라이언트(420)의 입,출력 포트에 대한 정보를 얻는 단계와, 상기 입,출력 포트에 대한 정보를 포트 할당 및 정보전달을 위한 ALLOCATE_ATTACH_EX 명령에 실어 상기 서버(430)로 보내는 단계와, 상기 서버(430)로부터 얻은 입,출력 포트에 대한 정보를 정보전달을 위한 ATTACH_EX 명령에 실어 상기 클라이언트(420)에게 보내는 3단계의 과정을 수행하여 양방향 비동기 연결을 설정하도록 구성하는 것을 특징으로 한다.

Description

IEEE 1394 기반의 양방향 비동기 연결 방법{METHOD FOR BIDIRECTIONAL ASYNCHRONOUS CONNECTION BASED ON IEEE 1394}
도1은 기존 규격에서 정의하고 있는 비동기 연결을 위한 플러그(plug)의 구조도.
도2는 본 발명의 실시 예를 위한 확장된 비동기 연결 제어 명령 프레임의 구조도.
도3은 도2에서 connection bits 값의 예시도.
도4는 도4는 양방향 비동기 연결 설정 과정을 보인 동작 순서도.
도5는 ALLOCATE_EX 명령과 그에 대한 응답의 예시도.
도6은 ALLOCATE_ATTACH_EX 명령과 그에 대한 응답의 예시도.
도7은 ATTACH_EX 명령과 그에 대한 응답의 예시도.
도8은 도8은 양방향 비동기 연결 해제 과정을 보인 동작 순서도.
도9는 DETACH_EX 명령과 그에 대한 응답의 예시도.
도10은 DETACH_RELEASE_EX 명령과 그에 대한 응답의 예시도.
도11은 RELEASE_EX 명령과 그에 대한 응답의 예시도.
도12는 본 발명의 실시 예에서 RESTORE_PORT_EX 명령과 그에 대한 응답의 예시도.
* 도면의 주요부분에 대한 부호 설명 *
410 : 컨트롤러(controller) 420 : 클라이언트(client)
430 : 서버(server)
본 발명은 통신 프로토콜에 관한 것으로 특히, IEEE 1394 기반의 양방향 비동기 연결 방법에 관한 것이다.
IEEE 1394는 대용량의 저장매체들간에 고속으로 정보를 전송하기 위해 제안된 고성능 직렬버스 인터페이스(serial bus interface) 표준으로 대역폭이 100∼400Mbps, 노드(node) 간 전송거리는 4.5M이다.
IEEE 1394는 400Mbps의 고속 전송이 가능하기 때문에 가전 AV 기기간의 대용량 데이터 전송에 적합하고, 비동기식 전송(Asynchronous transfer) 뿐만 아니라 등시 전송(Isochronous transfer)도 지원하여 실시간 전송을 보장해주기 때문에 고화질 동영상 전송에 적합하다.
또한 IEEE 1394는 직렬버스 구조이기 때문에 비교적 원거리 통신이 가능하고, 서로 다른 기기 간의 네트워크 인터페이스(network interface)로 활용할 수 있다는 장점도 있다.
1394 Trade Association(이하 "1394TA"라 약칭함)에서 정의하고 있는 AV/C compatible Asynchronous Serial Bus Connections(비동기식 직렬 버스 연결, 이하 "비동기 연결"이라 약칭함)는 IEEE 1394 직렬버스(serial bus)의 통신규격 중 하나로서 하나의 프로듀서 노드(producer node)의 데이터를 하나 이상의 컨슈머 노드(consumer node)에 전송하는 데이터 전송 모델이다.
여기서 프로듀서(producer)는 데이터를 보내는 주체를 말하고, 컨슈머(consumer)는 프로듀서가 보낸 데이터를 받는 주체를 말한다.
프로듀서와 컨슈머는 각각 비동기 연결을 위한 포트(port)를 가지며 데이터 전송은 프로듀서가 데이터를 컨슈머의 세그먼트 버퍼(segment buffer)에 대해 라이트 트랜잭션(write transaction)을 수행함으로써 이루어진다.
또한, 각 포트마다 레지스터(APR : Asynchronous Port Register)가 존재하고 프로듀서와 컨슈머가 각각 상대방의 레지스터에 대하여 compare-and-swap lock transaction을 수행하는 방식으로 플로우 제어(flow control)가 이루어진다.
한편, 프로듀서와 컨슈머의 포트는 컨트롤러(controller)가 비동기 연결을 위한 AV/C 명령(command)을 프로듀서와 컨슈머에 각각 전달함으로써 할당된다. 여기서 컨트롤러는 프로듀서와 컨슈머에 AV/C 명령을 보낼 수 있는 주체를 말한다.
예로, 네트워크에 셋탑박스, DTV가 연결된 경우를 가정하면 셋탑박스는 프로듀서, DTV는 컨슈머인 동시에 컨트롤러가 되는 것이다.
통상적으로 프로듀서, 컨슈머, 컨트롤러는 논리적인 단위이고 일반적으로 컨트롤러가 단독으로 존재하지 않고 프로듀서 또는 컨슈머와 통합된 형태로 존재하는 경우가 대부분이다. 특히, 컨슈머와 컨트롤러가 통합된 모델이 가장 일반적이다.
실질적으로 컨트롤러가 컨슈머 또는 프로듀서와 통합된 모델의 경우 그 둘 사이의 명령(command) 교환은 보통 생략한다. 즉, 어떤 노드의 컨트롤러는 자신의 컨슈머 또는 프로듀서와는 명령을 주고 받을 필요가 없이 상대방 노드의 컨슈머/프로듀서와 명령을 교환한다.
하지만, 표준규격상에는 논리적인 단위간에 명령을 주고 받는 과정에 대해 언급하고 있기 때문에 컨트롤러, 컨슈머, 프로듀서가 각기 다른 개체인 것처럼 서술하고 명령도 그에 맞게 설명하기로 한다.
일반적으로 비동기 연결을 위한 포트 할당 및 전송 과정은 다음과 같다.
우선 컨트롤러가 컨슈머에게 ALLOCATE 명령을 보내어 그 컨슈머가 포트를 할당할 수 있도록 하고 그 컨슈머의 포트에 대한 정보를 받는다.
컨트롤러가 컨슈머의 포트에 대한 정보를 ALLOCATE_ATTACH 명령에 실어서 프로듀서에게 보내면 프로듀서는 포트를 할당한 후 자신의 포트에 대한 정보를 다시 컨트롤러에 넘겨준다.
마지막으로 컨트롤러가 프로듀서의 포트에 대한 정보를 ATTACH 명령에 실어 컨슈머에 전달하면 프로듀서와 컨슈머가 각각 상대방의 포트에 대한 정보를 알게 되어 비동기 연결을 맺을 준비가 끝나고 컨슈머가 프로듀서의 레지스터(output Asynchronous Port Register : iAPR)에 대해 lock transaction을 수행함으로써 데이터 전송이 시작된다.
한편 비동기 연결의 연결 해제 과정은 다음과 같다.
먼저, 컨트롤러가 컨슈머에 DETACH 명령을 보내어 그 컨슈머가 연결을 해제할 수 있도록 한 후 프로듀서에 DETACH_RELEASE 명령을 보내어 그 프로듀서도 연결을 해제하고 그 연결을 위해 설정되었던 포트 할당을 해제할 수 있도록 한다.
마지막으로 컨트롤러가 컨슈머에 RELEASE 명령을 보냄으로써 프로듀서와 연결 해제가 완료되었음을 알리면 컨슈머가 비동기 연결을 위해 설정하였던 포트 할당을 해제함으로써 비동기 연결이 종료된다.
그러나, 종래의 비동기 연결은 기본적으로 프로듀서가 컨슈머의 세그먼트 버퍼(segment buffer)에 직접 데이터를 라이트하는 push 방식이므로 현 연결에서 컨슈머의 데이터를 프로듀서에게 전달할 수 없다는 단점이 있다.
즉, 프로듀서의 데이터를 컨슈머에 전달하는 단방향 전송은 가능하지만, 별도의 연결을 설정하지 않는 이상 동일한 연결을 통해서 프로듀서가 컴서머로부터 데이터를 읽어 들이거나 컨슈머가 프로듀서에 데이터를 push하는 것은 불가능하다.
또한, 종래에는 양방향 통신을 위해 독립된 2개의 비동기 연결이 설정되었다고 해도 임의의 두 연결이 쌍을 이루는 관계인지 알 수 없어 정상적인 데이터 전송이 어렵다는 단점이 있다.
따라서, 본 발명은 종래의 문제점을 개선하기 위하여 IEEE 1394 규격의 비동기 연결 규칙(Asynchronous connection protocol)을 확장하고 이를 이용하여 단일 플러그(plug)만으로 양방향 데이터 송수신을 할 수 있도록 창안한 IEEE 1394 기반의 양방향 비동기 연결 방법을 제공하는데 그 목적이 있다.
즉, 본 발명의 목적은 종래 기술의 단방향 전송 방식을 확장하여 임의의 두 노드(node)에 대한 양방향 데이터 전송이 가능하도록 하기 위하여 확장된 비동기 연결 제어 명령(asynchronous connection control command)을 정의하고, 이 명령을 통해 두 노드 간에 비동기 연결을 설정할 때 기존에 주고받았던 포트 정보 외에 각각의 입력포트(input port)와 출력포트(output port)에 대한 정보를 추가로 주고받도록 하여 서로 상대방의 입력포트(input port)로 데이터를 송신하고 자신의 출력포트(output port)로 데이터를 수신할 수 있게 하는 것이다.
본 발명은 두 노드가 기존 규격을 확장한 비동기 연결 제어 명령(asynchronous connection control command)과 그에 대한 응답(response)을 처리하도록 정의함에 있어서, 포트 할당을 위한 ALLOCATE_EX, 정보전달을 위한 ATTACH_EX, 해제포트 정보전달을 위한 DETACH_EX, 연결해제를 위한 RELEASE_EX 명령을 처리할 수 있는 노드를 클라이언트(client)로 정의하고, 포트 할당 및 정보전달을 위한 ALLOCATE_ATTACH_EX, 해제포트 정보전달 및 연결해제를 위한 DETACH_RELEASE_EX 명령을 처리할 수 있는 노드를 서버(server)로 정의함을 특징으로 한다.
여기서, 노드(node)란 물리적인 두 기기를 지칭하는 것이 아니라 논리적으로 비동기 연결(asynchronous connection)을 설정할 수 있는 단위를 말한다.
우선, 본 발명은 컨트롤러(controller)가 클라이언트에게 ALLOCATE_EX 명령을 보내 클라이언트의 입,출력 포트에 대한 정보를 얻고 이를 ALLOCATE_ATTACH_EX 명령에 실어 서버에 보낸 다음 그 서버로부터 얻은 입,출력 포트에 대한 정보를 ATTACH_EX 명령에 실어 클라이언트에게 보내는 3단계의 과정을 수행하여 양방향 비동기 연결을 설정하는 것을 특징으로 한다.
또한, 본 발명은 컨트롤러가 클라이언트에게 DETACH_EX 명령을 보내고 이어서 서버에게 DETACH_RELEASE_EX 명령을 보내며 다시 클라이언트에게 RELEASE_EX 명령을 보내는 3단계의 과정으로 수행하여 클라이언트와 서버가 양방향 비동기 연결을 위해 할당하였던 플러그와 포트 자원을 환원함으로써 양방향 비동기 연결을 해제하는 것을 특징으로 한다.
그리고, 본 발명은 버스 리셋(bus reset) 이후 양방향 비동기 연결을 복구하려는 경우에는 컨트롤러가 클라이언트와 서버에게 각각 RESTORE_PORT_EX 명령을 한번씩 보내는 것을 특징으로 한다.
한편, 상기 과정을 수행함에 있어서, 기존의 규격에서 예비(reserved)로 할당되어있는 명령 프레임의 마지막 1바이트(byte) 예비 필드(reserved field)에는 connection bits, 해당 노드의 추가 포트에 대한 port ID와 port bits를 삽입하여 양방향 비동기 연결을 설정하는데 사용하는 것을 특징으로 한다.
즉, 본 발명은 상기의 목적을 달성하기 위하여 컨트롤러(controller), 서버(server), 클라이언트(client)를 직렬버스 상에 구비하고, 상기 서버와 클라이언트에 대응하는 2개의 노드간 데이터 전송 방법에 있어서, 상기 컨트롤러가 포트할당을 위한 명령을 상기 클라이언트에 전송하고 그에 대한 응답에 의해 클라이언트의 플러그(plug) 및 포트(port) 정보를 획득하는 단계와, 상기 컨트롤러가 클라이언트의 플러그 및 포트 정보와 함께 포트할당을 위한 명령을 서버에 전송하고 그에 대한 응답에 의해 서버의 플러그 및 포트 정보를 획득하는 단계와, 상기 컨트롤러가 서버의 플러그 및 포트 정보를 클라이언트에게 전송하는 단계와, 상기 서버와 클라이언트가 상대방 플러그 및 포트 정보를 참조하여 양방향 통신을 설정하는 단계와, 상기 컨트롤러가 클라이언트와 서버에게 연결 해제를 위한 명령을 이어서 전송하여 상기 비동기 연결을 해제시키는 단계를 수행하도록 구성함을 특징으로 한다.
이하, 본 발명을 도면에 의거 상세히 설명하면 다음과 같다.
도1은 기존 규격에서 정의하고 있는 비동기 연결을 위한 플러그(plug)의 구조이다.
하나의 플러그에는 처음 64바이트 영역에 컨트롤 레지스터(control register)가 위치하고, 나머지 영역이 세그먼트 정보(segment info.)를 위해 할당된다.
상기 컨트롤 레지스터는 모두 15개가 존재하고 그 중에서 첫 번째 레지스터가 해당 플러그의 입력포트에 대한 레지스터에 대응되고 나머지 14개는 출력포트에 대한 레지스터에 순서대로 대응된다.
한편, 데이터를 기록하는 공간인 세그먼트 버퍼(segment buffer)는 세그먼트 정보(segment info.) 영역에 존재하며, 데이터 송신은 상대방의 세그먼트 버퍼 주소에 block write transaction을 수행함으로써 이루어진다.
하나의 단방향 비동기 연결을 위해서 컨슈머(consumer)에서는 입력포트와 세그먼트 버퍼를 할당하고 프로듀서(producer)에서는 출력포트를 할당한다.
이때, 컨슈머에서 동일한 플러그에 대해서 추가로 출력포트를 할당하고 프로 듀서에서도 같은 플러그에 대해서 추가로 입력포트와 세그먼트 버퍼를 할당하면 기존 연결과 전송방향이 반대인 연결을 성립시킬 수 있다. 이 두 연결은 실질적으로 별도의 단방향 비동기 연결이지만 하나의 플러그에 대해 대칭 관계에 있고 한번의 핸드셰이킹(handshaking) 과정으로 설정되므로 논리적으로 하나의 양방향 비동기 연결이 된다.
본 발명에서는 입력포트 외에 추가로 출력포트를 할당하는 노드를 클라이언트(client), 출력포트 외에 추가로 입력포트를 할당하는 노드를 서버(server)라고 정의한다.
또한, 본 발명은 확장된 비동기 연결 제어 명령 프레임(asynchronous connection control command frame)을 정의하여 양방향 비동기 연결에 사용할 수 있도록 한다.
본 발명에서 비동기 연결 제어 명령 프레임의 구조는 도2에 도시한 바와 같이, 기존의 비동기 연결 제어 명령 프레임에서 마지막의 예비(reserved)로 정의된 'operand[20]' 1바이트 중에서 2비트를 connection bits로, 4비트를 추가 port ID(또는 extra port ID)로, 마지막 2비트를 추가 포트의 포트 비트로 할당한다.
상기 connection bits는 해당 플러그의 입력포트와 출력포트에 대한 지원 여부 유형을 나타내는 것으로, 지원 유형에 따른 각 값의 의미는 도3과 같다. 예로, connection bits가 '
Figure 112004060716570-pat00001
'이면 해당 플러그가 입력포트와 출력포트를 동시에 사용할 수 있음을 뜻함으로 양방향 비동기 연결이 가능함을 뜻한다.
상기 4비트의 추가 port ID는 클라이언트의 경우 양방향 비동기 연결을 위한 추가 출력포트의 식별자(ID)를 의미하고, 서버의 경우에는 추가 입력포트의 식별자를 의미한다.
상기 2비트t의 추가 port bits는 추가 포트에 대한 제약 조건 및 능력을 의미하는 것으로 기존 규격에서 정의하는 port bits와 같은 방식으로 정의된다.
상기 3가지의 새로운 필드는 ALLOCATE_EX, ATTACH_EX, ALLOCATE_ATTACH_EX, RELEASE_EX, DETACH_EX, DETACH_RELEASE_EX, RESTORE_PORT_EX 명령에만 포함된다.
따라서, 상기 정의된 규약을 기반으로 양방향 비동기 연결을 설정하는 과정을 도4 내지 도7을 참조하여 설명하기로 한다.
도4는 양방향 비동기 연결 설정 과정을 보인 동작 순서도이고, 도5는 ALLOCATE_EX 명령과 그에 대한 응답의 예시도이며, 도6은 ALLOCATE_ATTACH_EX 명령과 그에 대한 응답의 예시도이고, 도7은 ATTACH_EX 명령과 그에 대한 응답의 예시도이다.
첫 번째 단계는 컨트롤러(410)가 클라이언트(420)에게 ALLOCATE_EX 명령을 보내어 그 클라이언트(420)의 플러그 및 포트 정보를 얻어내는 과정이다.
상기 ALLOCATE_EX 명령 프레임과 그에 대한 응답 프레임은 도5에 정의되어있다.
도5에서 부속기능 필드(Subfunction field)는 ALLOCATE_EX가 삽입되며, 본 발명에서는 기존 규격의 예비 영역으로 정의한 값 중
Figure 112004060716570-pat00002
를 할당한다. 또한, 도5에서 'subfunction', 'connection bits', 'extra port ID', 'extra port bits' 이 외의 필드는 기존 규격에서 정의하고 있는 ALLOCATE 명령과 동일하다.
먼저, 컨트롤러(410)가 명령 프레임의 'connection bits', 'extra port ID', 'extra port bits'를 도5에 도시한 바와 같은 값을 주면(S401) 클라이언트(420)는 각각 해당 플러그의 connection bits값, 추가로 할당한 출력포트의 식별자(ID)와 해당 포트의 port bits 값을 응답 프레임에 담아 상기 컨트롤러(410)에 되돌려준다(S402).
만일, connection bits가
Figure 112004060716570-pat00003
가 아니면 컨트롤러(410)는 해당 클라이언트(420)가 양방향 비동기 연결을 지원하지 않는다고 판단한다.
따라서, ALLOCATE_EX 명령과 그에 대한 ACCEPTED 응답이 처리되면 컨트롤러(410)는 클라이언트(420)의 plug ID, plug offset, input port ID, input port bits 등의 정보를 알게 되며 추가로 클라이언트(420)의 output port ID와 output port bits 정보를 알게 된다.
두 번째 단계는 컨트롤러(410)가 서버(430)에게 ALLOCATE_ATTACH_EX 명령을 보내 클라이언트(420)의 플러그 및 포트 정보를 전달하고 상기 서버(430)의 플러그 및 포트 정보를 얻어내는 과정이다.
상기 ALLOCATE_ATTACH_EX 명령 프레임과 그에 대한 응답 프레임은 도6에 정의되어있다.
도6에서 부속기능 필드(subfunction field)는 ALLOCATE_ATTACH_EX가 삽입되며, 본 발명에서는 기존 규격의 예비 영역으로 정의한 값 중에서
Figure 112004060716570-pat00004
를 할당한다. 또한, 도6에서 connection bits, extra port ID, extra port bits, write interval, retry count 이 외의 필드는 기존 규격에서 정의한 대로 클라이언트(420)의 플러그와 입력포트에 대한 정보를 주기 위해서 사용된다.
우선, 컨트롤러(410)가 명령 프레임에 클라이언트(420)의 플러그와 입력포트에 대한 정보와 함께 connection bits, extra port ID 및 extra port bits에 도6과 같이 상기 클라이언트(420)로부터 추가로 얻어낸 클라이언트의 출력포트에 대한 정보를 준다(S403).
이에 대해, 서버(430)는 각각 해당 플러그의 connection bits 값, 추가로 할당한 입력포트의 식별자(input port ID)와 port bits 값 및 자신의 write interval, retry count 값을 응답 프레임에 담아 상기 컨트롤러(410)로 되돌려준다(S404).
만일, 서버(430)가 응답하는 connection bits가
Figure 112004060716570-pat00005
가 아니면 컨트롤러(410)는 해당 서버(430)가 양방향 비동기 연결을 지원하지 않는다고 판단한다.
이에 따라, ALLOCATE_ATTACH_EX 명령과 그에 대한 ACCEPTED 응답이 처리되면 컨트롤러(410)는 서버(430)의 plug ID, plug offset, output port ID, output port bits 등의 정보와 함께 추가로 서버(430)의 input port ID와 input port bits, write interval, retry count에 대한 정보를 알게 된다.
즉, 컨트롤러(410)는 상기 과정(S403)(S404)이 완료되면 클라이언트(420)의 plug ID, plug offset, input port ID, input port bits와 함께 추가로 서버(430)의 output port ID와 input port bits에 대한 정보를 알게 된다.
마지막으로 세 번째 단계는 컨트롤러(410)가 클라이언트(420)에게 ATTACH_EX 명령을 보내 서버(430)의 플러그 및 포트 정보를 전달하고 데이터 송수신을 시작할 수 있게 하는 과정이다.
상기 ATTACH_EX 명령 프레임과 그에 대한 응답 프레임은 도7에 정의되어있다.
도7에서 부속기능 필드(subfunction field)는 ATTACH_EX로 삽입되며, 본 발명의 실시 예에서는 기존 규격에서 예비 영역으로 정의한 값 중에서
Figure 112004060716570-pat00006
를 할당한다.
컨트롤러(410)는 명령 프레임에 서버(430)의 플러그 및 출력포트에 대한 정보와 함께 서버(430)로부터 추가로 얻은 connection bits, extra port ID, extra port bits, write interval, retry count field의 정보를 도7과 같이 담아 클라이언트(420)로 보내고(S405), 클라이언트(420)은 그에 대한 ACCEPTED 응답을 한다(S406).
이에 따라, ATTACH_EX 명령과 그에 대한 응답까지 처리되면 클라이언트(420)는 서버(430)의 plug ID, plug offset, output port ID, output port bits와 함께 추가로 input port ID, input port bits, write interval, retry count에 대한 정보를 알게 되고, 서버(430)는 클라이언트(420)의 plug ID, plug offset, input port ID, input port bits, write interval, retry count와 함께 추가로 output port ID, output port bits에 대한 정보를 알게 된다.
즉, 클라이언트(420)와 서버(430)는 서로 데이터를 수신하기 위한 정보뿐만 아니라 데이터를 송신하기 위한 정보를 얻게 되므로 양방향으로 데이터를 주고받을 수 있는 상태가 된다(S407).
또한, 상기 정의된 규약을 기반으로 양방향 비동기 연결을 해제하는 과정을 도8 내지 도11을 참조하여 설명하기로 한다.
도8은 양방향 비동기 연결 해제 과정을 보인 동작 순서도이고, 도9는 DETACH_EX 명령과 그에 대한 응답의 예시도이며, 도10은 DETACH_RELEASE_EX 명령과 그에 대한 응답의 예시도이고, 도11은 RELEASE_EX 명령과 그에 대한 응답의 예시도이다.
첫 번째 단계는 컨트롤러(410)가 클라이언트(420)에게 DETACH_EX 명령을 보내 클라이언트(420)가 해당 플러그를 통해 설정되었던 양방향 비동기 연결을 해제할 수 있도록 하는 과정이다.
상기 DETACH_EX 명령 프레임과 그에 대한 응답 프레임은 도9와 같이 정의한다. 도9에서 부속기능 필드(subfunction field)는 DETACH_EX로 삽입되며, 본 발명의 실시 예에서는 기존 규격에서 예비 영역으로 정의한 값 중에서
Figure 112004060716570-pat00007
을 할당한다.
우선, 컨트롤러(410)는 명령 프레임에 연결을 해제할 플러그 및 입력포트에 대한 정보와 함께 추가로 설정되었던 출력포트에 대한 정보를 준다(S801).
이때, 서버(430)의 입력포트에 대한 정보는 extra port ID와 extra port bits 필드에 기록된다.
이에 따라, 도9와 같은 DETACH_EX 명령을 받은 클라이언트(420)는 해당 플러그와 입력, 출력포트에 대한 연결을 해제하고, 연결 설정되었던 서버(430)의 플러 그와 입력, 출력포트에 대한 정보를 응답 프레임에 실어서 컨트롤러(410)에게 되돌려준다(S802).
두 번째 단계는 컨트롤러(410)가 서버(430)에게 DETACH_RELEASE_EX 명령을 보내어 서버(430)가 해당 플러그를 통해 설정하였던 양방향 비동기 연결을 종료시키고 관련 자원을 반환시키는 과정이다.
상기 DETACH_RELEASE_EX 명령 프레임과 그에 대한 응답 프레임은 도10에 정의한다. 도10에서 부속기능 필드(subfunction field)는 DETACH_RELEASE_EX라고 삽입되며, 본 발명의 실시 예에서는 기존 규격에서 예비영역으로 정의한 값 중
Figure 112004060716570-pat00008
을 할당한다.
컨트롤러(410)는 명령 프레임에 연결을 해제할 플러그 및 출력포트에 대한 정보와 함께 추가로 설정되었던 입력포트에 대한 정보를 준다(S803). 이때, 클라이언트(420)의 출력포트에 대한 정보는 extra port ID와 extra port bits field에 기록된다.
이에 따라, 서버(430)는 해당 플러그와 입력, 출력포트에 대한 연결을 해제하고 자원을 컨트롤러(410)에 반환한다(S804).
세 번째 단계는 컨트롤러(410)가 클라이언트(420)에게 RELEASE_EX 명령을 보내어 클라이언트(420)가 양방향 비동기 연결을 할당하였던 자원을 반환하도록 하는 과정이다.
상기 RELEASE_EX 명령 프레임과 그에 대한 응답 프레임은 도11에 정의한다. 도11에서 부속기능 필드(subfunction field)는 RELEASE_EX라고 삽입되며, 본 발명 의 실시 예에서는 기존 규격에서 예비영역으로 정의한 값 중
Figure 112004060716570-pat00009
를 할당한다.
컨트롤러(410)는 명령 프레임에 연결을 해제할 플러그 및 출력포트에 대한 정보와 함께 추가로 설정되었던 입력포트에 대한 정보를 주며(S805), 이를 받은 클라이언트(420)는 해당 자원을 반환한다(S806).
기존 규격에서의 플로우 제어(flow control)는 프로듀서가 컨슈머의 입력포트 레지스터(input port register)에 대한 비교-교환 고정 처리(compare-and-swap lock transaction)를 수행하고 컨슈머가 프로듀서의 출력포트 레지스터(output port register)에 대한 비교-교환 고정 처리를 수행하는 것으로 이루어진다.
본 발명의 실시 예에서 클라이언트(420)가 서버(430)로부터 데이터를 받는 플로우 제어는 클라이언트(420)와 서버(430)가 각각 상대방의 입력포트 레지스터와 출력포트 레지스터를 통해서 기존 규격에서 정의하고 있는 방식과 동일하게 이루어지며, 클라이언트(420)가 서버(430)에게 데이터를 전송하는 플로우 제어는 비교-교환 고정 처리를 양방향 비동기 연결 성립 과정에서 추가로 주고받았던 정보를 토대로 클라이언트(420)의 출력포트 레지스터와 서버(430)의 입력포트 레지스터에 대해서 이루어지는데, 기존 규격에서 정의하는 방식과 동일하게 이루어진다.
즉, 본 발명은 송신 연결과 수신 연결에 대해서 독립적인 플로우 제어가 수행된다.
데이터의 전송도 상기 송신과 수신의 두 연결에 대해서 독립적으로 수행되며 각 연결의 데이터 전송 과정(예로, port register update, segment buffer write)은 기존 비동기 연결 규격과 동일하다.
또한, 양방향 비동기 연결을 위해 한쪽 노드에서 사용되는 입력, 출력포트는 하나의 플러그에 대응되므로 상위 계층(layer)에서는 두 단방향 비동기 연결에 대한 플로우 제어와 데이터 전송을 플러그별로 함께 관리할 수 있다.
한편, 본 발명에서 버스 리셋(bus reset)이 되는 경우 양방향 비동기 연결을 복구할 수 있는데, 이를 위해 도10의 RESTORE_PORT_EX 명령과 그에 대한 응답 프레임을 정의한다.
즉, 버스 리셋 이후에 컨트롤러(410)가 클라이언트(420)와 서버(430)에게 도10과 같은 명령을 보내면 상기 클라이언트(420)와 서버(430)에 대응하는 각 노드는 각자의 송신 연결과 수신 연결에 대한 복구 작업을 수행한다. 복구 과정은 기존 규격에서 정의하는 방식을 그대로 따른다.
그런데, 본 발명에서는 기존의 RESTORE_PORT 명령을 사용하여 양방향 비동기 연결을 복구하는 것도 가능하다. 이를 위해서 컨트롤러(410)는 클라이언트(420)와 서버(430)에게 각각 입력포트와 출력포트에 대해서 총 4번에 걸쳐 RESTORE_PORT 명령을 보내야 한다.
만일, 버스 리셋 이후 소정 시간(예로, 10초) 이내에 RESTORE_PORT_EX 명령이 없다면 양방향 비동기 연결의 복구 과정을 수행하지 않고, 초기화로 복귀하게 된다.
한편, 기존의 비동기 연결 규격에서 단방향 연결을 위해 정의한 ALLOCATE, ATTACH, ALLOCATE_ATTACH, RELEASE, DETACH, DETACH_RELEASE 명령과, 하나의 프레임만을 전송하기 위해 정의한 ATTACH_FRAME, ALLOCATE_ATTACH_FRAME, RESTORE_PORT_FRAME 명령은 그 성격이 다르므로 양방향 비동기 연결에 사용할 수 없다.
반면에 본 발명에 따른 양방향 연결을 위해 하나의 플러그에서 사용되는 출력포트가 하나이므로 송신 연결이 있는 프로듀서에 대해 다른 송신 연결을 추가로 설정하는 ADD_OVERLAY 명령을 양방향 비동기 연결과 독립적으로 사용할 수 있다.
또한, SUSPEND_PORT, RESUME_PORT 명령은 컨슈머에 대한 명령으로서 입력포트에 대해서 전송을 잠시 중단하거나 재개하도록 하는 것이므로 양방향 비동기 연결에 대해서도 사용 가능하다.
예를 들어, 클라이언트(420)의 입력포트에 대해서 SUSPEND_PORT 또는 RESUME_PORT 명령을 보내는 과정에 의해 클라이언트(420)의 수신 연결을 잠시 중단시키거나 재개할 수 있다.
이는 서버(430)의 입력포트에 대해 보내는 경우도 동일하게 적용된다.
또한, 현재의 상태를 요청하는 STATUS 명령의 경우에도 플러그와 포트를 지정하여 요청하는 것이므로 양방향 비동기 연결이 설정된 플러그의 입력, 출력 각 포트에 대해서 그대로 사용할 수 있다.
만일, 기존 비동기 연결 제어 명령이 양방향 비동기 연결에 사용될 경우라면 명령 및 응답 프레임의 마지막 필드인 'operand[20]'은 기존처럼 예비(reserved) 상태로 한다.
상기에서 상세히 설명한 바와 같이 본 발명은 다음과 같은 효과를 발휘하게 된다.
1. 본 발명은 기존의 비동기 연결 규격이 가지고 있는 단방향 데이터 전송의 한계를 극복하기 위해서 핸드셰이킹(handshaking) 과정에서 추가포트에 대한 정보를 공유하도록 하여 하나의 플러그에 대해서 2개의 대칭적인 단방향 비동기 연결을 설정함으로써 논리적으로 하나의 양방향 비동기 연결을 설정할 수 있다.
2. 기존 방식의 경우 독립된 2개의 단방향 비동기 연결을 별도로 연결하여 논리적인 양방향 비동기 연결로 관리할 수도 있으나, 본 발명에서는 한번의 핸드셰이킹 과정으로 송신과 수신을 위한 정보를 모두 주고받음으로써 기존보다 명령과 응답의 처리를 절반으로 줄일 수 있다.
3. 본 발명은 기존의 명령 프레임에서 예비필드(reserved field)의 활용과 새로운 부속기능(subfunction)을 정의함으로써 기존의 명령 프레임을 변형함이 없이 기존 규격에서 확장이 용이하다.

Claims (10)

  1. 컨트롤러(controller), 서버(server), 클라이언트(client)를 직렬버스 상에 구비하고, 상기 서버와 클라이언트에 대응하는 2개의 노드간의 데이터 전송 방법에 있어서,
    상기 클라이언트로부터 상기 클라이언트의 입,출력 포트에 대한 정보를 얻는 제1 단계와;
    상기 클라이언트의 입,출력 포트에 대한 정보를 상기 서버로 전송하고 상기 서버의 입,출력 포트에 대한 정보를 얻는 제2 단계와;
    상기 서버의 입,출력 포트에 대한 정보를 상기 클라이언트에게 전달하는 제3 단계를 수행하여 하나의 양방향 비동기 연결을 설정하도록 구성한 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  2. 제1항에 있어서, 제1 단계는
    포트할당을 위한 명령을 상기 클라이언트로 전송하는 단계와;
    상기 클라이언트가 응답하는 해당 플러그의 입,출력 포트에 대한 정보를 수신하는 단계로 이루어진 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  3. 제1항에 있어서, 제2 단계는
    상기 클라이언트의 입,출력 포트에 대한 정보를 포함한 포트할당명령을 상기 서버에 보내는 단계와;
    상기 서버가 응답하는 해당 플러그의 입,출력 포트에 대한 정보와 액티브 상태 정보를 수신하는 단계로 이루어진 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  4. 제1항에 있어서, 제3 단계는
    상기 서버의 입,출력 포트에 대한 정보를 상기 클라이언트에게 전송하는 단계와;
    상기 클라이언트의 액티브 상태정보를 수신하는 단계로 이루어진 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 포트할당명령은
    기존의 예비(reserved)영역에 상기 클라이언트의 출력포트 또는 상기 서버의 입력포트 정보, 연결종류를 나타내는 비트값을 더 포함하는 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  6. 제5항에 있어서, 상기 연결 종류는
    입출력포트 모두 사용불가, 출력포트만 사용, 입력포트만 사용, 입출력포트 동시 사용으로 구분되는 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  7. 제1항에 있어서,
    상기 클라이언트에 연결 해제를 명령하고 이어서 상기 서버에 명령 해제를 명령하여 양방향 비동기 연결을 해제시키는 단계를 더 포함하는 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  8. 제7항에 있어서, 연결해제 단계는
    상기 클라이언트로 연결을 해제할 플러그, 입출력포트에 대한 정보를 보내고 상기 클라이언트로부터 연결 설정되었던 상기 서버의 플러그, 입출력포트에 대한 정보의 응답을 수신하는 단계와;
    상기 서버로 연결을 해제할 플러그, 입출력포트에 대한 정보를 보내고 그에 따른 응답을 수신하는 단계와;
    상기 클라이언트로 연결을 해제할 플러그, 입출력포트에 대한 정보를 보내고 그에 따른 응답을 수신하는 단계를 수행하여 양방향 비동기 연결을 해제시키도록 구성한 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  9. 제1항에 있어서,
    양방향 연결 상태에서 버스 리셋이 수행되면 양방향 연결을 복구하는 단계를 더 포함하여 이루어진 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
  10. 제9항에 있어서,
    상기 버스 리셋 이후에 소정 시간 이내에 양방향 연결 복구가 없으면 양방향 비동기 연결 해제를 유지시키는 단계를 더 포함하여 이루어진 것을 특징으로 하는 IEEE 1394 기반의 양방향 비동기 연결 방법.
KR1020040110656A 2004-12-22 2004-12-22 Ieee 1394 기반의 양방향 비동기 연결 방법 KR100677222B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040110656A KR100677222B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 양방향 비동기 연결 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040110656A KR100677222B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 양방향 비동기 연결 방법

Publications (2)

Publication Number Publication Date
KR20060072255A KR20060072255A (ko) 2006-06-28
KR100677222B1 true KR100677222B1 (ko) 2007-02-02

Family

ID=37165466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040110656A KR100677222B1 (ko) 2004-12-22 2004-12-22 Ieee 1394 기반의 양방향 비동기 연결 방법

Country Status (1)

Country Link
KR (1) KR100677222B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000042902A (ko) * 1998-12-28 2000-07-15 윤종용 외부 통신망을 이용한 아이 트리플 이 1394 네트웍간의 통신시스템 및 방법
KR20010104400A (ko) * 2000-09-28 2001-11-26 박인학 아이피 라이브러리를 이용한 네트워크 기반의 회로 설계방법 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000042902A (ko) * 1998-12-28 2000-07-15 윤종용 외부 통신망을 이용한 아이 트리플 이 1394 네트웍간의 통신시스템 및 방법
KR20010104400A (ko) * 2000-09-28 2001-11-26 박인학 아이피 라이브러리를 이용한 네트워크 기반의 회로 설계방법 및 시스템

Also Published As

Publication number Publication date
KR20060072255A (ko) 2006-06-28

Similar Documents

Publication Publication Date Title
JP3277874B2 (ja) Ieee1394ブリッジ
US7545822B2 (en) Information communication system, information communication method, information signal processing device and information signal processing method, and storage medium
JP4278439B2 (ja) 情報通信装置、そのシステム、その方法、そのプログラム、および、そのプログラムを記録した記録媒体
KR100746900B1 (ko) 전자장치, 및 전자장치의 물리층 회로의 상태를 제어하는방법
US20020061025A1 (en) Data transmitting and receiving apparatus and data transmitting and receiving method
KR20010018894A (ko) 디지털 인터페이스에서의 버스 제어방법
JP4166956B2 (ja) データ伝送システム、コネクション確立方法及び情報伝送装置
KR100677222B1 (ko) Ieee 1394 기반의 양방향 비동기 연결 방법
US6457079B1 (en) Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with said two communication apparatuses
JP4059423B2 (ja) データ伝送システム、コネクション回復方法及び情報伝送装置
JP4336536B2 (ja) 伝送速度設定装置、伝送速度設定方法、情報伝送システム並びに伝送速度設定用プログラム及び情報記録媒体
US7346714B2 (en) Notification of completion of communication with a plurality of data storage areas
US6993022B1 (en) Method of and apparatus for directly mapping communications through a router between nodes on different buses within a network of buses
JPH10285196A (ja) データ送信装置,データ受信装置,データ伝送方法,およびデータ伝送システム
US7352742B2 (en) Method and apparatus for transmitting to an upper layer of information included in a packet
KR100620993B1 (ko) Ieee 1394 기반의 양방향 비동기 연결 방법
JPWO2002056547A1 (ja) 切替え中継装置、及び切替え中継システム
KR100620994B1 (ko) Ieee 1394 기반의 비동기 연결을 이용한 소켓인터페이스 방법
US7167940B2 (en) Data processing method, data processing apparatus, communications device, communications method, communications protocol and program
KR100628177B1 (ko) 디지털 인터페이스의 버스 제어장치 및 방법
JP4129603B2 (ja) 情報処理装置および方法、並びに提供媒体
JP2003051824A (ja) 通信方法、通信システム、プログラム及び記憶媒体
JP4244474B2 (ja) 情報処理装置及び方法
JP4546960B2 (ja) 分散された複数の局のネットワークのためのネットワーク加入者局及び該ネットワーク加入者局を操作するための方法
JP2000049833A (ja) データ転送装置、データ転送システムおよびその方法、画像処理装置、並びに、記録媒体

Legal Events

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

Payment date: 20091230

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee