Systems and methods for transitioning a computing device between operating states
By introducing a manifest server into computing devices to compile and distribute manifests, and to coordinate the timing of operations by I/O processors and other processors, the multiprocessor coordination problem is solved, improving the efficiency of state transitions and the user experience.
Patent Information
- Application Number
- CN202310167562.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2023-02-23
- Filing Date
- 2023-02-27
- Publication Date
- 2026-11-06
- Estimated Expiration
- 2043-02-27
AI Technical Summary
Existing computing devices face challenges in coordinating the operation of multiple processors during operational state transitions, leading to artifacts and timing errors that negatively impact user experience.
A manifest server is used to compile and distribute manifests, coordinate the timing of operations of I/O processors and other processors, reduce communication between them, and thus achieve synchronization and coordination of state transitions.
By coordinating through the inventory server, power consumption in computing devices is reduced, resources are freed up, and the efficiency of operational state transitions and user experience are improved.
Smart Images

Figure CN116661719B_ABST
Abstract
Description
Technical Field
[0001] This specification relates in its entirety to computing devices, including, for example, systems and methods for switching computing devices between operating states. Background Technology
[0002] A computing system consisting of one or more computing devices, such as a head-mounted display, typically has multiple processes managed by multiple processors. These multiple processes work together to create a user experience. Attached Figure Description
[0003] Some features of this subject matter are set forth in the appended claims. However, for illustrative purposes, several embodiments of this subject matter are illustrated in the following figures.
[0004] Figure 1A This is a block diagram illustrating the components of a computing device according to various aspects of the subject matter.
[0005] Figure 1B This is a block diagram illustrating components of another specific embodiment of a computing device according to various aspects of the subject matter.
[0006] Figure 1C This is a block diagram illustrating an allocation list server according to various aspects of the technology of this subject.
[0007] Figure 2 This is a flowchart illustrating an exemplary process for controlling the timing of a processor performing operations that change the operating state of a computing device, according to various aspects of the subject matter.
[0008] Figure 3 This illustrates various aspects of the technology based on this subject matter. Figure 2 The timing diagram shows the relative timing of the exemplary process.
[0009] Figure 4 This is a block diagram illustrating a backup manifest server that assigns manifests to processors according to various aspects of the technology in this subject matter.
[0010] Figure 5 This is a flowchart illustrating an exemplary process for timing a subset of processors that are controlled by a backup inventory server to perform operations that change the operational state of a computing device, according to various aspects of the subject matter.
[0011] Figure 6 This is a block diagram illustrating the allocation of a list to a first group of processors and a first list server to a second group of processors via a second list server, according to various aspects of the subject matter.
[0012] Figure 7This is a block diagram illustrating the allocation of a list to a first group of processors and a first list server to a second group of processors in response to a request to transition from a first state to a second state, according to various aspects of the subject matter.
[0013] Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4 and Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 The diagram illustrates a sequence of events in which a list is assigned to a first group of processors in response to a request to transition from a first state to a second state, and to a first list server via a second list server, in accordance with various aspects of the subject matter.
[0014] Figure 9 It is a block diagram of a computing system based on various aspects of the technology in this subject. Detailed Implementation
[0015] The specific embodiments shown below are intended to describe various configurations of the subject matter and are not intended to represent the only configuration in which the subject matter can be practiced. The accompanying drawings are incorporated herein and form part of the detailed description. The detailed description includes specific details intended to provide a thorough understanding of the subject matter. However, it will be clear and apparent to those skilled in the art that the subject matter is not limited to the specific details shown herein and can be practiced without such specific details. In some cases, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject matter.
[0016] A physical environment refers to the physical world that people can sense and / or interact with without the aid of electronic devices. A physical environment can include physical features such as physical surfaces or physical objects. For example, a physical environment corresponds to a physical park that includes physical trees, physical buildings, and physical people. People can directly sense and / or interact with a physical environment through senses such as sight, touch, hearing, taste, and smell. Conversely, an extended reality (XR) environment refers to a fully or partially simulated environment that people sense and / or interact with via electronic devices. For example, an XR environment can include augmented reality (AR) content, mixed reality (MR) content, virtual reality (VR) content, etc. In the case of an XR system, a subset of a person's physical motion or a representation thereof is tracked, and in response, one or more features of one or more virtual objects simulated in the XR system are adjusted in a manner consistent with at least one physical law. For example, an XR system can detect head movement and, in response, adjust the graphical content and sound field presented to the person in a manner similar to how such views and sounds change in a physical environment. For example, an XR system can detect movement of electronic devices (e.g., mobile phones, tablets, laptops, etc.) that present the XR environment, and in response, adjust the graphical content and sound field presented to the user in a manner similar to how such views and sounds would change in a physical environment. In some cases (e.g., for accessibility reasons), an XR system may adjust the characteristics of the graphical content in the XR environment in response to representations of physical motion (e.g., voice commands).
[0017] Many different types of electronic systems enable people to sense and / or interact with a variety of XR environments. Examples include head-mounted systems, projection-based systems, head-up displays (HUDs), vehicle windshields with integrated display capabilities, windows with integrated display capabilities, displays shaped like lenses designed to be placed on a person's eyes (e.g., similar to contact lenses), headphones / earpieces, speaker arrays, input systems (e.g., wearable or handheld controllers with or without haptic feedback), smartphones, tablets, and desktop / laptop computers. Head-mounted systems may have an integrated opaque display and one or more speakers. Alternatively, head-mounted systems may be configured to receive external opaque displays (e.g., smartphones). Head-mounted systems may incorporate one or more imaging sensors for capturing images or video of the physical environment, and / or one or more microphones for capturing audio of the physical environment. Head-mounted systems may have transparent or semi-transparent displays instead of opaque displays. Transparent or semi-transparent displays may have a medium through which light representing the image is directed to the person's eyes. The display can utilize digital light projection, OLED, LED, uLED, liquid crystal on silicon, laser scanning light source, or any combination of these technologies. The medium can be an optical waveguide, holographic medium, optical combiner, optical reflector, or any combination thereof. In some implementations, transparent or translucent displays can be configured to selectively become opaque. Projection-based systems can employ retinal projection technology, which projects graphic images onto the human retina. Projection systems can also be configured to project virtual objects onto a physical environment, such as as holograms or on a physical surface. Figure 1A This is a block diagram illustrating components of a computing device according to various aspects of the subject matter. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.
[0018] like Figure 1A The depicted computing device 100 includes a system-on-a-chip (SOC) 110, an SOC 120, an inventory server 130, and input / output (I / O) processors 140, 150, and 160. I / O processors 140, 150, and 160 are configured to control the input and / or output operations of the computing device 100. For example, the computing device 100 may be a smartphone, a tablet device, or a wearable device, such as a head-mounted device (as an example) having I / O processors for controlling a camera, display, content rendering, etc. The subject matter is not limited to this number of I / O processors and may utilize more than [a certain number of processors]. Figure 1A The more or fewer I / O processors described are used to achieve this.
[0019] exist Figure 1A In the example, inventory server 130 is configured to control I / O processors 140, 150, and 160 to perform timing operations that change the operational state of computing device 100 from a first state to a second state. In one or more implementations, the transition may be between modes such as virtual reality mode and mixed reality mode, between different frame rates in the current display, between enabling / disabling the display, etc. The transition may also or alternatively include transitions between bounded 2D display mode and bounded partial 3D display mode, transitions between bounded 2D display mode and bounded 3D display mode, transitions between bounded partial 3D display mode and bounded 3D display mode, transitions between bounded display mode and full-screen mixed reality display mode, transitions between bounded display mode and full-screen virtual reality display mode, transitions between full-screen mixed reality display mode and full-screen mixed reality display mode, and / or transitions from any of the above modes to a pass-through video mode only.
[0020] Any or all of these transitions may involve activating or deactivating one or more cameras and / or one or more sensors (e.g., depth sensors, light sensors, microphones, etc.), setting up buffers for incoming data from cameras and / or sensors, activating or deactivating processing operations for images, audio, display data, etc., and / or activating or deactivating other hardware and / or software elements of computing device 100. The operation of inventory server 130 will be described in further detail below. The operations described herein, in which inventory server 130 and / or another inventory server compile inventories and distribute these inventories to various processors for transitions, allow multiple individual processors and / or processes to concurrently execute their respective operations for these transitions in a time-coordinated manner, preventing artifacts and / or other timing errors from affecting the user experience of the device. For example, the subject matter can provide an efficient system for coordinating the operations of multiple I / O processors and / or other processors to be performed to implement state transitions of a computing device or computing system. Using inventories to control the timing of I / O processors and / or other processors performing their respective operations makes coordination of I / O processors and / or other processors possible without requiring I / O processors and / or other processors to communicate with each other regarding their respective operations. This reduction in communication saves power in computing systems or devices and frees up resources for other processes within those systems or devices.
[0021] exist Figure 1AIn the example, inventory server 130 and I / O processors 140 and 150 are part of SOC 110, and I / O processor 160 is part of SOC 120. Inventory server 130 and I / O processors 140, 150 and 160 may include appropriate logic components, circuitry and / or code capable of processing data and / or controlling the operation of computing device 100. These components, or one or more portions thereof, may be implemented in software (e.g., instructions, subroutines and code), hardware (e.g., application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic components, discrete hardware components or any other appropriate devices), and / or a combination of both hardware and software.
[0022] The computing device 100 includes SOC 110, SOC 120, inventory server 130, and I / O processors 140, 150, and 160. Figure 1A The examples provided are merely illustrative, and in other specific implementations, computing device 100 may include one or more other processors, one or more other manifest servers, and / or be capable of executing one or more software processes associated with the transformation. For example, Figure 1B A specific implementation is shown, wherein computing device 100 includes SOC 110, SOC 120, inventory server 130, and I / O processors 140, 150, and 160, and additionally includes one or more additional processors 152 on SOC 110, and one or more software processes 154 executable by processors 152 and / or I / O processors 140, 150, and 160. Figure 1B In the example, the SOC 120 also includes one or more additional I / O processors 180 and may include additional manifest servers, such as manifest server 170.
[0023] The manifest server 170, processor 152, software process 154, and / or I / O processor 180 may include appropriate logic components, circuitry, and / or code capable of processing data and / or controlling the operation of computing device 100. These components, or one or more portions thereof, may be implemented in software (e.g., instructions, subroutines, and code), hardware (e.g., application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic components, discrete hardware components, or any other appropriate device), and / or a combination of both hardware and software.
[0024] This subject matter can be implemented using a single SOC or more than two SOCs, utilizing different or the same number of I / O processors and / or other processors arranged within the respective SOCs. This subject matter can also be implemented using SOCs and their respective I / O processors and / or other processors arranged in a computing system comprising one or more computing devices. For example, in a computing system having more than one computing device, each computing device may include one or more SOCs, wherein each SOC includes one or more I / O processors. For example, although SOC 110 and SOC 120 are depicted as being included in the same computing device 100, in other specific embodiments, SOC 110 and SOC 120 may be implemented in separate computing devices.
[0025] As indicated above, the inventory server 130 can be configured to control the timing of operations performed by I / O processors, other processors, and / or software processes that change the operating state of a computing device from a first state to a second state.
[0026] In short, in response to receiving a request to transition a computing device from a first state to a second state, the manifest server 130 may compile a manifest and dispatch it to an I / O processor (and / or other processor). In one or more implementations, the request may include a transition identifier for the requested transition. For example, Figure 1C An example use case is shown in which inventory server 130 provides inventory to I / O processors 140, 150, and 152 (e.g., and software process 154) on SOC 110, and to I / O processors 160, 180, and / or other I / O processors (e.g., inventory server 170 is not involved) on SOC 120.
[0027] The manifest may include transition identifiers that identify a specific transition from a first state to a second state and represent the command to perform that transition, a list of operations to be performed by each of the I / O processors (and / or other processors), and / or the time at which the I / O processors (and / or other processors) should perform the operations associated with the transition identifier. The manifest may be provided in messages or other communications from the manifest server to one or more processors. For example, the transition identifier may identify a transition from virtual reality mode to mixed reality mode, from bounded mode to unbounded or full-screen mode, from one frame rate to another, and / or other transitions as described herein. System clocks are synchronized across the SOC so that all I / O processors and / or other processors experience the same absolute time to coordinate the execution of operations based on the times included in the manifest as described herein. This process will now refer to Figure 2 To describe in more detail.
[0028] Figure 2This is a flowchart illustrating an exemplary process 200 for controlling the timing of an I / O processor performing operations that change the operational state of a computing device, according to various aspects of the subject matter. For illustrative purposes, the blocks of process 200 are described herein as occurring sequentially or linearly. However, multiple blocks of process 200 may occur in parallel. Furthermore, the blocks of process 200 need not be executed in the order shown, and / or one or more blocks of process 200 need not be executed and / or may be replaced or supplemented by other operations.
[0029] Process 200 begins with initializing the inventory server (box 210). Specifically, the inventory server may be instantiated during the host process. Once instantiated, the inventory server queries the IO processor and / or other processors for the inventory time and execution time associated with each transition identifier used for transitions available in the system. If the IO processor or other processor has one or more operations to perform to implement a transition of the computing device corresponding to a specific transition identifier, the IO processor or other processor returns the inventory time and execution time, where the inventory time represents the time period required for the IO processor or other processor to prepare before performing the one or more operations, and the execution time represents the time period required for the IO processor or other processor to perform the one or more operations associated with the transition identifier. The one or more operations implementing the transition in the head-mounted device may include operations for frame-level synchronization across the IO processor or other processor. If the IO processor or other processor is not involved in a specific transition of the computing device, the IO processor or other processor returns a failure in response to a query for the transition identifier associated with that transition, and / or returns an indication that no operation needs to be performed by the IO processor or other processor for that specific transition.
[0030] Alternatively, once the manifest server has been instantiated, the IO processor and / or other processors may register with the manifest server. When the IO processor or other processor initializes, it may query the operating system of the computing device to determine if the manifest server has been instantiated. If the manifest server has not yet been instantiated, the IO processor or other processor may request the operating system to notify it when the manifest server is instantiated. Once the IO processor or other processor is aware of the manifest server, it registers with the manifest server by instructing the IO processor or other processor identified by a transformation identifier to perform different transformations that implement one or more operations. For each of the indicated transformations, the IO processor or other processor also provides the manifest time and execution time associated with that transformation.
[0031] Once initialized, the manifest server waits to receive a request to transition the computing device from a first state to a second state (box 220). This request can be received from an application or from the operating system of the computing device. Upon receiving the request, the manifest server can determine if there are any pending transitions still being processed by the I / O processor and / or other processors. If pending transitions exist, the manifest server can wait until the I / O processor and / or other processors have completed the execution of the operations associated with the pending transition before responding to the received request and continuing. If the pending transition and the transition identified in the received request involve different subsets of the I / O processors and / or other processors performing the operations that implement the corresponding transition, the manifest server can continue and allow the two transitions to occur in parallel. Similarly, if the operations performed by the I / O processor and / or other processors are different for the two transitions, the manifest server can continue and allow the two transitions to occur in parallel.
[0032] As part of the preparation phase, the inventory server may notify the IO processor and / or other processors of the received transformation request (Box 230). This notification allows the IO processor and / or other processors to prepare the upcoming inventory by performing, for example, any necessary cleanup or state management, before the IO processor or other processor is ready to perform the operations corresponding to the inventory. In response to this notification, the IO processor and / or other processor return a success indicator indicating whether the inventory preparation was successful or failed. If the inventory server receives a failure indicator, it may resend the notification to the IO processor or other processor that returned the failure indicator until a success indicator is received or other mitigation actions are taken.
[0033] Once the preparation phase discussed above has been successfully completed, the manifest server compiles a manifest for each I / O processor or other processor participating in the transition of the computing device from the first state to the second state (box 240). The manifest for a particular I / O processor or other processor includes a transition identifier representing a command indicating the transition from the first state to the second state. The manifest for a particular I / O processor or other processor also includes action times for that I / O processor or other processor to perform one or more operations associated with the transition identifier. Action times may be determined by the manifest server using the manifest times provided by the I / O processors and / or other processors when the manifest server initializes. For example, action times may be based on the maximum or longest manifest time returned by the I / O processors and / or other processors. Action times may also be based on a transfer time representing the time period required to transfer the manifest to the I / O processors and / or other processors. Depending on various aspects of the subject matter, the action time may be the maximum manifest time plus the transfer time.
[0034] The list for I / O processors or other processors may be in the form of a table containing one or more operations to be executed by the receiving I / O processor or other processor to implement a transition identified by a transition identifier. For a table containing more than one operation, the table may include a single action time for initiating the sequence of operations, or it may include a separate action time for each operation, indicating when the corresponding operation should begin execution. The table may also include deadlines indicating the time period expected before the one or more operations are expected to complete to implement the transition. Similar to action times, the table may include a single deadline for completing all operations included in the table, or it may include a separate deadline for completing each operation. Using separate action times and deadlines for each of the operation sequences indicated in the table facilitates better coordination between multiple I / O processors and / or other processors, each of which must perform multiple operations to implement the transition.
[0035] Once the manifest server has compiled the manifests, it dispatches them to I / O processors and / or other processors (box 250). At the action time indicated in the manifest, each of the I / O processors and / or other processors executes the one or more operations associated with the transition identifier in the manifest. Upon completion of the one or more operations, the I / O processors and / or other processors may return a status report to the manifest server to notify the manifest server that the I / O processor or other processor has completed the operation associated with the transition identifier (box 260). Alternatively, when dispatching the manifests to I / O processors and / or other processors, the manifest server may set a timer to expire at the action time plus the execution time returned by the I / O processors and / or other processors at initialization. When the timer expires, the manifest server may poll the I / O processors and / or other processors to determine whether the I / O processor has completed the execution of the one or more operations associated with the transition identifier. In addition to returning a success status report to the manifest server, the I / O processors and / or other processors may return the actual amount of time required to complete the one or more operations to update the execution time obtained by the manifest server at initialization.
[0036] Figure 3 It is shown that the various aspects of the technology according to this subject matter are relative to Figure 2 The timing diagram for the relative timing of process 200 is described. As discussed above, the action time (t_action, in) Figure 3 The time between time A and time B in the table can be the maximum list time plus the transmission time (t_transmission, in...). Figure 3 (Indication between time C and time D in the text). For example... Figure 3The indicated transfer time may vary for different I / O processors and / or other processors, but the selected action time ensures that all I / O processors and / or other processors begin executing the operations that implement the transition simultaneously. Although the execution time (t_execution, in...) Figure 3 The time interval between E and F is indicated in the text. Figure 3 The time is described as the same amount of time, but the execution time can vary between different I / O processors and / or other processors.
[0037] exist Figure 2 and Figure 3 In the example, inventory server 130 of SOC 110 provides inventory to the I / O processors and / or other processors of both SOC 110 and SOC 120. However, in some use cases, inventory server 130 and / or SOC 110 may become unavailable (e.g., in a failure state and / or during the restart process of SOC 110). In one or more implementations, inventory server 170 may act as a backup inventory server (e.g., in response to determining that inventory server 130 and / or SOC 110 is unavailable). For example, Figure 4 An exemplary use case is shown, in which the SOC 110 is in a fault state or in the process of restarting, and the inventory server 130 acts as a backup inventory server for the computing device 100.
[0038] like Figure 4As shown, the manifest server can compile manifests for each of the I / O processors 160 and 180 on SOC 120 and assign these corresponding manifests to the I / O processors 160 and 180 on SOC 120. In this way, even when SOC 110 is unavailable, the I / O processors 160, 180, and / or other I / O processors (and / or other processors) at SOC 120 can continue to operate. For example, the I / O processors 160, 180, and / or other I / O processors (and / or other processors) at SOC 110 process signals from components such as the display, camera, and / or other sensors of the computing device, which are used to provide a transparent view of the physical environment on the display of the computing device even when SOC 120 is unavailable. For example, I / O processors 160, 180, and / or other I / O processors (and / or other processors) at SOC 120 can perform a coordinated transition from the current operating state of the computing device (e.g., VR or MR operating state) (when SOC 110 is running) to a transparent operating state, in which only a view of the physical environment is displayed (e.g., along with overriding notifications such as restart notifications or failure mode notifications) (when SOC 110 is unavailable). In this way, users of computing device 100 can continue to see their physical environment even when SOC 110 is in failure mode. In this example, inventory server 170 can compile an inventory for a subset of the I / O processors and / or other processors of computing device 100 (e.g., using...). Figure 2 (List compilation and allocation operations for boxes 240, 250 and 260), such as the IO processor of SOC 120 and / or other processors.
[0039] Figure 5 This is a flowchart illustrating an exemplary process 500 for timing a processor, controlled by a backup inventory server, to perform operations that change the operational state of a computing device, according to various aspects of the subject matter. For illustrative purposes, the blocks of process 500 are described herein as occurring sequentially or linearly. However, multiple blocks of process 500 may occur in parallel. Furthermore, the blocks of process 500 need not be executed in the order shown, and / or one or more blocks of process 500 need not be executed and / or may be replaced or supplemented by other operations.
[0040] exist Figure 5In the example, at box 502, a backup inventory server (e.g., a second inventory server, such as inventory server 170 on a second SOC (e.g., SOC 120)) of a device (e.g., computing device 100) may, in response to determining that a first inventory server (e.g., inventory server 130) or a first SOC (e.g., SOC 110 on which the first inventory server is implemented) is unavailable, be configured for a transition from a third state to a fourth state (e.g., a second transition following a first transition from a first state to a second state, such as...). Figure 2 As described, a corresponding inventory is compiled for each of a subset of processors used in the device. For example, the subset of processors may be a second set of processors implemented on a second SOC (e.g., SOC 120) having a backup inventory server, different from the first set of processors implemented on a first SOC (e.g., SOC 110) of the device. In one or more embodiments, determining that the first inventory server or the first SOC is unavailable may include receiving a fault signal from the first SOC at the second SOC (e.g., via general-purpose I / O), or detecting that the first inventory server or the first SOC is unavailable at the second SOC (e.g., by indicating that no display updates are available for a predetermined period of time).
[0041] At box 504, the backup manifest server can dispatch a subset of the corresponding manifest compiled by the second manifest server for the second transformation to the processor.
[0042] At box 506, the backup manifest server may receive a status report from a subset of the processors regarding the second transition from the third state to the fourth state. In one or more embodiments, the fourth state may be a pass-through video state, where only pass-through video and notifications (e.g., fault status notifications or reboot notifications) are displayed on the device's display. In one or more embodiments, the third state may be as described herein. Figure 2 Either the first state or the second state described.
[0043] exist Figure 4 and Figure 5 In one example, when SOC 110 and / or inventory server 170 are in a fault state, inventory server 170 assigns inventories to the I / O processors of SOC 120. In one or more other examples, inventory server 170 is operable to assign inventories received from inventory server 130 to the I / O processors of SOC 120. For example, Figure 6An example is shown in which inventory server 130 provides inventories to I / O processors 140, 150, and 152 (e.g., and software process 154) on SOC 110, and to inventory server 170 on SOC 120. In this example, inventory server 170 then assigns the inventories received from inventory server 130 to I / O processors 160, 180, and / or other I / O processors on SOC 120. In this way, inventory server 130 can partially distribute inventories to multiple processors by distributing corresponding inventories to a second set of processors on SOC 120 via a second inventory server 170.
[0044] Figure 7 A block diagram illustrating how a manifest server 130 may receive transformation requests from any of various user processes 700 (e.g., application processes) and / or system processes 702 is shown. In one or more embodiments, the manifest server 130 may compile manifests and assign these manifests to I / O processors 140, 150, and / or one or more processors 150 on the SOC 110, and may assign manifests for I / O processors 160, 180, and / or one or more other I / O processors 706 to a manifest server 170. The manifest server 170 may then assign manifests received from the manifest server 130 for I / O processors 160, 180, and / or one or more other I / O processors 706 of the SOC 120 to the I / O processors 160, 180, and / or one or more other I / O processors 706 of the SOC 120. Figure 6 As shown, in some use cases, the inventory server 170 can also receive backup triggers and begin compiling and distributing inventories for the IO processors 160, IO processors 180, and / or one or more other IO processors 706 of the SOC 120 (e.g., as described above in conjunction with...). Figure 4 and Figure 5 (As described).
[0045] Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4 and Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 The formation illustrates what can be performed for allocation / dispatch, such as Figure 7 The example lists the communication sequence diagrams. (e.g.) Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4As shown, the inventory server of SOC 110 (e.g., inventory server 130) can request attributes for a transition having a transition identifier (transitionID) from the first SOC processor of SOC 110 (e.g., IO processor 140, IO processor 150, and / or one or more processors 152). The first SOC processor of SOC 110 can then return the attributes for that transition (e.g., t_inventory and t_execution). As shown, an IO processor (e.g., IO processor 160 or IO processor 180) can provide requests registered to the inventory server of SOC 120 (e.g., inventory server 170). Respondingly, the inventory server of SOC 120 can request attributes for a transition having a transition identifier from the IO processor of SOC 120. The IO processor of SOC 120 can then return the attributes for that transition (e.g., t_inventory and t_execution). As shown in the figure, the SOC 120's inventory server can provide attributes from the SOC 110's I / O processor to the SOC 120's inventory server via the SOC 120's transfer process.
[0046] like Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4 As shown, a requesting process (e.g., user process 700 or system process 702) can initiate a system change using a specific change identifier by providing a change request to the interface of the SOC 110's inventory server 130, and then wait for the change to complete. As shown, the interface of the SOC 110's inventory server can check whether any processors are registered. If no processor is registered for the change identifier, the interface of the SOC 110's inventory server can wait and retry until a timeout occurs. If any processor is registered, the interface of the SOC 110's inventory server can schedule the change for the specific change identifier. Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4 In the example, the request targets the first SOC processor of SOC 110 and the IO processor of SOC 120, and the previously provided (e.g., registered) attributes are used for the transition.
[0047] like Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4As shown, the SOC 110's inventory server can then examine the pending list and instruct the first SOC processor of SOC 110 and the I / O processor of SOC 120 to prepare to execute the list. As also shown, the first SOC processor of SOC 110 and the I / O processor of SOC 120 can return a success message (if the processor has an operation to perform for the requested change) or a failure message (if the processor has no operation to perform for the requested change) to the SOC 110's inventory server. Figure 8-1 , Figure 8-2 , Figure 8-3 , Figure 8-4 and Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 In the example, the first SOC processor of SOC 110 and the I / O processor of SOC 120 returned success messages.
[0048] like Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 As shown, in response to receiving a success message, the SOC 110's inventory server compiles inventories (including time t_actions as described herein) for each of the SOC 110's first SOC processor and the SOC 120's I / O processors, and dispatches these inventories to the SOC 110's first SOC processor and the SOC 120's I / O processors. Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 In the example, the list of I / O processors for the SOC 120 is distributed to the I / O processors of the SOC 120 via the SOC 120's list server. For example... Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 As shown, the first SOC processor of SOC110 and the IO processor of SOC120 can each perform the requested transformation at the time t_ action specified in the manifest.
[0049] like Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 As shown, the SOC 110's inventory server can check the deadline for transformation completion (e.g., by comparing the difference between action t_ and the current time with a margin threshold) and can start a status timer to expire at time action t_ + t_ execution. As illustrated, the SOC 110's inventory server can return action t_ to the interface, and the interface can wait until action t_ expires to report the requested transformation completion to the requesting process. Figure 8-5 , Figure 8-6 , Figure 8-7 and Figure 8-8 As shown, the inventory server of SOC 110 can also perform a status polling operation after the timer expires. During the polling operation, the inventory server of SOC 110 can request inventory status from the first SOC processor of SOC 110 and from the inventory server of SOC 120. As shown, the first SOC processor of SOC 110 and the inventory server of SOC 120 can return a status including the success or failure status of the inventory and the actual time t_action, and the inventory server of SOC 110 can then record the received status.
[0050] As discussed above, this subject matter provides an efficient system for coordinating the operations of multiple I / O processors and / or other processors to perform state transitions in a computing device or system. Using a manifest to control the timing of the I / O processors and / or other processors performing their respective operations enables coordination between the I / O processors and / or other processors without requiring them to communicate with each other regarding their respective operations. This reduction in communication saves power in the computing system or device and frees up resources for other processes within the computing system or device.
[0051] As described above, the computing device 100 can be implemented as a smartphone, tablet, laptop, or wearable device (such as a head-mounted device). Figure 9 This is a block diagram of a computing system 900 according to various aspects of the subject matter, which can be implemented as a smartphone, tablet device, laptop device, or wearable device (such as a head-mounted device). It should be understood that the components described herein can be mounted on either or both of the frame and / or mounting elements of the computing system 900. It should be understood that additional components, different components, or fewer components than those shown may be utilized within the scope of this subject matter disclosure.
[0052] like Figure 9As shown, computing system 900 may include a processor 902 (e.g., control circuitry) having one or more processing units, which include or are configured to access memory 904 on which instructions are stored. Instructions or computer programs may be configured to perform one or more of the operations or functions described with respect to computing system 900. Processor 902 may be implemented as any electronic device capable of processing, receiving, or transmitting data or instructions. For example, processor 902 may include one or more of the following: microprocessor, central processing unit (CPU), application-specific integrated circuit (ASIC), digital signal processor (DSP), or combinations of such devices. As described herein, the term "processor" is intended to cover a single processor or processing unit, multiple processors, multiple processing units, or one or more other suitably configured computing elements.
[0053] Memory 904 can store electronic data that can be used by computing system 900. For example, memory 904 can store electrical data or content, such as audio and video files, documents and applications, device settings and user preferences, timing and control signals or data for various modules, data structures or databases, etc. Memory 904 can be configured as any type of memory. By way of example only, memory 904 can be implemented as random access memory, read-only memory, flash memory, removable memory, other types of storage elements, or combinations of such devices.
[0054] The computing system 900 may also include a display unit 906 for displaying visual information to a user. The display unit 906 may provide visual (e.g., image or video) output. The display unit 906 may be or include an opaque, transparent, and / or translucent display. The display unit 906 may have a transparent or translucent medium through which light representing the image is directed to the user's eyes. The display unit 906 may utilize digital light projection, OLED, LED, uLED, liquid crystal on silicon, laser scanning light source, or any combination of these technologies. The medium may be an optical waveguide, holographic medium, optical combiner, optical reflector, or any combination thereof. In one embodiment, the transparent or translucent display may be configured to selectively become opaque. Projection-based systems may employ retinal projection technology, which projects graphic images onto a person's retina. Projection systems may also be configured to project virtual objects onto a physical environment, such as as a hologram or on a physical surface. The computing system 900 may include an optical sub-assembly configured to help optically adjust and correctly project image-based content displayed by the display unit 906 for close-range viewing. Optical sub-assemblies may include one or more lenses, mirrors, or other optical devices.
[0055] The computing system 900 may include an input / output component 910, which may include any suitable components for connecting the computing system 900 to other devices. Suitable components may include, for example, audio / video jacks, data connectors, or any additional or alternative input / output components. The input / output component 910 may include buttons, keys, or another feature that can serve as a keyboard for user operation. The input / output component 910 may include a microphone. The microphone may be operatively connected to the processor 902 for sound level detection and communication for further processing, as further described herein. The input / output component 910 may also include a speaker. The speaker may be operatively connected to the processor 902 to control speaker output, including sound level, as further described herein.
[0056] The computing system 900 may include one or more other sensors 912. Such sensors can be configured to sense virtually any type of feature, such as, but not limited to, images, pressure, light, touch, force, temperature, position, motion, etc. For example, sensors may be photodetectors, temperature sensors, light or optical sensors, atmospheric pressure sensors, humidity sensors, magnets, gyroscopes, accelerometers, chemical sensors, ozone sensors, particle counting sensors, and so on. As another example, sensors may be biosensors used to track biometric characteristics such as health and activity levels. Other user sensors may perform facial feature detection, facial movement detection, facial recognition, eye tracking, user emotion detection, user sentiment detection, voice detection, etc.
[0057] The computing system 900 may include communication circuitry 914 for communicating with one or more servers or other devices using any suitable communication protocol. For example, communication circuitry 914 may support Wi-Fi (e.g., the 802.11 protocol), Ethernet, Bluetooth, high-frequency systems (e.g., 900MHz, 2.4GHz, and 5.6GHz communication systems), infrared, TCP / IP (e.g., any protocol used in each layer of the TCP / IP layer), HTTP, BitTorrent, FTP, RTP, RTSP, SSH, any other communication protocol, or any combination thereof. Communication circuitry 914 may also include an antenna for transmitting and receiving electromagnetic signals.
[0058] The computing system 900 may include a battery 916 that can charge and / or power components of the computing system 900. The battery can also charge and / or power components connected to the computing system 900.
[0059] While various embodiments and aspects of this disclosure are shown in relation to head-mounted devices, it should be understood that the subject matter can be covered and applied to other electronic devices. Such electronic devices may be or include desktop computing devices, laptop computing devices, displays, televisions, portable devices, telephones, tablet computing devices, mobile computing devices, wearable devices, watches, and / or digital media players.
[0060] The embodiments within the scope of this disclosure may be implemented, in whole or in part, using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) on which one or more instructions are written. The tangible computer-readable storage medium may also be substantially non-transitory.
[0061] Computer-readable storage media can be any storage medium that can be read, written, or otherwise accessed by general-purpose or special-purpose computing devices, including any processing electronics and / or processing circuits capable of executing instructions. For example, without limitation, computer-readable media can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. Computer-readable media can also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash memory, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, track memory, FJG, and Millipede memory.
[0062] Furthermore, computer-readable storage media may include any non-semiconductor memory, such as optical disc storage devices, magnetic disk storage devices, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more embodiments, the tangible computer-readable storage medium may be directly coupled to a computing device, while in other embodiments, the tangible computer-readable storage medium may be indirectly coupled to a computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.
[0063] Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be implemented as executable or non-executable machine code, or as high-level language instructions that can be compiled to produce executable or non-executable machine code. Furthermore, instructions can also be implemented as data, or may include data. Computer executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without altering the underlying logic, functionality, processing, and output.
[0064] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, one or more specific implementations are executed by one or more integrated circuits such as ASICs or FPGAs. In one or more specific implementations, such integrated circuits execute instructions stored on the circuit itself.
[0065] According to various aspects of the present subject matter, a method is provided, comprising receiving a request to transition a computing system from a first state to a second state, and compiling a corresponding manifest for each of a plurality of processors of the computing system. Each manifest includes a transition identifier representing a command to transition from the first state to the second state and action timing for performing one or more operations associated with the transition identifier. These corresponding manifests are dispatched to the plurality of processors, and status reports regarding the transition from the first state to the second state are received from the plurality of processors.
[0066] The method may further include receiving a list time associated with a transition identifier from each of the plurality of processors, wherein the list time corresponds to the lead time required by the plurality of processors before performing the one or more operations, and wherein the action time is based on the list time. The action time may be based on the maximum list time received from the plurality of processors. The action time may also be based on a transmission time, wherein the transmission time corresponds to the time period between assigning a corresponding list to the plurality of processors and receiving the corresponding list by the plurality of processors.
[0067] The method may further include receiving, from each of the plurality of processors, an execution time associated with a transition identifier, wherein the execution time corresponds to an approximate time period for performing the one or more operations associated with the transition identifier. The action time may be based on the execution time associated with a previous list assigned to the plurality of processors. The method may further include: setting a timer based on the action time and execution time; and polling the plurality of processors when the timer expires, wherein in response to the polling, a status report is received from the plurality of processors.
[0068] The method may further include: notifying the plurality of processors of the list before assigning the plurality of lists to the plurality of processors; and receiving a success indicator from the plurality of processors in response to notifying the plurality of processors of the list.
[0069] According to various aspects of the present subject matter, a non-transitory computer-readable medium is provided that stores instructions which, when executed by one or more processors, cause the one or more processors to perform operations. These operations include: receiving a request to transition a computing device from a first state to a second state; and compiling a corresponding list for each of a plurality of processors for the computing device. Each list includes a transition identifier representing a command to transition from the first state to the second state and an action time for performing one or more operations associated with the transition identifier. These operations also include: dispatching the corresponding list to the plurality of processors; polling the plurality of processors when a timer expires; and, in response to the polling, receiving a status report from the plurality of processors regarding the transition from the first state to the second state.
[0070] These operations may also include receiving a list time associated with a transition identifier from each of the plurality of processors, wherein the list time corresponds to the lead time required by the plurality of processors before performing the one or more operations, and wherein the action time is based on the list time. The action time may be based on the maximum list time received from the plurality of processors. The action time may also be based on a transmission time, wherein the transmission time corresponds to the time period between assigning the corresponding list to the plurality of processors and receiving the corresponding list by the plurality of processors.
[0071] These operations may also include receiving execution time associated with a transition identifier from each of the plurality of processors, wherein the execution time corresponds to an approximate time period for performing the one or more operations associated with the transition identifier. The action time may be based on the execution time associated with a previous list assigned to the plurality of processors.
[0072] These operations may also include: notifying the multiple inventories of the inventories before assigning them to the multiple processors; and receiving a success indicator from the multiple processors in response to notifying the multiple processors of the inventories.
[0073] According to various aspects of the present subject matter, an apparatus is provided, comprising a memory storing a plurality of computer programs and one or more processors configured to execute instructions of the plurality of computer programs to receive a request to transition the apparatus from a first state to a second state, and to receive, from each of the plurality of processors, a manifest time associated with a transition identifier representing a command to transition from the first state to the second state. The manifest time corresponds to the lead time required by the plurality of processors before performing one or more operations associated with the transition identifier. A corresponding manifest is compiled for each of the plurality of processors of the apparatus, wherein each manifest includes a transition identifier and an action time for performing the one or more operations associated with the transition identifier, wherein the action time is based on the manifest time. The corresponding manifest is then assigned to the plurality of processors, and a status report regarding the transition from the first state to the second state is received from the plurality of processors.
[0074] The action time can also be based on transmission time, and wherein the transmission time corresponds to the time period between the assignment of the corresponding list to the plurality of processors and the receipt of the corresponding list by the plurality of processors. The one or more processors can be further configured to execute instructions to receive an execution time associated with a transition identifier from each of the plurality of processors, wherein the execution time corresponds to an approximate time period for performing the one or more operations associated with the transition identifier.
[0075] The one or more processors may be further configured to execute instructions to set a timer based on the action time and execution time, and to poll the processors when the timer expires, wherein a status report is received from the processors in response to the polling. The one or more processors may be further configured to execute instructions to notify the processors of the list before it is dispatched to them, and to receive a success indicator from the processors in response to notifying them of the list.
[0076] Unless otherwise specified, elements mentioned in the singular do not imply uniqueness, but rather refer to one or more. For example, a “one” module can refer to one or more modules. Elements prefixed with “a,” “an,” “the,” or “the” do not exclude the existence of additional identical elements without further restrictions.
[0077] The collection and transfer of data from applications to other computing devices can occur. This disclosure envisions that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data may include demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, images, data or records related to a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other personal information.
[0078] This disclosure recognizes that the use of such personal information data in the techniques of this invention can be used to benefit users. This disclosure also contemplates uses of personal information data that are beneficial to users. For example, health and fitness data can be used according to a user's preferences to provide insights into their overall health status, or can be used as positive feedback to individuals using the technology to pursue health goals.
[0079] This disclosure assumes that entities responsible for collecting, analyzing, disclosing, transmitting, storing, or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, it is expected that such entities will implement and consistently apply privacy practices generally recognized as meeting or exceeding industry or governmental requirements for protecting user privacy. Such information regarding the use of personal data should be prominently displayed and easily accessible to the user, and should be updated as the collection and / or use of data changes. Users' personal information should be collected only for lawful use. Furthermore, such collection / sharing should only occur after receiving user consent or other lawful grounds provided for in applicable law. In addition, such entities should consider taking any necessary steps to protect and safeguard access to such personal information data and ensure that others with access to personal information data comply with their privacy policies and processes. Additionally, such entities may be subject to third-party evaluations to demonstrate their compliance with widely accepted privacy policies and practices. Furthermore, policies and practices should be tailored to the specific types of personal information data collected and / or accessed, and made applicable to applicable laws and standards, including specific jurisdictional considerations that may be used to impose higher standards. For example, in the United States, the collection or access to certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly.
[0080] Regardless of the foregoing, this disclosure also envisions specific implementations allowing users to selectively block the use or access to their personal information data. That is, this disclosure anticipates providing hardware and / or software components to prevent or block access to such personal information data. For example, in the context of video conferencing, this technology can be configured to allow users to opt-in or opt-out at any time during or after service registration to participate in the collection of personal information data. In addition to providing "opt-in" and "opt-out" options, this disclosure also envisions providing notifications related to access to or use of personal information. For example, users may be notified when downloading an application that their personal information data will be accessed, and then reminded again just before the application accesses the personal information data.
[0081] Furthermore, the purpose of this disclosure is to manage and process personal information data to minimize the risk of unintentional or unauthorized access or use. Once data is no longer needed, this risk can be minimized by limiting data collection and deleting data. Additionally, and where applicable, including in certain health-related applications, data deidentification can be used to protect user privacy. Deidentification can be facilitated, where appropriate, by removing identifiers, controlling the amount or specificity of stored data (e.g., collecting location data at the city level rather than the address level), controlling how data is stored (e.g., aggregating data among users), and / or other methods such as differentiated privacy.
[0082] Therefore, while this disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, it is also contemplated that various embodiments can be implemented without access to such personal information data. That is, various embodiments of the present invention will not be unable to function properly due to the absence of all or part of such personal information data.
[0083] Titles and subtitles (if any) are for convenience only and do not limit the invention. The word “exemplary” is used to indicate that it is used as an example or illustration. In the sense of using the terms “comprising,” “having,” etc., such terms are intended to be inclusive in a manner similar to the term “including,” as they are interpreted as including when used as transitional words in claims. Relational terms such as “first” and “second” are used to distinguish one entity or action from another without necessarily requiring or implying any actual such relationship or order between these entities or actions.
[0084] Phrases such as aspect, that aspect, on the other hand, some aspects, one or more aspects, implementation, that implementation, another implementation, some implementations, one or more implementations, implementation scheme, that implementation scheme, another implementation scheme, some implementation schemes, one or more implementation schemes, configuration, that configuration, another configuration, some configurations, one or more configurations, subject matter, disclosure, this disclosure, other variations, etc., are for convenience and do not imply that disclosures involving one or more such phrases are essential to the subject matter, or that such disclosures apply to all configurations of the subject matter. Disclosures involving one or more such phrases may apply to all configurations or one or more configurations. Disclosures involving one or more such phrases may provide one or more examples. Phrases such as aspect or some aspects may refer to one or more aspects, and this applies similarly to other foregoing phrases.
[0085] The phrase "at least one" preceding a series of items, separated by the terms "and" or "or," modifies the list as a whole rather than for each individual member. The phrase "at least one" does not require selection of at least one item; rather, it allows for the inclusion of at least one item from any given item and / or at least one item from any combination of items and / or at least one item from each item. For example, each phrase in "at least one of A, B, and C" or "at least one of A, B, or C" refers only to A, only to B, or only to C; any combination of A, B, and C; and / or at least one of each of A, B, and C.
[0086] It should be understood that the specific order or hierarchy of the disclosed steps, operations, or processes is an illustration of exemplary methods. Unless otherwise expressly stated, it is understood that the specific order or hierarchy of steps, operations, or processes may be performed in different orders. Some steps, operations, or processes may be performed simultaneously. The appended method claims (if any) present the elements of the various steps, operations, or processes in an exemplary order, but this does not imply limitation to the specific order or hierarchy presented. These may be performed sequentially, linearly, in parallel, or in different orders. It should be understood that the described instructions, operations, and systems may generally be integrated together in a single software / hardware product or packaged into multiple software / hardware products.
[0087] On one hand, the term "coupled" can refer to direct coupling. On the other hand, the term "connection" can refer to indirect connection.
[0088] Terms such as top, bottom, front, back, side, horizontal, and vertical refer to any frame of reference, not the usual gravitational frame of reference. Therefore, such terms can extend upward, downward, diagonally, or horizontally within a gravitational frame of reference.
[0089] This disclosure is provided to enable those skilled in the art to practice the various aspects described herein. In some cases, well-known structures and components are shown in block diagram form to avoid obscuring the concepts of the subject matter. This disclosure provides various examples of the subject matter, and the subject matter is not limited to these examples. Various modifications to these aspects will be apparent to those skilled in the art, and the principles described herein can be applied to other aspects.
[0090] All structural and functional equivalents of elements throughout the various aspects described herein that are known or later become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Furthermore, nothing disclosed herein is intended to be made public, regardless of whether such disclosure is expressly stated in the claims. Pursuant to paragraph 6 of 35 U.S.SC § 112, no claim element needs to be interpreted unless it is expressly stated using the phrase “the method is used for,” or, in the case of a method claim, using the phrase “the steps are used for.”
[0091] The title, background, brief description of the figures, abstract, and figures are incorporated herein and are provided as illustrative examples rather than as limiting descriptions. They are not intended to limit the scope or meaning of the claims. Furthermore, as will be seen in the detailed description, illustrative examples are provided for the purpose of simplifying the disclosure, and various features are combined in various specific embodiments. The disclosed methods should not be construed as reflecting an intention to require more features than expressly recited in each claim. Rather, as reflected in the claims, the inventive subject matter lies in all features of fewer than those in a single disclosed configuration or operation. The claims are thus incorporated into the detailed description, each claim being a separate claim on its own.
[0092] The claims are not intended to be limited to the aspects described herein, but are to be given the full scope consistent with the language of the claims and to cover all legal equivalents. Nevertheless, none of these claims contain subject matter that is inconsistent with applicable patent law, nor should they be interpreted in this manner.
Claims
1. A method for state transition, comprising: Receive a request to transition the computing system from state one to state two; Each of the plurality of processors in the computing system receives a list time associated with a transition identifier representing a transition from the first state to the second state, wherein the list time corresponds to the lead time required by the plurality of processors before performing one or more operations associated with the transition identifier; Compile a corresponding manifest for each of the plurality of processors, wherein each manifest includes the transition identifier and an action time for performing the one or more operations associated with the transition identifier, wherein the action time is based on the manifest time; The corresponding lists are assigned to the plurality of processors; as well as Receive status reports from the plurality of processors regarding the transition from the first state to the second state.
2. The method of claim 1, wherein the action time is based on the maximum inventory time received from the plurality of processors.
3. The method of claim 1, wherein the action time is further based on transmission time, wherein the transmission time corresponds to the time period between assigning the corresponding list to the plurality of processors and receiving the corresponding list by the plurality of processors.
4. The method according to claim 1, further comprising: Receive the execution time associated with the transition identifier from each of the plurality of processors. The execution time corresponds to the time period for performing the one or more operations associated with the transformation identifier.
5. The method of claim 4, wherein the action time is based on the execution time associated with a previous list assigned to the plurality of processors.
6. The method according to claim 4, further comprising: Set a timer based on the action time and the execution time; as well as When the timer expires, the plurality of processors are polled. In response to the polling, the status report is received from the plurality of processors.
7. The method according to claim 1, further comprising: The corresponding list is notified to the plurality of processors before it is assigned to them; as well as In response to notifying the plurality of processors of the corresponding list, a success indicator is received from the plurality of processors.
8. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: Receive a request to transition the computing device from a first state to a second state; Each of a plurality of processors of a computing device receives a list time associated with a transition identifier representing a transition from the first state to the second state, wherein the list time corresponds to the lead time required by the plurality of processors before performing one or more operations associated with the transition identifier; Compile a corresponding manifest for each of the plurality of processors, wherein each manifest includes the transition identifier and an action time for performing the one or more operations associated with the transition identifier, wherein the action time is based on the manifest time; The corresponding lists are assigned to the plurality of processors; Poll the multiple processors when the timer expires; as well as In response to the polling, a status report regarding the transition from the first state to the second state is received from the plurality of processors.
9. The non-transitory computer-readable medium of claim 8, wherein the action time is based on a maximum inventory time received from the plurality of processors.
10. The non-transitory computer-readable medium of claim 8, wherein the action time is further based on transmission time, wherein the transmission time corresponds to the time period between dispatching the corresponding list to the plurality of processors and receiving the corresponding list by the plurality of processors.
11. The non-transitory computer-readable medium of claim 8, wherein the operation further comprises: Receive the execution time associated with the transition identifier from each of the plurality of processors. The execution time corresponds to the time period for performing the one or more operations associated with the transformation identifier.
12. The non-transitory computer-readable medium of claim 11, wherein the action time is based on the execution time associated with a previous list assigned to the plurality of processors.
13. The non-transitory computer-readable medium of claim 8, wherein the operation further comprises: The corresponding list is notified to the plurality of processors before it is assigned to them; as well as In response to notifying the plurality of processors of the corresponding list, a success indicator is received from the plurality of processors.
14. An apparatus for state transition, comprising: Memory; and A first system-on-chip (SOC) having a first inventory server, the first inventory server being configured as follows: Receive a request to transition the device from a first state to a second state; Each of a plurality of processors receives a list time associated with a transition identifier representing a transition from the first state to the second state, wherein the list time corresponds to the lead time required by the plurality of processors before performing one or more operations associated with the transition identifier; Compile a corresponding manifest for each of the plurality of processors for the device, wherein each manifest includes the transition identifier and an action time for performing the one or more operations associated with the transition identifier, wherein the action time is based on the manifest time; The corresponding lists are assigned to the plurality of processors; as well as Receive status reports from the plurality of processors regarding the transition from the first state to the second state.
15. The device of claim 14, wherein the action time is further based on transmission time, and wherein the transmission time corresponds to the time period between assigning the corresponding list to the plurality of processors and receiving the corresponding list by the plurality of processors.
16. The apparatus of claim 14, wherein the first inventory server is further configured to: Receive the execution time associated with the transition identifier from each of the plurality of processors. The execution time corresponds to the time period for performing the one or more operations associated with the transformation identifier.
17. The apparatus of claim 16, wherein the first inventory server is further configured to: Set a timer based on the action time and the execution time; and When the timer expires, the plurality of processors are polled. In response to the polling, the status report is received from the plurality of processors.
18. The apparatus of claim 14, wherein the first inventory server is further configured to: The corresponding list is notified to the plurality of processors before it is assigned to them; and In response to notifying the plurality of processors of the corresponding list, a success indicator is received from the plurality of processors.
19. The device of claim 14, further comprising a second system-on-a-chip (SOC), wherein the plurality of processors includes a first plurality of processors on the first SOC and a second plurality of processors on the second SOC.
20. The device of claim 19, further comprising a second inventory server on the second SOC.
21. The apparatus of claim 20, wherein the first inventory server is configured to partially distribute the corresponding inventory to the plurality of processors by distributing the corresponding inventory to the plurality of processors on the second SOC via the second inventory server.
22. The apparatus of claim 20, wherein the second inventory server is configured to, in response to determining that the first inventory server or the first SOC is unavailable: For the second transition from the third state to the fourth state, a corresponding manifest is compiled for each of the second plurality of processors used in the device; The corresponding manifest compiled by the second manifest server for the second transformation is dispatched to the second plurality of processors; and Receive a status report from the second plurality of processors regarding the second transition from the third state to the fourth state.
23. The device of claim 22, wherein the fourth state includes a transparent video state, in which only transparent video and notifications are displayed on the device's display.
Citation Information
Patent Citations
Centralized Configuration Data Management For Distributed Clients
US20080196107A1
