KR101238460B1 - Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법 - Google Patents

Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법 Download PDF

Info

Publication number
KR101238460B1
KR101238460B1 KR1020050116802A KR20050116802A KR101238460B1 KR 101238460 B1 KR101238460 B1 KR 101238460B1 KR 1020050116802 A KR1020050116802 A KR 1020050116802A KR 20050116802 A KR20050116802 A KR 20050116802A KR 101238460 B1 KR101238460 B1 KR 101238460B1
Authority
KR
South Korea
Prior art keywords
delete delete
transmission
data transfer
time slot
data
Prior art date
Application number
KR1020050116802A
Other languages
English (en)
Other versions
KR20060063693A (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 KR20060063693A publication Critical patent/KR20060063693A/ko
Application granted granted Critical
Publication of KR101238460B1 publication Critical patent/KR101238460B1/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S370/00Multiplex communications
    • Y10S370/912Packet communications
    • Y10S370/913Wireless or radio

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)

Abstract

UWB를 통한 무선 USB 데이터 전송에 있어서, 무선 USB에서 높은 오류율을 경험하는 경우, 소프트웨어는 하드웨어 임계(threshold)를 구성하여 나쁜 접속 상에서 좋은 접속을 위한 대역폭을 사용하는 방식으로 데이터 전송을 제어한다. 주기적 전송이 성공적이기만 하면, 비동기 전송 전에 주기적 전송이 먼저 시도된다. 실패할 경우, 소정의 종점이 스케줄에서 일시정지되기 전에, 하드웨어는 소정의 종점이 견딜 수 있는 오류의 개수를 명시하는 소프트웨어 구성가능 임계를 지니는 메커니즘을 포함한다. 다시 실패할 것 같은 전송 시도를 일시정지함으로써, 성공적 전송이 있는 종점은 오류를 경험한 것에 비해 선호된다. 계류 중인 활성 전송의 개수가 등시성 종점에 대한 소프트웨어 구성가능 통보 임계를 초과할 경우, 하드웨어는 소프트웨어에 수신 측의 저속 버퍼 상태에 대응하는 이 상태를 통보한다. 이후 소프트웨어는 임계를 재구성하고 다른 전송을 비활성화하여 버퍼로 데이터 전송을 시행한다.
Figure R1020050116802
주기적 전송, 비동기 전송, 등시성 종점, 임계

Description

USB 무선 데이터 전송을 스케줄링하는 시스템 및 방법{WIRELESS USB HARDWARE SCHEDULING FILED OF THE INVENTION}
도 1은 본 발명이 구현될 수 있는 컴퓨팅 환경을 일반적으로 나타내는 블록도.
도 2는 본 발명의 각종 양상에 따라, 하드웨어 스케줄링을 이용하여 UWB를 통해 주변 장치로의 무선 USB 데이터 전송을 제어하는 컴퓨터 시스템의 소프트웨어 및 하드웨어를 포함하는 블록도.
도 3은 본 발명의 각종 양상에 따라, 데이터 전송의 하드웨어 스케줄링에서 사용되는 데이터 구조의 표현을 포함하는 블록도.
도 4 내지 도 6은 본 발명의 각종 양상에 따라, 제어되는 데이터 전송을 수행하기 위해 데이터 구조를 조작하는 로직을 일반적으로 나타내는 흐름도를 포함하는 도면.
<도면의 주요부분에 대한 부호의 설명>
202 : 소프트웨어
204 : 드라이버/인터페이스
206 : 하드웨어 / 펌웨어
224 : 무선 USB 컨트롤러 드라이버
214, 415 : 주변 장치
본 발명은 일반적으로 무선 통신을 통해 컴퓨터 시스템과 주변 장치 간에 데이터를 통신하는 것에 관한 것이다.
최근의 거의 모든 컴퓨터 시스템은, 컴퓨터 시스템과 마우스, 프린터, 디지털 카메라 등과 같은 외부 주변 장치 간의 직렬 통신용 외부 주변 인터페이스 표준인 USB(Universal Serial Bus)를 사용하도록 구성되어 있다. 각 주변 장치는 USB로 컴퓨터 시스템의 표준화된 USB 포트로 플러그되는 케이블을 통해 접속한다.
컴퓨터 시스템과 외부 주변 장치를 접속시키기 위한 USB 케이블의 필요성을 제거하기 위한 노력으로, 초광대역폭(ultrawideband:UWB) 기술에 기반하는 무선 USB(wireless USB:WUSB)가 점점 표준화되고 있다. 무선 USB는 최대 10 미터까지의 거리에 걸쳐 USB 2.0 표준에 필적하는 통신 속도(예를 들어 480Mbps)를 지향하고 있다.
그러나, 전송 오류가 거의 없는 유선 USB와는 달리, UWB 전송에는 어떤 방법으로든 보완되어야만 하는 상당한 패킷 오류율(10% 정도)이 있고, 보완되지 못할 경우 사용자의 무선 USB의 경험은 유선 USB의 경험에 비해 현저하게 열등하게 된다. 높은 패킷 오류율에 의해 야기되는 문제를 해결하고자 하는 시도(이 시도는 일반적으로 실패한 패킷을 재시도하는 것에 기초함)는, 비동기(제어 및 벌크 데이 터) 통신 및 주기적(인터럽트 및 등시성) 통신을 포함하는 USB의 통신이 상이한 유형들이고 각각이 상이한 전송 관련 요구사항을 지닌다는 사실로 인해 복잡해진다. 무선 USB에서 장치들은 UWB을 통해 통신하고, 그것에 따라 임의의 소정의 시간에, 한 장치로의 접속은 패킷 오류를 거의 경험하지 않는 반면, 다른 장치로의 접속은 많은 패킷 오류를 경험할 수 있다.
유선 USB와 무선 USB 간의 많은 차이점을 고려하여, 무선 USB에서 상대적으로 큰 오류율을 보완하는 메커니즘이 요구된다. 이러한 메커니즘은 소정의 환경에서 필요한 경우 소프트웨어가 그 메커니즘을 제어할 수 있도록 충분히 유연해야 한다.
간단히, 본 발명은 컴퓨터 시스템의 하드웨어 및 소프트웨어가 함께 작동하여 USB 무선 데이터 전송을 스케줄링하는 시스템 및 방법에 관한 것이며, 실패한 전송이 제어되는 방식으로 재시도된다. 무선 USB 전송이 수신 측에 버퍼링되기 때문에, 성공적인 재시도는 버퍼의 적절한 위치에 삽입할 누락 데이터를 제공한다. 실패한 전송을 제어되는 방식으로 재시도함으로써, 일반 동작에서, 가장 실패할 것 같은 접속의 재시도에 대역폭이 낭비되지 않고 대신 성공할 것 같은 접속에 사용된다. 그러나, 수신 장치의 버퍼 상태가 낮은 것과 같은 비상 상황에서는, 제어 소프트웨어는 대응하는 접속을 통해 데이터를 강제로 전송하도록 구성가능한 스케줄링 매개변수를 변경할 수 있다.
본 발명의 무선 USB 데이터 전송 메커니즘은, 인터럽트 전송, 등시성(isochronous) 전송, 제어 전송 및 벌크(bulk) 전송을 포함하는 (종점에 대응하는) 네 가지 유형의 데이터 전송을 지원한다. 인터럽트 전송 및 등시성 전송은 주기적 유형의 전송인데, 이 전송들이 주기적 진행을 통해 현재의 타임 슬롯이 될 타임 슬롯 내에서의 전송에 대해 스케줄링된다는 점에서 그러하다. 제어 전송 및 벌크 전송은 비동기이며, 현재 타임 슬롯의 임의의 주기적 전송 후에 시간이 남아 있는 경우 시도된다. 무선 USB로 수락할만한 컴퓨팅 경험을 제공하기 위해, 데이터 전송에서의 높은 오류율은 전달(delivery)이 보장되지 않는 등시성 전송에서조차 재시도가 반드시 수행되는 것을 필요로 한다.
각종 데이터 전송을 스케줄링하기 위해, 본 발명은 하드웨어에 무선 USB 컴포넌트를 그리고 소프트웨어에 무선 USB 컨트롤러 드라이버를 포함한다. 무선 USB 하드웨어는 종점의 관련 패킷들이 성공적으로 수신되었는지 여부에 기초하여, 종점에 대응하는 큐 헤드 데이터 구조의 정보를 조작하는 스케줄링 프로세스를 포함한다. 하드웨어 스케줄링 프로세스는, 소정의 큐 헤드가 스케줄에서 일시 정지되기 전에 다른 큐 헤드와 관련된 패킷이 전송될 수 있도록 일정 시간 동안 (종점에 대응하는) 소정의 큐 헤드가 견딜 수 있는 오류의 개수를 명시하는 소프트웨어 구성가능 임계를 포함하는 메커니즘을 포함한다. 따라서 스케줄링 프로세서는 일시적 오류 조건 때문에 실패할 것 같은 데이터 전송에서 대역폭의 낭비를 피하는 소프트웨어 제어 방식으로 실패한 전송의 재시도를 처리한다. 소프트웨어 컨트롤러 드라이버는 또한 데이터 구조의 다른 정보(예를 들어 임계)를 구성한다.
주기적 스케줄 데이터 구조는 각 엔트리가 주기적 타임 슬롯에 대응하고 0개 이상의 주기적 스케줄 엔트리(periodic schedule entries:PSEs)의 목록에 대한 포인터를 포함하는 엔트리의 순환 버퍼를 포함한다. 주기적 스케줄 엔트리는 그 타임 슬롯 기간 동안 활성이 되어야 하는 (그리고 활성이 되어 가능하면 전송되어야 하는) 데이터 전송을 나타낸다. 이를 위해, 주기적 스케줄 엔트리는 큐 헤드 또는 큐 헤드와 관련된 전송 설명자를 가리키고, 큐 헤드는 전송의 목적지가 되는 장치의 종점에 대응한다. 각각의 큐 헤드는 그 대응 종점에 대해 계류중(pending)인 모든 전송을 포함하여 전송의 상태에 관한 정보를 포함한다. 각각의 전송 설명자는 전송에 관여된 실제 데이터를 저장하거나 이를 검색하기 위한 주소, 전송 버퍼의 길이, 실제로 전송된 바이트 수 등과 같은 특정 전송에 대한 상세사항을 제공한다. 각각의 전송 설명자는 또한 전송이 온 또는 오프될 경우를 명시하는 소프트웨어 기록가능 값과 함께 "활성" 또는 "비활성"의 상태 값을 포함한다.
스케줄링 프로세스에서 등시성 주기적 스케줄 엔트리를 마주치는 경우, 대응 전송 설명자는 자신의 "활성" 상태로 이동되고, 이것은 데이터가 가능한 한 빨리 전송될 준비가 되어 있음을 나타낸다. 스케줄에서 인터럽트 주기적 스케줄 엔트리를 마주치는 경우, 대응 큐 헤드가 "활성" 상태로 이동되고, 이것은 스케줄이 패킷 전송을 실행해야만 한다는 것을 나타낸다. 제어 전송 및 벌크 전송은 비동기이고 소정의 타임 슬롯에 남아있는 임의의 시간을 이용하여 주기적 전송 후에 발생한다.
언제 큐 헤드를 일시중지하는가를 결정하는 오류 카운트 임계를 포함하여 각종 임계 매개변수에 기록함으로써 소프트웨어는 하드웨어 동작을 제어한다. 보다 구체적으로는, 큐 헤드의 오류 카운터가 이 임계로 초기화되었고 1에서 0으로의 오류 이행으로 감소될 때, 그 특정 큐 헤드는 일시정지되고(더 이상 재시도되지 않음), 이것은 그 타임 슬롯의 나머지를 위해서일 수 있다. 레벨을 충족시키고 따라서 다시 실패할 것 같은 접속을 통해 전송을 재시도하기보다는 일시정지함으로써 다른 큐 헤드의 패킷이 그 타임 슬롯에서 전송되도록 한다. 일시정지된 큐 헤드는 다음 타임 슬롯의 시작시, 또는 현재의 타임 슬롯의 다른 종점(큐 헤드의 패킷)이 성공, 일시정지 또는 정지(halting)를 통해 다 소진된 후에도 보통의 경우라면 사용되지 않는 (사용가능한 대역폭에 대응하는) 시간이 그 타임 슬롯에 여전히 남아 있는 경우 그 일시정지 상태에서 벗어난다. 따라서 실패한 전송에 응하여 큐 헤드를 일시 정지함으로써 스케줄은 종점을 통해 성공적으로 패킷을 전송할 수 있는 종점을 그렇지 않은 것보다 선호한다.
또 다른 임계 매개변수는 큐 헤드가 정지되기 전의 연속 오류의 개수를 명시한다. 다음 타임 슬롯에서 또는 현재 타임 슬롯에 사용되지 않은 대역폭이 남아 있는 경우 리셋되는 일시정지된 상태와는 달리, 정지된(halted) 큐 헤드는 정지된 상태를 벗어나기 위해 소프트웨어 개입(intervention)을 필요로 한다.
하나의 큐 헤드와 관련된 너무 많은 전송 설명자가 성공적으로 전송되지 않아 활성일 때 소프트웨어에 통보를 전송하기 위해, Isoch 통보 임계 매개변수는 무선 USB 소프트웨어 컨트롤러에 의해 설정되고, 이것은 본질적으로 대응 수신 장치의 저 버퍼 상태에 대응한다. 이 개수가 임계에 도달하면, 하드웨어는 인터럽트를 통해 무선 USB 소프트웨어 컨트롤러에 통보한다. 그러면 소프트웨어는 매우 낮은 버퍼에 데이터가 강제로 들어가도록 임계를 조정할 수 있다. 또한, "인에이블(Enabled)" 매개변수 값은 헤드 큐를 오프로 또는 온으로 하기 위해 소프트웨어에 의해 설정될 수 있다; 오프 상태인 경우, 그 큐 헤드에 대해 전송이 아무것도 실행되지 않고, 그것에 의하여 데이터 전송은 데이터를 필요로 하는 하나 이상의 종점으로 집중될 수 있다.
스케줄링 프로세스는 현재 타임 슬롯이 이전의 스케줄링 기간에 이어 다음 타임 슬롯으로 진행할 때에 재시작한다. 스케줄 주기의 제1 단계(phase)는 스케줄 상태를 재설정하고, 적절한 비활성 큐 헤드 및 전송 설명자를 활성화하는 것을 포함하여 그 타임 슬롯에 대해 주기적 전송 요구사항을 결정하는 것을 포함한다. 이 단계(phase)에서, 기간별 초기화가 또한 발생하고, 임의의 큐 헤드에 대해 Isoch 통보 임계에 도달되는 경우 통보가 전송된다.
스케줄 주기의 제2 단계(phase)는 주기적 (등시성 및 인터럽트) 전송을 실행하고 그 결과를 분석하는 것에 관한 것이다. 일반적으로, 하드웨어는 현재 활성인 주기적 큐 헤드를 검색하고, 그 큐 헤드의 대응 전송 설명자에 대한 패킷 전송의 실행을 시작한다. 활성 전송 설명자가 더 이상 남아 있지 않을 때까지 성공 전송은 완료로서 마크되고, 결국 큐 헤드가 비활성화된다. 실패로 인해 에러 카운트가 감소되고, 각각의 값이 1에서 0으로 이행될 때 앞으로의 전송 시도는 정지되거나 일시정지될 수 있다. 프로세스는 시도된 주기적 전송 각각이 분석되어 시도될 것이 더 이상 남아있지 않은 경우, 즉 주기적 전송이 완료되거나, 일시정지되거나 또는 정지될 때 리턴된다.
일단 전송될 활성 주기적 큐 헤드가 더 이상 없는 경우, 스케줄은 제3 단계(phase)를 실행하고, 이것은 비동기(컨트롤 및 벌크) 큐 헤드의 전송에 관한 것이다. 비동기 전송은 비동기 큐 헤드의 오류 카운터에 기초하여 완료되거나, 일지정지 또는 정지될 때까지 유사하게 시도된다. 현재의 타임 슬롯에 시간이 남아있는 경우, 제2 및 제3 단계(phase)는 반복된다.
상기로부터 알 수 있듯이, 주기적 전송이 먼저 시도되지만, 다시 실패할 것 같은 전송 시도를 반복함으로써 사용가능한 대역폭을 낭비하지 않기 위해 임계 횟수를 실패한 큐 헤드는 일시정지(또는 정지)된다. 대신 나머지 시간은 비동기 전송을 시도하기 위해 사용되고, 이것은 실패하는 경우 마찬가지로 일시정지(또는 정지)된다. 따라서 본 발명은 한 타임 슬롯 내에서 필요한 경우, 그러나 주기적 전송 시도와 비동기 실패 시도를 제어되는 방식으로 교대로 반복할 수 있다.
다른 이점은 도면과 함께 이하의 상세한 설명으로부터 더욱 명백해 질 것이다.
예시적인 운영 환경
도 1은 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 예제를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 단지 한가지 일례이며, 본 발명의 사용 범위 또는 기능에 관해 어떠한 제한을 제안하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에서 도시된 임의의 하나의 컴포넌트 또는 컴포넌트들의 조합에 관해 임의의 종속성 또는 요구사항을 가지는 것으로 해석되어서는 안 된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명과 함께 사용하기에 적합하고 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로컨트롤러 기반 시스템, 셋톱 박스, 프로그램가능한 소비자 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치 등의 임의의 것을 포함하는 분산 컴퓨팅 환경이 있지만 이에 제한되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고 또는 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 장치(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 각종 시스템 컴포넌트를 처리 장치(120)에 결합하는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예제로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체를 포함한다. 예제로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에서 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호내의 정보가 암호화되도록 그 신호의 하나 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예제로서, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 아니다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시동 시 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)에 즉시 액세스 가능하고 및/또는 현재 처리 장치(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예제로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예제로서, 도 1은 이동불가식, 비휘발성 자기 매체로의 기록 또는 그로부터의 판독을 위한 하드 디스크 드라이브(140), 이동식, 비휘발성 자기 디스크(152)로의 기록 또는 그로부터의 판독을 위한 자기 디스크 드라이브 (151), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(156)로의 기록 또는 그로부터의 판독을 위한 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체(solid state) RAM, 고체 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 이동불가식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)의 다른 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 사본(copy)이라는 것을 도시한다. 사용자는 태블릿, 전자 디지타이저(164), 마이크(163), 키보드(162) 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드라고 알려진 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 도 1에 도시되지 않은 다른 입력 장치(도시 생략)로는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터(191)는 또한 터치 스크린 패널 등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널은 태블릿 유형 퍼스널 컴퓨터와 같은 컴퓨팅 장치(110)가 구현될 수 있는 하우징에 물리적으로 결합될 수 있다는 것을 유의한다. 모니터 외에, 컴퓨팅 장치(100)와 같은 컴퓨터는 또한 스피커(195) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(194) 등을 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소의 대부분 또는 그 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴 퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173) 상에서의 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 그 예제로서, 도 1은 메모리 장치(181)에 상주하고 있는 원격 애플리케이션 프로그램(185)을 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
무선 USB 하드웨어 스케줄링
본 발명은 일반적으로 성공적으로 전송되지 못한 무선 USB 데이터 구조가 제어되는 방식으로 그 전송을 재시도하는 시스템 및 방법에 관한 것이며, 그렇게 함으로써 실패할 것 같은 접속 상의 재시도에 대역폭을 낭비하는 대신 성공할 것 같은 접속에 대해 대역폭을 사용한다. 이를 위해, 정상적으로 전송 오류를 발생시키는 조건의 유형 즉 일시적 오류 조건을 고려하여 전송의 스케줄링을 지능적으로 관리하기 위해 하드웨어는 소프트웨어 구성가능 매개변수를 사용한다. 또한 이해되는 바와 같이, 본 발명을 구현하는 각종 방법이 가능하지만, 대안들 중 일부만이 본 명세서에 도시된다. 예를 들어, 본 발명은 주로, 성능을 최적화하기 위해 스케줄링 하드웨어의 행동을 제어하는 초기화 값 및 소프트웨어 제공 임계에 기초하여, 데이터 구조를 마킹하고 그 내부 카운터를 유지하고 평가함으로써 동작하는 하드웨어 실행 스케줄을 참조하여 이하에 설명된다. 다른 하드웨어는 초-광대역 무선을 사용하여 활성으로 마킹되는 데이터 구조를 택하고 대응 데이터를 전송한다. 그럼에도 불구하고, 다른 유형의 전송 메커니즘이 가능하고, 실제로 더 높은 전송율이 더 높은 오류 카운트를 초래할 수 있는 앞으로의 USB 버전과 같은 유선 기술에서 본 발명이 사용될 수 있다. 이와 같이, 본 발명은 본 명세서에서 사용되는 임의의 특정 예에 제한되지 않고, 일반적으로 컴퓨팅의 이점 및 혜택을 제공하는 각종 방식에서 사용될 수 있다.
또한, 본 발명은, 하나 이상의 주변 장치로 무선 USB 데이터를 전송하고 이러한 하나 이상의 주변 장치를 지니는 호스트 컴퓨터 시스템에 관해 주로 설명하지만 다른 유형의 장치가 호스트를 포함할 수 있다는 것을 이해할 것이다. 예를 들어, 오디오 및/또는 비디오 USB 플레이어 등은 수신 호스트 텔레비전 세트 또는 오디오 플레이어 등에 패킷을 전송할 수 있다.
도 2는 호스트 컴퓨터에서 실행되는 소프트웨어(202)가 드라이버/인터페이스(204)를 통해 하드웨어/펌웨어(206)(간결하게 하기 위해 이하에서는 단지 하드웨어라 지칭됨)와 통신하는 예제 아키텍처(200)를 도시한다. 예를 들어, 소프트웨어(202)는 도 1의 컴퓨터 시스템(120)에서 실행되는 운영 체제 컴포넌트 등일 수 있고, 하드웨어(206)는 메인 컴퓨터 시스템(120)으로 플러그되는 PCI 기반 카드 등에 구성될 수 있다. 쉽게 이해되는 바와 같이, 무선 USB를 컴퓨터 시스템에 구축하는 것과 같은 다른 대안은 동등하다.
일반적으로, 하드웨어(206)는 주변장치(214 및 215)의 송수신기(212 및 213)각각과 같은 하나 이상의 상대방 무선 송수신기와 통신하도록 구성된 무선 송수신기(210) 등을 포함한다. 도 2에는 단 두 개의 주변 장치(214 및 215)만이 도시되어 있지만, 컴퓨터 시스템의 무선(210)과 통신하는 임의의 개수의 무선 주변 장치가 있을 수 있다는 것을 이해할 것이다. 호스트는 또한 무선 USB 접속(도시 생략)을 지닐 수 있다.
본 명세서에서는 간결하게 하기 위해 상세히 설명되지 않지만, 도 2는 호스트 컴퓨터의 상이한 프로토콜 적응 계층(Protocol Adaptation Layers:PALs, 예를 들어 WUSB, 애드 혹 네트워킹 등) 사이에서 공유되는 무선 자원을 관리하는 데에 사용되는 하드웨어/소프트웨어 인터페이스를 포함하는 UWB 무선 관리 컴포넌트(220)를 도시한다. 이해되는 바와 같이, UWB MAC(media access control) 및 PHY(phisical) 계층(221)은, 데이터를 전송하고, 어느 데이터가 성공적으로 수신되었는가에 관한 상태 정보를 획득할 뿐만 아니라, 데이터가 주변 장치로부터 성공적으로 수신될 때 상태 정보를 리턴하는 데이터 전송 프로세스를 담당하고 있는 것으로 간주될 수 있다. 이러한 계층(221)은 데이터 패킷의 통신을 관리하고, 일반적으로 초광대역 기술에서 공지된 병렬 동작에서 주변 장치(214 및 215)와 교환되는 상태 등을 리턴한다. 이해되는 바와 같이, 본 발명은 일반적으로 리턴된 상태 정보에 기초하여 성공적으로 전송되지 못한 데이터 구조의 제어된 재시도를 수행하는 것을 포함하여, 전송에 대해 데이터를 스케줄링하는 것에 관한 것이다.
데이터 전송을 스케줄하기 위해, 본 발명은 하드웨어에 무선 USB 컴포넌트(222)를, 소프트웨어에 무선 USB 컨트롤러 드라이버(224)를 포함한다. 이하에 설명되는 바와 같이, 무선 USB 컴포넌트(222)는 주변 장치(214 및 215)에 의해 리턴되는 대응 상태 정보(230)(또는 리턴되어야 하는 상태 정보의 부재)에 기초하여 각종 유형의 데이터 구조(228)의 정보를 조작하는 스케줄링 프로세스(226)를 포함한다. 이하에 설명되는 바와 같이, 소프트웨어 무선 USB 컨트롤러(224)는 데이터 구조의 일부 정보를 구성하여, 스케줄링 프로세스는 실패할 것 같은 데이터 전송에 대역폭을 낭비하지 않는 소프트웨어 제어 방식으로 실패 전송의 재시도를 처리한다.
보다 구체적으로는, 상술된 바와 같이, UWB의 본성 때문에, 무선 USB 전송의 스케줄링은 유선 USB와 동일할 수 없는데, 그 이유는 다른 차이점들 중에서, 일부 방식으로 보완되어야 하는 UWB에 대한 패킷 오류율이 더 많기 때문이고, 이것은 본 발명의 한 실시예에서 하드웨어 및 소프트웨어의 설계를 통해서이다. 이 하드웨어 및 소프트웨어 설계는, 두 노드 간에 패킷 전송이 실패하는 경우, 동일 노드 간의 다음 패킷 전송 또한 실패할 가능성이 있다는 것 즉, 일반적으로 UWB 통신으로 통상적으로 관찰되는 행동에 기초한다. 반대로, 패킷 전송이 성공하는 경우, 동일 노드 간의 다음 패킷 전송 또한 성공할 가능성이 있다. 따라서, 시간에 걸쳐 보면, 소정의 접속 상의 패킷 실패는 일반적으로 시간에 걸쳐 고르게 분산되는 것이 아니라 스파이크 다발로 일어난다. 따라서 이러한 오류 조건 상태는 일시적인 것이고, 보통 시간이 지남에 따라 해결된다.
이러한 관찰에 기초하여, 본 발명은 가장 실패할 것 같은 재시도 상의 대역폭 낭비를 방지하기 위해 소프트웨어에 의해 구성될 수 있는 재시도 메커니즘을 제공한다. 전체 작업 처리량을 최대화하는 시도에서, 본 발명은 보통은 성공적인 전송을 돕는 메커니즘을 제공하지만, 중요한 요청을 이행하기 위해 정상 동작 행동을 변경하기 위해서와 같이 필요한 경우 소프트웨어 재구성을 허용한다.
일반적으로 USB 기술에 알려진 바와 같이, 종점에 대응하여 각종 유형의 데이터 전송 동작이 있다. 현재의 유선 USB 표준은 네 개의 전송/종점 유형, 즉 제어 전송, 벌크 전송, 인터럽트 전송 및 등시성 전송을 정의한다. 통상적으로 명령 및 상태 동작을 위해 사용되는 제어 전송은 비동기이며 전달되는 것이 보장된다. 벌크 전송 또한 비동기이며, 통상적으로 데이터의 대형 버스트(burst)를 위해 사용되며, 또한 전달되는 것이 보장되지만 대기 시간(latency) 또는 대역폭에 관해서는 아무것도 보장할 수 없다. 이러한 비동기 전송은 전송 타임 슬롯에 대한 다른 (주기적) 트랜잭션 후에 전송 타임 슬롯에서 일어나는데, 따라서 시간에 민감한 전송에 대해서는 사용되지 않는다.
인터럽트 전송은 장치 초기화 전송일 수 있고, 바운드된 대기 시간을 필요로 한다. 인터럽트 전송은 폴링될 때까지 장치에 의해 큐잉되고, 폴링은 주기적으로 되풀이되는 타임 슬롯 동안 발생한다. 호스트 초기화 인터럽트 통신 또한 주기적 타임 슬롯에 기초하여 전송된다. 인터럽트 전송은 전달을 보장한다.
등시성 전송은 주기적이며(타임 슬롯별로 스케줄됨), 통상적으로 비디오 및 오디오 스트리밍같이 시간에 민감한 정보를 전송하는 데에 사용된다. 등시성 전송은 보장되는 대역폭 및 바운드된 대기 시간을 제공하지만, 전달을 보장하지는 않는다.
무선 USB가 이 종점들을 지원하지만, 상술된 바와 같이, 데이터 전송의 높은 오류율은 전달이 보장되지 않는 등시성 전송에서조차 재시도가 수행되어야 하는 것을 요구한다. 유선 전송과는 달리, 무선 등시성 전송은 버퍼링되어, 재시도를 하여 수신 측의 삽입을 위해 버퍼의 적절한 위치로 누락 데이터를 제공할 수 있도록 한다.
본 발명의 양상에 따라, 종점에 대응하는 데이터 구조는, 실패할 것 같은 것에 비해 성공할 것 같은 데이터 전송을 선호하는 스케줄링 프로세스(226)에 의해 제어되는 방식으로 스케줄링되고, 따라서 현재 좋지 않은 접속에 대해서보다는 현재 좋은 접속에 대해 소정의 임의의 시간에 대역폭을 사용한다. 이를 위해, 스케줄링 프로세스는 상술한 바와 같이 전송 스케줄을 셋업하고, 일반적으로, 연속적으로 실패하는 전송은 데이터 전송을 위한 다음 타임 슬롯까지 일시정지되고, 이렇게 함으로써 이러한 전송은 실패할 것 같은 재시도에 추가의 대역폭을 소비하지 않는다.
도 3은 스케줄링 프로세스(226)에 의해 관리되는 각종 데이터 구조 및 서로간의 관계를 나타낸다. 도 3에 표현된 바와 같이, 데이터 구조는 주기적 스케줄(302), 주기적 스케줄 엔트리(PSE1-PSE3), 큐 헤드(QH1-QH7) 및 전송 설명자(transfer descriptor:TD)를 포함한다. 주기적 스케줄(302)은 각 엔트리가 주기적 타임 슬롯에 대응하는 엔트리의 순환 버퍼를 포함한다. 각 엔트리는 이하에 설명되는 바와 같이 다른 데이터 구조로의 포인터를 포함하는 0개 이상의 주기적 스케줄 엔트리(PSEs)의 목록에 대한 포인터를 포함한다. 타임 슬롯은 시간의 단일 단위를 나타내며, 시간 단위는 종점에 의해 명시될 수 있는 (최대) 가장 작은 기간이다. "현재의 타임 슬롯" 포인터는 타임 기간의 끝에 다음 엔트리로 진행한다.
주기적 스케줄 엔트리는 그 타임 슬롯 기간 동안 활성이 되어야 하는 (UWB 컴포넌트에 의해 전송되어야 하는) 데이터 전송을 나타낸다. 각 주기적 스케줄 엔트리는 실행될 준비가 된 전송을 나타낸다.
전송에 대한 목적지를 지정하기 위해, 전송의 목적지가 되는 각 장치의 각 종점에 대응하는 큐 헤드(QH)가 있다. 이하에 설명되는 바와 같이, 각각의 큐 헤드는 그 대응 종점에 대한 임의의 계류된 전송을 포함하여 전송 상태에 관한 정보를 포함한다.
각 전송 설명자(TD)는 관련 큐 헤드를 지니고, 전송에 관여된 실제 데이터를 저장하고 이를 검색하기 위한 주소, 전송 버퍼의 길이, 실제로 전송된 바이트 수 등과 같은 특정 전송에 대한 상세사항을 제공한다. 각 전송 설명자는 또한 전송이 온 또는 오프인지를 명시하는 소프트웨어 기록가능 값과 함께, "활성" 또는 "비활성"의 상태 값을 포함한다.
주기적 스케줄 엔트리에는 두 가지의 유형이 있는데, 한 유형은 등시성 종점용이고 다른 한 유형은 인터럽트 종점용이다. 이하에 설명되는 바와 같이, 등시성 PSEs는 등시성 전송 설명자를 가리키는 반면, 인터럽트 PSEs는 인터럽트 종점 큐 헤드를 가리키고, 이것은 이어서 대응 전송 설명자를 가리킨다. 예를 들어, 도 3의 예제에서, PSE1은 (큐 헤드(QH1)와 관련된) 등시성 전송 설명자를 가리키는 반면, PSE2는 인터럽트 종점에 대응하는 큐 헤드(QH2)를 가리킨다. 다른 타임 슬롯에 속하는 주기적 스케줄 엔트리 PSE3은 (큐 헤드 (QH1)과 관련된) 또 다른 등시성 전송 설명자를 가리킨다.
이하에 설명되는 바와 같이, 스케줄링 프로세스에서 등시성 PSE를 마주치는 경우, 대응 전송 설명자는 자신의 "활성" 상태로 이동되고, 이것은 데이터가 가능한 한 빨리 전송될 준비가 되어 있음을 나타낸다. 스케줄에서 인터럽트 PSE를 마주치는 경우, 대응 큐 헤드는 "활성" 상태로 이동되고, 이것은 스케줄이 패킷 전송을 실행해야만 한다는 것을 나타낸다. 도 3에서 PSE를 지니지 않는 큐 헤드(예를 들어 QH4-QH7)는, 소정의 타임 슬롯에서 남아 있는 임의의 시간을 이용하여 주기적 전송 후에 발생하는 비동기 전송을 나타낸다.
본 발명의 양상에 따라, 각종 운영 환경에 적응하는 유연성을 제공하기 위해, 운영 체제 컴포넌트 또는 애플리케이션 프로그램을 포함할 수 있는 WUSB 컨트롤러 드라이버(224)는 스케줄 실행의 각종 양상을 제어할 수 있다. 소프트웨어가 스케줄 실행을 조작하는 주요 방식은 큐 헤드를 통해서이다. 보다 구체적으로, 큐 헤드에서 유지되고, 소프트웨어가 수정하여 스케줄 실행의 행동을 수정할 수 있는 각종 매개변수(카운터 및 임계) 값이 있으며, 이것은 이하에 설명되는 도 4 내지 도 6의 흐름도를 통해 이해될 것이다. 이하의 표는, 어떤 값들이 하드웨어 및 소프트웨어 판독-기록가능하거나 또는 판독만 가능한가를 포함하여, 각 큐 헤드 내에 포함된 값들 중 일부의 정보를 제공한다.
큐 헤드 값
값 이름 SW 액세스 HW 액세스 설명
현재 오류 카운트 RO RW 마지막 큐 헤드 리셋 이후로 큐 헤드가 일시정지하기 전에 마주칠 수 있는 남아 있는 오류의 개수.
오류 일시정지 임계 RW RO 큐 헤드가 일시정지하기 전에 소정의 큐 헤드에 대해 스케줄이 허용해야 하는 실패 패킷의 수. 큐 헤드 리셋 시에, 현재 오류 카운트 값은 이 값으로 초기화된다. 값 0은 큐 헤드가 일시정지되어서는 안 된다는 것을 나타낸다.
연속 오류 카운트 RO RW 소정의 큐 헤드에 대한 연속적인 오류의 현재 개수
오류 정지 임계 RW RO 이 값은 하드웨어가 큐 헤드 상태를 정지로 설정하기 전에 발생할 수 있는 연속 패킷 오류의 개수를 나타낸다.
Isoch 통보 임계 RW RO 이 값은 어떤 하드웨어가 인터럽트를 발행해야만 하는가 이후에 소정의 큐 헤드에 대한 활성 TD의 개수를 나타낸다. 이 필드는 isoch 스트림이 뒤떨어져 있는 경우 소프트웨어가 스케줄을 다시 잡을 수 있도록 한다.
현재 활성 TD 카운트 RO RW 소정의 큐 헤드에 대한 활성 TD의 현재 개수.
인에이블(Enabled) RW RO 이 값은 소정의 큐 헤드를 가능하게 한다. 이 값이 0인 경우, 하드웨어는 그 큐 헤드와 관련된 어떠한 전송도 실행하지 않을 것이다.
상태 RO RW 큐 헤드의 현재 상태. 이것은 이하 중 하나일 수 있다:
1. 활성(Active) - 실행될 준비가 된 전송이 있음
2. 비활성(Inactive) - 실행될 준비가 된 전송이 없음
3. 정지(Halt) - 소프트웨어 주의가 필요한 오류 상태에 도달했음
4. 일시정지(Pause) - 종점이 실패 횟수에 대한 임계(오류 일시정지 임계)에 도달하여 다음 타임 슬롯 또는 하드웨어가 이 상태를 정리할 때까지 더 이상 전송할 수 없음.
상기 표에 나타난 바와 같이, 소프트웨어는 큐 헤드의 오류 일시정지 임계 매개변수에 값을 기록하여 특정 큐 헤드가 일시정지되기(더 이상 시도되지 않음) 전에 스케줄이 허용하는 실패 패킷의 개수를 결정할 수 있으며, 이것은 타임 슬롯의 나머지 시간을 위한 것이다. 이것이 상술된 바와 같이 (예를 들어 일시적 오류 스파이크와 같은) 공지의 전송 실패 특징을 고려하여 소프트웨어에 의해 최적화될 수 있는 주요 방식이다. 오류 일시정지 임계값은 소프트웨어에 의해 설정되어 전송을 계속 실행하기 위해 얼마나 좋은 또는 나쁜 접속이 필요한가를 나타낸다. 이 값이 (1)로 설정되는 경우, 큐 헤드에 계류중인 활성 전송이 여전히 있고 이 타임 슬롯에서 패킷 전송이 실패한 적이 없다면, 스케줄은 계속해서 그 큐 헤드의 전송을 실행할 것이다.
그러나, 일단 패킷 전송이 실패하면, "현재 오류 카운트" 값이 감소된다; 이것이 1에서 0으로 이행할 때, 큐 헤드는 일시정지된다. 이것은 다른 큐 헤드가 완전히 서비스될 때까지(다른 큐 헤드 또한 일지정지되지 않는 정도까지) 소정의 타임 슬롯 동안 추가 전송이 실행되는 것을 방지한다. 쉽게 이해되는 바와 같이, 이 값이 2로 설정되면, 큐 헤드가 일시정지되기 전에 실패 패킷 전송을 두 번 시도할 것이다. 시작 값 0은 큐 헤드가 절대 일시정지되어서는 안 된다는 것을 나타낸다(왜냐하면, 이하에 설명되는 바와 같이 이러한 조건에서는 1에서 0으로의 이행이 없을 것이기 때문이다).
일반적으로, 일시정지된 큐 헤드는 다음 타임 슬롯의 시작시, 또는 그렇지 않으면 사용되지 않는 대역폭이 남아 있을 때 현재 타임 슬롯의 다른 종점이 다 소진된 후에 그 일시정지 상태를 벗어난다. 실패된 전송을 일시정지함으로써 스케줄은 종점을 통해 성공적으로 패킷을 전송할 수 있는 종점을 그렇지 않은 것보다 선호한다. 전송 오류는 일시적인 경향이 있으므로, 다음 타임 슬롯 동안, 전송 오류를 지니는 종점이 더 성공적일 수 있다. 특정 종점에서 조건이 패킷이 급하게 필 요한 시점에 도달한 경우, 무선 USB 소프트웨어 컨트롤러 드라이버(224)에게 통보되고 그 종점에 대한 큐 헤드의 각종 구성가능한 값을 조정하여, 다른 전송에 대해 사용될 수 있는 대역폭을 희생하여, 성공적으로 패킷을 전송하는 가능성을 증가시키기 위해, 다른 종점에 대해 데이터를 필요로 하는 종점을 본질적으로 돕는다.
오류 정지 임계 매개변수는 오류 일시정지 임계 매개변수와 다소 유사하지만, 이 값은 큐 헤드가 정지되기 전에 연속 오류의 개수를 명시한다. 다음 타임 슬롯에서 또는 현재의 타임 슬롯에 사용하지 않는 대역폭이 남아 있는 경우 리셋되는 일시정지 상태와는 달리, 정지 큐 헤드는 정지 상태에서 벗어나기 위해서는 소프트웨어 개입을 필요로 한다.
Isoch 통보 임계 매개변수는, 무선 USB 소프트웨어 컨트롤러 드라이버(224)가 특별히 나쁜 실패 조건에 대해 통보받기 위해 사용되는 바와 같이, 소프트웨어에 통보를 전송하기 위해 무선 USB 소프트웨어 컨트롤러 드라이버(224)에 의해 설정될 수 있는 값이다. 보다 구체적으로는, 무선 USB의 등시성 스트림은 수신 측 및 송신 측 둘 다에 어느 정도 양의 버퍼링을 포함하고, 전송 측이 오버플로우되지 않는 한 이 스트림은 유지된다. 버퍼가 오버플로우하지 않는다는 것을 보장하기 위해, 호스트는 서버의 상태에 응하여 일부 설정을 조정할 필요가 있다. Isoch 통보 임계는, 버퍼의 상태에 기초하여 하드웨어가 무선 USB 소프트웨어 컨트롤러 드라이버(224)에 통보해야 할 때 정의된다. Isoch 통보 임계값은 큐 헤드와 관련된 활성 Isoch 전송 설명자(TDs)의 개수로서 정의된다. 이 개수가 Isoch 통보 임계의 값에 일단 도달하면, 하드웨어는 인터럽트를 통해 무선 USB 소프트웨어 컨트롤러 드라이버(224)에 통보한다.
인에이블 값은 큐 헤드를 오프 또는 온으로 바꾸기 위해 소프트웨어에 의해 설정될 수 있다. 그것이 오프 상태인 경우, 전송이 실행되지 않는다.
본 발명의 설명으로 다시 돌아와서, 도 4 내지 도 6은 각 타임 슬롯에서 발생할 수 있는 동작 및 이벤트에 관해 스케줄링 프로세스(226)의 예시적인 로직을 도시하고, 이것은 타임 슬롯의 시작을 나타내는 도 4의 단계(400)에서 시작한다. 본질적으로 주기를 스케줄링하는 데에는 다른 단계들(phase)이 있는데, 타임 슬롯의 시작은 새 주기를 초기화한다. 새 주기가 완료되면, 다음 타임 슬롯이 시작되기 전에 시간이 남아 있는 경우, 새 주기 또는 부분 주기가 실행될 수 있고, 전송에 대해 스케줄링되었으나 완료되지 못했던 것들이 재시도될 수 있다.
스케줄 주기의 제1 단계(phase)는 스케줄 상태를 리셋하고 그 타임 슬롯에 대해 주기적 전송이 필요하다는 것을 결정하는 것을 포함한다. 이 단계(phase)에서, 현재 타임 슬롯 포인터는 단계(400)에 도시된 대로 새로운 현재 타임 슬롯을 가리키도록 증가되었다. 이후, 그 타임 슬롯이 임의의 PSEs를 가리키면, PSEs의 목록은 워크화(walked)된다. 목록의 인터럽트 PSE 각각에 대해, 대응 인터럽트 종점 큐 헤드가 활성화된다(그렇지 않은 경우 종점은 정지 상태에 있음). 목록의 등시성 PSE 각각에 대해, 큐 헤드와 함께 대응 등시성 종점 전송 설명자가 활성화된다. 이것은 도 4의 단계(402)에 나타나 있고, 여기서 새 타임 슬롯에 대해 스케줄 상태를 리셋하는 것은 "일시정지" 상태에 있는 각 큐 헤드를 "활성" 상태로 이행하는 것을 포함한다.
다른 단계로는 단계(404 및 406)가 있고, 단계(404)는 단일 큐 헤드에 대한 활성 Isoch 전송 설명자의 개수에 기초하여 통보 임계에 도달할 때마다 소프트웨어에게 통보하는 인터럽트를 생성한다. 단계(406)는 이 타임 슬롯에 대한 값을 다시 초기화한다.
스케줄 주기의 제2 단계(phase)는 주기적 전송을 실행하는 것에 관한 것이다. 일반적으로, 하드웨어는 현재 활성인 주기적 큐 헤드(단계(406))를 검색하고, 도 5의 단계(500)에 나타난 바와 같이, 그 큐 헤드의 대응 전송 설명자에 대해 패킷 전송 실행을 시작한다. WUSB에 대해, 다수의 전송이 병렬로 실행될 수 있다. 소정의 시간에 어느 전송이 실행될 것인가를 판정하는 스킴은, 일반적으로 스킴이 전송 턴어라운드(전송 상태에서 수신 상태로 무선을 변경함)를 최소화하고 프로토콜 오버헤드를 낮게 유지해야한다는 것에 기초한다는 것을 제외하고는, 본 발명에 관련된 것이 아니다. WUSB 하드웨어가 다른 다수의 패킷 전송과 동시에 일부 비동기 전송을 실행하는 것을 선택할 수 있다는 것을 유의한다.
주기적 패킷 전송 각각에 대해(단계(502)), 단계(504)를 통해 그 전송의 상태가 분석된다. 패킷 전송이 성공한 경우, 단계(504)는 단계(506)로 분기하고, 대응 연속 오류 카운트가 오류 정지 임계값으로 리셋된다. 단계(508)에서 종점이 인터럽트 종점인 경우, 대응 큐 헤드는 단계(510)를 통해 비활성 상태가 되고, 그 패킷 전송이 또한 전송 설명자를 완료하면, 전송 설명자는 완료로 마킹된다.
단계(504)에서 패킷 전송이 성공하고 단계(508)에서 종점이 등시성 종점인 경우, 단계(508)는 대신 단계(512)로 분기하고 전송 설명자는 완료된 것으로 마크 된다. 또한, 등시성 전송 설명자 목록에서 활성 전송 설명자가 더 이상 없는 경우, 큐 헤드는 활성 상태로 이동된다.
단계(504)로 다시 돌아가서, 패킷 전송이 실패하는 경우, 단계(504)는 연속 오류 카운트가 (0보다 큰 경우) 감소되는 단계(520)로 분기한다. 단계(522)에 의해 평가되는 바와 같이 이 값이 값 (1)에서 값 (0)으로 이행하는 경우, 큐 헤드는 단계(524)를 통해 정지된다. 그렇지 않은 경우, 단계(526)가 실행되고, 여기서 큐 헤드의 현재 오류 카운트는 그것이 0보다 큰 경우 감소된다. 단계(528)에서 평가되는 바와 같이 이 카운트가 값 (1)에서 값 (0)으로 이행되는 경우, 큐 헤드는 단계(530)를 통해 일시정지 상태로 이동된다. 오류 카운트가 이미 0인 경우, 큐 헤드의 상태는 변경되지 않는다; 이것은 큐 헤드의 오류 카운트가 소프트웨어에 의해 초기에 0으로 설정되게 하고, 그렇게 함으로써 그 상태는 일시정지되지 않을 것이다. 정지를 방지하기 위해 유사한 "0으로 초기화" 동작이 연속 오류 카운트와 함께 사용될 수 있다.
단계(502)로 리턴되는 프로세스에 의해 보여지는 바와 같이, 시도된 전송 각각이 분석될 때까지 도 5의 분석은 계속된다.
일단 이 프로세스가 완료되면, 하드웨어 스케줄링 프로세스(226)는 도 4의 단계(408)로 리턴하여, 활성인 주기적 큐 헤드가 더 있는지 여부를 다시 판정하고 그것을 실행한다(이것은 이미 시도된 전송이 있는 큐 헤드를 포함할 수 있다). 이것은 활성 주기적 큐 헤드가 더 이상 남아있지 않을 때까지, 즉 일시정지되거나 정지된 것만이 계류중으로 남아있을 때까지 반복될 것이다. 활성 주기적 큐 헤드가 없으면, 스케줄은 비동기 큐 헤드의 전송에 관한 제3 단계(phase)를 실행한다. 제3 단계(phase)에서, 단계(410 및 412)를 통해, 임의의 활성 비동기 (벌크 및 제어) 전송이 실행된다. 각 패킷 전송에 대해, 그 전송의 상태가 분석되고, 이것은 단계(600)에서 시작하는 도 6으로 분기하는 단계(414)에 의해 나타나 있다.
단계(600)는 패킷 전송이 성공했는지 여부를 평가하고, 성공한 경우, 단계(602)로 분기하여 패킷이 전송 설명자를 완료했는지 여부에 관해 평가한다; 그런 경우, 전송 설명자는 단계(604)에서 완료로서 마크된다. 또한, 큐 헤드에서 계류중인 전송 설명자가 더 이상 없는 경우, 큐 헤드는 단계(606 및 608)를 통해 비활성 상태로 이동된다. 프로세스는 도 4의 단계(410)로 리턴한다.
다시 단계(600)로 리턴하여, 패킷이 실패하는 경우, 단계(600)는 단계(610)로 분기하고 큐 헤드의 연속 오류 카운트가 (0보다 큰 경우) 감소된다. 단계(612)에서, 이 값은 값 (1)에서 값 (0)으로 이행하고, 큐 헤드는 단계(614)를 통해 정지된다.
그렇지 않을 경우, 단계(616)에서 큐 헤드의 현재 오류 카운트 값이 (0보다 큰 경우) 감소된다. 단계(618)에서 이 값이 값 (1)에서 값 (0)으로 이행된 것으로 판정되는 경우, 큐 헤드는 단계(610)에서 일시정지된다.
프로세스는 도 4의 단계(410)로 리턴되고, 여기서 이 제3 단계(phase)는 더 이상 활성 비동기 큐 헤드가 남아있지 않을 때까지 또는 타임 슬롯이 종료할 때까지 반복된다. 제3 (비동기 처리) 단계(phase)가 타임 슬롯에 더 많은 시간을 남기고 종료될 때 단계(406)로 분기하는 단계(410)에 의해, 임의의 일시정지된 QH가 단 계(406)에서 활성 상태로 이동되고, 2 단계(phase)(도 5) 및 3 단계(phase)(도 6)가 반복된다는 것을 유의한다.
따라서, 전송이 성공하거나, 일시정지하거나 또는 정지될 때까지 타임 슬롯 내의 임의의 활성 주기적 큐 헤드를 스케줄하고 이를 전송하는 시도가 행해진다는 것을 알 수 있다. 이후, 전송이 성공하거나, 일시정지하거나 또는 정지될 때까지 타임 슬롯 내의 임의의 활성 비동기 큐 헤드를 전송하는 시도가 행해진다. 그 타임 슬롯에 대해 스케줄된 모든 것이 성공적으로 전송된 경우 프로세스는 또한 중단될 수 있고, 다음의 적절한 때에 새로이 스케줄된 큐 헤드로 재시작될 수 있음에도 불구하고, 이 프로세스는 타임 슬롯의 시간이 다 할 때까지 반복된다.
소프트웨어가 데이터 구조의 각종 카운터 및 다른 정보를 제어하기 때문에, 본 발명에 의해 상당한 양의 유연성이 제공된다. 예를 들어, 정상 동작에서, 오류 카운트는 타임 슬롯의 시작시 (1)로 초기화될 수 있고, 이렇게 함으로써 (타임 슬롯에 추가의 시간이 남아 있기 때문에 재활성화되지 않는 한) 하나의 오류는 실패된 큐 헤드가 그 타임 슬롯의 나머지 시간 동안 일시중지되도록 한다. 그 결과, 실패했던 큐 헤드를 전송하는 임의의 재시도가 행해지기 전에, 그 타임 슬롯에서 다른 큐 헤드를 전송하는 시도가 행해질 것이다. 그러나, 등시성 통보 임계에 도달했을 때 통보를 수신하자마자, 소프트웨어는 전송 실패로 인해 너무나 많은 활성 전송 설명자가 백업되어야 하는 것 때문에 수신 측의 버퍼가 점점 작아진다는 것을 인식할 것이다. 이후 소프트웨어는, 예를 들어 백업된 전송 설명자에 대응하는 특정 큐 헤드에 대한 오류 카운트 값을 증가시킴으로써, 일부 다른 큐 헤드를 사용불가하게 함으로써 각종 카운트를 조정하여 데이터가 그 버퍼에 들어가도록 한다. 이후 소프트웨어는 일단 충분한 데이터가 버퍼에 강제로 들어오면 정상 동작에 대한 카운터 및 임계를 리셋할 수 있다.
전술된 상세한 설명으로부터 알 수 있듯이, 실패할 것 같은 것보다 성공할 것 같은 큐 헤드에 대응하는 패킷에 대한 대역폭을 사용함으로써 무선 USB의 오류를 처리하는 시스템 및 방법이 제공된다. 소프트웨어는 소정의 환경에서 필요한 경우 동적으로 메커니즘을 제어할 수 있다.
본 발명이 각종 수정 및 대안의 구성을 받아들이지만, 그 중 일부 실시예가 도면에 도시되고 상세히 상술되었다. 그러나, 개시되는 특정 형태에 본 발명을 제한하고자 하는 의도는 없으며, 이와는 반대로 본 발명은 본 발명의 취지 및 범위 내에 속하는 모든 수정, 대안의 구성 및 동등물을 포함하고자 한다.

Claims (40)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 컴퓨팅 환경에서, 무선 접속 장치들과 통신하기 위한 호스트-제어 시스템으로서,
    전송될 하나 이상의 패킷에 대응하는 데이터 구조의 오류 임계값을 구성할 수 있는 프로그램을 포함하는 소프트웨어 컨트롤러 컴포넌트; 및
    실행을 위해 상기 하나 이상의 패킷을 활성화하고 각 패킷이 성공적으로 수신되었는지 여부를 평가하는 메커니즘을 포함하는 하드웨어 스케줄링 프로세스 - 상기 스케줄링 프로세스는 전송되었지만 수신되지 않은 하나 이상의 패킷의 오류 카운트가 상기 오류 임계값에 도달하는 지에 따라 소정의 일시정지 기간 동안 다른 패킷이 전송되도록 스케줄링을 시도하여, 오류와 관련된 작업을 재시도하기 전에 잠재적 일시적 오류 조건들이 해소되어질 수 있도록 하고, 상기 오류 임계값은 일시정지 카운트에 대응하며, 상기 데이터 구조는 상기 임계값에 도달될 때 일시정지 상태로 설정되고, 상기 스케줄링 프로세스는 상기 다른 패킷의 전송 후 현재의 주기적 타임 슬롯에 시간이 남아있는 경우 상기 현재의 주기적 타임 슬롯에서의 실행을 위해 상기 데이터 구조를 재활성화함 -
    를 포함하는 시스템.
  13. 제12항에 있어서,
    상기 데이터 구조는 상기 일시정지 상태로 설정되어 있고, 상기 스케줄링 프로세스는 상기 다른 패킷의 전송 후 현재의 주기적 타임 슬롯에 시간이 남아있지 않은 경우 다음 주기적 타임 슬롯에서의 실행을 위해 상기 데이터 구조를 재활성화하는 시스템.
  14. 삭제
  15. 컴퓨팅 환경에서,
    한 타임 슬롯에서 무선 USB 전송에 대해 데이터 전송을 스케줄링하는 단계 - 상기 데이터 전송은 종점에 대응하는 큐 헤드와 관련된 적어도 하나의 데이터 패킷 세트를 포함함 -;
    상기 데이터 전송의 전달을 시도하는 단계;
    상기 데이터 전송이 적어도 한 시도의 임계 횟수 내에 성공적으로 수신되었는지 여부를 판정하고, 그렇지 않은 경우, 상기 데이터 전송의 전달이 재시도되지 않는 상태로 상기 데이터 전송을 설정하는 단계 - 상기 데이터 전송의 전달이 재시도되지 않는 상태로 상기 데이터 전송을 설정하는 단계는, 상기 큐 헤드를 그 상태 값을 수정함으로써 일시중지하는 단계를 포함함 -;
    다른 패킷의 전송 시도 후 상기 타임 슬롯에 시간이 남아있는 경우, 상기 상태 값을 활성 상태로 수정함으로써 상기 데이터 전송을 재시도하는 단계;
    다른 패킷의 전송 후 상기 타임 슬롯에 시간이 남아있지 않은 경우, 다른 타임 슬롯의 시작시 상기 상태 값을 활성 상태로 수정함으로써 상기 데이터 전송을 재시도하는 단계
    를 포함하는 방법.
  16. 삭제
  17. 제15항에 있어서,
    상기 데이터 전송의 전달이 재시도되지 않는 상태로 상기 데이터 전송을 설정하는 단계는, 상기 큐 헤드를 그 상태 값을 수정함으로써 정지시키는 단계를 포함하고, 상기 큐 헤드에 대한 활성 데이터 전송의 횟수가 임계값에 도달했는지 여부를 판정하고, 만약 도달한 경우 통보를 전송하는 단계를 더 포함하는 방법.
  18. 제15항의 방법을 구현하는 컴퓨터-실행가능 명령어들을 기록하는 적어도 하나의 컴퓨터-판독가능 기록 매체.
  19. 컴퓨팅 환경에서,
    (a) 타임 슬롯 세트 중에서 현재의 타임 슬롯에서, 무선 USB 종점으로 전송하는 주기적 데이터 전송(periodic data transfer)을 활성화하는 단계 - 각 데이터 전송은 그 데이터 전송에 대응하는 하나 이상의 데이터 패킷을 전송하기 위한 정보를 포함하는 큐 헤드와 관련됨 -;
    (b) 활성인 큐 헤드와 관련된 주기적 패킷의 전송을 시도하는 단계;
    (c) 한 종점으로 시도된 적어도 하나의 이전 데이터 전송이 성공했는지 여부에 기초하여 그 종점으로의 다음 데이터 전송이 실패할 것 같은지 여부를 평가하고, 상기 적어도 하나의 이전 데이터 전송 실패로 인해 다음 데이터 전송이 실패할 것 같은 경우로 평가되면 상기 다음 데이터 전송을 일시정지하고, 상기 적어도 하나의 이전 데이터 전송 성공으로 인해 다음 데이터 전송이 실패할 것 같지 않은 경우로 평가되면 상기 다음 데이터 전송을 시도하는 단계; 및
    (d) 전송되어야 할 활성 상태의 임의의 주기적 데이터 전송이 남아 있는지 여부를 판정하고, 남아 있고 현재 타임 슬롯에 시간이 남아 있는 경우 단계 (b)로 리턴하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    한 종점으로의 다음 데이터 전송이 실패할 것 같은지 여부를 평가하는 상기 단계는, 실패 카운터를 업데이트하는 단계 및 임계값에 기초하여 상기 실패 카운터를 평가하는 단계를 포함하는 방법.
  21. 제19항에 있어서,
    단계 (d)에서, 전송되어야 할 활성 상태의 주기적 데이터 전송이 남아 있지 않지만 상기 현재 타임 슬롯에 시간이 남아 있는 경우,
    (e) 활성인 비동기 큐 헤드와 관련된 패킷의 전송을 시도하는 단계;
    (f) 한 비동기 종점으로 시도된 적어도 하나의 이전 데이터 전송이 성공했는지 여부에 기초하여 그 비동기 종점으로의 다음 데이터 전송이 실패할 것 같은지 여부를 평가하고, 상기 적어도 하나의 이전 데이터 전송 실패로 인해 실패할 것 같은 경우로 평가되면 상기 다음 데이터 전송을 일시정지하고, 상기 적어도 하나의 이전 데이터 전송의 성공으로 인해 실패할 것 같지 않은 경우로 평가되면 상기 다음 데이터 전송을 시도하는 단계;
    (g) 임의의 비동기 큐 헤드가 전송되어야 할 활성 상태로 남아있는 데이터 전송을 포함하는지 여부를 판정하고, 그런 경우이면서 상기 현재 타임 슬롯에 시간이 남아 있는 경우, 단계 (e)로 리턴하고, 그렇지 않으면서 상기 현재 타임 슬롯에 시간이 남아 있는 경우, 임의의 일시정지된 큐 헤드를 활성화하고 단계 (b)로 리턴하는 단계
    를 더 포함하는 방법.
  22. 제21항에 있어서,
    비동기 종점으로의 다음 데이터 전송이 실패할 것 같은지 여부를 평가하는 상기 단계는, 실패 카운터를 업데이트하는 단계 및 임계값에 기초하여 상기 실패 카운터를 평가하는 단계를 포함하는 방법.
  23. 제19항에 있어서,
    각각의 큐 헤드에 대해, 통보 임계에 대해 활성 등시성 전송 설명자의 개수를 평가하고, 상기 통보 임계에 도달되는 경우, 그 큐 헤드에 관한 통보를 전송하는 단계를 더 포함하는 방법.
  24. 실행될 때 제19항의 방법을 수행하는 컴퓨터-실행가능 명령어들을 포함하는 적어도 하나의 컴퓨터-판독가능 기록 매체.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
KR1020050116802A 2004-12-03 2005-12-02 Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법 KR101238460B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/004,429 2004-12-03
US11/004,429 US7149839B2 (en) 2004-12-03 2004-12-03 Wireless USB hardware scheduling

Publications (2)

Publication Number Publication Date
KR20060063693A KR20060063693A (ko) 2006-06-12
KR101238460B1 true KR101238460B1 (ko) 2013-03-04

Family

ID=36003037

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050116802A KR101238460B1 (ko) 2004-12-03 2005-12-02 Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법

Country Status (5)

Country Link
US (2) US7149839B2 (ko)
EP (1) EP1667387B1 (ko)
JP (1) JP4878475B2 (ko)
KR (1) KR101238460B1 (ko)
CN (1) CN1783041B (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100679023B1 (ko) * 2004-11-03 2007-02-05 삼성전자주식회사 조정자 기반 무선 네트워크에서 복수의 무선 범용 직렬버스 호스트를 지원하는 방법 및 장치
US7149839B2 (en) * 2004-12-03 2006-12-12 Microsoft Corporation Wireless USB hardware scheduling
KR100619068B1 (ko) * 2005-01-31 2006-08-31 삼성전자주식회사 무선 범용 직렬 버스 통신에 있어서, 피어투피어 통신을위한 채널 시간을 할당하는 방법 및 그 피어투피어 통신방법
DE102005020062B4 (de) * 2005-04-29 2011-07-21 Globalfoundries Inc. Mobile drahtlose Datenspeichereinrichtung und entsprechendes Verfahren zum speichern von Daten
TWI268669B (en) * 2005-05-27 2006-12-11 Bluepacket Communications Co Ltd System and method for wireless signal transmission establishing an inter-transmission and exchange of files between a computer peripheral and a host system through a wireless signal transmission module
US7281074B2 (en) * 2005-06-29 2007-10-09 Intel Corporation Method and apparatus to quiesce USB activities using interrupt descriptor caching and asynchronous notifications
US20070055804A1 (en) * 2005-09-07 2007-03-08 Ran Hay Method and apparatus for managing multiple components
KR100725932B1 (ko) * 2006-05-02 2007-06-11 삼성전자주식회사 무선 유에스비 장치의 동작 방법 및 이를 이용한 무선유에스비 장치
KR100872178B1 (ko) * 2006-12-04 2008-12-09 한국전자통신연구원 우선순위 기반의 무선 usb 전송 서비스 관리 장치 및방법
JP2008153898A (ja) 2006-12-15 2008-07-03 Sony Corp 通信システム、通信装置及び通信方法、並びにコンピュータ・プログラム
WO2008080107A2 (en) * 2006-12-22 2008-07-03 Qualcomm Incorporated Enhanced wireless usb protocol and hub
KR100720709B1 (ko) * 2007-01-26 2007-05-21 주식회사 유비콘테크놀로지 무선 usb 시스템
CN101237445B (zh) * 2007-01-30 2013-01-02 世意法(北京)半导体研发有限责任公司 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备
US7844760B2 (en) * 2007-09-29 2010-11-30 Intel Corporation Schedule and data caching for wireless transmission
US7653773B2 (en) * 2007-10-03 2010-01-26 International Business Machines Corporation Dynamically balancing bus bandwidth
JP2009093418A (ja) * 2007-10-09 2009-04-30 Nec Electronics Corp ホストコントローラ装置及びデータ転送制御方法
US7853739B1 (en) * 2007-11-19 2010-12-14 Wisair Ltd. Method and system for transmitting USB communication
US8934890B2 (en) * 2008-01-11 2015-01-13 Texas Instruments Incorporated Transmission of data bursts on a constant data rate channel
US20090210609A1 (en) * 2008-02-04 2009-08-20 Iain Thomas Learmonth Wireless USB hub
US8660486B2 (en) * 2008-02-28 2014-02-25 Dell Products, Lp Method and system for providing concurrent wireless universal serial bus (WUSB) hub and wireless audio/video interfaces within a single device
JP2009278507A (ja) * 2008-05-16 2009-11-26 Nec Electronics Corp ホスト装置およびスケジューリング方法
US8781300B2 (en) * 2008-05-23 2014-07-15 At&T Intellectual Property I, Lp System and apparatus for managing video content recordings
WO2009150613A1 (en) * 2008-06-09 2009-12-17 Nxp B.V. Wireless universal serial bus micro-schedule management command scheduling method
US8843661B2 (en) * 2008-08-28 2014-09-23 Intel Corporation Data transfer between wireless universal serial bus (USB) host controller driver and wireless USB host controller in a wireless USB host
US7853748B2 (en) * 2008-09-30 2010-12-14 Intel Corporation Method and apparatus to obtain code data for USB device
US8554174B2 (en) * 2009-06-15 2013-10-08 Alcatel Lucent Selective first delivery attempt (FDA) processing for text messages
CN102184146A (zh) * 2009-07-27 2011-09-14 罗技欧洲公司 配置成与多个无线设备配对的接收器
US8521930B1 (en) * 2010-02-25 2013-08-27 Fresco Logic, Inc. Method and apparatus for scheduling transactions in a host-controlled packet-based bus environment
KR101216959B1 (ko) 2011-01-06 2012-12-31 주식회사 이노와이어리스 시리얼 디바이스의 에러 검출 시스템
US8996772B1 (en) * 2012-02-15 2015-03-31 Cypress Semiconductor Corporation Host communication device and method with data transfer scheduler
CN103793344B (zh) * 2012-10-31 2017-06-27 华为技术有限公司 处理数据冲突的方法及系统
US9830298B2 (en) * 2013-05-15 2017-11-28 Qualcomm Incorporated Media time based USB frame counter synchronization for Wi-Fi serial bus
US9736521B2 (en) * 2013-12-23 2017-08-15 Qualcomm Incorporated Using timed transport stream for receiver-side inter-device communication
JP6232604B2 (ja) * 2014-02-10 2017-11-22 サイレックス・テクノロジー株式会社 デバイスサーバとその制御方法
US9524260B2 (en) * 2014-06-18 2016-12-20 Qualcomm Incorporated Universal serial bus (USB) communication systems and methods
US10684906B2 (en) 2016-06-15 2020-06-16 Microsoft Technology Licensing, Llc Monitoring peripheral transactions
JP7331768B2 (ja) * 2020-04-28 2023-08-23 株式会社デンソー リアルタイム演算処理装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030082724A (ko) * 2002-04-18 2003-10-23 삼성전자주식회사 고속 범용 직렬 버스 인터페이스를 지원하는 디지탈가입자 회선 모뎀
KR20040035905A (ko) * 2002-10-12 2004-04-30 한국전자통신연구원 통합 랜 호 제어 시스템

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3045985B2 (ja) * 1997-08-07 2000-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 接続確立方法、通信方法、状態変化伝達方法、状態変化実行方法、無線装置、無線デバイス、及びコンピュータ
US6469991B1 (en) * 1997-10-14 2002-10-22 Lucent Technologies Inc. Method for overload control in a multiple access system for communication networks
US6243753B1 (en) * 1998-06-12 2001-06-05 Microsoft Corporation Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters
US6378005B1 (en) * 1998-06-12 2002-04-23 Microsoft Corporation Method, computer program product, and system for separating connection management functionality from a connection-oriented device driver
US6717947B1 (en) * 1998-12-03 2004-04-06 Lsi Logic Corporation Method and apparatus for isochronous data transfer with retry capability
US6609167B1 (en) * 1999-03-17 2003-08-19 Adaptec, Inc. Host and device serial communication protocols and communication packet formats
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
KR100876765B1 (ko) * 2002-05-10 2009-01-07 삼성전자주식회사 이동 통신 시스템에서 데이터 재전송 장치 및 방법
TWI292270B (en) * 2002-10-08 2008-01-01 Texas Instruments Inc System and method for transparently attaching wireless peripherals to a computer using an uwb wireless network
US6788676B2 (en) * 2002-10-30 2004-09-07 Nokia Corporation User equipment device enabled for SIP signalling to provide multimedia services with QoS
US6950859B1 (en) * 2002-12-23 2005-09-27 Microtune (San Diego), Inc. Wireless cable replacement for computer peripherals
US7149839B2 (en) * 2004-12-03 2006-12-12 Microsoft Corporation Wireless USB hardware scheduling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030082724A (ko) * 2002-04-18 2003-10-23 삼성전자주식회사 고속 범용 직렬 버스 인터페이스를 지원하는 디지탈가입자 회선 모뎀
KR20040035905A (ko) * 2002-10-12 2004-04-30 한국전자통신연구원 통합 랜 호 제어 시스템

Also Published As

Publication number Publication date
US7149839B2 (en) 2006-12-12
US7263573B2 (en) 2007-08-28
US20070083695A1 (en) 2007-04-12
EP1667387B1 (en) 2013-05-08
EP1667387A2 (en) 2006-06-07
JP2006216015A (ja) 2006-08-17
EP1667387A3 (en) 2011-08-17
JP4878475B2 (ja) 2012-02-15
CN1783041A (zh) 2006-06-07
KR20060063693A (ko) 2006-06-12
CN1783041B (zh) 2012-01-11
US20060123181A1 (en) 2006-06-08

Similar Documents

Publication Publication Date Title
KR101238460B1 (ko) Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법
EP0619036B1 (en) Method and apparatus for processing data within stations of a communication network
US7409485B1 (en) Optimized data transfer for a data bus
US7653773B2 (en) Dynamically balancing bus bandwidth
EP2016725B1 (en) Adaptive speed control for mac-phy interfaces
KR101159335B1 (ko) 대역 내 제어 정보를 전송하기 위한 전략
US7698477B2 (en) Method and apparatus for managing flow control in PCI express transaction layer
US8635386B2 (en) Communication control device, data communication method and program
JP2004348246A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US20070073824A1 (en) Apparatus and method for acquiring identification information when a bus reset occurs
US6842797B1 (en) USB adapter for burst mode communications
US7177913B2 (en) Method, system, and program for adding operations identifying data packets to structures based on priority levels of the data packets
US6898654B1 (en) Method and system for managing bandwidth on a master-slave bus
US20030088796A1 (en) Communication adapter
US8331332B2 (en) Wireless USB host and channel time allocation method
US7085855B1 (en) Data transfer control device and electronic equipment
JP2008107997A (ja) データ通信方法、データ通信装置及びデータ通信システム
JP4660404B2 (ja) データ転送装置及びデータ転送方法
JP4428750B2 (ja) データ通信システム
US20090287862A1 (en) Host device and scheduling method
US7930438B2 (en) Interrogate processing for complex I/O link
JPWO2005029778A1 (ja) 通信制御回路および通信制御方法
WO2009033971A1 (en) System and method for splitting data and data control information
US20060004929A1 (en) Method and apparatus for recovering from inefficient behavior of devices on I/O buses
JP4026979B2 (ja) データ通信システム

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee