WO2011107775A1 - Data processing apparatus and method for transferring workload between source and destination processing circuitry - Google Patents
Data processing apparatus and method for transferring workload between source and destination processing circuitry Download PDFInfo
- Publication number
- WO2011107775A1 WO2011107775A1 PCT/GB2011/050315 GB2011050315W WO2011107775A1 WO 2011107775 A1 WO2011107775 A1 WO 2011107775A1 GB 2011050315 W GB2011050315 W GB 2011050315W WO 2011107775 A1 WO2011107775 A1 WO 2011107775A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processing
- processing circuitry
- cache
- circuitry
- workload
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates to a data processing apparatus and method for switching a workload between first and second processing circuitry, and in particular to a technique for improving the processing performance of the workload following the switch.
- section 2.3 it is noted that there is a cost to switching cores, which necessitates restriction of the granularity of switching.
- the operating system decides a switch is in order, it powers up the new core, triggers a cache flush to save all dirty cache data to a shared memory structure, and then signals the new core to start at a predefined operating system entry point. The old core can then be powered down, whilst the new core retrieves required data from memory.
- Such an approach is described in section 2.3 as allowing an application to be switched between cores by the operating system.
- the remainder of the paper discusses how such switching may be performed dynamically within a multi-core setting with the aim of reducing energy consumption.
- the paper does not address the problem that there is a significant overhead involved in switching applications between cores, which can significantly reduce the benefits to be achieved from such switching.
- the overhead includes not just the time taken to perform the switch during which no processor is performing the transferred workload, but also the penalty incurred by cache misses following the switch.
- the present invention provides a data processing apparatus comprising:
- first processing circuitry and second processing circuitry configured to perform a processing workload such that the processing workload is performed by one of the first processing circuitry and the second processing circuitry at a time;
- power control circuitry for independently controlling the power supply to the first processing circuitry and the second processing circuitry
- a workload transfer controller responsive to a transfer stimulus to control a transfer of performance of the processing workload from a source processing circuitry to a destination processing circuitry prior to the source processing circuitry being placed in a power saving condition by the power control circuitry, the source processing circuitry being one of the first and second processing circuitry and the destination processing circuitry being the other of the first and second processing circuitry;
- At least the source processing circuitry has a cache
- the power control circuitry is configured to maintain at least the cache of the source processing circuitry in a powered condition during a snooping period following the start of performance of the transferred processing workload by the destination processing circuitry;
- the data processing apparatus comprises cache snooping circuitry configured during the snooping period to snoop data values in the cache of the source processing circuitry and to retrieve the snooped data values for the destination processing circuitry; and
- the power control circuitry is configured to place said at least the cache of the source processing circuitry in the power saving condition following the end of the snooping period.
- the data processing apparatus of the present invention has first and second processing circuitry, and at any time during processing, one of the first and second processing circuitry is performing a processing workload.
- performance of the processing workload is transferred from a source processing circuitry (whichever of the first and second processing circuitry is currently performing the workload at the time of receipt of the transfer stimulus) to a destination processing circuitry (the other of the first and second processing circuitry), in preparation for the source processing circuitry to be placed in a power saving condition.
- the present technique improves the performance level of the destination circuitry after the processing workload has been transferred to the destination circuitry.
- the destination processing circuitry may require data values that were stored in a cache of the source processing circuitry before the transfer. At least the cache of the source processing circuitry is maintained in a powered condition for a finite period (the snooping period) following the start of performance of the transferred processing workload by the destination processing circuitry.
- Cache snooping circuitry snoops the data in the source cache during the snooping period, and retrieves data on behalf of the destination processing circuitry.
- the destination processing circuitry has access to the data in the source cache for an initial period of processing, thus avoiding the need to fetch the data from memory. Since accesses to the source cache are quicker and use less power than accesses to memory, the present technique improves the performance level of the destination processing circuitry, and the energy efficiency of the apparatus as a whole, following the transfer of the processing workload.
- the present technique also recognises that the snooping of data in this source cache is only useful for a finite period following the start of performance of the processing workload by the destination processing circuitry.
- the data in the source cache is no longer relevant to the processing performed by the destination processing circuitry.
- the destination processing circuitry may begin processing another application that does not require the data from the source cache, or the destination processing circuitry may have processed the data such that an updated value, different to the value stored in the source cache, is now being used. Therefore, at the end of the snooping period, the cache snooping circuitry stops snooping data values from the source cache, and the power control circuitry is configured to place at least the cache of the source processing circuitry in the power saving condition, so as to save energy.
- the source cache instead of powering down the source cache immediately following the transfer of the processing workload to the destination processing circuitry, the source cache is maintained in a powered state for a snooping period during which the cache snooping circuitry can snoop data values in the source cache and retrieve the snoop data values for the destination processing circuitry.
- each processing circuitry may include a single processor core, or a plurality of processor cores.
- the processing workload may include at least one processing application and at least one operating system for running the at least one processing application.
- the workload can be readily switched between the first and second processing circuits in a manner transparent to the operating system.
- the workload transfer controller may be configured during the transfer to mask predetermined processor specific configuration information from the at least one operating system such that the transfer of the workload is transparent to the at least one operating system.
- the workload transfer controller may comprise at least virtualisation software logically separating the at least one operating system from the first processing circuitry and the second processing circuitry.
- the virtualisation software provides a level of abstraction in order to hide the hardware configuration of the respective processing circuitries from the operating system, so that the operating system is unaware which processing circuitry is performing the workload. Thus, the operating system configuration can be simplified.
- the virtualisation software may control the allocation of the processing workload to either the first processing circuitry or the second processing circuitry.
- the first processing circuitry may be architecturally compatible with the second processing circuitry such that a processing workload to be performed by the data processing apparatus can be performed on either the first processing circuitry or the second processing circuitry.
- a processing workload to be performed by the data processing apparatus can be performed on either the first processing circuitry or the second processing circuitry. This means that from an application perspective, the only difference between the application running on the first processing circuitry and the application running on the second processing circuitry is the performance level or energy efficiency achieved. There is no need for an instruction set conversion between the first and second processing circuitry.
- the entire processing workload including the operating system and the applications being run by the operating system can be transferred backwards and forwards between the first and second processing circuitry in a simple way.
- the first processing circuitry may be micro-architecturally different to the second processing circuitry such that performance of the first processing circuitry is different from performance of the second processing circuitry.
- the one of the first and second processing circuitry having the higher performance level will generally consume more energy than the other one of the first and second processing circuitry.
- This means that the workload can be switched to the higher performance processing circuitry if high performance processing is required (for example, when a gaming application is being performed).
- low performance processing such as MP3 playback
- the processing workload can be switched in its entirety to the lower performance processing circuitry in order to improve energy efficiency.
- the performance of the processing workload can be optimised for performance or energy consumption depending on the nature of the workload to be performed.
- the micro-architectural differences between the processing circuitries can include, for example, different execution pipeline lengths or different execution resources. Differences in pipeline length will typically result in differences in operating frequency, which in turn will have an effect on performance. Similarly, differences in execution resources will have an effect on processing throughput and hence performance. For example, a processing circuit having wider execution resources will enable more information to be processed at any particular point in time, improving throughput. In addition, or alternatively, one processing circuit may have more execution resources than the other, for example, more arithmetic logic units (ALUs), which again will improve throughput.
- ALUs arithmetic logic units
- an energy efficient processing circuit may be provided with a simple in-order pipeline, whilst a higher performance processing circuit may be provided with an out-of-order superscalar pipeline.
- a higher performance processing circuit could have branch prediction capability which speeds up processing by prefetching predicted branch targets before the branch has been resolved, while a more energy efficient processing circuit could have no branch predictor.
- the present technique may be used when only the source processing circuitry has a cache. In this case, some memory accesses can be avoided by the destination processing circuitry using the cache snooping circuitry to snoop the source cache during the snooping period. Following the end of the snooping period, all data would need to be fetched from memory.
- the destination processing circuitry would also comprise a cache, such that both the first and second processing circuitry comprises a cache.
- the data values snooped by the cache snooping circuitry and retrieved for the destination processing circuitry by the cache snooping circuitry can be stored in the cache of the destination processing circuitry to speed up future references to the data.
- the power control circuitry may be configured to place the source processing circuitry, other than the cache, in the power saving condition during the snooping period, and to place the cache of the source processing circuitry in the power saving condition following the end of the snooping period. This reduces the power consumption of the data processing apparatus, since most of the source processing circuitry can be powered down after the workload has been handed over to the destination processor. Only the cache of source processing circuitry remains powered during the snooping period, to enable the cache snooping circuitry to retrieve the values stored in the source cache for the destination processing circuitry.
- the snooped source cache can be maintained in the powered condition during the snooping period while at least one other cache in the cache hierarchy is in the power saving condition.
- the source cache to be snooped is a level two inclusive cache which is configured to store all of the data stored in any level one cache(s) of the cache hierarchy.
- the level two cache can be left in a powered state during the snooping period to enable snooping from the cache snooping circuitry on behalf of the destination processing circuitry, while the level one cache(s) can be powered down along with the rest of the source processing circuitry.
- the power control circuitry may be configured to maintain the source processing circuitry in the powered condition during the snooping period and to place the entire source processing circuitry, including the cache, in the power saving condition following the end of the snooping period.
- leaving the source processing circuitry powered during the snooping period increases power consumption, it reduces the complexity of the data processing apparatus since independent power control to both the source cache and the remainder of the source processing circuitry is not required.
- An example situation in which it may be desired to power the source cache and source processing circuitry together is when the cache of the source processing circuitry to be snooped by the cache snooping circuitry is a level one cache.
- a level one cache may be too closely integrated to a processor core within the source processing circuitry to be able to provide separate power control to the cache and the rest of the source processing circuitry.
- the entire source processing circuitry including the cache can be left powered during the snooping period and powered down following the end of the snooping period.
- the source processing circuitry may be configured to perform a cleaning operation on the source cache to write back any dirty data from the cache to a shared memory following the end of the snooping period and before the power control circuitry places the cache of the source processing circuitry in the power saving condition.
- the power control circuitry can maintain the destination processing circuitry in the power saving condition before the occurrence of the transfer stimulus.
- the power control circuitry can power up the destination processing circuitry in response to the transfer stimulus.
- the destination processing circuitry may be configured to invalidate the destination cache before the destination processing circuitry starts performing the transferred processing workload. For example, if the destination processing circuitry has been in the power saving condition prior to the transfer of the performance of the processing workload, then on powering up the destination processing circuitry the destination cache can contain erroneous data. By invalidating the destination cache before the destination processing circuitry starts performing the transferred processing workload, processing errors can be avoided.
- the source processing circuitry may be configured to continue performing the processing workload while the cache of the destination processing circuitry is being invalidated, and the workload transfer controller may be configured to transfer the performance of the processing workload to the destination processing circuitry after the cache of the destination processing circuitry has been invalidated.
- the snooping period may begin when the destination processing circuitry starts performing the processing workload.
- the snooping period may end on the occurrence of any one of a set of snoop stop events comprising at least one snoop stop event.
- One or more snoop stop events can trigger the cache snooping circuitry to end the snooping period. Typically, these events indicate that the data in the source cache is no longer needed by the destination processing circuitry.
- the cache snooping circuitry may be configured to monitor whether any of the set of snoop stop events have occurred.
- the cache snooping circuitry may comprise performance counters for monitoring the processing of the destination processing circuitry and the data accesses performed by the destination processing circuitry. Using the performance counters, the cache snooping circuitry can analyse whether the data in the source cache is still relevant to the processing being performed by the destination processing circuitry. By configuring the cache snooping circuitry, rather than the destination processing circuitry, to monitor whether any of the snoop stop events has occurred, the destination processing circuitry can be left unaware of whether the source cache is still being snooped. This makes the configuration of the destination processing circuitry simpler.
- the at least one snoop stop event may include an event that occurs that when the percentage of snoops performed by the cache snooping circuitry that result in a cache hit in the cache of the source processing circuitry drops below a predetermined threshold level. If the percentage of cache hits in the source cache becomes low, then this indicates that many of the data values sought by the destination processing circuitry are no longer present in the source cache, and so the data in the source cache is not relevant to the destination processing circuitry. Therefore, power efficiency can be improved by ending the snooping period and shutting down the source cache once the percentage of cache hits drops below a predetermined threshold level.
- the at least one snoop stop event may also include an event that occurs when the destination processing circuitry completes a predetermined number of processing transactions of a predetermined type following the transfer of the processing workload.
- the destination processing circuitry can access the data stored in the source cache via the cache snooping circuitry, the destination processing circuitry will not typically be able to update the values in the source cache. It can be expected that, after a predetermined number of transactions have completed, the destination processing circuitry will have generated new values for some of the data originally stored in the source cache. Since the destination processing circuitry cannot write data to the source cache, the new data values would be stored in memory and/or a destination cache, which means that the original data values in the source cache are no longer relevant to the destination processing circuitry.
- the completion of the predetermined number of processing transactions of the predetermined type can indicate that the source cache is no longer needed and so can trigger the end of the snooping period.
- the predetermined type of processing transactions could comprise, for example, all transactions performed by the destination processing circuitry or could comprise only cacheable transactions.
- Another type of snoop stop event can be an event that occurs when a predetermined number of processing cycles have elapsed after the destination processing circuitry starts performing the transferred processing workload.
- the destination processing will not typically be able to update the values in the source cache. Therefore, after the destination processing circuitry has performed processing for a certain number of processing cycles, the data used by the data processing circuitry (e.g. data stored in memory or a destination cache) is unlikely to be the same as the data still stored in the source cache. This means that the number of processing cycles that have elapsed since the start of the performance of the processing workload by the destination processing circuitry can be an indicator that the source cache is no longer useful to the destination processing circuitry and can be powered down.
- the at least one snoop stop event may include an event that occurs when a particular memory region of the shared memory is accessed for the first time by the destination processing circuitry after starting performance of the transferred processing workload.
- the first access to a particular memory region can indicate, for example, that the destination processing circuitry has started a new application associated with the particular memory region, different to the application previously being processed by the destination processing circuitry. This can indicate that the data in the source cache, which is not associated with the new application, is no longer relevant to the destination processing circuitry. Therefore, the first access to the particular memory region can trigger the end of the snooping period.
- the snoop stop event can also include an event that occurs when a particular memory region of the shared memory, which was accessed by the destination circuitry for an initial period after starting performance of the transferred processing workload, is not accessed by the destination processing circuitry for a predetermined period.
- a memory region associated with the original application may not be accessed for a period of time. This can indicate that the data in the source cache is no longer being used by the destination processing circuitry and so can trigger the end of the snooping period.
- Another type of snoop stop event is an event that occurs when the destination processing circuitry writes to a predetermined memory location of the shared memory for the first time after starting performance of the transferred processing workload. This allows the destination processing circuitry to signal to the cache snooping circuitry that it no longer needs the data in the source cache by writing to the predetermined memory location.
- the set of snoop stop events can include any one or a plurality of the above mentioned snoop stop events, as well as other types of snoop stop event.
- shared memory refers to memory which can be directly accessed by both the first processing circuitry and the second processing circuitry, for example main memory coupled to both the first and second processing circuitry via an interconnect.
- the apparatus may comprise a snoop override controller responsive to a snoop override condition to override snooping of the cache of the source processing circuitry by the cache snooping circuitry and to control the power control circuitry to place the source processing circuitry, including the cache, in the power saving state after the transfer of the performance of the processing workload without waiting for the end of the snooping period.
- a snoop override controller responsive to a snoop override condition to override snooping of the cache of the source processing circuitry by the cache snooping circuitry and to control the power control circuitry to place the source processing circuitry, including the cache, in the power saving state after the transfer of the performance of the processing workload without waiting for the end of the snooping period.
- snooping of the source cache may not be useful for the destination processing circuitry.
- the snoop override controller can override the cache snooping circuitry by preventing snooping of the source cache and controlling the power control circuitry to place the source processing circuitry, including the cache, in the power saving state without waiting for the end of the snooping period.
- the snoop override controller may be provided, for example, as firmware executed on the source processing circuitry or as part of virtualising software which masks the hardware specific information of the processing circuitry from the operating system.
- the snoop override controller can signal to the cache snooping circuitry and power control circuitry that the snooping of the cache is not necessary.
- the cache snooping circuitry may comprise a coherent interconnect coupled to the first and second processing circuitry.
- the coherent interconnect has a view of both the source cache and any shared memory present in the data processing apparatus.
- the destination processing circuitry can simply request data from the coherent interconnect, and the coherent interconnect can manage whether data is snooped from the source cache or fetched for memory (depending on whether or not the snooping period has completed yet and whether or not the data access request results in a hit in the source cache).
- the coherent interconnect manages the data accesses so that the destination processing circuitry does not need to be aware of the exact location of the requested data.
- the destination processing circuitry can be unaware of the snooping of data from the source cache.
- the coherent interconnect can in some embodiments also provide a convenient mechanism for transferring architectural state data from the source processing circuitry to the destination processing circuitry during the handover of the processing workload.
- the present invention provides a data processing apparatus comprising:
- first processing means for performing processing and second processing means for performing processing, the first processing means and second processing means being configured to perform a processing workload such that the processing workload is performed by one of the first processing means and the second processing means at a time; power control means for independently controlling the power supply to the first processing means and the second processing means;
- workload transfer control means for, in response to a transfer stimulus, controlling a transfer of performance of the processing workload from a source processing means to a destination processing means prior to the source processing means being placed in a power saving condition by the power control means, the source processing means being one of the first and second processing means and the destination processing means being the other of the first and second processing means;
- At least the source processing means has a cache means for storing cached data values
- the power control means is configured to maintain at least the cache means of the source processing means in a powered condition during a snooping period following the start of performance of the transferred processing workload by the destination processing means;
- the data processing apparatus comprises cache snooping means for snooping data values in the cache means of the source processing means during the snooping period, and retrieving the snooped data values for the destination processing means; and
- the power control means is configured to place said at least the cache means of the source processing means in the power saving condition following the end of the snooping period.
- the present invention provides a data processing method for an apparatus comprising first processing circuitry and second processing circuitry configured to perform a processing workload such that the processing workload is performed by one of the first processing circuitry and the second processing circuitry at a time; the method comprising:
- the source processing circuitry being one of the first and second processing circuitry and comprising a cache, the other of the first and second processing circuitry being a destination processing circuitry; in response to a transfer stimulus, transferring performance of the processing workload from the source processing circuitry to the destination processing circuitry prior to the source processing circuitry being placed in a power saving condition; maintaining at least the cache of the source processing circuitry in a powered condition during a snooping period following the start of performance of the transferred processing workload by the destination processing circuitry;
- the present invention provides a data processing apparatus comprising:
- first processing circuitry and second processing circuitry configured to perform a processing workload such that the processing workload is performed by one of the first processing circuitry and the second processing circuitry at a time;
- a workload transfer controller responsive to a transfer stimulus to control a transfer of performance of the processing workload from a source processing circuitry to a destination processing circuitry prior to the source processing circuitry being placed in a power saving condition by the power control circuitry, the source processing circuitry being one of the first and second processing circuitry and the destination processing circuitry being the other of the first and second processing circuitry;
- At least the destination processing circuitry has a cache
- the destination processing circuitry is configured to invalidate the cache of the destination processing circuitry before the destination processing circuitry starts performing the transferred processing workload
- the source processing circuitry is configured to continue performing the processing workload while the cache of the destination processing circuitry is being invalidated; and the workload transfer controller is configured to transfer the performance of the processing workload to the destination processing circuitry after the cache of the destination processing circuitry has been invalidated.
- the present technique can improve the processing performance by allowing the source processing circuitry to continue processing the processing workload for a period following the receipt of the transfer stimulus while the cache of a destination processing circuitry is being invalidated. By only transferring performance of the processing workload to the destination processing circuitry after the cache of the destination processing circuitry has been invalidated, the time during which neither processing circuitry is performing the workload can be reduced. Therefore, the processing workload is performed faster and more efficiently.
- FIG. 1 is a block diagram of a data processing system in accordance with one embodiment
- FIG. 2 schematically illustrates the provision of a switch controller (also referred to herein as a workload transfer controller) in accordance with one embodiment to logically separate the workload being performed by the data processing apparatus from the particular hardware platform within the data processing apparatus being used to perform that workload;
- a switch controller also referred to herein as a workload transfer controller
- Figure 3 is a diagram schematically illustrating the steps performed by both a source processor and a destination processor in response to a switching stimulus in order to transfer the workload from the source processor to the destination processor in accordance with one embodiment
- Figure 4 A schematically illustrates the storing of the source processing circuitry's current architectural state into its associated cache during the save operation of Figure 3;
- Figure 4B schematically illustrates the use of the snoop control unit to control the transfer of the source processing circuit's current architectural state to the destination processing circuit during the restore operation of Figure 3
- Figure 5 illustrates an alternative structure for providing an accelerated mechanism for transferring the current architectural state of the source processing circuitry to the destination processing circuitry during the transfer operation in accordance with one embodiment
- FIGS. 6 A to 61 schematically illustrate the steps performed to transfer a workload from a source processing circuit to a destination processing circuit in accordance with one embodiment
- Figure 7 is a graph showing energy efficiency variation with performance, and illustrating how the various processor cores illustrated in Figure 1 are used at various points along that curve in accordance with one embodiment
- Figures 8A and 8B schematically illustrate a low performance processor pipeline and a high performance processor pipeline, respectively, as utilised in one embodiment
- Figure 9 is a graph showing the variation in power consumed by the data processing system as performance of a processing workload is switched between a low performance, high energy efficiency, processing circuit and a high performance, low energy efficiency, processing circuit.
- FIG. 1 is a block diagram schematically illustrating a data processing system in accordance with one embodiment.
- the system contains two architecturally compatible processing circuit instances (the processing circuitry 0 10 and the processing circuitry 1 50), but with those different processing circuit instances having different micro-architectures.
- the processing circuitry 10 is arranged to operate with higher performance than the processing circuitry 50, but with the trade-off that the processing circuitry 10 will be less energy efficient than the processing circuitry 50. Examples of micro-architectural differences will be described in more detail below with reference to Figures 8A and 8B.
- Each processing circuit may include a single processing unit (also referred to herein as a processor core), or alternatively at least one of the processing circuit instances may itself comprise a cluster of processing units with the same microarchitecture.
- the processing circuit 10 includes two processor cores 15, 20 which are both architecturally and micro-architecturally identical.
- the processing circuit 50 contains only a single processor core 55.
- processor cores 15, 20 will be referred to as “big” cores, whilst the processor core 55 will be referred to as a “little” core, since the processor cores 15, 20 will typically be more complex than the processor core 55 due to those cores being designed with performance in mind, whereas in contrast the processor core 55 is typically significantly less complex due to being designed with energy efficiency in mind.
- each of the cores 15, 20, 55 is assumed to have its own associated local level 1 cache 25, 30, 60, respectively, which may be arranged as a unified cache for storing both instructions and data for reference by the associated core, or can be arranged with a Harvard architecture, providing distinct level 1 data and level 1 instruction caches. Whilst each of the cores is shown as having its own associated level 1 cache, this is not a requirement, and in alternative embodiments, one or more of the cores may have no local cache.
- the processing circuitry 10 also includes a level 2 cache 35 shared between the core 15 and the core 20, with a snoop control unit 40 being used to ensure cache coherency between the two level 1 caches 25, 30 and the level 2 cache 35.
- the level 2 cache is arranged as an inclusive cache, and hence any data stored in either of the level 1 caches 25, 30 will also reside in the level 2 cache 35.
- the purpose of the snoop control unit 40 is to ensure cache coherency between the various caches, so that it can be ensured that either core 15, 20 will always access the most up-to-date version of any data when it issues an access request.
- the snoop control unit 40 intercepts the request as propagated on from the level 1 cache 25, and determines with reference to the level 1 cache 30 and/or the level 2 cache 35 whether that access request can be serviced from the contents of one of those other caches. Only if the data is not present in any of the caches is the access request then propagated on via the interconnect 70 to main memory 80, the main memory 80 being memory that is shared between both the processing circuitry 10 and the processing circuitry 50.
- the snoop control unit 75 provided within the interconnect 70 operates in a similar manner to the snoop control unit 40, but in this instance seeks to maintain coherency between the cache structure provided within the processing circuitry 10 and the cache structure provided within the processing circuitry 50.
- the level 2 cache 35 is an inclusive cache
- the snoop control unit maintains hardware cache coherency between the level 2 cache 35 of the processing circuitry 10 and the level 1 cache 60 of the processing circuitry 50.
- the snoop control unit 75 will also snoop the data held in the level 1 caches 25, 30 in order to ensure cache coherency between the caches of the processing circuitry 10 and the cache 60 of the processing circuitry 50.
- the workload can be considered to comprise at least one application and at least one operating system for running that at least one application, such as illustrated schematically by the reference numeral 100 in Figure 2.
- two applications 105, 110 are running under control of the operating system 115, and collectively the applications 105, 110 and the operating system 115 form the workload 100.
- the applications can be considered to exist at a user level, whilst the operating system exists at a privileged level, and collectively the workload formed by the applications and the operating system runs on a hardware platform 125 (representing the hardware level view). At any point in time that hardware platform will either be provided by the processing circuitry 10 or by the processing circuitry 50.
- power control circuitry 65 is provided for selectively and independently providing power to the processing circuitry 10 and the processing circuitry 50.
- the processing circuit currently performing the workload the source processing circuitry
- the other processing circuit the destination processing circuitry
- the source processing circuit from which the workload has been transferred will then be placed into the power saving condition.
- the power saving condition can take a variety of forms, dependent on implementation, and hence for example may be one of a powered off condition, a partial/full data retention condition, a dormant condition or an idle condition. Such conditions will be well understood by a person skilled in the art, and accordingly will not be discussed in more detail herein.
- the workload when the workload involves the execution of one or more performance intensive tasks, such as execution of games applications, then the workload can be executed on the high performance processing circuit 10, either using one or both of the big cores 15, 20.
- the workload when the workload is only performing low performance intensity tasks, such as MP3 playback, then the entire workload can be transferred to the processing circuit 50, so as benefit from the energy efficiencies that can be realised from utilising the processing circuit 50.
- such benefits are at least in part achieved by arranging the processing circuitry 10 to be architecturally compatible with the processing circuitry 50. This ensures that the workload can be migrated from one processing circuitry to the other whilst ensuring correct operation.
- architectural compatibility requires both processing circuits 10 and 50 to share the same instruction set architecture.
- such architectural compatibility also entails a higher compatibility requirement so as to ensure that the two processing circuit instances are seen as identical from a programmer's view. In one embodiment, this involves use of the same architectural registers, and one or more special purpose registers storing data used by the operating system when executing applications. With such a level of architectural compatibility, it is then possible to mask from the operating system 115 the transfer of the workload between processing circuits, so that the operating system is entirely unaware as to whether the workload is being executed on the processing circuitry 10 or on the processing circuitry 50.
- the handling of the transfer from one processing circuit to the other is managed by the switch controller 120 shown in Figure 2 (also referred to therein as a virtualiser and elsewhere herein as a workload transfer controller).
- the switch controller can be embodied by a mixture of hardware, firmware and/or software features, but in one embodiment includes software similar in nature to hypervisor software found in virtual machines to enable applications written in one native instruction set to be executed on a hardware platform adopting a different native instruction set. Due to the architectural compatibility between the two processing circuits 10, 50, the switch controller 120 can mask the transfer from the operating system 115 merely by masking one or more items of predetermined processor specific configuration information from the operating system.
- the processor specific configuration information may include the contents of a CP 15 processor ID register and CP 15 cache type register.
- the switch controller then merely needs to ensure that any current architectural state held by the source processing circuit at the time of the transfer, and that is not at the time the transfer is initiated already available from shared memory 80, is made available to the destination processing circuit in order to enable the destination circuit to be in a position to successfully take over performance of the workload.
- such architectural state will typically comprise the current values stored in the architectural register file of the source processing circuitry, along with the current values of one or more special purpose registers of the source processing circuitry. Due to the architectural compatibility between the processing circuits 10, 50, if this current architectural state can be transferred from the source processing circuit to the destination processing circuit, the destination processing circuit will then be in a position to successfully take over performance of the workload from the source processing circuit.
- the processing circuits 10, 50 Whilst architectural compatibility between the processing circuits 10, 50 facilitates transfer of the entire workload between the two processing circuits, in one embodiment the processing circuits 10, 50 are micro-architecturally different from each other, such that there are different performance characteristics, and hence energy consumption characteristics, associated with the two processing circuits. As discussed earlier, in one embodiment, the processing circuit 10 is a high performance, high energy consumption, processing circuit, while the processing circuit 50 is a lower performance, lower energy consumption, processing circuit.
- the two processing circuits can be micro-architecturally different from each other in a number of respects, but typically will have at least one of different execution pipeline lengths, and/or different execution resources. Differences in pipeline length will typically result in differences in operating frequency, which in turn will have an effect on performance.
- the processing circuitry 10 may have wider execution resources and/or more execution resources, in order to improve throughput.
- the pipelines within the processor cores 15, 20 may be arranged to perform out-of-order superscalar processing, whilst the simpler core 55 within the energy efficient processing circuit 50 may be arranged as an in- order pipeline.
- the generation of a transfer stimulus to cause the switch controller 120 to instigate a handover operation to transfer the workload from one processing circuit to another can be triggered for a variety of reasons.
- applications may be profiled and marked as 'big', 'little' or 'big/little', whereby the operating system can interface with the switch controller to move the workload accordingly.
- the generation of the transfer stimulus can be mapped to particular combinations of applications being executed, to ensure that when high performance is required, the workload is executed on the high performance processing circuit 10, whereas when that performance is not required, the energy efficient processing circuit 50 is instead used.
- algorithms could be executed to dynamically determine when to trigger a transfer of the workload from one processing circuit to the other based on one or more inputs.
- the performance counters of the processing circuitry can be set up to count performance sensitive events (for example the number of instructions executed, or the number of load-store operations). Coupled with a cycle counter or a system timer, this allows identification that a highly compute intensive application is executing that may be better served by switching to the higher performance processing circuitry, or identification of a large number of load-store operations indicating an 10 intensive application which may be better served on the energy efficient processing circuitry, etc.
- the data processing system may include one or more thermal sensors 90 for monitoring the temperature of the data processing system during operation. It can be the case that modern high performance processing circuits, for example those running at GHz frequencies, sometimes reach, or exceed, the thermal limits that they were designed to operate within. By using such thermal sensors 90, it can be detected when such thermal limits are being reached, and under those conditions a transfer stimulus can be generated to trigger a transfer of the workload to a more energy efficient processing circuit in order to bring about an overall cooling of the data processing system.
- each of the different processing circuits will be arranged to be architecturally compatible with each other to allow the ready migration of the entire workload between the processing circuits, but will also be micro-architecturally different to each other to allow choices to be made between the use of those processing circuits dependent on required performance/energy levels.
- FIG 3 is a flow diagram illustrating the sequence of steps performed on both the source processor and the destination processor when the workload is transferred from the source processor to the destination processor upon receipt of a transfer stimulus.
- a transfer stimulus may be generated by the operating system 115 or the virtualiser 120 via a system firmware interface resulting in the detection of the switching stimulus at step 200 by the source processor (which will be running not only the workload, but also the virtualiser software forming at least part of the switch controller 120).
- Receipt of the transfer stimulus (also referred to herein as the switching stimulus) at step 200 will cause the power controller 65 to initiate a power on and reset operation 205 on the destination processor. Following such power on and reset, the destination processor will invalidate its local cache at step 210, and then enable snooping at step 215.
- the destination processor will then signal to the source processor that it is ready for the transfer of the workload to take place, this signal causing the source processor to execute a save state operation at step 225.
- This save state operation will be discussed in more detail later with reference to Figure 4A, but in one embodiment involves the source processing circuitry storing to its local cache any of its current architectural state which is not available from shared memory at the time the handover operation is initiated, and that is necessary for the destination processor to successfully take over performance of the workload.
- a switch state signal will be issued to the destination processor 230 indicating to the destination processor that it should now begin snooping the source processor in order to retrieve the required architectural state.
- This process takes place via a restore state operation 230 which will be discussed in more detail later with reference to Figure 4B, but which in one embodiment involves the destination processing circuitry initiating a sequence of accesses which are intercepted by the snoop control unit 75 within the interconnect 70, and which cause the cached copy of the architectural state in the source processor's local cache to be retrieved and returned to the destination processor.
- the destination processor is then in a position to take over processing of the workload, and accordingly normal operation begins at step 235.
- the source processor's cache could be cleaned as indicated at step 250, in order to flush any dirty data to the shared memory 80, and then the source processor could be powered down at step 255.
- the source processor is arranged to remain powered up for a period of time referred to in Figure 3 as the snooping period.
- At least one of the caches of the source circuit remains powered up, so that its contents can be snooped by the snoop control circuit 75 in response to access requests issued by the destination processor.
- the destination processor would during these early stages operate relatively inefficiently, since there would be a lot of cache misses in its local cache, and a lot of fetching of data from shared memory, resulting in a significant performance impact whilst the destination processor's cache is "warmed up", i.e. filled with data values required by the destination processor circuit to perform the operations specified by the workload.
- the snoop control circuit 75 will be able to service a lot of these cache miss requests with reference to the source circuit's cache, yielding significant performance benefits when compared with the retrieval of that data from shared memory 80.
- the architectural state that needs to be stored from the source processing circuitry 300 to the local cache 330 consists of the contents of a register file 310 referenced by an arithmetic logic unit (ALU) 305 during the performance of data processing operations, along with the contents of various special purpose registers 320 identifying a variety of pieces of information required by the workload to successfully enable that workload to be taken over by the destination processing circuitry.
- the contents of the special purpose registers 320 will include for example a program counter value identifying a current instruction being executed, along with various other information.
- other special purpose registers include processor status registers (e.g. the CPSR and SPSR in the ARM architecture) that hold control bits for processor mode, interrupt masking, execution state and flags.
- special purpose registers include architectural control (the CP 15 system control register in the ARM architecture) that hold bits to alter data endianness, turn the MMU on or off, turn data/instruction caches on or off, etc.
- Other special purpose registers in CP 15 store exception address and status information.
- the source processing circuit 300 will also typically hold some processor specific configuration information 315, but this information does not need saving to the cache 330, since it will not be applicable to the destination processing circuitry.
- the processor specific configuration information 315 is typically hard-coded in the source processing circuit 300 using logic constants, and may include, for example, the contents of the CP 15 processor ID register (which will be different for each processing circuit) or the contents of the CP 15 cache type register (which will depend on the configuration of the caches 25, 30, 60, for example indicating that the caches have different line lengths).
- the operating system 115 requires a piece of processor specific configuration information 315, then unless the processor is already in hypervisor mode, an execution trap to hypervisor mode occurs.
- the virtualiser 120 may in one embodiment indicate the value of the information requested, but in another embodiment will return a "virtual" value.
- this virtual value can be chosen to be the same for both “big” and “little” processors, thereby causing the actual hardware configuration to be hidden from the operating system 115 by the virtualiser 120.
- the contents of the register file 310 and of the special purpose registers 320 is stored by the source processing circuitry into the cache 330 to form a cached copy 335.
- This cached copy is then marked as shareable, which allows the destination processor to snoop this state via the snoop control unit 75.
- the restore operation subsequently performed on the destination processor is then illustrated schematically in Figure 4B.
- the destination processing circuitry 350 which may or may not have its own local cache
- the snoop control unit will then issue a snoop request to the source processing circuit's local cache 330 to determine whether that item of architectural state is present in the source's cache. Because of the steps taken during the save operation discussed in Figure 4 A, a hit will be detected in the source's cache 330, resulting in that cached architectural state being returned via the snoop control unit 75 to the destination processing circuit 350.
- This process can be repeated iteratively until all of the items of architectural state have been retrieved via snooping of the source processing circuit's cache.
- Any processor specific configuration information relevant to destination processing circuit 350 is typically hard-coded in the destination processing circuit 350 as discussed earlier. Thus, once the restore operation has been completed, the destination processing circuitry then has all the information required to enable it to successfully take over handling of the workload.
- the virtualiser 120 regardless of whether the workload 100 is being performed by the "big” processing circuit 10 or "little” processing circuit 50, the virtualiser 120 provides the operating system 115 with virtual configuration information having the same values, and so the hardware differences between the "big” and “little” processing circuits 10, 50 are masked from the operating system 115 by the virtualiser 120. This means that the operating system 115 is unaware that the performance of the workload 100 has been transferred to a different hardware platform.
- the various processor instances 10, 50 are arranged to be hardware cache coherent with one another in order to reduce the amount of time, energy and hardware complexity involved in transferring the architectural state from the source processor to the destination processor.
- the technique uses the source processor's local cache to store all of the state that must be transferred from the source processor to the destination processor and which is not available from shared memory at the time the transfer operation takes place. Because the state is marked as shareable within the source processor's cache, this allows the hardware cache coherent destination processor to snoop this state during the transfer operation. By using such a technique, it is possible to transfer the state between the processor instances without the need to save that state either to main memory or to a local memory mapped storage element. This hence yields significant performance and energy consumption benefits, increasing the variety of situations in which it would be appropriate to switch the workload in order to seek to realise energy consumption benefits.
- Figure 5 illustrates an alternative mechanism where a dedicated bus 380 is provided between the source processing circuitry 300 and the destination processing circuitry 350 in order to allow the architectural state to be transferred during the handover operation.
- the save and restore operations 225, 230 of Figure 3 are replaced with an alternative transfer mechanism utilising the dedicated bus 380.
- Figures 6A to 61 schematically illustrate a series of steps that are performed in order to transfer performance of a workload from the source processing circuitry 300 to the destination processing circuitry 350.
- the source processing circuitry 300 is whichever of the processing circuits 10, 50 is performing the workload before the transfer, with the destination processing circuitry being the other of the processing circuits 10, 50.
- Figure 6A shows the system in an initial state in which the source processing circuitry 300 is powered by the power controller 65 and is performing the processing workload 100, while the destination processing circuitry 350 is in the power saving condition.
- the power saving condition is a power off condition, but as mentioned above other types of power saving condition may also be used.
- the workload 100 including applications 105, 110 and an operating system 115 for running the applications 105, 110, is abstracted from the hardware platform of the source processing circuitry 300 by the virtualiser 120. While performing the workload 100, the source processing circuitry 300 maintains architectural state 400, which may comprise for example the contents of the register file 310 and special purpose registers 320 as shown in Figure 4 A.
- a transfer stimulus 430 is detected by the virtualiser 120. While the transfer stimulus 430 is shown in Figure 6B as an external event (e.g. detection of thermal runaway by the thermal sensor 90), the transfer stimulus 430 could also be an event triggered by the virtualiser 120 itself or by the operating system 115 (e.g. the operating system 115 could be configured to inform the virtualiser 120 when a particular type of application is to be processed).
- the virtualiser 120 responds to the transfer stimulus 430 by controlling the power controller 65 to supply power to the destination processing circuitry 350, in order to place the destination processing circuitry 350 in a powered state.
- the destination processing circuitry 350 starts executing the virtualiser 120.
- the virtualiser 120 controls the destination processing circuitry 350 to invalidate its cache 420, in order to prevent processing errors caused by erroneous data values which may be present in the cache 420 on powering up the destination processing circuitry 350.
- the source processing circuitry 350 continues to perform the workload 100.
- the virtualiser 120 controls the destination processing circuitry 350 to signal to the source processing circuitry 300 that it is ready for the handover of the workload 100.
- the source processing circuitry 300 stops performing the workload 100.
- neither the source processing circuitry 300 nor the destination processing circuitry 350 performs the workload 100.
- a copy of the architectural state 400 is transferred from the source processing circuitry 300 to the destination processing circuitry 350.
- the architectural state 400 can be saved to the source cache 410 and restored to the destination processing circuitry 350 as shown in Figures 4A and 4B, or can be transferred over a dedicated bus as shown in Figure 5.
- the architectural state 400 contains all the state information required for the destination processing circuitry 350 to perform the workload 100, other than the information already present in the shared memory 80.
- the source processing circuitry 300 Having transferred the architectural state 400 to the destination processing circuitry 350, the source processing circuitry 300 is placed in the power saving state by the power control circuitry 65 (see Figure 6E), with the exception that the source cache 410 remains powered. Meanwhile, the destination processing circuitry 350 begins performing the workload 100 using the transferred architectural state 400.
- the snooping period begins (see Figure 6F).
- the snoop control unit 75 can snoop the data stored in the source cache 410 and retrieve the data on behalf of the destination processing circuitry 350.
- the destination processing circuitry 350 requests data that is not present in the destination cache 420, the destination processing circuitry 350 requests data from the snoop control unit 75.
- the snoop control unit 75 then snoops the source cache 410, and if the snoop results in a cache hit then the snoop control unit 75 retrieves the snooped data from the source cache 410 and returns it to the destination processing circuitry 350 where the snooped data can be stored in the destination cache 420. On the other hand, if the snoop results in a cache miss in the source cache 410 then the requested data is fetched from the shared memory 80 and returned to the destination processing circuitry 350.
- the snoop control unit 75 detects a snoop stop event which indicates that it is no longer efficient to maintain the source cache 410 in the powered state.
- the snoop stop event triggers the end of the snooping period.
- the snoop stop event may be any one of a set of snoop stop events monitored by the snoop control circuitry 75.
- the set of snoop stop events can include any one or more of the following events:
- a predetermined type e.g. cacheable transactions
- snoop stop events can be detected using programmable counters in the coherent interconnect 70 that includes the snoop control unit 75. Other types of snoop stop event may also be included in the set of snoop stop events.
- the snoop control unit 75 On detecting a snoop stop event, the snoop control unit 75 sends a snoop stop signal 440 to the source processor 300.
- the snoop control unit 75 stops snooping the source cache 410 and from now on responds to data access requests from the destination processing circuitry 350 by fetching the requested data from shared memory 80 and returning the fetched data to the destination processing circuitry 350, where the fetched data can be cached.
- the source cache's control circuit is responsive to the snoop stop signal 440 to clean the cache 410 in order to save to the shared memory 80 any valid and dirty data values (i.e. whose cached value is more up-to-date than the
- the source cache 410 is then powered down by the power controller 65 so that the source processing circuitry 300 is entirely in the power saving state.
- the destination processing circuitry 350 continues to perform the workload 100.
- the operating system 115 is not aware that execution of the workload has transferred from one processing circuit to another processing circuit. When another transfer stimulus occurs, then the same steps of Figures 6 A to 61 can be used to switch performance of the workload back to the first processor (in this case which of the processing circuits 10, 50 are the "source processing circuitry” and "destination processing circuitry” will be reversed).
- independent power control to the cache 410 and the source processing circuitry 300 is available so that the source processing circuitry 300, other than the source cache 410, can be powered down once the destination processing circuitry 350 has started performing the workload (see Figure 6E), while only the cache 410 of the source processing circuitry 350 remains in the powered state (see Figures 6F to 6H).
- the source cache 410 is then powered down in Figure 61. This approach can be useful to save energy, especially when the source processing circuitry 300 is the "big" processing circuit 10.
- a snoop override controller can trigger the virtualiser 120 and snoop control circuitry 75 to override the snooping of the source cache 410 and to control the source processing circuit 300 to clean and power down the source cache 410 without waiting for a snoop stop event to signal the end of the snooping period.
- the technique of Figures 6 A to 61 would jump from the step of Figure 6E straight to the step of Figure 6G, without the step of Figure 6F in which data is snooped from the source cache 410.
- the snoop override controller can be part of the virtualiser 120, or can be implemented as firmware executing on the source processing circuitry 300.
- the snoop override controller could also be implemented as a combination of elements, for example the operating system 115 could inform the virtualiser 120 when an application has finished, and the virtualiser 120 could then override snooping of the source cache 410 if a transfer occurs when an application has finished.
- Figure 7 is a graph on which the line 600 illustrates how energy consumption varies with performance.
- the data processing system can be arranged to utilise different combinations of the processor cores 15, 20, 55 illustrated in Figure 1 in order to seek to obtain the appropriate trade-off between performance and energy consumption.
- the data processing system can be arranged to utilise different combinations of the processor cores 15, 20, 55 illustrated in Figure 1 in order to seek to obtain the appropriate trade-off between performance and energy consumption.
- the big cores 15, 20 of the processing circuit 10 in order to achieve the desired performance.
- supply voltage variation techniques can be used to allow some variation in performance and energy consumption when utilising these two cores.
- a transfer stimulus can be generated to trigger the earlier described mechanism for transferring the entire workload from the processing circuit 10 to the processing circuit 50, such that the entire workload is then run on the small core 55, with the processing circuit 10 being placed into a power saving condition.
- supply voltage variation can be used to allow some variation in the
- Figures 8A and 8B respectively illustrate micro-architectural differences between a low performance processor pipeline 800 and a high performance processor pipeline 850 according to one embodiment.
- the low performance processor pipeline 800 of Figure 8 A would be suitable for the little processing core 55 of Figure 1
- the high performance processor pipeline 850 of Figure 8B would be suitable for the big cores 15, 20.
- the low performance processor pipeline 800 of Figure 8A comprises a fetch stage 810 for fetching instructions from memory 80, a decode stage 820 for decoding the fetched instructions, an issue stage 830 for issuing instructions for execution, and multiple execution pipelines including an integer pipeline 840 for performing integer operations, a MAC pipeline 842 for performing multiply accumulate operations, and a SIMD/FPU pipeline 844 for performing SIMD (single instruction, multiple data) operations or floating point operations.
- the issue stage 830 issues a single instruction at a time, and issues the
- the high performance processor pipeline 850 of Figure 8B comprises a fetch stage 860 for fetching instructions from memory 80, a decode stage 870 for decoding the fetched instructions, a rename stage 875 for renaming registers specified in the decoded instructions, a dispatch stage 880 for dispatching instructions for execution, and multiple execution pipelines including two integer pipelines 890, 892, a MAC pipeline 894, and two SIMD/FPU pipelines 896, 898.
- the dispatch stage 880 is a parallel issue stage which can issue multiple instructions to different ones of the pipelines 890, 892, 894, 896, 898 at once.
- the dispatch stage 880 can also issue the instructions out-of-order.
- the SIMD/FPU pipelines 896, 898 are variable length, which means that operations proceeding through the SIMD/FPU pipelines 896, 898 can be controlled to skip certain stages.
- An advantage of such an approach is that if multiple execution pipelines each have different resources, there is no need to artificially lengthen the shortest pipeline to make it the same length as the longest pipeline, but instead logic is required to deal with the out-of-order nature of the results produced by the different pipelines (for example to place everything back in order if a processing exception occurs).
- the rename stage 875 is provided to map register specifiers, which are included in program instructions and identify particular architectural registers when viewed from a programmer's model point of view, to physical registers which are the actual registers of the hardware platform.
- the rename stage 875 enables a larger pool of physical registers to be provided by the microprocessor than are present within the programmer's model view of the microprocessor. This larger pool of physical registers is useful during out-of-order execution because it enables hazards such as write-after- write (WAW) hazards to be avoided by mapping the same architectural register specified in two or more different instructions to two or more different physical registers, so that the different instructions can be executed concurrently.
- WAW write-after- write
- the low-performance pipeline 800 and high-performance pipeline 850 are micro-architecturally different in a number of ways.
- the micro-architectural differences can include:
- the pipelines having different stages For example, the high-performance pipeline 850 has a rename stage 875 which is not present in the low- performance pipeline 800.
- the pipeline stages having different capabilities are capable only of single issue of instructions, whereas the dispatch stage 880 of the high performance pipeline 850 can issue instructions in parallel. Parallel issue improves the processing throughput of the pipeline and so improves performance.
- the decode stage 870 of the high-performance pipeline 850 may include three sub-stages whereas the decode stage 820 of the low-performance pipeline 800 may include only a single sub-stage.
- the longer a pipeline stage (the greater the number of sub-stages), the greater the number of instructions which can be in flight at the same time, and so greater the operating frequency at which the pipeline can operate, which results in a higher level of performance.
- a different number of execution pipelines e.g. the high-performance pipeline 850 has more execution pipelines than the low-performance pipeline 800.
- the MAC instructions could be executed by the MAC pipe 894, while (subject to any data hazards which cannot be resolved by renaming) a later instruction using a different execution pipeline 890, 892, 896, 898 can be executed in parallel with the MAC instructions. This means that out-of-order execution can improve processing performance.
- micro-architectural differences result in the pipeline 850 providing higher performance processing than the pipeline 800.
- the micro-architectural differences also make the pipeline 850 consume more energy than the pipeline 800.
- providing micro-architecturally different pipelines 800, 850 enables the processing of the workload to be optimised for either high performance (by using a "big" processing circuit 10 having the high-performance pipeline 850) or energy efficiency (by using a "little" processing circuit 50 having the low-performance pipeline 800).
- Figure 9 shows a graph illustrating the variation in power consumption of the data processing system as performance of the workload 100 is switched between the big processing circuit 10 and the little processing circuit 50.
- the workload 100 is being performed on the little processing circuitry 50 and so power consumption is low.
- a transfer stimulus occurs indicating that high-intensity processing is to be performed and so the performance of the workload is handed over to the big processing circuitry 10.
- the power consumption then rises and remains high at point C while the big processing circuitry 10 is performing the workload.
- point D it is assumed that both big cores are operating in combination to process the workload. If however the performance requirements drop to a level where the workload can be handled by only one of the big cores, then the workload is migrated to only one of the big cores, and the other is powered down, as indicated by the drop in power to the level adjacent point E.
- the cache of the big processing circuitry 10 When the little processing circuitry 50 starts processing the processing workload, most of the big processing circuitry is in the power saving state, but the cache of the big processing circuitry 10 remains powered during the snooping period (point F in Figure 9) to enable the data in the cache to be retrieved for the little processing circuitry 50. Hence, the cache of the big processing circuitry 10 causes the power consumption at point F to be higher than at point A when only the little processing circuitry 50 was powered. At the end of the snooping period, the cache of the big processing circuitry 10 is powered down and at point G power consumption returns to the low level when only the little processing circuitry 50 is active.
- the snooping period for the little-to-big transition has not been indicated in Figure 9 because the power consumed by leaving the cache of the little processing circuitry 50 in a powered state during the snooping period is insignificant in comparison with the power consumed by the big processing circuitry 10 when performing the processing workload, and so the very small increase in power consumption due to the cache of the little processing circuitry 50 being powered is not visible in the graph of Figure 9.
- the above described embodiments describe a system containing two or more architecturally compatible processor instances with micro-architectures optimised for energy efficiency or performance.
- the architectural state required by the operating system and applications can be switched between the processor instances depending on the required performance/energy level, in order to allow the entire workload to be switched between the processor instances.
- only one of the processor instances is running the workload at any given time, with the other processing instance being in a power saving condition, or in the process of entering/exiting the power saving condition.
- the processor instances may be arranged to be hardware cache coherent with one another to reduce the amount of time, energy and hardware complexity involved in switching the architectural state from the source processor to the destination processor. This reduces the time to perform the switching operation, which increases the opportunities in which the techniques of embodiments can be used.
- Such systems may be used in a variety of situations where energy efficiency is important for either battery life and/or thermal management, and the spread of performance is such that a more energy efficient processor can be used for lower processing workloads while a higher performance processor can be used for higher processing workloads.
- the total amount of architectural state that needs to be transferred can easily fit within a data cache, and since modern processing systems often implement cache coherence, then by storing the architectural state to be switched inside the data cache, the destination processor can rapidly snoop this state in an energy efficient way making use of existing circuit structures.
- the switching mechanism is used to ensure thermal limits for the data processing system are not breached.
- the entire workload can be switched to a more energy efficient processor instance, allowing the overall system to cool while continued program execution takes place, albeit at a lower throughput.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
Abstract
Description
Claims
Priority Applications (8)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012555486A JP5702407B2 (en) | 2010-03-01 | 2011-02-17 | Data processing apparatus and method for transferring a workload between a transfer source processing circuit and a transfer destination processing circuit |
| DE112011100743.4T DE112011100743B4 (en) | 2010-03-01 | 2011-02-17 | A data processing apparatus and method for transferring a workload between source and destination processing circuits |
| GB1214397.0A GB2490825B (en) | 2010-03-01 | 2011-02-17 | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
| CN201180012192.2A CN102804103B (en) | 2010-03-01 | 2011-02-17 | Data processing apparatus and method for transferring workload between source and target processing circuits |
| BR112012021121-8A BR112012021121B1 (en) | 2010-03-01 | 2011-02-17 | data processing apparatus, and, data processing method |
| KR1020127024659A KR101740225B1 (en) | 2010-03-01 | 2011-02-17 | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
| RU2012141563/08A RU2550535C2 (en) | 2010-03-01 | 2011-02-17 | Data processing device and method of transferring workload between source and destination processing circuitry |
| IL221269A IL221269A (en) | 2010-03-01 | 2012-08-02 | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/659,230 | 2010-03-01 | ||
| US12/659,230 US8533505B2 (en) | 2010-03-01 | 2010-03-01 | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2011107775A1 true WO2011107775A1 (en) | 2011-09-09 |
Family
ID=44209944
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/GB2011/050315 Ceased WO2011107775A1 (en) | 2010-03-01 | 2011-02-17 | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
Country Status (10)
| Country | Link |
|---|---|
| US (2) | US8533505B2 (en) |
| JP (1) | JP5702407B2 (en) |
| KR (1) | KR101740225B1 (en) |
| CN (1) | CN102804103B (en) |
| BR (1) | BR112012021121B1 (en) |
| DE (1) | DE112011100743B4 (en) |
| GB (1) | GB2490825B (en) |
| IL (1) | IL221269A (en) |
| RU (2) | RU2550535C2 (en) |
| WO (1) | WO2011107775A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016529636A (en) * | 2013-09-27 | 2016-09-23 | インテル・コーポレーション | Techniques for configuring multiple memory resources across multiple devices |
| RU2652460C1 (en) * | 2017-06-23 | 2018-04-26 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" | Method of facilitating multiplication of two numbers in modular-index presentation format with floating point on universal multi-core processors |
Families Citing this family (41)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
| US9010641B2 (en) * | 2010-12-07 | 2015-04-21 | Hand Held Products, Inc. | Multiple platform support system and method |
| DE112012006377B4 (en) * | 2012-05-17 | 2022-02-24 | Intel Corporation | Control energy consumption and performance of computer systems |
| WO2014021995A1 (en) * | 2012-07-31 | 2014-02-06 | Empire Technology Development, Llc | Thread migration across cores of a multi-core processor |
| US9000805B2 (en) * | 2013-01-29 | 2015-04-07 | Broadcom Corporation | Resonant inductor coupling clock distribution |
| WO2014209401A1 (en) * | 2013-06-28 | 2014-12-31 | Intel Corporation | Techniques to aggregate compute, memory and input/output resources across devices |
| JP2015035073A (en) * | 2013-08-08 | 2015-02-19 | ルネサスエレクトロニクス株式会社 | Semiconductor device and semiconductor device control method |
| US9965279B2 (en) | 2013-11-29 | 2018-05-08 | The Regents Of The University Of Michigan | Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry |
| US9561232B2 (en) | 2014-02-18 | 2017-02-07 | Demerx, Inc. | Low dose noribogaine for treating nicotine addiction and preventing relapse of nicotine use |
| US9244747B2 (en) | 2014-03-13 | 2016-01-26 | Qualcomm Incorporated | System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication |
| US9591978B2 (en) | 2014-03-13 | 2017-03-14 | Demerx, Inc. | Methods and compositions for pre-screening patients for treatment with noribogaine |
| US20150379678A1 (en) * | 2014-06-25 | 2015-12-31 | Doa'a M. Al-otoom | Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency |
| US9870226B2 (en) | 2014-07-03 | 2018-01-16 | The Regents Of The University Of Michigan | Control of switching between executed mechanisms |
| US9547592B2 (en) | 2014-07-29 | 2017-01-17 | International Business Machines Corporation | Cache mobility |
| CN105550140B (en) * | 2014-11-03 | 2018-11-09 | 联想(北京)有限公司 | A kind of electronic equipment and data processing method |
| US9891964B2 (en) * | 2014-11-19 | 2018-02-13 | International Business Machines Corporation | Network traffic processing |
| US9898071B2 (en) | 2014-11-20 | 2018-02-20 | Apple Inc. | Processor including multiple dissimilar processor cores |
| US9958932B2 (en) | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
| EP4279134A1 (en) | 2014-11-26 | 2023-11-22 | DemeRx, Inc. | Methods and compostions for potentiating the action of opioid analgesics using iboga alkaloids |
| CN104375963B (en) * | 2014-11-28 | 2019-03-15 | 上海兆芯集成电路有限公司 | Cache coherency-based control system and method |
| CN104407995B (en) * | 2014-11-28 | 2018-10-09 | 上海兆芯集成电路有限公司 | Control system based on buffer consistency and method |
| US9891699B2 (en) * | 2014-12-18 | 2018-02-13 | Vmware, Inc. | System and method for performing distributed power management without power cycling hosts |
| US9697124B2 (en) * | 2015-01-13 | 2017-07-04 | Qualcomm Incorporated | Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture |
| GB2536202B (en) * | 2015-03-02 | 2021-07-28 | Advanced Risc Mach Ltd | Cache dormant indication |
| JP6478762B2 (en) | 2015-03-30 | 2019-03-06 | ルネサスエレクトロニクス株式会社 | Semiconductor device and control method thereof |
| US10055259B2 (en) * | 2015-05-26 | 2018-08-21 | Mediatek Inc. | Method for performing processor resource allocation in an electronic device, and associated apparatus |
| WO2016195274A1 (en) * | 2015-06-01 | 2016-12-08 | Samsung Electronics Co., Ltd. | Method for scheduling entity in multi-core processor system |
| US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
| CN105302498A (en) * | 2015-11-24 | 2016-02-03 | 浪潮(北京)电子信息产业有限公司 | Storage redundant system and method |
| US10310858B2 (en) * | 2016-03-08 | 2019-06-04 | The Regents Of The University Of Michigan | Controlling transition between using first and second processing circuitry |
| US10482016B2 (en) | 2017-08-23 | 2019-11-19 | Qualcomm Incorporated | Providing private cache allocation for power-collapsed processor cores in processor-based systems |
| US11119830B2 (en) * | 2017-12-18 | 2021-09-14 | International Business Machines Corporation | Thread migration and shared cache fencing based on processor core temperature |
| EP3750057B1 (en) | 2018-02-08 | 2022-10-19 | Alibaba Group Holding Limited | Hybrid system-on-chip for power and performance prediction and control |
| EP3553666B1 (en) * | 2018-04-12 | 2023-05-31 | ARM Limited | Cache control in presence of speculative read operations |
| US11106261B2 (en) | 2018-11-02 | 2021-08-31 | Nvidia Corporation | Optimal operating point estimator for hardware operating under a shared power/thermal constraint |
| TWI697778B (en) * | 2019-06-17 | 2020-07-01 | 慧榮科技股份有限公司 | A data storage device and a data processing method |
| US11586472B2 (en) | 2019-12-10 | 2023-02-21 | Advanced Micro Devices, Inc. | Method of task transition between heterogenous processors |
| US11531550B2 (en) | 2020-11-05 | 2022-12-20 | Cadence Design Systems, Inc. | Program thread selection between a plurality of execution pipelines |
| US11487340B1 (en) * | 2021-06-24 | 2022-11-01 | Advanced Micro Devices, Inc. | Probe filter retention based low power state |
| EP4399612A4 (en) * | 2021-09-10 | 2025-07-23 | Purdue Research Foundation | MEMORY MANAGEMENT METHODS FOR PSEUDOFUNCTIONAL DIFFERENTIABLE PROGRAMMING |
| US12326811B2 (en) * | 2022-11-30 | 2025-06-10 | Stratus Technologies Ireland Ltd. | Fault tolerant systems and methods using shared memory configurations |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020095609A1 (en) * | 2001-01-15 | 2002-07-18 | Yuichi Tokunaga | Multiprocessor apparatus |
| US6501999B1 (en) * | 1999-12-22 | 2002-12-31 | Intel Corporation | Multi-processor mobile computer system having one processor integrated with a chipset |
| US6631474B1 (en) * | 1999-12-31 | 2003-10-07 | Intel Corporation | System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching |
| WO2005062180A1 (en) * | 2003-12-16 | 2005-07-07 | Apple Computer, Inc. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
| US20080114966A1 (en) | 2006-10-25 | 2008-05-15 | Arm Limited | Determining register availability for register renaming |
| US7590826B2 (en) | 2006-11-06 | 2009-09-15 | Arm Limited | Speculative data value usage |
Family Cites Families (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3309A (en) * | 1843-10-18 | Weaver s loom for working any number of heddles | ||
| US288748A (en) * | 1883-11-20 | John watson | ||
| US5530932A (en) * | 1994-12-23 | 1996-06-25 | Intel Corporation | Cache coherent multiprocessing computer system with reduced power operating features |
| JPH09138716A (en) | 1995-11-14 | 1997-05-27 | Toshiba Corp | Electronic computer |
| JP3864509B2 (en) * | 1997-08-19 | 2007-01-10 | 株式会社日立製作所 | Multiprocessor system |
| JPH11203254A (en) | 1998-01-14 | 1999-07-30 | Nec Corp | Shared process control device and machine readable recording medium for storing program |
| JP2000347758A (en) * | 1999-06-03 | 2000-12-15 | Nec Kofu Ltd | Information processor |
| US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
| US6725354B1 (en) | 2000-06-15 | 2004-04-20 | International Business Machines Corporation | Shared execution unit in a dual core processor |
| US7100060B2 (en) | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
| US7487502B2 (en) | 2003-02-19 | 2009-02-03 | Intel Corporation | Programmable event driven yield mechanism which may activate other threads |
| US20040225840A1 (en) | 2003-05-09 | 2004-11-11 | O'connor Dennis M. | Apparatus and method to provide multithreaded computer processing |
| US20060064606A1 (en) | 2004-09-21 | 2006-03-23 | International Business Machines Corporation | A method and apparatus for controlling power consumption in an integrated circuit |
| US7275124B2 (en) * | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability |
| US7461275B2 (en) | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
| US20080263324A1 (en) | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
| JP4938080B2 (en) * | 2007-06-12 | 2012-05-23 | パナソニック株式会社 | Multiprocessor control device, multiprocessor control method, and multiprocessor control circuit |
| US8527709B2 (en) * | 2007-07-20 | 2013-09-03 | Intel Corporation | Technique for preserving cached information during a low power mode |
| US7996663B2 (en) | 2007-12-27 | 2011-08-09 | Intel Corporation | Saving and restoring architectural state for processor cores |
| US20110213947A1 (en) | 2008-06-11 | 2011-09-01 | John George Mathieson | System and Method for Power Optimization |
| US8725953B2 (en) * | 2009-01-21 | 2014-05-13 | Arm Limited | Local cache power control within a multiprocessor system |
| US8566628B2 (en) * | 2009-05-06 | 2013-10-22 | Advanced Micro Devices, Inc. | North-bridge to south-bridge protocol for placing processor in low power state |
| US9367462B2 (en) | 2009-12-29 | 2016-06-14 | Empire Technology Development Llc | Shared memories for energy efficient multi-core processors |
| US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
| US8418187B2 (en) | 2010-03-01 | 2013-04-09 | Arm Limited | Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system |
| US20110213935A1 (en) | 2010-03-01 | 2011-09-01 | Arm Limited | Data processing apparatus and method for switching a workload between first and second processing circuitry |
| US8751833B2 (en) | 2010-04-30 | 2014-06-10 | Arm Limited | Data processing system |
-
2010
- 2010-03-01 US US12/659,230 patent/US8533505B2/en active Active
-
2011
- 2011-02-17 WO PCT/GB2011/050315 patent/WO2011107775A1/en not_active Ceased
- 2011-02-17 KR KR1020127024659A patent/KR101740225B1/en active Active
- 2011-02-17 GB GB1214397.0A patent/GB2490825B/en active Active
- 2011-02-17 DE DE112011100743.4T patent/DE112011100743B4/en active Active
- 2011-02-17 RU RU2012141563/08A patent/RU2550535C2/en active
- 2011-02-17 JP JP2012555486A patent/JP5702407B2/en active Active
- 2011-02-17 CN CN201180012192.2A patent/CN102804103B/en active Active
- 2011-02-17 RU RU2015107993A patent/RU2711336C2/en active
- 2011-02-17 BR BR112012021121-8A patent/BR112012021121B1/en active IP Right Grant
-
2012
- 2012-08-02 IL IL221269A patent/IL221269A/en active IP Right Grant
-
2013
- 2013-04-30 US US13/873,597 patent/US9286222B2/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6501999B1 (en) * | 1999-12-22 | 2002-12-31 | Intel Corporation | Multi-processor mobile computer system having one processor integrated with a chipset |
| US6631474B1 (en) * | 1999-12-31 | 2003-10-07 | Intel Corporation | System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching |
| US20020095609A1 (en) * | 2001-01-15 | 2002-07-18 | Yuichi Tokunaga | Multiprocessor apparatus |
| WO2005062180A1 (en) * | 2003-12-16 | 2005-07-07 | Apple Computer, Inc. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
| US20080114966A1 (en) | 2006-10-25 | 2008-05-15 | Arm Limited | Determining register availability for register renaming |
| US7590826B2 (en) | 2006-11-06 | 2009-09-15 | Arm Limited | Speculative data value usage |
Non-Patent Citations (2)
| Title |
|---|
| R KUMAR ET AL.: "Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction", PROCEEDINGS OF THE 36TH INTERNATIONAL SYMPOSIUM OF MICROARCHITECTURE |
| V KUMAR ET AL.: "Towards Better Performance Per Watt in Virtual EnvirolLments on Asymmetric Single-ISA Multi-Core Systems", ACM SIGOPS OPERATING SYSTEMS REVIEW, vol. 43, no. 3, July 2009 (2009-07-01) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016529636A (en) * | 2013-09-27 | 2016-09-23 | インテル・コーポレーション | Techniques for configuring multiple memory resources across multiple devices |
| RU2652460C1 (en) * | 2017-06-23 | 2018-04-26 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" | Method of facilitating multiplication of two numbers in modular-index presentation format with floating point on universal multi-core processors |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2490825A (en) | 2012-11-14 |
| US20130311725A1 (en) | 2013-11-21 |
| US9286222B2 (en) | 2016-03-15 |
| RU2012141563A (en) | 2014-04-10 |
| GB2490825B (en) | 2016-06-08 |
| KR20130012120A (en) | 2013-02-01 |
| RU2550535C2 (en) | 2015-05-10 |
| GB201214397D0 (en) | 2012-09-26 |
| RU2015107993A (en) | 2015-06-27 |
| JP5702407B2 (en) | 2015-04-15 |
| US20110213993A1 (en) | 2011-09-01 |
| DE112011100743T5 (en) | 2013-06-06 |
| IL221269A0 (en) | 2012-10-31 |
| IL221269A (en) | 2017-02-28 |
| DE112011100743B4 (en) | 2014-07-10 |
| RU2711336C2 (en) | 2020-01-16 |
| CN102804103A (en) | 2012-11-28 |
| RU2015107993A3 (en) | 2018-09-27 |
| US8533505B2 (en) | 2013-09-10 |
| KR101740225B1 (en) | 2017-05-26 |
| BR112012021121A2 (en) | 2017-07-18 |
| CN102804103B (en) | 2015-08-12 |
| BR112012021121B1 (en) | 2020-12-01 |
| JP2013521556A (en) | 2013-06-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8533505B2 (en) | Data processing apparatus and method for transferring workload between source and destination processing circuitry | |
| US8418187B2 (en) | Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system | |
| US20110213935A1 (en) | Data processing apparatus and method for switching a workload between first and second processing circuitry | |
| Kalla et al. | IBM Power5 chip: A dual-core multithreaded processor | |
| JP5774707B2 (en) | Application scheduling on heterogeneous multiprocessor computing platforms | |
| TWI494850B (en) | Providing an asymmetric multicore processor system transparently to an operating system | |
| EP2642368B1 (en) | Running state power saving via reduced instructions per clock operation | |
| US8612730B2 (en) | Hardware assist thread for dynamic performance profiling | |
| JP2009505279A (en) | System and method for mutual exclusion activation of microprocessor resources to control maximum power | |
| Gutierrez et al. | Evaluating private vs. shared last-level caches for energy efficiency in asymmetric multi-cores | |
| Burgess et al. | e6500: Freescale's low-power, high-performance multithreaded embedded processor | |
| US12511127B2 (en) | Dynamic reconfiguration of a multi-core processor to a unified core | |
| Wolff | It is Too Hot in Here! a Performance, Energy and Heat Aware Scheduler for Asymmetric Multiprocessing Processors in Embedded Systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 201180012192.2 Country of ref document: CN |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11705239 Country of ref document: EP Kind code of ref document: A1 |
|
| DPE1 | Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101) | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 221269 Country of ref document: IL |
|
| ENP | Entry into the national phase |
Ref document number: 1214397 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20110217 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1214397.0 Country of ref document: GB |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 7547/CHENP/2012 Country of ref document: IN |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2012555486 Country of ref document: JP Ref document number: 1120111007434 Country of ref document: DE Ref document number: 112011100743 Country of ref document: DE |
|
| ENP | Entry into the national phase |
Ref document number: 20127024659 Country of ref document: KR Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2012141563 Country of ref document: RU |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 11705239 Country of ref document: EP Kind code of ref document: A1 |
|
| REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112012021121 Country of ref document: BR |
|
| ENP | Entry into the national phase |
Ref document number: 112012021121 Country of ref document: BR Kind code of ref document: A2 Effective date: 20120822 |