Backup power management for computing systems

Various techniques for managing power backup for computing devices are disclosed herein. In one embodiment, a method includes receiving data representing a backup capacity of one or more backup power units and data representing a backup power profile of one or more processing units sharing the one or more backup power units. A portion of the backup capacity may then be assigned to each of the one or more processing units based at least in part on both the received data representing the backup capacity of the one or more backup power units and the received data representing the profile of the one or more processing units.

BACKGROUND

Modern computing systems can include multiple servers, input/output units, routers, switches, and other processing units supported by a utility infrastructure. The utility infrastructure can include transformers, rectifiers, voltage regulators, circuit breakers, substations, power distribution units, fans, cooling towers, and/or other electrical/mechanical components. For system reliability, the utility infrastructure can also include uninterrupted power supplies, batteries, generators, auxiliary electrical lines, and/or other backup power units.

SUMMARY

In certain computing systems, multiple servers, input/output units, routers, switches, and/or other types of processing units may share a backup power system having a pool of uninterrupted power supplies, batteries, generators, auxiliary electrical lines, and/or other backup power units. The backup power system is typically configured to simultaneously power all of the processing units during a power failure and/or in response to some other system events. Thus, the multiple processing units do not have a direct connection with or an awareness of a particular one or more of the backup power units. As a result, the processing units may not be configured to perform task prioritization, processor speed modifications, power cycling, and/or other operational customizations based on one or more characteristics and/or conditions of the shared backup power units.

Several embodiments of the present technology can address at least some of the foregoing difficulties by assigning a portion of the backup capacity of the backup power system to individual processing units. Power consumption of the individual processing units from the pool of backup power units can then be controlled based on the assigned portion of the total backup capacity. The individual processing units are each associated with a “virtual” backup power unit having the assigned portion of the total backup capacity. Based on such assignments, the individual processing units may perform various operational customizations to improve computing performance, increase power efficiencies, or lower capital investments over conventional computing systems.

DETAILED DESCRIPTION

Certain embodiments of systems, devices, components, modules, routines, and processes for backup power management are described below. In the following description, example software codes, values, and other specific details are included to provide a thorough understanding of certain embodiments of the present technology. A person skilled in the relevant art will also understand that the technology may have additional embodiments. The technology may also be practiced without several of the details of the embodiments described below with reference toFIGS. 1A-5.

As used herein, the term “backup power unit” generally refers to an electrical apparatus that provides electrical power to a load when a main power source of the load is unavailable. Examples of backup power units can include batteries, uninterruptible power supplies, generators (e.g., diesel, natural gas, wave, or wind generators), and auxiliary electrical lines. A plurality of backup power units may be pooled (e.g., electrically connected in series and/or in parallel) as a backup power system. An aggregate, overall, or total backup capacity (referred to herein as “backup capacity”) of the backup power system may be defined by a backup power rating (e.g., in kilowatts), a backup energy rating (e.g., in kilowatt-hours), a backup period (e.g., hours, minutes, or seconds), and/or other suitable parameters.

Also used herein, the term “processing unit” generally refers to an electronic apparatus configured to perform logic comparisons, arithmetic calculations, electronic communications, electronic input/output, and/or other functions. Examples of processing units can include computing systems (e.g., servers, computers, etc.), devices (e.g., logic processors, network routers, network switches, network interface cards, data storage devices, etc.), or other suitable types of electronic apparatus. A processing unit can have a backup power profile defined by at least one of a peak power consumption (e.g., in kilowatts), an average power consumption (e.g., in kilowatts), a backup energy requirement (e.g., in kilowatt-hours), a backup power duration (e.g., in hours, minutes, or seconds), and/or other suitable parameters.

A group of processing units may share a backup power system having a pool of various types of backup power units. Each of the processing units, however, typically does not have a direct connection with or even an awareness of one or more of the backup power units in the pool. Instead, the backup power system is configured to power all of the processing units simultaneously. As a result, the individual processing units may not be configured to perform task prioritization, processor speed modifications, power cycles, and/or other operational customizations based on one or more characteristics and/or conditions of the shared backup power units. Several embodiments of the present technology can address at least some of the foregoing difficulties by assigning a portion of the backup capacity of the pool of backup power units to the individual processing units. Thus, operational customizations of the individual processing units may be enabled, as discussed in more detail below with reference toFIGS. 1A-5.

FIG. 1Ais a schematic diagram illustrating a computing framework100having backup power management in accordance with embodiments of the present technology. As shown inFIG. 1A, the computing framework100can include a computing system101a, a utility infrastructure101bthat supports the computing system101a, and a backup power management controller114in communication with both the computing system101aand the utility infrastructure101b. Even though certain components of the computing framework100are shown inFIG. 1A, in other embodiments, the computing framework100may also include other suitable electrical/mechanical components in similar or different arrangements, an example of which is described below with reference toFIG. 4.

As shown inFIG. 1A, the computing system101acan include multiple processing units104contained in computer cabinets102(illustrated individually as first and second computer cabinets102aand102b, respectively) and coupled to a network108. The computer cabinets102can have any suitable shape and size to house the processing units104in racks and/or in other suitable arrangements. Though only two computer cabinets102are shown inFIG. 1A, in other embodiments, the computing system101acan include one, three, four, or any other suitable number of computer cabinets102and/or other types of housing components.

The network108can include a wired medium (e.g., twisted pair, coaxial, untwisted pair, or optic fiber), a wireless medium (e.g., terrestrial microwave, cellular systems, WI-FI, wireless LANs, Bluetooth, infrared, near field communication, ultra-wide band, or free space optics), or a combination of wired and wireless media. The network108may operate according to Ethernet, token ring, asynchronous transfer mode, and/or other suitable protocols. In further embodiments, the network108can also include routers, switches, modems, and/or other suitable computing/communications components in any suitable arrangements.

The processing units104can be configured to implement one or more computing applications, network communications, input/output capabilities, and/or other suitable functionalities. In certain embodiments, the processing units104can include web servers, application servers, database servers, and/or other suitable computing components. In other embodiments, the processing units can include routers, network switches, analog/digital input/output modules, modems, and/or other suitable electronic components.FIG. 1Ashows four processing units104in each computer cabinet102. In other embodiments, one, two, three, five, or any other suitable number of processing units104may be in each computing cabinet102.

In the illustrated embodiment, the utility infrastructure101bincludes a main power source107(e.g., an electrical grid) configured to provide power to the processing units104during normal operation. The utility infrastructure101balso includes a backup power system116configured to provide power to the processing units104when the main power source107is unavailable. Utility interfaces106(illustrated individually as first and second utility interfaces106aand106b, respectively) operatively couple the main power source107and/or the backup power system116to the processing units104. The components of the utility infrastructure101bshown inFIG. 1Aare examples for illustrating aspects of the present technology. In other embodiments, the utility infrastructure101bmay include HVAC systems, substations, and/or other components in other suitable arrangements.

As shown inFIG. 1A, the first and second utility interfaces106aand106bare associated with the first and second computer cabinets102aand102b, respectively. The utility interfaces106can be configured to convert, condition, distribute, and/or switch power, to monitor for electrical faults, or to otherwise interface with components of the utility infrastructure101b. For example, in one embodiment, the utility interfaces106can include a power distribution unit configured to receive power from the main power source107or the backup power system116and distribute power to the individual processing units104. In other embodiments, the utility interfaces106can include a power conversion unit (e.g., a transformer), a power conditioning unit (e.g., a rectifier, a filter, etc.), a power switching unit (e.g., an automatic transfer switch), a power protection unit (e.g., a surge protection circuit or a circuit breaker), and/or other suitable electrical/mechanical components that support operation of the processing units104.

The backup power system116can be configured to provide temporary and/or emergency backup power to the processing units104when the main power source107is unavailable. The backup power system116can include a pool of backup power units117. For example, in the illustrated embodiment, the backup power system116includes two uninterrupted power supplies118and a generator120coupled to both the first and second utility interfaces106aand106b. In other embodiments, the backup power system116may include additional and/or different components in other suitable arrangements.

During normal operation, the utility interfaces106receive electrical power from the main power source107and convert, condition, and/or distribute power to the individual processing units104in respective computer cabinets102. The utility interfaces106also monitor for and protect the processing units104from power surges, voltage fluctuation, and/or other undesirable power conditions. In response to a failure of the main power source107, the utility interfaces106can switch power supply to the backup power system116and provide power to the individual processing units104in the computer cabinets102. As a result, the processing units104may continue to operate for a period of time even when the main power source107is unavailable.

In conventional computer systems, the processing units104are typically not connected to or aware of the uninterrupted power supplies118or the generator120of the backup power system116. Instead, the backup power system116powers all of the processing units104simultaneously. Thus, the individual processing units104may lack backup power information to customize operations when the main power source107is unavailable. Thus, to achieve a target level of backup operating period, a large amount of backup capacity may be required with associated costs and maintenance requirements.

In certain embodiments of the present technology, the backup power management controller114can be configured to assign a portion of the backup capacity of the backup power system116to the individual processing units104as if the individual processing units104are connected to or associated with a “virtual” backup power unit having the assigned portion of the backup capacity. In the illustrated embodiments, the backup power management controller114resides on a standalone computing device. In other embodiments, the backup power management controller114can also include one of the processing units104or a software service running thereon. In further embodiments, the backup power management controller114can also be a component of the utility interfaces106or a chassis controller (not shown) residing on chassis in the computer cabinets102. By customizing operations of the processing units104based on corresponding assigned portions of the backup capacity, the total amount of the backup capacity in the utility infrastructure101bmay be reduced when compared to conventional techniques, as described in more detail below with reference toFIG. 1B.

FIG. 1Bis a block diagram showing software modules of certain components of the computing framework100inFIG. 1Ain accordance with embodiments of the present technology. As shown inFIG. 1B, the backup power management controller114is operatively coupled to the backup power system116, the processing unit104, and an optional database125(shown in phantom lines for clarity). The optional database125may reside locally, for example, in one of the processing units104shown inFIG. 1A, or may reside remotely and be accessible via a network (e.g., the network108). Only one processing unit104and associated software modules are shown in details inFIG. 1Bfor clarity purposes. Additional processing units104may include similar or different software modules as those illustrated inFIG. 1B.

InFIG. 1Band in other Figures herein, individual software modules, components, and routines may be a computer program, procedure, or process written as source code in C, C++, Java, and/or other suitable programming languages. The computer programs, procedures, or processes may be compiled into intermediate, object or machine code and presented for execution by a processor of a personal computer, a network server, a laptop computer, a smart phone, a tablet, and/or other suitable computing devices. Various implementations of the source, intermediate, and/or object code and associated data may be stored in one or more computer readable storage media that include read-only memory, random-access memory, magnetic disk storage media, optical storage media, flash memory devices, and/or other suitable media. As used herein, the term “computer readable storage medium” excludes propagated signals, per se.

As shown inFIG. 1B, the backup power management controller114is in communication with the processing units104and the backup power system116to monitor and/or control operations thereof. In the illustrated embodiment, the backup power management controller114includes a backup capacity module122, a backup profile module124, a backup allocation module126, and a backup control module128operatively coupled to one another.

The backup power system116includes a backup power interface132configured to facilitate communications between the individual backup power units117(FIG. 1A) and the backup power management controller114. In one embodiment, the backup power interface132may be configured to facilitate communications for a group of or all of the backup power units117. In other embodiments, the backup power interface132may represent a collection of backup power interfaces (not shown) each corresponding to one of the backup power units117.

The individual processing units104include a backup unit agent142having a virtual sensor143, a backup power driver144, and an operation controller146operatively coupled to one another. The foregoing software modules may be a part of an operating system, a standalone application, an add-in to an application, or a combination thereof. In other embodiments, the foregoing components of the processing units104may include input/output, database, or other additional and/or different types of software modules. The functions and interoperation of the software modules illustrated inFIG. 1Bare described in more detail below.

The backup capacity module122can be configured to determine or estimate the backup capacity of the backup power system116. In certain embodiments, the backup capacity module122can be configured to directly query the backup capacity from the backup power system116, for example, via the backup power interface132following the power management bus (“PMBus”) protocol or other suitable types of protocol. In other embodiments, the backup capacity module122may include facilities that measure, test, interrogate, and/or otherwise obtain individual backup capacities of the backup power units117. For example, the backup capacity module122may include facilities that test (e.g., by a voltage of) each of the uninterrupted power supplies118(FIG. 1A) or the generator120(FIG. 1A) and estimate the individual backup capacities based on calibration data, formulas, lookup table, and/or other suitable information. The backup capacity module122may then combine the individual backup capacities to derive the overall backup capacity.

In certain embodiments, the backup capacity module122may also be configured to monitor for an addition, a modification, a removal, or other changes in the configuration and/or status of one or more of the backup power units117(FIG. 1A). For example, the backup capacity module122can be configured to periodically scan for a count, type, and/or status of the backup power units117and compare the scanning results to previous records. In other embodiments, the backup power system116may report any such changes to the backup capacity module122periodically or when a change occurs. In response to a detected change, the backup power management controller114may re-assign portions of the backup capacity to the individual processing units104and/or perform other suitable actions, as discussed in more detail below.

The backup profile module124can be configured to query and/or otherwise obtain data representing the backup power profiles from the processing units104sharing the backup power system116. For example, in certain embodiments, the backup profile module124can identify at least one of a type, a class, a model, a serial number, a priority level, or other characteristics of the processing unit104by querying the backup unit agent142. The backup profile module124can then derive a backup power profile based the identified characteristics of the processing unit104and the corresponding backup power profile data127in the optional database125. For example, the backup power management controller114may identify the processing unit104as a server of a particular type (e.g., a web server). Based on such information, the backup profile module124may search the database for a corresponding record of the backup power profile data127and determine that the processing unit104has a particular peak power consumption level, a backup energy requirement, or other suitable backup power characteristics. In other embodiments, the backup profile module124may obtain such backup power characteristics directly from the backup unit agent142of the processing units104via, for example, an intelligent platform management interface (“IPMI”) and/or other suitable types of interface.

The backup allocation module126can be configured to assign a portion of the backup capacity received from the backup capacity module122to the individual processing units104based on the backup power profiles received from the backup profile module124. For example, in one embodiment, a first portion may be assigned to a processing unit104that is a server with a higher backup power rating than a second portion assigned to another processing unit104that is a router or network switch. In another example, the first portion may have a higher backup energy rating than the second portion, In a further example, the second portion may have a longer backup period than the first portion.

In certain embodiments, the backup allocation module126can be configured to assign an equal portion of the backup capacity to a particular type or class of processing units104. For example, all processing units104that are servers can be assigned the same amount of the backup capacity. In other embodiments, the backup allocation module126can be configured to assign different amounts of backup capacity to a particular type or class of processing units104based on priority levels, implemented applications, latency requirements, current operating status, and/or other suitable parameters. For example, a larger portion of the backup capacity may be assigned to a processing unit104that is a server hosting a search engine than another that is implementing data backup/restore.

In certain embodiments, the backup allocation module126can be configured to assign 100% of the backup capacity to the processing units104, for example, by iteratively calculating an amount of backup capacity for each processing unit104until a sum of all the assigned portions is 100% of the backup capacity. In other embodiments, the backup allocation module126can be configured to assign a pre-determined amount of backup capacity to each type of the individual processing units104(e.g., servers). In further embodiments, the backup allocation module126can be configured to assign a pre-determined or calculated amount of backup capacity to the processing units104while maintaining a target level (e.g., 10%) of reserve backup capacity. In yet further embodiments, the backup allocation module126can be configured to assign more than 100% of the backup capacity (e.g., based on a load factor, a utilization factor or other suitable factors) or assign the backup capacity in any other suitable manners.

In further embodiments, the backup allocation module126can be configured to continuously or periodically monitor for a change in at least one of (1) the backup capacity received from the backup capacity module122or (2) the power backup profiles received from the backup profile module124. In response to a detected change, the backup allocation module126can be configured to update the assigned portions of the backup capacity. For example, the backup allocation module126may detect that:One or more backup power units117are added to or removed from the backup power system116;One or more processing units104are added to or removed from respective computer cabinets102; and/orOne or more of the processing units104have a different type, class, model, serial number, priority level, or other characteristics.
In response, the backup allocation module126may adjust the portions of the backup capacity assigned to the processing units104, respectively, as follows:Increasing (or decreasing) portions of the backup capacity based on a new backup capacity as a result of the addition (or removal) of backup power units117;Re-distribute the backup capacity to the processing units104currently residing in the computer cabinets102; and/orRe-assigning a portion of the backup capacity to the one or more processing units104with the different characteristics.

The backup allocation module126can also be configured to communicate the assigned portions of the backup capacity to the individual processing units104via the network108, a backplane bus (not shown), and/or other suitable communication channels. The individual processing units104may then detect and/or recognize the assigned portions of the backup capacity as if the processing units104are each connected to a “virtual” backup power unit with the assigned portion of the backup capacity. For example, in certain embodiments, the virtual sensor143may include a designated memory space (e.g., a register) configured to receive and store data representing the assigned portions of the backup capacity. The backup power driver144may then retrieve the written data from the virtual sensor143via local procedure call (“LPC”) interface and/or other suitable interfaces. The backup power driver144can then supply data representing the backup capacity of the “virtual” backup power unit to the operation controller146for adjusting or optimizing operations of the individual processing units104according to user/application-level policies related to the backup capacity. In other embodiments, data representing the assigned portions of the backup capacity may be communicated to the processing units104as electronic messages and/or other suitable mechanisms.

During a failure of the main power source107, the backup control module128may control the amount of power supplied to the processing units104from the backup power system116based on the portions of the backup capacity assigned to the processing units104. For example, the backup control module128may limit a peak power, a backup energy consumption, a backup period, and/or otherwise regulate the power provided to the processing units104by manipulating the utility interfaces106(FIG. 1A) or other suitable power control circuits. As power is drawn from the backup power system116, the backup power management controller114may continuously or periodically update a remaining amount of the assigned portions of the backup capacity to the processing units104.

Based on the assigned and/or remaining portion of the backup capacity, the operation controller146of the individual processing units104can adjust at least one operating characteristics in the event that the main power source107is unavailable. For example, the operation controller146may adjust a clock frequency of a processor of a processing unit104when a remaining portion of the backup capacity is below a threshold. In another example, a processing unit104may adjust a status of acceptable task assignments (e.g., to “not available to accept further assignments”) to the processing unit104when the remaining portion of the backup capacity is below another threshold. In further examples, the operation controller146may also initiate a shutdown sequence, commit cached data to the memory, or power off the processing units when the remaining portion of the backup capacity is below respective thresholds. As a result, the processing units104may be configured to customize operations to improve computing performance and/or power efficiencies over conventional computing systems.

Optionally, in certain embodiments, the individual processing units104can be configured to further assign a fraction of the portion of the backup capacity to components or sub-components of the processing units104. For example, a processing unit104may assign a fraction of the backup capacity of the “virtual” backup power unit to a processor, a memory, a persistent storage device (e.g., solid state drives and non-volatile dual in-line memory modules), and/or other suitable components. As a result, the processor, memory, or persistent storage device may not require a built-in backup power source, and thus reducing equipment costs.

In certain embodiments, the operation controller146of a processing unit104may send a request to the backup power management controller114for an adjustment of the assigned portion of the backup capacity either during normal operation or in the event that the main power source107is unavailable. For example, in one embodiment, a processing unit104may contain data representing a user-selected and/or otherwise determined backup capacity requirement. The operation controller146can then determine if the assign portion of the backup capacity is above the backup capacity requirement. In response to determining that the assigned portion is below the backup capacity requirement, the processing unit104may send a request to the backup power management controller114for an adjustment. The backup power management controller114may then assign an adjusted portion of the backup capacity to the requesting processing unit104.

In another example, during a failure of the main power source107, the operation controller146may determine that the remaining portion of the backup capacity is insufficient to complete certain tasks (e.g., committing cached data to persistent memory, performing normal shutdown procedure, etc.). In response, the operation controller146may request an additional assigned portion of the backup capacity. The backup power management controller114may then assign additional backup capacity to the processing unit104by, for example, adjusting portions of the backup capacity assigned to other processing units104or assigning at least part of the backup capacity reserve. Alternatively, the backup power management controller114may refuse the request, and in response, the operation controller146may initiate an immediate shutdown and/or perform other suitable operations. In yet another alternative, the backup power management controller114may cause the tasks of the requesting processing unit104to be transferred to another processing unit114with a sufficient amount of an assigned portion of the backup capacity, for example, via load migration, virtual machine migration, or other suitable techniques.

FIG. 2is a flow diagram illustrating a process200of backup power management in accordance with embodiments of the present technology. Even though the process200is described below with reference to the computing framework100ofFIG. 1Aand the components/modules ofFIG. 1B, the process200may also be applied in other systems with additional or different hardware and/or software components.

As shown inFIG. 2, the process200can include receiving a backup capacity of a backup power system having one or more backup power units and one or more backup power profiles from one or more processing units that share the backup power system at stage202. In one embodiment, the backup capacity may be directly queried from the backup power system. In another embodiment, the backup capacity may be derived by (1) querying, testing, or measuring individual backup power units for an individual backup capacity; and (2) combining the individual backup capacities into an overall backup capacity.

The process200can also include assigning a portion of the backup capacity of the backup power system as virtualized backup capacity to the individual processing units at stage204, as described above with reference toFIG. 1B. As a result, the processing units can operate as if being individually connected to a “virtual” backup power unit that has the virtualized backup capacity (i.e., the assigned portion of the backup capacity). The assigned virtualized backup capacity can then be communicated to the processing units at stage206. The individual processing units can then perform various operational optimization based on a status of the “virtual” backup power unit, as described in more detail below with reference toFIG. 3.

The process200also includes controlling a backup power consumption of the individual processing units based on a corresponding assigned portion of the backup capacity at stage208. Example techniques for controlling the backup power consumption are described above with reference toFIG. 1B. As a result, in the event that a main power source to the processing units fails, the processing units can continue to operate by drawing power from the corresponding “virtual” backup power unit.

FIG. 3is a flow diagram illustrating embodiments of a process300of operating a processing unit based on an assigned backup capacity in accordance with embodiments of the present technology. As shown inFIG. 3, the process300can include receiving data representing an assigned backup capacity at stage302. The assigned backup capacity can be a portion of a total backup capacity of a backup power system that includes one or more backup power units shared by a plurality of processing units. In one embodiment, the assigned backup capacity may be received as a “virtual” sensor reading, as described above with reference toFIG. 1B. In other embodiments, the assigned backup capacity may be received as electronic messages and/or in other suitable manners.

The process300can also include a decision stage304to determine if the assigned backup capacity is above a threshold. In response to determining that the assigned backup capacity is above the threshold, the process300continues to adjusting operation of the processing unit based on the assigned backup capacity at stage308. Examples of adjustments are described above with reference toFIG. 1B. Optionally, in certain embodiments, the process300can also include further assigning a fraction of the assigned backup capacity to components or subcomponents of the processing units104at stage310. In other embodiments, the operation at stage310may be omitted. In response to determining that the assigned backup capacity is not above the threshold, the process300proceeds to requesting an adjustment of the assigned backup capacity at stage306. The process300then reverts to receiving an assigned backpack capacity at stage302.

FIG. 4is a schematic block diagram illustrating another computing framework100in accordance with embodiments of the present technology. The computing framework100inFIG. 4can be generally similar in structure and function as that inFIG. 1Aexcept that a single utility interface106is associated with both the first and second computer cabinet102aand102b. Even though not shown inFIG. 4, the utility infrastructure101bmay have other suitable configurations.

FIG. 5is a computing device500suitable for certain components of the computing framework100inFIG. 1A. For example, the computing device500may be suitable for the individual processing units104, the backup power management controller114, or the backup power systems116. In a very basic configuration502, computing device500typically includes one or more processors504and a system memory506. A memory bus508may be used for communicating between processor504and system memory506.

Depending on the desired configuration, the processor504may be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. The processor504may include one more levels of caching, such as a level one cache510and a level two cache512, a processor core514, and registers516. An example processor core514may include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller518may also be used with processor504, or in some implementations memory controller518may be an internal part of processor504.

Depending on the desired configuration, the system memory506may be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. The system memory506may include an operating system520, one or more applications522, and program data524. The application522(or the operating system520) may include, for example, the operation controller146. This described basic configuration502is illustrated inFIG. 5by those components within the inner dashed line.

The computing device500may have additional features or functionality, and additional interfaces to facilitate communications between basic configuration502and any other devices and interfaces. For example, a bus/interface controller530may be used to facilitate communications between the basic configuration502and one or more data storage devices532via a storage interface bus534. The data storage devices532may be removable storage devices536, non-removable storage devices538, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.

The system memory506, removable storage devices536and non-removable storage devices538are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by computing device500. Any such computer storage media may be part of computing device500. The term “computer storage medium” excludes propagated signals and communication media.

The computing device500may also include an interface bus540for facilitating communication from various interface devices (e.g., output devices542, peripheral interfaces544, and communication devices546) to the basic configuration502via bus/interface controller530. Example output devices542include a graphics processing unit548and an audio processing unit550, which may be configured to communicate to various external devices such as a display or speakers via one or more NV ports552. Example peripheral interfaces544include a serial interface controller554or a parallel interface controller556, which may be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports558. An example communication device546includes a network controller560, which may be arranged to facilitate communications with one or more other computing devices562over a network communication link via one or more communication ports564.

The computing device500may be implemented as a portion of a small-form factor portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application specific device, or a hybrid device that include any of the above functions. The computing device500may also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.

Specific embodiments of the technology have been described above for purposes of illustration. However, various modifications may be made without deviating from the foregoing disclosure. In addition, many of the elements of one embodiment may be combined with other embodiments in addition to or in lieu of the elements of the other embodiments. Accordingly, the technology is not limited except as by the appended claims.