KR20150050085A - 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 - Google Patents
무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 Download PDFInfo
- Publication number
- KR20150050085A KR20150050085A KR1020130131486A KR20130131486A KR20150050085A KR 20150050085 A KR20150050085 A KR 20150050085A KR 1020130131486 A KR1020130131486 A KR 1020130131486A KR 20130131486 A KR20130131486 A KR 20130131486A KR 20150050085 A KR20150050085 A KR 20150050085A
- Authority
- KR
- South Korea
- Prior art keywords
- transmission buffer
- data
- transmission
- buffer
- usb
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3812—USB port controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3814—Wireless link with a computer system port
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
- Small-Scale Networks (AREA)
Abstract
무선 환경에서 USB(Universal Serial Bus) 통신을 수행하는 디바이스의 버퍼를 관리하는 방법에 있어서, USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인하는 과정과, 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하는 과정과, 상기 비교 결과 상기 송신 버퍼들 중 해당 송신 버퍼의 현재 레벨이 상기 송신 버퍼의 임계 레벨을 초과하는 제1송신 버퍼가 존재할 경우, 상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 과정을 포함한다.
Description
본 발명은 무선 환경에서 USB(Universal Serial Bus) 통신을 위한 버퍼 관리 방법 및 장치에 관한 것이다.
일반적인 USB(Universal Serial Bus) 통신 시스템은 하나의 USB 호스트(host)가 존재하며, 상기 USB 호스트와 직접 통신(direct communication)을 수행할 수 있는 USB디바이스(device)를 포함한다. 그리고, 본원 명세서에서 USB 통신은 상기 USB 호스트와 USB 디바이스 간의 연결로 정의된다. 이때, 상기 연결은 USB 호스트에 대해 다수의 허브(hub)를 통해서 멀티 타이어(multi-tier)를 구성할 수 있다. 이 경우에도, 상기 USB 호스트와 USB 디바이스는 직접 연결된다.
이러한 USB 통신이 유선 환경에서 수행될 경우, 고정적으로 할당되는 미리 정해진 대역폭(bandwidth)을 독점적으로 사용함에 따라 상대적으로, 주변 디바이스들과의 충돌(collision) 및 패킷 드롭(packet drop) 등의 발생 가능성이 낮다.
반면, USB 통신이 무선 환경에서 수행될 경우, 무선 환경은 주변 모든 디바이스들에 의해서 해당 대역폭을 공유하는 특성상, 무선 환경의 일 예인 Wi-Fi는 유선 환경에서와 달리 USB 통신을 위한 고정적인 대역폭을 보장해줄 수 없다. 따라서, USB 통신 시 주변 디바이스들과의 충돌, 간섭(interference) 등으로 인한 패킷 손실의 발생 및 Wi-Fi queue 의 패킷 오버 플로우로 인한 손실의 가능성이 높아지게 된다.
그러므로, 무선 환경에서의 USB 통신 시 패킷 손실을 최소화할 수 있는 방안이 요구된다.
본 발명은 무선 환경에서 USB 통신 시 패킷 손실을 최소화할 수 있는 버퍼 관리 방법 및 장치를 제안한다.
본 발명의 실시 예에 따른 방법은; 무선 환경에서 USB(Universal Serial Bus) 통신을 수행하는 디바이스의 버퍼를 관리하는 방법에 있어서, USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인하는 과정과, 상기 송신 버퍼들 각각의 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하는 과정과, 상기 비교 결과 상기 송신 버퍼들 중 해당 송신 버퍼의 현재 레벨이 상기 송신 버퍼의 임계 레벨을 초과하는 제1송신 버퍼가 존재할 경우, 상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 과정을 포함한다.
본 발명의 실시 예에 따른 장치는; 무선 환경에서 USB(Universal Serial Bus) 통신을 수행하는 디바이스의 버퍼를 관리하는 장치에 있어서, USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인하는 확인부와, 상기 송신 버퍼들 각각의 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하고, 상기 비교 결과 상기 송신 버퍼들 중 해당 송신 버퍼의 현재 레벨이 상기 송신 버퍼의 임계 레벨을 초과하는 제1송신 버퍼가 존재할 경우, 상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 결정부를 포함한다.
본 발명은 USB 통신을 수행하는 디바이스 내에서 USB 어플리케이션 별로 발생한 데이터를 Wi-Fi 단으로 전달하기 위해서 저장하는 버퍼의 오버플로우를 방지함에 따라 패킷 손실률을 감소시킬 수 있는 효과가 있다.
또한, USB 통신을 위한 데이터들 중 전송 안정성이 중요시되는 벌크 데이터에 대한 데이터 전송 성공률을 높일 수 있다. 구체적인 예로, 도 9a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 Packet Delivery Ratio(PDR)을 나타낸 그래프이다. 도 9b를 참조하면, 본 발명의 실시 예에 따른 버퍼 관리부를 적용한 경우, 벌크 데이터의 PDR이 도 9a에 도시한 바와 같이 상기 버퍼 관리부를 적용하지 않은 벌크 데이터의 PDR에 비해 월등히 높아짐을 확인할 수 있다.
그리고, 상기 벌크 데이터의 속도 조절을 통해서 Isochronous 데이터 및 인터럽트데이터의 전송 지연 시간을 감소시키는 효과가 있다. 도 10a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 인터럽트 데이터에 대한 전송 지연 시간을 나타낸 그래프이다. 도 10b를 참조하면, USB 통신 시 데이터 량이 증가함에 따라 인터럽트 데이터의 전송 지연 시간이 상기 버퍼 관리부를 적용하지 않은 도 10a에 비해 상당히 짧아지는 것을 확인할 수 있다.
도 1은 일반적으로 무선 환경을 기반으로 하는 USB 통신 시스템의 구성의 일 예를 도시한 도면,
도 2는 일반적으로 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면,
도 3은 본 발명의 실시 예에 따라 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면,
도 4는 본 발명의 제1실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면,
도 5는 본 발명의 제2실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면,
도 6a,b는 본 발명의 제2실시 예에 따라 가상 트래픽을 이용하여 PAL의 송신버퍼의 입력속도를 제어하는 방법을 설명하기 위한 도면,
도 7은 본 발명의 실시 예에 따른 버퍼 관리부의 구성도의 일 예,
도 8은 본 발명의 실시 예에 따른 버퍼 관리부의 동작 흐름도의 일 예.
도 9a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 PDR을 나타낸 그래프,
도 10a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 인터럽트 데이터에 대한 전송 지연 시간을 나타낸 그래프.
도 2는 일반적으로 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면,
도 3은 본 발명의 실시 예에 따라 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면,
도 4는 본 발명의 제1실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면,
도 5는 본 발명의 제2실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면,
도 6a,b는 본 발명의 제2실시 예에 따라 가상 트래픽을 이용하여 PAL의 송신버퍼의 입력속도를 제어하는 방법을 설명하기 위한 도면,
도 7은 본 발명의 실시 예에 따른 버퍼 관리부의 구성도의 일 예,
도 8은 본 발명의 실시 예에 따른 버퍼 관리부의 동작 흐름도의 일 예.
도 9a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 PDR을 나타낸 그래프,
도 10a,b는 본 발명의 실시 예에 따른 버퍼 관리부의 적용 여부에 따른 디바이스의 USB 통신 시 인터럽트 데이터에 대한 전송 지연 시간을 나타낸 그래프.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세히 설명한다. 도면상에 표시된 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호로 나타내었으며, 다음에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일반적으로 무선 환경을 기반으로 하는 USB 통신 시스템의 구성의 일 예를 도시한 도면이다.
도 1을 참조하면, USB 통신 시스템(100)은 USB 호스트(105)와, 상기 USB 호스트와 USB 디바이스들간의 무선 통신을 지원하는 USB 허브들 예를 들어, USB 허브 1~n(115a~115n), 및 상기 USB 허브 1~n(115a~115n)과 연결되는 다수의 USB 디바이스들을 포함한다. 이때, 상기 USB 디바이스들은 예를 들어, 키보드(keyboard), 마우스(mouse) 및 USB-HDD(Hard Disk Drive) 등을 포함할 수 있다.
상기한 바와 같은 USB 통신 시스템에서 USB 통신은 USB 호스트(105)로부터 발생한 데이터들을 무선 통신을 통해서 해당 USB 디바이스에 전달하거나, 반대로, 해당 USB 디바이스에서 발생한 데이터들을 무선 통신을 통해서 상기 USB 호스트(105)에게 전달하는 동작을 포함한다.
도 2는 일반적으로 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면이다.
도 2를 참조하면, 디바이스 1(200)은 USB 통신에서 데이터를 송신하는 송신측 장치를 의미한다. 따라서, 도 1의 경우를 예로 들면, USB 통신을 위한 데이터가 발생한 상기 USB 호스트(105) 또는 USB 디바이스가 될 수 있다. 마찬가지로, 디바이스2(240)는 USB 통신에서 데이터를 수신하는 수신측 장치를 의미한다. 따라서, 도 1의 경우를 예로 들면, USB 통신을 위한 데이터가 수신되는 USB 호스트(105) 또는 USB 디바이스가 될 수 있다.
상기 디바이스1(200)은 크게 어플리케이션부(210)와, PAL(Protocol Adaptation Layer, 220) 및 Wi-Fi부(230)를 포함한다.
상기 어플리케이션부(210)는 USB 통신을 위한 데이터 타입 별 데이터를 생성하는 어플리케이션들 일 예로, 어플리케이션부1~3(212~216)과, USB 제어부(218)를 포함한다. 일반적으로, USB 통신에서 송수신되는 데이터는 4가지 데이터 타입(type)을 갖는다. 상기 데이터 타입으로는, 제어(control) 데이터와, 벌크(bulk) 데이터와, 인터럽트(interrupt) 데이터 및 Isochronous 데이터를 포함한다. 상기 제어 데이터는 USB 통신에 대한 엔드 디바이스(end device)와 USB 호스트간의 연결 및 데이터 전송을 위한 정보 교환을 위한 데이터로 정의된다. 상기 벌크 데이터는 대용량 파일을 시간 및 전송 타이밍(timing)에 관계 없이 전송하기 위한 데이터 전송 방식에 이용된다. 그리고 상기 벌크 데이터의 전송률은 데이터의 무결성을 보장하기 위해 거의 100% 를 유지해야 한다. 이러한 벌크 데이터의 전송 방식은 데이터 전송을 성공함에 따라 점차 데이터 전송속도를 높이는 방식을 사용한다. 그렇기 때문에, 시간에 따라 데이터 전송률이 가변적이기 때문에 특히, 무선 환경에서 벌크 데이터를 위한 무선 자원을 보장하기 어려운 문제점이 있다. 일반적인 벌크 데이터의 전송 방식을 사용하는 USB 디바이스로는 앞서 설명한 USB HDD에서의 HDD 파일 전송이 해당한다.
상기 인터럽트 데이터는 주기적으로 특정 디바이스의 입력(input) 또는 출력(output)이 발생할 경우 데이터를 전송하는 방식에서 사용된다. 즉, 상기 인터럽트 데이터는 특정 이벤트(event)에 반응하여 결과를 보여주는 방식이 적용되기 때문에 데이터 전송률이 보장되어야 하며, 시간 또한 최대한 빨리 전송되어야 한다. 반면, 인터럽트 데이터는 순간적으로 발생하는 데이터 양이 매우 적다. 이러한 인터럽트 데이터는 USB 디바이스들 중 키보드, 마우스, 게임 제어기(game controller) 등에서 주로 적용된다.
마지막으로, Isochronous 데이터는 주기적으로 실시간 카메라 이미지, 영상 등을 전송하기 위해 사용하며, UX(User eXperience)를 보장하기 위해 어느 정도의 데이터 손실을 감수할 수 있다. 반면, Isochronous 데이터는 특정 시간 안에 데이터가 주기적으로 전송되어야 하며, 이것이 지원되지 못할 경우, 스트리밍(streaming) 영상의 끊김, 버퍼링(buffering) 등의 문제가 발생할 수 있다. 일반적인 Isochronous 데이터의 전송 방식은 웹 켐(webcam)에서 이용된다.
구체적인 예로, 상기 어플리케이션부1(212)는 벌크 데이터를 발생하고, 어플리케이션부2(214)는 Isochronous 데이터를 발생시키고, 상기 어플리케이션부3(216)는 인터럽트 데이터를 발생시킨다. 그러면, USB 제어부(218)는 상기 어플리케이션부1~3(212~216) 각각에서 생성된 데이터들이 상기 PAL(220)에서 데이터 타입 별 데이터들을 저장하는 버퍼들로 전달되도록 제어한다. 상기 PAL(220)은 USB 통신을 위한 데이터 타입 별로 데이터들을 구분하여 저장하는 송신 버퍼들과, 플로우 제어부(228)를 포함한다. 일 예로, 상기 송신 버퍼들은 어플리케이션부1(212)에서 발생한 벌크 데이터들을 저장하는 송신 버퍼1(222)와, 어플리케이션부2(214)에서 발생한 Isochronous 데이터들을 저장하는 송신 버퍼2(224) 및 어플리케이션부3(216)에서 발생한 인터럽트 데이터들을 저장하는 송신 버퍼3(226)을 포함한다. 상기 플로우 제어부(228)는 상기 송신 버퍼1(222) 내지 송신 버퍼3(226)에 저장된 데이터들이 상기 Wi-Fi부(230)의 송신 큐(232)를 거쳐 최종적으로 수신 버퍼 1(264) 내지 수신 버퍼 3(266)으로 전달되도록 제어한다.
상기 Wi-Fi부(230)는 상기 송신큐(232)를 포함하며, 상기 송신큐(232)에 저장된 데이터들이 임계치 이상임을 감지하면, 상기 데이터들이 무선 환경을 통해서 수신 장치 일 예로, 디바이스2(240)로 전달될 수 있도록 상기 무선 환경의 송신에 적합한 형태로 상기 데이터들을 변환하여 상기 무선 환경으로 송신한다. 이하, 본원 명세서에서는 설명의 편의상 무선 환경의 일 예로, Wi-Fi를 적용하는 경우를 설명하기로 한다. 이때, 상기 송신큐(232)는 일 예로, 하나의 버퍼를 포함하는 형태로 도시되었다. 상기 송신큐(232)는 송신 버퍼들과 달리, 데이터의 타입을 구분하지 않고 입력되는 데이터들을 저장한다.
상기 디바이스2(240) 역시 상기 디바이스 1(200)과 마찬가지로, 크게 어플리케이션부(250)와, PAL(260) 및 Wi-Fi부(270)를 포함한다.
상기 Wi-Fi부(270)는 상기 디바이스1(200)에서 상기 Wi-Fi부(230)의 송신큐(232)로부터 전달된 데이터들을 저장하는 수신큐(272)를 포함한다. 상기 수신큐(272)는 상기 저장된 데이터들에 대한 데이터 타입 별로 대응하는 상기 PAL(260)의 수신버퍼 1(264) 내지 수신버퍼3(268)에 해당 데이터를 전달한다. 그러면, 상기 PAL(260)을 구성하는 플로우 제어부(262)는 상기 수신버퍼 1(264), 수신버퍼2(266) 및 수신버퍼3(268) 각각에 대해 해당 수신버퍼에 저장된 데이터가 임계치 이상임을 감지하면, 해당 데이터를 상기 데이터에 매핑되는 USB 어플리케이션부(250)의 어플리케이션부로 전달한다. 그러면, 상기 USB 어플리케이션부(250)의 USB 제어부(252)는 각 어플리케이션부1(254) 내지 어플리케이션3(258)에 전달된 데이터에 상응하는 동작이 수행되도록 상기 디바이스 2(240)를 제어한다.
이때, 디바이스 1의 PAL(220)을 구성하는 각 송신 버퍼1~3(222~226)에서 상기 Wi-Fi부(230)의 송신큐(232)로 전달되는 데이터들에 대한 구체적인 제어 방안이 존재하지 않는다. 이에 따라, 상기 송신큐(232)에서 오버 플로우(overflow)가 발생할 가능성이 높다.
이러한 디바이스의 구조로 인해서, 일반적인 USB 통신에서 패킷 전달 비율(PDR: Packet Delivery Ratio)이 감소하는 문제점이 있었다. 그러므로, USB 통신을 위한 디바이스의 PAL을 구성하는 버퍼에서 Wi-Fi부의 송신 큐로 전달되는 데이터들 제어하는 구체적인 방안이 요구된다.
이에 따라 본 발명은 무선 환경을 기반으로 하는 USB 통신 시스템에 있어서, PDR을 증가시키기 위해서 USB 통신을 수행하고자 하는 송수신측 디바이스에 대응하는 장치가 구성하는 PAL이 포함하는 송신 버퍼들에 대한 입출력 속도를 제어하는 방안 및 장치를 제안한다.
먼저, 본 발명의 제1실시 예에서는 USB 통신을 수행하고자 하는 디바이스를 구성하는, Wi-Fi부의 큐에서 오버 플로우를 방지하는 방안을 제안한다. 구체적으로, USB통신에 대한 송신측 디바이스를 구성하는, PAL에 포함된, 데이터 타입들 각각에 대응하는 송신 버퍼로부터 Wi-Fi부의 큐로 출력되는 데이터의 양 즉, 출력 속도를 제어하고, 상기 제어 동작을 수행하기 위한 버퍼 관리부를 구비한다. 상기 버퍼 관리부는 실시 예에 따라 새로운 구성으로 상기 PAL에 추가될 수 있고, 다른 실시 예에 따라 기존의 플로우 제어부가 해당 동작을 추가로 수행할 수도 있다. 본 발명의 제1실시 예에 따른 PAL의 버퍼 관리부는 상기 송신 버퍼들에 저장된 데이터를 Wi-Fi부의 큐로 전달하기 전에 상기 Wi-Fi부의 큐에 저장된 데이터 양을 지시하는 현재 레벨(level)을 조회한다. 그리고, 조회 결과에 상응하게 PAL의 송신 버퍼에 저장된 데이터가Wi-Fi부의 큐로 출력되는 출력 속도를 제어한다. 상기 제어 동작의 구체적인 설명은 도 4를 참조하여 하기에서 후술하기로 한다.
다음으로, 본 발명의 제2실시 예에서는 USB 통신을 수행하고자 하는 디바이스를 구성하는, PAL의 버퍼들에서 오버 플로우를 방지하는 방안을 제안한다. 구체적으로, USB통신에 대한 송신측 디바이스를 구성하는 USB어플리케이션부로부터 PAL의 송신 버퍼들에게 유입되는 데이터의 양 즉, 상기 송신 버퍼의 입력 속도를 제어한다. 마찬가지로, 본 발명의 제2실시 예에 따른 제어 동작 역시 제1실시 예에서 제안한 상기 버퍼 관리부를 통해서 수행된다. 본 발명의 제2실시 예에 따른 PAL의 버퍼 관리부는 상기 PAL의 버퍼들 중 벌크 데이터를 저장하는 송신 버퍼의 현재 레벨을 조회한다. 그리고 상기 조회 결과에 따라 상기 USB 어플리케이션부로 가상 트래픽(traffic)의 생성 요청을 전달한다. 그러면, 상기 생성 요청에 따라 생성된 가상 트래픽을 통해서 상기 벌크 데이터에 대한 자원이 선점되어, 상기 PAL의 벌크 데이터를 저장하는 송신 버퍼의 입력 속도를 제어한다.
도 3은 본 발명의 실시 예에 따라 무선환경에서의 USB 통신을 수행하는 장치 구성도의 일 예를 도시한 도면이다.
도3을 참조하면, 디바이스1(300)과 디바이스2(340)는 각각 USB 통신에서 송신측 장치와, 수신측 장치를 의미하는 도 2의 디바이스1(200) 및 디바이스2(240)에 대응한다. 다만, 상기 디바이스1(300)은 본 발명의 제1실시 예 및 제2실시 예에 따라 해당 디바이스를 구성하는 PAL의 송신 버퍼로 입출력되는 데이터의 전송량을 제어하는 버퍼 관리부를 추가로 구성한다. 상기 버퍼 관리부가 PAL의 새로운 구성으로 추가되는 것은 본 발명의 일 실시 예로서 설명한 것일 뿐, 다른 실시 예에 따라 상기 버퍼 관리부는 따로 추가되는 구성이 아니라 기존의 PAL이 포함하는 플로우 제어부가 추가로 상기 제어 동작을 수행하는 형태로 구현할 수도 있다. 본 발명의 실시 예에 따른 상기 디바이스1(300)이 포함하는 버퍼 관리부(329)와, 상기 디바이스2(340)이 포함하는 버퍼 관리부(369) 외에 나머지 구성들은 상기 버퍼 관리부(329)와 연관된 동작 이외에 도 2의 디바이스1(200) 및 디바이스2(240)의 세부 구성들과 동일하게 동작하므로, 여기서는 그 상세한 설명을 생략하기로 한다.
도 4는 본 발명의 제1실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면이다. 설명의 편의상, 도 4의 장치는 도 3의 디바이스1(300)인 경우를 가정하여 설명한다. 여기서, 버퍼 관리부(329)는 PAL(320)이 구비한 송신 버퍼들 각각이 USB 어플리케이션부(310)로부터의 입력된 데이터들에 대한 저장량을 지시하는 현재 레벨이 미리 정해진 임계 레벨 이상인지 여부를 확인한다. 여기서, 상기 임계 레벨은 해당 송신 버퍼에 저장된 데이터 량이 Wi-Fi부(330)로의 출력 시점에 상응하는 데이터 저장량에 도달하였음을 나타낸다. 본 발명의 실시 예에 따라 PAL(320)이 구성하는 데이터 타입별 송신 버퍼들 각각은 Wi-Fi부(330)로의 임계 레벨이 미리 결정되어 있다.
도 4를 참조하면, 400단계에서 상기 버퍼 관리부(329)는 상기 송신 버퍼들 중 일 예로, USB 통신을 위한 벌크 데이터를 저장하는 송신버퍼1(322)의 데이터 저장량이 상기 임계 레벨 이상임을 인지한 경우를 가정한다. 그러면, 405단계에서 상기 버퍼 관리부(329)는 상기 Wi-Fi부(330)에게 상기 Wi-Fi부(330)를 구성하는 송신 큐(332)의 상태 문의를 전달한다. 그러면, 410단계에서 상기 Wi-fi부(330)는 상기 송신큐(332)가 현재 저장하고 있는 데이터 량을 지시하는 레벨을 상기 상태 문의에 대한 응답으로서 보고한다. 본 발명의 실시 예에 따른 상기 버퍼 관리부(329)는 상기 Wi-Fi부(330)의 송신큐(332)가 저장할 수 있는 데이터량의 최대값과 상기 송신큐(332)의 레벨들 각각에 대응하는 데이터 량을 인지하고 있다. 이에 따라, 415단계에서 상기 버퍼 관리부(329)는 상기 보고된 레벨에 대응하는 데이터 량을 확인하여 상기 최대값 대비 상기 송신큐(332)가 추가로 저장할 수 있는 데이터 량을 판단한다. 그리고, 상기 송신버퍼1(322)가 상기 송신큐(332)로 데이터를 출력하는 출력 속도를 상기 송신큐(332)가 추가로 저장할 수 있는 데이터 량에 상응하게 결정한다.
도 5는 본 발명의 제2실시 예에 따른 무선환경에서의 USB 통신을 수행하는 송신측 장치의 동작을 설명하기 위한 도면이다. 설명의 편의상, 도 5의 장치는 도 3의 디바이스1(300)인 경우를 가정하여 설명한다.
도 5를 참조하면, 500단계에서 버퍼 관리부(329)는 PAL(320)이 구비한 송신 버퍼들 중 일 예로, 송신버퍼1(322)에서 오버 플로우 트리거(overflow trigger)가 발생함을 인지한 경우를 가정한다. 본 발명의 실시 예에 따른 오버 플로우 트리거는 2가지 경우를 포함한다.
첫 번째 경우, PAL(320)을 구성하는 데이터 타입별 송신 버퍼들 각각에 대해 USB 어플리케이션부(310)를 통해서 전달된 해당 데이터의 현재 저장량을 지시하는 현재 레벨이 미리 정해진 임계 레벨을 초과하는 조건을 만족할 경우, 해당 송신 버퍼에서 오버 플로우 트리거가 발생한 것으로 인지하고, USB 어플리케이션 부(310)에서 상기 송신 버퍼에 대응하는 어플리케이션부로부터 상기 송신 버퍼로의 데이터 입력 속도를 제어한다. 본 발명의 실시 예에 따라 PAL(320)이 구성하는 데이터 타입별 송신 버퍼들 각각은 Wi-Fi부(330)로 데이터 전달을 위한 버퍼로, 각각의 송신 버퍼의 임계 레벨이 미리 결정되어 있다. 이때, 송신 버퍼들 각각의 임계 레벨은 해당 송신 버퍼에 저장되는 데이터를 위해서 미리 할당된 USB 슈퍼 프레임(superframe)에 상응하는 값으로 설정된다. 도 5를 참조하면, USB 통신을 위한 전체 슈퍼 프레임 (520)은 제어 데이터 송신을 위한 부분 프레임과, 어플리케이션 2와 3 즉, Isochronous 및 인터럽트 송신을 위한 부분 프레임 그리고, 어플리케이션 1 즉, 벌크 데이터를 위한 부분 프레임으로 분할된다.
본 발명의 제2실시 예에서는 데이터 타입의 특성 상, 데이터 전송률이 100% 보장되어야 하는 벌크 데이터의 패킷 손실률을 증가시키기 위해서, 상기 버퍼 관리부(329)는 상기 송신 버퍼들 중 USB 통신을 위한 벌크 데이터를 저장하는 송신버퍼1(322)의 현재 레벨을 감시한다. 그리고, 상기 현재 레벨이 상기 송신버퍼1(322)의 임계 레벨을 초과한 상황이 발생함을 인지한 경우를 가정하면, 상기 버퍼 관리부(329)는 상기 송신버퍼1(322)을 거쳐 상기 송신큐(332)로 입력되는 어플리케이션1의 벌크 데이터에 대한 입력 속도를 제어한다. 본 발명의 실시 예에 따라 상기 버퍼 관리부(329)는 송신버퍼1(322)의 레벨 별로 미리 결정되어 있는 속도량을 확인하고, 확인된 속도량에 따라 상기 송신버퍼1(322)의 입력 속도를 제어할 수 있다. 예를 들어, 상기 송신 버퍼1(322)의 레벨은 데이터의 저장량이 0인 경우와, 상기 데이터의 저장량이 최대값인 경우 내의 범위 내에서 동일한 데이터 량의 간격 또는 다른 데이터 량의 간격을 갖는 하나 이상의 단위 레벨들로 분류될 수 있다. 예를 들어, 상기 송신버퍼1(322)이 저장할 수 있는 데이터 저장량의 최대값이 '100'인 경우를 가정하면, '25'씩 데이터 저장량이 증가하는 데이터 저장량을 단위 레벨들로 설정할 수 있다. 즉, 데이터 저장량이 25인 경우 단위 레벨 1로 설정하고, 데이터 저장량이 50인 경우, 단위 레벨2로 설정하고, 데이터 저장량이 75인 경우 단위 레벨 3으로 설정할 수 있다. 그리고, 단위 레벨들로 구성되는 구간별 해당 송신 버퍼의 입력 속도의 제어량을 설정할 수 있다. 예를 들어, "0<단위 레벨 1<단위 레벨 2<단위 레벨 3<최대값"으로 해당 버퍼의 데이터 저장량이 분류될 수 있다. 그리고, 해당 송신 버퍼(i)의 현재 레벨(queue_1)이 상기 단위 레벨 1(queue_th1)과 상기 단위 레벨 2(queue_th2)에 포함될 경우, 상기 송신 버퍼(i)의 입력 속도를 반으로 감소시키고, 상기 queue_1이 상기 queue_th2를 초과할 경우, 상기 송신 버퍼(i)의 입력 속도를 1/4로 감소시키는 등으로 속도를 제어할 수 있다.
두 번째 경우, PAL(320)을 구성하는 데이터 타입별 송신 버퍼들 각각이 채워지는 속도를 이용하여 다음 주기에서 예상되는 송신 버퍼의 레벨이 상기 송신 버퍼의 크기에 대응하는 최대값을 만족할 경우, 해당 송신 버퍼에서 오버 플로우 트리거가 발생한 것으로 인지하고, USB 어플리케이션 부(310)에서 상기 송신 버퍼에 대응하는 어플리케이션부로부터 상기 송신 버퍼로의 데이터 입력 속도를 제어한다. 구체적으로, 상기 버퍼 관리부(329)는 상기 송신 버퍼(i)의 입력 속도와, 상기 송신 버퍼(i)의 출력 속도를 이용한 하기 <수학식 1>에 따라 해당 주기에서 상기 송신버퍼(i)의 레벨을 예측할 수 있다.
<수학식 1>
If queue_i + (IR_i - OR_i) * T > queue_i(Max), then 입력 속도의 제어를 결정.
여기서, i는 송신 버퍼의 지시자이고, queue_i는 송신 버퍼(i)의 현재 레벨을 나타낸다. IR_i는 송신 버퍼(i)의 입력 속도를 나타내고, OR_i는 송신 버퍼(i)의 출력 속도를 나타낸다. 그리고, T는 예측 주기 타임을 나타낸다. 그리고, queue_i(Max)는 송신 버퍼(i)가 저장할 수 있는 데이터 량의 최대값 즉, 상기 송신버퍼(i)의 크기를 나타낸다.
결과적으로, 상기 <수학식1>에 따라 송신 버퍼(i)가 채워지는 속도(queue_i + (IR_i - OR_i) * T)가 계산되면, 상기 버퍼 관리부(329)는 상기 송신 버퍼(i)가 채워지는 속도와 queue_i(Max)를 비교한다. 상기 비교 결과, 상기 송신 버퍼(i)가 채워지는 속도가 queue_i(Max)를 초과할 경우, 상기 버퍼 관리부(328)는 상기 송신버퍼(i)에 대해 대응하는 어플리케이션으로부터 전달되는 데이터의 입력 속도를 상기 송신버퍼(i)가 저장할 수 있는 데이터량을 초과하지 않도록 결정할 수 있다.
상기한 바와 같은 2가지 경우 중 하나의 경우를 만족하는 상황이 발생하면, 상기 버퍼 관리부(329)는 오버 플로우 트리거가 발생하였음을 인지한다. 그러면, 505단계에서 상기 버퍼 관리부(329)는 상기 오버 플로우 트리거가 발생한 송신버퍼1(322)로 유입되는 어플리케이션1(312)의 벌크 데이터에 대한 입력 속도를 제어하기로 결정한다.
그러면, 515단계에서 상기 버퍼 관리부(329)는 가상 트래픽의 생성 요청을 상기 USB 어플리케이션부(310)를 제어하는 USB 제어부(318)에게 전달한다. 일반적으로, USB 통신을 위한 자원 할당 방식은, 앞서 설명한 전체 슈퍼 프레임(520)에서 일부 프레임(525)을 Isochronous 데이터 및 인터럽트 데이터를 위한 자원으로 우선적으로 할당한 후, 남은 프레임(530)을 벌크 데이터를 위한 자원으로 할당한다. 앞서 설명한 예와 같이, 현재 상기 송신 버퍼1(322)에 대해 오버플로우 방지 트리거가 발생함에 따라, 상기 송신버퍼1(322)의 입력 속도를 감소시켜야 한다. 도 6a,b는 본 발명의 제2실시 예에 따라 가상 트래픽을 이용하여 PAL의 송신버퍼의 입력속도를 제어하는 방법을 설명하기 위한 도면이다. 입력 속도가 제어되는 대상인 상기 송신버퍼 1(322)은 벌크 데이터에 대한 버퍼이다. 앞서 설명한 바와 같이, 도 6a를 참조하면, USB 통신을 위한 일반적이 자원 할당 방식은 전체 대역폭(520)이 제어 데이터를 위한 부분 프레임과, Isochronous 데이터 및 인터럽트 데이터를 위한 부분 프레임(525) 및, 벌크 데이터를 위한 부분 프레임(530)으로 분할된다. 이때, 상기 USB 제어부(318)는 상기 생성 요청에 따라 데이터 및 인터럽트 데이터에 대응하는 가상 트래픽을 생성할 경우, 도 6b를 참조하면, 일반적인 USB 통신을 위한 자원 할당 방식에 따라 벌크 데이터를 위한 프레임(530) 중 일부 프레임(535)를 Isochronous 데이터 및 인터럽트 데이터를 위한 자원으로 할당하게 됨으로써, 벌크 데이터를 위한 기존의 프레임(530)이 나머지 프레임(540)으로 줄어들게 된다. 그러면, 벌크 데이터를 위한 자원이 나머지 프레임(540)으로 감소하게 됨에 따라 결과적으로, 어플리케이션 1로부터 상기 송신버퍼1(312)로 유입되는 데이터의 입력 속도가 감소하게 된다.
한편, 상기 버퍼 관리부(329)는 상기 송신버퍼1(322)에서 오버 플로우의 발생 가능성이 적어짐을 확인하면, 상기 USB 제어부(318)에게 가상 트래픽의 제거를 요청할 수 있다. 이에 따라, 상기 USB 제어부(318)가 가상 트래픽을 제거하면, 상기 송신버퍼1(322)의 입력 속도는 원래의 입력 속도로 복귀하게 된다.
도 7은 본 발명의 실시 예에 따른 버퍼 관리부의 구성도의 일 예이다. 여기서, 버퍼 관리부의 구성은 설명의 편의상, 본 발명의 실시 예에 따른 동작 별로 구분되는 부분 유닛들을 포함하도록 구성하였다. 그러나, 구현 상황에 따라 부분 유닛들은 하나의 유닛으로 구성될 수도 있고, 서브 유닛들로 분할될 수도 있다. 그리고, 상기 버퍼 관리부는 앞서 설명한 바와 같이, USB 통신을 위한 송신측 디바이스의 PAL 내에 개별적으로 설치되거나 플로우 제어에 포함된 형태로 구현될 수도 있다.
도 7을 참조하면, 일 예로, 버퍼 관리부(700)는 속도 제어 결정부(702)와, PAL의 송신 버퍼 별 레벨 확인부(704)와, 속도 제어부(706) 및 데이터 베이스(DB: database, 708)를 포함한다.
먼저, 상기 DB(708)는 본 발명의 실시 예에 따른 PAL의 송신 버퍼들에 대한 오버 플로우를 관리하기 위한 정보들을 포함한다. 예를 들어, 각 송신 버퍼에서 저장된 데이터 량이 출력 시점에 도달함을 지시하는 임계 레벨과, 각 레벨에 대응하는 데이터 저장량, Wi-Fi부의 큐가 저장할 수 있는 데이터 량의 최대값 등을 저장하고 있다.
상기 속도 제어 결정부(702)는 USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한, PAL의 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인한다. 그러면, 상기 속도 제어 여부 결정부는, 상기 상기 송신 버퍼들 각각의 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하고, 그 비교 결과를 상기 속도 제어 여부 결정부(702)로 전달한다. 상기 속도 제어 결정부(702)는 상기 비교 결과를 기반으로 해당 송신 버퍼의 임계 레벨을 초과하는 송신 버퍼에 대한 출력 속도를 본 발명의 제1실시 예에 따라 제어한다. 또는, 상기 임계 레벨을 초과한 송신 버퍼에 대한 입력 속도를 본 발명의 제2실시 예에 따라 제어한다. 본 발명의 제1실시 예 내지 제2실시 예에 따른 버퍼 관리부의 동작은 도 4 내지 도 5의 설명과 중복되므로, 여기서는 그 상세한 설명을 생략하기로 한다.
도 8은 본 발명의 실시 예에 따른 버퍼 관리부의 동작 흐름도의 일 예이다. 설명의 편의상, 도 8의 버퍼 관리부는 도 7의 세부 구성을 기반으로 동작하는 경우로 설명한다.
도 8을 참조하면, 800단계에서 PAL의 송신 버퍼별 레벨 확인부는, PAL을 구성하는 송신 버퍼들 각각에 대한 현재 레벨을 확인하고, 상기 속도 제어 여부 결정부(702)에게 전달한다. 그러면, 805단계에서 상기 속도 제어 여부 결정부(702)는 상기 송신 버퍼들 각각의 현재 레벨과 대응하는 임계 레벨을 비교하여 해당 송신 버퍼의 임계 레벨을 초과하는 송신 버퍼가 존재하는 지 여부를 확인한다. 상기 확인 결과, 임계 레벨을 초과하는 송신 버퍼가 존재할 경우, 810단계에서 상기 속도 제어부(706)는 상기 송신 버퍼에 대해 상기 비교 결과를 기반으로 해당 송신 버퍼의 임계 레벨을 초과하는 송신 버퍼에 대한 출력 속도를 본 발명의 제1실시 예에 따라 제어한다. 또는, 상기 임계 레벨을 초과한 송신 버퍼에 대한 입력 속도를 본 발명의 제2실시 예에 따라 제어한다. 본 발명의 제1실시 예 내지 제2실시 예에 따른 버퍼 관리부의 동작은 도 4 내지 도 5의 설명과 중복되므로, 여기서는 그 상세한 설명을 생략하기로 한다.
상기한 바와 같은 본 발명의 실시 예에 따라 무선 환경에서 USB 통신을 수행하는 디바이스에 USB 어플리케이션단으로부터 Wi-Fi 단으로 출력되기 위한 데이터들을 저장하는 PAL의 송신 버퍼에 대한 오버 플로우를 감소시킴에 따라 PDR을 향상시키고, 상대적으로 데이터 안정성이 중요한 벌크 데이터의 속도 조절을 통한 상기 벌크 데이터뿐만 아니라 나머지 데이터들의 전송률도 증가시킬 수 있게 된다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구의 범위뿐만 아니라 이 특허 청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (14)
- 무선 환경에서 USB(Universal Serial Bus) 통신을 수행하는 디바이스의 버퍼를 관리하는 방법에 있어서,
USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인하는 과정과,
상기 송신 버퍼들 각각의 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하는 과정과,
상기 비교 결과 상기 송신 버퍼들 중 해당 송신 버퍼의 현재 레벨이 상기 송신 버퍼의 임계 레벨을 초과하는 제1송신 버퍼가 존재할 경우, 상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 과정을 포함하는 디바이스의 버퍼 관리 방법.
- 제1항에 있어서,
상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 과정은,
USB 어플리케이션 단으로부터 상기 제1송신 버퍼로 유입되는 데이터의 입력 속도와, 무선 통신을 위한 프로토콜 단의 큐로 출력되는 데이터의 출력 속도 중 하나를 제어하는 과정을 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 제2항에 있어서,
상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 과정은,
상기 제1송신 버퍼의 현재 레벨이 상기 제1송신 버퍼의 임계 레벨을 초과함을 인지하면, 상기 큐가 포함된 와이 파이(Wi-Fi) 단으로 상기 큐의 상태 문의를 전송하는 과정과,
상기 상태 문의에 대한 응답으로 수신한, 상기 큐의 상태에 따라 상기 제1 송신 버퍼의 출력 속도의 제어를 수행하는 과정을 포함하며;
상기 임계 레벨은 상기 제1송신 버퍼의 데이터 저장량이 상기 제1송신 버퍼의 출력량에 도달함을 나타냄을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 제3항에 있어서,
상기 제1 송신 버퍼의 출력 속도의 제어를 수행하는 과정은,
상기 큐의 상태를 기반으로, 상기 큐가 추가로 저장할 수 있는 데이터량을 확인한 후, 확인된 데이터 량에 상응하게 상기 제1송신 버퍼의 출력 속도를 제어하는 과정을 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 제2항에 있어서,
상기 제1 송신 버퍼의 출력 속도의 제어를 수행하는 과정은,
상기 제1송신 버퍼가 저장할 수 있는 데이터 량을 확인하는 과정과,
상기 확인된 데이터 량에 비해 상기 제1송신 버퍼의 입력 속도가 빠를 경우, 상기 USB 어플리케이션 단으로 가상 트래픽의 발생 요청을 전달하는 과정과,
상기 제1송신 버퍼에게 할당된 USB 통신을 위한 자원량 중 상기 가상 트래픽의 량에 상응하는 자원량만큼을 감소시켜 상기 제1 송신 버퍼의 입력 속도를 감소시키는 과정을 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 제5항에 있어서,
상기 가상 트래픽은 Isochronous 데이터와 인터럽트(interrupt) 데이터 타입에 대응하는 데이터임을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 제5항에 있어서,
상기 USB 어플리케이션 단으로 가상 트래픽의 발생 요청을 전달하는 과정은,
해당 주기에서 상기 제1송신 버퍼가 채워지는 속도가 상기 제1송신 버퍼의 데이터 저장량의 최대값을 초과하는 경우에도 수행되는 과정을 더 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 방법.
- 무선 환경에서 USB(Universal Serial Bus) 통신을 수행하는 디바이스의 버퍼를 관리하는 장치에 있어서,
USB 통신을 위한 데이터 타입 별로 대응하는 데이터들을 저장한 송신 버퍼들 각각에 대해, 해당 송신 버퍼가 현재 저장하고 있는 데이터 량의 현재 레벨을 확인하는 확인부와,
상기 송신 버퍼들 각각의 현재 레벨이 미리 결정되어 있는 해당 송신 버퍼의 임계 레벨을 초과하는 지 비교하고, 상기 비교 결과 상기 송신 버퍼들 중 해당 송신 버퍼의 현재 레벨이 상기 송신 버퍼의 임계 레벨을 초과하는 제1송신 버퍼가 존재할 경우, 상기 제1송신 버퍼에 대한 입출력 속도를 제어하는 결정부를 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
- 제8항에 있어서,
USB 어플리케이션 단으로부터 상기 제1송신 버퍼로 유입되는 데이터의 입력 속도와, 무선 통신을 위한 프로토콜 단의 큐로 출력되는 데이터의 출력 속도 중 하나를 제어하는 속도 제어부를 더 포함하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치. - 제9항에 있어서,
상기 속도 제어부는,
상기 결정부가 상기 제1송신 버퍼의 현재 레벨이 상기 제1송신 버퍼의 임계 레벨을 초과함을 인지하면, 상기 큐가 포함된 와이 파이(Wi--) 단으로 상기 큐의 상태 문의를 전송하고, 상기 상태 문의에 대한 응답으로 수신한, 상기 큐의 상태에 따라 상기 제1 송신 버퍼의 출력 속도의 제어를 수행하며;
상기 임계 레벨은 상기 제1송신 버퍼의 데이터 저장량이 상기 제1송신 버퍼의 출력량에 도달함을 나타냄을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
- 제10항에 있어서,
상기 속도 제어부는,
상기 큐의 상태를 기반으로, 상기 큐가 추가로 저장할 수 있는 데이터량을 확인한 후, 확인된 데이터 량에 상응하게 상기 제1송신 버퍼의 출력 속도를 제어함을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
- 제9항에 있어서,
상기 속도 제어부는,
상기 확인부를 통해서 제1송신 버퍼가 저장할 수 있는 데이터 량을 확인하고, 상기 확인된 데이터 량에 비해 상기 제1송신 버퍼의 입력 속도가 빠를 경우, 상기 USB 어플리케이션 단으로 가상 트래픽의 발생 요청을 전달하고, 상기 제1송신 버퍼에게 할당된 USB 통신을 위한 자원량 중 상기 가상 트래픽의 량에 상응하는 자원량만큼을 감소시켜 상기 제1 송신 버퍼의 입력 속도를 감소시킴을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
- 제12항에 있어서,
상기 가상 트래픽은 Isochronous 데이터와 인터럽트(interrupt) 데이터 타입에 대응하는 데이터임을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
- 제12항에 있어서,
상기 속도 제어부는,
해당 주기에서 상기 제1송신 버퍼가 채워지는 속도가 상기 제1송신 버퍼의 데이터 저장량의 최대값을 초과하는 경우에도, 상기 USB 어플리케이션 단으로 가상 트래픽의 발생 요청을 전달함을 특징으로 하는 USB 통신을 수행하는 디바이스의 버퍼 관리 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130131486A KR102153543B1 (ko) | 2013-10-31 | 2013-10-31 | 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 |
US15/033,841 US10078607B2 (en) | 2013-10-31 | 2014-02-13 | Buffer management method and apparatus for universal serial bus communication in wireless environment |
PCT/KR2014/001174 WO2015064850A1 (en) | 2013-10-31 | 2014-02-13 | Buffer management method and apparatus for universal serial bus communication in wireless environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130131486A KR102153543B1 (ko) | 2013-10-31 | 2013-10-31 | 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150050085A true KR20150050085A (ko) | 2015-05-08 |
KR102153543B1 KR102153543B1 (ko) | 2020-09-08 |
Family
ID=53004423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130131486A KR102153543B1 (ko) | 2013-10-31 | 2013-10-31 | 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10078607B2 (ko) |
KR (1) | KR102153543B1 (ko) |
WO (1) | WO2015064850A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588925B2 (en) * | 2014-09-17 | 2017-03-07 | Valens Semiconductor Ltd. | USB extension for lossy channel |
US10290303B2 (en) * | 2016-08-25 | 2019-05-14 | Google Llc | Audio compensation techniques for network outages |
TWI712894B (zh) * | 2019-09-09 | 2020-12-11 | 瑞昱半導體股份有限公司 | 訊息請求方法及其裝置 |
US11750706B1 (en) * | 2020-03-26 | 2023-09-05 | Amazon Technologies, Inc. | Data transmission time management |
US12058196B1 (en) | 2020-03-26 | 2024-08-06 | Amazon Technologies, Inc. | Data transfer timeout management |
US20240054971A1 (en) * | 2022-08-09 | 2024-02-15 | Micron Technology, Inc. | Configurable types of write operations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020034273A1 (en) * | 2000-07-24 | 2002-03-21 | Spence Steven Donald | System and method for clock synchronization for USB sink device |
US20090245446A1 (en) * | 2008-03-27 | 2009-10-01 | Fortemedia, Inc. | Method and apparatus for data rate control |
WO2013147789A1 (en) * | 2012-03-29 | 2013-10-03 | Intel Corporation | Buffer-related usb communication |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912651B1 (en) * | 1998-03-31 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Wireless universal serial bus link for a computer system |
US20030120367A1 (en) * | 2001-12-21 | 2003-06-26 | Chang Matthew C.T. | System and method of monitoring audio signals |
US20060277330A1 (en) * | 2005-06-01 | 2006-12-07 | Wilhelmus Diepstraten | Techniques for managing priority queues and escalation considerations in USB wireless communication systems |
US7702825B2 (en) | 2005-06-29 | 2010-04-20 | Intel Corporation | Enhancements to universal serial bus (USB) suspend and resume operations |
KR100703787B1 (ko) | 2005-08-09 | 2007-04-06 | 삼성전자주식회사 | 무선 유에스비 통신에서의 흐름 제어 방법 및 이를사용하는 무선 유에스비 디바이스 및 무선 유에스비 호스트 |
US8200856B2 (en) | 2006-05-25 | 2012-06-12 | Qualcomm Incorporated | Flow control for universal serial bus (USB) |
CN101237445B (zh) * | 2007-01-30 | 2013-01-02 | 世意法(北京)半导体研发有限责任公司 | 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备 |
US7930446B2 (en) * | 2007-12-28 | 2011-04-19 | Intel Corporation | Methods and apparatuses for wireless network communication wherein a universal serial bus request block (URB) is generated that will vary parameters that controls wireless transmission commands between devices |
US8200858B1 (en) * | 2009-06-08 | 2012-06-12 | Wisair Ltd. | System and a method for quality of service in USB and WUSB endpoints |
US8335875B1 (en) * | 2011-06-24 | 2012-12-18 | Intel Corporation | System and method for performing isochronous data buffering |
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 |
-
2013
- 2013-10-31 KR KR1020130131486A patent/KR102153543B1/ko active IP Right Grant
-
2014
- 2014-02-13 WO PCT/KR2014/001174 patent/WO2015064850A1/en active Application Filing
- 2014-02-13 US US15/033,841 patent/US10078607B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020034273A1 (en) * | 2000-07-24 | 2002-03-21 | Spence Steven Donald | System and method for clock synchronization for USB sink device |
US20090245446A1 (en) * | 2008-03-27 | 2009-10-01 | Fortemedia, Inc. | Method and apparatus for data rate control |
WO2013147789A1 (en) * | 2012-03-29 | 2013-10-03 | Intel Corporation | Buffer-related usb communication |
Also Published As
Publication number | Publication date |
---|---|
WO2015064850A1 (en) | 2015-05-07 |
KR102153543B1 (ko) | 2020-09-08 |
US20160267037A1 (en) | 2016-09-15 |
US10078607B2 (en) | 2018-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102153543B1 (ko) | 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 | |
US9699095B2 (en) | Adaptive allocation of headroom in network devices | |
US9419907B2 (en) | I/O driven rate adaptation | |
US8842536B2 (en) | Ingress rate limiting | |
KR101608612B1 (ko) | 네트워크 트래픽에서의 도착간 지연의 감소 | |
JP5402484B2 (ja) | 通信装置および通信制御方法 | |
US11616723B2 (en) | Techniques to reduce network congestion | |
US20170295112A1 (en) | Apparatus and method for buffering data in a switch | |
KR102133526B1 (ko) | USB 어플리케이션 데이터의 QoS를 고려한 무선 전송 지원 기법 | |
CN113141321B (zh) | 一种基于边缘计算的数据传输方法及电子设备 | |
WO2015149460A1 (zh) | 以太网光纤通道的流量控制方法、装置及系统 | |
JP6432976B2 (ja) | データ伝送装置、データ伝送方法およびプログラム | |
US11621918B2 (en) | Techniques to manage data transmissions | |
US9363199B1 (en) | Bandwidth management for data services operating on a local network | |
US9413672B2 (en) | Flow control for network packets from applications in electronic devices | |
US11552905B2 (en) | Managing virtual output queues | |
JP2010154420A (ja) | 無線通信装置 | |
US20180102977A1 (en) | Communication device, communication method, and storage medium | |
JP2009278532A (ja) | 送信装置及び輻輳制御方法 | |
KR101260561B1 (ko) | 다중 레인 기반의 고속 이더넷에서 동적 레인 운영 방법 및 그 장치 | |
KR101017352B1 (ko) | 무선 인터넷 환경에서의 스트리밍 콘텐츠 전송 방법 | |
JP2009188655A (ja) | 通信制御方法、情報処理システム、情報処理装置及びプログラム | |
US8004991B1 (en) | Method and system for processing network information | |
CN106330834B (zh) | 一种虚拟通道连接建立方法及装置 | |
JP2014170379A (ja) | 情報機器、印刷システム、コンピュータープログラムおよびデータ転送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |