WO2010037720A1 - Delegated virtualization in a multi-core processor (mcp) - Google Patents

Delegated virtualization in a multi-core processor (mcp) Download PDF

Info

Publication number
WO2010037720A1
WO2010037720A1 PCT/EP2009/062554 EP2009062554W WO2010037720A1 WO 2010037720 A1 WO2010037720 A1 WO 2010037720A1 EP 2009062554 W EP2009062554 W EP 2009062554W WO 2010037720 A1 WO2010037720 A1 WO 2010037720A1
Authority
WO
WIPO (PCT)
Prior art keywords
sub
group
pseudo
processing elements
virtualized control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/EP2009/062554
Other languages
French (fr)
Inventor
Daeik Kim
Karl Duvalsaint
Harm Peter Hofstee
Moon Ju Kim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of WO2010037720A1 publication Critical patent/WO2010037720A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention generally relates to delegated virtualization in a (e.g., symmetric) multi-core processor (MCP). Specifically, the present invention delegates functions found in a main processing element to a group of sub-processing elements to yield a pseudo main processing element.
  • MCP multi-core processor
  • MCPs Multi-Core Processors
  • SPE Sub-Processing Element
  • the present invention provides, in a first aspect, a multi-core processor, comprising: a main processing element comprising a set of virtualized control threads; a first group of sub- processing elements associated with main processing element via at least one set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main processing element comprising a set of pseudo virtualized control threads.
  • the pseudo main processing element is associated with a second group of sub processing elements via the set of pseudo virtualized control threads.
  • the first group of sub-processing elements comprises a plurality of sub- processing elements.
  • the set of virtualized control threads is configured to send program code and data to the first group of sub-processing elements.
  • the set of virtualized control threads is further configured to collect computation results from the first group of sub-processing elements.
  • the set of virtualized control threads controls a clock speed, power consumption and computation loading of the set of first group of sub-processing elements.
  • the set of virtualized control threads is configured to send and receive power control requests between the main processing element and the first group of sub-processing elements.
  • the pseudo main processing element is associated with a second group of sub processing elements via the set of pseudo virtualized control threads.
  • a processing system comprising: a main processing element; a first group of sub-processing elements; a virtualized control thread associating the main processing element with the first group of sub-processing elements, the set of virtualized control threads controlling the first group of sub-processing elements; a pseudo main processing element; a second group of sub-processing elements; and a pseudo virtualized control thread associating the pseudo main processing element with the second group of sub-processing elements, the set of virtualized control threads controlling the group of sub-processing elements.
  • the pseudo main processing element is a third group of sub-processing elements that have been delegated a set of functions from at least one of a set of main processing elements.
  • the virtualized control thread and the pseudo virtualized control thread are configured to send program code and data to the first group of sub-processing elements and the second group of sub-processing elements.
  • the virtualized control thread and the pseudo virtualized control thread are further configured to collect computation results from the first group of sub-processing elements and the second group of sub-processing elements.
  • the virtualized control thread and the pseudo virtualized control thread control a clock speed, power consumption and computation loading of the first group of sub- processing elements and the second group of sub-processing elements.
  • a processing method comprising: associating a main processing element with a first group of sub-processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub-processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
  • the processing method may further comprise sending program code and data to the first group of sub-processing elements via the set of virtualized control threads and to the third set of groups of sub-processing elements via the set of pseudo virtualized control threads.
  • the processing method may further comprise receiving computation results from the first group of sub-processing elements via the set of virtualized control threads and from the third group of sub-processing elements via the set of pseudo virtualized control threads.
  • the controlling may comprise controlling a clock speed, a power consumption and a computation loading of the first group of sub-processing elements and the third group of sub-processing elements.
  • the set of virtualized control threads may be embodied as program code within the set of main processing elements, and the set of pseudo virtualized control threads being embodied as program code within the pseudo main processing element. .
  • the main processing element, the first group of sub-processing elements, the set of virtualized control threads, the pseudo main processing element, the third group of sub-processing elements, and the set of pseudo virtualized control threads may comprise a multi-core processor.
  • a method for deploying a processing system comprising: providing a multi-core processor comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one of set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
  • This disclosure thus describes an apparatus, computer architecture, method, operating system, compiler, and application program products for MPEs as well as delegated virtualization in a (e.g., symmetric) MCP.
  • the disclosure is applied to a generic microprocessor architecture with a set (e.g., one or more) of controlling elements (e.g., MPEs) and a set of groups of sub-processing elements (e.g., SPEs).
  • MPEs and SPEs are organized in a way that a smaller number MPEs control the behavior of a group of SPEs using program code embodied as a set of virtualized control threads.
  • the apparatus includes a MCP coupled to a power supply coupled with cores to provide a supply voltage to each core (or core group) and controlling-digital elements and multiple instances of sub-processing elements.
  • a first embodiment of the present invention provides a multi-core processor, comprising: a main processing element comprising a set of virtualized control threads; a first group of sub- processing elements associated with main processing element via at least one set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
  • a second embodiment of the present invention provides a processing system comprising: a main processing element; a first group of sub-processing elements; a virtualized control thread associating the main processing element with the first group of sub-processing elements, the set of virtualized control threads controlling the first group of sub-processing elements; a pseudo main processing element; a second group of sub-processing elements; and a pseudo virtualized control thread associating the pseudo main processing element with the second group of sub-processing elements, the set of virtualized control threads controlling the group of sub-processing elements.
  • a third embodiment of the present invention provides a processing method comprising: associating a main processing element with a first group of sub-processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub- processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
  • a fourth embodiment of the present invention provides a method for deploying a processing system comprising: providing a multi-core processor comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one of set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
  • a fifth embodiment of the present invention provides a computer-implemented business method comprising: associating a main processing element with a first group of sub- processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub-processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
  • Fig. 1 shows a related art processor.
  • Fig. 2 shows multi-core processor according to the preferred embodiment.
  • this disclosure describes an apparatus, computer architecture, method, operating system, compiler, and application program products for MPEs as well as delegated virtualization in a (e.g., symmetric) MCP.
  • the disclosure is applied to a generic microprocessor architecture with a set (e.g., one or more) of controlling elements (e.g., MPEs) and a set of groups of sub-processing elements (e.g., SPEs).
  • MPEs and SPEs are organized in a way that a smaller number MPEs control the behavior of a group of SPEs using program code embodied as a set of virtualized control threads.
  • the apparatus includes a MCP coupled to a power supply coupled with cores to provide a supply voltage to each core (or core group) and controlling-digital elements and multiple instances of sub-processing elements.
  • the MCP 10 provides a conventional operation: a MPE 12 controls a group of SPEs 14A-N. As only a portion of SPEs are utilized, the overall MCP utilization is usually low. Moreover, stand-by SPEs 16A-N consume high levels of power and continuously leak. Typically, a MCP is used for the high performance digital processor scaling, but due to the complexity of the MCP design, the utilization and the efficiency of the software become challenging to optimize as the MCP dimension increases.
  • MCP 20 comprises a set of MPEs 22A-N.
  • Each MPE 22 comprises a set of virtualized control threads Vl-VN.
  • MPEs 22A-N allow multiple virtualized control threads Vl-VN that are each assigned to/associated with a (e.g., single or multiple) group of SPEs.
  • MCP 20 further includes groups GO-Gn of SPEs.
  • group GO comprises SPEs 26A-N
  • group Gl comprises SPEs 28A-N
  • group Gn comprises SPEs 30A-N.
  • virtualized control threads Vl-Vn are each associated with a specific group of SPEs. That is, virtualized control thread Vl of MPE 22A is associated with SPE group GO. In a typical embodiment, there is a one-to-one relationship between threads and groups (however, this need not be the case in that a single virtualized control thread could be associated with multiple groups). In addition, all virtualized control threads Vl-Vn are shown as being embodied within a single, common MPE 22. However, it should be understood that this need not be the case.
  • virtualized control threads could be embodied in two or more different MPEs 22A-N.
  • one or more groups of SPEs could be delegated function(s) from MPE 22A-N, which would render such groups of SPEs pseudo MPEs. Examples of this are shown in Fig. 2 (after delegation has occurred).
  • pseudo MPEs Pl-Pn are shown in Fig. 2.
  • Each pseudo MPE has pseudo virtualized control threads PVl-n, that perform similar or identical functionality as virtualized control threads PVl-n in MPE 22 A- n.
  • Such delegation of functionality typically occurs by leveraging one or more virtualized control threads Vl-n on MPE 22 A.
  • each virtualized control thread and pseudo virtualized control thread serves to associate/link at least one MPE with at least one group of SPEs. This allows the SPEs to be controlled.
  • each virtualized control thread and pseudo virtualized control thread PVl-n is typically implemented as computer program code (e.g., contained on a computer readable medium).
  • Virtualized control threads Vl-n and pseudo virtualized control threads PVl-n have several functions including (among others) the following: sending program code and data to the set of groups of sub-processing elements; collecting computation results from the set of groups of sub-processing elements; sending and receiving power control requests between the set of main/pseudo processing elements and the set of groups of sub-processing element; and controlling a clock speed, power consumption and computation loading of the set of groups of sub-processing elements.
  • pseudo MPE Pl is associated/linked with SPE group Gl
  • pseudo MPE Pn is associated/linked with SPE group Gn.
  • Pseudo MPEs Pl-Pn generally interact with and SPE control groups Gl-n in a manner similar or identical to that which MPE 22 A interacts with and controls group GO.
  • each MPE and pseudo MPE allows additional virtualizations, based upon the SPEs availability and the number of requested SPEs.
  • the MPE and pseudo MPE each keep a log of which SPEs "belong" thereto.
  • the computation- loaded SPEs as well as unloaded & free SPEs are accounted within the log.
  • the virtualizations are initiated by either a software or hardware request.
  • An Operating System (OS) is designed to enable multiple independent threads with virtualization.
  • Computer programming languages and the machine code compilers support the virtualization with libraries.
  • the MPE and pseudo MPE also can tune the rest of the virtualized control threads and pseudo virtualized control threads using time-division resource sharing and OS-level preemptive task management to allow for multi-tasking and virtualization. By allowing main and pseudo MPEs, the MPE loading is reduced and becomes more efficient. Therefore the MCP performance vs. power efficiency increases.
  • groups of SPEs are assigned to the virtualized control threads, either in MPE or pseudo MPE.
  • the MPE or pseudo MPE maintains different virtualized control threads over the SPEs, as shown in the diagram.
  • the virtualized control threads and pseudo virtualized control threads load executable program codes and data to the SPE group, and monitor the progress and control the performance and power consumption of the SPE groups.
  • the virtualized control threads and pseudo virtualized control threads send the results to the MPE, allowing further computations or external input/output (I/O).
  • the number of total virtualization is limited by the MPE and SPE capacity to hold virtualization, and the number of available SPEs. Further requests for virtualization can be denied, or accepted by sharing time-division thread sharing.
  • the virtualized control threads and pseudo virtualized control threads control the power supply voltage and clock frequency to each SPE group (Gk), so that the active and stand-by currents are optimized for the required computations.
  • Gk SPE group
  • a digital circuit speed increases when the supply voltage is raised, and the clock speed can be increased. Within the allowed supply voltage range, it is adjusted based on the computation requirements.
  • the voltage and clock frequency are raised so that it is completed within the time frame.
  • the voltage and the clock frequency are lowered to maximize performance/power ratio.
  • An extreme case is when SPEs are standing by.
  • the supply voltage can be reduced to 0 voltage to put the SPE is sleep mode. Slightly higher voltages can be used with a trade-off between leakage current and wake up time. It takes more time to wake an element when it is in a deeper sleep mode.
  • the preferred embodiment could be deployed on one or more computing devices (e.g., servers, clients, etc.) within a computer infrastructure.
  • a network environment e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.
  • communication throughout the network can occur via any combination of various types of communications links.
  • the communication links can comprise addressable connections that may utilize any combination of wired and/or wireless transmission methods.
  • connectivity could be provided by conventional TCP/IP sockets- based protocol, and an Internet service provider could be used to establish connectivity to the Internet. Still yet, the computer infrastructure is intended to demonstrate that some or all of the components of such an implementation could be deployed, managed, serviced, etc. by a service provider who offers to implement, deploy, and/or perform the functions of the preferred embodiment for others.
  • any computers utilized will include standard elements such as a processing unit, a memory medium, a bus, and input/output (I/O) interfaces. Further, such computer systems can be in communication with external I/O devices/resources.
  • processing units execute computer program code, such as the software and functionality described above, which is stored within memory medium(s). While executing computer program code, the processing unit can read and/or write data to/from memory, I/O interfaces, etc.
  • the bus provides a communication link between each of the components in a computer.
  • External devices can comprise any device (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with the computer system and/or any devices (e.g., network card, modem, etc.) that enable the computer to communicate with one or more other computing devices.
  • the hardware used to implement the preferred embodiment can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like.
  • the program code and hardware can be created using standard programming and engineering techniques, respectively.
  • the processing unit therein may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server.
  • the memory medium can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations.
  • the I/O interfaces can comprise any system for exchanging information with one or more external device.
  • one or more additional components e.g., system software, math co-processing unit, etc. can be included in the hardware.
  • the invention provides a computer-readable/useable medium that includes computer program code to enable a computer infrastructure to provide delegated virtualization in a multi-core processor.
  • the computer- readable/useable medium includes program code that implements the process(es) of the invention. It is understood that the terms computer-readable medium or computer useable medium comprises one or more of any type of physical embodiment of the program code.
  • the computer-readable/useable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal (e.g., a propagated signal) traveling over a network (e.g., during a wired/wireless electronic distribution of the program code).
  • portable storage articles of manufacture e.g., a compact disc, a magnetic disk, a tape, etc.
  • data storage portions of a computing device e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.
  • a data signal e.g., a propagated signal traveling over a network
  • the invention provides a method (e.g., business) that performs the process of the invention on a subscription, advertising, and/or fee basis.
  • a service provider such as a Solution Integrator
  • the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure that performs the process of the invention for one or more customers.
  • the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties.
  • the invention provides a processing method.
  • a computer infrastructure can be provided and one or more systems for performing the process of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure.
  • the deployment of a system can comprise one or more of: (1) installing program code on a computing device from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure to enable the computer infrastructure to perform the process of the invention.
  • program code and "computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
  • program code can be embodied as one or more of: an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
  • a data processing system suitable for storing and/or executing program code can be provided hereunder and can include at least one processor communicatively coupled, directly or indirectly, to memory element(s) through a system bus.
  • the memory elements can include, but are not limited to, local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
  • I/O devices including, but not limited to, keyboards, displays, pointing devices, etc.
  • I/O devices can be coupled to the system either directly or through intervening I/O controllers.
  • Network adapters also may be coupled to the system to enable the data processing system to become coupled to other data processing systems, remote printers, storage devices, and/or the like, through any combination of intervening private or public networks.
  • Illustrative network adapters include, but are not limited to, modems, cable modems and Ethernet cards.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

The disclosure is applied to a generic microprocessor architecture with a set (e.g., one or more) of controlling elements (e.g., MPEs) and a set of groups of sub-processing elements (e.g., SPEs). Under this arrangement, MPEs and SPEs are organized in a way that a smaller number MPEs control the behavior of a group of SPEs using program code embodied as a set of virtualized control threads. The arrangement also enables MPEs delegate functionality to one or more groups of SPEs such that those group(s) of SPEs will act as pseudo MPEs. The pseudo MPEs will utilize pseudo virtualized control threads to control the behavior of other groups of SPEs. In a typical embodiment, the apparatus includes a MCP coupled to a power supply coupled with cores to provide a supply voltage to each core (or core group) and controlling-digital elements and multiple instances of sub-processing elements.

Description

DELEGATED VIRTUALIZATION IN A MULTI-CORE PROCESSOR (MCP)
FIELD OF THE INVENTION
The present invention generally relates to delegated virtualization in a (e.g., symmetric) multi-core processor (MCP). Specifically, the present invention delegates functions found in a main processing element to a group of sub-processing elements to yield a pseudo main processing element.
BACKGROUND OF THE INVENTION
Low utilization of Multi-Core Processors (MCPs) has been a major drawback of symmetric MCPs. Also, design inflexibility forces continuous leakage current in the unloaded and stand-by sub-elements, such as Sub-Processing Element (SPE), so that the power is wasted. For example, in a symmetric MCP, there can be a Main Processing Element (MPE) and 8 SPEs. In many cases, only a portion of SPEs are utilized and the overall MCP utilization is usually low. Such stand-by SPEs consume high levels of power and continuously leak. Typically, a MCP is used for the high performance digital processor scaling, but due to the complexity of the MCP design, the utilization and the efficiency of the software become challenging to optimize as the MCP dimension increases.
SUMMARY OF THE INVENTION
The present invention provides, in a first aspect, a multi-core processor, comprising: a main processing element comprising a set of virtualized control threads; a first group of sub- processing elements associated with main processing element via at least one set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main processing element comprising a set of pseudo virtualized control threads.
Preferably, the pseudo main processing element is associated with a second group of sub processing elements via the set of pseudo virtualized control threads. Preferably, the first group of sub-processing elements comprises a plurality of sub- processing elements.
Preferably, the set of virtualized control threads is configured to send program code and data to the first group of sub-processing elements.
Preferably, the set of virtualized control threads is further configured to collect computation results from the first group of sub-processing elements.
Preferably, the set of virtualized control threads controls a clock speed, power consumption and computation loading of the set of first group of sub-processing elements.
Preferably, the set of virtualized control threads is configured to send and receive power control requests between the main processing element and the first group of sub-processing elements.
Preferably, the pseudo main processing element is associated with a second group of sub processing elements via the set of pseudo virtualized control threads.
In a second aspect, there is provided a processing system, comprising: a main processing element; a first group of sub-processing elements; a virtualized control thread associating the main processing element with the first group of sub-processing elements, the set of virtualized control threads controlling the first group of sub-processing elements; a pseudo main processing element; a second group of sub-processing elements; and a pseudo virtualized control thread associating the pseudo main processing element with the second group of sub-processing elements, the set of virtualized control threads controlling the group of sub-processing elements.
Preferably, the pseudo main processing element is a third group of sub-processing elements that have been delegated a set of functions from at least one of a set of main processing elements. Preferably, the virtualized control thread and the pseudo virtualized control thread are configured to send program code and data to the first group of sub-processing elements and the second group of sub-processing elements.
Preferably, the virtualized control thread and the pseudo virtualized control thread are further configured to collect computation results from the first group of sub-processing elements and the second group of sub-processing elements.
Preferably, the virtualized control thread and the pseudo virtualized control thread control a clock speed, power consumption and computation loading of the first group of sub- processing elements and the second group of sub-processing elements.
In a third aspect, there is provided a processing method, comprising: associating a main processing element with a first group of sub-processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub-processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
The processing method may further comprise sending program code and data to the first group of sub-processing elements via the set of virtualized control threads and to the third set of groups of sub-processing elements via the set of pseudo virtualized control threads.
The processing method may further comprise receiving computation results from the first group of sub-processing elements via the set of virtualized control threads and from the third group of sub-processing elements via the set of pseudo virtualized control threads. The controlling may comprise controlling a clock speed, a power consumption and a computation loading of the first group of sub-processing elements and the third group of sub-processing elements.
The set of virtualized control threads may be embodied as program code within the set of main processing elements, and the set of pseudo virtualized control threads being embodied as program code within the pseudo main processing element. .
In the processing method, the main processing element, the first group of sub-processing elements, the set of virtualized control threads, the pseudo main processing element, the third group of sub-processing elements, and the set of pseudo virtualized control threads may comprise a multi-core processor.
In a fourth aspect, there is provided a method for deploying a processing system, comprising: providing a multi-core processor comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one of set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
This disclosure thus describes an apparatus, computer architecture, method, operating system, compiler, and application program products for MPEs as well as delegated virtualization in a (e.g., symmetric) MCP. The disclosure is applied to a generic microprocessor architecture with a set (e.g., one or more) of controlling elements (e.g., MPEs) and a set of groups of sub-processing elements (e.g., SPEs). Under this arrangement, MPEs and SPEs are organized in a way that a smaller number MPEs control the behavior of a group of SPEs using program code embodied as a set of virtualized control threads. The arrangement also enables MPEs to delegate functionality to one or more groups of SPEs such that those group(s) of SPEs may act as pseudo MPEs. The pseudo MPEs may utilize pseudo virtualized control threads to control the behavior of other groups of SPEs. In a typical embodiment, the apparatus includes a MCP coupled to a power supply coupled with cores to provide a supply voltage to each core (or core group) and controlling-digital elements and multiple instances of sub-processing elements.
A first embodiment of the present invention provides a multi-core processor, comprising: a main processing element comprising a set of virtualized control threads; a first group of sub- processing elements associated with main processing element via at least one set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
A second embodiment of the present invention provides a processing system comprising: a main processing element; a first group of sub-processing elements; a virtualized control thread associating the main processing element with the first group of sub-processing elements, the set of virtualized control threads controlling the first group of sub-processing elements; a pseudo main processing element; a second group of sub-processing elements; and a pseudo virtualized control thread associating the pseudo main processing element with the second group of sub-processing elements, the set of virtualized control threads controlling the group of sub-processing elements.
A third embodiment of the present invention provides a processing method comprising: associating a main processing element with a first group of sub-processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub- processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
A fourth embodiment of the present invention provides a method for deploying a processing system comprising: providing a multi-core processor comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one of set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
A fifth embodiment of the present invention provides a computer-implemented business method comprising: associating a main processing element with a first group of sub- processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub-processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
BRIEF DESCRIPTION OF THE DRAWINGS
A preferred embodiment of the present invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
Fig. 1 shows a related art processor.
Fig. 2 shows multi-core processor according to the preferred embodiment.
DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT
As indicated above, this disclosure describes an apparatus, computer architecture, method, operating system, compiler, and application program products for MPEs as well as delegated virtualization in a (e.g., symmetric) MCP. The disclosure is applied to a generic microprocessor architecture with a set (e.g., one or more) of controlling elements (e.g., MPEs) and a set of groups of sub-processing elements (e.g., SPEs). Under this arrangement, MPEs and SPEs are organized in a way that a smaller number MPEs control the behavior of a group of SPEs using program code embodied as a set of virtualized control threads. The arrangement also enables MPEs delegate functionality to one or more groups of SPEs such that those group(s) of SPEs will act as pseudo MPEs. The pseudo MPEs will utilize pseudo virtualized control threads to control the behavior of other groups of SPEs. In a typical embodiment, the apparatus includes a MCP coupled to a power supply coupled with cores to provide a supply voltage to each core (or core group) and controlling-digital elements and multiple instances of sub-processing elements.
Under related art systems, such as that shown in Fig. 1, the MCP 10 provides a conventional operation: a MPE 12 controls a group of SPEs 14A-N. As only a portion of SPEs are utilized, the overall MCP utilization is usually low. Moreover, stand-by SPEs 16A-N consume high levels of power and continuously leak. Typically, a MCP is used for the high performance digital processor scaling, but due to the complexity of the MCP design, the utilization and the efficiency of the software become challenging to optimize as the MCP dimension increases.
To address these issues, a configuration such as that shown in Fig. 2 is provided. As depicted, MCP 20 comprises a set of MPEs 22A-N. Each MPE 22 comprises a set of virtualized control threads Vl-VN. Under the preferred embodiment MPEs 22A-N allow multiple virtualized control threads Vl-VN that are each assigned to/associated with a (e.g., single or multiple) group of SPEs. For example, as further shown in Fig. 1, MCP 20 further includes groups GO-Gn of SPEs. In the example shown, group GO comprises SPEs 26A-N, group Gl comprises SPEs 28A-N, and group Gn comprises SPEs 30A-N. It should be understood that the configuration shown is for illustrative purposes only and neither the quantity of SPEs nor their grouping is intended to limit the teachings recited herein. In any event, as can been seen, virtualized control threads Vl-Vn are each associated with a specific group of SPEs. That is, virtualized control thread Vl of MPE 22A is associated with SPE group GO. In a typical embodiment, there is a one-to-one relationship between threads and groups (however, this need not be the case in that a single virtualized control thread could be associated with multiple groups). In addition, all virtualized control threads Vl-Vn are shown as being embodied within a single, common MPE 22. However, it should be understood that this need not be the case. For example, virtualized control threads could be embodied in two or more different MPEs 22A-N. Under the preferred embodiment one or more groups of SPEs could be delegated function(s) from MPE 22A-N, which would render such groups of SPEs pseudo MPEs. Examples of this are shown in Fig. 2 (after delegation has occurred). Specifically, pseudo MPEs Pl-Pn are shown in Fig. 2. Each pseudo MPE has pseudo virtualized control threads PVl-n, that perform similar or identical functionality as virtualized control threads PVl-n in MPE 22 A- n. Such delegation of functionality typically occurs by leveraging one or more virtualized control threads Vl-n on MPE 22 A.
In any event, each virtualized control thread and pseudo virtualized control thread serves to associate/link at least one MPE with at least one group of SPEs. This allows the SPEs to be controlled. Moreover, each virtualized control thread and pseudo virtualized control thread PVl-n is typically implemented as computer program code (e.g., contained on a computer readable medium). Virtualized control threads Vl-n and pseudo virtualized control threads PVl-n have several functions including (among others) the following: sending program code and data to the set of groups of sub-processing elements; collecting computation results from the set of groups of sub-processing elements; sending and receiving power control requests between the set of main/pseudo processing elements and the set of groups of sub-processing element; and controlling a clock speed, power consumption and computation loading of the set of groups of sub-processing elements.
In the example shown in Fig. 2, pseudo MPE Pl is associated/linked with SPE group Gl, while pseudo MPE Pn is associated/linked with SPE group Gn. Pseudo MPEs Pl-Pn generally interact with and SPE control groups Gl-n in a manner similar or identical to that which MPE 22 A interacts with and controls group GO.
A more specific illustrative embodiment of the association of virtualized control threads with groups of SPEs will be given below:
Using the teachings recited above, each MPE and pseudo MPE allows additional virtualizations, based upon the SPEs availability and the number of requested SPEs. The MPE and pseudo MPE each keep a log of which SPEs "belong" thereto. The computation- loaded SPEs as well as unloaded & free SPEs are accounted within the log. The virtualizations are initiated by either a software or hardware request. An Operating System (OS) is designed to enable multiple independent threads with virtualization. Computer programming languages and the machine code compilers support the virtualization with libraries. The MPE and pseudo MPE also can tune the rest of the virtualized control threads and pseudo virtualized control threads using time-division resource sharing and OS-level preemptive task management to allow for multi-tasking and virtualization. By allowing main and pseudo MPEs, the MPE loading is reduced and becomes more efficient. Therefore the MCP performance vs. power efficiency increases.
As described above in conjunction with Fig. 2, groups of SPEs are assigned to the virtualized control threads, either in MPE or pseudo MPE. The MPE or pseudo MPE maintains different virtualized control threads over the SPEs, as shown in the diagram. The virtualized control threads and pseudo virtualized control threads load executable program codes and data to the SPE group, and monitor the progress and control the performance and power consumption of the SPE groups. When the SPE group produces computation results, the virtualized control threads and pseudo virtualized control threads send the results to the MPE, allowing further computations or external input/output (I/O). The number of total virtualization is limited by the MPE and SPE capacity to hold virtualization, and the number of available SPEs. Further requests for virtualization can be denied, or accepted by sharing time-division thread sharing.
The virtualized control threads and pseudo virtualized control threads control the power supply voltage and clock frequency to each SPE group (Gk), so that the active and stand-by currents are optimized for the required computations. Typically, a digital circuit speed increases when the supply voltage is raised, and the clock speed can be increased. Within the allowed supply voltage range, it is adjusted based on the computation requirements. When the loaded computation requires intensive operation, the voltage and clock frequency are raised so that it is completed within the time frame. When the loaded computation is loose and if there are plenty of time for processing, the voltage and the clock frequency are lowered to maximize performance/power ratio. An extreme case is when SPEs are standing by. The supply voltage can be reduced to 0 voltage to put the SPE is sleep mode. Slightly higher voltages can be used with a trade-off between leakage current and wake up time. It takes more time to wake an element when it is in a deeper sleep mode.
It should be understood that the preferred embodiment could be deployed on one or more computing devices (e.g., servers, clients, etc.) within a computer infrastructure. This is intended to demonstrate, among other things, that the preferred embodiment could be implemented within a network environment (e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.), or on a stand-alone computer system. In the case of the former, communication throughout the network can occur via any combination of various types of communications links. For example, the communication links can comprise addressable connections that may utilize any combination of wired and/or wireless transmission methods. Where communications occur via the Internet, connectivity could be provided by conventional TCP/IP sockets- based protocol, and an Internet service provider could be used to establish connectivity to the Internet. Still yet, the computer infrastructure is intended to demonstrate that some or all of the components of such an implementation could be deployed, managed, serviced, etc. by a service provider who offers to implement, deploy, and/or perform the functions of the preferred embodiment for others.
Where computer hardware is provided, it is understood that any computers utilized will include standard elements such as a processing unit, a memory medium, a bus, and input/output (I/O) interfaces. Further, such computer systems can be in communication with external I/O devices/resources. In general, processing units execute computer program code, such as the software and functionality described above, which is stored within memory medium(s). While executing computer program code, the processing unit can read and/or write data to/from memory, I/O interfaces, etc. The bus provides a communication link between each of the components in a computer. External devices can comprise any device (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with the computer system and/or any devices (e.g., network card, modem, etc.) that enable the computer to communicate with one or more other computing devices. The hardware used to implement the preferred embodiment can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, the processing unit therein may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, the memory medium can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, the I/O interfaces can comprise any system for exchanging information with one or more external device. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) can be included in the hardware.
While shown and described herein as delegated virtualization in a multi-core processor, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a computer-readable/useable medium that includes computer program code to enable a computer infrastructure to provide delegated virtualization in a multi-core processor. To this extent, the computer- readable/useable medium includes program code that implements the process(es) of the invention. It is understood that the terms computer-readable medium or computer useable medium comprises one or more of any type of physical embodiment of the program code. In particular, the computer-readable/useable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal (e.g., a propagated signal) traveling over a network (e.g., during a wired/wireless electronic distribution of the program code).
In another embodiment, the invention provides a method (e.g., business) that performs the process of the invention on a subscription, advertising, and/or fee basis. That is, a service provider, such as a Solution Integrator, could offer to provide delegated virtualization in a multi-core processor. In this case, the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure that performs the process of the invention for one or more customers. In return, the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties.
In still another embodiment, the invention provides a processing method. In this case, a computer infrastructure can be provided and one or more systems for performing the process of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. To this extent, the deployment of a system can comprise one or more of: (1) installing program code on a computing device from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure to enable the computer infrastructure to perform the process of the invention. As used herein, it is understood that the terms "program code" and "computer program code" are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form. To this extent, program code can be embodied as one or more of: an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
A data processing system suitable for storing and/or executing program code can be provided hereunder and can include at least one processor communicatively coupled, directly or indirectly, to memory element(s) through a system bus. The memory elements can include, but are not limited to, local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including, but not limited to, keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters also may be coupled to the system to enable the data processing system to become coupled to other data processing systems, remote printers, storage devices, and/or the like, through any combination of intervening private or public networks. Illustrative network adapters include, but are not limited to, modems, cable modems and Ethernet cards.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible.

Claims

1. A multi-core processor, comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main processing element comprising a set of pseudo virtualized control threads.
2. The multi-core processor of claim 1, the pseudo main processing element associated with a second group of sub processing elements via the set of pseudo virtualized control threads.
3. The multi-core processor of claim 1 or claim 2, the first group of sub-processing elements comprising a plurality of sub-processing elements.
4. The multi-core processor of claim 1 , claim 2 or claim 3, the set of virtualized control threads being configured to send program code and data to the first group of sub-processing elements.
5. The multi-core processor of claim 4, the set of virtualized control threads being further configured to collect computation results from the first group of sub-processing elements.
6. The multi-core processor of any preceding claim, the set of virtualized control threads controlling a clock speed, power consumption and computation loading of the set of first group of sub-processing elements.
7. The multi-core processor of any preceding claim, the set of virtualized control threads being configured to send and receive power control requests between the main processing element and the first group of sub-processing elements.
8. The multi-core processor of any preceding claim, the pseudo main processing element associated with a second group of sub processing elements via the set of pseudo virtualized control threads.
9. A processing method, comprising: associating a main processing element with a first group of sub-processing element using a set of virtualized control threads; delegating a set of functions of the main processing element to a second group of sub-processing elements to cause the second group of sub-processing elements to act as a pseudo main processing element; associating the pseudo main processing element with a third group of sub-processing elements using a set of pseudo virtualized control threads; and controlling the first group of sub-processing elements using the set of virtualized control threads and the third group of sub-processing elements using the set of pseudo virtualized control threads.
10. The processing method of claim 9, further comprising sending program code and data to the first group of sub-processing elements via the set of virtualized control threads and to the third set of groups of sub-processing elements via the set of pseudo virtualized control threads.
11. The processing method of claim 9 or claim 10, further comprising receiving computation results from the first group of sub-processing elements via the set of virtualized control threads and from the third group of sub-processing elements via the set of pseudo virtualized control threads.
12. The processing method of any of claims 9 to 11, the controlling comprising controlling a clock speed, a power consumption and a computation loading of the first group of sub-processing elements and the third group of sub-processing elements.
13. The processing method of any of claims 9 to 12, the set of virtualized control threads being embodied as program code within the set of main processing elements, and the set of pseudo virtualized control threads being embodied as program code within the pseudo main processing element. .
14. The processing method of any of claims 9 to 13, the main processing element, the first group of sub-processing elements, the set of virtualized control threads, the pseudo main processing element, the third group of sub-processing elements, and the set of pseudo virtualized control threads comprising a multi-core processor.
15. A method for deploying a processing system, comprising: providing a multi-core processor comprising: a main processing element comprising a set of virtualized control threads; a first group of sub-processing elements associated with main processing element via at least one of set of virtualized control threads; and a group of sub-processing elements designated as a pseudo main processing element, the pseudo main element comprising a set of pseudo virtualized control threads.
PCT/EP2009/062554 2008-09-30 2009-09-28 Delegated virtualization in a multi-core processor (mcp) Ceased WO2010037720A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/241,332 US8438404B2 (en) 2008-09-30 2008-09-30 Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US12/241,332 2008-09-30

Publications (1)

Publication Number Publication Date
WO2010037720A1 true WO2010037720A1 (en) 2010-04-08

Family

ID=41334487

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2009/062554 Ceased WO2010037720A1 (en) 2008-09-30 2009-09-28 Delegated virtualization in a multi-core processor (mcp)

Country Status (3)

Country Link
US (1) US8438404B2 (en)
TW (1) TW201019134A (en)
WO (1) WO2010037720A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US10015293B2 (en) * 2013-02-08 2018-07-03 Iot Holdings, Inc. Method and apparatus for incorporating an internet of things (IoT) service interface protocol layer in a node
CN105718320B (en) * 2016-01-18 2020-11-06 华为技术有限公司 A clock task processing method, device and device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138637A1 (en) * 2001-03-22 2002-09-26 Masakazu Suzuoki Computer architecture and software cells for broadband networks
US20070074207A1 (en) * 2005-09-27 2007-03-29 Sony Computer Entertainment Inc. SPU task manager for cell processor

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201040A (en) * 1987-06-22 1993-04-06 Hitachi, Ltd. Multiprocessor system having subsystems which are loosely coupled through a random access storage and which each include a tightly coupled multiprocessor
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US6205259B1 (en) * 1992-04-09 2001-03-20 Olympus Optical Co., Ltd. Image processing apparatus
KR970002740B1 (en) * 1993-12-21 1997-03-08 양승택 Higher Processor Overload Control Method in a Distributed Exchange System with a Hierarchical Structure
EP0715264B1 (en) * 1994-03-28 2004-05-12 Sony Corporation Method and apparatus of compiling parallel image processing programs
US5640584A (en) * 1994-12-12 1997-06-17 Ncr Corporation Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
US5881303A (en) * 1996-07-01 1999-03-09 Sun Microsystems, Inc. Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode
US6215898B1 (en) * 1997-04-15 2001-04-10 Interval Research Corporation Data processing system and method
JP3560447B2 (en) * 1997-07-28 2004-09-02 シャープ株式会社 Image processing device
US6240090B1 (en) * 1997-12-19 2001-05-29 Telefonaktiebolaget Lm Ericcson (Publ) Self-configuring processors in an asynchronous transfer mode switch
US6067603A (en) * 1998-10-01 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
ATE253283T1 (en) * 1999-09-29 2003-11-15 Swisscom Mobile Ag METHOD FOR FINDING MEMBERS OF A COMMON INTEREST GROUP
JP4484288B2 (en) * 1999-12-03 2010-06-16 富士機械製造株式会社 Image processing method and image processing system
JP2002158862A (en) * 2000-11-22 2002-05-31 Fuji Photo Film Co Ltd Method and system for processing medical image
US20060250514A1 (en) * 2001-01-09 2006-11-09 Mitsubishi Denki Kabushiki Kaisha Imaging apparatus
US6829378B2 (en) * 2001-05-04 2004-12-07 Biomec, Inc. Remote medical image analysis
US6567622B2 (en) * 2001-10-22 2003-05-20 Hewlett-Packard Development Company, L.P. Image forming devices and image forming methods
US6886048B2 (en) * 2001-11-15 2005-04-26 Hewlett-Packard Development Company, L.P. Techniques for processing out-of-order requests in a processor-based system
US7102777B2 (en) * 2001-12-20 2006-09-05 Kabushiki Kaisha Toshiba Image processing service system
US6922783B2 (en) * 2002-01-16 2005-07-26 Hewlett-Packard Development Company, L.P. Method and apparatus for conserving power on a multiprocessor integrated circuit
US7080267B2 (en) * 2002-08-01 2006-07-18 Texas Instruments Incorporated Methodology for managing power consumption in an application
US7028196B2 (en) * 2002-12-13 2006-04-11 Hewlett-Packard Development Company, L.P. System, method and apparatus for conserving power consumed by a system having a processor integrated circuit
US7519008B2 (en) * 2003-06-05 2009-04-14 International Business Machines Corporation Ineligible group member status
CN1816806A (en) * 2003-07-02 2006-08-09 皇家飞利浦电子股份有限公司 System, method, program, compiler and record carrier
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
KR100503094B1 (en) * 2003-08-25 2005-07-21 삼성전자주식회사 DSP having wide memory bandwidth and DSP memory mapping method
US20050071578A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for manipulating data with a plurality of processors
US7614053B2 (en) * 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
US7730456B2 (en) * 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
JP2005341136A (en) * 2004-05-26 2005-12-08 Matsushita Electric Ind Co Ltd Image processing device
US7249268B2 (en) * 2004-06-29 2007-07-24 Intel Corporation Method for performing performance optimization operations for a processor having a plurality of processor cores in response to a stall condition
WO2006128062A2 (en) * 2005-05-25 2006-11-30 Terracotta, Inc. Database caching of queries and stored procedures using database provided facilities for dependency analysis and detected database updates for invalidation
US20060268357A1 (en) * 2005-05-25 2006-11-30 Vook Dietrich W System and method for processing images using centralized image correction data
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
KR100817052B1 (en) * 2006-01-10 2008-03-26 삼성전자주식회사 Video signal processing device and video signal processing method that does not require high memory bandwidth
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US20080134321A1 (en) * 2006-12-05 2008-06-05 Priya Rajagopal Tamper-resistant method and apparatus for verification and measurement of host agent dynamic data updates
US8996864B2 (en) * 2006-12-22 2015-03-31 Virtuallogix Sa System for enabling multiple execution environments to share a device
US7418368B2 (en) * 2007-01-18 2008-08-26 International Business Machines Corporation Method and system for testing processor cores
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US20080244222A1 (en) * 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
US7761687B2 (en) * 2007-06-26 2010-07-20 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US7870366B2 (en) * 2007-09-22 2011-01-11 Hirak Mitra Chained operation of functional components with DONE and GO registers storing memory address for writing and reading linking signal value
US8645965B2 (en) * 2007-12-31 2014-02-04 Intel Corporation Supporting metered clients with manycore through time-limited partitioning

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138637A1 (en) * 2001-03-22 2002-09-26 Masakazu Suzuoki Computer architecture and software cells for broadband networks
US20070074207A1 (en) * 2005-09-27 2007-03-29 Sony Computer Entertainment Inc. SPU task manager for cell processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOSE FLICH ET AL: "On the Potential of NoC Virtualization for Multicore Chips", COMPLEX, INTELLIGENT AND SOFTWARE INTENSIVE SYSTEMS, 2008. CISIS 2008. INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 4 March 2008 (2008-03-04), pages 801 - 807, XP031312240, ISBN: 978-0-7695-3109-0 *

Also Published As

Publication number Publication date
TW201019134A (en) 2010-05-16
US8438404B2 (en) 2013-05-07
US20100082941A1 (en) 2010-04-01

Similar Documents

Publication Publication Date Title
US8645733B2 (en) Virtualized application power budgeting
Dupont et al. An energy aware framework for virtual machine placement in cloud federated data centres
US8756322B1 (en) Fulfillment of requests for computing capacity
US6901522B2 (en) System and method for reducing power consumption in multiprocessor system
US10908938B2 (en) Methods and systems to determine application license costs in a virtualized data center for use in virtual machine consolidation
KR20120017411A (en) Resource management methods and computer program products and systems
US20110173410A1 (en) Execution of dataflow jobs
Kim et al. Min-max exclusive virtual machine placement in cloud computing for scientific data environment
US8775840B2 (en) Virtualization in a multi-core processor (MCP)
US8341638B2 (en) Delegated virtualization across physical partitions of a multi-core processor (MCP)
US8438404B2 (en) Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US9361160B2 (en) Virtualization across physical partitions of a multi-core processor (MCP)
CN114579250A (en) Method, device and storage medium for constructing virtual cluster
Anan et al. SLA-based optimization of energy efficiency for green cloud computing
Leite et al. Power‐aware server consolidation for federated clouds
Reddy et al. Energy aware heuristic scheduling of variable class constraint resources in cloud data centres
Marinescu Cloud energy consumption
Anjum et al. Load balancing for cloud ecosystem using energy aware application scaling methodologies
US12321778B1 (en) Preemptive scheduling for serverless high performance computing
US20260111282A1 (en) Workload as a service in cloud environment
Orgerie et al. Energy aware clouds
Nagadevi et al. Multi-core-Aware VM Placement Algorithms Using Constraint Programming in Cloud Environment
Barroso et al. Energy and Sustainability
US8656375B2 (en) Cross-logical entity accelerators
Eyal et al. Thinner clouds with preallocation

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: 09783508

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: 09783508

Country of ref document: EP

Kind code of ref document: A1