The technology of the disclosure relates generally to processor wake-up in an electronic device.
Electronic devices, such as mobile communication devices, have become increasingly common in current society. The prevalence of these mobile communication devices is driven in part by the many functions that are now enabled on such devices. Increased processing capabilities in such devices means that mobile communication devices have evolved from pure communication tools into sophisticated mobile entertainment centers that enable enhanced user experiences.
Increasingly complex integrated circuits (ICs) have been designed and manufactured to provide greater functionality in a mobile communication device. One such IC is a master circuit for concurrently controlling peripheral devices over a shared data bus. The IC may be provided in an electronic device (e.g., smartphone) that includes multiple processors. The multiple processors can operate individually or collectively to improve performance of the mobile communication device. However, the multiple processors can also lead to increased power consumption and shortened battery life of the mobile communication device.
In this regard, the multiple processors can be configured to enter opportunistically a power-saving mode (e.g., standby or idle) to help conserve power and prolong battery life of the mobile communication device. A main processor (e.g., a bus controller) in the mobile communication device may be configured to be woken up by a specific peripheral device(s). The main processor can be further configured to subsequently wake up a processor(s) among the multiple processors in the mobile communication device to execute a specific command(s), perform a specific computing task(s), and/or launch a specific application(s) for the specific peripheral device(s). In some cases, the main processor is woken up solely for the purpose of waking up the processor(s) that serves the specific peripheral device(s). The main processor can consume additional power and/or cause unnecessary delay in waking up the processor(s). As such, it may be desired to optimize processor wake-up mechanisms employed in the mobile communication device to improve processor wake-up efficiency and responsiveness, thus leading to improved power consumption and battery life of the mobile communication device.
Aspects disclosed in the detailed description include selective processor wake-up in an electronic device. In one aspect, a master circuit in an electronic device is communicatively coupled to a data bus that includes a primary data line and a plurality of secondary data lines preconfigured to identify a plurality of processors in the electronic device, respectively. The master circuit detects a processor wake-up trigger(s) asserted on a secondary data line(s) and wakes up a target processor(s) identified by the secondary data line(s). In another aspect, a client circuit(s) is communicatively coupled to the data bus. The client circuit(s) identifies the secondary data line(s) preconfigured to identify the target processor(s) and asserts the processor wake-up trigger(s) on the secondary data line(s). By conveying the processor wake-up trigger(s) over the secondary data line(s) preconfigured to identify the target processor(s), it may be possible to wake up the target processor(s) directly, without involving other component(s) in the electronic device and/or invoking intermediate processing step(s). As a result, it is possible to optimize processor wake-up efficiency and responsiveness in the master circuit, thus leading to improved power consumption and battery life in the electronic device.
In this regard, in one aspect, an electronic device is provided. The electronic device includes a master circuit communicatively coupled to a data bus. The data bus includes a clock line, a primary data line, and a plurality of secondary data lines. The master circuit is configured to detect at least one processor wake-up trigger asserted on at least one selected secondary data line among the plurality of secondary data lines. The master circuit is also configured to determine at least one target processor among a plurality of processors identified by the at least one selected secondary data line. The master circuit is also configured to wake up the at least one target processor identified by the at least one selected secondary data line.
In another aspect, an electronic device is provided. The electronic device includes one or more client circuits communicatively coupled to a data bus. The data bus includes a clock line, a primary data line, and a plurality of secondary data lines. At least one selected client circuit among the one or more client circuits is configured to determine at least one target processor among a plurality of processors to be woken up for a data processing task. The at least one selected client circuit is also configured to identify at least one selected secondary data line among the plurality of secondary data lines configured to identify the at least one target processor. The at least one selected client circuit is also configured to assert at least one processor wake-up trigger on the at least one selected secondary data line.
In another aspect, an electronic device is provided. The electronic device includes a data bus including a clock line, a primary data line, and a plurality of secondary data lines. The electronic device also includes one or more client circuits coupled to the data bus. At least one selected client circuit among the one or more client circuits is configured to determine at least one target processor among a plurality of processors to be woken up for a data processing task. The at least one selected client circuit is also configured to identify at least one selected secondary data line among the plurality of secondary data lines configured to identify the at least one target processor. The at least one selected client circuit is also configured to assert at least one processor wake-up trigger on the at least one selected secondary data line. The electronic device also includes a master circuit coupled to the data bus. The master circuit is configured to detect the at least one processor wake-up trigger asserted on the at least one selected secondary data line among the plurality of secondary data lines. The master circuit is also configured to determine the at least one target processor among the plurality of processors identified by the at least one selected secondary data line. The master circuit is also configured to wake up the at least one target processor identified by the at least one selected secondary data line.
In another aspect, a method for waking up a processor in an electronic device is provided. The method includes determining at least one target processor among a plurality of processors to wake up for a data processing task. The method also includes identifying at least one selected secondary data line among a plurality of secondary data lines in a data bus configured to identify the at least one target processor. The method also includes asserting at least one processor wake-up trigger on the at least one selected secondary data line. The method also includes detecting the at least one processor wake-up trigger asserted on the at least one selected secondary data line among the plurality of secondary data lines. The method also includes determining the at least one target processor among the plurality of processors identified by the at least one selected secondary data line. The method also includes waking up the at least one target processor identified by the at least one selected secondary data line
With reference now to the drawing figures, several exemplary aspects of the present disclosure are described. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
Aspects disclosed in the detailed description include selective processor wake-up in an electronic device. In one aspect, a master circuit in an electronic device is communicatively coupled to a data bus that includes a primary data line and a plurality of secondary data lines preconfigured to identify a plurality of processors in the electronic device, respectively. The master circuit detects a processor wake-up trigger(s) asserted on a secondary data line(s) and wakes up a target processor(s) identified by the secondary data line(s). In another aspect, a client circuit(s) is communicatively coupled to the data bus. The client circuit(s) identifies the secondary data line(s) preconfigured to identify the target processor(s) and asserts the processor wake-up trigger(s) on the secondary data line(s). By conveying the processor wake-up trigger(s) over the secondary data line(s) preconfigured to identify the target processor(s), it may be possible to wake up the target processor(s) directly, without involving other component(s) in the electronic device and/or invoking intermediate processing step(s). As a result, it is possible to optimize processor wake-up efficiency and responsiveness in the master circuit, thus leading to improved power consumption and battery life in the electronic device.
Before discussing exemplary aspects of selective processor wake-up in an electronic device that include specific aspects of the present disclosure, a brief overview of a conventional processor wake-up mechanism is first provided in
In this regard,
In a first non-limiting example, the data bus 110 can be a MIPI Alliance SoundWire (SoundWire) bus. Accordingly, the selected client circuit among the client circuits 108(1)-108(N) can submit the bus activation trigger 118 to request the master circuit 106 to activate the data bus 110 by asserting HIGH on the primary data line 114 for a duration of at least two SoundWire BitSlots, which equals one hundred nanoseconds (100 ns), when the clock signal 116 is at a ten megahertz (10 MHz) frequency.
In a second non-limiting example, the data bus 110 can be a MIPI Alliance Serial Low-power Inter-chip Media Bus (SLIMbus). Accordingly, the selected client circuit among the client circuits 108(1)-108(N) can submit the bus activation trigger 118 to request the master circuit 106 to activate the data bus 110 by toggling the primary data line 114 from the last state held by the last bus holder. The last bus holder can be the master circuit 106 or any of the client circuits 108(1)-108(N). For example, if the last state of primary data line 114 were HIGH, the selected client circuit would toggle the primary data line 114 to LOW as the bus activation trigger 118. In contrast, if the last state of primary data line 114 were LOW, the selected client circuit would toggle the primary data line 114 to HIGH as the bus activation trigger 118.
Notably, the data bus activation mechanisms for activating the SoundWire bus and the SLIMbus can be extended to wake up the target processor 102 among the processors 104(1)-104(M). For the convenience of illustration, the processor 104(1) is discussed herein as an example of the target processor 102. It shall be noted that the target processor 102 can be any one or more of the processors 104(1)-104(M).
With continuing reference to
The conventional processor wake-up mechanism discussed above involves the steps of waking up the data bus 110, waking up the bus controller 122, and determining the target processor 102 via the read message(s) communicated over the data bus 110. Understandably, these additional steps can cause the electronic device 100 to introduce more latency and consume more power for waking up the target processor 102. Hence, it may be desired to improve the conventional process wake-up mechanism to optimize processor wake-up efficiency and responsiveness in the master circuit 106, thus helping to improve power consumption and battery life in the electronic device 100.
The data bus 110 may include a secondary data line(s) in addition to the primary data line 114. For example, the SoundWire bus and the SLIMbus can both provide seven secondary data lines. As discussed in the exemplary aspects below, it is possible to preconfigure a plurality of secondary data lines in a data bus to identify a plurality of processors. As such, a client circuit can wake up a target processor directly by asserting/toggling a secondary data line(s) preconfigured to identify the target processor. Accordingly, a master circuit can wake up the target processor directly based on the asserted secondary data line(s) preconfigured to identify the target processor. In this regard, the target processor can be woken up directly without involving the bus controller 122, thus helping to avoid the additional power consumption and processing delay introduced by the bus controller 122. However, the client circuit may assert/toggle a primary data line, such as the primary data line 114, concurrently to asserting/toggling the secondary data line, thus enabling backward compatibility with the conventional processor wake-up mechanism. In this regard, if the client circuit is a legacy client circuit incapable of waking up the target processor based on the preconfigured secondary data line(s), the client device can wake up the data bus 110 based on the conventional processor wake-up mechanism discussed above. However, if the client circuit is capable of waking up the target processor based on the preconfigured secondary data line(s), the client circuit can be backward compatible with the conventional processor wake-up mechanism by asserting/toggling the secondary data line(s) in addition to asserting/toggling the primary data line 114. As a result, as discussed below, the data bus 110 can be woken up by either the primary data line 114 or the secondary data line(s).
In this regard,
The master circuit 202 is communicatively coupled to the data bus 214. The electronic device 200 also includes one or more client circuits 216(1)-216(N), which can be audio codecs, microphones, and sensors for example, communicatively coupled to the data bus 214. The secondary data lines 212(1)-212(K) in the data bus 214 are configured to identify the processors 206(1)-206(M). In one exemplary aspect, the number of the processors 206(1)-206(M) equals the number of the secondary data lines 212(1)-212(K) (M=K). In this regard, it is possible to establish a one-to-one matchup between the processors 206(1)-206(M) and the secondary data lines 212(1)-212(K). Table 1 below provides a non-limiting example of the one-to-one matchup between the processors 206(1)-206(M) and the secondary data lines 212(1)-212(K).
In another exemplary aspect, the number of the processors 206(1)-206(M) is greater than the number of the secondary data lines 212(1)-212(K) (M>K). In this regard, it is possible to identify each of the processors 206(1)-206(M) based on combinations of the secondary data lines 212(1)-212(K). For example, it is possible to use a combination of the secondary data lines 212(1), 212(2) to identify the processors 206(1)-206(4), as illustrated in Table 2 below. In this manner, the secondary data lines 212(1)-212(K) can identify up to 2K processors.
In a non-limiting example, the pre-configuration information can be stored at the master circuit 202 and the client circuits 216(1)-216(N). The data bus 214 also includes a clock line 218, which is equivalent to the clock line 112 of
With continuing reference to
The master circuit 202 includes an always-on domain 224 (shown as “AO” in
The electronic device 200 can be configured to wake up the target processor 204 according to an optimized processor wake-up process. In this regard,
With reference to
The always-on domain 224 detects the processor wake-up trigger 208 asserted on the selected secondary data line 210 among the secondary data lines 212(1)-212(K) (block 308). When the selected client circuit 222 is configured to be backward compatible with the conventional processor wake-up mechanism of
With reference back to
According to previous discussions, by waking up the target processor 204 via the selected secondary data line 210 pre-configured to identify the target processor 204, it is no longer necessary to perform the steps of waking up the bus controller 122 and determining the target processor 102 via the read message(s), as required by the conventional processor wake-up mechanism of
With reference to
In one exemplary aspect, the data bus 214 of
With reference to
As illustrated in
According to previous discussions in
In another exemplary aspect, the data bus 214 of
With reference to
As illustrated in
According to previous discussions in
Selective processor wake-up in an electronic device according to aspects disclosed herein may be provided in or integrated into any processor-based device. Examples, without limitation, include a set top box, an entertainment unit, a navigation device, a communications device, a fixed location data unit, a mobile location data unit, a global positioning system (GPS) device, a mobile phone, a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a tablet, a phablet, a server, a computer, a portable computer, a mobile computing device, a wearable computing device (e.g., a smart watch, a health or fitness tracker, eyewear, etc.), a desktop computer, a personal digital assistant (PDA), a monitor, a computer monitor, a television, a tuner, a radio, a satellite radio, a music player, a digital music player, a portable music player, a digital video player, a video player, a digital video disc (DVD) player, a portable digital video player, an automobile, a vehicle component, avionics systems, a drone, and a multicopter.
In this regard,
Other master and slave devices can be connected to the system bus 608. As illustrated in
The CPU(s) 602 may also be configured to access the display controller(s) 618 over the system bus 608 to control information sent to one or more displays 626. The display controller(s) 618 sends information to the display(s) 626 to be displayed via one or more video processors 628, which process the information to be displayed into a format suitable for the display(s) 626. The display(s) 626 can include any type of display, including, but not limited to, a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, etc.
Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer readable medium and executed by a processor or other processing device, or combinations of both. The master devices and slave devices described herein may be employed in any circuit, hardware component, integrated circuit (IC), or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.