Source: https://patents.google.com/patent/US8797334B2/en
Timestamp: 2019-10-16 03:31:04
Document Index: 630637146

Matched Legal Cases: ['Application No. 200980145376', 'Application No. 10', 'Application No. 2011', 'Application No. 10', 'Application No. 099146304', 'Application No. 200980145376']

US8797334B2 - Facilitating efficient switching between graphics-processing units - Google Patents
Facilitating efficient switching between graphics-processing units Download PDF
US8797334B2
US8797334B2 US12/683,024 US68302410A US8797334B2 US 8797334 B2 US8797334 B2 US 8797334B2 US 68302410 A US68302410 A US 68302410A US 8797334 B2 US8797334 B2 US 8797334B2
US12/683,024
US20110164045A1 (en
Thomas W. Costa
Simon M. Douglas
2010-01-06 Priority to US12/683,024 priority Critical patent/US8797334B2/en
2010-02-04 Assigned to APPLE INC. reassignment APPLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COSTA, THOMAS W., DOUGLAS, SIMON M., REDMAN, DAVID J.
2011-07-07 Publication of US20110164045A1 publication Critical patent/US20110164045A1/en
2014-08-05 Publication of US8797334B2 publication Critical patent/US8797334B2/en
The disclosed embodiments provide a system that facilitates seamlessly switching between graphics-processing units (GPUs) to drive a display. In one embodiment, the system receives a request to switch from using a first GPU to using a second GPU to drive the display. In response to this request, the system uses a kernel thread which operates in the background to configure the second GPU to prepare the second GPU to drive the display. While the kernel thread is configuring the second GPU, the system continues to drive the display with the first GPU and a user thread continues to execute a window manager which performs operations associated with servicing user requests. When configuration of the second GPU is complete, the system switches the signal source for the display from the first GPU to the second GPU.
The disclosed embodiments relate to techniques for switching between graphics-processing units (GPUs) in a computer system. More specifically, the disclosed embodiments relate to techniques that “preheat” a GPU to facilitate a rapid switchover to the GPU.
Advances in computational performance have enabled computer systems to effectively manipulate large amounts of graphical data at high transfer rates. For example, computer systems are commonly used to render complex scenes for video games, and to manipulate video streams and digital photographs. To facilitate rapid processing of such graphical data, computer systems typically include specialized graphics processors (referred to as “graphics-processing units” (GPUs)) to drive graphical display devices, such as computer system monitors. Unfortunately, powerful GPUs consume large amounts of power and can cause heat dissipation problems.
One solution to this problem is to save power during low-activity periods by switching from a high-power GPU that provides higher performance to a low-power GPU with lower performance. However, the process of initializing a GPU in preparation for a switching operation involves a significant number of configuration operations, which can consume a considerable amount of time. For example, during the process of initializing a GPU, the GPU's mode settings need to be initialized, color lookup tables need to be populated, and associated drivers need to be reconfigured. These configuration operations can cause significant delays in computer system responsiveness, which can be annoying to the user.
Hence, what is needed is a technique that facilitates efficiently switching between GPUs without the above-described problems.
The disclosed embodiments provide a system that facilitates seamlessly switching between graphics-processing units (GPUs) to drive a display. During operation, the system receives a request to switch from using a first GPU to using a second GPU to drive the display. In response to this request, the system uses a kernel thread which operates in the background to configure the second GPU in preparation for driving the display. While the kernel thread is configuring the second GPU, a user thread continues to execute a window manager which performs operations associated with servicing user requests. When configuration of the second GPU is complete, the system switches the signal source for the display from the first GPU to the second GPU.
In some embodiments, configuring the second GPU involves first powering up the second GPU, and then performing hardware-configuration operations for the second GPU.
In some embodiments, performing the hardware-configuration operations involves: reinitializing drivers for the second GPU; performing a display probing operation to determine characteristics of the display; copying mode settings from the first GPU to the second GPU; and copying at least one color lookup table (CLUT) from the first GPU to the second GPU.
In some embodiments, prior to switching the signal source from the first GPU to the second GPU, the user thread executes a streamlined code path which performs software-configuration operations to initialize application-visible data structures associated with the window manager and the second GPU, and also renders a first image for the second GPU.
In some embodiments, executing the streamlined code path involves repeating some operations which were previously performed by the kernel thread to configure the second GPU, wherein the repeated operations will have already been completed by the kernel thread or will access cached values, and will consequently execute more quickly.
In some embodiments, after the signal source is switched, the system uses the kernel thread to tear down the configuration for the first GPU. This tear-down process can involve: removing application-visible data structures associated with the window manager and the first GPU; removing driver state information associated with the first GPU; and removing power from the first GPU.
In one embodiment, the first GPU is a low-power GPU which is integrated into a processor chipset, and the second GPU is a high-power GPU which resides on a discrete GPU chip, or vice versa. In another embodiment, the first GPU and the second GPU have substantially identical circuitry and substantially similar capabilities. In yet another embodiment, the first GPU is a general-purpose processor which runs graphics code, and the second GPU is a special-purpose graphics processor, or vice versa.
Another embodiment also provides a system that switches from using a first GPU to using a second GPU to drive a display. During operation, the system drives the display from the first GPU while a thread configures the second GPU to drive the display. Next, after configuration of the second GPU is complete, the system switches the signal source which drives the display from the first GPU to the second GPU.
FIG. 1 illustrates a computer system which can switch between different graphics sources to drive the same display in accordance with one embodiment.
FIG. 2 illustrates the structure of a graphics multiplexer in accordance with one embodiment.
FIG. 3 presents a flow chart illustrating the operations involved in switching between GPUs in accordance with one embodiment.
FIG. 4 presents a timeline of the operations involved in switching between GPUs in accordance with one embodiment.
FIG. 5 presents a flow chart illustrating hardware-configuration operations performed by a kernel thread in accordance with one embodiment.
FIG. 6 presents a flow chart illustrating software-configuration operations performed by a user thread in accordance with one embodiment.
FIG. 7 presents a flow chart illustrating operations involved in tearing down the configuration of a GPU in accordance with one embodiment.
FIG. 8 presents a high-level flow chart of the process of switching between GPUs in accordance with one embodiment.
In existing computer systems that support multiple GPUs, when there is a decision to switch GPUs, the systems typically uses a generic reconfiguration mechanism to initialize the new GPU. This generic reconfiguration mechanism executes the same code path that is executed when a new external monitor is plugged in. However, unlike the case of a new external monitor, a GPU switch does not involve changing displays.
In the described embodiments, this fact enables the system to “preheat” the new GPU, which involves making a number of configuration assumptions, and copying some configuration information (e.g., color profile/information) between the GPUs before the window manager is notified of the switch. To hide the effects of these configuration operations from the user, the configuration operations can be performed by a kernel thread which operates in the background. While the kernel thread is performing configuration operations in the background, the window manager can continue executing normally in the foreground. This allows the system to continue interacting with the user during the “preheat” process.
Because the kernel thread pre-configures the GPUs to be very close to each other, performing the actual GPU switch involves executing a simpler “streamlined code path” that is tuned for performing the switch. For example, during the preheat process, the kernel thread can cache data about the currently running GPU (e.g., type of video card, modes supported). This allows the streamlined code path to subsequently access the cached data rather than querying it from the currently running GPU. Note that caching information indicating which modes are supported by the GPU is advantageous because the system needs to know how to set the modes in the new GPU to match the modes in the currently running GPU. This prevents stalls because the system does not try to access the new GPU while it is powering-on. The graphics drivers have also been changed to take advantage of the fact that the operation is a GPU switch, thereby eliminating certain initialization operations that may be required when a new external monitor is plugged in but are not required during a GPU switch.
By using the “preheat” process and a streamlined code path to perform a GPU switch, there is no longer any need to put the two GPUs in a mirrored state for a length of time (e.g., 2-4 seconds) during which client applications can actually discern the mirrored state and users can perceive disturbances on the driven display and in interactions with the window manager. Note that some of the disclosed embodiments actually do place the GPUs in a mirrored state, but only for the time required to paint a first image and switch (e.g., about 16 milliseconds). Moreover, the system locks out clients during this time, so the clients never see the mirrored state. Because clients are only locked out for about 16 milliseconds in some embodiments, the user perceives little to no disturbance on the display or in the user's interactions with the window manager. In contrast, in existing systems, the window manager may be blocked for 2-4 seconds during a GPU switch.
This new, more-efficient GPU-switching process is described in more detail below, but first we describe some of the associated computer system hardware.
FIG. 1 illustrates a computer system 100 which can switch between two graphics sources to drive a display in accordance with one embodiment. Referring to FIG. 1, the two graphics sources include (1) a discrete GPU 110 and (2) an embedded GPU 118, which can each independently drive display 114. The graphics source which drives display 114 is determined by GPU multiplexer (GMUX) 120, which selects between the two graphics sources. Hence, computer system 100 can use GMUX 120 to select a graphics source based on current operation conditions.
During operation, display stream 122 from discrete GPU 110, and display stream 124 from embedded GPU 118 both feed into data inputs of GMUX 120. Source select signal 126 feeds into a select input of GMUX 120 and determines which one of the two graphics sources will drive display 114. In the illustrated embodiment, source select signal 126 is produced by bridge chip 104, which includes specific logic for generating source select signal 126. (Note that source select signal 126 can also be produced by a logic block other than bridge chip 104. For example, source select signal 126 can be produced by one or more processing units 102.) The display stream from the selected graphics source then feeds into display 114.
In one embodiment, discrete GPU 110 and embedded GPU 118 communicate through data path 128 to synchronize their display streams. Note that synchronizing the display streams can involve synchronizing both the respective timing signals and the respective data signals.
In one embodiment, discrete GPU 110 is a high-performance GPU which consumes a significant amount of power relative to embedded GPU 118, a lower-performance GPU which consumes a smaller amount of power. In this embodiment, when the graphics-processing load is light, the system switches from using discrete GPU 110 to using embedded GPU 118 to drive display 114, and subsequently powers down discrete GPU 110, thereby saving power. On the other hand, when the graphics-processing load becomes heavy again, the system switches graphics sources from embedded GPU 118 back to discrete GPU 110.
Although we have described a system that includes a discrete GPU and an integrated GPU, the disclosed technique can generally work in any computer system comprising two or more GPUs, wherein each of the GPUs can independently drive the display. Moreover, these multiple GPUs can have different operating characteristics and power-consumption levels. Hence, the disclosed technique is not limited to the specific embodiment illustrated in FIG. 1.
Also note that the above-described process for switching between graphics sources does not involve shutting down or reinitializing the computer system. As a result, the switching process can take substantially less time than it would have if a re-initialization had been required. Consequently, the disclosed technique facilitates rapid and frequent switching between the graphics sources.
Graphics Multiplexer
FIG. 2 illustrates the internal structure of the graphics multiplexer 120 (described above with reference to FIG. 1) in accordance with one embodiment. Referring to FIG. 2, display stream 122 from discrete GPU 110 and display stream 124 from embedded GPU 118 feed into data clock capture blocks 205 and 210, respectively. Data clock capture blocks 205 and 210 de-serialize display streams 122 and 124 and also extract respective data clock signals 221 and 222.
These data clock signals 221 and 222 feed into clock MUX 225, which selects one of data clocks 221 and 222 to be forwarded to display stream assembler 240. In one embodiment, the GMUX controller 235 provides select signal 236 to clock MUX 225. Alternatively, select signal 236 can be provided by other sources, such as a processor in one or more processor units 102 or another controller.
Next, display streams 122 and 124, with data clocks separated, feed into data buffers 215 and 220, respectively. Data buffers 215 and 220 examine display streams 122 and 124 to determine when blanking intervals occur, and produce respective blanking interval signals 233 and 234. Data buffers 215 and 220 also produce output data streams that feed into data MUX 230.
Blanking interval signals 233 and 234 feed into GMUX controller 235, which compares blanking intervals 233 and 234 to determine how much overlap, if any, exists between the blanking intervals of display streams 122 and 124. (Note that blanking interval signals 233 and 234 can indicate vertical or horizontal blanking intervals.) If GMUX controller 235 determines that blanking intervals 233 and 234 have a sufficient amount of overlap, GMUX controller 235 asserts select signal 236 as the blanking intervals begin to overlap. This causes clock MUX 225 and data MUX 230 to switch between display streams 122 and 124 during the period when their blanking intervals overlap. Because the switching occurs during the blanking intervals, the switching process will not be visible on display 114.
Finally, the output of data MUX 230 and the selected data clock 223 feed into display stream assembler 240, which re-serializes the data stream before sending the data stream to display 114.
FIG. 3 provides an overview of the operations involved in switching between GPUs in accordance with one embodiment. First, the operating system receives a request to switch from using the first GPU to using a second GPU as a signal source for driving the display (step 302). This request can be initiated based on an increase (or a decrease) in graphics workload. This request can be generated by the operating system or by background process which monitors the graphics workload. In response to this request, the operating system spawns (or activates) a kernel thread which operates in the background to perform hardware-configuration operations for the second GPU to prepare the second GPU to drive the display (step 304). The system also continues to drive the display with the first GPU. Note that, while the kernel thread is configuring the second GPU, the operating system continues to run a user thread to execute a window manager which performs operations associated with servicing user requests (step 306). Next, after the kernel thread has performed the hardware-configuration operations for the second GPU, the user thread executes a streamlined code path that performs software-configuration operations for the second GPU (step 308). Then, the operating system switches the signal source which drives the display from the first GPU to the second GPU (step 310). Finally, after the signal source is switched, the operating system uses the kernel thread to tear down the configuration for the first GPU (step 312).
These above-described configuration operations are illustrated in more detail in the timeline which appears in FIG. 4. The left-hand column in FIG. 4 illustrates the actions of a user thread 402, which executes a window manager for the computer system in the foreground. In contrast, the right-hand column in FIG. 4 illustrates the actions of kernel thread 404 which performs configuration and teardown operations in the background.
As mentioned above, when the request to switch is received, the operating system uses kernel thread 404 to preflight various hardware-configuration operations 408. Referring to the flow chart illustrated in FIG. 5, these hardware-configuration operations can involve powering up the second GPU (step 502) and also reinitializing drivers for the second GPU (step 504). Kernel thread 404 also performs a “display probing” operation to determine characteristics of the monitor which is being driven (step 506). Next, kernel thread 404 copies various types of configuration information from the first GPU to the second GPU. For example, kernel thread 404 can copy mode settings from the first GPU to the second GPU (step 508), where these mode settings can specify the resolution and depth of the display. Kernel thread 504 can also copy the contents of a color lookup table (CLUT) from the first GPU to the second GPU (step 510).
While the kernel thread 404 is configuring the second GPU, user thread 402 continues to execute a window manager (for a windowing system) which performs operations associated with servicing user requests 406. This allows the user to interact with the windowing system without interruption while the hardware-configuration operations are taking place.
When kernel thread 404 completes the hardware-configuration operations, it sends an interrupt 409 to the window manager. This interrupt 409 causes the window manager to execute a streamlined code path that performs various software-configuration operations 410. Referring to the flow chart illustrated in FIG. 6, these software-configuration operations can involve initializing application-visible data structures containing state information for the second GPU (step 602). The system also renders a first image for the second GPU (step 604). Note that some of these software configuration operations (which do not involve accessing data structures in user space) can possibly be performed by the kernel thread 404.
Note that the configuration operations performed while switching between GPUs differ from the generic configuration operations performed after a new monitor is plugged in because during a switching operation the new frame buffer is not visible until after the switch occurs. This enables some time-consuming generic configuration operations to be elided. For example, because the new frame buffer is not initially visible, it is unnecessary to wipe the contents of the frame buffer. It is also unnecessary to perform color lookup table (CLUT) fading operations to gradually fade down and fade up the display. The system can also elide the rendering of the last frame to the first GPU because the output of the first GPU will be frozen on a penultimate frame during the switchover process.
Next, the system switches from using the first GPU to using a second GPU as a signal source for driving the display. In one embodiment, the output of the first GPU is held fixed during a selected blanking interval, and the selected blanking interval is “stretched” until the second GPU enters a blanking interval, at which time the switching operation takes place. This ensures that the switching operation only freezes the display for a single frame (about 16 milliseconds), which is almost imperceptible to the user.
Next, after the switchover is complete, the window manager sends an interrupt 412 back to the kernel thread 404. In response to interrupt 412, kernel thread 404 performs a number of operations to “tear down” the configuration of the first GPU 414. Note that, while these tear-down operations are being performed, the window manager continues to perform operations associated with servicing user requests 416.
Referring to the flow chart illustrated in FIG. 7, during a tear-down operation kernel thread 404 removes application-visible data structures containing state information associated with the first GPU (step 702), and removes driver state associated with the first GPU (step 704). Kernel thread 404 also halts accelerators (step 706) and audio processing (step 708) associated with the first GPU. Then, kernel thread 404 stalls and waits for applications to pull state information off of the first GPU (step 710). Finally, kernel thread 404 removes power from the first GPU (step 712).
The vertical timeline which appears on the right-hand side of FIG. 4 illustrates, in one embodiment, how using the kernel thread 404 can effectively hide the configuration operations involved in switching GPUs from the user. First, the kernel thread 404 performs the preflight (also referred to as “preheat”) hardware-configuration operations 408 for about 1000 milliseconds while the window manager continues to service user requests 406. Next, the window manager executes a streamlined code path which performs software-configuration operations 410 for about 130 milliseconds. During this small amount of time (about ⅛ of a second), the interactions with the user may be affected, but this is barely perceptible. Also, as mentioned above, the switchover operations require only about 16 milliseconds, which is not likely to be perceptible to the user. Finally, the tear-down process 414 requires about 400 milliseconds for the kernel thread to complete. However, during this time the window manager is able to service user requests.
FIG. 8 presents a high-level flow chart illustrating the process of switching between GPUs in accordance with one embodiment. During operation, the system drives the display from a first GPU while a thread configures a second GPU to drive the display (step 802). Next, after configuration of the second GPU is complete, the system switches the signal source which drives the display from the first GPU to the second GPU (step 804).
Moreover, the preceding description is presented to enable any person skilled in the art to make and use the disclosed embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the disclosed embodiments. Thus, the disclosed embodiments are not limited to the embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.
1. A method for switching from using a first graphics-processing unit (GPU) to using a second GPU to drive a display, comprising:
using a first thread executing on a central processing unit to execute a window manager that performs operations associated with servicing user requests;
receiving a request to switch from using the first GPU to using the second GPU as a signal source for driving the display;
using a kernel-based second thread executing on the central processing unit to configure the second GPU in preparation for driving the display in response to the request;
continuing to use the first thread to execute the window manager to service user requests while the second thread is configuring the second GPU; and
switching the signal source which drives the display from the first GPU to the second GPU when configuration of the second GPU is complete.
2. The method of claim 1, wherein the act of using the second thread to configure the second GPU comprises:
powering up the second GPU; and
performing hardware-configuration operations to configure hardware for the second GPU.
3. The method of claim 2, wherein the act of performing hardware-configuration operations involves one or more of the following:
reinitializing drivers for the second GPU;
performing a display probing operation to determine characteristics of the display;
copying mode settings from the first GPU to the second GPU; and
copying at least one color lookup table (CLUT) from the first GPU to the second GPU.
4. The method of claim 1, wherein prior to switching the signal source from the first GPU to the second GPU, the method further comprises using the first thread to execute a code path to:
perform software-configuration operations to initialize application-visible data structures associated with the window manager and the second GPU; and
perform a first set of rendering operations to render a first image for the second GPU.
5. The method of claim 4, wherein the act of using the first thread to execute the code path involves repeating some operations which were previously performed by the second thread to configure the second GPU.
6. The method of claim 5, wherein the repeated operations access cached values.
7. The method of claim 1, further comprising using the second thread to tear down a configuration for the first GPU after the signal source is switched to the second GPU.
8. The method of claim 7, wherein the act of using the second thread to tear down the configuration for the first GPU comprises:
removing application-visible data structures associated with the window manager and the first GPU;
removing driver state associated with the first GPU; and
removing power from the first GPU.
9. The method of claim 1, wherein the first GPU is integrated into a chipset of the central processing unit, and the second GPU resides on a discrete GPU chip.
10. The method of claim 1, wherein the first GPU and the second GPU have substantially identical circuitry and similar capabilities.
11. The method of claim 1, wherein the first GPU is a general-purpose processor which runs graphics code and the second GPU is a special-purpose graphics processor.
12. A computer system that switches from a first graphics processing unit (GPU) to a second GPU to drive a display, comprising:
a first GPU communicatively coupled to the display and processor;
a second GPU communicatively coupled to the display and processor; and
an operating system comprising program code configured to execute on the processor which, upon receiving a request to switch from using the first GPU to using the second GPU as a signal source for driving the display, causes the processor to:
use a first thread to execute a window manager that performs operations associated with servicing user requests;
use a kernel-based second thread to configure the second GPU in preparation for driving the display while the first thread continues to execute the window manager; and
switch the signal source which drives the display from the first GPU to the second GPU after configuration of the second GPU is complete.
13. The computer system of claim 12, wherein the program code to cause the processor to use the second thread to configure the second GPU comprises program code to cause the processor to use the second thread to:
power up the second GPU; and
perform hardware-configuration operations to configure hardware for the second GPU.
14. The computer system of claim 13, wherein the program code to cause the processor to use the second thread to perform hardware-configuration operations comprises program code to cause the processor to use the second thread to perform one or more of the following operations:
15. The computer system of claim 12, wherein the operating system further comprises program code to cause the processor to use the first thread to execute a code path prior to switching the signal source from the first GPU to the second GPU, the code path configured to:
16. The computer system of claim 15, wherein execution of the code path causes the first thread to repeat one or more operations which were previously performed by the second thread to configure the second GPU.
17. The computer system of claim 16, wherein one or more of the repeated operations are configured to access data cached by the second thread.
18. The computer system of claim 12, wherein the operating system further comprises program code to cause the processor to use the second thread to tear down the first GPU after the signal source is switched to the second GPU.
19. The computer system of claim 18, wherein the program code to cause the processor to use the second thread to tear down the first GPU comprises program code to cause the processor to use the second thread to:
remove application-visible data structures associated with the window manager and the first GPU;
remove driver state associated with the first GPU; and
remove power from the first GPU.
20. A computer-readable storage medium having instructions stored thereon to cause one or more processors to:
use a first thread executing on one of the one or more processors to execute a window manager that performs operations associated with servicing user requests;
receive a request to switch from using a first GPU to using a second GPU as a signal source for driving a display;
use a kernel-based second thread executing on one of the one or more processors to configure the second GPU in preparation for driving the display in response to the request;
continue to use the first thread to execute the window manager to service user requests while the second thread is configuring the second GPU; and
21. The computer-readable storage medium of claim 20, wherein the instructions to cause the one or more processors to use the second thread to configure the second GPU comprise instructions to cause the one or more processors to use the second thread to:
22. The computer-readable storage medium of claim 21, wherein the instructions to cause the one or more processors to use the second thread to perform the hardware-configuration operations comprise instructions to cause the one or more processors to use the second thread to perform one or more of the following operations:
23. The computer-readable storage medium of claim 20, further comprising instructions to cause the one or more processors to use the first thread to execute a code path prior to switching the signal source from the first GPU to the second GPU, the code path configured to:
24. The computer-readable storage medium of claim 23, wherein execution of the code path causes the first thread to repeat one or more operations which were previously performed by the second thread to configure the second GPU.
25. The computer-readable storage medium of claim 24, wherein one or more of the repeated operations are configured to access data cached by the second thread.
26. The computer-readable storage medium of claim 20, further comprising instructions to cause the one or more processors to use the second thread to tear down a configuration for the first GPU after the signal source is switched to the second GPU.
27. The computer-readable storage medium of claim 26, wherein the instructions to cause the one or more processors to use the second thread to tear down the configuration for the first GPU comprise instructions to cause the one or more processors to use the second thread to:
US12/683,024 2010-01-06 2010-01-06 Facilitating efficient switching between graphics-processing units Active 2032-07-24 US8797334B2 (en)
US12/683,024 US8797334B2 (en) 2010-01-06 2010-01-06 Facilitating efficient switching between graphics-processing units
KR1020127020428A KR101634153B1 (en) 2010-01-06 2010-12-22 Facilitating efficient switching between graphics-processing units
JP2012548031A JP5684285B2 (en) 2010-01-06 2010-12-22 Method and system for facilitating efficient switching between graphic processing units
CN 201080063786 CN102763082B (en) 2010-01-06 2010-12-22 Method and system for facilitating efficient switching between graphics-processing units
KR1020147023900A KR101711714B1 (en) 2010-01-06 2010-12-22 Facilitating efficient switching between graphics-processing units
EP10799244.8A EP2521970B1 (en) 2010-01-06 2010-12-22 Facilitating efficient switching between graphics-processing units
PCT/US2010/061814 WO2011084829A1 (en) 2010-01-06 2010-12-22 Facilitating efficient switching between graphics-processing units
TW103129604A TWI566201B (en) 2010-01-06 2010-12-28 There facilitate efficient method of switching between the computer system and a graphics processing unit
TW099146303A TWI463431B (en) 2010-01-06 2010-12-28 Facilitating efficient switching between graphics-processing units
HK13104303.9A HK1177512A1 (en) 2010-01-06 2013-04-09 Facilitating efficient switching between graphics-processing units
US14/450,789 US9336560B2 (en) 2010-01-06 2014-08-04 Facilitating efficient switching between graphics-processing units
JP2014158668A JP2015014794A (en) 2010-01-06 2014-08-04 Method and system for facilitating efficient switching between graphics-processing units
US14/450,789 Continuation US9336560B2 (en) 2010-01-06 2014-08-04 Facilitating efficient switching between graphics-processing units
US20110164045A1 US20110164045A1 (en) 2011-07-07
US8797334B2 true US8797334B2 (en) 2014-08-05
ID=43754741
US12/683,024 Active 2032-07-24 US8797334B2 (en) 2010-01-06 2010-01-06 Facilitating efficient switching between graphics-processing units
US14/450,789 Active 2030-01-09 US9336560B2 (en) 2010-01-06 2014-08-04 Facilitating efficient switching between graphics-processing units
US (2) US8797334B2 (en)
EP (1) EP2521970B1 (en)
JP (2) JP5684285B2 (en)
KR (2) KR101634153B1 (en)
CN (1) CN102763082B (en)
HK (1) HK1177512A1 (en)
TW (2) TWI463431B (en)
WO (1) WO2011084829A1 (en)
CN104519413A (en) * 2014-12-29 2015-04-15 乐视致新电子科技（天津）有限公司 Image switching method and image switching apparatus
CN104991811B (en) * 2015-08-07 2019-07-26 北京元心科技有限公司 The method of adjustment and intelligent terminal of running state of process when shielding system switches
US10192055B2 (en) * 2016-01-10 2019-01-29 Apple Inc. Log in/log out process for EDU mode
US10133868B2 (en) 2016-01-10 2018-11-20 Apple Inc. Switching users and sync bubble for EDU mode
CN105549698B (en) * 2016-01-28 2018-12-21 浪潮(北京)电子信息产业有限公司 A kind of GPU work station suitable for BIM industry
US4102491A (en) 1975-12-23 1978-07-25 Instrumentation Engineering, Inc. Variable function digital word generating, receiving and monitoring device
EP0272655A2 (en) 1986-12-23 1988-06-29 Dainippon Screen Mfg., Co., Ltd. Method and apparatus for generating look-up table data
US4862156A (en) 1984-05-21 1989-08-29 Atari Corporation Video computer system including multiple graphics controllers and associated method
EP0497377B1 (en) 1991-01-31 1997-03-26 Lsi Logic Corporation Genlock frequency generator
EP0482678B1 (en) 1984-07-23 1998-01-14 Texas Instruments Incorporated Video system
JPH11331638A (en) 1998-03-13 1999-11-30 Toshiba Ave Co Ltd Synchronization control circuit
EP1158484A2 (en) 2000-05-25 2001-11-28 Seiko Epson Corporation Processing of image data supplied to image display apparatus
US20020033812A1 (en) 2000-09-18 2002-03-21 Van Vugt Henricus Antonius Gerardus Impeller driven traveling sprinkler
US20020163523A1 (en) 2001-01-15 2002-11-07 Katsumi Adachi Image display device
US20040075622A1 (en) 2002-10-19 2004-04-22 Shiuan Yi-Fang Michael Continuous graphics display for dual display devices during the processor non-responding period
US6778187B1 (en) 1999-12-27 2004-08-17 Oak Technology, Inc. Methods and devices to process graphics and/or video data
US20050093854A1 (en) 2003-10-30 2005-05-05 Silicon Graphics, Inc. System for synchronizing display of images in a multi-display computer system
US20050099431A1 (en) 2003-11-07 2005-05-12 Herbert Franz H. System and method for display device characterization, calibration, and verification
WO2005059880A1 (en) 2003-12-18 2005-06-30 Thomson Licensing Method and apparatus for generating a look-up table in the video picture field
US6943844B2 (en) 2001-06-13 2005-09-13 Intel Corporation Adjusting pixel clock
US20050231498A1 (en) 2001-07-10 2005-10-20 Canon Kabushiki Kaisha Display driving method and display apparatus utilizing the same
US20060017847A1 (en) 2004-07-22 2006-01-26 Microsoft Corporation Video synchronization by adjusting video parameters
US20060119603A1 (en) 2004-12-03 2006-06-08 Hewlett-Packard Development Company, L. P. System and method of controlling a graphics controller
CN1797345A (en) 2004-12-30 2006-07-05 微软公司 Systems and methods for virtualizing graphics subsystems
US7127521B2 (en) 2002-04-03 2006-10-24 Via Technologies, Inc. Method and apparatus for reducing power consumption in network linking system
US20060267988A1 (en) 2005-05-27 2006-11-30 Hussain Syed A Synchronizing multiple cards in multiple video processing unit (VPU) systems
US20060294492A1 (en) 2005-06-28 2006-12-28 Canon Kabushiki Kaisha Application management system, application management method, program, and storage medium
CN1892509A (en) 2005-06-28 2007-01-10 佳能株式会社 Application management system application management method, program and storage medium
US20070009444A1 (en) 2003-06-04 2007-01-11 Hiroshi Yamaguchi Method for preparing powder exhibiting low susceptibility to electrification
US7206004B2 (en) 2003-01-31 2007-04-17 Seiko Epson Corporation Display driver and electro-optical device
US20070139422A1 (en) 2005-12-15 2007-06-21 Via Technologies, Inc. Switching method and system for multiple GPU support
JP2007179225A (en) 2005-12-27 2007-07-12 Sony Corp Information processing system, information processing method, and program thereof
US20070279407A1 (en) 2006-05-30 2007-12-06 Maximino Vasquez Switching of display refresh rates
US7309287B2 (en) 2003-12-10 2007-12-18 Nintendo Co., Ltd. Game machine having display screen with touch panel
US20080030510A1 (en) 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
TW200809692A (en) 2006-03-22 2008-02-16 Toshiba Kk Playback apparatus and playback method using the playback apparatus
JP2008040602A (en) 2006-08-02 2008-02-21 Nec Corp Content management system and method and program using file server
US20080079736A1 (en) 2006-10-03 2008-04-03 Maass Scott R Dual processor accelerated graphics rendering
TW200821984A (en) 2006-04-20 2008-05-16 Nvidia Corp Work based clock management for display sub-system
US20080117217A1 (en) 2003-11-19 2008-05-22 Reuven Bakalash Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080117222A1 (en) 2006-11-22 2008-05-22 Nvidia Corporation System, method, and computer program product for saving power in a multi-graphics processor environment
US20080129699A1 (en) 2006-11-27 2008-06-05 Samsung Electronics Co., Ltd. Portable terminal and method for controlling the same
EP1962265A1 (en) 2007-02-23 2008-08-27 Samsung SDI Co., Ltd. Organic light emitting diode disply and driving method thereof
US20090153528A1 (en) 2007-12-13 2009-06-18 Orr Stephen J Settings control in devices comprising at least two graphics processors
US20100083026A1 (en) 2008-09-26 2010-04-01 Apple Inc. Inter-processor communication channel including power-down functionality
US20100091025A1 (en) 2008-10-13 2010-04-15 Mike Nugent Seamless display migration
US20100091039A1 (en) 2008-10-14 2010-04-15 Apple Inc. Color correction of electronic displays
US20100164963A1 (en) 2008-12-31 2010-07-01 Apple Inc. Switch for graphics processing units
US20100164964A1 (en) 2008-12-31 2010-07-01 Apple Inc. Display system with improved graphics abilities while switching graphics processing units
US20100164966A1 (en) 2008-12-31 2010-07-01 Apple Inc. Timing controller for graphics system
US7849246B2 (en) 2007-01-29 2010-12-07 Panasonic Corporation I2C bus control circuit
US7865744B2 (en) 2002-09-04 2011-01-04 Broadcom Corporation System and method for optimizing power consumption in a mobile environment
US7882282B2 (en) 2008-05-21 2011-02-01 Silicon Laboratories Inc. Controlling passthrough of communications between multiple buses
US20110032275A1 (en) 2008-10-14 2011-02-10 Apple Inc. Color correction of electronic displays utilizing gain control
US20110164045A1 (en) 2010-01-06 2011-07-07 Apple Inc. Facilitating efficient switching between graphics-processing units
US20110164051A1 (en) 2010-01-06 2011-07-07 Apple Inc. Color correction to facilitate switching between graphics-processing units
US20110216078A1 (en) 2010-03-04 2011-09-08 Paul Blinzer Method, System, and Apparatus for Processing Video and/or Graphics Data Using Multiple Processors Without Losing State Information
US8217951B2 (en) 2007-07-26 2012-07-10 Lg Electronics Inc. Graphic data processing apparatus and method
EP1061434B1 (en) 1999-06-15 2012-12-26 ATI Technologies ULC Method and apparatus for rendering video
JPH066733A (en) 1992-06-22 1994-01-14 Toshiba Corp Image display device
JPH066708A (en) 1992-06-23 1994-01-14 Mitsubishi Electric Corp Picture display device
AU2002338475A1 (en) 2001-04-23 2002-11-05 Quantum 3D, Inc. System and method for synchronization of video display outputs from multiple pc graphics subsystems
SE523732C2 (en) * 2002-02-01 2004-05-11 Goalart Ab Apparatus, method and computer program product for modeling causality in a flow system
JP2009288430A (en) 2008-05-28 2009-12-10 Toshiba Corp Information processing apparatus
2010-01-06 US US12/683,024 patent/US8797334B2/en active Active
2010-12-22 WO PCT/US2010/061814 patent/WO2011084829A1/en active Application Filing
2010-12-22 CN CN 201080063786 patent/CN102763082B/en active IP Right Grant
2010-12-22 KR KR1020127020428A patent/KR101634153B1/en active IP Right Grant
2010-12-22 KR KR1020147023900A patent/KR101711714B1/en active IP Right Grant
2010-12-22 EP EP10799244.8A patent/EP2521970B1/en active Active
2010-12-22 JP JP2012548031A patent/JP5684285B2/en active Active
2010-12-28 TW TW099146303A patent/TWI463431B/en active
2010-12-28 TW TW103129604A patent/TWI566201B/en active
2013-04-09 HK HK13104303.9A patent/HK1177512A1/en unknown
2014-08-04 US US14/450,789 patent/US9336560B2/en active Active
2014-08-04 JP JP2014158668A patent/JP2015014794A/en active Pending
US6229573B1 (en) 1998-03-13 2001-05-08 Kabushiki Kaisha Toshiba Synchronization control circuit
US7382333B2 (en) 2004-07-09 2008-06-03 Elitegroup Computer Systems Co., Ltd. Display processing switching construct utilized in information device
US20070171230A1 (en) 2005-12-27 2007-07-26 Sony Corporation Information processing apparatus, information processing method and program
WO2007140404A3 (en) 2006-05-30 2008-02-07 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US7698579B2 (en) 2006-08-03 2010-04-13 Apple Inc. Multiplexed graphics architecture for graphics power management
US8199155B2 (en) 2006-11-22 2012-06-12 Nvidia Corporation System, method, and computer program product for saving power in a multi-graphics processor environment
US20090079746A1 (en) 2007-09-20 2009-03-26 Apple Inc. Switching between graphics sources to facilitate power management and/or security
Author Unknown, "Serial-MII Specification," Cisco Systems, Inc., Revision 2.1, pp. 1-7, Sep. 10, 2002.
First Office Action issued by the Chinese Patent Office on Oct. 15, 2012 in connection with Chinese Application No. 200980145376.9.
First Office Action received in KR Application No. 10-2011-7010810, dated Oct. 30, 2012.
Gardner, Floyd M., "Charge Pump Phase-Lock Loops", IEEE Transactions on Communications, vol. Com-28, No. 11, Nov. 1980, pp. 1849-1858.
International Search Report and Written Opinion received in PCT Application No. PCT/US2010/061814, dated Apr. 11, 2011.
International Search Report and Written Opinion received in PCT Application No. PCT/US2010/061820, dated Apr. 11, 2011.
International Search Report received in PCT Application PCT/US2009/069851, dated Aug. 9, 2010.
International Search Report; International App. No. PCT/US2009/060550 filed Oct. 13, 2009 mailed on Oct. 4, 2010.
Kleiman, et al., "Practical Multi-Thread Programming," ASCII Corporation, 1998, first edition, pp. 117-118.
Mann, Justin "Nvidia prepares hybrid SLI technology to save power," TechSpot.com, Jun. 25, 2007, downloaded from http://www .techspot.com/news/25854-nvid ia-prepares-hybrid-slitechnology-to-save-power.html, Jun. 29, 2009, 3 pages.
NVIDIA Hybrid SLI Technology, Technology Overview, Apr. 2008, v01, 2 pages.
NVIDIA User Guide, Introducing Hybrid SLI Technology, User Guide, May 2008, DS-03957-001-v01, 21 pages.
NVIDIA User Guide, Introducing Hybrid SLI Technology, User Guide, May 2008, DS-03957-001—v01, 21 pages.
Office Action issued by Japanese Patent Office on Jan. 21, 2013 in connection with Japanese Application No. 2011-532191.
Office Action received in KR Application No. 10-2011-7010810, dated May 27, 2013.
Office Action received in TW Application No. 099146304, dated Aug. 23, 2013.
Second Office Action received in CN Application No. 200980145376.9, dated Mar. 19, 2013.
US20110164045A1 (en) 2011-07-07
JP2015014794A (en) 2015-01-22
HK1177512A1 (en) 2017-08-04
WO2011084829A1 (en) 2011-07-14
JP2013516696A (en) 2013-05-13
TWI463431B (en) 2014-12-01
US20140340411A1 (en) 2014-11-20
TW201140492A (en) 2011-11-16
TW201447808A (en) 2014-12-16
US9336560B2 (en) 2016-05-10
CN102763082B (en) 2015-03-25
EP2521970A1 (en) 2012-11-14
KR101634153B1 (en) 2016-06-28
JP5684285B2 (en) 2015-03-11
TWI566201B (en) 2017-01-11
KR20120112721A (en) 2012-10-11
CN102763082A (en) 2012-10-31
KR101711714B1 (en) 2017-03-02
KR20140110105A (en) 2014-09-16
EP2521970B1 (en) 2016-10-26
US8493397B1 (en) 2013-07-23 State machine control for a pipelined L2 cache to implement memory transfers for a video processor
US8102398B2 (en) 2012-01-24 Dynamically controlled power reduction method and circuit for a graphics processor
US8094159B2 (en) 2012-01-10 Method and apparatus for frame buffer management
US20070094519A1 (en) 2007-04-26 Electronic device and electronic device control method
US8103131B2 (en) 2012-01-24 Compositing in multiple video processing unit (VPU) systems
CN102216978B (en) 2013-11-06 Seamless display migration
CN104145242B (en) 2017-02-08 A cable having a hot-swap features and fade
TWI431465B (en) 2014-03-21 Method, article of manufacture, apparatus and system for regulating power consumption
JP4843144B2 (en) 2011-12-21 Method and apparatus for powering up an integrated device from a low power state
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COSTA, THOMAS W.;DOUGLAS, SIMON M.;REDMAN, DAVID J.;REEL/FRAME:023900/0721