The disclosure relates generally to input devices, and more specifically, to devices, systems, and methods for buffering processor interrupts from input devices, such as wireless Bluetooth human interface devices.
Today's computing systems, especially those that operate on battery power, typically include the ability for the processor to operate in a low power mode. A low power mode may be used, for example, to save battery power during periods when the processor does not need to be fully operational. In addition, many systems include input subsystems that allow the user to connect peripherals (including wireless peripherals) that may be used as a system input device, such as a keyboard, mouse, joystick, wearable device, etc. The downside of using such input devices is that they may cause the system processor to consume more power than would otherwise be desired.
In the drawings, like reference characters generally refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the exemplary principles of the disclosure. In the following description, various exemplary aspects of the disclosure are described with reference to the following drawings, in which:
The following detailed description refers to the accompanying drawings that show, by way of illustration, exemplary details and features.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Throughout the drawings, it should be noted that like reference numbers are used to depict the same or similar elements, features, and structures, unless otherwise noted.
The phrase “at least one” and “one or more” may be understood to include a numerical quantity greater than or equal to one (e.g., one, two, three, four, [ . . . ], etc.). The phrase “at least one of” with regard to a group of elements may be used herein to mean at least one element from the group consisting of the elements. For example, the phrase “at least one of” with regard to a group of elements may be used herein to mean a selection of: one of the listed elements, a plurality of one of the listed elements, a plurality of individual listed elements, or a plurality of a multiple of individual listed elements.
The words “plural” and “multiple” in the description and in the claims expressly refer to a quantity greater than one. Accordingly, any phrases explicitly invoking the aforementioned words (e.g., “plural [elements]”, “multiple [elements]”) referring to a quantity of elements expressly refers to more than one of the said elements. For instance, the phrase “a plurality” may be understood to include a numerical quantity greater than or equal to two (e.g., two, three, four, five, [ . . . ], etc.).
The phrases “group (of)”, “set (of)”, “collection (of)”, “series (of)”, “sequence (of)”, “grouping (of)”, etc., in the description and in the claims, if any, refer to a quantity equal to or greater than one, i.e., one or more. The terms “proper subset”, “reduced subset”, and “lesser subset” refer to a subset of a set that is not equal to the set, illustratively, referring to a subset of a set that contains less elements than the set.
The term “data” as used herein may be understood to include information in any suitable analog or digital form, e.g., provided as a file, a portion of a file, a set of files, a signal or stream, a portion of a signal or stream, a set of signals or streams, and the like. Further, the term “data” may also be used to mean a reference to information, e.g., in form of a pointer. The term “data”, however, is not limited to the aforementioned examples and may take various forms and represent any information as understood in the art.
The terms “processor” or “controller” as, for example, used herein may be understood as any kind of technological entity that allows handling of data. The data may be handled according to one or more specific functions executed by the processor or controller. Further, a processor or controller as used herein may be understood as any kind of circuit, e.g., any kind of analog or digital circuit. A processor or a controller may thus be or include an analog circuit, digital circuit, mixed-signal circuit, logic circuit, processor, microprocessor, Central Processing Unit (CPU), Graphics Processing Unit (GPU), Digital Signal Processor (DSP), Field Programmable Gate Array (FPGA), integrated circuit, Application Specific Integrated Circuit (ASIC), etc., or any combination thereof. Any other kind of implementation of the respective functions, which will be described below in further detail, may also be understood as a processor, controller, or logic circuit. It is understood that any two (or more) of the processors, controllers, or logic circuits detailed herein may be realized as a single entity with equivalent functionality or the like, and conversely that any single processor, controller, or logic circuit detailed herein may be realized as two (or more) separate entities with equivalent functionality or the like.
As used herein, “memory” is understood as a computer-readable medium (e.g., a non-transitory computer-readable medium) in which data or information can be stored for retrieval. References to “memory” included herein may thus be understood as referring to volatile or non-volatile memory, including random access memory (RAM), read-only memory (ROM), flash memory, solid-state storage, magnetic tape, hard disk drive, optical drive, 3D XPoint™, among others, or any combination thereof. Registers, shift registers, processor registers, data buffers, among others, are also embraced herein by the term memory. The term “software” refers to any type of executable instruction, including firmware.
Unless explicitly specified, the term “transmit” encompasses both direct (point-to-point) and indirect transmission (via one or more intermediary points). Similarly, the term “receive” encompasses both direct and indirect reception. Furthermore, the terms “transmit,” “receive,” “communicate,” and other similar terms encompass both physical transmission (e.g., the transmission of radio signals) and logical transmission (e.g., the transmission of digital data over a logical software-level connection). For example, a processor or controller may transmit or receive data over a software-level connection with another processor or controller in the form of radio signals, where the physical transmission and reception is handled by radio-layer components such as RF transceivers and antennas, and the logical transmission and reception over the software-level connection is performed by the processors or controllers. The term “communicate” encompasses one or both of transmitting and receiving, i.e., unidirectional or bidirectional communication in one or both of the incoming and outgoing directions. The term “calculate” encompasses both ‘direct’ calculations via a mathematical expression/formula/relationship and ‘indirect’ calculations via lookup or hash tables and other array indexing or searching operations.
The apparatuses and methods described herein may be implemented using a hierarchical architecture, e.g., by introducing a hierarchical prioritization of usage for different types of users (e.g., low/medium/high priority, etc.), based on a prioritized access to the spectrum (e.g., with highest priority given to tier-1 users, followed by tier-2, then tier-3, etc.).
As one of skill in the art should appreciate, Bluetooth is a widely-used, short-range wireless protocol standard that allows for the wireless exchange of data over short distances. Bluetooth operates in the 2.402 GHz to 2.48 GHz frequency band, and covers various classes of devices with varying output powers. The Bluetooth Special Interest Group (the “Bluetooth SIG”) maintains the Bluetooth standards which have evolved over time as new versions have been released, starting with Bluetooth 1.0, and currently to Bluetooth 5.2. The term “Bluetooth,” unless specific to a particular release (or an amended version of the release), is meant to encompass all past and future releases/versions of the Bluetooth standard. When a specific release is referenced, e.g., “Bluetooth 4.1,” it is meant to encompass all revisions of the specific release as well as compatible releases of the standard. As one example, the current version of the core Bluetooth specification is Bluetooth Core Specification, Rev. 5.3 (Jul. 13, 2021), published by the Bluetooth SIG.
In order for a system to use a Bluetooth-enabled device, the device must be compatible with a subset of Bluetooth profiles. A Bluetooth profile is a specification regarding aspects of Bluetooth-enabled wireless communication between devices. One example of such a Bluetooth profile is a Human Interface Device (HID) profile. The HID profile provides support for system input devices such as mice, joysticks, keyboards, wearable devices (e.g. a medial device, a medical alert device, a fitness device, a smartwatch, etc.) and buttons. HID profiles are typically designed to use a low latency Bluetooth communication link according to low power protocols, including for example Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) or Bluetooth Low Entergy (LE). The Bluetooth controller will typically poll the HID on a frequent basis in order to receive events (e.g., a movement of the mouse, a typing on a keyboard, a click of a button, etc.) from the HID and provide it to the operating system of the processor. Bluetooth controllers typically include the ability to detect the type of host traffic communicated over the Bluetooth interface by utilizing the interface to infer the application using the interface, e.g. a music stream, a HID, etc. Information associated with the type of Bluetooth traffic is typically used to support quality-of-service (QOS) requirements for the particular application, especially where multiple Bluetooth applications may be contending for airtime or where collocated WiFi interfaces may be operating in an overlapping spectrum (e.g., the 2.4 GHz unlicensed industrial, scientific, and medical radio band (ISM band)) and contending for airtime. Because a Bluetooth controller is able to infer whether the traffic over the interface is HID traffic, this capability may be used to identify HID events.
Typically, when a processor receives a HID event, the HID event may cause the processor to change to an active state. Processors generally operate in various different “states” or “modes,” where each state may be associated with a certain level of processing and therefore power consumption. These operating states are sometimes called “C-states” or “C-modes” of the processor, where each state may be numbered. For example, a CO state may be considered a fully-operational and fully-powered mode, where the processor is fully turned on and actively executing instructions. Modes or states above CO may be considered low power modes because the processor may not be actively executing instructions or may have turned off certain operations. For example, a C3 state may be a low power mode where all internal clocks of the processor are stopped. If a processor were in such a C3 state, the processor would not be able to perform any operations that require an internal clock, and the processor would need to exit the C3 state and enter a state associated with a higher level of functionality (e.g., the CO state). Another example of a lower power mode may be, for example, a C8 state, where the processor is in an idle mode, supplying certain circuitry with a reduced voltage as compared to what would be supplied in a fully-operational, full-powered state. If a processor were in such a C8 state, the processor would not be able to perform any operations that required the power-reduced circuitry, and the processor would need to exit the C8 state and enter a state associated with a higher level of functionality (e.g., the CO state) to utilize the power-reduced circuitry.
One way a processor may be instructed to change states is using what is often called an “interrupt request.” The interrupt request may inform the processor, for example, that a particular operating state is required, and the processor will then exit the current state and enter the required state. Using the exemplary C-states discussed in the previous paragraph as a continued example, assume the processor is in a C3 state. While in the C3 state, the user may wish to begin typing on the keyboard. Because the keyboard requires use of the processor's internal clock in order to properly recognize the user's keystrokes, an interrupt request may be sent to the processor so that the processor exits the C3 state and enters, for example, the CO state. In the case of a HID event described above, the HID event (e.g., an activity trigger) is or may cause an interrupt request to be sent to the processor to return to an active state, e.g., a CO state to handle the HID event.
In order to conserve power, it may be beneficial for systems to keep their processor(s) in lower power modes until a processor interrupt is received that directs the processor to return to an active state. This is not only because systems may consume more power in an active state but also because the system may consume more power in order to change a processor's operating state. For example, systems may consume about 1 Watt of power to interrupt a processor to change from a relatively idle state (e.g., the C8 state described above) to an active state (e.g., the CO state described above). Thus, to conserve power, the processor should not be interrupted to change to an active state unnecessarily.
In systems that use wirelessly connected HIDs, it is possible that the HID may cause an unnecessary interrupt. For example, depending on the type of HID, the system may poll for HID events at an interval that is faster than what can be perceived by the user of the system. For example, if a Bluetooth mouse is connected to a computing system via a Bluetooth LE connection, the system may pole for HID events and report them every 7.5 ms. For semi-active workloads, a typical result of the HID event report may be visualization of the HID event on the display for the end user (e.g., a mouse movement causes the cursor on the display to move). In this case, the HID event report may be sent to the processor every 7.5 ms, which may cause frequent interrupts to the processor. At the same time, however, systems may use displays with a refresh rate that occurs more slowly than the HID event reports. For example, a 60 frame per second (fps) display may have a refresh rate that is about 16 ms. This means that information on the display may be updated only every 16 ms, and the user will not be able to perceive mouse movements at a faster rate, even if the events are reported to the processor at the faster 7.5 ms rate. As a result, delivering the HID event every 7.5 ms to the processor may cause undesirable power consumption by causing the processor to change to an active state faster and more frequently than is necessary. If the HID event is delivered at a time that falls in the middle of a display refresh events, for example, the processor may be brought to an active state every 7.5 ms even though the information on the display is updated only every 16 ms.
According to certain aspects, the HID event reporting may be modified so that HID events are buffered for a period of time so that the processor is not interrupted to change to an active state more frequently than is necessary. For example, continuing the HID mouse example discussed above, the HID events from the mouse may be buffered so that they are provided to the processor at or near the same time as the video refresh rate. If the HID event are buffered and delivered in a way that is synchronized to the video refresh rate (e.g., near or at the same time or a multiple of the refresh rate), it may prevent delivering redundant HID events to the processor that would otherwise cause an interrupt. The buffered HID events may then be delivered, for example, after receiving an indication (e.g., a prefetch indication) from the system (e.g., a display engine or a power management controller). The indication may be aligned to the display refresh rate, for example, so that the HID events may be delivered just in time for the screen refresh, avoiding unneeded interrupts to the processor and avoiding unnecessary power consumption.
When HID events 140, 141, and 142 occur, the video system 135 and operating system 125 may be in sleep states, as shown in
To prevent such unnecessary power consumption, the HID events 140, 141, 142 may be buffered by the communication system 115 in the control and buffering period 160 until the video system 135 (and the operating system 115) enters an Active Period. The communication system 115 may be informed of the timing for the Active Period through the use of a message 161 (e.g., a prefetch message) that indicates to the communication system 115 the timing of the Active Period. Once the communication system 115 knows the timing of the Active Period, the communication system 115 may deliver the buffered HID events 140, 141, 142 (e.g., in message 162) so they may be read by the operating system and scanned out to the display connected to video system 135 during the Active Period. It should be appreciated that the control and buffering period (e.g., control and buffering period 160) may deliver some, all, or none of the buffered HID events (e.g., HID events 140, 141, 142) to the video system 135, depending on the type of HID event and whether later HID events are redundant or make earlier HID events superfluous. In addition, the communication system 135 may decide whether to buffer a given event based on a priority of the HID event, where, for example, higher priority HID events may be immediately delivered to the processor while lower priority events may be buffered until a subsequent video refresh event. This buffering process may be repeated at the refresh rate of the video system 135, which may be periodic or aperiodic. For example, in the next period (e.g., between the next set of vertical blank events represented by refresh lines 120 and 130), HID events 150, 151, and 152 are buffered by the communication system 115 in control and buffering period 170 until the video system 135 and the operating system 115 reenter an Active Period (not labeled in
The communication system 115 may be informed of the timing of the next video refresh event in any manner. As depicted in
While the disclosure has been particularly shown and described with reference to specific aspects, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the disclosure as defined by the appended claims. The scope of the disclosure is thus indicated by the appended claims and all changes, which come within the meaning and range of equivalency of the claims, are therefore intended to be embraced.