US9182808B1 - Low-power network stacks and driver subsets - Google Patents
Low-power network stacks and driver subsets Download PDFInfo
- Publication number
- US9182808B1 US9182808B1 US13/738,247 US201313738247A US9182808B1 US 9182808 B1 US9182808 B1 US 9182808B1 US 201313738247 A US201313738247 A US 201313738247A US 9182808 B1 US9182808 B1 US 9182808B1
- Authority
- US
- United States
- Prior art keywords
- network
- feature
- hardware resources
- subset
- code
- 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.)
- Active, expires
Links
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
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3284—Power saving in printer
-
- 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/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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/3209—Monitoring remote activity, e.g. over telephone lines or network connections
-
- 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
-
- H04L12/2403—
-
- 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 and electronic devices often communicate over a network to access data, services, or functionalities provided by other devices. These other devices are typically configured as network devices that may be discovered, configured, or accessed by a host device over the network. To enable interaction with a host device, a network device maintains a network presence by broadcasting or advertising information in accordance with various network protocols, such as discovery or addressing protocols.
- Some network protocols used to maintain a network presence communicate via higher layers of a network stack that utilize more-complex resources of a network device. Because more-complex resources consume additional power, it is often desirable to power down these resources during periods of inactivity in order to conserve power. Maintaining a network device's network presence, however, often prevents the more-complex resources from being powered-down which can result in higher-than-necessary power consumption.
- a method for receiving, via a reduced-feature-set network stack, data packets from a network interface, responding to the data packets to which the reduced-feature-set network stack is capable of responding, and determining when the reduced-feature-set network stack is not capable of responding to one or more of the data packets received from the network interface.
- An increased-feature-set network stack is then implemented to respond to the one or more data packets to which the reduced-feature-set network stack is not capable of responding.
- Another method is described for receiving a wake notification associated with a data packet, determining a subset of hardware resources of a device that is capable of processing the data packet based on the wake notification, waking the subset of hardware resources from a low-power state to process the data packet, and returning the subset of hardware resources to the lower-power state after the data packet is processed.
- a System-on-Chip includes a power manager configured to execute a first set of code to implement the reduced-feature-set network stack for responding to data packets received via a network interface, determine when the reduced-feature-set network stack is not capable of responding to one or more of the data packets received via the network interface, and transition from execution of the first set of code to execution of a second set of code effective to enable the full-feature-set network stack to respond to the one or more data packets.
- FIG. 1 illustrates an operating environment in which aspects of low-power firmware can be implemented.
- FIG. 2 illustrates an example firmware architecture according to some aspects of low-power firmware.
- FIG. 3 illustrates example power states implemented in accordance with aspects of low-power firmware.
- FIG. 4 illustrates an example method of low-power firmware in accordance with one or more aspects.
- FIG. 5 illustrates another example method of low-power firmware in accordance with one or more aspects.
- FIG. 6 illustrates an example method of transferring data packets to another firmware in accordance with one or more aspects.
- FIG. 7 illustrates various components of a System-on-Chip (SoC) that can implement aspects of low-power firmware.
- SoC System-on-Chip
- a conventional sleep state often powers down hardware resources to a point at which network functionality is lost, resulting in user confusion or frustration.
- a larger-than-necessary subset of hardware resources is left powered during the sleep state which results in additional power consumption.
- dedicated low-power hardware added to support network operation in the sleep state increases design complexity, takes up device space, and increases costs due to hardware fabrication.
- This disclosure describes apparatuses and techniques for low-power firmware, which enable a low-power firmware to operate over a subset of existing hardware resources associated with a system firmware.
- the low-power firmware implements, via the subset of hardware resources, a reduced-feature-set network stack capable of responding to network requests that do not traverse higher levels of a network stack. Responding to these lower-level network requests enables, at least in part, a network device in a low-power state to maintain a presence on a network to which the network device is attached.
- the low-power firmware passively filters network traffic to determine when packet processing via the higher levels of the network stack is necessary. When necessary, a transition can be made to the system firmware that implements an increased-feature-set network stack using additional hardware resources.
- the increased-feature-set network stack is capable of processing higher-level packets, yet consumes more power than the reduced-feature-set network stack.
- FIG. 1 illustrates an example operating environment 100 in which aspects of low-power firmware can be implemented.
- the example operating environment 100 includes host devices 102 , network devices 104 , and a network 106 .
- the host devices 102 are each capable of communicating, accessing, presenting, and/or processing various data, such as data accessed via network 106 .
- the host devices 102 include a smart-phone 108 , tablet computer 110 , and laptop computer 112 .
- other configurations of the host devices 102 are also contemplated, such as a desktop computer, server, mobile-internet device (MID), gaming console, mobile hotspot, networked media player, and so on.
- MID mobile-internet device
- Each host device 102 includes processor(s) 114 (e.g., an application processor) and computer-readable storage media 116 (CRM 116 ).
- the processor 114 may include any suitable number and/or type of processing cores, which may be configured in any suitable manner.
- the CRM 116 may include any suitable type and/or combination of volatile memory and non-volatile memory (not shown), such as random-access memory (RAM), static random access memory (SRAM), dynamic random-access memory (DRAM), double-data-rate RAM (DDR), and the like.
- RAM random-access memory
- SRAM static random access memory
- DRAM dynamic random-access memory
- DDR double-data-rate RAM
- the CRM 116 includes host device data 118 , which may comprise operating systems, applications, or user data (not shown) of host device 102 .
- the operating systems or applications of the host device 102 may be stored by, or executed from, the volatile memory or the non-volatile memory of CRM 116 .
- the operating systems and/or applications of host device 102 can be embodied as firmware or other processor-executable instructions, binaries, or code.
- the operating systems and applications of the host device 102 are executable by the processor 114 to provide a user interface, various functionalities, and/or services of host device 102 .
- the host devices 102 also include network interface(s) 120 which provide connectivity to the network 106 and the network devices 104 connected therewith. Data communicated over the network interfaces 120 may be packetized or framed in accordance with a communication protocol or standard by which a host device 102 is communicating.
- the network interfaces 120 may include wired interfaces, such as Ethernet, serial, universal serial bus (USB) or fiber optic interfaces for communication over a local area network (LAN), intranet, or the Internet. Alternately or additionally, the network interfaces 120 may also include wireless interfaces that facilitate communication over wireless networks, such as wireless LANs, cellular networks, or wireless personal-area-networks (WPANs).
- WPANs wireless personal-area-networks
- the network interfaces 120 enable the host devices 102 to communicate with the network devices 104 through the network 106 .
- the network 106 may include a wired network, a wireless network, or any suitable combination thereof.
- the network 106 is configured as a LAN, WLAN, intranet, virtual private network (VPN), WPAN, and/or the like.
- the network 106 may be implemented using any suitable networking components, such as routers, network switches, access points, firewalls, and so on.
- the network devices 104 provide services or resources to the host devices 102 through the network 106 .
- the network devices 104 include a multi-function printer 122 and a network attached storage drive (NAS) 124 .
- NAS network attached storage drive
- other configurations of the network devices 104 are also contemplated, such as a scanner, camera, webcam, media server, file server, and so on.
- the network devices 104 provide a variety of services or resources, such as printing, scanning, faxing, data storage, media streaming, imaging, and/or the like.
- Each network device 104 includes microprocessor(s) 126 and device computer-readable storage media 128 (device CRM 128 ).
- the microprocessors 126 may include any suitable number and/or type of processing cores, which can be configured in any suitable manner.
- the microprocessors 126 may be configured as a high performance dual core application processor and a lower performance single core side processor.
- an operating frequency and/or voltage of a microprocessor 126 may be adjustable to vary performance or power consumption of the microprocessor 126 . For example, in a low-power state, the operating frequency of the microprocessor 126 can be reduced to conserve power.
- the Device CRM 128 includes volatile memory 130 and non-volatile memory 132 .
- the volatile memory 130 includes static random access memory 134 (SRAM 134 ) and synchronous dynamic random-access memory 136 (DRAM 136 ).
- Various code or instructions of the network device 104 can be stored by, and executed from, the SRAM 134 or DRAM 136 .
- the volatile memory 130 may include other suitable types of memory, such as random-access memory (RAM), asynchronous dynamic RAM, double-data-rate RAM (DDR), and the like.
- the non-volatile memory 132 includes flash memory 138 , which may store data of a network device 104 persistently when powered-down.
- the non-volatile memory 132 may include other suitable types of memory such as non-volatile RAM (NVRAM), read-only memory (ROM), one-time programmable (OTP) memory, and the like.
- NVRAM non-volatile RAM
- ROM read-only memory
- OTP one-time programmable
- the device CRM 128 also includes device firmware 140 and a power state manager 142 (power manager 142 ).
- the device firmware 140 may be embodied as one or more sets of firmware, or other processor-executable instructions, binaries, or code.
- the device firmware 140 includes system firmware 144 and low-power firmware 146 .
- the system firmware 144 is implemented to manage the network device 104 in a partial wake state or full-on state, such as when providing resources or services to a host device 102 .
- the low-power firmware 146 is implemented to manage a subset of hardware resources of network device 104 during low-power states, such as sleep or idle states of the network device 104 .
- the implementation and use of the system firmware 144 and the low-power firmware 146 varies and is described below.
- the power manager 142 is implemented to manage the execution of the device firmware 140 .
- the power manager 142 manages execution of the system firmware 144 and low-power firmware 146 .
- various functionalities of the power manager 142 are implemented by the system firmware 144 and low-power firmware 146 . These functionalities enable power manager 142 to transition execution of the system firmware 144 to, or from, execution of the low-power firmware 146 .
- the implementation and use of the power manager 142 varies and is described below.
- the network device 104 also includes a wired network interface 148 and/or a wireless network interface 150 for communicating via the network 106 .
- the wired network interface 148 may be configured as any suitable type of interface, such as an Ethernet, serial, universal serial bus (USB), or fiber optic interface.
- the wireless network interface 150 may also be configured as any suitable type of interface, such as a WLAN, WPAN, or cellular network interface.
- the network device 104 communicates data via the wired network interface 148 or the wireless network interface 150 to maintain a presence on network 106 . Data communicated over the wired network interface 148 or the wireless network interface 150 may be packetized or framed in accordance with a communication protocol or standard by which the network device 104 is communicating.
- FIG. 2 illustrates an example firmware architecture 200 in which aspects of low-power firmware can be implemented.
- the example firmware architecture 200 includes low-power firmware 202 and system firmware 204 , such as the low-power firmware 146 and system firmware 144 described with reference to FIG. 1 .
- the low-power firmware 202 and the system firmware 204 are implemented to manage hardware 206 of a network device.
- the low-power firmware 202 and the system firmware 204 can leverage resources of the hardware 206 to enable a network device to maintain a network presence across various power states.
- the hardware 206 of the network device includes network filters 208 (filters 208 ) and network hardware resources 210 (hardware resources 210 ) of one or more network interfaces (e.g., Ethernet, WLAN, or WPAN).
- the filters 208 can be configured to use the most precise filtering available, such as destination media access control (MAC) address filtering or hash filtering. Alternately or additionally, hardware checksum offloading can be leveraged by the filters 208 to reduce computational load on a processor when the low-power firmware 202 is executing.
- MAC media access control
- the hardware 206 may also include other hardware components or subsystems of the network device, such as power management, input/output logic, displays, motor control systems, and the like.
- the filters 208 and hardware resources 210 are configured to communicate data via a network interface, such as the wired network interface 148 or the wireless network interface 150 described with reference to FIG. 1 .
- the low-power firmware 202 is implemented to provide a network driver subset 212 , network application-layer filter logic 214 (filter logic 214 ), and a micro-network stack 216 , which is a reduced-feature-set network stack.
- the low-power firmware 202 can be executed using low power hardware, such a side processor executing code from a small SRAM memory area (e.g., 128 KB or less). This can be effective to permit a main processor and other memories of a network device to be powered down while the low-power firmware 202 executes. Thus, execution of the low-power firmware 202 in a low-power or sleep state can reduce power consumption of the network device.
- execution of the low-power firmware 202 enables the network device to actively respond to at least some network requests effective to maintain a network presence.
- the low-power firmware 202 operates over a subset of the hardware resources 210 via the network driver subset 212 .
- Other hardware resources 210 not in this subset can be powered down or reconfigured to conserve power.
- a data rate of a network interface may be reduced to reduce data flow or offload data buffering for other network entities.
- an Ethernet interface may be set to 10 Baseband T to force a network switch to buffer data packets received from higher speed host devices. This can be effective to enable the low-power firmware 202 to utilize smaller memory areas for buffering received data packets.
- the network driver subset 212 transmits data frames or packets to a frame filter 218 and Internet-protocol (IP) layer 220 of the micro-network stack 216 for processing or filtering.
- IP Internet-protocol
- the micro-network stack 216 is configured to respond to packet types that do not traverse upper layers of a network stack, such as Internet control message protocol (ICMP) messages, IP version 4 (IPv4) address resolution protocol (ARP) messages, or IP version 6 (IPv6) neighbor discovery (ND) requests.
- ICMP Internet control message protocol
- IPv4 IP version 4
- ARP IP version 6
- ND IP version 6
- the frame filter 218 and IP packet filter 222 can analyze a frame header and contents of the packet, respectively, to identify potential “wake trigger packets” which can then be forwarded to the filter logic 214 .
- the filter logic 214 can then discard or queue the other packets for delivery to upper layers in order to maintain network presence and/or appear responsive to host devices.
- the micro-network stack 216 reduces dependencies on hardware resources allowing the network device to operate within a reduced feature set and conserve power.
- the micro-network stack 216 includes an ICMP module 224 (ICMP 224 ), an IPv4 ARP module 226 (IPv4 ARP 226 ), and an IPv6 ND module 228 (IPv6 ND 228 ), each of which is configured to respond to corresponding Internet-layer or network-layer data packets received from IP layer 220 .
- the ICMP module 224 is implemented to respond to ICMP packets or requests received via the network driver subset 212 . Accordingly, the micro-network stack 216 enables the network device to appear network aware and responsive to other network entities communicating via these lower layer network protocols.
- the filter logic 214 is implemented to filter packets that are not processed or responded to by the micro-network stack 216 .
- the filter logic 214 is configured to determine when these other packets necessitate a response from, or processing by, a higher layer of a network stack. For example, in the context of FIG. 1 , filter logic 214 can determine when to respond to network traffic such that a network device 104 appears present and responsive to the host devices 102 associated with the network 106 . When an increased-feature-set network stack is necessary for packet processing, a transition to the system firmware 204 can be initiated via a low-power manager 230 . If filter logic 214 determines that an incoming packet requires no further processing or response in order for the network device to appear present and responsive to the host devices 102 , it may discard the packet without further processing, response, or other action.
- the low-power manager 230 can coordinate an initiation of the system firmware 204 with a system-power manager 232 . For example, if a side processor of the network device is executing the low-power firmware 202 from SRAM, the low-power manager 230 can initiate execution of the system firmware 204 from DRAM by a main processor of the network device. The low-power manager 230 can then transition data packet processing (i.e., network responsibilities) to the system-power manager 232 of the system firmware 204 . Alternately or additionally, the low-power manager 230 and system-power manager 232 may be implemented as a combined power manager, such as the power manager 142 as described with reference to FIG. 1 .
- the low-power manager 230 transitions an incoming network packet buffer chain to the system firmware 204 for processing. After initiating a wake notification to the system firmware 204 , the low-power manager 230 causes the low-power firmware 202 to continue queuing received packets into a memory, such as an area of SRAM configured as receive buffers. The low-power manager 230 then transfers or copies the queued data packets from the memory to another memory associated with the system firmware 204 , such as a portion of DRAM configured as a receiving descriptor ring of a system network driver. Responsibility of interrupt service routine (ISR) processing is then transferred from the low-power manager 230 to the system-power manager 232 of the system firmware 204 . The low-power manager 230 then communicates information to the system firmware 204 describing reasons for initiating the wake notification, which can be useful to process the data packets transferred from the low-power firmware 202 .
- ISR interrupt service routine
- the system firmware 204 is implemented to provide a network driver 234 , network applications 236 , and a network stack 238 , which is a full-feature-set network stack.
- the system firmware 204 can be executed using primary hardware, such as a main processor of a network device executing code from DRAM. This can be effective to implement a full-feature-set network stack and network applications while the system firmware 204 executes.
- the network driver 234 and network stack 238 are implemented in a kernel space 240 of the system firmware 204 , while the network applications 236 are implemented in a user space 242 of the system firmware 204 .
- the system firmware 204 operates over the hardware resources 210 via the network driver 234 .
- the system firmware 204 may operate over one or more subsets of the hardware resources 210 , up to and including all of the hardware resources 210 .
- the system firmware 204 can implement an increased-feature-set network stack, which is capable of handling some data packets that traverse higher levels of a network stack, by operating over one or more subsets of the hardware resources 210 . In the context of this example, other subsets of the hardware resources 210 can be powered down to conserve power.
- the network driver 234 communicates data frames or packets to the network stack 238 for processing.
- the network stack 238 is configured to process and/or respond to packet types that traverse upper layers of a network stack, such as transport layer or application layer data packets. These packet types may include data frames or packets to which the micro-network stack 216 is not capable of responding.
- system-power manager 232 configures the network stack 238 based on wake rules 244 that describe subsets of driver resources or hardware resources necessary for processing particular packets or requests.
- the wake rules 244 may be protocol or application specific rules that the system-power manager 232 applies when execution of the system firmware 204 is initiated. Alternately or additionally, the wake rules 244 may include hooks into the user space 242 via custom input/output control (IOCTLS) or other interfaces (e.g., Linux Sysfs) to determine when processing of the packets is complete.
- IOCTLS custom input/output control
- FIG. 3 illustrates example power states 300 implemented in accordance with various aspects of low-power firmware.
- the example power states include a sleep state 302 , a partial wake state 304 , and a full-on state 306 .
- a network device may operate in these power states by executing a low-power firmware or a system firmware, such as the low-power firmware 202 and system firmware 204 described with reference to FIG. 2 .
- the network device While operating in the sleep state 302 , the network device implements a low-power firmware 308 , which may be similar to or the same as low-power firmware 202 described with reference to FIG. 2 .
- Execution of low-power firmware 308 consumes a least amount of power while enabling the network device to maintain a network presence.
- maintaining a network presence may include responding to requests of network peers or host devices.
- the low-power firmware 308 While operating in the sleep state 302 , the low-power firmware 308 responds to some types of network packets while filtering remaining packets to determine if further processing by higher network layers is necessary. For example, with reference to FIG. 2 , the micro-network stack 216 may respond to ICMP messages, IPv4 ARP messages, or IPv6 ND requests while filter logic 214 filters the remaining packets. The filter logic 214 can indicate when further processing of the remaining packets is necessary by resources not available in the sleep state 302 . When additional resources are needed for packet processing, the low-power firmware initiates a wake notification 310 to the system firmware.
- the network device can enter the partial wake state 304 or the full-on state 306 depending on an amount of resources needed for packet processing.
- the partial wake state 304 or the full-on state 306 are both implemented by the system firmware 312 , which may be similar to or the same as system firmware 204 described with reference to FIG. 2 . Execution of system firmware 312 enables access to additional resources that are not available under the low-power firmware.
- a power manager of the network device can be implemented to determine, based on the wake notification 310 , whether to enter the partial wake state 304 or the full-on state 306 . For example, the power manager may apply a set of wake rules to the wake notification to determine whether to enter the partial wake state 304 or the full-on state 306 .
- the network device When the remaining packets can be processed by resources available in the partial wake state 304 , the network device enters the partial wake state 304 .
- the partial wake state 304 consumes more power than the sleep state 302 , yet less power than the full-on state 306 .
- resources needed to process the packets are powered and other resources are left in a low-power state or unpowered. For example, a subset of hardware resources may be powered-on based on applicable wake rules while transitioning from the sleep state 302 to the partial wake state 304 .
- This subset of hardware resources may enable an increased-feature-set network stack having more packet processing capabilities than a reduced-feature-set network stack implemented by the low-power firmware.
- the packets can then be processed in the partial wake state 304 before returning to the sleep state 302 upon task completion 314 .
- the partial wake state 304 may be referred to as a quick wake state because a minimal subset of hardware resources are powered for a short time to process the remaining packets before returning to the sleep state 302 .
- the network device When the remaining packets cannot be processed by resources available in the partial wake state 304 , such as when the remaining packets are part of a complex task 316 , the network device enters the full-on state 306 .
- the full-on state 306 further increases processing capabilities of a network device, yet consumes more power than either the sleep state 302 or the partial wake state 304 .
- All resources of the system firmware are available in the full-on state 306 for processing packets or complex tasks, such as print jobs, file serving, data streaming, and the like.
- all of the hardware resources of the network device may be powered-on when none of the wake rules are applicable while transitioning from sleep state 302 to the full-on state 306 .
- These resources may enable a full-feature-set network stack having more packet processing capabilities than either the increased-feature-set network stack or the reduced-feature-set network stack.
- the remaining packets can then be processed in the full-on state 306 before returning to the sleep state 302 after an inactivity timeout 318 .
- the inactivity timeout 318 may be user-configurable or preempted by user interaction with a hardware switch configured to initiate a transition back to the sleep state 302 .
- the network device can maintain a network presence while using only a minimal set of resources.
- transitioning between these power states includes periodic waking of the system firmware 312 , a duty cycle of time awake relative to time sleeping can be kept low enough to reduce power consumption below conventional low-power thresholds.
- Power Partial-Wake is an amount of power consumed in the partial wake state 304
- Power Sleep is an amount of power consumed in the sleep state 302
- DutyCycle is an amount of time the network device spends in the partial wake state 304 relative to an amount of time spent in the sleep state 302 .
- a desired low-power consumption goal is 1 ⁇ 2 Watts
- power consumed in a baseline sleep state is 1 ⁇ 4Watts
- power consumed in a quick wake state is 13/12 Watts.
- Solving Equation 1 for a desired duty cycle would result in a duty cycle of 0.30, or 30%.
- the desired power consumption can be achieved as long as the network device was in the partial wake state 304 no more than 3 out of every 10 seconds.
- FIG. 4 illustrates an example method 400 of low-power firmware in accordance with one or more aspects.
- the following discussion describes techniques for enabling low-power firmware in network devices. These techniques can be implemented using the previously described environment or entities, such as the power manager 142 of FIG. 1 , low-power manager 230 of FIG. 2 , or system-power manager 232 of FIG. 2 embodied in a network device. These techniques include methods illustrated in FIGS. 4 , 5 , and 6 , each of which is shown as a set of operations performed by one or more entities. These methods are not necessarily limited to the orders shown for performing the operations. Further, these methods may be used in conjunction with one another, in whole or in part, whether performed by the same entity, separate entities, or any combination thereof.
- data packets are received from a network interface via a reduced-feature-set network stack.
- the reduced-feature-set network stack is implemented by executing a first set of code on a first subset of hardware resources of a network device.
- the first set of code may be a low-power firmware executed on low-power hardware, such as being executed from a small SRAM memory area by a side processor of the network device.
- some of the data packets are responded to or processed via the reduced-feature-network stack.
- These data packets are those to which the reduced-feature-set network stack is capable of responding.
- the data packets may be associated with network protocols or requests that do not traverse upper layers of a network stack.
- These data packets may include a variety of data packets or requests, such as ICMP messages, IPv4 ARP messages, or IPv6 ND requests.
- the filter logic 214 may filter data packets that the micro-network stack 216 is unable to process. The filter logic 214 can then signal the low-power manager 230 to initiate the system firmware 204 via system-power manager 232 to process the data packets which the micro-network stack 216 was unable to process.
- an increased-feature-set network stack is implemented to respond to the other data packets.
- the increased-feature-set network stack is implemented by executing a second set of code on a second subset of hardware resources of the network device.
- the second set of code may be a system firmware executed on non-low-power hardware, such as being executed from a DRAM memory area by a main processor of the network device.
- a full-feature-set network stack may be implemented when the increased-feature-set network stack is unable to process the other data packets.
- the reduced-feature-set network stack is implemented to resume receiving the data packets from the network interface.
- Implementing the reduced-feature-set network stack may include transitioning execution of the system firmware to execution of the low-power firmware.
- a transition between the firmware is coordinated by a system-power manager of the system firmware and a low-power manager of the low-power firmware.
- FIG. 5 illustrates another example method 500 of low-power firmware in accordance with one or more aspects. Operations of method 500 may be performed by various entities described with reference to FIGS. 1-3 , such as the system-power manager 232 of FIG. 2 .
- a wake notification is received that is associated with a data packet received via a reduced-feature-set network stack of a network device.
- the wake notification is received while the network device is in a sleep state or low-power state.
- the data packet may be a transport layer or application layer data packet that the reduced-feature-set network stack is not capable of processing.
- the wake notification is received from another instance of firmware, such as a low-power firmware or low-power manager associated with the other instance of the firmware.
- a subset of hardware resources capable of processing the data packet is determined.
- the subset of hardware resources may be selected from multiple subsets of hardware resources associated with a full-feature-set network stack of the network device.
- each of the multiple subsets of hardware resources corresponds to a respective network interface or network application.
- determining the subset of hardware resources may be based on the wake notification or information associated with the wake notification.
- the wake notification may indicate a network application with which the data packet is associated. Based on this indication, it may be determined that a subset of hardware resources associated with the particular network application is capable of processing the data packet.
- all of the hardware resources may be activated if selection of a particular subset of hardware resources is not optimal.
- the subset of hardware resources capable of processing the data packet is activated from a low-power state. Activating the subset of hardware resources may be effective to cause the network device to transition from the sleep state to a partial wake state. While in the partial wake state, an increased-feature-set network stack is implemented to process the data packet.
- additional hardware resources can be activated to process the data packet. Activating the additional hardware resources may be effective to cause the device to transition from the partial wake state to a full-on state, in which a full-feature-set network stack is implemented. While in the full-on state, the network device consumes more power than while in the partial wake state, yet may process more complex packets, job requests, and the like.
- the subset of hardware resources is returned to the low-power state after the data packet is processed. Returning the resources to the low-power state may be responsive to completing processing of the packet or an inactivity timeout. In some aspects, returning the subset of hardware resources to the low-power state is effective to enable the network device to re-enter the sleep state or low-power state from the partial wake state or full-on state. In some aspects, transitioning back to the sleep state or low-power state is coordinated between a low-power manager and a system-power manager of the network device.
- FIG. 6 illustrates an example method of transferring data packets to another firmware in accordance with one or more aspects. Operations of method 600 may be performed by various entities described with reference to FIGS. 1-3 , such as the low-power manager 230 of FIG. 2 .
- a notification is transmitted to another firmware of a network device effective to initiate execution of the other firmware.
- the notification may be transmitted responsive to determining that a reduced-feature-set network stack is unable to process or respond to a data packet.
- the notification is transmitted or transferred from an instance of a network device's low-power firmware to an instance of the network device's system firmware.
- data packets received from a network interface are queued into a first memory.
- the data packets may be data packets that traverse higher layers of a network stack, such as protocol layers or application layers.
- the first memory is an area of SRAM configured as a receive buffer. Alternately or additionally, the low-power firmware may execute from another area of the SRAM.
- a notification is received that indicates a second memory is initialized.
- the second memory is memory associated with the system firmware of the network device, such as DRAM or DDR.
- the low-power firmware continues to queue the data packets until the DRAM or DDR is initialized form a low-power or sleep state.
- the queued data packets are transferred from the first memory to the second memory.
- the low-power firmware copies the queued data packets from the first memory to the second memory.
- a low-power manager of the low-power firmware can copy the queued data packets from the SRAM into DRAM that is configured as a receiving descriptor ring of a system network driver.
- information useful to process the queued data packets in the second memory is transmitted to the other firmware.
- This information may include a description of the queued data packets that can be leveraged to determine which hardware resources are useful to process said data packets.
- responsibility of interrupt service routine (ISR) processing is transferred to the other firmware. Once these operations are complete, the other firmware can initiate a partial wake state or full-on state in which the queued data packets are processed.
- FIG. 7 illustrates a System-on-Chip (SoC) 700 , which can implement various aspects of low-power firmware.
- SoC can be implemented in any suitable device, such as a video game console, IP-enabled television, smart-phone, desktop computer, laptop computer, access point, wireless router, cellular broadband router, tablet computer, server, network-enabled printer, set-top box, printer, scanner, camera, picture frame, home appliance, thermostat, home automation device, and/or any other type of electronic device.
- components of the SoC 700 can be implemented as various other electronic devices, such as an application processor, baseband processor, application-specific integrated circuit (ASIC), field programmable gate array (FPGA), and so on.
- ASIC application-specific integrated circuit
- FPGA field programmable gate array
- the SoC 700 can be integrated with electronic circuitry, a microprocessor, memory, input-output (I/O) logic control, communication interfaces, other hardware, firmware, and/or software needed to provide functionalities of a device, such as any of the above-listed devices.
- the SoC 700 can also include an integrated data bus or crossbar (not shown) that couples the various components of the SoC for data communication between the components.
- a network device that includes the SoC 700 can also be implemented with many combinations of differing components. In some cases, these differing components may be configured to implement concepts described herein over various network or data interfaces.
- the SoC 700 includes various components such as an input-output (I/O) logic control 702 (e.g., to include electronic circuitry) and microprocessor(s) 704 .
- the SoC 700 also includes a memory 706 , which can be any type and/or combination of RAM, SRAM, DRAM, low-latency nonvolatile memory, ROM, one-time programmable (OTP) memory, and/or other suitable electronic data storage.
- the SoC 700 may comprise a data interface (not shown) for accessing additional or expandable off-chip memory, such as external SRAM, DRAM, or flash memory.
- the SoC 700 can also include various firmware and/or software, such as operating system(s) 708 , system firmware 710 , and low-power firmware 712 , such as the low-power firmware 146 and system firmware 144 as described with reference to FIG. 1 .
- the operating systems 708 , system firmware 710 , and low-power firmware 712 can be computer-executable instructions maintained by the memory 706 and executed by the microprocessors 704 .
- the SoC 700 may also include other various communication interfaces and components embodied as hardware, firmware, software, or any suitable combination thereof.
- the SoC 700 also includes a power manager 714 , wired network interface 716 , and wireless network interface 718 (any of which may be embodied as disparate or combined components), such as those described with reference to FIG. 1 .
- the system firmware 710 and low-power firmware 712 may each include code or instructions for implementing, in whole or part, the power manager 714 . Examples of these various components, functions, and/or entities, and their corresponding functionality, are described with reference to the respective components of the environment 100 and various configurations as illustrated by FIGS. 2 and 3 .
- the power manager 714 can be implemented as computer-executable instructions maintained by the memory 706 and executed by the microprocessor 704 to implement various embodiments and/or features described herein.
- the power manager 714 may also be provided integral with other entities of the SoC 700 , such as integrated a controller associated with various network interfaces or another suitable software, firmware, or hardware component within SoC 700 .
- the power manager 714 and the other components can be implemented as hardware, firmware, fixed logic circuitry, or any combination thereof that is implemented in connection with the network interfaces and/or other signal processing and control circuits of the SoC 700 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
Abstract
Description
PowerAverage=(PowerPartial-Wake×DutyCycle)+(PowerSleep×(1−DutyCycle)) Equation 1. Average Power Consumption
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/738,247 US9182808B1 (en) | 2012-01-12 | 2013-01-10 | Low-power network stacks and driver subsets |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261586069P | 2012-01-12 | 2012-01-12 | |
US13/738,247 US9182808B1 (en) | 2012-01-12 | 2013-01-10 | Low-power network stacks and driver subsets |
Publications (1)
Publication Number | Publication Date |
---|---|
US9182808B1 true US9182808B1 (en) | 2015-11-10 |
Family
ID=54363444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/738,247 Active 2033-12-26 US9182808B1 (en) | 2012-01-12 | 2013-01-10 | Low-power network stacks and driver subsets |
Country Status (1)
Country | Link |
---|---|
US (1) | US9182808B1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160124493A1 (en) * | 2014-10-30 | 2016-05-05 | Acer Incorporated | Enhanced wakeup mode |
JP2017013367A (en) * | 2015-07-01 | 2017-01-19 | コニカミノルタ株式会社 | Image forming device, network system, and power source control program |
JP2017077721A (en) * | 2015-10-19 | 2017-04-27 | 株式会社リコー | Information processing unit and method, and information processing system |
JP2017124574A (en) * | 2016-01-15 | 2017-07-20 | 株式会社リコー | Information processing apparatus, method for controlling information processing apparatus, and program |
US9722949B2 (en) | 2015-02-27 | 2017-08-01 | Google Inc. | Reducing power utilization by transferring communication sessions from a main processor |
US20190227961A1 (en) * | 2019-03-29 | 2019-07-25 | Intel Corporation | Non-volatile memory out-of-band management interface for all host processor power states |
JP2020069652A (en) * | 2018-10-29 | 2020-05-07 | 株式会社沖データ | Image forming apparatus |
WO2020150137A1 (en) * | 2019-01-14 | 2020-07-23 | Sigmasense, Llc. | Channel allocation among low voltage drive circuits |
JP2021035047A (en) * | 2019-08-19 | 2021-03-01 | ゼロックス コーポレイションXerox Corporation | Apparatus and method for reducing energy use in multi-function device |
JP2022526056A (en) * | 2020-03-04 | 2022-05-23 | シトリックス・システムズ・インコーポレイテッド | Provisioning service (PVS) cloud, streaming using read cache |
US20220201070A1 (en) * | 2020-12-22 | 2022-06-23 | Texas Instruments Incorporated | Distributed Session Owner Across Multiple Entities |
US20230341918A1 (en) * | 2020-10-23 | 2023-10-26 | Hewlett-Packard Development Company, L.P. | Partial wake states |
US20240022448A1 (en) * | 2022-07-14 | 2024-01-18 | Sony Group Corporation | Energy efficient method for home networking |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546538A (en) * | 1993-12-14 | 1996-08-13 | Intel Corporation | System for processing handwriting written by user of portable computer by server or processing by the computer when the computer no longer communicate with server |
US6289464B1 (en) * | 1998-01-07 | 2001-09-11 | Microsoft Corporation | Receiving wireless information on a mobile device with reduced power consumption |
US6631469B1 (en) * | 2000-07-17 | 2003-10-07 | Intel Corporation | Method and apparatus for periodic low power data exchange |
US20030210658A1 (en) * | 2002-05-08 | 2003-11-13 | Microsoft Corporation | Method and system for managing power consumption of a network interface module in a wireless computing device |
US7343484B2 (en) * | 2002-03-28 | 2008-03-11 | O2Micro International Limited | Personal computer integrated with personal digital assistant |
US7424632B2 (en) * | 2004-02-13 | 2008-09-09 | Microsoft Corporation | Systems and methods that facilitate state machine power and wake state management |
US8707406B2 (en) * | 2002-07-26 | 2014-04-22 | Sierra Wireless, Inc. | Always-on virtual private network access |
-
2013
- 2013-01-10 US US13/738,247 patent/US9182808B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546538A (en) * | 1993-12-14 | 1996-08-13 | Intel Corporation | System for processing handwriting written by user of portable computer by server or processing by the computer when the computer no longer communicate with server |
US6289464B1 (en) * | 1998-01-07 | 2001-09-11 | Microsoft Corporation | Receiving wireless information on a mobile device with reduced power consumption |
US6631469B1 (en) * | 2000-07-17 | 2003-10-07 | Intel Corporation | Method and apparatus for periodic low power data exchange |
US7343484B2 (en) * | 2002-03-28 | 2008-03-11 | O2Micro International Limited | Personal computer integrated with personal digital assistant |
US20030210658A1 (en) * | 2002-05-08 | 2003-11-13 | Microsoft Corporation | Method and system for managing power consumption of a network interface module in a wireless computing device |
US8707406B2 (en) * | 2002-07-26 | 2014-04-22 | Sierra Wireless, Inc. | Always-on virtual private network access |
US7424632B2 (en) * | 2004-02-13 | 2008-09-09 | Microsoft Corporation | Systems and methods that facilitate state machine power and wake state management |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710286B2 (en) * | 2014-10-30 | 2017-07-18 | Acer Incorporated | Enhanced wakeup mode |
US20160124493A1 (en) * | 2014-10-30 | 2016-05-05 | Acer Incorporated | Enhanced wakeup mode |
US9722949B2 (en) | 2015-02-27 | 2017-08-01 | Google Inc. | Reducing power utilization by transferring communication sessions from a main processor |
JP2017013367A (en) * | 2015-07-01 | 2017-01-19 | コニカミノルタ株式会社 | Image forming device, network system, and power source control program |
JP2017077721A (en) * | 2015-10-19 | 2017-04-27 | 株式会社リコー | Information processing unit and method, and information processing system |
JP2017124574A (en) * | 2016-01-15 | 2017-07-20 | 株式会社リコー | Information processing apparatus, method for controlling information processing apparatus, and program |
JP2020069652A (en) * | 2018-10-29 | 2020-05-07 | 株式会社沖データ | Image forming apparatus |
US11580045B2 (en) | 2019-01-14 | 2023-02-14 | Sigmasense, Llc. | Multiple communication channel allocation for low voltage drive circuits |
US10831690B2 (en) | 2019-01-14 | 2020-11-10 | Sigmasense, Llc. | Channel allocation among low voltage drive circuits |
WO2020150137A1 (en) * | 2019-01-14 | 2020-07-23 | Sigmasense, Llc. | Channel allocation among low voltage drive circuits |
US11169948B2 (en) | 2019-01-14 | 2021-11-09 | Sigmasense, Llc. | Channel allocation among low voltage drive circuits |
US11954057B2 (en) | 2019-01-14 | 2024-04-09 | Sigmasense, Llc. | Data conveyance and communication for three or more LVCD enabled devices |
US11868298B2 (en) | 2019-01-14 | 2024-01-09 | Sigmasense, Llc. | Data conveyance and communication scheme for two party low voltage drive circuit communication |
US20190227961A1 (en) * | 2019-03-29 | 2019-07-25 | Intel Corporation | Non-volatile memory out-of-band management interface for all host processor power states |
US10896142B2 (en) * | 2019-03-29 | 2021-01-19 | Intel Corporation | Non-volatile memory out-of-band management interface for all host processor power states |
JP2021035047A (en) * | 2019-08-19 | 2021-03-01 | ゼロックス コーポレイションXerox Corporation | Apparatus and method for reducing energy use in multi-function device |
JP2022526056A (en) * | 2020-03-04 | 2022-05-23 | シトリックス・システムズ・インコーポレイテッド | Provisioning service (PVS) cloud, streaming using read cache |
US20230341918A1 (en) * | 2020-10-23 | 2023-10-26 | Hewlett-Packard Development Company, L.P. | Partial wake states |
US20220201070A1 (en) * | 2020-12-22 | 2022-06-23 | Texas Instruments Incorporated | Distributed Session Owner Across Multiple Entities |
US12003586B2 (en) * | 2020-12-22 | 2024-06-04 | Texas Instruments Incorporated | Distributed session owner across multiple entities |
US20240022448A1 (en) * | 2022-07-14 | 2024-01-18 | Sony Group Corporation | Energy efficient method for home networking |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9182808B1 (en) | Low-power network stacks and driver subsets | |
US9223392B2 (en) | Reduced power state network processing | |
US8214676B2 (en) | Information processing apparatus, power mode control method, and power mode control program product | |
US8738938B2 (en) | Information processing apparatus, method for controlling the same, and storage medium | |
US8127162B2 (en) | Apparatus, method, and computer program product for processing information which includes a power-saving mode having a plurality of sub power modes | |
US8898493B2 (en) | Architecture to enable energy savings in networked computers | |
US9430016B2 (en) | Information processing apparatus capable of switching patterns to be compared with data received by network interface control method for information processing apparatus, and computer-readable storage medium | |
JP6192284B2 (en) | COMMUNICATION DEVICE AND ITS CONTROL METHOD | |
JP5704904B2 (en) | DATA PROCESSING DEVICE, DATA PROCESSING DEVICE CONTROL METHOD, AND PROGRAM | |
US9535485B2 (en) | Image processing apparatus, method for controlling the same and storage medium | |
US9444961B2 (en) | Image forming apparatus, method for controlling image forming apparatus, and program, for reduced power consumption | |
US8176348B2 (en) | Control device and information processing apparatus | |
JP5717398B2 (en) | COMMUNICATION DEVICE, ITS CONTROL METHOD, AND CONTROL PROGRAM | |
US9639138B2 (en) | Electronic device that ensures reduced unnecessary recovery | |
US10587428B2 (en) | Communication apparatus, method for controlling communication apparatus, and storage medium | |
JP5500215B2 (en) | Information processing apparatus, power mode control method, power mode control program, and recording medium | |
US10334521B2 (en) | Information processing device that controls wireless network function to reduce power consumption, and recording medium therefor | |
US10638420B2 (en) | Information processing apparatus selectively executable a normal mode or a sleep mode, and non-transitory computer readable recording medium that records an information processing program executable by an information processing apparatus selectively executable a normal mode or a sleep mode | |
JP6237469B2 (en) | Response device and network response method | |
JP6279033B2 (en) | Image forming apparatus and restoration method of image forming apparatus | |
JP6022440B2 (en) | Response device and network response method | |
JP5791564B2 (en) | Image forming apparatus | |
Eckermann | Low-power network standby in the home and office |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MARVELL SEMICONDUCTOR, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JONES, R. DOUGLAS;CLARK, GORDON R.;REEL/FRAME:029851/0580 Effective date: 20130109 Owner name: MARVELL INTERNATIONAL LTD., BERMUDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MARVELL SEMICONDUCTOR, INC.;REEL/FRAME:029851/0784 Effective date: 20130128 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: CAVIUM INTERNATIONAL, CAYMAN ISLANDS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MARVELL INTERNATIONAL LTD.;REEL/FRAME:052918/0001 Effective date: 20191231 |
|
AS | Assignment |
Owner name: MARVELL ASIA PTE, LTD., SINGAPORE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CAVIUM INTERNATIONAL;REEL/FRAME:053475/0001 Effective date: 20191231 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |