WO2012050559A1 - First and second software stacks and discrete and integrated graphics processing units - Google Patents
First and second software stacks and discrete and integrated graphics processing units Download PDFInfo
- Publication number
- WO2012050559A1 WO2012050559A1 PCT/US2010/052205 US2010052205W WO2012050559A1 WO 2012050559 A1 WO2012050559 A1 WO 2012050559A1 US 2010052205 W US2010052205 W US 2010052205W WO 2012050559 A1 WO2012050559 A1 WO 2012050559A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- graphics processing
- processing unit
- software stack
- discrete
- display
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Definitions
- a computing system can have a graphical processor to process instructions related to images to be displayed on a display,
- a computing system may have a graphics processing unit integrated into the chipset of a computing system.
- a computing system may have a discrete graphics processing unit that is coupled to a chipset of a computer system.
- Fig. 1 is a block diagram of a virtual computing system according to an example embodiment
- Fig. 2 is a block diagram of a virtual computing system according to an example embodiment
- Fig. 3 is a block diagram of a virtual computing system according to an example embodiment
- Fig. 4 is a block diagram of a virtual computing system according to an example embodiment
- Fig. 5 is a block diagram of a computing system according to an example embodiment.
- Fig. 8 is flow diagram of a method according to an example embodiment of the invention.
- a computing system may include an integrated graphics processing unit.
- An integrated graphics processing unit is integrated in the package or die of another component, for example the integrated graphic processing unit may be part of a controller hub or may be integrated in a package or die with a processor.
- a package can be a housing for an electronic circuit and a die may be a semiconductor such as silicon containing electronic circuits.
- the processor may be for example a general purpose processor that can process data from a variety of software.
- the controller hub maybe for example a general controller hub that may include for example a graphic memory controller hub that provides a connection to a processor, memory, firmware, graphics processing unit and may also include other controller hubs such as the input output controller hub.
- a discrete graphics processing unit can be a component not integrated as part of another component such as the controller hub or processor.
- a computing system can include an integrated graphics processing unit as part of a controller hub or as part of the processor and can also contain a discrete graphics processing unit.
- the computing system may utilize a discrete graphics processing unit, an integrated graphics processing unit or may utilize both graphics processing units.
- the computing system may allow a user to select which graphics processing unit is operational.
- the integrated graphics processing unit may for example use less power than the discrete graphics processing unit so that the system saves power.
- the system may also utilize both graphics units simultaneously to drive separate display outputs for example.
- a hardware virtualizer such as a hypervisor creates virtual images of hardware.
- a software stack such as a virtual machine or virtual appliance can use the virtual image of the hardware.
- the hardware virtualizer communicates the operations of the virtual image of the hardware to the physical hardware for processing. If there is more than one software stack, each of the software stacks can provide data to a virtual graphics processing unit that is part of the hardware virtualizer.
- the hardware virtualizer can then process the data on an integrated graphics processing unit or a discrete graphics processing unit.
- a system can include an integrated graphics processing unit and a discrete graphics processing unit.
- the hardware virtualizer can send data from the first software stack to the integrated graphics processing unit and a second software stack to discrete graphics processing unit.
- FIG. 1 is a block diagram of a virtual computing system according to an example embodiment.
- the computing system 100 includes hardware 120.
- the hardware 120 can be components of the computing system for example a processor, controller hub, hard disk drive, or input output devices among other components.
- the hardware 120 can also include a discrete graphics processing unit 125 and an integrated graphics processing unit 130.
- the integrated graphics processing unit 130 maybe for example part of another component such as the controller hub or processor of the computing system 100.
- the integrated graphics processing unit can communicate with at least one of the processor, memory, input output devices, and discrete graphics processing units 125.
- the discrete graphics processing unit 125 and the integrated graphics processing unit 130 may have different processing capabilities.
- the discrete graphics processing unit 125 may run at a higher clock speed or have more processing cores than an integrated graphics processing unit 130.
- the discrete graphics processing unit 125 may also have dedicated memory for example that is used by the discrete graphics processing unit 120 and the integrated graphics processing unit 130 may use the system random access memory that may be used by the system processor.
- the hardware virtualizer 1 15 can be hardware, software or both hardware and software that generates virtual simulations of hardware components for use by a software stack.
- the first software stack 105 and the second software stack 1 10 can run on the virtual hardware images created by the hardware virtualizer 1 15.
- the hardware virtualizer 1 15 can use either the discrete graphics processing unit 125 or the integrated graphics processing unit 130 to, for example, execute code, process data, transfer data or other functions associated with the first software stack or the second software stack.
- the hardware vsrtualizer 1 15 may make a determination on whether the discrete graphics processing unit 125 or the integrated graphics processing unit 130 is used by the first software stack 105 or the second software stack 1 10. The determination may be based at least in part on graphics processing usage such as the amount of instructions to execute or data to process from the first software stack 105 or from the second software stack 1 10 as well as the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130.
- a software stack may be a virtual machine running an operating system such as Windows ®, Linux, Unix or another operating system.
- the hardware virtualizer 1 15 may determine that the first software stack may use more graphics processing capabilities than the second software stack and utilizes either the discrete graphics processing unit 125 or the integrated graphics processing unit 130 depending on the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130 for the first software stack. For example if the discrete graphics processing unit 125 can process data faster than the integrated graphics processing unit 130 the hardware virtualizer 1 15 may use the discrete graphics processing unit 125 for the first software stack 105 if the first software stack 105 can use more graphic processing capabilities than the second software stack 1 10.
- the hardware virtualizer 1 15 may determine which of the graphics processing units is used by a software stack at the initialization of a new software stack, the discontinuation of a software stack or the change in amount of use of a software stack. For example the determination may be preconfigured, user configured, or dynamically switch the graphics processing units between the software stacks, !f the hardware virtualizer 1 15 determines which of the graphics processing units a software stack uses at an initialization of a new software stack the hardware virtualizer may use stored criteria for making this determination, for example, the hardware virtualizer 1 15 may use data related to a prior execution of a software stack.
- the hardware virtualizer 1 15 may be user configured such as providing a user with a graphical user interface allowing the user to select which of the software stacks is processed by one of the discrete graphics processing unit 125 any integrated graphics processing unit 130.
- the user may be able to select for example that the first software stack such as Windows ® compatible software, may use the discrete graphics processing unit 125 and that the second software stack 1 10 containing, for example Linux compatible software may use the integrated graphics processing unit 130.
- the hardware virtualizer 1 15 can monitor the first software stack 105 and the second software stack 1 10 and switch the software stacks between the discrete graphics processing unit 125 and the integrated graphics processing unit 130 according to which software stack can more efficiently use the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130.
- the efficient use of the capabilities of a graphic processing unit can be based on for example the type of instruction, the amount of instructions, the amount of data, and the speed of a graphics processing unit among other considerations.
- a graphics processing core can be the portion of the graphics processing unit that executes instructions, processes data or both. If there are more than one processing cores, either multiple discrete graphic processing units 125, multiple integrated graphics processing units 130, multiple processing cores within the discrete graphics processing unit 125 or multiple processing cores within the integrated graphics processing unit 130 then each software stack can use a processing core or may use multiple processing cores.
- each of the software stacks may use one core, one or two of the software stacks may use 2 cores while the third uses one core, or two software stacks may use one core and the third software stack may use 3 cores. If there are more software stacks than there are graphics processing cores a software stack may have to wait for another software stack to finish using a graphic processing core or the hypervisor can evict one of the software stacks to free up a graphic processing core.
- a malicious attack may be an attack that access images from another software stack. For example images from one software stack that includes a bank account number may be accessed by malicious software on another software stack if the software stacks have access to each of the graphics processing units.
- At least one of the hardware and software can provide a protection mechanism so that a software stack is not able to inappropriately access the graphics processing or memory of another software stack.
- the inappropriate access may be any access of the graphics processing or memory of another software stack, access restricted by time of access, access restricted by content of access or another access restriction to the graphic processing or memory of the software stack.
- the protection mechanism may for example prevent access to data at a memory location such as data stored in a range of memory addresses.
- FIG. 2 is a block diagram of a virtual computing system according to an example embodiment.
- the computer system 200 includes hardware 220.
- a hardware virtualizer 215 can use the hardware 220 to execute a software stack.
- a first software stack 205 can execute on a hardware image generated by the hardware virtualizer 215.
- a second software stack 210 can execute on a hardware image generated by the hardware virtualizer 215.
- the hardware 220 can include a discrete graphics processing unit 225 and an integrated graphics processing unit 230.
- the hardware 220 may be connected to a first display 245.
- the hardware 220 may also be connected to a second display 250.
- the display may be for example a liquid crystal display (LCD), plasma, light emitting diode (LED), digital light processor (DIP), cathode ray tube (CRT) or another technology.
- the first display 245 may be connected to the discrete graphics
- the first display 245 may display images from the discrete graphics processing unit 225 or the integrated graphics processing unit 230.
- the images on the first display can be from the first software stack 205 or the second software stack 210.
- the hardware virtualizer 215 can determine whether the first software stack 205 or the second software stack 210 supplies the image data to the discrete graphics processing unit 225 or to the integrated graphics processing unit 230.
- the hardware virtualizer 215 can provide to the hardware 220 an indication that allows the hardware to display the images on the first display 245 or the second display 250.
- the first display 245 may display images from the discrete graphics processing unit 225 and a second display 250 may display images from the integrated graphics processing unit 230.
- the first display 245 may display an image from the discrete graphics processing unit 215 and an image from the integrated graphics processing unit 230. If the first display 245 is displaying images from the discrete graphics processing unit 225 and the integrated graphics processing unit 230 then the images from the discrete graphics processing unit 225 may be in a first area on the first display 245 and the images from the integrated graphics processing unit 230 can be displayed in a second area.
- the areas displaying the images on the first display may be a window.
- the size of the window may be determined by the hardware virtualizer 215 for example the hardware virtualizer may determine the size of the window from the resolution of the image from the software stack.
- the size of the windows showing the image from first software stack 205 or the second software stack 210 may be adjusted by the user. For example if a first window includes an image from the first software stack 205 the side, top or bottom of the window could be moved to adjust the size of the window.
- the first display 245 has a set resolution and the size of the images are determined by the resolution output from the discrete graphics
- the resolution output can be determined by the hardware 220, hardware virtualizer 215, the first software stack 205, the second software stack or a combination of these. If the resolution output by the hardware 220 of the images from the first software stack 205 is lower than the resolution of the first display 245 then the image on the first display 245 may be smaller than the entire display. For example if the resolution of the first display 245 is 1600 pixels by 1200 pixels and the resolution received from the hardware is 1024 pixels by 788 pixels then the image may not be expanded to the entire screen automatically if display is receiving images from both the first software stack 205 and the second software stack 210.
- Coordination between the images from the first software stack 205 and the second software stack 210 can occur at one or more than one level in the system.
- the coordination may occur at the stack level, the hardware virtualizer level, or the hardware level.
- the coordination may be between the discrete graphics processing unit 225 and the integrated graphics processing unit 230. The coordination allows images from the first or the second software stacks to be display on a display or multiple displays without interfering with images of the other software stack.
- the output of the computing system 200 can be from the integrated graphic processing unit 230, the discrete graphics processing unit 225 or both as shown by the dotted connections between the first display 245 and the discrete graphics processing unit 225 or the integrated graphic processing unit 230 and also between a second display 250 either the graphics processing unit the first display is connected to or another graphics processing unit, in one embodiment either the integrated graphic processing unit 230 or the discrete graphics processing unit 225 outputs to a display or multiple displays and the graphics processing unit without an output to the displays coordinates with the graphics processing unit with the output for displaying the images from a software stack using the graphics processing unit without an output to a display connected.
- coordination between the discrete graphic processing unit 225 and the integrated graphics processing unit 230 can allow an image from the first software stack 205 to be on the first display 245, the second display 250 or both the first display 245 and the second display 250.
- the coordination between the discrete graphic processing unit 225 and the integrated graphics processing unit 230 can allow an image from the second software stack 210 to be on the first display 245, the second display 250 or both the first display 245 and the second display 250.
- An image from the first software stack and an image from the second software stack can be displayed on the first display, the second display, can be tiled, cascaded, overlapped, sized, moved or manipulated in another way if the discrete graphics processing unit 225 and the integrated graphics processing unit 230 coordinate.
- the coordination between the discrete graphic processing unit 225 and the integrated graphic processing unit 230 may be initiated by the hardware virtualizer 215.
- FIG. 3 is a block diagram of a virtual computing system according to an example embodiment.
- the computing system 300 can include a first software stack 305 and a second software stack 310 running on a hardware virtualizer 315.
- the hardware virtualizer 315 can generate virtual hardware to be used by the first software stack 305 and the second software stack 310.
- the hardware virtualizer uses the hardware 320 which includes a discrete graphics processing unit 325 and an integrated graphics processing unit 330 to run the first software stack 305 and the second software stack 310.
- the discrete graphics processing unit 355 can connect to a first frame buffer 355.
- the first frame buffer 355 receives the image data from the discrete graphics processing unit 325.
- the image data can be for example frames stored in the frame buffer that are going to be displayed by a display.
- a frame may be for example data representing every pixel in an image that is going to be displayed.
- the discrete graphics processing unit 325 and the integrated graphics processing unit can share the first frame buffer 355.
- a second frame buffer may be connected to the integrated graphics processing unit.
- a discrete graphics processing unit 325 may be connected to the first frame buffer 355 and the integrated graphics processing unit 360 may be connected to a second frame buffer 360. If the discrete graphics processing unit 325 and the integrated graphics processing unit 330 have access to the each other's frame buffers the data from one software stack may be unsecure. For example if the first software stack 305 were generating data that was processed by the discrete graphics processing unit 325 and the first frame buffer 355 storing the image data was accessible by the integrated graphics processing unit 330 then the second software stack 310 may have access to the data generated by the first software stack 305.
- malware may be able to access an image, for example if the first software stack was generating an image of bank account numbers and a malicious software on the second software stack 310 had access to the data in the first frame buffer 355 the second software stack 310 could have access to the images of the bank account numbers.
- the first software stack 305 or the second software stack 310 may not have access to a frame buffer if another software stack is actively storing data in the frame buffer.
- the first frame buffer 355 and the second frame buffer 380 are connected to a display buffer 365.
- a display buffer 365 may be used to connect the hardware 320 to a display.
- the image data in the display buffer 365 may be rendered on the display and may include image data from the first display buffer 355 and the second display buffer 360. If the first software stack 305 and the second software stack 310 do not have access to read data from the display buffer the images are secure from being retrieved by the another software stack.
- the first software stack 305 can access a portion of the display buffer for example the first software stack 305 may have access to a set of lower addresses of the display buffer 365 and not to the higher addresses.
- the second software stack 310 may have access to a different portion of the display buffer than the first software stack 305, for example the second software stack 310 may have access to a set up higher addresses of the display buffer 365 and not the lower addresses. Preventing the first software stack from accessing the portion of the display buffer used by the second software stack and the second software stack from accessing the portion of the display buffer 365 used by the first software stack secures the images in the display buffer from the first software stack from malicious code on a second software stack and secures the images in the display buffer from the second software stack from malicious code on a first software stack.
- Fig. 4 is a block diagram of a virtual computing system according to an example embodiment.
- the computing system 400 can include a first software stack 405 and a second software stack 410.
- the first software stack 405 and the second software stack 410 can run on a virtual machine 440.
- the virtual machine 440 can be an operating system, for example Windows®.
- the first software stack 405 and the second software stack may be applications.
- the applications may be for example a word processor, spreadsheet, database, image processor, media player or another application.
- a hardware virtuaiizer 415 can generate virtual images of hardware.
- the hardware virtuaiizer can use the hardware 420 of the computing system 400.
- the hardware 420 can include a discrete graphics processing unit 425 and an integrated graphics processing unit 430.
- the discrete graphics processing unit 425 can receive image data from the first software stack 405 and the integrated graphics processing unit can receive image data from the second software stack 410.
- Fig. 5 is a block diagram of a computing system according to an example embodiment.
- the computing system 500 includes hardware 520.
- the hardware can include a processor 585 connected to a controller hub 580.
- the components such as the processor 565, the controller hub 580 and the integrated graphics processing unit 530 may be in different configurations within single or multiple packages or dies.
- the processor 565, controller hub 580, and integrated graphics processing unit 530 may be in a package or die 595.
- the processor 565 and integrated graphic processing unit 531 may be in a package or die 596.
- the controller hub and integrated graphic processing unit may be in a package or die 597.
- An integrated graphics processing unit 530 may be in a package or die 596 with the processor 565 and may be also be in a package or die 597 with the controller hub 580.
- the controller hub 580 may be separated into a north bridge and a south bridge.
- the controller hub 580 may include an integrated graphics processing unit 530.
- the controller hub 580 may by connected to a discrete graphics processing unit 525. !f the controller hub 580 is separated into a north bridge and a south bridge the discrete graphics processing unit 525 may be connected to either the north bridge or the south bridge.
- the controller hub 580 may also be connected to memory 570.
- the memory 570 may be for example a volatile storage such as random access memory or may be a non-volatile memory such as Flash memory, read only memory, programmable read only memory, a hard disk drive or another memory.
- the controller hub 580 can also be connected to a computer readable medium 575.
- Fig. 8 is flow diagram of a method according to an example embodiment of the invention.
- the method includes a hardware virtualizer that is running on a computing system at 605.
- the computing system can include an integrated graphics processing unit and a discrete graphics processing unit.
- a virtual environment can be created by a hardware virtualizer at 610.
- the virtual environment can include virtual images of hardware.
- a first software stack and a second software stack can run on the virtual hardware of the virtual hardware environment at 815.
- the software stack can be for example a virtual machine such as an operating system.
- the discrete graphics processing unit can communicate with the first software stack at 620.
- the integrated graphics processing unit can communicate with the second software stack at 625.
- the communication may include at least one of the execution of code, processing of data or another function of the graphics processing unit.
- the graphics processing usage for the first software stack and the second software stack can be determined for example by the hardware virtualizer or another component.
- the first software stack can be prevented from communicating with the integrated graphics processing unit
- the second software stack can be prevented from communicating with the discrete graphic processing unit or both.
- the techniques described may be embodied in a computer-readable medium for configuring a computing system to execute the method.
- the computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; holographic memory; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and the Internet, just to name a few.
- Computing systems may be found in many forms including but not limited to mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, various wireless devices and embedded systems, just to name a few.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
Abstract
A first software stack and a second software stack are run in a virtual environment. The virtual environment may be created by a hardware virtualizer. The hardware virtualizer may send the first software stack to the discrete graphics processing unit and the second software stack to the integrated graphics processing unit.
Description
First and Second Software Stacks and Discrete and Integrated Graphics Processing
Units
Background
[0001 ] A computing system can have a graphical processor to process instructions related to images to be displayed on a display, A computing system may have a graphics processing unit integrated into the chipset of a computing system. A computing system may have a discrete graphics processing unit that is coupled to a chipset of a computer system.
Brief Description Of The Drawings
[0002] Some embodiments of the invention are described with respect to the following figures:
Fig. 1 is a block diagram of a virtual computing system according to an example embodiment;
Fig. 2 is a block diagram of a virtual computing system according to an example embodiment;
Fig. 3 is a block diagram of a virtual computing system according to an example embodiment;
Fig. 4 is a block diagram of a virtual computing system according to an example embodiment;
Fig. 5 is a block diagram of a computing system according to an example embodiment; and
Fig. 8 is flow diagram of a method according to an example embodiment of the invention.
Detailed Description
[0003] A computing system may include an integrated graphics processing unit. An integrated graphics processing unit is integrated in the package or die of another component, for example the integrated graphic processing unit may be part of a controller hub or may be integrated in a package or die with a processor. A package
can be a housing for an electronic circuit and a die may be a semiconductor such as silicon containing electronic circuits. The processor may be for example a general purpose processor that can process data from a variety of software. The controller hub maybe for example a general controller hub that may include for example a graphic memory controller hub that provides a connection to a processor, memory, firmware, graphics processing unit and may also include other controller hubs such as the input output controller hub. A discrete graphics processing unit can be a component not integrated as part of another component such as the controller hub or processor.
[0004] A computing system can include an integrated graphics processing unit as part of a controller hub or as part of the processor and can also contain a discrete graphics processing unit. In a system with both a discrete graphics processor and an integrated graphics processor, the computing system may utilize a discrete graphics processing unit, an integrated graphics processing unit or may utilize both graphics processing units. For example the computing system may allow a user to select which graphics processing unit is operational. The integrated graphics processing unit may for example use less power than the discrete graphics processing unit so that the system saves power. The system may also utilize both graphics units simultaneously to drive separate display outputs for example.
[0005] A hardware virtualizer such as a hypervisor creates virtual images of hardware. A software stack such as a virtual machine or virtual appliance can use the virtual image of the hardware. The hardware virtualizer communicates the operations of the virtual image of the hardware to the physical hardware for processing. If there is more than one software stack, each of the software stacks can provide data to a virtual graphics processing unit that is part of the hardware virtualizer. The hardware virtualizer can then process the data on an integrated graphics processing unit or a discrete graphics processing unit.
[0006] In one embodiment, a system can include an integrated graphics processing unit and a discrete graphics processing unit. The hardware virtualizer can
send data from the first software stack to the integrated graphics processing unit and a second software stack to discrete graphics processing unit.
[0007] With reference to the figures, Figure 1 is a block diagram of a virtual computing system according to an example embodiment. The computing system 100 includes hardware 120. The hardware 120 can be components of the computing system for example a processor, controller hub, hard disk drive, or input output devices among other components. The hardware 120 can also include a discrete graphics processing unit 125 and an integrated graphics processing unit 130.
[0008] The integrated graphics processing unit 130 maybe for example part of another component such as the controller hub or processor of the computing system 100. The integrated graphics processing unit can communicate with at least one of the processor, memory, input output devices, and discrete graphics processing units 125.
[0009] The discrete graphics processing unit 125 and the integrated graphics processing unit 130 may have different processing capabilities. For example the discrete graphics processing unit 125 may run at a higher clock speed or have more processing cores than an integrated graphics processing unit 130. The discrete graphics processing unit 125 may also have dedicated memory for example that is used by the discrete graphics processing unit 120 and the integrated graphics processing unit 130 may use the system random access memory that may be used by the system processor.
[0010] The hardware virtualizer 1 15 can be hardware, software or both hardware and software that generates virtual simulations of hardware components for use by a software stack. The first software stack 105 and the second software stack 1 10 can run on the virtual hardware images created by the hardware virtualizer 1 15.
[0011] The hardware virtualizer 1 15 can use either the discrete graphics processing unit 125 or the integrated graphics processing unit 130 to, for example, execute code, process data, transfer data or other functions associated with the first
software stack or the second software stack. The hardware vsrtualizer 1 15 may make a determination on whether the discrete graphics processing unit 125 or the integrated graphics processing unit 130 is used by the first software stack 105 or the second software stack 1 10. The determination may be based at least in part on graphics processing usage such as the amount of instructions to execute or data to process from the first software stack 105 or from the second software stack 1 10 as well as the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130. For example a software stack may be a virtual machine running an operating system such as Windows ®, Linux, Unix or another operating system. The hardware virtualizer 1 15 may determine that the first software stack may use more graphics processing capabilities than the second software stack and utilizes either the discrete graphics processing unit 125 or the integrated graphics processing unit 130 depending on the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130 for the first software stack. For example if the discrete graphics processing unit 125 can process data faster than the integrated graphics processing unit 130 the hardware virtualizer 1 15 may use the discrete graphics processing unit 125 for the first software stack 105 if the first software stack 105 can use more graphic processing capabilities than the second software stack 1 10.
[0012] The hardware virtualizer 1 15 may determine which of the graphics processing units is used by a software stack at the initialization of a new software stack, the discontinuation of a software stack or the change in amount of use of a software stack. For example the determination may be preconfigured, user configured, or dynamically switch the graphics processing units between the software stacks, !f the hardware virtualizer 1 15 determines which of the graphics processing units a software stack uses at an initialization of a new software stack the hardware virtualizer may use stored criteria for making this determination, for example, the hardware virtualizer 1 15 may use data related to a prior execution of a software stack. If the hardware virtualizer 1 15 is preconfigured to use either the discrete graphics processing unit 125 or the integrated graphics processing unit 130 with a software stack this may be determined in the programming of the hardware virtualizer 1 15. The hardware virtualizer 1 15 may be user configured such as
providing a user with a graphical user interface allowing the user to select which of the software stacks is processed by one of the discrete graphics processing unit 125 any integrated graphics processing unit 130. The user may be able to select for example that the first software stack such as Windows ® compatible software, may use the discrete graphics processing unit 125 and that the second software stack 1 10 containing, for example Linux compatible software may use the integrated graphics processing unit 130. In a dynamic environment the hardware virtualizer 1 15 can monitor the first software stack 105 and the second software stack 1 10 and switch the software stacks between the discrete graphics processing unit 125 and the integrated graphics processing unit 130 according to which software stack can more efficiently use the capabilities of the discrete graphics processing unit 125 and the integrated graphics processing unit 130. The efficient use of the capabilities of a graphic processing unit can be based on for example the type of instruction, the amount of instructions, the amount of data, and the speed of a graphics processing unit among other considerations.
[0013] In one embodiment there may be more than one discrete graphics processing unit 125 or more than one integrated graphic processing unit 130. There may be a discrete graphics processing unit 125 or an integrated graphic processing unit 130 that includes more than one graphics processing cores in a package or on a die. A graphics processing core can be the portion of the graphics processing unit that executes instructions, processes data or both. If there are more than one processing cores, either multiple discrete graphic processing units 125, multiple integrated graphics processing units 130, multiple processing cores within the discrete graphics processing unit 125 or multiple processing cores within the integrated graphics processing unit 130 then each software stack can use a processing core or may use multiple processing cores. For example if there are three software stacks and there are 4 discrete graphic processing cores and 1 integrated graphsc processing core for a total of 5 graphics processing cores each of the software stacks may use one core, one or two of the software stacks may use 2 cores while the third uses one core, or two software stacks may use one core and the third software stack may use 3 cores. If there are more software stacks than there are graphics processing cores a software stack may have to wait for another
software stack to finish using a graphic processing core or the hypervisor can evict one of the software stacks to free up a graphic processing core.
[0014] To secure a software stack from a malicious attack initiated from another software stack each of the software stacks may use different graphic processing units or different graphics processing cores within the graphic processing unit. A malicious attack may be an attack that access images from another software stack. For example images from one software stack that includes a bank account number may be accessed by malicious software on another software stack if the software stacks have access to each of the graphics processing units. At least one of the hardware and software can provide a protection mechanism so that a software stack is not able to inappropriately access the graphics processing or memory of another software stack. The inappropriate access may be any access of the graphics processing or memory of another software stack, access restricted by time of access, access restricted by content of access or another access restriction to the graphic processing or memory of the software stack. The protection mechanism may for example prevent access to data at a memory location such as data stored in a range of memory addresses.
[0015] Figure 2 is a block diagram of a virtual computing system according to an example embodiment. The computer system 200 includes hardware 220. A hardware virtualizer 215 can use the hardware 220 to execute a software stack. A first software stack 205 can execute on a hardware image generated by the hardware virtualizer 215. A second software stack 210 can execute on a hardware image generated by the hardware virtualizer 215.
[0016] The hardware 220 can include a discrete graphics processing unit 225 and an integrated graphics processing unit 230. The hardware 220 may be connected to a first display 245. The hardware 220 may also be connected to a second display 250. The display may be for example a liquid crystal display (LCD), plasma, light emitting diode (LED), digital light processor (DIP), cathode ray tube (CRT) or another technology.
[0017] The first display 245 may be connected to the discrete graphics
processing unit 225. The first display 245 may display images from the discrete graphics processing unit 225 or the integrated graphics processing unit 230. The images on the first display can be from the first software stack 205 or the second software stack 210. The hardware virtualizer 215 can determine whether the first software stack 205 or the second software stack 210 supplies the image data to the discrete graphics processing unit 225 or to the integrated graphics processing unit 230.
[0018] The hardware virtualizer 215 can provide to the hardware 220 an indication that allows the hardware to display the images on the first display 245 or the second display 250. For example the first display 245 may display images from the discrete graphics processing unit 225 and a second display 250 may display images from the integrated graphics processing unit 230. In another example the first display 245 may display an image from the discrete graphics processing unit 215 and an image from the integrated graphics processing unit 230. If the first display 245 is displaying images from the discrete graphics processing unit 225 and the integrated graphics processing unit 230 then the images from the discrete graphics processing unit 225 may be in a first area on the first display 245 and the images from the integrated graphics processing unit 230 can be displayed in a second area. The areas displaying the images on the first display may be a window. The size of the window may be determined by the hardware virtualizer 215 for example the hardware virtualizer may determine the size of the window from the resolution of the image from the software stack.
[0019] In one embodiment, the size of the windows showing the image from first software stack 205 or the second software stack 210 may be adjusted by the user. For example if a first window includes an image from the first software stack 205 the side, top or bottom of the window could be moved to adjust the size of the window. In one embodiment the first display 245 has a set resolution and the size of the images are determined by the resolution output from the discrete graphics
processing unit 225 or the integrated graphics processing unit 230. The resolution output can be determined by the hardware 220, hardware virtualizer 215, the first
software stack 205, the second software stack or a combination of these. If the resolution output by the hardware 220 of the images from the first software stack 205 is lower than the resolution of the first display 245 then the image on the first display 245 may be smaller than the entire display. For example if the resolution of the first display 245 is 1600 pixels by 1200 pixels and the resolution received from the hardware is 1024 pixels by 788 pixels then the image may not be expanded to the entire screen automatically if display is receiving images from both the first software stack 205 and the second software stack 210.
[0020] Coordination between the images from the first software stack 205 and the second software stack 210 can occur at one or more than one level in the system. For example the coordination may occur at the stack level, the hardware virtualizer level, or the hardware level. At the hardware level the coordination may be between the discrete graphics processing unit 225 and the integrated graphics processing unit 230. The coordination allows images from the first or the second software stacks to be display on a display or multiple displays without interfering with images of the other software stack.
[0021 ] The output of the computing system 200 can be from the integrated graphic processing unit 230, the discrete graphics processing unit 225 or both as shown by the dotted connections between the first display 245 and the discrete graphics processing unit 225 or the integrated graphic processing unit 230 and also between a second display 250 either the graphics processing unit the first display is connected to or another graphics processing unit, in one embodiment either the integrated graphic processing unit 230 or the discrete graphics processing unit 225 outputs to a display or multiple displays and the graphics processing unit without an output to the displays coordinates with the graphics processing unit with the output for displaying the images from a software stack using the graphics processing unit without an output to a display connected.
[0022] In one embodiment coordination between the discrete graphic processing unit 225 and the integrated graphics processing unit 230 can allow an image from the first software stack 205 to be on the first display 245, the second display 250 or
both the first display 245 and the second display 250. The coordination between the discrete graphic processing unit 225 and the integrated graphics processing unit 230 can allow an image from the second software stack 210 to be on the first display 245, the second display 250 or both the first display 245 and the second display 250. An image from the first software stack and an image from the second software stack can be displayed on the first display, the second display, can be tiled, cascaded, overlapped, sized, moved or manipulated in another way if the discrete graphics processing unit 225 and the integrated graphics processing unit 230 coordinate. The coordination between the discrete graphic processing unit 225 and the integrated graphic processing unit 230 may be initiated by the hardware virtualizer 215.
[0023] Figure 3 is a block diagram of a virtual computing system according to an example embodiment. The computing system 300 can include a first software stack 305 and a second software stack 310 running on a hardware virtualizer 315. The hardware virtualizer 315 can generate virtual hardware to be used by the first software stack 305 and the second software stack 310. The hardware virtualizer uses the hardware 320 which includes a discrete graphics processing unit 325 and an integrated graphics processing unit 330 to run the first software stack 305 and the second software stack 310.
[0024] The discrete graphics processing unit 355 can connect to a first frame buffer 355. The first frame buffer 355 receives the image data from the discrete graphics processing unit 325. The image data can be for example frames stored in the frame buffer that are going to be displayed by a display. A frame may be for example data representing every pixel in an image that is going to be displayed. In one embodiment the discrete graphics processing unit 325 and the integrated graphics processing unit can share the first frame buffer 355.
[0025] A second frame buffer may be connected to the integrated graphics processing unit. A discrete graphics processing unit 325 may be connected to the first frame buffer 355 and the integrated graphics processing unit 360 may be connected to a second frame buffer 360. If the discrete graphics processing unit 325 and the integrated graphics processing unit 330 have access to the each other's
frame buffers the data from one software stack may be unsecure. For example if the first software stack 305 were generating data that was processed by the discrete graphics processing unit 325 and the first frame buffer 355 storing the image data was accessible by the integrated graphics processing unit 330 then the second software stack 310 may have access to the data generated by the first software stack 305. If the second software stack 310 has access to images generated by the first software stack 305 malicious software may be able to access an image, for example if the first software stack was generating an image of bank account numbers and a malicious software on the second software stack 310 had access to the data in the first frame buffer 355 the second software stack 310 could have access to the images of the bank account numbers. In one embodiment the first software stack 305 or the second software stack 310 may not have access to a frame buffer if another software stack is actively storing data in the frame buffer.
[0026] In one embodiment the first frame buffer 355 and the second frame buffer 380 are connected to a display buffer 365. For example a display buffer 365 may be used to connect the hardware 320 to a display. The image data in the display buffer 365 may be rendered on the display and may include image data from the first display buffer 355 and the second display buffer 360. If the first software stack 305 and the second software stack 310 do not have access to read data from the display buffer the images are secure from being retrieved by the another software stack. In one embodiment the first software stack 305 can access a portion of the display buffer for example the first software stack 305 may have access to a set of lower addresses of the display buffer 365 and not to the higher addresses. The second software stack 310 may have access to a different portion of the display buffer than the first software stack 305, for example the second software stack 310 may have access to a set up higher addresses of the display buffer 365 and not the lower addresses. Preventing the first software stack from accessing the portion of the display buffer used by the second software stack and the second software stack from accessing the portion of the display buffer 365 used by the first software stack secures the images in the display buffer from the first software stack from malicious code on a second software stack and secures the images in the display buffer from the second software stack from malicious code on a first software stack.
[0027] Fig. 4 is a block diagram of a virtual computing system according to an example embodiment. The computing system 400 can include a first software stack 405 and a second software stack 410. The first software stack 405 and the second software stack 410 can run on a virtual machine 440. The virtual machine 440 can be an operating system, for example Windows®. The first software stack 405 and the second software stack may be applications. The applications may be for example a word processor, spreadsheet, database, image processor, media player or another application.
[0028] A hardware virtuaiizer 415 can generate virtual images of hardware. The hardware virtuaiizer can use the hardware 420 of the computing system 400. The hardware 420 can include a discrete graphics processing unit 425 and an integrated graphics processing unit 430. The discrete graphics processing unit 425 can receive image data from the first software stack 405 and the integrated graphics processing unit can receive image data from the second software stack 410.
[0029] Fig. 5 is a block diagram of a computing system according to an example embodiment. The computing system 500 includes hardware 520. The hardware can include a processor 585 connected to a controller hub 580. The components such as the processor 565, the controller hub 580 and the integrated graphics processing unit 530 may be in different configurations within single or multiple packages or dies. The processor 565, controller hub 580, and integrated graphics processing unit 530 may be in a package or die 595. The processor 565 and integrated graphic processing unit 531 may be in a package or die 596. The controller hub and integrated graphic processing unit may be in a package or die 597. An integrated graphics processing unit 530 may be in a package or die 596 with the processor 565 and may be also be in a package or die 597 with the controller hub 580. The controller hub 580 may be separated into a north bridge and a south bridge. The controller hub 580 may include an integrated graphics processing unit 530. The controller hub 580 may by connected to a discrete graphics processing unit 525. !f the controller hub 580 is separated into a north bridge and a south bridge the discrete graphics processing unit 525 may be connected to either the north bridge or the south bridge.
[0030] The controller hub 580 may also be connected to memory 570. The memory 570 may be for example a volatile storage such as random access memory or may be a non-volatile memory such as Flash memory, read only memory, programmable read only memory, a hard disk drive or another memory. The controller hub 580 can also be connected to a computer readable medium 575.
[0031 ] Fig. 8 is flow diagram of a method according to an example embodiment of the invention. The method includes a hardware virtualizer that is running on a computing system at 605. The computing system can include an integrated graphics processing unit and a discrete graphics processing unit. A virtual environment can be created by a hardware virtualizer at 610. The virtual environment can include virtual images of hardware.
[0032] A first software stack and a second software stack can run on the virtual hardware of the virtual hardware environment at 815. The software stack can be for example a virtual machine such as an operating system. The discrete graphics processing unit can communicate with the first software stack at 620. The integrated graphics processing unit can communicate with the second software stack at 625. The communication may include at least one of the execution of code, processing of data or another function of the graphics processing unit.
[0033] The graphics processing usage for the first software stack and the second software stack can be determined for example by the hardware virtualizer or another component. In one embodiment the first software stack can be prevented from communicating with the integrated graphics processing unit, the second software stack can be prevented from communicating with the discrete graphic processing unit or both.
[0034] The techniques described may be embodied in a computer-readable medium for configuring a computing system to execute the method. The computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; holographic memory; nonvolatile memory storage media
including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; volatile storage media including registers, buffers or caches, main memory, RAM, etc.; and the Internet, just to name a few. Other new and various types of computer-readable media may be used to store and/or transmit the software modules discussed herein. Computing systems may be found in many forms including but not limited to mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, various wireless devices and embedded systems, just to name a few.
[0035] In the foregoing description, numerous details are set forth to provide an understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these details. While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom, including but not limited to combining any portion of the example embodiments. It is intended that the appended claims cover such modifications and variations as fall within the true spirit and scope of the invention.
Claims
What is claimed is: 1 . A computing system comprising:
an integrated graphics processing unit and a discrete graphics processing unit; and
a hardware virtualizer to process a first software stack with the integrated graphics processing units and to process a second software stack with the discrete graphics processing units.
2, The system of ciaim 1 , wherein the hardware virtualizer determines a graphic processing usage for the first software stack and the second software stack.
3. The system of claim 2, wherein if the first software stack is determined to have a higher graphic processing usage than the second software stack then the first software stack uses the discrete graphics processing unit.
4. The system of claim 1 , further comprising a first display connected to at least one of the group consisting of the discrete graphics processing unit and the integrated graphics processing unit and a second display connected to at least one of the group consisting of the discrete graphics processing unit and the integrated graphics processing unit.
5. The system of claim 1 , further comprising a first frame buffer connected to the integrated graphics processing unit and a second frame buffer connected to the discrete graphics processing unit.
6. The system of claim 5, wherein the first software stack is prevented from access to the second frame buffer and the second software stack is prevented from access to the first frame buffer.
7. The system of claim 5, further comprising a display buffer to receive data from the first frame buffer and the second frame buffer.
8. The system of claim 7, wherein a first portion of the display buffer is not accessed by the second software stack and a second portion of the display buffer is not accessed by the first software stack.
9. The system of claim 1 , further comprising at least one of multiple integrated graphics processing cores within the integrated graphics processing unit and multiple discrete graphics processing cores within the discrete graphics processing unit wherein first software stack runs on an integrated graphic processing core or a discrete graphic processing core and the second stack runs on another integrated graphic processing core or discrete graphic processing core.
10. A method comprising:
running a hardware virtualizer on a computing system that includes an integrated graphics processing unit and a discrete graphics processing unit;
creating with the hardware virtualizer a virtual hardware environment;
running a first software stack and a second software stack in the virtual hardware environment;
communicating between a first software stack and the discrete graphics processing unit; and
communicating between a second software stack and the integrated graphics processing unit.
1 1 . The method of claim 10, further comprising determining the graphic processing usage for the first software stack and the second software stack.
12. The method of claim 10, further comprising preventing at least one of the first software stack from communicating with the integrated graphics processing unit or the second software stack from communicating with the discrete graphic processing unit.
13. A computer readable medium comprising instructions that if executed cause the processor to: direct graphic data from a first software stack in a virtual environment to a discrete graphics processing unit; and
direct graphic data from a second software stack in a virtual environment to an integrated graphics processing unit.
14. The computer readable medium of claim 13 further comprising instructions that if executed cause the processor to:
prevent at least one of the first software stack from accessing the integrated graphics processing unit and the second software stack from accessing the discrete graphics processing unit.
15. The computer readable medium of claim 13 further comprising instructions that if executed cause the processor to:
display a first image from the first software stack on one of a first display and a second display and display a second image from the second software stack on one of the first display and the second display and coordinate the images.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/052205 WO2012050559A1 (en) | 2010-10-11 | 2010-10-11 | First and second software stacks and discrete and integrated graphics processing units |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2010/052205 WO2012050559A1 (en) | 2010-10-11 | 2010-10-11 | First and second software stacks and discrete and integrated graphics processing units |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012050559A1 true WO2012050559A1 (en) | 2012-04-19 |
Family
ID=45938563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2010/052205 WO2012050559A1 (en) | 2010-10-11 | 2010-10-11 | First and second software stacks and discrete and integrated graphics processing units |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2012050559A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041847A1 (en) * | 2004-08-23 | 2006-02-23 | Wai-Lin Maw | Paged graphical user interface |
US20060146057A1 (en) * | 2004-12-30 | 2006-07-06 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
US20100031325A1 (en) * | 2006-12-22 | 2010-02-04 | Virtuallogix Sa | System for enabling multiple execution environments to share a device |
US20110090234A1 (en) * | 2009-10-19 | 2011-04-21 | Barnes & Noble, Inc. | Apparatus and method for control of multiple displays from a single virtual frame buffer |
-
2010
- 2010-10-11 WO PCT/US2010/052205 patent/WO2012050559A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041847A1 (en) * | 2004-08-23 | 2006-02-23 | Wai-Lin Maw | Paged graphical user interface |
US20060146057A1 (en) * | 2004-12-30 | 2006-07-06 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
US20100031325A1 (en) * | 2006-12-22 | 2010-02-04 | Virtuallogix Sa | System for enabling multiple execution environments to share a device |
US20110090234A1 (en) * | 2009-10-19 | 2011-04-21 | Barnes & Noble, Inc. | Apparatus and method for control of multiple displays from a single virtual frame buffer |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9269122B2 (en) | First and second software stacks and discrete and integrated graphics processing units | |
EP1725989B1 (en) | Register based queuing for texture requests | |
US9274839B2 (en) | Techniques for dynamic physical memory partitioning | |
EP2756481B1 (en) | System and method for layering using tile-based renderers | |
EP2473915B1 (en) | An internal processing-unit memory for general-purpose use | |
CN103679785B (en) | For the newer system and method in part frame buffer zone | |
CN100570562C (en) | Video card, the dummy machine system of using this video card and display processing method | |
CN110352403B (en) | Graphics processor register renaming mechanism | |
CN104662583A (en) | Gpu memory buffer pre-fetch and pre-back signaling to avoid page-fault | |
CN104641396A (en) | Deferred preemption techniques for scheduling graphics processing unit command streams | |
CN104137152A (en) | Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values | |
US20050030313A1 (en) | Apparatus and method for distributed memory control in a graphics processing system | |
EP3353737A1 (en) | Efficient display processing with pre-fetching | |
US20220292628A1 (en) | Image processing method and apparatus | |
US20120050260A1 (en) | Method and apparatus for accommodating display migration among a plurality of physical displays | |
US20190122421A1 (en) | Batch rendering method, device, and apparatus | |
US20170169537A1 (en) | Accelerated touch processing in computing environments | |
KR20180036970A (en) | Hardware-enforced content protection for graphics processing units | |
WO2016200497A1 (en) | Facilitating increased precision in mip-mapped stitched textures for graphics computing devices | |
CN112907496A (en) | Image fusion method and device | |
US20140306970A1 (en) | Ordering Threads as Groups in a Multi-Threaded, Multi-Core Graphics Compute System | |
CN110383255B (en) | Method and computing device for managing client partition access to physical devices | |
WO2012050559A1 (en) | First and second software stacks and discrete and integrated graphics processing units | |
CN103809972B (en) | A kind of information processing method and electronic equipment | |
US11099685B2 (en) | Selective touch sensor activation for power savings |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10858486 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 10858486 Country of ref document: EP Kind code of ref document: A1 |