KR101197749B1 - 범용 직렬 버스(usb)의 플로우 제어 - Google Patents

범용 직렬 버스(usb)의 플로우 제어 Download PDF

Info

Publication number
KR101197749B1
KR101197749B1 KR1020087031624A KR20087031624A KR101197749B1 KR 101197749 B1 KR101197749 B1 KR 101197749B1 KR 1020087031624 A KR1020087031624 A KR 1020087031624A KR 20087031624 A KR20087031624 A KR 20087031624A KR 101197749 B1 KR101197749 B1 KR 101197749B1
Authority
KR
South Korea
Prior art keywords
usb
notification
usb device
host
data
Prior art date
Application number
KR1020087031624A
Other languages
English (en)
Other versions
KR20090025278A (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 KR20090025278A publication Critical patent/KR20090025278A/ko
Application granted granted Critical
Publication of KR101197749B1 publication Critical patent/KR101197749B1/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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

범용 직렬 버스(USB: Universal Serial Bus)에서 플로우 제어를 수행하기 위한 기술들이 제시된다. 일 설계에서, USB 호스트는 USB 장치와의 데이터 교환들을 초기화하기 위하여 USB 장치에 토큰 패킷들을 전송한다. USB 장치는 예컨대 전송할 데이터가 존재하지 않기 때문에 또는 그것의 버퍼가 완전히 채워져 있거나 또는 거의 완전히 채워져있기 때문에 그것이 USB 호스트와 데이터를 교환할 수 없다는 것을 결정한다. 그 다음에, USB 장치는 데이터 교환들을 일시 중지하기 위하여 "플로우 오프" 통지를 USB 호스트에 전송한다. USB 호스트는 플로우 오프 통지를 수신하고, USB 장치에 토큰 패킷들을 전송하는 것을 일시 중지한다. 그 다음에, USB 장치는 그것이 USB 호스트와 데이터를 교환할 수 있다는 것을 결정한다. 그 다음에, USB 장치는 데이터 교환들을 재시작하기 위하여 "플로우 온" 통지를 USB 호스트에 전송한다. USB 호스트는 플로우 온 통지를 수신하고 USB 장치에 토큰 패킷들을 전송하는 것을 재시작한다.

Description

범용 직렬 버스(USB)의 플로우 제어{FLOW CONTROL FOR UNIVERSAL SERIAL BUS(USB)}
본 출원은 "최적 USB 플로우 제어 메커니즘"이라는 명칭으로 2006년 5월 25일에 출원된 미국 가출원번호 제60/808,691호의 우선권을 주장하며, 이 가출원은 본 발명의 양수인에게 양도되고 여기에 참조로 통합된다.
본 발명은 일반적으로 데이터 통신, 특히 USB를 통한 데이터 교환을 제어하는 기술들에 관한 것이다.
USB는 키보드들, 마우스 장치들, 프린터들, 스캐너들, 메모리 스틱들, 디스크 드라이브들, 디지털 카메라들, 웹캠들 등과 같은 외부 장치들과 컴퓨터들과의 상호 접속을 위하여 광범위하게 사용된다. USB는 또한 일반적으로 개인휴대단말들(PDA), 게임 머신들 등과 같은 다른 전자장치들을 위하여 사용된다.
USB는 USB 호스트 및 이 USB 호스트에 접속된 USB 장치들사이에서 데이터를 교환하기 위하여 호스트-중심 구조(host-centric architecture)를 이용한다. USB 호스트는 컴퓨터상에 배치될 수 있으며, USB 장치들은 USB 와이어를 통해 컴퓨터에 접속된 외부 장치들일 수 있다. 호스트-중심 구조에서, USB 호스트는 모든 USB 장치들과의 통신을 제어한다. 새로운 USB 장치가 컴퓨터에 접속될때마다, USB 호스 트 및 USB 장치는 USB 장치를 구축(configure)하기 위하여 시그널링을 교환한다. 그 다음에, USB 호스트는 USB 호스트가 USB 장치로 데이터를 전송하거나 또는 USB 장치로부터 데이터를 수신하기를 원할때마다 USB 장치에 토큰 패킷들을 주기적으로 전송할 수 있다. USB 장치는 토큰 패킷들이 USB 호스트에 의하여 송출(issue)될때마다 USB 호스트로부터 데이터를 수신하거나 또는 USB 호스트로 데이터를 전송할 수 있다.
USB 호스트는 USB 장치에 토큰 패킷을 전송함으로서 트랜잭션을 시작할 수 있다. 토큰 패킷을 수신할때, USB 장치는 USB 장치가 데이터를 임시적으로 전송 또는 수신할 수 없는 경우에 부정응답(NAK) 핸드셰이크(handshake) 패킷을 전송할 수 있다. USB 장치로부터 NAK를 수신할때, USB 호스트는 이후에 다른 토큰 패킷을 전송함으로서 부정응답된 트랜잭션을 재시도할 수 있다.
NAK 핸드셰이크 패킷들은 USB의 플로우 제어를 위하여 사용될 수 있다. USB 장치는 데이터 레이트를 조절/조종하기위하여 NAK 핸드셰이크 패킷들을 전송할 수 있다. 그러나, 부정응답된 트랜잭션들은 USB 대역폭 및 전력의 상당량을 소비할 수 있다.
따라서, USB의 플로우 제어를 더 효율적으로 수행하기 위한 기술들에 대한 필요성이 요구된다.
부정응답된 트랜잭션들을 감소시키고 데이터 성능 및 전력 효율성을 개선하기 위하여 USB의 플로우 제어를 수행하는 기술들이 여기에서 제시된다. 플로우 제어를 위하여, USB 장치는 USB 호스트와 데이터를 교환하기 위한 그것의 능력을 결정할 수 있으며, 그것의 능력에 기초하여 플로우 제어를 위한 통지들을 전송할 수 있다.
일 설계에서, USB 호스트는 USB 장치와의 데이터 교환들을 초기화하기 위하여(예컨대, USB 장치에 데이터를 전송하거나 또는 USB 장치로부터 데이터를 수신하기 위하여) USB 장치에 토큰 패킷들을 (예컨대, 주기적으로) 전송할 수 있다. USB 장치는 예컨대 전송할 데이터가 존재하지 않기 때문에 또는 그것의 버퍼가 완전히 또는 거의 완전히 차 있기 때문에 그것이 USB 호스트와 데이터를 교환할 수 없다는 것을 결정할 수 있다. USB 장치는 데이터 교환들을 일시 중지하기 위하여 USB 호스트에 "플로우 오프(flow off)" 통지를 (예컨대, 인터럽트 파이프(interrupt pipe)를 통해) 전송할 수 있다. USB 호스트는 플로우 오프 통지를 수신하고 USB 장치에 토큰 패킷들을 전송하는 것을 중지할 수 있다. 그 다음에, USB 장치는 그것이 USB 호스트와 데이터를 교환할 수 있다는 것을 결정할 수 있다. 그 다음에, USB 장치는 데이터 교환들을 재시작하기 위하여 USB 호스트에 "플로우 온(flow on)" 통지를 전송할 수 있다. USB 호스트는 플로우 온 통지를 수신하고 USB 장치에 토큰 패킷들을 전송하는 것을 재시작할 수 있다. USB 장치가 데이터를 교환할 수 없는 시간동안 토큰 패킷들의 전송을 중지시킴으로서, 부정응답된 트랜잭션들은 감소되거나 또는 방지될 수 있다.
본 발명의 다양한 양상들 및 특징들은 이하에서 더 상세히 설명될 것이다.
도 1은 USB 호스트 및 USB 장치의 블록도를 도시한다.
도 2A는 USB 장치로부터 데이터를 판독하는 입력 트랜잭션들을 도시한 도면이다.
도 2B 및 2C는 USB 장치에 데이터를 전송하는 출력 트랜잭션들을 도시한 도면들이다.
도 3은 인터럽트 파이프를 통해 전송된 통지들을 사용하여 USB의 플로우 제어를 도시한 도면이다.
도 4는 인터럽트 파이프를 통해 전송된 통지들을 사용하여 USB의 플로우 제어를 도시한 도면이다.
도 5는 플로우 제어를 위하여 USB 장치에 의하여 수행되는 프로세스를 도시한 도면이다.
도 6은 플로우 제어를 위하여 USB 호스트에 의하여 수행되는 프로세스를 도시한 도면이다.
도 7은 무선 통신 장치의 블록도이다.
여기에서 제시된 플로우 제어 기술들은 USB, 다른 버스들, 폴링-기반 입력/출력(I/O) 시스템들, 및 데이터가 엔티티들사이에서 교환되는 다른 시스템들을 위해 사용될 수 있다. 명확화를 위하여, 플로우 제어 기술들은 특히 공개적으로 이용가능한 문헌, "Universal Serial Bus Specification," Revision 2.0, April 27, 2000에서 커버되는 USB와 관련하여 이하에서 상세히 기술된다.
USB는 다음과 같은 용어를 사용한다:
Figure 112008089353785-pct00001
함수 - USB 호스트에 능력/태스크를 제공하는 USB 장치,
Figure 112011008030928-pct00002
엔드포인트 - USB 장치(또는 함수) 및 USB 호스트사이의 통신 플로우에서 정보의 소스(source) 또는 싱크(sink),
Figure 112008089353785-pct00003
파이프 - USB 호스트 및 USB 장치상의 엔드포인트사이의 논리 채널, 및
Figure 112008089353785-pct00004
트랜잭션 - 엔드포인트로의 서비스의 전송, 이 서비스는 토큰 패킷, 최적 데이터 패킷, 및 선택적 핸드셰이크 패킷으로 구성된다.
USB 장치는 하나 이상의 함수(function)들을 가질 수 있으며, 예컨대 웹캠(webcam)은 비디오를 위한 하나의 함수 및 사운드를 위한 다른 함수를 가질 수 있다. 각각의 물리적 USB 장치는 USB 호스트에 의하여 할당된 고유 7-비트 어드레스에 의하여 식별된다. USB 호스트는 1 내지 127의 127개의 다른 어드레스들을 가진 최대 127개의 물리 USB 장치들을 지원할 수 있다. 함수는 하나 이상의 엔드포인트들을 가질 수 있다. 각각의 엔드포인트는 4비트 엔드포인트 수에 의하여 식별된다. 예컨대, 함수는 USB 호스트에 데이터를 전송하는 입력(IN) 엔드포인트와 USB 호스트로부터 데이터를 수신하는 출력(OUT) 엔드포인트를 가질 수 있으며, 여기서 "입력(IN)" 및 "출력(OUT)"은 USB 호스트의 관점에서 고려한 것이다.
도 1은 USB 호스트(110) 및 USB 장치(120)의 설계를 도시한 블록도이다. 이러한 설계에서, USB 호스트(110)는 애플리케이션들(112), 함수(function) 드라이버(114) 및 버스 드라이버(116)를 포함한다. 애플리케이션들(112)은 USB 장치(들)와 교환할 데이터를 가진 임의의 애플리케이션을 포함할 수 있다. 애플리케이션들(12)은 도 1에 도시된 바와같이 USB 호스트(110)상에 배치될 수 있거나 또는 USB 호스트(110)가 배치된 컴퓨터 또는 임의의 다른 전자장치의 부분일 수 있다. 함수 드라이버(114)는 USB 호스트(110)에 접속된 USB 장치들의 함수들에 대한 데이터 교환들을 관리한다. 함수 드라이버(114)는 애플리케이션들(112)과 인터페이싱하며, 애플리케이션들에 대한 데이터를 전송 및/또는 수신하는 트랜잭션들을 초기화한다. 버스 드라이버(116)는 USB 와이어(130)를 통해 USB 장치들과의 패킷 교환들을 지원하며, 패킷 교환을 위한 물리 계층 처리를 수행한다. 버스 드라이버(116)는 함수 드라이버(114)의 지시에 따라 패킷들을 전송 및 수신할 수 있다.
도 1에 도시된 설계에서, USB 장치(120)는 애플리케이션들(122), 함수(124), USB 드라이버(126), 입력 버퍼(128a) 및 출력 버퍼(128b)를 포함한다. 일반적으로, USB 장치(120)는 하나 이상의 함수들을 가질 수 있다. 단순화를 위하여, 이하의 설명은 USB 장치(120)가 단일 함수를 가진다고 가정한다. 애플리케이션(122)은 USB 호스트(110)와 교환하기 위한 데이터를 가진 임의의 애플리케이션을 포함할 수 있다. 함수(124)는 애플리케이션들(122)과 인터페이싱하며, 애플리케이션들과 관련하여 USB 호스트(110)와의 데이터 교환들을 지원한다. USB 드라이버(126)는 USB 와이어(130)를 통해 USB 호스트(110)와의 패킷 교환들을 지원하며, 패킷 교환을 위한 물리 계층 처리를 수행한다. 입력(IN) 버퍼(128a)SMS USB 호스트(110)에 전송될 데이터를 저장하며, 출력(OUT) 버퍼(128b)는 USB 호스트(110)로부터 수신된 데이터를 저장한다.
도 1은 USB 호스트(110) 및 USB 장치(120)의 특정 설계를 도시한다. 일반적 으로, USB 호스트는 USB 장치(110)와 관련하여 도 1에 도시된 것들과 동일하거나 또는 모듈들을 포함할 수 있다. USB 장치는 또한 USB 장치(120)와 관련하여 도 1에 도시된 것들과 동일하거나 또는 다른 모듈들을 포함할 수 있다. 각각의 모듈은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다.
USB 호스트(110)는 USB 장치(120)의 함수(120)의 입력 엔드포인트로부터 데이터를 수신하거나 또는 함수(124)의 출력 엔드포인트에 데이터를 전송하는 트랜잭션을 초기화할 수 있다. 패킷들의 다른 시퀀스들은 다른 타입의 트랜잭션을 위하여 교환될 수 있다. USB 2.0은 3개의 다른 속도 세팅값들, 즉 1.5 메가비트/초(Mbps)까지 커버하는 느린 속도(low-speed), 12 Mbps까지 커버하는 전체-속도(full-speed) 및 480Mbps까지 커버하는 빠른 속도(high-speed)를 지원한다. 패킷들의 다른 시퀀스들은 다른 속도 세팅값들의 출력(OUT) 트랜잭션들을 위하여 교환될 수 있다.
도 2A는 모든 3가지 속도 세팅값들에 대하여 USB 장치(120)로부터 데이터를 판독하는 입력 트랜잭션들을 도시한다. 입력 트랜잭션에서, USB 호스트(110)는 USB 장치(120)로부터 데이터를 판독하기 위해 요청하는 패킷인 입력 토큰 패킷을 전송한다(단계(212)). 입력 토큰 패킷은 USB 장치(120)의 어드레스 및 입력 엔드포인트 수를 포함한다. USB 장치(120)는 입력 토큰 패킷을 수신하고, USB 장치(120)가 전송할 데이터를 가져서 데이터를 전송할 수 있다는 것을 결정하고, USB 호스트(110)에 데이터 패킷을 전송한다(단계(214)). USB 호스트(110)는 데이터 패킷을 수신하고, 패킷이 정확하게 수신되었다는 것을 결정하고, 긍정응답(ACK) 핸드셰이크 패킷을 전송한다(단계(216)). 단계들(212, 214, 216)은 성공적인 입력 트랜잭션을 계속한다.
이후 시간의 다른 입력 트랜잭션을 위하여, USB 호스트(110)는 USB 장치(120)의 함수(124)의 입력 엔드포인트에 입력 토큰 패킷을 전송한다(단계(222)). USB 장치(120)는 입력 토큰 패킷을 수신하고,USB 장치(120)가 전송할 데이터를 가지지 않거나 또는 데이터를 전송할 수 없다고 결정하고, USB 호스트(110)에 NAK 핸드셰이크 패킷을 전송한다(단계(224)). USB 호스트(110)는 NAK 패킷을 수신하고, 추후에 입력 트랜잭션을 재시도할 수 있다. 단계들(222, 224)은 2개의 오버헤드 패킷들(그러나 데이터 패킷이 아님)이 USB 호스트(110) 및 USB 장치(120)사이에서 교환되는 부정응답된 입력 트랜잭션을 구성한다.
도 2B는 느린-속도 및 전체-속도에 대하여 USB 장치(120)에 데이터를 전송하는 출력(OUT) 트랜잭션들을 도시한다. 출력 트랜잭션을 위하여, USB 호스트(110)는 USB 장치(120)에 데이터를 기록하기 위해 요청하는 패킷인 출력 토큰 패킷을 전송한다(단계(232)). 출력 토큰 패킷은 USB 장치(120)의 어드레스 및 출력 엔드포인트 수를 포함한다. 그 다음에, USB 호스트(110)는 USB 장치(120)로부터의 대답을 대기하지 않고 출력 토큰 패킷 직후에 USB 장치(120)에 데이터 패킷을 전송한다(단계(234)). USB 장치(120)는 출력 토큰 패킷을 수신하며, 데이터 패킷을 수신하며, 패킷이 정확하게 수신되었다는 것을 결정하며, ACK 핸드셰이크 패킷을 전송한다(단계(236)). 단계들(232, 234, 236)은 느린-속도 또는 전체-속도에 대한 성공적인 출력 트랜잭션을 구성한다.
이후 시간의 다른 출력(OUT) 트랜잭션에 대하여, USB 호스트(110)는 USB 장치(120)의 함수(124)의 출력 엔드포인트에 출력 토큰 패킷 및 데이터 패킷 모두를 전송한다(단계들(242) 및 (244)). USB 장치(120)는 출력 토큰 패킷 및 데이터 패킷을 수신하고, USB 장치(120)가 데이터를 수신할 수 없다는 것을 결정하며, NAK 핸드셰이크 패킷을 전송한다(단계(246)). USB 호스트(110)는 NAK 패킷을 수신하고, 이후 시간의 출력 트랜잭션을 재시도할 수 있다. 단계들(242, 244, 246)은 2개의 오버헤드 패킷들 및 하나의 데이터 패킷이 비성공적인 전송동안 USB 호스트(110) 및 USB 장치(120)사이에서 교환되는 부정응답된 출력 트랜잭션을 구성한다.
도 2C는 빠른-속도에 대하여 USB 장치(120)에 데이터를 전송하는 출력(OUT) 트랜잭션들을 도시한다. 출력(OUT) 트랜잭션을 위하여, USB 호스트(110)는 USB 장치(120)가 데이터를 수신할 수 있는지의 능력을 질의하는 패킷인 PING 토큰 패킷을 전송한다(단계(252)). PING 패킷은 USB의 특정 패킷으로서 분류되나 여기에서는 토큰 패킷으로서 지칭된다. 단계(252)의 PING 토큰 패킷은 USB 장치(120)의 어드레스 및 출력 엔드포인트 수를 포함한다. USB 장치(120)는 PING 토큰 패킷을 수신하며, 그것이 데이터를 수신할 수 있는 경우에 ACK 핸드셰이크 패킷을 전송한다(단계(254)). ACK를 수신할때, USB 호스트(110)는 USB 장치(120)에 출력 토큰 패킷 및 데이터 패킷을 전송하며(단계들(262, 264)), USB 장치(120)는 ACK 또는 NYET 핸드셰이크 패킷을 리턴(return)한다(단계(266)). 단계들(252 내지 266)은 빠른-속도에 대하여 성공적인 출력 트랜잭션을 구성한다.
이후 시간의 다른 출력 트랜잭션을 위하여, USB 호스트(110)는 USB 장치(120)에 PING 토큰 패킷을 전송한다(단계(272)). USB 장치(120)는 PING 토큰 패킷을 수신하고, USB 장치(120)가 데이터를 수신할 수 없다는 것을 결정하며, NAK 핸드셰이크 패킷을 전송한다(단계(274)). USB 호스트(110)는 NAK 패킷을 수신하고, 추후에 출력(OUT) 트랜잭션을 재시도할 수 있다. 단계들(272, 274)은 2개의 오버헤드 패킷들이 비성공적인 전송동안 USB 호스트(110) 및 USB 장치(120)사이에서 교환되는 부정응답된 출력 트랜잭션을 구성한다.
도 2A 및 도 2B에 도시된 바와같이, USB 호스트(110)는 USB 장치(120)와의 데이터 교환들을 제어한다. USB 호스트(110)는 USB 장치(120)로부터 데이터를 판독하는 입력(IN) 트랜잭션들 및 USB 장치에 데이터를 기록하는 출력(OUT) 트랜잭션들을 초기화한다. USB 호스트(110)는 USB 장치(120)의 데이터 요건들 및 이용가능한 USB 대역폭에 기초하여 입력 토큰 패킷들을 주기적으로 전송할 수 있다. USB 호스트(110)는 그것이 USB 장치(120)에 전송할 데이터를 가지고 있을때마다 출력 또는 PING 토큰 패킷들을 전송할 수 있다. USB 호스트(110)는 전형적으로 입력 토큰 패킷들을 맹목적으로 전송하며, USB 호스트(110)가 전송할 또는 전송할 수 있는 임의의 데이터를 가지고 있지 않는지의 여부를 선험적으로 알지 못한다. USB 호스트(110)는 또한 그것이 전송 데이터를 가지고 있을때 출력(OUT) 또는 PING 토큰 패킷들을 전송하며, USB 호스트(110)가 데이터를 수신할 수 있는지의 여부를 선험적으로 알지 못한다.
도 3은 USB 호스트(110) 및 USB 장치(120)사이의 패킷 교환들의 예를 도시한다. 이러한 예에서, USB 장치(120)는 USB 호스트(110)와 함께 인터럽트 파이프 및 데이터 파이프를 가진다. USB에서, 파이프는 전형적으로 특정 함수, 특정 엔드포인트, 및 특정 방향과 연관된다. 인터럽트 파이프는 시그널링 정보, 예컨대 플로우 제어 정보를 전송하기 위하여 사용될 수 있는 시그널링 채널로서 고려될 수 있다. 일반적으로, USB 장치는 인터럽트 파이프를 가지거나 또는 가지지 않을 수 있다. 데이터 파이프는 데이터 트래픽을 전송하기 위하여 사용될 수 있는 데이터 채널로서 고려될 수 있다. 데이터 파이프는 USB의 벌크 파이프(bulk pipe) 또는 등시성(isochronous) 파이프일 수 있으며, 입력 또는 출력 방향을 향할 수 있다. 파이프는 단방향이며, USB 장치(120)로부터 USB 호스트(110)로의 입력 방향 또는 USB 호스트(110)로부터 USB 장치(120)로의 출력 방향으로 정보를 반송할 수 있다. 도 3에 도시된 예에서, 인터럽트 파이프 및 데이터 파이프는 둘다 입력 방향을 향한다.
인터럽트 파이프의 엔드포인트는 USB 호스트(110)의 셋업동안 인터럽트 파이프에 대하여 적정 버스 액세스 주기를 지정할 수 있다. 인터럽트 파이프에 대한 버스 액세스 주기는 다음과 같은 범위들중 하나로부터 선택될 수 있다.
Figure 112008089353785-pct00005
엔트포인트가 느린-속도(low-speed)를 지원하는 경우 10 내지 255 밀리초(ms),
Figure 112011008030928-pct00006
엔트포인트가 전체-속도(full-speed)를 지원하는 경우 1 내지 255, 및,
Figure 112011008030928-pct00007
엔드포인트가 빠른-속도(high-speed)를 지원하는 경우 0.125 내지 0.125×2M이며, M≤15이다.
USB 호스트(110)는 T인터럽트의 주기에서 USB 장치(120)에 데이터 파이프에 대한 입력(IN) 토큰 패킷들을 전송할 수 있으며, 이 주기는 인터럽트 파이프에 대한 버스 액세스 주기와 동일하거나 또는 짧을 수 있다. 입력 토큰 패킷이 인터럽트 파이프를 통해 수신될때마다, USB 장치(120)는 예컨대 도 2A에 도시된 바와같이 제어 정보를 가진 데이터 패킷 또는 NAK 핸드셰이크 패킷을 USB 호스트(110)에 전송할 수 있다.
USB 호스트(110)는 T데이터의 주기에서 입력 토큰 패킷들을 인터럽트 파이프를 통해 USB 장치(120)에 전송할 수 있으며, 이 주기는 USB 장치(120)의 데이터 요건들, 이용가능 USB 대역폭 등에 기초하여 결정될 수 있다. T데이터는 T인터럽트보다 훨씬 짧을 수 있으며, 전체-속도 및 빠른-속도를 위한 마이크로초(㎲) 정도일 수 있다. 따라서, USB 호스트(110)는 인터럽트 파이프를 통해 전송된 각각의 입력 토큰 패킷을 위한 데이터 파이프를 통해 많은 (예컨대, 수백개의) 입력 토큰 패킷들을 전송할 수 있다. 입력 토큰 패킷이 데이터 파이프를 통해 수신될때마다, USB 장치(120)는 USB 호스트(110)에 트래픽 데이터를 가진 데이터 패킷 또는 NAK 핸드셰이크 패킷을 전송할 수 있다. 단순화를 위하여, ACK 핸드셰이크 패킷들은 도 3에 도시되지 않는다.
도 3에 도시된 바와같이, 데이터 파이프에 대하여 많은 부정응답된 전송들이 존재할 수 있다. 부정응답된 트랜잭션들은 USB 대역폭의 상당량을 소비할 수 있으며, USB 와이어상의 다른 파이프들에 대한 최대 유효 데이터 스루풋을 감소시킬 수 있다. 부정응답된 트랜잭션들은 또한 임의의 유리한 결과들 제공하지 않고 USB 호스트(110) 및 USB 장치(120)의 전력을 소비할 수 있다.
일 양상에서, 플로우 제어는 부정응답된 트랜잭션들을 감소시키거나 또는 방지하기 위하여 USB에 대하여 수행된다. 이는 데이터 성능 및 전력 효율성을 개선할 수 있다. 플로우 제어를 위하여, USB 장치(120)는 USB 호스트(110)와 데이터를 교환하기 위한 USB 장치(120)의 능력을 결정할 수 있다. USB 장치(120)는 상기와 같이 결정된 능력에 기초하여 플로우 제어를 위한 통지들을 USB 호스트(110)에 전송할 수 있다.
일반적으로, USB 장치(120)는 플로우 제어를 위하여 USB 호스트(110)에 다양한 타입의 정보를 전송할 수 있다. 예컨대, 이하의 정보는 플로우 정보를 위하여 전송될 수 있다.
Figure 112008089353785-pct00008
플로우 오프(flow off) 통지 - 트랜잭션들/데이터 교환들을 일시 중지시키는 지시,
Figure 112008089353785-pct00009
플로우 온(flow on) 통지 - 트랜잭션들/데이터 교환들을 재시작시키는 지시,
Figure 112008089353785-pct00010
데이터 레이트 - 교환할 트래픽 데이터 레이트를 지시하며,
Figure 112008089353785-pct00011
버퍼 크기 - 입력 또는 출력 방향으로 전송할 데이터량을 지시하며,
Figure 112008089353785-pct00012
토큰 레이트 - USB 호스트(110)에 의하여 전송될 토큰 패킷들의 레이트를 지시하며,
Figure 112008089353785-pct00013
타임아웃 - 플로우 제어를 해야하는지를 주기적으로 결정하기 위하여 사 용되며,
Figure 112008089353785-pct00014
N-슛(shot) 지시 - N번의 데이터 전송을 수행한후 정지하라는 지시이며, N≥1이며,
Figure 112008089353785-pct00015
제어 기간 - 플로우 제어기 적용되는 기간을 지시한다.
플로우 제어 정보는 플로우 제어되는 파이프와 다른 파이프를 통해 전송된다.
일 설계에서, 플로우 제어는 플로우 오프 및 플로우 온 통지들에 기초하여 수행되며, 이들 통지는 다른 명칭으로 지칭될 수 있다. 이러한 설계에서, USB 장치(120)가 특정 파이프에 대하여 데이터를 교환할 수 없다고 USB 장치(120)가 결정할때, USB 장치(120)는 이러한 파이프를 통한 트랜잭션들을 중지시키는 플로우 오프 통지를 USB 호스트(110)에 전송한다. 플로우 오프 통지를 수신할때, USB 호스트(110)는 파이프상의 트랜잭션들을 스케줄링하지 않으며, 이는 부정응답된 트랜잭션들로 인하여 USB 대역폭의 낭비를 방지한다. USB 장치(120)가 중지된 파이프를 통해 다시 데이터를 교환할 수 있다는 것을 USB 장치(120)가 결정할때, USB 장치(120)는 이러한 파이프를 통한 트랜잭션들을 재시작하기 위하여 USB 호스트(110)에 플로우 온 통지를 전송한다. 플로우 온 통지를 수신할때, USB 호스트(110)는 파이프를 통한 트랜잭션들을 재시작한다. 이러한 설계에서, 플로우 오프 및 플로우 온 통지들은 본래 파이프를 통한 트랜잭션들을 중지 및 시작하라는 요청들이다.
플로우 제어는 USB 장치(120)에 각각의 파이프에 대하여 개별적으로 수행될 수 있다. 각각의 파이프가 단방향일때, 플로우 제어는 입력 및 출력 방향에 대하 여 개별적으로 수행될 수 있다. 플로우 제어는 또한 예컨대 단일 논리 유닛으로서 함께 "번들(bundle)"되는 파이프들의 세트에 대하여 수행될 수 있다.
USB 장치(120)는 업스트림 및/또는 다운스트림을 통해 USB 호스트(110)와 데이터를 교환할 수 있다. 따라서, 데이터를 교환하는 것은 입력 방향(또는 업스트림)으로 USB 호스트(110)에 데이터를 전송하거나 또는 출력 방향(또는 다운스트림)으로 USB 호스트(110)로부터 데이터를 수신하는 것을 지칭할 수 있다. USB 장치(120)는 여러 이유들로 인하여 주어진 방향으로 USB 호스트(110)와 데이터를 성공적으로 교환할 수 없다. 입력 방향에 대하여, USB 장치(120)는 전송할 데이터가 존재하지 않는 경우에, 입력 버퍼(128a)가 비어 있거나 또는 거의 비어있는 경우에, 처리 자원들이 USB 장치에서 이용가능하지 않는 경우 등등의 경우에 USB 호스트(110)에 데이터를 전송할 수 없다. 출력 방향에 대하여, USB 장치(120)는 출력 버퍼(128b)가 완전히 채워지거나 또는 거의 완전히 채워지는 경우, 처리 자원들이 USB 장치에서 이용가능하지 않은 경우에, USB 장치의 CPU가 다른 태스크(task)들로 점유되는 경우 등등의 경우에 USB 호스트(110)로부터 데이터를 수신할 수 없다.
입력 방향으로의 업스트림 USB 전송에 대하여, USB 장치(120)는 USB 장치(120)가 파이프 x를 통해 USB 호스트(110)에 전송할 임의의 데이터를 가지지 않을때 특정 파이프 x를 통해 플로우 오프 통지를 전송할 수 있다. 플로우 오프 통지는 USB 호스트(110)에 대한 파이프 x를 식별하는 정보를 포함할 수 있다. USB 호스트(110)는 파이프 x를 통해 데이터를 요청하는 것을 일시 중지한후 입력 토큰 패킷들을 파이프 x를 통해 USB 장치(120)에 전송하는 것을 일지 중지할 수 있다. USB 장치(120)가 파이프 x를 통해 전송하기 위하여 이용가능한 데이터를 가질때, USB 장치(120)는 플로우 온 통지를 파이프 x를 통해 USB 호스트(110)에 전송할 수 있다. 플로우 온 통지는 USB 호스트(110)에 대한 파이프 x를 식별하는 정보를 포함할 수 있다. 그 다음에, USB 호스트(110)는 입력 토큰 패킷들을 파이프 x를 통해 USB 장치(120)에 전송하는 것을 재시작할 수 있다.
파이프 x를 통한 업스트림 USB 전송은 플로우 오프 통지가 파이프 x를 통해 전송되는 시간에 불완전할 수 있다. 이러한 경우에, USB 장치(120)는 업스트림 USB 전송을 재시작할 수 있으며, USB 장치(120)가 플로우 온 통지를 전송할때 그만둔(left off) 위치로부터 계속할 수 있다. 선택적으로, USB 장치(120)는 시작부로부터 업스트림 USB 전송을 재시작할 수 있으며 플로우 오프 통지전에 전송되는 부분을 재전송할 수 있다.
출력 방향으로의 다운스트림 USB 전송에 대하여, USB 장치(120)는 USB 장치(120)가 USB 호스트(110)로부터 파이프 x를 통해 데이터를 수신할 수 없다는 것을 USB 장치(120)가 결정할때 특정 파이프 x를 통해 플로우 오프 통지를 전송할 수 있다. 예컨대, USB 장치(120)의 출력 버퍼(128b)는 완전히 채워지거나 또는 거의 완전히 채워질 수 있으며, USB 장치(120)는 이 순간에 또는 이 순간 직후에 생 데이터를 수신할 수 없다. 플로우 오프 통지는 USB 호스트(110)에 대한 파이프 x를 식별하는 정보를 포함할 수 있다. USB 호스트(110)는 파이프 x를 통해 데이터를 전송하는 것을 중지할 수 있으며, 출력 또는 PING 토큰 패킷들을 파이프 x를 통해 USB 장치(120)로 전송하는 것을 일시 중지할 수 있다. USB 장치(120)가 파이프 x 를 통해 데이터를 다시 수신할 수 있을때, USB 장치(120)는 플로우 온 통지를 파이프 x를 통해 USB 호스트(110)에 전송할 수 있다. 플로우 온 통지는 USB 호스트(110)에 대한 파이프 x를 식별하는 정보를 포함할 수 있다. 그 다음에, USB 호스트(110)는 파이프 x를 통해 데이터를 전송하는 것을 시작한후 출력 또는 PING 토큰 패킷들을 파이프 x를 통해 USB 장치(120)에 전송하는 것을 재시작할 수 있다.
파이프 x를 통한 다운스트림 USB 전송은 플로우 오프 통지가 파이프 x를 통해 전송되는 시간에서 불완전할 수 있다. 이러한 경우에, USB 호스트(110)는 다운스트림 USB 전송을 재시작할 수 있으며, 그것이 플로우 온 통지를 수신할때 그만둔(left off) 위치로부터 계속할 수 있다. 선택적으로, USB 호스트(110)는 시작부로부터 다운스트림 USB 전송을 재시작한후 플로우 오프 통지전에 전송되는 부분을 재전송할 수 있다.
플로우 오프 및 플로우 온 통지들은 예컨대 기존 USB 메시지들 또는 새로운 USB 메시지들을 사용하여 다양한 방식으로 전송될 수 있다. 일 설계에서, 통신 장치들을 위한 USB 클래스 정의(class definition)에 정의된 기존의 접속속도변화 통지 메시지는 플로우 오프 및 플로우 온 통지들을 전송하기 위하여 사용될 수 있다. 이러한 설계에서, 제로(zero)의 접속 속도값은 플로우 오프 통지를 전송하기 위하여 사용될 수 있으며, 비-제로(non-zero) 값은 플로우 온 통지(및 가능한 경우에 허용가능 데이터 레이트)를 전송하기 위하여 사용될 수 있다. 접속속도변화 통지 메시지는 인터럽트 파이프를 통해 전송될 수 있다. 플로우 오프 및 플로우 온 통지들은 이러한 목적을 위하여 정의된 다른 기존 USB 메시지 또는 새로운 USB 메시 지로 전송될 수 있다.
일 설계에서, 플로우 오프 및 플로우 온 통지들은 USB 장치(120)가 USB 호스트(110)에 접속되는 동안 항상 이용가능한 인터럽트 파이프를 통해 전송된다. 인터럽트 파이프는 데이터 파이프와 유사한 방식으로 동작한다. 그러나, 버스 액세스 주기는 데이터 파이프보다 인터럽트 파이프에 대하여 훨씬 느릴 수 있으며, 예컨대 인터럽트 파이프에 대하여 수밀리초 정도일 수 있으며 전체-속도 또는 빠른-속도 데이터 파이프에 대하여 수밀리초 정도일 수 있다. 그러므로, USB 호스트(110)는 데이터 파이프보다 인터럽트 파이프에 대하여 훨씬 느린 레이트로 토큰 패킷들을 전송할 수 있다. USB 장치(120)가 인터럽트 파이프를 통해 입력 토큰 패킷을 수신할때마다, USB 장치(120)는 플로우 제어 통지 메시지, NAK 핸드셰이크 패킷 또는 임의의 다른 패킷을 인터럽트 파이프를 통해 USB 호스트(110)에 전송할 수 있다. 플로우 제어 통지는 플로우 오프 통지 또는 플로우 온 통지일 수 있다.
도 4는 인터럽트 파이프를 통해 전송된 통지들을 사용하여 USB에 대한 플로우 제어의 설계를 도시한다. 일반적으로, 플로우 제어는 입력 방향 및/또는 출력 방향에 대하여 수행될 수 있다. 도 4에 도시된 예에서, USB 장치(120)는 인터럽트 파이프 및 데이터 파이프를 가지며, 이들 파이프는 입력 방향을 향한다.
USB 호스트(110)는 입력 토큰 패킷들을 데이터 파이프를 통해 USB 장치(120)에 주기적으로 전송할 수 있다. USB 장치(120)는 ACK 핸드셰이크 패킷 및 데이터 패킷 또는 NAK 핸드셰이크 패킷을 USB 호스트(110)에 전송함으로서 각각의 입력 토큰 패킷에 응답할 수 있다. 시간 T1에서, USB 장치(120)는 USB 장치(120)가 데이터 파이프를 통해 USB 호스트(110)에 전송할 데이터를 가지지 않는다는 것을 결정한다. 그 다음에, USB 장치(120)는 인터럽트 파이프를 통한 다음 입력 토큰 패킷을 대기하고, T2에서 플로우 오프 통지 메시지를 인터럽트 파이프를 통해 USB 호스트(110)에 전송한다. USB 호스트(110)는 플로우 오프 통지를 수신하고, 시간 T3에서 시작하여 데이터 파이프를 통해 입력 토큰 패킷들을 전송하는 것을 일시 중지한다. USB 호스트(110)는 USB 장치(120)에 의하여 부정응답될 수 있는 입력 토큰 패킷들을 인터럽트 파이프를 통해 주기적으로 전송할 수 있다.
시간 T4에서, USB 장치(120)는 그것이 데이터 파이프를 통해 USB 호스트(110)에 전송할 데이터를 가지고 있다는 것을 결정한다. 그 다음에, USB 장치(120)는 인터럽트 파이프를 통한 다음 입력 토큰 패킷을 대기하고, 시간 T5에서 플로우 온 통지 메시지를 인터럽트 파이프를 통해 USB 호스트(110)에 전송한다. USB 호스트(110)는 플로우 온 통지를 수신하며, 시간 T6에서 시작하여 데이터 파이프를 통해 입력 토큰 패킷들을 전송하는 것을 재시작한다.
도 4에 도시된 바와같이, 데이터 파이프상의 부정응답된 트랜잭션들은 데이터 파이프를 통해 전송할 데이터가 존재하지 않는다고 결정할때 플로우 오프 통지를 전송함으로서 감소되거나 또는 방지될 수 있다. 데이터 파이프상의 부정응답된 트랜잭션들을 방지함으로서 절약된 대역폭은 USB 호스트(110)에 접속된 USB 와이어 를 공유하는 다른 파이프들에 대하여 사용될 수 있다.
도 4에 도시된 바와같이, USB 장치(120)는 입력 토큰 패킷이 인터럽트 파이프를 통해 수신될때마다 플로우 제어 통지를 전송하거나 또는 전송하지 않을 수 있다. 그러므로, 인터럽트 파이프상의 임의의 트랜잭션들은 부정응답될 수 있다. 그러나, 인터럽트 파이프상의 트랜잭션 레이트는 데이터 파이프상의 트랜잭션 레이트보다 훨씬 낮을 수 있다. 그러므로, 훨씬 작은 USB 대역폭은 데이터 파이프상의 부정응답된 트랜잭션들보다 인터럽트 파이프상의 부정응답된 트랜잭션들로 인하여 낭비될 수 있다. 게다가, 인터럽트 파이프에 대한 버스 액세스 주기는 부정응답된 트랜잭션들로 인한 오버헤드를 감소시키면서 통지들을 전송하는 원하는 응답시간을 얻기 위하여 선택될 수 있다.
도 4에 도시된 설계에서, USB 장치(120)는 임의의 시간 대신에 인터럽트 파이프를 통해 입력 토큰 패킷을 수신한후에 플로우 제어 통지를 전송할 수 있다. 게다가, USB 호스트(110)가 플로우 오프 통지를 수신하는 시간으로부터 트랜잭션들이 데이터 파이프상에서 일시 중지되는 시간까지 일부 지연이 존재할 수 있다. USB 장치(120)는 인터럽트 파이프의 버스 액세스 주기 및 USB 호스트(110)의 지연을 고려하여 플로우 제어 통지들을 전송할 수 있다. 출력 방향으로의 데이터 파이프에 대하여, USB 장치(120)는 출력 트랜잭션들이 일시 중지될때까지 USB 호스트(110)로부터 데이터를 계속해서 수신할 수 있다. USB 장치(120)는 플로우 오프 통지가 전송되는 시간과 USB 호스트(110)가 데이터 파이프를 통한 출력 트랜잭션들을 일시 중지하는 시간사이의 중간 주기동안 부정응답 출력 트랜잭션들을 방지하기 위하여 출력 버퍼(128b)의 일부 용량을 보존할 수 있다. 보존된 버퍼 용량은 중간 주기의 예상 길이, 데이터 파이프에 대한 최대 또는 평균 데이터 레이트 등에 기초하여 결정될 수 있다.
도 4에 도시된 설계에서, 플로우 제어는 단지 플로우 오프 및 플로우 온 통지들에만 기초하여 수행된다. 다른 설계에서, 플로우 제어는 플로우 오프 및 플로우 온 통지들에 부가하거나 또는 플로우 오프 및 플로우 온 통지들 대신에 데이터 레이트에 기초하여 수행된다. USB 장치(120)는 데이터 레이트가 달성될 수 있도록 토큰 패킷들을 전송할 수 있는 USB 호스트(110)에 데이터 레이트를 전송할 수 있다. 또 다른 설계에서, 플로우 제어는 전송하기 위하여 이용가능한 데이터량을 지시하는 버퍼 크기에 기초하여 수행된다. USB 호스트(110)는 버퍼 크기에 기초하여 결정된 레이트로 토큰 패킷들을 전송할 수 있다. 또 다른 설계에서, 플로우 제어는 플로우 오프 및 플로우 온 통지에 부가하거나 또는 이들 대신에 토큰 레이트에 기초하여 수행된다. USB 호스트(110)는 토큰 패킷들을 토큰 레이트로 USB 장치(120)에 전송할 수 있다. 일반적으로, 플로우 제어는 앞서 리스트된 파라미터들(예컨대, 플로우 오프 및 플로우 온 통지들, 데이터 레이트, 버퍼 크기, 토큰 레이트, 제어 기간 등) 및/또는 다른 파라미터들의 일부에 기초하여 수행될 수 있다.
도 5는 플로우 제어를 위하여 USB 장치에 의하여 수행된 프로세스(500)의 설계를 도시한다. USB 호스트와 데이터를 교환하기 위한 USB 장치의 능력이 결정될 수 있다(블록(512)). 플로우 제어를 위한 제 1 통지는 USB 장치의 결정된 능력에 기초하여 USB 호스트에 전송될 수 있다(블록(514)). 데이터를 교환하기 위한 USB 장치의 능력의 변화가 결정될 수 있다(블록(516)). 플로우 제어를 위한 제 2 통지는 USB 장치의 능력의 결정된 변화에 기초하여 USB 호스트에 전송될 수 있다(블록(518)). 플로우 제어를 위한 통지들은 USB 장치 및 USB 호스트사이의 다수의 파이프들중 특정 파이프를 통해 전송될 수 있다.
블록들(512 내지 518)에서는 USB 장치가 USB 호스트와 데이터를 교환할 수 없다는 결정이 이루어질 수 있다. 플로우 오프 통지는 데이터 교환들을 일시 정지하기 위하여 USB 호스트에 전송될 수 있다. 그 다음에, USB 장치가 USB 호스트와 데이터를 교환할 수 있다는 결정이 이루어질 수 있다. 플로우 온 통지는 데이터 교환들을 재시작하기 위하여 USB 호스트에 전송될 수 있다. 플로우 오프 및 플로우 온 통지들은 각각 제 1 및 제 2 통지들에 대응할 수 있다.
입력 방향의 파이프에 대하여, 예컨대 전송할 데이터가 존재하지 않기 때문에 USB 장치가 USB 호스트에 데이터를 전송할 수 없다는 결정이 이루어질 수 있다. 플로우 오프 통지는 USB 장치에 입력 토큰 패킷들을 전송하는 것을 일시 중지할 수 있는 USB 호스트에 전송될 수 있다. 그 다음에, USB 장치가 USB 호스트에 데이터를 전송할 수 있다는 결정이 이루어질 수 있다. 플로우 온 통지는 USB 장치에 입력 토큰 패킷들을 전송하는 것을 재시작할 수 있는 USB 호스트에 전송될 수 있다.
출력 방향의 파이프에 대하여, 예컨대 USB 장치의 버퍼가 완전히 채워지거나 또는 거의 완전히 채워지기 때문에 USB 장치가 USB 호스트로부터 데이터를 수신할 수 없다는 결정이 이루어질 수 있다. 플로우 오프 트랜잭션은 USB 장치에 출력 또는 PING 토큰 패킷들을 전송하는 것을 일시 중지할 수 있는 USB 호스트에 전송될 수 있다. 일부 보존된 버퍼 용량은 플로우 오프 통지를 수신한후에 출력 또는 PING 토큰 패킷들을 일시 중지할때 USB 호스트에 의하여 지원하는 것을 고려하여 사용될 수 있다. 그 다음에, USB 장치가 USB 호스트로부터 데이터를 수신할 수 있다는 결정이 이루어질 수 있다. 플로우 온 통지는 USB 장치에 출력 또는 PING 토큰 패킷들을 전송하는 것을 재시작할 수 있는 USB 호스트에 전송될 수 있다.
플로우 제어를 위한 통지들은 인터럽트 파이프를 통해 USB 호스트에 전송될 수 있다. 인터럽트 파이프에 대한 입력 통지 패킷은 USB 호스트로부터 수신될 수 있으며, 플로우 제어를 위한 통지는 입력 토큰 패킷을 수신한후에 인터럽트 파이프를 통해 전송될 수 있다.
도 6은 플로우 제어를 위하여 USB 호스트에 의하여 수행되는 프로세스(600)의 설계를 도시한다. 토큰 패킷들은 USB 장치와의 데이터 교환들을 초기화하기 위하여 USB 장치에 전송될 수 있다(블록(612)). 이들 토큰 패킷들은 USB 장치로부터 데이터를 요청하는 입력 토큰 패킷들 또는 USB 장치에 전송할 데이터를 지시하는 출력 또는 PING 토큰 패킷들일 수 있다. 플로우 제어를 위한 제 1 통지는 USB 장치로부터 수신될 수 있다(블록(614)). USB 호스트는 제 1통지에 응답하여 USB 장치에 토큰 패킷들을 전송하는 것을 변경할 수 있다(블록(616)). 예컨대, USB 호스트는 토큰 패킷들을 전송하는 것을 일시 중지하거나 또는 느린 속도로 토큰 패킷들을 전송할 수 있다. 그 다음에, 플로우 제어를 위한 제 1 통지는 USB 장치로부터 수신될 수 있다(블록(618)). USB 호스트는 USB 장치에 토큰 패킷들을 전송하는 것을 재시작할 수 있다(블록(620)).
토큰 패킷들 및 통지들은 USB 장치 및 USB 호스트사이의 다수의 파이프들중 특정 파이프를 통해 전송될 수 있다. 통지들은 USB 장치로부터 인터럽트 파이프를 통해 수신될 수 있다. 인터럽트 파이프상의 입력 토큰 패킷들은 버스 액세스 주기에 따라 전송될 수 있다. 통지는 인터럽트 파이프의 입력 토큰 패킷들 이후에 수신될 수 있다.
여기에서 제시된 플로우 제어 기술들은 장치-초기화 고레벨 플로우 제어(device-initiated higher-level flow control)로 구현될 수 있다. 이 기술들은 플로우 제어 통지들을 전송하기 위하여 기존 메시지(들)를 사용하여 현재의 USB 사양내에서 구현될 수 있다. 이 기술들은 USB 호스트 및 USB 장치의 상위계층 드라이버들을 수정함으로서 구현될 수 있으며, 이는 구현을 단순화시킬 수 있다.
여기에서 제시된 플로우 제어 기술들은 임의의 장점들을 제공할 수 있다. 첫째, 부정응답된 트랜잭션들은 플로우 제어로 감소되거나 또는 방지될 수 있다. 절약된 대역폭은 다른 파이프들에 재할당될 수 있으며, 이는 USB 와이어에 비하여 전체 데이터 스루풋을 개선시킬 수 있다. 둘째, USB 장치 및 USB 호스트에 대하여 전체 전력 효율이 개선될 수 있다.
여기에서 제시된 플로우 기술들은 컴퓨터들, 무선 통신 장치들 및 다른 전자장치들과 관련하여 일반적으로 사용되는 USB 호스트들 및 USB 장치들에 대하여 사용될 수 있다. 무선 장치에 대하여 상기 기술들을 사용하는 것이 이하에 기술된다.
도 7은 무선 통신 시스템에서 무선 통신 장치(700)의 설계의 블록도를 도시 한다. 무선장치(700)는 셀룰라 전화, 단말, 핸드셋, PDA 등일 수 있다. 무선 통신 장치는 코드분할 다중접속(CDMA) 시스템, 이동통신 세계화 시스템(GSM) 시스템 등일 수 있다.
무선 장치(700)는 수신 경로 및 송신 경로를 통해 양방향 통신을 제공할 수 있다. 수신 경로에서, 기지국들(도 7에 도시안됨)에 의하여 전송된 신호들은 안테나(712)에 의하여 수신되며, 수신기(RCVR)(714)에 제공된다. 수신기(714)는 수신된 신호를 컨디셔닝 및 디지털화하며, 추가 처리를 위하여 디지털 섹션(720)에 샘플들을 제공한다. 송신 경로에서, 송신기(TMTR)(716)는 디지털 섹션(720)으로부터 전송될 데이터를 수신하며, 데이터를 처리 및 컨디셔닝하며 변조된 신호를 생성하며, 이 변조된 신호는 안테나(712)를 통해 기지국들에 전송된다.
디지털 섹션(720)은 예컨대 모뎀 프로세서(722), 제어기/프로세서(724), 내부 메모리(726), 그래픽 처리 유닛(GPU)(728), 중앙 처리장치(CPU)(730), 외부 버스 인터페이스(EBI)(732), USB 장치(734) 및 USB 호스트(736)와 같은 다양한 처리, 인터페이스 및 메모리 유닛들을 포함한다. 모뎀 프로세서(722)는 데이터 전송 및 수신을 위한 처리, 예컨대 인코딩, 변조, 복조 및 디코딩을 수행할 수 있다. 제어기/프로세서(724)는 디지털 섹션(720)내의 다양한 유닛들의 동작을 제어할 수 있다. 내부 메모리(726)는 디지털 섹션(720)내의 다양한 유닛들에 대한 데이터 및/또는 명령들을 저장할 수 있다. GPU(728)는 그래픽들, 이미지들, 비디오들, 텍스트들 등에 대한 처리를 수행할 수 있다. CPU(730)는 무선장치(700)에서 다양한 애플리케이션들에 대한 범용 처리를 수행할 수 있다. EBI(732)는 디지털 섹션 (720)(예컨대, 내부 메모리(726)) 및 주 메모리(742)사이의 데이터 전송을 용이하게 할 수 있다. USB 장치(734)는 랩탑 컴퓨터 또는 임의의 다른 전자장치내에 배치될 수 있는 USB 호스트(744)와 통신할 수 있다. USB 호스트(736)는 디스플레이 유닛, 스피커, 웹캠 등일 수 있는 USB 장치(746)와 통신할 수 있다. USB 장치(734) 및/또는 USB 호스트(736)는 여기에서 제시된 플로우 제어 기술들을 구현할 수 있다.
디지털 섹션(720)은 하나 이상의 프로세서들로 구현될 수 있다. 디지털 섹션(720)은 또한 하나 이상의 주문형 집적회로들(ASIC) 및/또는 임의의 다른 타입의 집적회로들(IC)상에 제조될 수 있다.
여기에서 제시된 플로우 제어 기술들은 다양한 수단에 의하여 구현될 수 있다. 예컨대, 이들 기술들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 하드웨어 구현에 있어서, USB 호스트 또는 USB 장치에서 플로우 제어를 수행하기 위하여 사용된 처리 유닛들은 하나 이상의 ASIC들, 디지털 신호 프로세서들(DSP), 디지털 신호 처리 장치들(DSPD), 프로그램가능 논리장치들(PLD), 필드 프로그램가능 게이트 어레이들(FPGA), 프로세서들, 제어기들, 마이크로-제어기들, 마이크로프로세서들, 전자장치들, 여기에서 제시된 기능들을 수행하도록 설계된 다른 전자유닛들, 컴퓨터, 또는 이들의 조합내에서 구현될 수 있다.
펌웨어 및/또는 소프트웨어 구현에서, 플로우 제어 기술들은 여기에서 제시된 기능들을 수행하는 모듈들(예컨대, 프로시저들, 함수들 등)로 구현될 수 있다. 펌웨어 및/또는 소프트웨어 명령들은 메모리(예컨대, 도 7의 메모리(726 또는 742))에 저장되고 프로세서(예컨대, 프로세서(724))에 의하여 실행될 수 있다. 메모리는 프로세서 내부에 또는 프로세서 외부에서 구현될 수 있다. 펌웨어 및/또는 소프트웨어 명령들은 랜덤 액세스 메모리(RAM), 판독전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 전기적 소거가능 PROM(EEPROM), FLASH 메모리, 컴팩트 디스크(CD), 자기 또는 광 데이터 저장 장치 등과 같은 다른 프로세서-판독가능 매체에 저장될 수 있다.
여기에서 제시된 기술들을 구현하는 장치는 독립형 유닛일 수 있거나 또는 장치의 부분일 수 있다. 장치는 (i) 독립헝 집적회로(IC), (ii) 데이터 및/또는 명령들을 저장하는 메모리 IC들을 포함할 수 있는 하나 이상의 IC들의 세트, (iii) 이동국 모뎀(MSM)과 같은 ASIC, (iv) 다른 장치들내에서 구현될 수 있는 모듈, (v) 셀룰라 전화, 무선 장치, 핸드셋 도는 이동유닛, (iv) 등등일 수 있다.
본 발명의 이전 설명은 당업자로 하여금 본 발명을 실시 또는 이용하도록 하기 위하여 제공된다. 본 발명의 다양한 수정들은 당업자에게 명백할 것이며, 여기에서 한정된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 벗어나지 않고 다른 변형예들에 적용될 수 있다. 따라서, 본 발명은 여기에서 제시된 예들 및 설계들에 제한되지 않으며 여기에서 제시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따른다.

Claims (37)

  1. 범용 직렬 버스(USB: Universal Serial Bus) 장치로서,
    버퍼 용량에 기초하여 USB 호스트와 데이터를 교환하기 위한 상기 USB 장치의 능력을 결정하고, 상기 USB 장치의 결정된 능력에 기초하여 상기 USB 호스트에 플로우(flow) 제어를 위한 통지를 전송하고, 그리고 상기 통지에 응답하여 상기 USB 호스트로부터 더 느린 레이트로 토큰 패킷들을 수신하도록 구성된 프로세서 ? 상기 더 느린 레이트는 상기 통지를 전송하기 이전의 데이터 레이트보다 더 느림 ?; 및
    상기 프로세서에 접속된 메모리를 포함하는, 통신 장치.
  2. 제 1항에 있어서, 상기 프로세서는 상기 USB 장치 및 상기 USB 호스트사이의 다수의 파이프(pipe)들 중 특정 파이프에 대해 상기 플로우 제어를 위한 통지를 전송하도록 구성되는, USB 장치.
  3. 제 1항에 있어서, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 없다는 것을 결정하고, 데이터 교환들을 일시 중지(suspend)하기 위하여 상기 USB 호스트에 플로우 오프(flow off) 통지를 전송하도록 구성되는, USB 장치.
  4. 제 3항에 있어서, 상기 플로우 오프 통지를 전송한후에, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 있다는 것을 결정하고, 데이터 교환들을 재시작(resume)하기 위하여 상기 USB 호스트에 플로우 온(flow on) 통지를 전송하도록 구성되는, USB 장치.
  5. 제 1항에 있어서, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트에 데이터를 전송할 수 없다는 것을 결정하고 상기 USB 호스트에 플로우 오프 통지를 전송하도록 구성되며, 상기 USB 호스트는 상기 플로우 오프 통지에 응답하여 상기 USB 장치에 입력(IN) 토큰 패킷들을 전송하는 것을 일시 중지하는, USB 장치.
  6. 제 5항에 있어서, 상기 프로세서는 전송할 데이터가 존재하지 않을때 상기 USB 장치가 상기 USB 호스트에 데이터를 전송할 수 없다는 것을 결정하도록 구성되는, USB 장치.
  7. 제 5항에 있어서, 상기 플로우 오프 통지를 전송한후에, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트에 데이터를 전송할 수 있다는 것을 결정하고, 상기 USB 호스트에 플로우 온 통지를 전송하도록 구성되며, 상기 USB 호스트는 상기 플로우 온 통지에 응답하여 상기 USB 장치에 입력 토큰 패킷들을 전송하는 것을 재시작하는, USB 장치.
  8. 제 1항에 있어서, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트로부터 데이터를 수신할 수 없다는 것을 결정하고, 상기 USB 호스트에 플로우 오프 통지를 전송하도록 구성되며, 상기 USB 호스트는 상기 플로우 오프 통지에 응답하여 상기 USB 장치에 출력(OUT) 또는 PING 토큰 패킷들을 전송하는 것을 일시 중지하는, USB 장치.
  9. 제 8항에 있어서, 상기 프로세서는 상기 USB 장치의 버퍼가 완전히 채워지거나 또는 완전히 채워진 양으로부터 미리 결정된 양 내에 있을 때 상기 USB 장치가 상기 USB 호스트로부터 데이터를 수신할 수 없다는 것을 결정하도록 구성되는, USB 장치.
  10. 제 8항에 있어서, 상기 프로세서는 상기 USB 장치의 버퍼가 완전히 채워진 양으로부터 미리 결정된 양 내에 있을 때 상기 USB 호스트로부터 데이터를 수신할 수 없다는 것을 결정하도록 구성되며, 상기 미리 결정된 양은 상기 플로우 오프 통지를 수신한후에 상기 출력 또는 PING 토큰 패킷들을 일시 중지할때 상기 USB 호스트에 의한 지연 때문에 고려한 예비 버퍼 용량(reserved buffer capacity)에 대응하는, USB 장치.
  11. 제 8항에 있어서, 상기 플로우 오프 통지를 전송한후에, 상기 프로세서는 상기 USB 장치가 상기 USB 호스트로부터 데이터를 수신할 수 있다는 것을 결정하고, 상기 USB 호스트에 플로우 온 통지를 전송하도록 구성되며, 상기 USB 호스트는 상기 플로우 온 통지에 응답하여 상기 USB 장치에 출력 또는 PING 토큰 패킷들을 전송하는 것을 재시작하는, USB 장치.
  12. 제 1항에 있어서, 상기 프로세서는 플로우 제어를 위한 통지를 인터럽트 파이프를 통해 상기 USB 호스트에 전송하도록 구성되는, USB 장치.
  13. 제 12항에 있어서, 상기 프로세서는 상기 USB 호스트로부터 상기 인터럽트 파이프에 대한 입력(IN) 토큰 패킷을 수신하고, 상기 입력(IN) 토큰 패킷을 수신한후에 상기 인터럽트 파이프를 통해 상기 플로우 제어를 위한 통지를 전송하도록 구성되는, USB 장치.
  14. 범용 직렬 버스(USB: Universal Serial Bus) 장치에 의해 수행되는 통신 방법으로서,
    버퍼 용량에 기초하여 USB호스트와 데이터를 교환하기 위한 상기 USB 장치의 능력을 결정하는 단계;
    상기 USB 장치의 결정된 능력에 기초하여 상기 USB 호스트에 플로우(flow) 제어를 위한 통지를 전송하는 단계; 및
    상기 통지에 응답하여 상기 USB 호스트로부터 더 느린 레이트로 토큰 패킷들을 수신하는 단계 ? 상기 더 느린 레이트는 상기 통지를 전송하기 이전의 데이터 레이트보다 더 느림 ? 를 포함하는, 통신 방법.
  15. 제 14항에 있어서, USB 장치의 능력을 결정하는 상기 단계는 상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 없다는 것을 결정하는 단계를 포함하며, 플로우 제어를 위한 통지를 전송하는 상기 단계는 데이터 교환들을 일시 중지시키기 위하여 상기 USB 호스트에 플로우 오프 통지를 전송하는 단계를 포함하는, 통신 방법.
  16. 제 15항에 있어서,
    상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 없다는 것을 결정하는 단계 이후에,
    상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 있다는 것을 결정하는 단계; 및
    데이터 교환들을 재시작하기 위하여 상기 USB 호스트에 플로우 온 통지를 전송하는 단계를 더 포함하는, 통신 방법.
  17. 제 14항에 있어서, 플로우 제어를 위한 통지를 전송하는 상기 단계는 상기 플로우 제어를 위한 통지를 인터럽트 파이프를 통해 상기 USB 호스트에 전송하는 단계를 포함하는, 통신 방법.
  18. 범용 직렬 버스(USB: Universal Serial Bus) 장치로서,
    버퍼 용량에 기초하여 USB 호스트와 데이터를 교환하기 위한 상기 USB 장치의 능력을 결정하기 위한 수단;
    상기 USB 장치의 결정된 능력에 기초하여 상기 USB 호스트로 플로우 제어를 위한 통지를 전송하기 위한 수단; 및
    상기 통지에 응답하여 상기 USB 호스트로부터 더 느린 레이트로 토큰 패킷들을 수신하기 위한 수단 ? 상기 더 느린 레이트는 상기 통지를 전송하기 이전의 데이터 레이트보다 더 느림 ? 을 포함하는, USB 장치.
  19. 제 18항에 있어서, 상기 USB 장치가 상기 USB 호스트와 데이터를 교환할 수 있다는 것을 결정하기 위한 수단; 및
    데이터 교환들을 재시작하기 위하여 상기 USB 호스트에 플로우 온 통지를 전송하기 위한 수단을 더 포함하는, USB 장치.
  20. 삭제
  21. 삭제
  22. 범용 직렬 버스(USB: Universal Serial Bus) 호스트로서,
    제 1 레이트로 범용 직렬 버스(USB: Universal Serial Bus) 장치에 토큰 패킷들을 전송하고, 상기 USB 장치로부터 플로우 제어를 위한 제 1 통지를 수신하며, 상기 제 1 통지에 응답하여 상기 제 1 레이트보다 느린 제 2 레이트로 상기 USB 장치에 후속(subsequent) 토큰 패킷들을 전송하도록 구성된 프로세서; 및
    상기 프로세서에 접속된 메모리를 포함하고,
    상기 USB 장치는 버퍼 용량에 기초하여 자신의 능력을 결정하고 상기 결정된 능력에 기초하여 상기 제 1 통지를 전송하는,
    USB 호스트.
  23. 제 22항에 있어서, 상기 토큰 패킷들 및 상기 제 1 통지는 상기 USB 장치 및 USB 호스트사이의 다수의 파이프들 중 특정 파이프에 대한 것인, USB 호스트.
  24. 제 22항에 있어서, 상기 프로세서는 상기 제 1 통지에 응답하여 상기 USB 장치에 토큰 패킷들을 전송하는 것을 일시 중지하도록 구성되는, USB 호스트.
  25. 삭제
  26. 제 22항에 있어서, 상기 프로세서는 상기 USB 장치로부터 플로우 제어를 위한 제 2 통지를 수신하고, 상기 제 1 레이트로 상기 USB 장치에 토큰 패킷들을 전송하는 것을 재시작하도록 구성되는, USB 호스트.
  27. 제 22항에 있어서, 상기 프로세서는 상기 USB 장치로부터 데이터를 요청하는 입력(IN) 토큰 패킷들을 상기 USB 장치에 전송하도록 구성되는, USB 호스트.
  28. 제 22항에 있어서, 상기 프로세서는 상기 USB 장치에 전송할 데이터를 지시하기 위하여 상기 USB 장치에 출력(OUT) 또는 PING 토큰 패킷들을 전송하도록 구성되는, USB 호스트.
  29. 제 22항에 있어서, 상기 프로세서는 상기 USB 장치에 데이터 파이프에 대한 토큰 패킷들을 전송하고, 상기 USB 장치로부터 인터럽트 파이프를 통해 상기 제 1 통지를 수신하도록 구성되는, USB 호스트.
  30. 제 29항에 있어서, 상기 프로세서는 선택된 버스 액세스 주기에 따라 상기 인터럽트 파이프에 대한 입력(IN) 토큰 패킷들을 전송하고, 상기 인터럽트 파이프에 대해 전송된 상기 입력(IN) 토큰 패킷들중 하나 이후에 상기 플로우 제어를 위한 제 1 통지를 수신하도록 구성되는, USB 호스트.
  31. 범용 직렬 버스(USB: Universal Serial Bus) 호스트에 의해 수행되는 통신 방법으로서,
    제 1 레이트로 범용 직렬 버스(USB: Universal Serial Bus) 장치에 토큰 패킷들을 전송하는 단계;
    상기 USB 장치로부터 플로우 제어를 위한 제 1 통지를 수신하는 단계; 및
    상기 제 1 통지에 응답하여 상기 제 1 레이트보다 느린 제 2 레이트로 상기 USB 장치에 후속 토큰 패킷들을 전송하는 단계를 포함하고,
    상기 USB 장치는 버퍼 용량에 기초하여 자신의 능력을 결정하고 상기 결정된 능력에 기초하여 상기 제 1 통지를 전송하는,
    통신 방법.
  32. 제 31항에 있어서, 상기 USB 장치로부터 플로우 제어를 위한 제 2 통지를 수신하는 단계; 및
    상기 제 1 레이트로 상기 USB 장치에 토큰 패킷들을 전송하는 것을 재시작하는 단계를 더 포함하는, 통신 방법.
  33. 제 31항에 있어서, 플로우 제어를 위한 제 1 통지를 수신하는 상기 단계는 상기 USB 장치로부터 인터럽트 파이프를 통해 상기 플로우 제어를 위한 제 1 통지를 수신하는 단계를 포함하는, 통신 방법.
  34. 범용 직렬 버스(USB: Universal Serial Bus) 호스트로서,
    제 1 레이트로 범용 직렬 버스(USB: Universal Serial Bus) 장치에 토큰 패킷들을 전송하기 위한 수단;
    상기 USB 장치로부터 플로우 제어를 위한 제 1 통지를 수신하기 위한 수단; 및
    상기 제 1 통지에 응답하여 상기 제 1 레이트보다 느린 제 2 레이트로 상기 USB 장치에 후속 토큰 패킷들을 전송하기 위한 수단을 포함하고,
    상기 USB 장치는 버퍼 용량에 기초하여 자신의 능력을 결정하고 상기 결정된 능력에 기초하여 상기 제 1 통지를 전송하는,
    USB 호스트.
  35. 제 34항에 있어서, 상기 USB 장치로부터 플로우 제어를 위한 제 2 통지를 수신하기 위한 수단; 및
    상기 제 1 레이트로 상기 USB 장치에 토큰 패킷들을 전송하는 것을 재시작하기 위한 수단을 더 포함하는, USB 호스트.
  36. 명령들을 저장하기 위한 프로세서-판독가능 매체로서,
    상기 명령들은,
    제 1 레이트로 범용 직렬 버스(USB: Universal Serial Bus) 장치에 토큰 패킷들을 전송하고;
    상기 USB 장치로부터 플로우 제어를 위한 제 1 통지를 수신하며; 그리고
    상기 제 1 통지에 응답하여 상기 제 1 레이트보다 느린 제 2 레이트로 상기 USB 장치에 후속 토큰 패킷들을 전송하고,
    상기 USB 장치는 버퍼 용량에 기초하여 자신의 능력을 결정하고 상기 결정된 능력에 기초하여 상기 제 1 통지를 전송하는, 프로세서-판독가능 매체.
  37. 제 36항에 있어서, 상기 USB 장치로부터 플로우 제어를 위한 제 2 통지를 수신하고, 상기 제 1 레이트로 상기 USB 장치에 토큰 패킷들을 전송하는 것을 재시작하는 명령들을 더 포함하는, 프로세서-판독가능 매체.
KR1020087031624A 2006-05-25 2007-05-25 범용 직렬 버스(usb)의 플로우 제어 KR101197749B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US80869106P 2006-05-25 2006-05-25
US60/808,691 2006-05-25
US11/753,473 2007-05-24
US11/753,473 US8200856B2 (en) 2006-05-25 2007-05-24 Flow control for universal serial bus (USB)
PCT/US2007/069780 WO2007140324A2 (en) 2006-05-25 2007-05-25 Flow control for universal serial bus (usb)

Publications (2)

Publication Number Publication Date
KR20090025278A KR20090025278A (ko) 2009-03-10
KR101197749B1 true KR101197749B1 (ko) 2012-11-06

Family

ID=38669809

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087031624A KR101197749B1 (ko) 2006-05-25 2007-05-25 범용 직렬 버스(usb)의 플로우 제어

Country Status (6)

Country Link
US (1) US8200856B2 (ko)
EP (2) EP2038755B1 (ko)
JP (2) JP2009538483A (ko)
KR (1) KR101197749B1 (ko)
AT (1) ATE556375T1 (ko)
WO (1) WO2007140324A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200856B2 (en) * 2006-05-25 2012-06-12 Qualcomm Incorporated Flow control for universal serial bus (USB)
KR101357162B1 (ko) * 2007-03-30 2014-02-04 삼성전자주식회사 호스트 장치와 usb 장치간의 통신을 제어하는 장치,방법 및 시스템
JP5506304B2 (ja) * 2009-09-18 2014-05-28 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理システム
US8332676B2 (en) * 2009-09-24 2012-12-11 Intel Mobile Communications GmbH Methods of preparing a power saving state, universal serial bus device and universal serial bus host
TW201117011A (en) * 2009-11-02 2011-05-16 Ralink Technology Corp Method for transmitting universal serial bus data and apparatus using the same
KR101298593B1 (ko) * 2009-12-21 2013-08-22 한국전자통신연구원 Usb-무선 랜(lan) 시스템에서 usb 통신 동기화를 통한 데이터 송신 장치 및 방법
US8953631B2 (en) * 2010-06-30 2015-02-10 Intel Corporation Interruption, at least in part, of frame transmission
US8510583B2 (en) * 2010-07-01 2013-08-13 Intel Corporation Asynchronous sleep mode for host controller
WO2013147789A1 (en) * 2012-03-29 2013-10-03 Intel Corporation Buffer-related usb communication
US9240951B2 (en) * 2012-11-22 2016-01-19 Intel Corporation Apparatus, system and method of controlling data flow to a plurality of endpoints over a communication network
TWI497306B (zh) 2012-11-29 2015-08-21 Faraday Tech Corp 超高速通用序列匯流排集線器及其相關流量管理方法
US9021143B2 (en) * 2012-11-30 2015-04-28 Intel Corporation Polling of I/O devices on host initiated communication transports
KR102153543B1 (ko) 2013-10-31 2020-09-08 삼성전자주식회사 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치
KR20150124796A (ko) * 2014-04-29 2015-11-06 삼성전자주식회사 무선 환경에서 usb 통신을 위한 데이터 전송을 제어하는 방법 및 장치
US10474604B2 (en) * 2016-04-01 2019-11-12 Intel Corporation Transmitting universal serial bus (USB) data over alternate mode connection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100557215B1 (ko) 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119190A (en) 1996-11-06 2000-09-12 Intel Corporation Method to reduce system bus load due to USB bandwidth reclamation
JP3605242B2 (ja) * 1996-11-12 2004-12-22 富士通株式会社 データ送信装置、データ受信装置、およびデータファイル記憶媒体
JP3711432B2 (ja) 1998-04-15 2005-11-02 セイコーエプソン株式会社 周辺処理装置およびその制御方法
US6311294B1 (en) 1998-10-20 2001-10-30 Cypress Semiconductor Corp. Device and method for efficient bulk data retrieval using a universal serial bus
TW413763B (en) 1999-03-16 2000-12-01 Winbond Electronics Corp Data conversion device and data flow control method in between USB host and network end
US7007110B2 (en) 2001-03-30 2006-02-28 Intel Corporation Nak throttling for USB host controllers
US7079856B2 (en) * 2002-04-05 2006-07-18 Lucent Technologies Inc. Data flow control between a base station and a mobile station
US6795872B2 (en) * 2002-05-09 2004-09-21 Renesas Technology America, Inc. Maintaining at least partial functionality of a device as defined by a hardware configuration at a USB bus enumeration while the device memory is programmed
KR100654465B1 (ko) * 2005-09-23 2006-12-06 삼성전자주식회사 무선 중계 장치 및 방법
US8200856B2 (en) * 2006-05-25 2012-06-12 Qualcomm Incorporated Flow control for universal serial bus (USB)

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100557215B1 (ko) 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법

Also Published As

Publication number Publication date
EP2038755B1 (en) 2012-05-02
WO2007140324A3 (en) 2008-01-31
EP2038755A2 (en) 2009-03-25
WO2007140324A2 (en) 2007-12-06
US20080028113A1 (en) 2008-01-31
JP2012168965A (ja) 2012-09-06
EP2397949A1 (en) 2011-12-21
JP5639107B2 (ja) 2014-12-10
KR20090025278A (ko) 2009-03-10
JP2009538483A (ja) 2009-11-05
ATE556375T1 (de) 2012-05-15
US8200856B2 (en) 2012-06-12
EP2397949B1 (en) 2016-10-05

Similar Documents

Publication Publication Date Title
KR101197749B1 (ko) 범용 직렬 버스(usb)의 플로우 제어
US11176068B2 (en) Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US5103446A (en) Local area network adaptive throughput control for instantaneously matching data transfer rates between personal computer nodes
US11379280B2 (en) Methods and systems for managing communication lanes between a universal flash storage (USF) device and a USF host
CN108763121B (zh) TTE端系统适配卡PCIe控制器的中断操作方法
JP2005107683A (ja) 通信コントローラ、通信システム、通信機器、および通信方法
EP2423822B1 (en) Methods and apparatus for improved serial advanced technology attachment performance
KR101357162B1 (ko) 호스트 장치와 usb 장치간의 통신을 제어하는 장치,방법 및 시스템
CN101449254B (zh) 通用串行总线的流控制方法和装置
TWI233553B (en) Bus system and bus interface for connection to a bus
US20190018818A1 (en) Accelerated i3c stop initiated by a third party
CN116627869B (zh) 应用于电子设备的数据传输方法及装置
US20210173808A1 (en) Early parity error detection on an i3c bus
WO2022152157A1 (zh) 一种通信方法及装置
KR20040043198A (ko) 버스 시스템 및 버스 인터페이스
TWI559151B (zh) 管線排程的控制方法及其控制模組
JP2004318315A (ja) データ通信装置
JP2001256171A (ja) データ転送方法及びモジュール
KR20030093766A (ko) 데이터 전송 방법
JPH08317013A (ja) インターフェイスの制御方式
KR20150041733A (ko) 저장 명령을 효율적으로 처리하는 방법 및 장치
JPS626557A (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: 20150930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 8