US20120005512A1 - Method, system and apparatus for dynamic buffer management for power saving - Google Patents
Method, system and apparatus for dynamic buffer management for power saving Download PDFInfo
- Publication number
- US20120005512A1 US20120005512A1 US12/910,338 US91033810A US2012005512A1 US 20120005512 A1 US20120005512 A1 US 20120005512A1 US 91033810 A US91033810 A US 91033810A US 2012005512 A1 US2012005512 A1 US 2012005512A1
- Authority
- US
- United States
- Prior art keywords
- external device
- host controller
- memory cells
- physical memory
- power
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 239000000872 buffer Substances 0.000 title claims description 46
- 230000015654 memory Effects 0.000 claims abstract description 137
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3268—Power saving in hard disk drive
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- Computing devices often contain input/out ports, such as USB ports.
- the host controller of the hosting device is used to detect the speed of that external device. By determining the speed of the external device, the host controller can arrange the hosting device to function at the speed needed by the external device.
- a host controller supports multiple external devices from input/output ports. Each external device plugged into the input/output port consumes power from the hosting device. As a result, the power consumption of a hosting device with external devices attached is not optimized as the external device requests and receives a certain amount of power.
- FIG. 1 illustrates an exemplary apparatus to reduce power consumption according to an embodiment.
- FIG. 2 illustrates an exemplary diagram of a physical memory array architecture according to an embodiment.
- FIG. 3 illustrates an exemplary diagram for a full speed external device using the buffer array according to an embodiment.
- FIG. 4 discloses an exemplary diagram for a full speed external device and a high speed external device using the buffer array according to an embodiment.
- FIG. 5 illustrates an exemplary diagram for a full speed external device and a bandwidth critical external device using the buffer array of an exemplary system according to an embodiment.
- FIG. 6 illustrates an exemplary logic flow according to an embodiment.
- the embodiments are generally directed to techniques for minimizing power consumption.
- an event may be detected related to an external device communicating with a host controller. Power to one or more physical memory cells for the host controller may be modified.
- a hosting device may include a host controller with one or more input/output ports. Through the input/output (IIO) ports, a variety of external devices may be plugged into the hosting device.
- IIO input/output
- an IIO port may detect the presence of an external device through various signaling methods and inform a host controller of the presence of an external device.
- the host controller may perform handshaking with the external device to determine the one or more external characteristics such as an operational speed and/or the number of communication lanes of the external device.
- the host controller may arrange the size of the host controller's internal buffers based on the speed and/or lane configurations of the external device. A sufficient buffer size may be determined to prevent buffer overflow.
- Additional unused buffers may be left idle and/or powered down by the host controller.
- the host controller's internal buffers may be in the form of a physical memory array. Each block of the physical memory may be power gated via power gating module. Each physical memory cell within a buffer may be dynamically turned on and/or off the by power gating module via instructions by the controller device driver. In this manner, the physical memory cells may be optimized to reduce power consumption and make the hosting device more power efficient.
- the hosting device may save overall power consumption. By reducing the power consumed in a hosting device with an external device, the battery of the hosting device may be prolonged. Other embodiments may be described and claimed.
- Various embodiments may comprise one or more elements.
- An element may comprise any structure arranged to perform certain operations.
- Each element may be implemented as hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints.
- an embodiment may be described with a limited number of elements in a certain topology by way of example, the embodiment may include more or less elements in alternate topologies as desired for a given implementation.
- any reference to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment.
- the appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- FIG. 1 illustrates an exemplary apparatus to reduce power consumption according to an embodiment.
- FIG. 1 illustrates a block diagram of an apparatus 100 .
- the apparatus 100 may include a hosting device, a processing system, a computing device, a computer, a computer system, a computer sub-system, an appliance, a network application, a workstation, a terminal, a server, a personal computer (PC), a desktop computer, a laptop computer, an ultra-laptop computer, a notebook computer, a handheld computer, a personal digital assistant (PDA), a telephone, a mobile telephone, a cellular telephone, a handset, a smart phone, a pager, a one-way pager, a two-way pager, a digital camera, a digital video recorder, a digital video player, a digital audio recorder, a digital audio player, a set top box (STB), a media server, and so forth.
- the embodiments, however, are not limited to this example.
- the apparatus 100 may include multiple elements, such as a processor 102 , one or more integrated input/output ports 104 , 114 and 124 , a host controller 106 , a power supply 103 , a power controller 111 and a memory 109 .
- the host controller may include a host controller driver 105 , an internal buffer 101 with memory cells 108 and a power gating module 110 .
- An external device 112 , 122 may be connected to the apparatus 100 .
- the embodiments, however, are not limited to the elements shown in this figure.
- FIG. 1 is shown with a limited number of elements, it may be appreciated that the apparatus 100 may include more elements as desired for a given implementation.
- the apparatus 100 may include a processor 102 .
- the processor 102 may comprise a general purpose processor or an application specific processor arranged to provide general or specific computing capabilities for the apparatus 100 . While this embodiment is a single processor system, an alternate embodiment may include a dual or multiprocessor system. The embodiments, however, are not limited to this example.
- a processor 102 may be implemented using any processor or logic device, such as a central processing unit (CPU), a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or other processor device.
- CPU central processing unit
- CISC complex instruction set computer
- RISC reduced instruction set computing
- VLIW very long instruction word
- processor 102 may be implemented as a general purpose processor, such as a processor made by Intel® Corporation, Santa Clara, Calif.
- Processor 102 may also be implemented as a dedicated processor, such as a controller, microcontroller, embedded processor, a digital signal processor (DSP), a network processor, a media processor, an input/output ( 110 ) processor, a media access control (MAC) processor, a radio baseband processor, a field programmable gate array (FPGA), a programmable logic device (PLD), and so forth.
- DSP digital signal processor
- MAC media access control
- FPGA field programmable gate array
- PLD programmable logic device
- the apparatus may include one or more input/output (IIO) ports 104 , 114 and 124 .
- IIO port 104 , 114 and 124 may include, but is not limited to, a United Serial Bus (USB), USB 2, USB 3, Peripheral Component Interconnect (PCI) Express 2 and/or Quick Path Interconnect (QPI).
- An IIO port 104 , 114 and 124 may detect the attachment or detachment of an external device and inform host controller 106 of the attachment or detachment event.
- An IIO port 104 may allow an external device 112 , 122 to communicate information, such as device state information, link configurations and other capabilities information, to elements within the apparatus 100 .
- an IIO port 104 , 114 and 124 may detect the presence of an external device through various signaling methods, such as, but not limited to, electrical signaling, and inform a host controller 106 of the presence of an external device 112 , 122 .
- the apparatus 100 may include a host controller 106 coupled to a processor 102 .
- the host controller 106 may provide for the exchange of information with various external devices through one or more IIO ports.
- a host controller 106 may perform handshaking with an external device 112 , 122 to determine the operational speed of the external device 112 , 122 (for example, a USB device during a hot plug event) and/or the number of communication lanes of the external device 112 , 122 (for example, a PCI Express device during link training).
- a host controller 106 may communicate with an IIO port 104 via direct media interface (DMI) or other suitable communication links between an IIO and a host controller.
- DMI direct media interface
- DMI may provide point-to-point communication between a processor and a host controller.
- a host controller 106 may include hardware internal to the apparatus 100 that provides high speed functionality to the IIO ports 104 .
- the host controller 106 may receive electrical signal from the external device 112 , 122 via the IIO port 104 .
- a host controller 106 may detect an event related to an external device 112 , 122 and may manipulate power to one or more physical memory cells 108 in response to detection of the event.
- the host controller 106 may include a host controller driver 105 .
- the host controller driver 105 may include firmware and/or software instructions that enable the host controller 106 to communicate with other components in apparatus 100 .
- the host controller driver 105 may enable the host controller 106 to manage one or more internal buffers 101 and one or more physical memory cells 108 .
- the host controller 106 may communicate information with the external device 112 , 122 and other elements within the apparatus 100 using a host controller driver 105 . In an embodiment, the host controller 106 may use this information to determine the speed necessary for the external device plugged into the IIO port 104 .
- the host controller driver 105 may manage internal buffer configurations 101 of the physical memory cells 108 based on one or more of the speed, the link configuration, the lane configuration, bandwidth characteristics and/or the buffer characteristics of the external device 112 , 122 when it is connected to apparatus 100 .
- the host controller 106 along with the host controller driver 105 , may be used to determine which physical memory cells 108 in the internal buffer 101 may be allocated to a particular external device 112 , 122 connected via the IIO port 104 .
- the host controller 106 may be used to determine when there has been a change in the physical memory cells 108 which were used by a particular external device 112 , 122 connected via the IIO port 104 .
- the apparatus 100 may include one or more memories 108 , 109 .
- the memory 108 , 109 may be any type of physical memory that can be powered on or off without impacting another device.
- the memory 108 , 109 may include, but is not limited to, Static Random Access Memory (SRAM) or a Dynamic Random Access Memory (DRAM).
- SRAM Static Random Access Memory
- DRAM Dynamic Random Access Memory
- Memory 108 , 109 may be implemented using any machine-readable or computer-readable media capable of storing data, including both volatile and non-volatile memory.
- memory 108 , 109 may include random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), read-only memory (ROM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., NOR or NAND flash memory), content addressable memory (CAM), polymer memory (e.g., ferroelectric polymer memory), phase-change memory, ovonic memory, ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, or any other type of media suitable for storing information.
- RAM random-access memory
- DRAM dynamic RAM
- DDRAM Double-Data-Rate DRAM
- SDRAM synchronous DRAM
- SRAM static RAM
- ROM read-only memory
- PROM programmable ROM
- EPROM erasable programmable
- memory 109 may be located inside the apparatus 100 but outside of the host controller 106 .
- memory 109 may include one or more physical memory cells.
- one or more memory cells 108 may be located in one or more internal buffer arrays 101 inside the host controller 106 .
- the apparatus 100 may have one or more internal buffers 101 and each internal buffer 101 may include one or more physical memory cells 108 .
- One or more internal buffers 101 together with the physical memory cells 108 , may improve performance of the apparatus by holding information that is read from an external device 112 , 122 so that it is available to the apparatus when needed.
- the apparatus 100 may include a power controller 111 connected to a power supply 103 such as an Advanced Technology Extended (ATX) power supply, a battery pack, and/or an alternating current (AC) power supply.
- a power supply 103 such as an Advanced Technology Extended (ATX) power supply, a battery pack, and/or an alternating current (AC) power supply.
- the power controller 111 may be arranged to power down various aspects of the host controller 106 , and the power supply 103 may be arranged to switch between AC and battery power.
- the power controller 111 may be arranged to implement power saving measures and gate power to the memory cells 109 within the host controller 106 when the power supply 103 switches from AC power to battery power.
- the power controller 111 may be implemented by one or more controllers (e.g., microcontroller), hardware board connections, or any combination thereof, as desired for a given set of design parameters or performance constraints.
- the apparatus 100 may comprise a power gating module 110 .
- the power gating module 110 may be coupled to the host controller 106 .
- the power gating module 110 may be located within the host controller 106 .
- the power gating module 110 may be used to power gate signals to each memory cell 108 in the internal buffer 101 .
- the power gating module 110 may be used to turn on and/or off the power of a cell in the memory array 108 .
- the power gating module 110 may receive instructions from the host controller 106 .
- the power gating module 110 may selectively power off and/or power on subsets of memory cells 108 in internal buffer 101 in response to instructions received from host controller 106 or host controller driver 105 .
- the power gating module 110 may power off and/or power on one or more subsets of memory 109 within apparatus 100 that is operatively coupled to host controller 106 in response to instructions received from host controller 106 or host controller driver 105 .
- power gating can occur with respect to memory 109 when memory 109 includes one or more physical memory cells and operatively couples to the power gating module 110 and power controller 111 .
- the power gating module 110 may function independently and/or may function with the power controller 111 to change the power levels of one or more memory cells 108 , 109 .
- the host controller 106 and the power gating module 110 may send control directives to the power controller 111 to modify power output from the power supply 103 to the one or more physical memory cells 108 .
- the power controller 111 may increase and/or decrease the power level to the one or more physical memory cells 108 .
- External devices 112 , 122 may be connected to the apparatus 100 .
- the external device 112 , 122 may be plugged into one of the 110 ports 104 of the apparatus 100 .
- the external device 112 , 122 may supply additional data to the memory cells 108 of the apparatus 100 .
- Examples of an external device 112 , 122 may include, but are not limited to, a Universal Serial Bus (USB) device, a Peripheral Component Interconnect (PCI) device, a PCI Express device, a real time clock, a network interface card (NIC) device or any other device that is capable of inducing a change in state to a host controller 106 .
- USB Universal Serial Bus
- PCI Peripheral Component Interconnect
- PCI Express PCI Express
- NIC network interface card
- one or more internal buffers 101 may be used to support each external physical device 112 , 122 .
- a system with two external devices 112 , 122 may use four buffers, with two buffers for each external device 112 .
- the host controller 106 may dynamically partition the physical memory cells 108 into one or more internal buffers 101 which may be allocated to the one or more external devices 112 , 122 based on the external device characteristics.
- physical memory cells 108 within an internal buffer 101 may be shared by external devices 112 , 122 . The embodiments, however, are not limited to these examples.
- FIG. 2 illustrates an exemplary diagram of a physical memory array architecture according to an embodiment.
- a buffer within a host controller may be portioned into subsets of physical memory cells.
- the host controller may be a universal serial bus (USB) host controller and the one or more buffers may be portioned into a subset of static random access memory (SRAM) cells.
- the apparatus 200 may include the power gating module 110 sending control directives to the power controller 111 to modify power output from the power to each of the physical memory cells 208 a -Z.
- the power gating module 110 may be coupled to the power controller 111 .
- the power controller 111 may be coupled to the array of physical memories 208 a -Z.
- the entire physical memory array may be partitioned into sub-blocks of memory cells, with each cell power gated by the power gating module 110 and the power controller 111 .
- the power controller 111 may be coupled to each physical memory cell 208 a -Z.
- the power controller 111 may be coupled to memory cell 208 a, memory cell 208 b , memory cell 208 c, etc. all the way to, and including, memory cell 208 Z.
- Each memory cell may include a unique address and data.
- the apparatus 200 may include 16 memory cells.
- the apparatus 200 may include 8 memory cells. The embodiments, however, are not limited to these examples.
- the power gating module 110 and the power controller 111 may be controlled by the host controller driver (as shown in FIG. 1 ) to remove or to restore power to individual physical memory cells 208 a -Z.
- the physical memory cells 208 a -Z may be dynamically powered on and/or off based on the types of devices plugged into the apparatus and the one or more negotiated external device characteristics.
- at system power-up all physical memory cells 208 a -Z may be placed in a power down state to conserve power.
- a host controller may detect a speed of the external device and may activate and/or restore power to a subset of physical memory cells 208 a -Z for use with the external device.
- the sub-block of memory cells may be powered up and arranged into queue structures upon detection of an external device being connected to the host controller.
- a subset of physical memory cells 208 a -Z used by an external device may be powered off upon detection of the external device being removed from the host controller.
- FIG. 3 illustrates an exemplary diagram for a full speed external device using the buffer array according to an embodiment.
- FIG. 3 discloses an exemplary state of the host controller's memory array utilization when an external full speed USB device is detected.
- memory cell 308 a may be used by an external USB device with a full speed configuration 320 .
- memory cell 308 a may be turned on via the power controller and the power gating module (as shown in FIG. 2 ).
- the remaining memory cells 308 b - h in apparatus 300 may be turned off.
- the host controller may determine that only one memory cell may be needed to support the operative speed of the external device. In an embodiment, the host controller may be programmed to determine how many cells are necessary for an external device. In an embodiment, the number of physical memory cells which are activated may depend on one or more external device characteristics. External device characteristics may include one or more of the speed, bandwidth characteristic, buffer characteristic and/or lane configuration of the external device. In an embodiment, the host controller may detect one or more of the speed, bandwidth characteristic and or lane configuration to determine the number of memory cells to be allocated to the external device.
- an external device may be plugged into a PCI Express port and the host controller may detect a hot plug event and arrange the buffer to a specific size based on the speed, bandwidth characteristic and lane configuration of the detected external device.
- the number of cells used by or allocated to an external device may be determined based on one or more negotiated external device characteristics between a host controller and the external device.
- the number of cells used by or allocated to an external device may be dynamically changed in response to an event related to the external device. For example, subsets of previously allocated cells may be powered off if it is detected that the external device has entered a low power state and the device can function with fewer cells.
- the speed of an external USB device may be low speed, full speed, high speed or bandwidth critical.
- an external device with a full speed configuration may be determined by the controller driver.
- the host controller may power on a single memory cell.
- two memory cells may be powered on for a full speed external device.
- the controller driver may determine that the external device has a high speed.
- a host controller may power on four memory cells to support a high speed external device.
- a high speed external device may have a large queue structure and a higher transmission and reception speed than a full speed external device.
- the host controller may power on three memory cells for a high speed external device.
- an external drive may only be allocated four memory cells within the apparatus.
- FIGS. 3-5 refer to USB devices with various speeds (i.e., low, full or high speed), the embodiments, however, are not limited to these examples.
- a PCI external device may use various amounts of memory cells based on various speed and/or buffer characteristics.
- FIG. 4 discloses an exemplary diagram for a full speed external device and a high speed external device using the buffer array according to an embodiment.
- FIG. 4 discloses an exemplary state of the controller's memory array utilization when a first external device with a full speed 420 and a second external device with a high speed 440 are detected by the apparatus.
- a subset of the memory cells may remain powered off when they are not needed.
- memory cell 408 a may be powered on and used by the full speed external device 420 .
- memory cells 410 e, 410 f, 410 g and 410 h may be dynamically powered on and activated for use by the high speed external device.
- each external device may be allocated a maximum number of cells.
- each external device may be allocated four cells.
- the first external device 420 may not require all four cells and may only need a single cell to be powered on.
- the second external device 440 may require four cells and may be allocated the fifth through the eighth cells (cells 408 e - h ). Memory cells two, three and four may remain allocated to the first external device even though they are powered off.
- the apparatus By allocating cells one through four to the first external device, the apparatus ensures that if the first external device 420 is removed and a third high speed external device is added to replace full speed device 420 , there may be four continuous cells to allocate to the third external device.
- memory cells may be dynamically activated when and for as long as they are needed.
- the host controller may reclaim the unused memory cells by powering off those cells used by the now inactive external device. For example, memory cells may be powered off when the external device is unplugged and/or enters an idle, low power and/or sleep state.
- FIG. 5 illustrates an exemplary diagram for a full speed external device and a bandwidth critical external device using the buffer array of an exemplary system according to an embodiment.
- one or more memory cells allocated to one device may be used by a second device if the second device needs an extra large buffer for quality of service critical applications.
- Quality of service critical allocations may include but are not limited to a universal serial bus (USB) to digital visual interface (DVI) display application.
- the number of additional cells used may be determined based on one or more negotiated external device characteristics between a host controller and the external device. For example, the external device may support larger burst reads and/or writes with a larger buffer. Referring to FIG. 5 , the full speed external device 520 may only require a single cell be powered on.
- a bandwidth critical external device 560 may require more bandwidth than the four allocated cells. Since the full speed external device 520 only uses a single cell, there may be three cells 508 b , 508 c and 508 d which are currently powered off as they are not needed by the full speed external device. If the bandwidth critical device requires a total of six cells (i.e. two additional cells), the host controller may allocate two cells, 508 c and 508 d, to the bandwidth critical external device 560 . As a result of the buffer sharing, 508 a may be powered up and used by the full speed external device, memory cell 508 b may be powered off and memory cells 508 c through 508 h may be powered up and used by the bandwidth critical external device 560 .
- FIG. 6 may include a particular programming logic, it can be appreciated that the programming logic merely provides an example of how the general functionality described herein can be implemented. Further, the given programming logic does not necessarily have to be executed in the order presented unless otherwise indicated.
- FIG. 6 illustrates an exemplary logic flow according to an embodiment.
- FIG. 6 depicts a programming logic 600 for reducing the power consumption state of processors according to an embodiment.
- the logic flow 600 may be representative of the operations executed by one or more embodiments described herein.
- an event related to an external device may be detected at block 605 .
- an event related to an external device communicating with host controller may be detected.
- An external device may include a universal serial bus, a peripheral component interconnect, a quick path interconnect, or any other devices.
- an event may occur when the external device is plugged into the hosting device.
- an event may occur when the external device is unplugged from the hosting device.
- an event may occur when the external device is unplugged and/or in an idle, low power and/or a sleep state.
- power to one or more physical memory cells of the host controller may be modified at block 610 .
- the physical memory cells may be part of one or more internal buffers.
- size of one or more internal buffers may be arranged. It may be determined whether one or more of the physical memory cells are to be powered on based on the event at diamond 615 .
- a host controller may determine whether to power on or off one or more of the physical memory cells. If one or more of the physical memory cells are powered on, one or more external device characteristics may be determined at block 620 . External device characteristics may include a device speed, a lane configuration, a bandwidth characteristic and/or a buffer characteristic for the external device.
- one or more physical memory cells may be powered on based on the one or more external device characteristics at block 625 .
- a second event related to a second external device communicating with the host controller may be detected.
- One or more external device characteristics of the second external device may be determined.
- Power to one or more physical memory cells may be modified based on the one or more external device characteristics of the second external device.
- One or more of the non-allocated physical memory cells may be allocated to the second external device based on the one or more external device characteristics of the second external device.
- one or more of the physical memory cells may be powered off.
- the one or more physical memory cells may be powered off when the memory cells are no longer needed by external device based on the one or more external device characteristics.
- the one or more physical memory cells may be powered off based on an amount of memory cell previously utilized by the external device at block 630 .
- Various embodiments may be implemented using hardware elements, software elements, or a combination of both.
- hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth.
- Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
- Coupled and “connected” along with their derivatives. These terms are not intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
- Some embodiments may be implemented, for example, using a machine-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments.
- a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software.
- the machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or non-removable media, or the like.
- the instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
- processing refers to the action and/or processes of a computer or computing system, or similar electronic computing device, that modifies, manipulates and/or transforms data represented as physical quantities (e.g., electronic) within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices.
- physical quantities e.g., electronic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Power Sources (AREA)
Abstract
Description
- Computing devices often contain input/out ports, such as USB ports. When an external device is plugged into the input/out port, the host controller of the hosting device is used to detect the speed of that external device. By determining the speed of the external device, the host controller can arrange the hosting device to function at the speed needed by the external device. Often a host controller supports multiple external devices from input/output ports. Each external device plugged into the input/output port consumes power from the hosting device. As a result, the power consumption of a hosting device with external devices attached is not optimized as the external device requests and receives a certain amount of power.
-
FIG. 1 illustrates an exemplary apparatus to reduce power consumption according to an embodiment. -
FIG. 2 illustrates an exemplary diagram of a physical memory array architecture according to an embodiment. -
FIG. 3 illustrates an exemplary diagram for a full speed external device using the buffer array according to an embodiment. -
FIG. 4 discloses an exemplary diagram for a full speed external device and a high speed external device using the buffer array according to an embodiment. -
FIG. 5 illustrates an exemplary diagram for a full speed external device and a bandwidth critical external device using the buffer array of an exemplary system according to an embodiment. -
FIG. 6 illustrates an exemplary logic flow according to an embodiment. - The embodiments are generally directed to techniques for minimizing power consumption. In an embodiment, an event may be detected related to an external device communicating with a host controller. Power to one or more physical memory cells for the host controller may be modified.
- In an embodiment, for example, a hosting device may include a host controller with one or more input/output ports. Through the input/output (IIO) ports, a variety of external devices may be plugged into the hosting device. When an external device is plugged into an IIO port, an IIO port may detect the presence of an external device through various signaling methods and inform a host controller of the presence of an external device. The host controller may perform handshaking with the external device to determine the one or more external characteristics such as an operational speed and/or the number of communication lanes of the external device. The host controller may arrange the size of the host controller's internal buffers based on the speed and/or lane configurations of the external device. A sufficient buffer size may be determined to prevent buffer overflow. Additional unused buffers may be left idle and/or powered down by the host controller. The host controller's internal buffers may be in the form of a physical memory array. Each block of the physical memory may be power gated via power gating module. Each physical memory cell within a buffer may be dynamically turned on and/or off the by power gating module via instructions by the controller device driver. In this manner, the physical memory cells may be optimized to reduce power consumption and make the hosting device more power efficient. The hosting device may save overall power consumption. By reducing the power consumed in a hosting device with an external device, the battery of the hosting device may be prolonged. Other embodiments may be described and claimed.
- Various embodiments may comprise one or more elements. An element may comprise any structure arranged to perform certain operations. Each element may be implemented as hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints. Although an embodiment may be described with a limited number of elements in a certain topology by way of example, the embodiment may include more or less elements in alternate topologies as desired for a given implementation. It is worthy to note that any reference to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
-
FIG. 1 illustrates an exemplary apparatus to reduce power consumption according to an embodiment.FIG. 1 illustrates a block diagram of anapparatus 100. In an embodiment, theapparatus 100 may include a hosting device, a processing system, a computing device, a computer, a computer system, a computer sub-system, an appliance, a network application, a workstation, a terminal, a server, a personal computer (PC), a desktop computer, a laptop computer, an ultra-laptop computer, a notebook computer, a handheld computer, a personal digital assistant (PDA), a telephone, a mobile telephone, a cellular telephone, a handset, a smart phone, a pager, a one-way pager, a two-way pager, a digital camera, a digital video recorder, a digital video player, a digital audio recorder, a digital audio player, a set top box (STB), a media server, and so forth. The embodiments, however, are not limited to this example. - As shown in
FIG. 1 , theapparatus 100 may include multiple elements, such as aprocessor 102, one or more integrated input/output ports host controller 106, apower supply 103, apower controller 111 and amemory 109. The host controller may include ahost controller driver 105, aninternal buffer 101 withmemory cells 108 and apower gating module 110. Anexternal device apparatus 100. The embodiments, however, are not limited to the elements shown in this figure. AlthoughFIG. 1 is shown with a limited number of elements, it may be appreciated that theapparatus 100 may include more elements as desired for a given implementation. - In various embodiments, the
apparatus 100 may include aprocessor 102. Theprocessor 102 may comprise a general purpose processor or an application specific processor arranged to provide general or specific computing capabilities for theapparatus 100. While this embodiment is a single processor system, an alternate embodiment may include a dual or multiprocessor system. The embodiments, however, are not limited to this example. Aprocessor 102 may be implemented using any processor or logic device, such as a central processing unit (CPU), a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or other processor device. In one embodiment, for example,processor 102 may be implemented as a general purpose processor, such as a processor made by Intel® Corporation, Santa Clara, Calif.Processor 102 may also be implemented as a dedicated processor, such as a controller, microcontroller, embedded processor, a digital signal processor (DSP), a network processor, a media processor, an input/output (110) processor, a media access control (MAC) processor, a radio baseband processor, a field programmable gate array (FPGA), a programmable logic device (PLD), and so forth. The embodiments are not limited in this context. - In an embodiment, the apparatus may include one or more input/output (IIO)
ports IIO port IIO port host controller 106 of the attachment or detachment event. AnIIO port 104 may allow anexternal device apparatus 100. In an embodiment, anIIO port host controller 106 of the presence of anexternal device - In an embodiment, the
apparatus 100 may include ahost controller 106 coupled to aprocessor 102. Thehost controller 106 may provide for the exchange of information with various external devices through one or more IIO ports. In an embodiment, ahost controller 106 may perform handshaking with anexternal device external device 112, 122 (for example, a USB device during a hot plug event) and/or the number of communication lanes of theexternal device 112, 122 (for example, a PCI Express device during link training). Ahost controller 106 may communicate with anIIO port 104 via direct media interface (DMI) or other suitable communication links between an IIO and a host controller. DMI may provide point-to-point communication between a processor and a host controller. Ahost controller 106 may include hardware internal to theapparatus 100 that provides high speed functionality to theIIO ports 104. In an embodiment, thehost controller 106 may receive electrical signal from theexternal device IIO port 104. In an embodiment, ahost controller 106 may detect an event related to anexternal device physical memory cells 108 in response to detection of the event. - The
host controller 106 may include ahost controller driver 105. Thehost controller driver 105 may include firmware and/or software instructions that enable thehost controller 106 to communicate with other components inapparatus 100. In an embodiment, thehost controller driver 105 may enable thehost controller 106 to manage one or moreinternal buffers 101 and one or morephysical memory cells 108. Thehost controller 106 may communicate information with theexternal device apparatus 100 using ahost controller driver 105. In an embodiment, thehost controller 106 may use this information to determine the speed necessary for the external device plugged into theIIO port 104. In an embodiment, thehost controller driver 105 may manageinternal buffer configurations 101 of thephysical memory cells 108 based on one or more of the speed, the link configuration, the lane configuration, bandwidth characteristics and/or the buffer characteristics of theexternal device apparatus 100. Thehost controller 106, along with thehost controller driver 105, may be used to determine whichphysical memory cells 108 in theinternal buffer 101 may be allocated to a particularexternal device IIO port 104. In an embodiment, thehost controller 106, along with thehost control driver 105, may be used to determine when there has been a change in thephysical memory cells 108 which were used by a particularexternal device IIO port 104. - In an embodiment, the
apparatus 100 may include one ormore memories memory memory Memory memory - In an embodiment,
memory 109 may be located inside theapparatus 100 but outside of thehost controller 106. In an embodiment,memory 109 may include one or more physical memory cells. In an embodiment, one ormore memory cells 108 may be located in one or moreinternal buffer arrays 101 inside thehost controller 106. In an embodiment, theapparatus 100 may have one or moreinternal buffers 101 and eachinternal buffer 101 may include one or morephysical memory cells 108. One or moreinternal buffers 101, together with thephysical memory cells 108, may improve performance of the apparatus by holding information that is read from anexternal device - In an embodiment, the
apparatus 100 may include apower controller 111 connected to apower supply 103 such as an Advanced Technology Extended (ATX) power supply, a battery pack, and/or an alternating current (AC) power supply. In various implementations, thepower controller 111 may be arranged to power down various aspects of thehost controller 106, and thepower supply 103 may be arranged to switch between AC and battery power. For example, thepower controller 111 may be arranged to implement power saving measures and gate power to thememory cells 109 within thehost controller 106 when thepower supply 103 switches from AC power to battery power. In an embodiment, thepower controller 111 may be implemented by one or more controllers (e.g., microcontroller), hardware board connections, or any combination thereof, as desired for a given set of design parameters or performance constraints. - In an embodiment, the
apparatus 100 may comprise apower gating module 110. In an embodiment, thepower gating module 110 may be coupled to thehost controller 106. In an embodiment, thepower gating module 110 may be located within thehost controller 106. Thepower gating module 110 may be used to power gate signals to eachmemory cell 108 in theinternal buffer 101. Thepower gating module 110 may be used to turn on and/or off the power of a cell in thememory array 108. Thepower gating module 110 may receive instructions from thehost controller 106. In an embodiment, thepower gating module 110 may selectively power off and/or power on subsets ofmemory cells 108 ininternal buffer 101 in response to instructions received fromhost controller 106 orhost controller driver 105. In an embodiment, thepower gating module 110 may power off and/or power on one or more subsets ofmemory 109 withinapparatus 100 that is operatively coupled tohost controller 106 in response to instructions received fromhost controller 106 orhost controller driver 105. In an embodiment, power gating can occur with respect tomemory 109 whenmemory 109 includes one or more physical memory cells and operatively couples to thepower gating module 110 andpower controller 111. Thepower gating module 110 may function independently and/or may function with thepower controller 111 to change the power levels of one ormore memory cells - In an embodiment, the
host controller 106 and thepower gating module 110 may send control directives to thepower controller 111 to modify power output from thepower supply 103 to the one or morephysical memory cells 108. Thepower controller 111 may increase and/or decrease the power level to the one or morephysical memory cells 108. -
External devices apparatus 100. In an embodiment, theexternal device ports 104 of theapparatus 100. Theexternal device memory cells 108 of theapparatus 100. Examples of anexternal device host controller 106. In an embodiment, one or moreinternal buffers 101 may be used to support each externalphysical device external devices external device 112. In an embodiment, thehost controller 106 may dynamically partition thephysical memory cells 108 into one or moreinternal buffers 101 which may be allocated to the one or moreexternal devices physical memory cells 108 within aninternal buffer 101 may be shared byexternal devices - The operations of
apparatus 100 may be further described with reference toFIG. 2 and accompanying examples.FIG. 2 illustrates an exemplary diagram of a physical memory array architecture according to an embodiment. In an embodiment, a buffer within a host controller may be portioned into subsets of physical memory cells. For example, the host controller may be a universal serial bus (USB) host controller and the one or more buffers may be portioned into a subset of static random access memory (SRAM) cells. In an embodiment, theapparatus 200 may include thepower gating module 110 sending control directives to thepower controller 111 to modify power output from the power to each of the physical memory cells 208 a-Z. In an embodiment, thepower gating module 110 may be coupled to thepower controller 111. Thepower controller 111 may be coupled to the array of physical memories 208 a-Z. The entire physical memory array may be partitioned into sub-blocks of memory cells, with each cell power gated by thepower gating module 110 and thepower controller 111. In an embodiment, thepower controller 111 may be coupled to each physical memory cell 208 a-Z. For example, thepower controller 111 may be coupled tomemory cell 208 a,memory cell 208 b,memory cell 208 c, etc. all the way to, and including,memory cell 208Z. Each memory cell may include a unique address and data. In an embodiment, theapparatus 200 may include 16 memory cells. In an embodiment, theapparatus 200 may include 8 memory cells. The embodiments, however, are not limited to these examples. - In an embodiment, the
power gating module 110 and thepower controller 111 may be controlled by the host controller driver (as shown inFIG. 1 ) to remove or to restore power to individual physical memory cells 208 a-Z. In an embodiment, the physical memory cells 208 a-Z may be dynamically powered on and/or off based on the types of devices plugged into the apparatus and the one or more negotiated external device characteristics. In an embodiment, at system power-up, all physical memory cells 208 a-Z may be placed in a power down state to conserve power. In an embodiment, when an external device is plugged into the IIO, a host controller may detect a speed of the external device and may activate and/or restore power to a subset of physical memory cells 208 a-Z for use with the external device. In an embodiment, the sub-block of memory cells may be powered up and arranged into queue structures upon detection of an external device being connected to the host controller. In an embodiment, a subset of physical memory cells 208 a-Z used by an external device may be powered off upon detection of the external device being removed from the host controller. -
FIG. 3 illustrates an exemplary diagram for a full speed external device using the buffer array according to an embodiment.FIG. 3 discloses an exemplary state of the host controller's memory array utilization when an external full speed USB device is detected. As shown inFIG. 3 ,memory cell 308 a may be used by an external USB device with a full speed configuration 320. In an embodiment,memory cell 308 a may be turned on via the power controller and the power gating module (as shown inFIG. 2 ). In an embodiment, the remainingmemory cells 308 b-h inapparatus 300 may be turned off. - In an embodiment, the host controller may determine that only one memory cell may be needed to support the operative speed of the external device. In an embodiment, the host controller may be programmed to determine how many cells are necessary for an external device. In an embodiment, the number of physical memory cells which are activated may depend on one or more external device characteristics. External device characteristics may include one or more of the speed, bandwidth characteristic, buffer characteristic and/or lane configuration of the external device. In an embodiment, the host controller may detect one or more of the speed, bandwidth characteristic and or lane configuration to determine the number of memory cells to be allocated to the external device. For example, an external device may be plugged into a PCI Express port and the host controller may detect a hot plug event and arrange the buffer to a specific size based on the speed, bandwidth characteristic and lane configuration of the detected external device. In an embodiment, the number of cells used by or allocated to an external device may be determined based on one or more negotiated external device characteristics between a host controller and the external device. In an embodiment, the number of cells used by or allocated to an external device may be dynamically changed in response to an event related to the external device. For example, subsets of previously allocated cells may be powered off if it is detected that the external device has entered a low power state and the device can function with fewer cells.
- In an embodiment, the speed of an external USB device may be low speed, full speed, high speed or bandwidth critical. In an embodiment, an external device with a full speed configuration may be determined by the controller driver. In an embodiment, for a full speed external device, the host controller may power on a single memory cell. In an embodiment, two memory cells may be powered on for a full speed external device. In an embodiment, the controller driver may determine that the external device has a high speed. In an embodiment, a host controller may power on four memory cells to support a high speed external device. A high speed external device may have a large queue structure and a higher transmission and reception speed than a full speed external device. In an embodiment, the host controller may power on three memory cells for a high speed external device. In an embodiment, there may be a maximum number of cells that may be allocated to a particular external device. For example, an external drive may only be allocated four memory cells within the apparatus. While
FIGS. 3-5 refer to USB devices with various speeds (i.e., low, full or high speed), the embodiments, however, are not limited to these examples. For example, a PCI external device may use various amounts of memory cells based on various speed and/or buffer characteristics. - In an embodiment, an address register may be used to keep track of the active and non-active memory cells. In an embodiment, based on the number of external devices supported by the host controller, the host controller may maintain a set of registers to keep track of address pointers to the physical memory array. The pointers may be used for keeping track of locations for reading and writing data and implementing suitable queue structures using subsets of the physical memory array. In an embodiment, address pointers, such as, but not limited to, start, end and a current address of the queues may be updated by the controller driver according to the number of active memory cells. In an embodiment, an address register may be used to keep track of queue structures of each individual external device's use of the memory cells. In an embodiment, an address register may be used to access the power gating module by a host controller driver.
-
FIG. 4 discloses an exemplary diagram for a full speed external device and a high speed external device using the buffer array according to an embodiment.FIG. 4 discloses an exemplary state of the controller's memory array utilization when a first external device with a full speed 420 and a second external device with ahigh speed 440 are detected by the apparatus. As shown inFIG. 4 , a subset of the memory cells may remain powered off when they are not needed. For example,memory cell 408 a may be powered on and used by the full speed external device 420. Additionally, memory cells 410 e, 410 f, 410 g and 410 h may be dynamically powered on and activated for use by the high speed external device. In an embodiment, each external device may be allocated a maximum number of cells. InFIG. 4 , each external device may be allocated four cells. The first external device 420 may not require all four cells and may only need a single cell to be powered on. The secondexternal device 440 may require four cells and may be allocated the fifth through the eighth cells (cells 408 e-h). Memory cells two, three and four may remain allocated to the first external device even though they are powered off. By allocating cells one through four to the first external device, the apparatus ensures that if the first external device 420 is removed and a third high speed external device is added to replace full speed device 420, there may be four continuous cells to allocate to the third external device. - In an embodiment, memory cells may be dynamically activated when and for as long as they are needed. In an embodiment, when the host controller detects that an external device is no longer in use, the host controller may reclaim the unused memory cells by powering off those cells used by the now inactive external device. For example, memory cells may be powered off when the external device is unplugged and/or enters an idle, low power and/or sleep state.
-
FIG. 5 illustrates an exemplary diagram for a full speed external device and a bandwidth critical external device using the buffer array of an exemplary system according to an embodiment. In an embodiment, one or more memory cells allocated to one device may be used by a second device if the second device needs an extra large buffer for quality of service critical applications. Quality of service critical allocations may include but are not limited to a universal serial bus (USB) to digital visual interface (DVI) display application. In an embodiment, the number of additional cells used may be determined based on one or more negotiated external device characteristics between a host controller and the external device. For example, the external device may support larger burst reads and/or writes with a larger buffer. Referring toFIG. 5 , the full speedexternal device 520 may only require a single cell be powered on. A bandwidth critical external device 560 may require more bandwidth than the four allocated cells. Since the full speedexternal device 520 only uses a single cell, there may be threecells memory cell 508 b may be powered off andmemory cells 508 c through 508 h may be powered up and used by the bandwidth critical external device 560. - Although
FIG. 6 as presented herein may include a particular programming logic, it can be appreciated that the programming logic merely provides an example of how the general functionality described herein can be implemented. Further, the given programming logic does not necessarily have to be executed in the order presented unless otherwise indicated. -
FIG. 6 illustrates an exemplary logic flow according to an embodiment.FIG. 6 depicts a programming logic 600 for reducing the power consumption state of processors according to an embodiment. The logic flow 600 may be representative of the operations executed by one or more embodiments described herein. As shown in the logic flow 600, an event related to an external device may be detected atblock 605. In an embodiment, an event related to an external device communicating with host controller may be detected. An external device may include a universal serial bus, a peripheral component interconnect, a quick path interconnect, or any other devices. In an embodiment, an event may occur when the external device is plugged into the hosting device. In an embodiment, an event may occur when the external device is unplugged from the hosting device. In an embodiment, an event may occur when the external device is unplugged and/or in an idle, low power and/or a sleep state. - In an embodiment, power to one or more physical memory cells of the host controller may be modified at
block 610. In an embodiment, the physical memory cells may be part of one or more internal buffers. In an embodiment, size of one or more internal buffers may be arranged. It may be determined whether one or more of the physical memory cells are to be powered on based on the event atdiamond 615. In an embodiment, a host controller may determine whether to power on or off one or more of the physical memory cells. If one or more of the physical memory cells are powered on, one or more external device characteristics may be determined at block 620. External device characteristics may include a device speed, a lane configuration, a bandwidth characteristic and/or a buffer characteristic for the external device. - In an embodiment, one or more physical memory cells may be powered on based on the one or more external device characteristics at block 625. In an embodiment, a second event related to a second external device communicating with the host controller may be detected. One or more external device characteristics of the second external device may be determined. Power to one or more physical memory cells may be modified based on the one or more external device characteristics of the second external device.
- In an embodiment it may be determined whether a host controller buffer has available non-allocated physical memory cells based on a first external device. One or more of the non-allocated physical memory cells may be allocated to the second external device based on the one or more external device characteristics of the second external device.
- In an embodiment, if based on the event, one or more of the physical memory cells not powered on, then one or more of the physical memory cells may be powered off. For example, the one or more physical memory cells may be powered off when the memory cells are no longer needed by external device based on the one or more external device characteristics. The one or more physical memory cells may be powered off based on an amount of memory cell previously utilized by the external device at block 630.
- Numerous specific details have been set forth herein to provide a thorough understanding of the embodiments. It will be understood by those skilled in the art, however, that the embodiments may be practiced without these specific details. In other instances, well-known operations, components and circuits have not been described in detail so as not to obscure the embodiments. It can be appreciated that the specific structural and functional details disclosed herein may be representative and do not necessarily limit the scope of the embodiments.
- Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
- Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
- Some embodiments may be implemented, for example, using a machine-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or non-removable media, or the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
- Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that modifies, manipulates and/or transforms data represented as physical quantities (e.g., electronic) within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. The embodiments are not limited in this context.
- It should be noted that the methods described herein do not have to be executed in the order described, or in any particular order. Moreover, various activities described with respect to the methods identified herein can be executed in serial or parallel fashion.
- Although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combinations of the above embodiments, and other embodiments not specifically described herein will be apparent to those of skill in the art upon reviewing the above description. Thus, the scope of various embodiments includes any other applications in which the above compositions, structures, and methods are used.
- It is emphasized that the Abstract of the Disclosure is provided to comply with 37 C.F.R. sctn. 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate preferred embodiment. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.
- Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (20)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
MYPI20103172 | 2010-07-02 | ||
MYPI2010003172 | 2010-07-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120005512A1 true US20120005512A1 (en) | 2012-01-05 |
US8631255B2 US8631255B2 (en) | 2014-01-14 |
Family
ID=45400661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/910,338 Expired - Fee Related US8631255B2 (en) | 2010-07-02 | 2010-10-22 | Method, system and apparatus for dynamic buffer management for power saving |
Country Status (1)
Country | Link |
---|---|
US (1) | US8631255B2 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290750A1 (en) * | 2012-04-26 | 2013-10-31 | Freescale Semiconductor, Inc. | Memory with word level power gating |
US20150032979A1 (en) * | 2013-07-26 | 2015-01-29 | International Business Machines Corporation | Self-adjusting phase change memory storage module |
US9269435B2 (en) | 2011-12-22 | 2016-02-23 | Globalfoundries Inc. | Drift mitigation for multi-bits phase change memory |
US9317087B2 (en) | 2012-04-26 | 2016-04-19 | Ravindraraj Ramaraju | Memory column drowsy control |
US11239843B2 (en) * | 2018-05-30 | 2022-02-01 | Intel Corporation | Width and frequency conversion with PHY layer devices in PCI-express |
US11467999B2 (en) | 2018-06-29 | 2022-10-11 | Intel Corporation | Negotiating asymmetric link widths dynamically in a multi-lane link |
US11474960B2 (en) | 2019-03-05 | 2022-10-18 | Intel Corporation | Technologies for partial link width states for multilane links |
US11836101B2 (en) | 2019-11-27 | 2023-12-05 | Intel Corporation | Partial link width states for bidirectional multilane links |
US20240256020A1 (en) * | 2023-01-26 | 2024-08-01 | Dell Products L.P. | System and method for power management of devices connected to data processing systems |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103765398A (en) | 2011-08-25 | 2014-04-30 | 英特尔公司 | Determining, at least in part, one or more respective amounts of buffer memory field |
US9084021B2 (en) * | 2012-12-12 | 2015-07-14 | Jan-Christoph Bieselt | Call-in participation for a live video broadcast |
JP6833364B2 (en) * | 2016-07-01 | 2021-02-24 | 株式会社東芝 | IC card and IC card processing device |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708278B2 (en) * | 1999-06-28 | 2004-03-16 | Apple Computer, Inc. | Apparatus and method for awakening bus circuitry from a low power state |
US20060035527A1 (en) * | 2004-08-11 | 2006-02-16 | Kabushiki Kaisha Toshiba | Information processing apparatus and method for controlling power supply of the apparatus |
US7069373B2 (en) * | 2002-11-07 | 2006-06-27 | Nec Electronics America, Inc. | USB endpoint controller flexible memory management |
US7167934B1 (en) * | 2003-09-09 | 2007-01-23 | Microsoft Corporation | Peripheral device data transfer protocol |
US7210619B2 (en) * | 2004-01-20 | 2007-05-01 | Standard Microsystems Corporation | Systems and methods for power reduction in systems having removable media devices |
US20080005445A1 (en) * | 2006-06-30 | 2008-01-03 | Paul Diefenbaugh | Power efficient flow control model for usb asynchronous transfers |
US7606951B2 (en) * | 2004-11-12 | 2009-10-20 | Woodbridge Nancy G | Memory reuse for multiple endpoints in USB device |
US20100005327A1 (en) * | 2008-07-02 | 2010-01-07 | Kabushiki Kaisha Toshiba | Usb host controller, information processor, control method of usb host controller, and storage medium |
US20100005204A1 (en) * | 2008-07-03 | 2010-01-07 | Choon Gun Por | Power optimized dynamic port association |
US7774521B2 (en) * | 2007-12-28 | 2010-08-10 | Intel Corporation | Method and apparatus for reducing power consumption for isochronous data transfers |
US20100241889A1 (en) * | 2009-03-18 | 2010-09-23 | Fu Mark Y | Power management system and method |
US20110099305A1 (en) * | 2009-10-23 | 2011-04-28 | Via Technologies, Inc. | Universal Serial Bus Host Control Methods and Universal Serial Bus Host Controllers |
US7991921B2 (en) * | 2008-03-11 | 2011-08-02 | Freescale Semiconductor, Inc. | System and method for reducing power consumption of memory in an I/O controller |
US8001296B2 (en) * | 2008-03-19 | 2011-08-16 | Renesas Electronics Corporation | USB controller and buffer memory control method |
US20110231682A1 (en) * | 2010-03-19 | 2011-09-22 | I/O Interconnect, Ltd. | Power management method and related power management system |
US8078893B2 (en) * | 2009-05-26 | 2011-12-13 | Kabushiki Kaisha Toshiba | Power supply method for supplying power to external device by selecting power supply mode in memory associated with identification information |
US8200853B2 (en) * | 2010-01-14 | 2012-06-12 | Microsoft Corporation | Extensions for USB driver interface functions |
US8234421B2 (en) * | 2004-04-21 | 2012-07-31 | Stmicroelectronics, Inc. | Smart card with selectively allocatable data buffers and associated methods |
US8281171B2 (en) * | 2005-11-17 | 2012-10-02 | Via Technologies, Inc. | Adjustment of power-saving strategy depending on working state of CPU |
-
2010
- 2010-10-22 US US12/910,338 patent/US8631255B2/en not_active Expired - Fee Related
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708278B2 (en) * | 1999-06-28 | 2004-03-16 | Apple Computer, Inc. | Apparatus and method for awakening bus circuitry from a low power state |
US7069373B2 (en) * | 2002-11-07 | 2006-06-27 | Nec Electronics America, Inc. | USB endpoint controller flexible memory management |
US7167934B1 (en) * | 2003-09-09 | 2007-01-23 | Microsoft Corporation | Peripheral device data transfer protocol |
US7210619B2 (en) * | 2004-01-20 | 2007-05-01 | Standard Microsystems Corporation | Systems and methods for power reduction in systems having removable media devices |
US8234421B2 (en) * | 2004-04-21 | 2012-07-31 | Stmicroelectronics, Inc. | Smart card with selectively allocatable data buffers and associated methods |
US20060035527A1 (en) * | 2004-08-11 | 2006-02-16 | Kabushiki Kaisha Toshiba | Information processing apparatus and method for controlling power supply of the apparatus |
US7606951B2 (en) * | 2004-11-12 | 2009-10-20 | Woodbridge Nancy G | Memory reuse for multiple endpoints in USB device |
US8281171B2 (en) * | 2005-11-17 | 2012-10-02 | Via Technologies, Inc. | Adjustment of power-saving strategy depending on working state of CPU |
US20080005445A1 (en) * | 2006-06-30 | 2008-01-03 | Paul Diefenbaugh | Power efficient flow control model for usb asynchronous transfers |
US7774521B2 (en) * | 2007-12-28 | 2010-08-10 | Intel Corporation | Method and apparatus for reducing power consumption for isochronous data transfers |
US7991921B2 (en) * | 2008-03-11 | 2011-08-02 | Freescale Semiconductor, Inc. | System and method for reducing power consumption of memory in an I/O controller |
US8001296B2 (en) * | 2008-03-19 | 2011-08-16 | Renesas Electronics Corporation | USB controller and buffer memory control method |
US20100005327A1 (en) * | 2008-07-02 | 2010-01-07 | Kabushiki Kaisha Toshiba | Usb host controller, information processor, control method of usb host controller, and storage medium |
US20100005204A1 (en) * | 2008-07-03 | 2010-01-07 | Choon Gun Por | Power optimized dynamic port association |
US7840733B2 (en) * | 2008-07-03 | 2010-11-23 | Intel Corporation | Power optimized dynamic port association |
US20100241889A1 (en) * | 2009-03-18 | 2010-09-23 | Fu Mark Y | Power management system and method |
US8078893B2 (en) * | 2009-05-26 | 2011-12-13 | Kabushiki Kaisha Toshiba | Power supply method for supplying power to external device by selecting power supply mode in memory associated with identification information |
US20110099305A1 (en) * | 2009-10-23 | 2011-04-28 | Via Technologies, Inc. | Universal Serial Bus Host Control Methods and Universal Serial Bus Host Controllers |
US8200853B2 (en) * | 2010-01-14 | 2012-06-12 | Microsoft Corporation | Extensions for USB driver interface functions |
US20110231682A1 (en) * | 2010-03-19 | 2011-09-22 | I/O Interconnect, Ltd. | Power management method and related power management system |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9269435B2 (en) | 2011-12-22 | 2016-02-23 | Globalfoundries Inc. | Drift mitigation for multi-bits phase change memory |
US20130290750A1 (en) * | 2012-04-26 | 2013-10-31 | Freescale Semiconductor, Inc. | Memory with word level power gating |
US9026808B2 (en) * | 2012-04-26 | 2015-05-05 | Freescale Semiconductor, Inc. | Memory with word level power gating |
US9317087B2 (en) | 2012-04-26 | 2016-04-19 | Ravindraraj Ramaraju | Memory column drowsy control |
US20150032979A1 (en) * | 2013-07-26 | 2015-01-29 | International Business Machines Corporation | Self-adjusting phase change memory storage module |
US9563371B2 (en) * | 2013-07-26 | 2017-02-07 | Globalfoundreis Inc. | Self-adjusting phase change memory storage module |
US11239843B2 (en) * | 2018-05-30 | 2022-02-01 | Intel Corporation | Width and frequency conversion with PHY layer devices in PCI-express |
US11467999B2 (en) | 2018-06-29 | 2022-10-11 | Intel Corporation | Negotiating asymmetric link widths dynamically in a multi-lane link |
US12164457B2 (en) | 2018-06-29 | 2024-12-10 | Intel Corporation | Negotiating asymmetric link widths dynamically in a multi-lane link |
US11474960B2 (en) | 2019-03-05 | 2022-10-18 | Intel Corporation | Technologies for partial link width states for multilane links |
US11836101B2 (en) | 2019-11-27 | 2023-12-05 | Intel Corporation | Partial link width states for bidirectional multilane links |
US20240256020A1 (en) * | 2023-01-26 | 2024-08-01 | Dell Products L.P. | System and method for power management of devices connected to data processing systems |
US12111707B2 (en) * | 2023-01-26 | 2024-10-08 | Dell Products L.P. | System and method for power management of devices connected to data processing systems |
Also Published As
Publication number | Publication date |
---|---|
US8631255B2 (en) | 2014-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8631255B2 (en) | Method, system and apparatus for dynamic buffer management for power saving | |
US11042297B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
CN107466418B (en) | Cost optimized single level cell mode non-volatile memory for multi-level cell mode non-volatile memory | |
CN105247617B (en) | Hybrid memory device | |
TWI598882B (en) | Dynamic allocation of power budget for a system having non-volatile memory | |
JP5663720B2 (en) | Extended usage range for memory devices | |
EP3361386B1 (en) | Intelligent far memory bandwidth scaling | |
US9389673B2 (en) | Systems and methods of performing a data save operation | |
US9396109B2 (en) | Method and apparatus for DRAM spatial coalescing within a single channel | |
US20120159074A1 (en) | Method, apparatus, and system for energy efficiency and energy conservation including dynamic cache sizing and cache operating voltage management for optimal power performance | |
US7870400B2 (en) | System having a memory voltage controller which varies an operating voltage of a memory and method therefor | |
JP2011513823A5 (en) | ||
US8484418B2 (en) | Methods and apparatuses for idle-prioritized memory ranks | |
US20170228168A1 (en) | Memory state management for electronic device | |
EP2808758B1 (en) | Reduced Power Mode of a Cache Unit | |
GB2476343A (en) | Improving performance of a solid state disk by using a programmable bus arbiter to delay interface requests | |
EP3029580B1 (en) | Processor and memory control method | |
CN204129729U (en) | A kind of Flash storage control system based on DMA transmission | |
KR20160004728A (en) | Memory system and data storage device | |
CN114217750B (en) | SSD low power consumption optimization method, SSD low power consumption optimization device, computer equipment and storage medium | |
CN104199619A (en) | Method and device for processing data in NAND | |
CN205942532U (en) | Embedded computer module | |
CN106708239A (en) | Method and device for adjusting power consumption | |
US20250156345A1 (en) | Compute express link memory and storage module | |
CN105807887A (en) | Energy-saving type system of CPU and SoC chip framework as well as processing device and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHEW, YEN HSIANG;REEL/FRAME:025682/0662 Effective date: 20101014 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20220114 |