WO2012177877A2 - System and method for performing isochronous data buffering - Google Patents

System and method for performing isochronous data buffering Download PDF

Info

Publication number
WO2012177877A2
WO2012177877A2 PCT/US2012/043549 US2012043549W WO2012177877A2 WO 2012177877 A2 WO2012177877 A2 WO 2012177877A2 US 2012043549 W US2012043549 W US 2012043549W WO 2012177877 A2 WO2012177877 A2 WO 2012177877A2
Authority
WO
WIPO (PCT)
Prior art keywords
data
size
buffer
usb
received
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/US2012/043549
Other languages
French (fr)
Other versions
WO2012177877A3 (en
Inventor
Anshuman Thakur
Abdul R. Ismail
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to CN201280031044.XA priority Critical patent/CN103842979B/en
Publication of WO2012177877A2 publication Critical patent/WO2012177877A2/en
Publication of WO2012177877A3 publication Critical patent/WO2012177877A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. Transmission Power Control [TPC] or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Definitions

  • One or more embodiments described herein relate to data flow control.
  • Power management continues to be a goal of system designers.
  • One principle source of power consumption involves processing the transfer of data from a connected device based on the l o transfer rate of the device. This causes the system processor and/or memory receiving the data to operate on a frequent (or near-constant) basis. As a result, excessive power is consumed which reduces efficiency and depletes battery power.
  • FIG. 1 shows one embodiment of a data buffering system.
  • Fig. 2 shows an example of a host system for isochronous USB data buffering.
  • Fig. 3 shows an embodiment of a method for isochronous USB data buffering.
  • Fig. 4 shows another example of a host system for isochronous USB data buffering.
  • Fig. 1 shows one embodiment of a data buffering system which includes a device 1 connected to a host system 3 through an interface 2.
  • the connected device may be any one of a variety of peripheral or data-transfer devices.
  • the connected device is an isochronous device, which, for example, may be one which transfers data at regular
  • Isochronous devices include but are not limited to music and audio devices, media players, digital cameras, and web cams.
  • the connected device may be one that is not isochronous. Examples include a compact disk- recordable (CD-R) or other forms of data and external disk drives, mice and other types of input devices, printers, keyboards and flash memory devices as well as others.
  • CD-R compact disk- recordable
  • the interface 2 may be a wired or wireless link. If wireless, the interface may be a
  • Bluetooth or wireless fidelity (WiFi) links may be one compatible with a version of the Universal Serial Bus (USB) standard (e.g., USB 2.0 or 3.0), the Firewire standard, or a Wide or other Local Area Network or wired Ethernet.
  • USB Universal Serial Bus
  • Firewire e.g., USB 2.0 or 3.0
  • WiFi wireless fidelity
  • the host system 3 may be a notebook or desktop computer, a handheld computing device such as a personal digital assistant or iPod/iPhone, a smart phone, or any other device that has, 5 for example, a Firewire or USB connection for receiving data.
  • the host system includes a processor 5 and a buffer 6.
  • the buffer has a capacity sufficient to store a predetermined amount of data received from the connected device.
  • the predetermined amount of data may correspond, for example, to an amount of data the device can transfer over a predetermined period of time, which is to exceed the flow rate of the o device.
  • the data stored in the buffer is transferred to the processor and/or an associated memory upon the occurrence of one or more conditions.
  • the buffer may be flushed isochronously based on, for example, an isochronous flush threshold that is much higher than die threshold in die device. Doing so exploits a disconnect between 5 the isochronous expectation from system SW (mostly with higher threshold due to software evolving faster) versus input/ output (1/ O) devices, which may provide isochronous transfers at lower granularity to bring power savings in the platform.
  • the buffer may therefore be labeled an ISO buffer to indicate a particular application for buffering data transferred on an isochronous (ISO) basis.
  • the buffer 5 o may be a different type of buffer in other embodiments.
  • the buffer may serve to create a time delay between when d e data is received from the connected device and when the data is received by the system processor and/ or associated memory. This may happen because of system software that requires die handling of data at bigger time chunks.
  • the system5 software is paired (or more compatible) with devices based on standards such as USB 2.0 (where data gets transferred more frequendy)
  • one embodiment of the invention may bridge diis gap in time to prevent a delay from occurring.
  • the buffer serves to control the amount of data transferred to the processor and/or memory, e.g., because of the buffer, greater amounts of data are transferred at a0 time to the processor and memory than would be transferred in a flow-through application in which data is transferred to the processor and memory at the flow rate of the device.
  • the buffer may not cause any decrease in overall data transfer time because of the larger-sized data transfers taking place. In fact, the transfer of larger amounts of data may actually result in improved efficiency and speed of the transfer process.
  • power is only selectively used and on a less frequent basis to control the data transfer to the processor and memory, and at a rate much less than would be required if power were used to control the processor and memory at a data transfer rate which corresponds to the connected device and/or interface.
  • power is applied to the processor and/or memory independently from a data rate of the connected device and/or the interface used to transfer the data to the host system.
  • FIG. 2 shows an example of a host system 3 for receiving data from a connected device over a USB or USB-compatible interface.
  • This system includes a USB connector 30, a platform controller hub (PCH) 40, a central processing unit (CPU) 50, and a random access memory (RAM) or other type of memory 60.
  • the connector 30 may be, for example, one adapted to receive data according to a USB 2.0 or USB 3.0 standard.
  • the data flow from the connected device is shown as discrete packets 20, each packet including a predetermined amount of data.
  • the platform controller hub 40 includes a USB host controller (xHC) 45 that includes a device interface (IFC) 41, a buffer 42, and a host controller interface (xHCI) 43.
  • the device interface receives data transmitted over a USB cable at the data rate of this device. This rate may be, for example, one data or control packet every 128 microseconds ( ⁇ ) or 1 millisecond (ms). The packets may hold the same amount of data and/or may have the same maximum data holding capacity.
  • the USB cable may have connectors at both ends that conform to a USB standard, or just one of the connectors may conform to a USB standard and the other connector being different for coupling to a corresponding one of the device or host system.
  • the device interface 41 transfers the data isochronously received through the USB connector to the ISO buffer 42.
  • the buffer has a storage capacity that exceeds the maximum data capacity of each packet.
  • the buffer may have a storage capacity sufficient to store 16 ms of data.
  • the buffer may have a smaller or larger capacity and/or the data transfer rate of the connected device may have a smaller or larger data rate.
  • the data through the interface may be received in data packets or data units, each having a data payload portion of a predetermined size.
  • the payload data may be stored in the buffer.
  • the stored data may be reformatted into a frame or otherwise formatted into a single group to be transmitted as a unit to other parts of the host system.
  • the buffer will be controlled, by the host controller interface 43, to output its data to the 5 CPU 50 based on the occurrence of one or more predetermined conditions.
  • a first condition is the buffer storing a predetermined amount of data from the packets transferred through the interface 41.
  • the predetermined amount of data may be less than the data storage capacity of the buffer.
  • a second condition is the host controller interface receiving an interrupt or request signal l o from the CPU, indicating that the data should be transferred.
  • the amount of data in the buffer may transferred even through the buffer is not filled to capacity.
  • a combination of these or other conditions may be used as the basis for initiating data transfers from the buffer.
  • Fig. 2 the host controller interface 43 is shown transferring multiple blocks 100 of data
  • One of the blocks 100 t of data may be output when the first condition occurs, e.g., when the buffer reaches a maximum or predetermined capacity as determined, for example, by a capacity detector.
  • data block 100i may transfer an amount of packet data that the USB cable carried during 16 ms of time.
  • the data blocks may be transferred as one group of data or one data unit.
  • the data may be transferred serially as one
  • the stored data payload portion of the packets are stored in the buffer and may then be reformatted as a frame or other type of single data group for processing.
  • Another one of the blocks 100 2 of data may be output when an interrupt or request signal is received from the CPU. This may occur, for example, an application run by the CPU requests
  • data block 100 2 may have the same capacity as block 1 OOi or less.
  • the interrupt or request signal may be received by the host controller interface, which then will initiate the data transfer of block 100 2 in response.
  • the data blocks output from the buffer may be sent directly to the RAM 60, directly to the CPU for processing, or to the RAM through the CPU.
  • the size of the data blocks maybe different from a payload size of data packets that correspond to a USB standard.
  • the size of the data block may be greater than any USB or other interface standard that corresponds to the connected device.
  • This transfer of large-sized buffered blocks may improve device and/or host system efficiency because it may reduce the use of the processor and/or frees the processor to perform other functions within the system.
  • Fig. 3 shows one embodiment of a method for controlling transfer of data from a connected device to a processor and/or memory of a host system. This method may be performed by the systems of Figs. 1 or 2 and therefore the connected device is not necessarily a USB device.
  • data is received by a host system at a first rate from a connected device.
  • the data may be received in packets having a predetermined data-carrying (payload) capacity, and the packets may be received by the host system over a wired or wireless link.
  • the first rate may be one data packet every 1 ms or every 128 ⁇ , depending on, for example, the USB standard used.
  • the data in the received packets are stored in a buffer having a size greater than the payload size of each data packet transferred from the connected device. (Block 220).
  • the data may continue to be stored in the buffer until one or more predetermined conditions occur.
  • a check is performed to determine whether a condition has occurred for transferring data from the buffer. (Block 230). The check may be performed, for example, by the host controller interface or another circuit element. If the check indicates that no condition has occurred, data packets may continue to be stored in the buffer until a condition occurs.
  • a first condition may correspond to the buffer storing a predetermined amount of data from the packets transferred through the interface 41.
  • the predetermined amount of data may be less than the data storage capacity of the buffer or less than this capacity.
  • a second condition is the host controller interface receiving an interrupt or request signal from the CPU, indicating that the data should be transferred.
  • the amount of data in the buffer may transferred even through the buffer is not filled to capacity.
  • a combination of these or other conditions may be used as the basis for initiating data transfers from the buffer.
  • the host controller interface may control the buffer to output a data block of a predetermined size larger than the payload capacity of each received data packet.
  • the data from the buffer may be output at a burst transmission different from a burst transmission from the connected device.
  • the burst transmission from the buffer may be faster than the burst transmission from the connected device.
  • the output data may be transferred to a host system CPU, memory, or both, or to even another circuit in the host system. (Block 250).
  • Fig. 4 shows another embodiment of a host system equipped with multiple ISO buffers 420.
  • the payload portion of received data packets may be stored in the buffers until o one of the aforementioned conditions occur.
  • data blocks 400 may be output from the buffers for processing by the CPU 50 and/or storage in memory 60.
  • the data block transfer operations may be managed by the host controller interface or another circuit and/or software program.
  • the ISO buffers may all have a same storage capacity (e.g., each buffer may store 5 received data over a 10 ms period) or their capacities may be different. When one buffer is filled, another or succeeding buffer may be filled with received data until a data block transfer condition occurs. Additionally, or alternatively, each data buffer may be used to store a different kind of data. In this case, data from the blocks may be selectively output based on the occurrence of different conditions. Even in the case where all of the buffers store data irrespective of datatype, o the data in the blocks may be selectively output based on the occurrence of different conditions, as managed by the host controller interface.
  • the host system includes multiple data (e.g., USB) connectors
  • different one or an array of ISO data buffers may be assigned to store the data transferred through each connector.
  • the buffers according to any of the embodiments described herein may instead store the data in a predetermined number of packets.
  • the host controller or device driver circuits may include multiple ISO buffers to store the audio data packets. For example, such a situation may occur for different endpoints that each bring or0 otherwise provide data.
  • each buffer may store data received over 10 ms time periods or may store the data in 10 received data packets.
  • the buffer may output this data (upon the occurrence of a condition, for example, as indicated above) to the host memory.
  • the use of these buffers may reduce the number of wakes from a CPU low-power state by as much as 90% in some applications.
  • an ISO buffer may be used to store data in a reverse data path.
  • data output from 5 CPU 50 and/or memory 60 may be stored in ISO buffer 42 over a predetermined period of time, or from a predetermined number of packets.
  • the data may be divided into discrete blocks or segments prior to buffering.
  • a condition e.g., buffer full status or interrupt or request signal
  • the data may be transferred out of the buffer and sent to the connected device.
  • the buffered data may be output to the connected device in a data frame of a predetermined size. For example, where each block stores5 10 ms of data, the data output from the buffer may be divided into 10 one millisecond blocks, incorporated into respective data packets, and then sent to the device over the USB interface. Transfer of data to the connected device may take place every 1 ms, every 128 ⁇ , or according to another type of USB or other interface standard.
  • a computer-readable medium stores a program o for controlling transfer of data from a connected device to a host system.
  • the connected device and host system may be any of the devices or systems previously mentioned.
  • the program may be stored in a system memory which, for example, may be internal or external to the CPU or host controller interface.
  • the program may be part of a control algorithm for controlling the operation of the host controller interface.
  • the program may include code to perform any of the operations or functions performed in the embodiments previously discussed herein.
  • the program may include first code to control storing a plurality of data units in a buffer and second code to transfer a block of data from the buffer upon the occurrence of at least one condition.
  • the data units may be isochronously received through a Universal Serial Bus (USB) or other type of0 interface, and each data unit may include data of a first size and the data block may include data of a second size greater than the first size.
  • the second size of the data block corresponds to data stored in a predetermined number of data units received through the USB interface or to an amount of data received through the USB interface over a predetermined period of time.
  • a data unit may correspond to all or a portion of a data packet and the data carried by that unit may correspond to the payload portion of that packet.
  • a data unit may correspond to a predetermined amount of data that may be carried or processes in non-packet form.
  • any reference in this specification to an "embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention.
  • the appearances of such phrases in various places in the specification are not necessarily all referring to the same embodiment.
  • the features of any one embodiment may be combined with the features of one or more other embodiments to form new embodiments.

Landscapes

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

Abstract

A controller for a host system includes an interface and a buffer. The interface receives a plurality of data units isochronously received from a connected device, and the buffer stores the data units and then output a data block upon the occurrence of at least one condition. Each data unit stores data of a first size and the data block includes data of a second size greater than the first size. The connected device may be a Universal Serial Bus (USB) device or another type of device.

Description

SYSTEM AND METHOD FOR PERFORMUNG ISOCHRONOUS
DATA BUFFERING
FIELD
5 One or more embodiments described herein relate to data flow control.
BACKGROUND
Power management continues to be a goal of system designers. One principle source of power consumption involves processing the transfer of data from a connected device based on the l o transfer rate of the device. This causes the system processor and/or memory receiving the data to operate on a frequent (or near-constant) basis. As a result, excessive power is consumed which reduces efficiency and depletes battery power.
BRIEF DESCRIPTION OF THE DRAWINGS
15 Fig. 1 shows one embodiment of a data buffering system.
Fig. 2 shows an example of a host system for isochronous USB data buffering.
Fig. 3 shows an embodiment of a method for isochronous USB data buffering.
Fig. 4 shows another example of a host system for isochronous USB data buffering.
20 DETABLED DESCRIPTION
Fig. 1 shows one embodiment of a data buffering system which includes a device 1 connected to a host system 3 through an interface 2. The connected device may be any one of a variety of peripheral or data-transfer devices. According to one embodiment, the connected device is an isochronous device, which, for example, may be one which transfers data at regular
25 intervals or specific/discrete periods of time. Isochronous devices include but are not limited to music and audio devices, media players, digital cameras, and web cams. In other embodiments, the connected device may be one that is not isochronous. Examples include a compact disk- recordable (CD-R) or other forms of data and external disk drives, mice and other types of input devices, printers, keyboards and flash memory devices as well as others.
30 The interface 2 may be a wired or wireless link. If wireless, the interface may be a
Bluetooth or wireless fidelity (WiFi) links. If wired, the interface may be one compatible with a version of the Universal Serial Bus (USB) standard (e.g., USB 2.0 or 3.0), the Firewire standard, or a Wide or other Local Area Network or wired Ethernet. Of course, different wired or wireless links may be used in other embodiments.
The host system 3 may be a notebook or desktop computer, a handheld computing device such as a personal digital assistant or iPod/iPhone, a smart phone, or any other device that has, 5 for example, a Firewire or USB connection for receiving data.
As shown in Figure 1, the host system includes a processor 5 and a buffer 6. The buffer has a capacity sufficient to store a predetermined amount of data received from the connected device. The predetermined amount of data may correspond, for example, to an amount of data the device can transfer over a predetermined period of time, which is to exceed the flow rate of the o device. The data stored in the buffer is transferred to the processor and/or an associated memory upon the occurrence of one or more conditions.
In terms of data transfer from the buffer, in accordance with one embodiment the buffer may be flushed isochronously based on, for example, an isochronous flush threshold that is much higher than die threshold in die device. Doing so exploits a disconnect between 5 the isochronous expectation from system SW (mostly with higher threshold due to software evolving faster) versus input/ output (1/ O) devices, which may provide isochronous transfers at lower granularity to bring power savings in the platform.
In view of the foregoing, the buffer may therefore be labeled an ISO buffer to indicate a particular application for buffering data transferred on an isochronous (ISO) basis. The buffer 5 o may be a different type of buffer in other embodiments.
In some instances, because of its capacity, the buffer may serve to create a time delay between when d e data is received from the connected device and when the data is received by the system processor and/ or associated memory. This may happen because of system software that requires die handling of data at bigger time chunks. However, when the system5 software is paired (or more compatible) with devices based on standards such as USB 2.0 (where data gets transferred more frequendy), one embodiment of the invention may bridge diis gap in time to prevent a delay from occurring.
During this time delay, the buffer serves to control the amount of data transferred to the processor and/or memory, e.g., because of the buffer, greater amounts of data are transferred at a0 time to the processor and memory than would be transferred in a flow-through application in which data is transferred to the processor and memory at the flow rate of the device. Although the time the data reaches the CPU is delayed by the buffering operation, the buffer may not cause any decrease in overall data transfer time because of the larger-sized data transfers taking place. In fact, the transfer of larger amounts of data may actually result in improved efficiency and speed of the transfer process.
As a result, power is only selectively used and on a less frequent basis to control the data transfer to the processor and memory, and at a rate much less than would be required if power were used to control the processor and memory at a data transfer rate which corresponds to the connected device and/or interface. Put differently, as a result of the buffer, power is applied to the processor and/or memory independently from a data rate of the connected device and/or the interface used to transfer the data to the host system.
Figure 2 shows an example of a host system 3 for receiving data from a connected device over a USB or USB-compatible interface. This system includes a USB connector 30, a platform controller hub (PCH) 40, a central processing unit (CPU) 50, and a random access memory (RAM) or other type of memory 60. The connector 30 may be, for example, one adapted to receive data according to a USB 2.0 or USB 3.0 standard. The data flow from the connected device is shown as discrete packets 20, each packet including a predetermined amount of data.
The platform controller hub 40 includes a USB host controller (xHC) 45 that includes a device interface (IFC) 41, a buffer 42, and a host controller interface (xHCI) 43. The device interface receives data transmitted over a USB cable at the data rate of this device. This rate may be, for example, one data or control packet every 128 microseconds (μβεο) or 1 millisecond (ms). The packets may hold the same amount of data and/or may have the same maximum data holding capacity. The USB cable may have connectors at both ends that conform to a USB standard, or just one of the connectors may conform to a USB standard and the other connector being different for coupling to a corresponding one of the device or host system.
The device interface 41 transfers the data isochronously received through the USB connector to the ISO buffer 42. As indicated, the buffer has a storage capacity that exceeds the maximum data capacity of each packet. According to one example, if the data transfer rate of each packet is 1 ms, the buffer may have a storage capacity sufficient to store 16 ms of data. In other embodiments, the buffer may have a smaller or larger capacity and/or the data transfer rate of the connected device may have a smaller or larger data rate.
Also, in accordance with one embodiment, the data through the interface may be received in data packets or data units, each having a data payload portion of a predetermined size. The payload data may be stored in the buffer. At the time of output, the stored data may be reformatted into a frame or otherwise formatted into a single group to be transmitted as a unit to other parts of the host system.
The buffer will be controlled, by the host controller interface 43, to output its data to the 5 CPU 50 based on the occurrence of one or more predetermined conditions. According to one embodiment, a first condition is the buffer storing a predetermined amount of data from the packets transferred through the interface 41. The predetermined amount of data may be less than the data storage capacity of the buffer.
A second condition is the host controller interface receiving an interrupt or request signal l o from the CPU, indicating that the data should be transferred. In this latter condition, the amount of data in the buffer may transferred even through the buffer is not filled to capacity. In another embodiment, a combination of these or other conditions may be used as the basis for initiating data transfers from the buffer.
In Fig. 2, the host controller interface 43 is shown transferring multiple blocks 100 of data
15 from the buffer. One of the blocks 100t of data may be output when the first condition occurs, e.g., when the buffer reaches a maximum or predetermined capacity as determined, for example, by a capacity detector. In the example previously discussed, data block 100i may transfer an amount of packet data that the USB cable carried during 16 ms of time. The data blocks may be transferred as one group of data or one data unit. The data may be transferred serially as one
20 group or in parallel. When the data received from the connected device is in packets, the stored data payload portion of the packets are stored in the buffer and may then be reformatted as a frame or other type of single data group for processing.
Another one of the blocks 1002 of data may be output when an interrupt or request signal is received from the CPU. This may occur, for example, an application run by the CPU requests
25 data, for example, in response to a user-initiated function or request. In this case, data block 1002 may have the same capacity as block 1 OOi or less. The interrupt or request signal may be received by the host controller interface, which then will initiate the data transfer of block 1002 in response. The data blocks output from the buffer may be sent directly to the RAM 60, directly to the CPU for processing, or to the RAM through the CPU.
30 By buffering data and then transferring large sized blocks to the CPU and/or memory, data transfer operations are performed less frequently. This translates into a reduction in power consumption and potentially longer operation in battery mode. The size of the data blocks maybe different from a payload size of data packets that correspond to a USB standard. For example, the size of the data block may be greater than any USB or other interface standard that corresponds to the connected device.
This transfer of large-sized buffered blocks may improve device and/or host system efficiency because it may reduce the use of the processor and/or frees the processor to perform other functions within the system.
Fig. 3 shows one embodiment of a method for controlling transfer of data from a connected device to a processor and/or memory of a host system. This method may be performed by the systems of Figs. 1 or 2 and therefore the connected device is not necessarily a USB device.
In an initial operation, data is received by a host system at a first rate from a connected device. (Block 210). The data may be received in packets having a predetermined data-carrying (payload) capacity, and the packets may be received by the host system over a wired or wireless link. As previously indicated, in the case of a USB data transfer, the first rate may be one data packet every 1 ms or every 128 με, depending on, for example, the USB standard used.
In another operation, the data in the received packets are stored in a buffer having a size greater than the payload size of each data packet transferred from the connected device. (Block 220). The data may continue to be stored in the buffer until one or more predetermined conditions occur.
Thus, in a next operation, a check is performed to determine whether a condition has occurred for transferring data from the buffer. (Block 230). The check may be performed, for example, by the host controller interface or another circuit element. If the check indicates that no condition has occurred, data packets may continue to be stored in the buffer until a condition occurs.
As indicated, a first condition may correspond to the buffer storing a predetermined amount of data from the packets transferred through the interface 41. The predetermined amount of data may be less than the data storage capacity of the buffer or less than this capacity.
A second condition is the host controller interface receiving an interrupt or request signal from the CPU, indicating that the data should be transferred. The amount of data in the buffer may transferred even through the buffer is not filled to capacity. In another embodiment, a combination of these or other conditions may be used as the basis for initiating data transfers from the buffer. If a condition has occurred, the host controller interface may control the buffer to output a data block of a predetermined size larger than the payload capacity of each received data packet. (Block 240). Because of the larger size of the data block, the data from the buffer may be output at a burst transmission different from a burst transmission from the connected device. In 5 accordance with one embodiment, the burst transmission from the buffer may be faster than the burst transmission from the connected device. The output data may be transferred to a host system CPU, memory, or both, or to even another circuit in the host system. (Block 250).
Fig. 4 shows another embodiment of a host system equipped with multiple ISO buffers 420. In this system, the payload portion of received data packets may be stored in the buffers until o one of the aforementioned conditions occur. When such a condition occurs, data blocks 400 may be output from the buffers for processing by the CPU 50 and/or storage in memory 60. The data block transfer operations may be managed by the host controller interface or another circuit and/or software program.
The ISO buffers may all have a same storage capacity (e.g., each buffer may store 5 received data over a 10 ms period) or their capacities may be different. When one buffer is filled, another or succeeding buffer may be filled with received data until a data block transfer condition occurs. Additionally, or alternatively, each data buffer may be used to store a different kind of data. In this case, data from the blocks may be selectively output based on the occurrence of different conditions. Even in the case where all of the buffers store data irrespective of datatype, o the data in the blocks may be selectively output based on the occurrence of different conditions, as managed by the host controller interface.
In the event that the host system includes multiple data (e.g., USB) connectors, different one or an array of ISO data buffers may be assigned to store the data transferred through each connector. Also, instead of storing an amount of data over a period of time (e.g., isochronous5 flow period of time is equal to or based on amount of data), the buffers according to any of the embodiments described herein may instead store the data in a predetermined number of packets.
For example, consider the case where audio data is received by the host system. The host controller or device driver circuits may include multiple ISO buffers to store the audio data packets. For example, such a situation may occur for different endpoints that each bring or0 otherwise provide data. In this case, each buffer may store data received over 10 ms time periods or may store the data in 10 received data packets. The buffer may output this data (upon the occurrence of a condition, for example, as indicated above) to the host memory. The use of these buffers may reduce the number of wakes from a CPU low-power state by as much as 90% in some applications.
In accordance with any of the aforementioned embodiments, an ISO buffer may be used to store data in a reverse data path. For example, in the embodiment of Figure 2, data output from 5 CPU 50 and/or memory 60 may be stored in ISO buffer 42 over a predetermined period of time, or from a predetermined number of packets. According to one example, if the data from the CPU or memory are not in packet form, the data may be divided into discrete blocks or segments prior to buffering. When a condition occurs (e.g., buffer full status or interrupt or request signal), the data may be transferred out of the buffer and sent to the connected device.
o This case may apply, for example, when the buffered data are audio data packets from a host system media player or inserted disc and the connected device is a set of USB headphones or earbuds, when the buffered data are audio packets from a voice-over-Internet Protocol (V oIP) call or video chat or video conferencing application. The buffered data may be output to the connected device in a data frame of a predetermined size. For example, where each block stores5 10 ms of data, the data output from the buffer may be divided into 10 one millisecond blocks, incorporated into respective data packets, and then sent to the device over the USB interface. Transfer of data to the connected device may take place every 1 ms, every 128 μβ, or according to another type of USB or other interface standard.
In accordance with another embodiment, a computer-readable medium stores a program o for controlling transfer of data from a connected device to a host system. The connected device and host system may be any of the devices or systems previously mentioned. The program may be stored in a system memory which, for example, may be internal or external to the CPU or host controller interface. In one embodiment, the program may be part of a control algorithm for controlling the operation of the host controller interface.
5 The program may include code to perform any of the operations or functions performed in the embodiments previously discussed herein. According to one non-limiting example, the program may include first code to control storing a plurality of data units in a buffer and second code to transfer a block of data from the buffer upon the occurrence of at least one condition. The data units may be isochronously received through a Universal Serial Bus (USB) or other type of0 interface, and each data unit may include data of a first size and the data block may include data of a second size greater than the first size. The second size of the data block corresponds to data stored in a predetermined number of data units received through the USB interface or to an amount of data received through the USB interface over a predetermined period of time.
In this disclosure, a data unit may correspond to all or a portion of a data packet and the data carried by that unit may correspond to the payload portion of that packet. Alternatively, a data unit may correspond to a predetermined amount of data that may be carried or processes in non-packet form.
Any reference in this specification to an "embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of such phrases in various places in the specification are not necessarily all referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with any embodiment, it is submitted that it is within the purview of one skilled in the art to effect such feature, structure, or characteristic in connection with other ones of the embodiments. The features of any one embodiment may be combined with the features of one or more other embodiments to form new embodiments.
Furthermore, for ease of understanding, certain functional blocks may have been delineated as separate blocks; however, these separately delineated blocks should not necessarily be construed as being in the order in which they are discussed or otherwise presented herein. For example, some blocks may be able to be performed in an alternative ordering, simultaneously, etc.
Although the present invention has been described herein with reference to a number of illustrative embodiments, it should be understood that numerous other modifications and embodiments can be devised by those skilled in the art that will fall within the spirit and scope of the principles of this invention. More particularly, reasonable variations and modifications are possible in the component parts and/or arrangements of the subject combination arrangement within the scope of the foregoing disclosure, the drawings and the appended claims without departing from the spirit of the invention. In addition to variations and modifications in the component parts and/or arrangements, alternative uses will also be apparent to those skilled in the art.

Claims

We claim:
1. An apparatus comprising:
an interface; and
a buffer to store a plurality of data units isochronously received through the interface, and to output a data block upon the occurrence of at least one condition, wherein two or more data units are to include data of a first size and the data block is to include data of a second size greater than the first size and wherein the interface is a Universal Serial Bus (USB)- compatible interface.
2. The apparatus of claim 1 , wherein the first data size corresponds to a payload size of packet data corresponding to a predetermined USB standard and the second data size of the data block does not correspond to a payload size corresponding to the predetermined USB standard.
3. The apparatus of claim 1 , wherein the buffer is to output the data block when an amount of data stored in the buffer equals a predetermined amount.
4. The apparatus of claim 1 , wherein the buffer is to output the data block in response to an interrupt signal.
5. The apparatus of claim 1 , wherein the buffer is to output the data block in response to a request signal to be generated from an application running on a host system.
6. The apparatus of claim 1 , wherein the second size of the data block corresponds to data stored in a predetermined number of data units.
7. The apparatus of claim 1 , wherein the second size of the data block corresponds to an amount of data to be received through the USB-compatible interface over a predetermined period of time.
8. The apparatus of claim 1, wherein the buffer is to store additional data to be received from a processor of a host system, the additional buffered data to be output through the USB-compatible interface to a connected device.
9. The apparatus of claim 1, further comprising:
one or more additional buffers to isochronously store data received through the USB-compatible interface, and to output the stored data based on the at least one condition or another condition.
10. The apparatus of claim 9, wherein at least two of the buffers are to have a same data storage capacity.
11. The apparatus of claim 9, wherein at least two of the buffers are to output the stored data based on different conditions.
12. A method comprising:
receiving a plurality of data units isochronously through an interface;
storing the data units in a buffer; and
transferring a block of data from the buffer upon the occurrence of at least one condition, wherein two or more data unit include data of a first size and the data block includes data of a second size greater than the first size and wherein the interface is a Universal Serial Bus (USB) -compatible interface.
13. The method of claim 12, wherein the first data size corresponds to a payload size of packet data corresponding to a predetermined USB standard and the second data size of the data block does not correspond to a payload size of the predetermined USB standard.
14. The method of claim 12, wherein the at least one condition is when an amount of data stored in the buffer equals at least a predetermined amount.
15. The method of claim 12, wherein the at least one condition is when an interrupt or data request signal is received.
16. The method of claim 12, wherein the second size of the data block corresponds to data stored in a predetermined number of data units.
5 17. The method of claim 12, wherein the second size of the data block corresponds to an amount of data received through the USB-compatible interface over a predetermined period of time.
18. A computer-readable medium storing a program for controlling transfer of data, l o the program comprising:
first code to control storing a plurality of data units in a buffer; and
second code to transfer a block of data from the buffer upon the occurrence of at least one condition, wherein the data units are to be isochronously received through a Universal Serial Bus (USB)-compatible interface and wherein two or more data units include data of a first 15 size and the data block includes data of a second size greater than the first size.
19. The computer-readable medium of claim 18, wherein the second size of the data block corresponds to data stored in a predetermined number of data units received through the USB-compatible interface.
20
20. The computer-readable medium of claim 18, wherein the second size of the data block corresponds to an amount of data received through the USB-compatible interface over a predetermined period of time.
PCT/US2012/043549 2011-06-24 2012-06-21 System and method for performing isochronous data buffering Ceased WO2012177877A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201280031044.XA CN103842979B (en) 2011-06-24 2012-06-21 System and method for performing isochronous data buffering

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/168,400 2011-06-24
US13/168,400 US8335875B1 (en) 2011-06-24 2011-06-24 System and method for performing isochronous data buffering

Publications (2)

Publication Number Publication Date
WO2012177877A2 true WO2012177877A2 (en) 2012-12-27
WO2012177877A3 WO2012177877A3 (en) 2013-02-28

Family

ID=47325345

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2012/043549 Ceased WO2012177877A2 (en) 2011-06-24 2012-06-21 System and method for performing isochronous data buffering

Country Status (4)

Country Link
US (1) US8335875B1 (en)
CN (1) CN103842979B (en)
TW (1) TWI570567B (en)
WO (1) WO2012177877A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015064850A1 (en) * 2013-10-31 2015-05-07 Samsung Electronics Co., Ltd. Buffer management method and apparatus for universal serial bus communication in wireless environment

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149611A1 (en) * 2012-11-26 2014-05-29 Qualcomm Incorporated CHANNEL CONDITION AWARE USB DATA DELIVERY OVER Wi-Fi WITH DIFFERENTIAL TREATMENT ON DISTINCT USB ENDPOINTS
US9246852B2 (en) * 2013-11-05 2016-01-26 National Instruments Corporation Lossless time based data acquisition and control in a distributed system
JP6232604B2 (en) * 2014-02-10 2017-11-22 サイレックス・テクノロジー株式会社 Device server and its control method
KR102555511B1 (en) * 2018-11-01 2023-07-14 에스케이하이닉스 주식회사 Storage device and operating method thereof

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3623020A (en) * 1969-12-08 1971-11-23 Rca Corp First-in first-out buffer register
JP3926873B2 (en) * 1996-10-11 2007-06-06 株式会社東芝 Computer system
US5958027A (en) * 1997-08-05 1999-09-28 Advanced Micro Devices, Inc. Method and system for optimizing the flow of isochronous data and clock rate information
US6118344A (en) * 1997-09-30 2000-09-12 Yamaha Corporation Frequency control apparatus and method and storage medium storing a program for carrying out the method
DE10015683B4 (en) * 2000-03-29 2006-07-13 Infineon Technologies Ag Data transfer memory
JP3534243B2 (en) * 2000-05-23 2004-06-07 日本電気株式会社 Cell flow control method and method using back pressure in ATM switch with square lattice expansion
AUPQ896300A0 (en) * 2000-07-24 2000-08-17 Nec Australia Pty Ltd A clock synchronisation method for usb sink devices
JP3580242B2 (en) * 2000-10-25 2004-10-20 セイコーエプソン株式会社 Serial / parallel conversion circuit, data transfer control device, and electronic device
US20030217185A1 (en) 2002-03-29 2003-11-20 Anshuman Thakur Method and apparatus for reducing interrupts in a high-speed ethernet media access controller (MAC) by interrupt canceling
US7003597B2 (en) * 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US7213096B2 (en) 2004-03-31 2007-05-01 Intel Corporation Operating a remote USB host controller
US7701973B2 (en) 2004-06-28 2010-04-20 Intel Corporation Processing receive protocol data units
US8065441B2 (en) 2005-08-19 2011-11-22 Intel Corporation Method and apparatus for supporting universal serial bus devices in a virtualized environment
JP4143083B2 (en) * 2005-08-31 2008-09-03 株式会社東芝 Broadcast receiving apparatus and control method thereof
US7526590B2 (en) 2006-03-31 2009-04-28 Intel Corporation Systems and methods for remote pipe resource management in wireless adapters
CN101237445B (en) * 2007-01-30 2013-01-02 世意法(北京)半导体研发有限责任公司 Buffer management method and device for buffer management and encapsulation of WUSB packets
US7793015B2 (en) * 2008-03-27 2010-09-07 Fortemedia, Inc. Method and apparatus for data rate control
CN101299208B (en) * 2008-06-13 2011-04-13 威盛电子股份有限公司 Dual-mode universal serial bus device and control method thereof
KR101623730B1 (en) * 2009-11-23 2016-05-25 삼성전자주식회사 Interleaver apparatus
US8612060B2 (en) 2010-09-24 2013-12-17 Intel Corporation Power allocation controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015064850A1 (en) * 2013-10-31 2015-05-07 Samsung Electronics Co., Ltd. Buffer management method and apparatus for universal serial bus communication in wireless environment
US10078607B2 (en) 2013-10-31 2018-09-18 Sasmung Electronics Co., Ltd Buffer management method and apparatus for universal serial bus communication in wireless environment

Also Published As

Publication number Publication date
TW201301041A (en) 2013-01-01
US8335875B1 (en) 2012-12-18
US20120331189A1 (en) 2012-12-27
CN103842979B (en) 2017-02-15
CN103842979A (en) 2014-06-04
WO2012177877A3 (en) 2013-02-28
TWI570567B (en) 2017-02-11

Similar Documents

Publication Publication Date Title
US8839016B2 (en) USB self-idling techniques
US9459684B2 (en) Idle duration reporting for power management
US8595392B2 (en) USB device controller and power control method thereof
KR101162156B1 (en) Downstream device service latency reporting for power management
US9110668B2 (en) Enhanced buffer-batch management for energy efficient networking based on a power mode of a network interface
US8667311B2 (en) Method and system for optimized power management for a network device supporting PCI-E and energy efficient ethernet
US20060265611A1 (en) PCI Express system and method of transitioning link state thereof
US8335875B1 (en) System and method for performing isochronous data buffering
JP2011204254A (en) Adaptive-allocation of i/o bandwidth using configurable interconnect topology
CN101855624A (en) Method and apparatus for reducing power consumption and bus activity
US7624221B1 (en) Control device for data stream optimizations in a link interface
US8745296B2 (en) Serial storage protocol compatible frame conversion, at least in part being compatible with SATA and one packet being compatible with PCIe protocol
US9448953B2 (en) Memory subsystem and computer system
CN102662822B (en) Load monitoring device and load monitoring method
US10394309B2 (en) Power gated communication controller
US8527669B2 (en) Communication apparatus and method for communicating with an external device through USB interface using a high-speed or low-speed communication mode
US20130179612A1 (en) Controlling devices via advance notice signaling
WO2018169618A1 (en) Power reduction via memory efficiency compensation
JP2018520434A (en) Method and system for USB 2.0 bandwidth reservation
JP2017520052A (en) Universal serial bus (USB) communication system and method
US20230035142A1 (en) Input work item flow metric for computing environment telemetry
US20210152432A1 (en) Forward Progress Mechanisms for a Communications Network having Multiple Nodes
EP2406720B1 (en) Method for controlling a data transfer on a serial transmission data transfer bus
WO2019127925A1 (en) Data transmission method and calculation apparatus for neural network, electronic apparatus, computer-raedable storage medium and computer program product
CN107590049B (en) Data processing method and client based on independent operation mode

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12802225

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12802225

Country of ref document: EP

Kind code of ref document: A2