Patent Publication Number: US-7725693-B2

Title: Execution optimization using a processor resource management policy saved in an association with an instruction group

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
   The present application is related to, claims the earliest available effective filing date(s) from (e.g., claims earliest available priority dates for other than provisional patent applications; claims benefits under 35 USC §119(e) for provisional patent applications), and incorporates by reference in its entirety all subject matter of the following listed application(s) (the “Related Applications”) to the extent such subject matter is not inconsistent herewith; the present application also claims the earliest available effective filing date(s) from, and also incorporates by reference in its entirety all subject matter of any and all parent, grandparent, great-grandparent, etc, applications of the Related Application(s) to the extent such subject matter is not inconsistent herewith. The United States Patent Office (USPTO) has published a notice to the effect that the USPTO&#39;s computer programs require that patent applicants reference both a serial number and indicate whether an application is a continuation or continuation in part. Stephen G. Kunin,  Benefit of Prior - Filed Application , USPTO Electronic Official Gazette, Mar. 18, 2003 at http://www.uspto.gov/web/offices/com/sol/og/2003/week11/patbene.htm. The present applicant entity has provided below a specific reference to the application(s) from which priority is being claimed as recited by statute. Applicant entity understands that the statute is unambiguous in its specific reference language and does not require either a serial number or any characterization such as “continuation” or “continuation-in-part.” Notwithstanding the foregoing, applicant entity understands that the USPTO&#39;s computer programs have certain data entry requirements, and hence applicant entity is designating the present application as a continuation in part of its parent applications, but expressly points out that such designations are not to be construed in any way as any type of commentary and/or admission as to whether or not the present application contains any new matter in addition to the matter of its parent application(s). 
   RELATED APPLICATIONS 
   
       
       
         
           1. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States Patent application entitled MULTIPROCESSOR RESOURCE OPTIMIZATION, naming Bran Ferren; W. Daniel Hillis; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr, as inventors, U.S. Ser. No. 11/214,458, filed Aug. 29, 2005. 
           2. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States Patent application entitled PREDICTIVE PROCESSOR RESOURCE MANAGEMENT, naming Bran Ferren; W. Daniel Hillis; William Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr, as inventors, U.S. Ser. No. 11/214,459, filed Aug. 29, 2005. 
           3. For purposes of the USPTO extra-statutory requirements, the present application constitutes a continuation-in-part of United States Patent application entitled PROCESSOR RESOURCE MANAGEMENT, naming Bran Ferren; W. Daniel Hillis; William Mangione-Smith; Nathan P. Myhrvold; Clarence T. Tegreene; and Lowell L. Wood, Jr. as inventors, U.S. Ser. No. 11/214,449, filed Aug. 29, 2005. 
         
       
     
  

   BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1  illustrates a partial view of an exemplary device in which embodiments may be implemented; 
     FIG. 2  illustrates an exemplary operational flow in which embodiments may be implemented; 
     FIG. 3  illustrates alternative embodiments of the operation  210  of  FIG. 2 ; 
     FIG. 4  illustrates alternative embodiments of the operation  220  of  FIG. 2 ; 
     FIG. 5  illustrates alternative embodiments of the operation  230  of  FIG. 2 ; 
     FIG. 6  illustrates alternative embodiments of the operational flow of  FIG. 2 ; 
     FIG. 7  illustrates an exemplary operational flow in which embodiments may be implemented; 
     FIG. 8  illustrates an exemplary operational flow in which embodiments may be implemented; 
     FIG. 9  illustrates alternative embodiments of the operation of  FIG. 8 ; 
     FIG. 10  illustrates an exemplary embodiment of a device in which embodiments may be implemented; 
     FIG. 11  illustrates a partial view of an exemplary operational flow in which embodiments may be implemented; 
     FIG. 12  illustrates alternative embodiments of the operation of  FIG. 11 ; 
     FIG. 13  illustrates alternative embodiments of the operation of  FIG. 11 ; 
     FIG. 14  illustrates alternative embodiments of the operational flow of  FIG. 11 ; 
     FIG. 15  illustrates a partial view of an exemplary operational flow in which embodiments may be implemented; 
     FIG. 16  illustrates a partial view of an exemplary operational flow in which embodiments may be implemented; 
     FIG. 17  illustrates alternative embodiments of the operation of  FIG. 11 ; 
     FIG. 18  illustrates a partial view of an exemplary operational flow in which embodiments may be implemented; and 
     FIG. 19  illustrates alternative embodiments of the operation  920  of  FIG. 18 . 

   DETAILED DESCRIPTION 
   In the following detailed description of exemplary embodiments, reference is made to the accompanying drawings, which form a part hereof. In the several figures, like referenced numerals identify like elements. The detailed description and the drawings illustrate exemplary embodiments. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the claimed subject matter is defined by the appended claims. 
     FIG. 1  illustrates a partial view of an exemplary device  100  in which embodiments may be implemented. The device includes a processor  110  and a hardware resource  120  associated with the processor. The hardware resource may be any hardware resource associated and/or associatable with a processor. In an embodiment, the hardware resource may include one or more caches, illustrated as a cache 1 ( 121 ), a cache 2 ( 122 ), and through a cache N ( 123 ). Also, the hardware resource may include a branch predictor  124 . 
   In another embodiment, the hardware resource  120  may include any other resource associated with the processor, illustrated as other resource  126 . In a further embodiment, the hardware resource includes an off-chip resource, illustrated as an off-chip resource  128 . For example, the cache 1 ( 121 ) may be an on-chip L1 cache and the cache 2 ( 122 ) may be an on-chip L2 cache. By way of further example, the off-chip resource  128  may be an off-chip L2 cache. 
   The device also includes a resource manager  140 , and/or a processor control unit  150 . The processor control unit  150  may be an element of the processor  110 , or may be an element separate from the processor. In an embodiment, the processor, the processor control unit, and at least one of the hardware devices are formed in a single chip, illustrated as the processor chip  101 . In another embodiment, the processor is formed in a first chip and at least one of the hardware resources formed in a second chip. 
   The resource manager  140  includes an operability to compare an execution of an instruction group pursuant to a first resource management policy applied to the hardware resource and an execution of the instruction group pursuant to a second resource management policy applied to the hardware resource. The resource manager also includes an operability to select from the first resource management policy and the second resource management policy a resource management policy likely to provide a substantially optimum execution of the instruction group. The resource manager further includes an operability to associate the selected resource management policy with the instruction group. 
   In an embodiment, an “instruction group” may include a functional instruction, a branching instruction, a memory instruction, and/or other instruction that may be executed by a processor. In another embodiment, an instruction group includes a statement or a portion of a statement in a program. In a further embodiment, an instruction group includes at least two statements from a program. A program may include any type of a program, from several lines of instructions, to an application, and to an operating system. In an embodiment, an instruction group may include a decoded instruction, a translated instruction, and/or a micro-operation (a portion of a translated instruction). 
   In an embodiment, the hardware resource includes a hardware resource logically associated with the processor. In another embodiment, the hardware resource includes a hardware resource physically associated with the processor. In a further embodiment, the hardware resource includes a hardware resource managed by the processor. In an embodiment, the hardware resource managed by the processor includes at least one of a memory, a cache, a bus, a register-file port, and a functional unit. 
   In an embodiment, the resource manager operable to compare includes a resource manager operable to compare according to preselected criterion. The preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In another embodiment, the resource manager operable to select from the first resource management policy and the second resource management policy a resource management policy likely to provide a substantially optimum execution of the instruction group includes resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group according to a preselected criterion. In an embodiment, the preselected criterion includes a criterion responsive to an output of the compare an execution of an instruction group pursuant to a first resource management policy applied to the hardware resource and an execution of the instruction group pursuant to a second resource management policy applied to the hardware resource. In a further embodiment, the preselected criterion includes a criterion responsive to at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In an embodiment, the resource manager operable to select from the first resource management policy and the second resource management policy a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to compare the execution of the instruction group pursuant to the first management policy and the execution of the instruction group pursuant to the second management policy applied to the resource. 
   In another embodiment, the first resource management policy includes an optimistic management policy. In a further embodiment, the optimistic resource management policy includes an optimistic resource management policy that assumes that the instruction group will execute in a substantially optimal manner. In an embodiment, the optimistic resource management policy assumes that the instruction group will execute in a substantially optimal manner includes an optimistic resource management policy that assumes that less than a preselected level of at least one error will occur during execution of the instruction group. In a further embodiment, the at least one error includes an occurrence of at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
   In an embodiment, the second resource management policy includes a pessimistic resource management policy. In another embodiment, the pessimistic resource management policy includes a pessimistic resource management policy that assumes that the instruction group will execute in a substantially sub-optimal manner. In a further embodiment, the pessimistic resource management policy assumes that the instruction group will execute in a substantially sub-optimal manner includes a pessimistic resource management policy that assumes that greater than a preselected level of at least one error will occur during execution of the instruction group. In an embodiment, the at least one error includes at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
   In another embodiment, the resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group according to a preselected criterion. In a further embodiment, the preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In a further embodiment, the resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to select a management policy predicted as likely to provide a substantially optimum execution of the instruction group. In an embodiment, the resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to select a management policy predicted by a Bayesian method as likely provide a substantially optimum execution of the instruction group. In another embodiment, the resource manager operable to select a management policy predicted by a Bayesian method as likely provide a substantially optimum execution of the instruction group includes resource manager operable to recall historical data from a ghost page. In a further embodiment, the resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to select a management policy predicted by a heuristic as likely provide a substantially optimum execution of the instruction group. In an embodiment, the resource manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a resource manager operable to select a management policy predicted by a learning algorithm as likely provide a substantially optimum execution of the instruction group. In another embodiment, the associate the selected resource management policy with the instruction group includes associate a ghost page indicative of the selected resource management policy with the instruction group. 
   In an embodiment, a Bayesian method includes any methodology corresponding to or derived from Bayesian theories. In another embodiment, a Bayesian method includes but is not limited to statistics, principles, models, applications, analysis, decisions, inferences, probabilistic modeling, probabilistic reasoning, networks, and/or approaches based at least in part on the work of Thomas Bayes. 
   In operation, an embodiment provides an optimized configuration of the actual hardware resource  120  and the actual processor  110  when the processor is executing an instruction group. For example, the hardware resource may include an L2 cache. The instruction group is executed by the processor in two passes, a first pass includes application of the first resource management policy to the L2 cache, and a second pass includes application of the second resource management policy to the L2 cache. The execution results are then compared. For example, a comparison may include parameters of execution time and cache misses. One of the two resource management policies is then selected as likely to provide a better execution of the instruction group. The selected resource management policy is then associated with the instruction group in a manner allowing retrieval. The selected resource management policy may be saved in a manner allowing retrieval for a future application to the cache when the processor is scheduled to run the instruction group. For example, the selected resource management policy may be saved in a ghost page associated with at least a portion of the instruction group. 
   In another embodiment of an operation, the resource may include a dynamic branch predictor, such as the branch predictor  124 . As described above, the instruction group is executed by the processor in two passes, a first pass includes application of the first resource management policy to the branch predictor, and a second pass includes application of the second resource management policy to the branch predictor. The execution results are then compared. For example, a comparison may include branching operations correctly predicted. One of the two resource management policies for branch prediction is then selected as likely to provide a better execution of the instruction group. The selected resource management policy is then associated with the instruction group in a manner allowing retrieval. The selected resource management policy may be saved in a manner allowing retrieval for a future application to the branch predictor when the processor is scheduled to run the instruction group. 
     FIG. 2  illustrates an exemplary operational flow  200  in which embodiments may be implemented. In an embodiment, the operational flow may be executed in the device  100  of  FIG. 1 . An operation  210  applies a first management policy to a resource managed by a processor and executing an instruction block in the processor. An operation  220  applies a second management policy to the resource and executing the instruction block in the processor. An operation  230  selects a management policy likely to provide a substantially optimum execution of the instruction group from the first management policy and the second management policy. 
     FIG. 3  illustrates alternative embodiments of the operation  210  of  FIG. 2 . The operation  212  selects the first management policy from at least two candidate management policies. The operation  214  obtains a first result of the executing an instruction block in the processor. The operation  216  applies an optimistic management policy to the resource. The applying an optimistic management policy to the resource may include applying a resource management policy that assumes that less than a preselected level of at least one error will occur during an execution of the instruction group. 
     FIG. 4  illustrates alternative embodiments of the operation  220  of  FIG. 2 . The operation  222  selects the second management policy from at least two candidate management policies. The operation  224  obtains a second result of the executing an instruction block in the processor. The operation  226  applies a pessimistic management policy to the resource. The applying a pessimistic management policy to the resource may include applying a management policy that assumes that more than a preselected level of at least one error will occur during an execution of the instruction group. 
     FIG. 5  illustrates alternative embodiments of the operation  230  of  FIG. 2 . The operation  232  selects a management policy likely to provide a substantially optimum execution of the instruction group according to a preselected criterion. The operation  234  compares the execution of the instruction group pursuant to the first management policy and the execution of the instruction group pursuant to the second management policy applied to the resource. 
     FIG. 6  illustrates alternative embodiments of the operational flow  200  of  FIG. 2 . The operational flow  242  associates the selected management policy with the instruction group. The operational flow  244  associates a ghost page indicative of the selected management policy with the instruction group. 
   In an alternative embodiment, the exemplary operational flow  200  may include an iterative method where the operational flow  200  is repeated at least twice to test at least three resource management policies, and allow a selecting from the at least three resource management policies. 
   Returning to  FIG. 1 , an alternative embodiment of the exemplary device  100  includes the processor  110  having the hardware resource  120  associated with the processor. In the alternative embodiment, the processor control unit  150  includes a processor control unit operable to compare an execution of an instruction group pursuant to an optimistic resource management policy applied to the hardware resource and an execution of the instruction group pursuant to a pessimistic resource management policy applied to the hardware resource. The alternative embodiment of the processor control unit also includes a processor control unit operable to select from the optimistic resource management policy and the pessimistic resource management policy a resource management policy likely to provide a substantially optimum execution of the instruction group. The alternative embodiment of the processor control unit further includes a resource manager operable to associate the selected resource management policy with the instruction group. In an embodiment, the processor and the processor control unit are formed on a single chip. 
   In a further embodiment, the optimistic resource management policy assumes that the instruction group will execute in a substantially optimal manner. In another embodiment, the optimistic resource management policy assumes that the instruction group will execute in a substantially optimal manner includes an optimistic resource management policy that assumes that less than a preselected level of at least one error will occur during execution of the instruction group. In an embodiment, the at least one error includes an occurrence of at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
   In an embodiment, the pessimistic resource management policy assumes that the instruction group will execute in a substantially sub-optimal manner. In another embodiment, the pessimistic resource management policy assumes that the instruction group will execute in a substantially sub-optimal manner includes a pessimistic resource management policy that assumes that greater than a preselected level of at least one error will occur during execution of the instruction group. In a further embodiment, the at least one error includes at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
     FIG. 7  illustrates an exemplary operational flow  300  in which embodiments may be implemented. The operation  310  applies an optimistic cache management policy to a cache managed by a processor, executing an instruction block in the processor, and acquiring a context of the execution while the optimistic cache management policy is applied. The operation  320  applies a pessimistic cache management policy to the cache, executing the instruction block in the processor, and acquiring a context of the execution while the pessimistic cache management policy is applied. The operation  330  selects a cache management policy likely to provide a substantially optimum execution of the instruction group from the optimistic cache management policy and the pessimistic cache management policy. The operation  340  associates a ghost page indicative of the selected cache management policy and of the context of the execution during application of the selected cache management policy with the instruction group. 
   Further returning to  FIG. 1 , another alternative embodiment of the exemplary device  100  includes the processor  110  having the hardware resource  120  associated with the processor. In the alternative embodiment, the processor control unit  150  includes a processor control unit operable to fetch an instruction to be executed in the processor. In an embodiment, the operation to fetch the instruction to be executed in the processor may include facilitating the operation to fetch the instruction to be executed in the processor. In another embodiment, the operation to fetch the instruction to be executed in the processor may include issuing a signal timing the operation to fetch the instruction to be executed in the processor. The processor control unit is also operable to receive a previously selected resource management policy associated with the instruction, the resource management policy having been selected as likely to provide a substantially optimum execution of an instruction group that includes the instruction, and having been selected from a optimistic resource management policy and a pessimistic resource management policy. The processor control unit is further operable to apply the previously selected resource management policy to the resource. In another alternative embodiment, the processor control unit is also operable to enable the processor to execute the instruction. In a further alternative embodiment, the processor control unit is operable to enable the processor to execute the instruction, and apply another resource management policy to the hardware resource. 
   In operation, an embodiment obtains a previously selected optimized configuration of the hardware resource  120  for the processor  110  in conjunction with executing the instruction group. When the processor is preparing to execute an instruction group, the processor control unit receives a previously selected resource management policy associated with the instruction. In an embodiment, the previously selected resource management policy may include a previously selected resource management policy provided by the method  200  of  FIG. 2  and/or the method  300  of  FIG. 7 . For example, the hardware resource may include the branch predictor  124 , and the previously selected resource management policy may include a previously selected resource management policy selected as likely to provide a substantially optimum execution of the instruction. The processor control unit applies the previously selected resource management policy to the hardware resource, such as the branch predictor. The instruction is executed by the processor with the hardware resource, such as the branch predictor, managed by the previously selected resource management policy. This is expected to provide an optimized execution of the instruction over an execution of the instruction with a resource management policy applied to the hardware resource that is not likely to provide a substantially optimum execution of the instruction group. 
     FIG. 8  illustrates an exemplary operational flow  400  in which embodiments may be implemented. An operation  410  fetches an instruction to be executed in a central processor unit having an associated resource. An operation  420  receives a previously selected resource management policy associated with the instruction. The resource management policy having been selected as likely to provide a substantially optimum execution of an instruction group that includes the instruction, and having been selected from a optimistic resource management policy and a pessimistic resource management policy. An operation  430  applies the previously selected resource management policy to the resource. An operation  440  executes the instruction in the central processor unit. In a further alternative embodiment, an operation (not shown) executes the instruction in the central processor unit and then applies another resource management policy to the hardware resource. 
     FIG. 9  illustrates alternative embodiments of the operation  410  of  FIG. 8 . An operation  412  fetches an instruction to be executed in a central processor unit having an associated cache resource. An operation  416  fetches an instruction to be executed in a central processor unit having an associated branch predictor resource. In an alternative embodiment of the operation  410 , at an operation  414 , the associated cache resource includes one of an on-chip cache or an off-chip cache. 
     FIG. 10  illustrates an exemplary embodiment of a device  500  in which embodiments may be implemented. The device includes a first processor  510 , a second processor  514 , and a N th  Processor  518 . The device also includes at least one hardware resource  220  associated with the processor. The at least one hardware resource may be any hardware resource associated and/or associatable with a processor. In an embodiment, the at least one hardware resource includes a first cache  521  associated with the first processor and a second cache  522  associated with the second processor. In another embodiment, the at least one hardware resource may include an N th  cache  524 , a first branch predictor  526 , an second branch predictor  527 , other resource(s)  528 , and an off-processor-chip resource  529 . The device also includes a cache manager  540  operable to manage the caches  521 ,  522 , and  524 , and a hardware resource manager operable to manage other hardware, such as the branch predictor, the other resource(s), and the off-processor-chip resource(s). 
   The device  500  also includes a cache manager  540  implemented in a hardware-logic. The cache manager is operable to compare an execution of an instruction group by the first processor  510  while a first cache management policy is applied to the first cache  521  and an execution of the instruction group by the second processor  514  while a second cache management policy is applied to the second cache  522 . The cache manager is also operable to select a cache management policy likely to provide a substantially optimum execution of the instruction group from the first cache management policy and the second cache management policy. The cache manager is further operable to associate the selected cache management policy with the instruction group. 
   In an embodiment, the first processor  510  and the second processor  514  are implemented on a single chip. In another embodiment the first cache  521  and the second cache  522  are a logical partition of a physical memory  523 . In a further embodiment, the first cache and second cache are accessible by both the first and second processor. In an embodiment, the first cache includes an L2 cache and the second cache includes an L2 cache. In another embodiment, the first processor and the cache manager are formed on a single chip  501 . 
   In an embodiment, the cache manager operable to associate the selected cache management policy with the instruction group includes a cache manager operable to associate a ghost page indicative of the selected management policy with the instruction group. In a further embodiment, the cache manager operable to compare includes a cache manager operable to compare according to preselected criterion. In an embodiment, the preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In an embodiment, the first cache management policy assumes that the instruction group will execute in a substantially optimal manner. In another embodiment, the first cache management policy that assumes that the instruction group will execute in a substantially optimal manner includes a first cache management policy that assumes that less than a preselected level of at least one error will occur during execution of the instruction group. In a further embodiment, the at least one error includes an occurrence of at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
   In an embodiment, the second cache management policy assumes that the instruction group will execute in a substantially sub-optimal manner. In another embodiment, the second cache management policy assumes that the instruction group will execute in a substantially sub-optimal manner includes a second cache management policy that assumes that greater than a preselected level of at least one error will occur during execution of the instruction group. In a further embodiment, the at least one error includes at least one of a hardware error, a fetch error, a memory error, a cache miss, a software error, an arithmetic overflow, a stale datum, a branch prediction error, an attempt to access forbidden memory, and/or an inability of an operating system to grant a request. 
   In an embodiment, the cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group according to a preselected criterion. In another embodiment, the preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In an embodiment, the cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a cache manager operable to select a management policy predicted as likely to provide a substantially optimum execution of the instruction group. In another embodiment, the cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a cache manager operable to select a management policy predicted by a Bayesian method as likely provide a substantially optimum execution of the instruction group. In a further embodiment, the cache manager operable to select a management policy predicted by a Bayesian method as likely provide a substantially optimum execution of the instruction group includes cache manager operable to recall historical data from a ghost page. 
   In an embodiment, the cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a cache manager operable to select a management policy predicted by a heuristic as likely provide a substantially optimum execution of the instruction group. In another embodiment, the cache manager operable to select a management policy likely to provide a substantially optimum execution of the instruction group includes a cache manager operable to select a management policy predicted by a learning algorithm as likely provide a substantially optimum execution of the instruction group. 
   In operation, an embodiment of the device  500  provides an optimization of a processor and a cache when executing an instruction group. For example, when the first cache  521  and the second cache  522  are logical partitions of a physical memory, different cache management policies may be tried for the instruction group. The execution results of the instruction group are compared, and a cache management policy selected that provides a substantially optimum execution selected in response to the comparison. For example, the first and second management policies may provide different cache sizes. The instruction group may be executed on both processors while the different cache sizes are applied to the first cache and the second cache. The executions are compared, and a cache management policy selected that works better, i.e., provides a substantially optimum execution of the instruction group. In another example, the first and second management policies may provide different flush rates. A selected cache management policy is associated with the instructions group, for example by using a ghost page, for a use in a future execution of the instruction group. 
   Continuing with  FIG. 10 ,  FIG. 10  illustrates another exemplary embodiment of a device  500  in which an embodiment may be implemented. The device includes a first processor  510  having an associated first hardware resource and a second processor  514  having an associated second hardware resource. In an embodiment, the associated first hardware resource includes a first branch predictor  526  and the associated second hardware resource includes a second branch predictor  527 . In another embodiment, the first and second hardware resources may include a memory, a bus, a register-file port, and/or a function unit, which are collectively illustrated as other resource(s)  528  and/or off-chip resource(s)  529 . 
   The device  500  also includes hardware resource manager  542  implemented in a hardware-logic. The resource manager is operable to compare an execution of an instruction group by the first processor  510  while a first resource management policy is applied to the first hardware resource and an execution of the instruction group by the second processor  527  while a second resource management policy is applied to the second hardware resource. Continuing with an above example, the first hardware resource may include the first branch predictor  526  and the second hardware resource includes the second branch predictor  527 . In an alternative embodiment, the first hardware resource includes a first off-processor-chip cache and the second hardware resource includes a second off-processor-chip cache  529 . 
   The resource manager is also operable to select from the first resource management policy and the second resource management policy a resource management policy likely to provide a substantially optimum execution of the instruction group. The resource manager is further operable to associate the selected resource management policy with the instruction group. In an embodiment, the resource manager is associated with the first processor. In another embodiment, the resource manager is associated with the first processor and the second processor. 
     FIG. 11  illustrates a partial view of an exemplary operational flow  550  in which embodiments may be implemented. In an embodiment, the operational flow may be executed in the device  500  of  FIG. 10 . An operation  560  applies a first resource management strategy to a first resource associated with a first processor and executing an instruction block in the first processor. An operation  570  applies a second resource management strategy to a second resource of a similar type as the first resource and executing the instruction block in the second processor. An operation  580  selects a resource management strategy likely to provide a substantially optimum execution of the instruction group from the first resource management strategy and the second resource management strategy. 
     FIG. 12  illustrates alternative embodiments of the operation  560  of  FIG. 11 . An operation  562  applies a first resource management strategy to a first resource associated with a first processor includes applying a first resource management strategy to a cache associated with a first processor. An operation  564  applies a first resource management strategy to a first resource associated with a first processor includes applying a first resource management strategy to a register associated with a first processor. An operation  566  applies a first resource management strategy to a first resource associated with a first processor includes applying a first resource management strategy to a functional unit associated with a first processor. An operation  568  applies a first resource management strategy to a branch predictor associated with a first processor. 
     FIG. 13  illustrates alternative embodiments of the operation  580  of  FIG. 11 . An operation  582  selects a resource management strategy likely to provide a substantially optimum execution of the instruction group according to preselected criterion. In an alternative embodiment, the operation  582  may include an operation  584 . At the operation  584 , the preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. An operation  586  applies a first resource management strategy to a first resource associated with a first processor includes applying an optimistic resource management strategy to a first resource associated with a first processor. In an alternative embodiment, the operation.  586  may include an operation  588 . At the operation  588 , the optimistic resource management strategy assumes that the instruction group will execute in a substantially optimal manner. An operation  590  applies a pessimistic resource management strategy to a second resource of a similar type as the first resource. In an alternative embodiment, the operation  590  may include an operation  592 . At the operation  592 , the pessimistic resource management strategy assumes that the instruction group will execute in a substantially sub-optimal manner. 
     FIG. 14  illustrates alternative embodiments  595  of the operational flow  550  of  FIG. 11 . An operation  596  associates the selected resource management strategy with the instruction group. An operation  598  associates a ghost page indicative of the selected resource management strategy with the instruction group. 
     FIG. 15  illustrates a partial view of an exemplary operational flow  600  in which embodiments may be implemented. An operation  610  applies an optimistic cache management strategy to a first cache associated with a first processor, executing an instruction block in the first processor, and acquiring a context of the first processor execution. An operation  620  applies a pessimistic cache management strategy to a second cache associated with a second processor, executing the instruction block in the second processor, and acquiring a context of the second processor execution. An operation  630  selects from the optimistic cache management strategy and the pessimistic cache management strategy a cache management strategy likely to provide a substantially optimum execution of the instruction group. An operation  640  associates the instruction group with a ghost page indicative of the selected cache management strategy and of the context of the execution during the application of the selected cache management strategy. 
   Returning to  FIG. 10 ,  FIG. 10  also illustrates a further exemplary embodiment of the device  500 . The device includes a processor, such as the first processor  510 , having an associated first hardware resource, such as the first branch predictor  526 , and a present context. The device also includes a control unit associated with the first processor core, such as for example the cache manager  540  or the hardware resource manager  542 . The control unit is operable to fetch an instruction for execution by the processor. The control unit is also operable to receive a previously selected resource management policy associated with the instruction, the resource management policy selected as likely to provide a substantially optimum execution of an instruction group that includes the instruction, and further selected from a optimistic resource management policy and a pessimistic resource management policy. The control unit is further operable to apply the previously selected resource management policy to the resource, and cause the processor to execute the instruction. 
   In an alternative embodiment, the control unit operable to apply the previously selected resource management policy to the resource includes a control unit operable to apply the previously selected resource management policy only if a predetermined similarity exists between the present context of the processor and the context existing when the selected resource management policy was selected. Otherwise, the control unit does not apply the previously selected resource management policy to the resource. 
     FIG. 16  illustrates a partial view of an exemplary operational flow  700  in which embodiments may be implemented. In an embodiment, the operational flow may be executed in the device  500  of  FIG. 10 . In another embodiment, an operation  710  fetches an instruction to be executed by a processor core of a chip having at least two processor cores that each have access to a resource. An operation  720  receives a previously selected resource management policy associated with the instruction. The resource management policy having been selected as likely to provide a substantially optimum execution of an instruction group that includes the instruction, and having further been selected from a optimistic resource management policy and a pessimistic resource management policy. An operation  730  applies the previously selected resource management policy to the resource. An operation  740  executes the instruction by the processor core. 
     FIG. 17  illustrates alternative embodiments of the operation  710  of  FIG. 11 . An operation  712  fetches an instruction to be executed by a processor core of a chip having at least two processor cores that each have an access to a cache resource. In another embodiment, the operation  712  includes an operation  714 , where cache resource includes one of an on-chip cache or an off-chip cache. An operation  716  fetches an instruction to be executed by a processor core of a chip having at least two processor cores that each have access to a branch predictor. In another embodiment, the operation  716  includes an operation  718 , where the branch predictor includes static branch predictor or a dynamic branch predictor. 
   Returning to  FIG. 1 , an alternative embodiment of the exemplary device  100  includes the processor  110  and the processor-associated hardware resource  120 . The processor is operable to execute an instruction group. The resource manager  140  is operable to implement a resource management policy for the hardware resource with respect to an execution of the instruction group, the resource management policy responsive to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource. 
   In an embodiment, the processor and the associated hardware resource are formed on a single chip. In another embodiment, the processor and resource manager are formed on a single chip. In a further embodiment, the hardware resource includes a cache, such as the cache 1 ( 121 ) or an off-chip cache illustrated as the off-chip resource  128 . In an embodiment, the hardware resource includes a logical partition of a cache, such as the first cache  521  of the physical memory device  523  of  FIG. 10 . In another embodiment, the hardware resource includes the branch predictor  124 , which may be a dynamic branch predictor. In a further embodiment, the hardware resource includes a hardware resource logically associated with the processor. In an embodiment, the hardware resource includes a hardware resource physically associated with the processor. In another embodiment, the hardware resource associated with the processor includes a hardware resource controlled by the processor. 
   In an embodiment, the resource management policy responsive to a prediction of a future performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy responsive to a prediction of a future performance of the hardware resource based at least in part on a historical performance of the hardware resource during an execution of the instruction group. By way of illustrative example, in an embodiment, a historical performance of the hardware resource may include a branch being taken an average 90% of the time over 1000 executions of the instruction group. The resource management policy may then include a prediction that the branch is taken. In another embodiment, the resource management policy responsive to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy responsive to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource and an indicia of confidence. Continuing with the above illustrative example, an indicia of confidence may include a high indicia of confidence because the branch has been taken 99% of the time in the last 10 executions of the instruction group. The resource management policy may then include a prediction that the branch is taken unless two subsequent instances of branch prediction error occur, resulting in a low indicia of confidence. Alternatively, an indicia of confidence may include a low indicia of confidence because the branch has been taken only 15% of the time in the last 10 executions of the instruction group. The resource management policy may then include a prediction that the branch is never taken. In another embodiment, the resource management policy responsive to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy responsive to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource and a saved indicia of confidence in the prediction of a performance of the hardware resource. 
   In a further embodiment, the resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy formulated in response to a prediction of a performance of the hardware resource as likely to provide a substantially optimum execution of the instruction group. For example, the hardware resource may include a cache and the resource management policy includes a cache flush rate. In an embodiment, the resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy formulated in response to a prediction of a performance of the hardware resource as likely to provide a substantially optimum execution of the instruction group as measured by a preselected criterion. In a further embodiment, the preselected criterion includes at least one of a successful completion of the instruction group, an unsuccessful completion of the instruction group, an uncertain completion of the instruction group, an exception, a time to execute the instruction group, a successful hit, an unsuccessful hit, a hit ratio, correctly predicting a branch taken, incorrectly predicting a branch taken, correctly predicting a branch not taken, and/or incorrectly predicting a branch not taken. 
   In an embodiment, the resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a Bayesian method. In another embodiment, the resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a heuristic algorithm. In a further embodiment, the resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a historical performance of the hardware resource includes a resource management policy formulated in response to a prediction of a performance of the hardware resource based at least in part on a learning algorithm. In an embodiment, the resource manager includes a resource manager operable to recall historical data from a ghost page. 
   In another embodiment, the device  100  further includes a storage device operable to save the historical performance of the hardware resource. In a further embodiment, the storage device operable to save the historical performance of the hardware resource includes a storage device operable to save the historical performance of the hardware resource and a measure of confidence in a prediction based on the historical performance. 
     FIG. 18  illustrates a partial view of an exemplary operational flow  900  in which embodiments may be implemented. In an embodiment, the operational flow may be executed in the device  900  of  FIGS. 1  and/or  10 . In another embodiments an operation  910  receives a historical performance indicia of a hardware resource associated with a processor operable to execute an instruction group. An operation  920  predicts a future performance of the hardware resource based at least in part on the historical performance indicia of the hardware resource. An operation  930  establishes a resource management policy responsive to the predicting a future performance of the hardware resource. An operation  940  implements the resource management policy in the hardware resource for an execution of the instruction group by the processor. 
     FIG. 19  illustrates alternative embodiments of the operation  920  of  FIG. 18 . An operation  922  predicts a future performance of the hardware resource at least in part based on the historical performance indicia of the hardware resource corresponding to an execution of the instruction group. An operation  924  predicts a future performance of the hardware resource based at least in part on the historical performance of the hardware resource and a confidence indicia. 
   Other embodiments are directed toward utilizing and/or optimizing data handling, which may be by a data class. In some instances, a data class includes certain data items (datum, byte, bit, a block of things that are associated together) that are used once and never again. In other instances, a data class includes certain data items are used constantly but never written and/or infrequently written. In further data classes, data items are constantly read and written to, or other data items are often being written but never read. A data manager (which may/may not be associated with and/or part of a resource manager) predicts how certain data classes will likely be used in the future and/or saves the data items in a manner and/or a location that substantially optimizes utilization of the data items by an instruction group and/or storage of the data items by the computing device. Any suitable type of predictive algorithm providing meaningful results may be used, including a predictive algorithm based on a Bayesian method, and/or a learning algorithm. The prediction may be written to a ghost page associated with a piece of data. A prediction may be straight forward if it is known that the data piece will never be written or read. Each data item will expose what its peculiar flavor is. This may be implemented down to the size of a single cache line, or even below the cache line. 
   An embodiment provides storage mobility for data items that are associated together in a substantial disequilibrium based upon a shared fate, a shared nature, an entanglement to a page and/or line of similarly handled data. The data item may include one or more extra bits (tag) on end of a data item that may indicate its size, nature (written but never read, read but never written, read once in the life of the program, used by at least two threads). In a further embodiment, an indicator may say which code relates with to the data item. This may be used for doing storage assignment. For example, if the data item includes a semaphore that is used across multiple threads, that should be known and the data item managed accordingly. Most data is associated with a particular body of code and assigned to a storage unit together. By watching that, these assignments can be done together between the I-cache and the D-cache. 
   The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flow diagrams, operation diagrams, flowcharts, illustrations, and/or examples. Insofar as such block diagrams, operation diagrams, flowcharts, illustrations, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, operation diagrams, flowcharts, illustrations, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. 
   In addition, those skilled in the art will appreciate that the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of a signal bearing media include, but are not limited to, the following: recordable type media such as floppy disks, hard disk drives, CD ROMs, digital tape, and computer memory; and transmission type media such as digital and analog communication links using TDM or IP based communication links (e.g., packet links). 
   It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to inventions containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). 
   The herein described aspects depict different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality. Any two components capable of being so associated can also be viewed as being “operably couplable” to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components. 
   While particular aspects of the present subject matter described herein have been shown and described, it will be apparent to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from this subject matter described herein and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this subject matter described herein. Furthermore, it is to be understood that the invention is defined by the appended claims.