Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Efficient Microarchitecture Modeling and Path Analysis for Real-Time Software Yau-Tsun Steven Li Sharad Malik Andrew Wolfe 1 Introduction Paper examines the problem of determining the bound on the worst case execution time (WCET) of a given program on a given processor. Two important issues in solving this problem: Program path analysis Microarchitecture modelling Method which address both issues is proposed 2 Two issues involved in solving this problem. Program path analysis. This determines what sequence of instructions will be executed in the worst case scenario. Infeasible program paths removed from the solution search space done by a data flow analysis of the program analysis should provide a mechanism for program path annotations. Microarchitecture modeling Models the hardware system and computes the WCET of a given sequence of instructions becoming difficult to model most modern processors have pipelined instruction execution units and cached memory systems. 3 Proposed Solution Address both issues determine a tight bound on a program’s worst case execution time. Explicit path enumeration not necessity to obtain tight estimated WCET Method determine worst case execution count of instruction and from these counts computes the estimated WCET includes a direct-mapped instruction cache analysis uses an integer linear programming formulation to solve the problem. allows the user to provide program path annotations so that a tighter bound may be obtained. 4 Program path analysis problem handling Pessimistic approach: Used simple microarchitecture model that assumes the execution time of an instruction to be a constant, i.e., every instruction fetch is assumed to result in a cache miss. method uses the counting approach to compute the estimated WCET. method converts the problem of solving the estimated WCET into a set of integer linear programming (ILP) problems 5 ILP Formulation Assumption: Each instruction takes a constant time to execute Instructions within a basic block are always executed together, their execution counts are always the same. let xi be the execution count of a basic block Bi, and Ci be the execution time of the basic block, given that there are N basic blocks in the program, possible values of xi are constrained by the program structure and the possible values of the program variables. If these constraints represented as linear inequalities, Î the problem of finding the estimated WCET of a program is reduced to an integer linear programming (ILP) problem 6 Linear Constraints Divided into two parts: Program structural constraints, Derived automatically from the program’s control flow graph (CFG) program functionality constraints, -provided by the user to specify loop bounds and other path information -or extracted from the program semantics. total time required to solve the estimated WCET depends on the number of functionality constraint sets and the time to solve each constraint set. the complexity of solving each ILP problem, an NP-hard problem. 7 Example of Construction of these constraints A conditional statement is nested inside a while loop /* k>=0 */ S=k; While (k < 10) {if (ok) J++; Else { J =0; ok=true;} K++; } r=j; di = a count of the the number of times that the program control passes through that edge. Each node in the CFG represents a basic block Bi. basic block execution count, xi, is associated with each node. 8 Structural constraints Structural constraints can be derived from the CFG Fact: for each node Bi, its execution count is equal to the number of times that the control enters the node (inflow), and is also equal to the number of times that the control exits the node (outflow). structural constraints of this example Code fragment executed once, so d1=1 structural constraints do not provide any loop bound information 9 Functional constraints Loop bound information can be provided by the user as a functionality constraint. Example: since k is positive before it enters the loop, the loop body will be executed between 0 and 10 times each time the loop is entered. The constraints to specify this information are: The functionality constraints can also be used to specify other path information. Example: the else statement (B5) can be executed at most once inside the loop. This information can be specified as: 10 To solve the estimated WCET, each set of the functionality constraint sets is combined (the conjunction taken) with the set of structural constraints. The combined set is passed to the ILP solver with cost function to be maximized. 11 Microarchitecture Modeling Previously, the modeling was simple because the execution time of an instruction was largely independent of others goal is to model the CPU pipeline and the cache memory systems and find out the execution times (Ci) of the basic Blocks Method limited to model a direct-mapped instruction cache. can be extended to handle set associative instruction cache memory. 12 Direct-mapped Instruction Cache Analysis To incorporate cache memory analysis in ILP model need to modify the cost function add a list of linear constraints, denoted as cache constraints, representing the cache memory behavior Modified Cost Function With cache memory execution time of an instruction will be different depending on whether it results in a cache hit or cache miss. need to subdivide the original instruction counts into counts of cache hits and misses. If cache hit and miss count and hit and miss execution time of instruction determined then tighter bound on execution time of program is established 13 New type of atomic structure line-block ( l-block) for analysis Adjacent instructions can be grouped together l-block is defined as a contiguous sequence of instructions within the same basic block that are mapped to the same line in the instruction cache. a basic block Bi is partitioned into ni l-blocks. We denote these l-blocks as Bi.1, Bi.2, . . . , Bi.ni . All instructions within an l-block will always have the same cache hit/miss counts, and the same total execution counts The cache hit and the cache miss counts of l-block Bi. j are denoted as Xhit i. j and xmiss i.j the cache behavior can now be specified in terms of the new variables xhit i. j and xmiss i. j New total execution time (Cost Function) 14 Example showing how the l-blocks are constructed. Each rectangle in the cache table represents a l-block. CFG with 3 basic blocks and instruction has 4 cache line B1.1 B1.2 B1.3 B2.1 B2.2 B3.1 B3.2 •any two l-blocks that map to the same cache line, they conflict with each other if the execution of one l-block will displace the cache content of the other. • Otherwise, they are called non-conflicting l-blocks e.g. B1.3 and B2.1 15 Cache Constraints used to constrain the hit/miss counts of the l-blocks. simple case : For each line only one l-block B mapping. k .l First execution of this l-block may cause a cache miss and all subsequent executions will result in cache hits. case : Two or more non-conflicting l-blocks map to the same cache line( B1.3 and B2.1 The execution of any of them will load all the l-blocks into the cache line. sum of their cache miss counts is at most one. Case: a cache line contains two or more conflicting l-blocks, the hit/miss counts of all the l-blocks mapped to this line will be affected by the sequence in which these l-blocks are executed. 16 Cache Conflict Graph (Network flow graph) cache conflict graph (CCG) is constructed for every cache line containing two or more conflicting l-blocks. Example :Cache line contains 2 conflicting graph start node ‘s’, an end node ‘e’, and a node Bk.l for every l-block Bk.l mapped to the same cache line. if there exists a path in the CFG from basic block Bk to basic block Bm without passing through the basic blocks of any other l-blocks of the same cache line Program begins at S node. i)After executing other L-block from other cache line eventually reaches to one of conflicting graph ii) After executing Bk.l may pass other l-block and reaches to Bm.n or directly passes to Bm.n p(i. j,u.v) to count the number of times that the control passes through that edge 17 continued At each node Bi. j , the sum of control flow going into the node must be equal to the sum of control flow leaving the node, and it must also be equal to the execution count of l-block Bi. j . two constraints are constructed at each node Bi. j: This set of constraints is linked to structural and functionality constraints via the x-variables. •Program executed once at start node variable p(i. j,i. j) represents the number of times that the control flows into lblock Bi. j after executing l-block Bi. j 18 If both edges (Bi.j, e) and (s, Bi.j) exists then the program variable p (s,i. j) may also be counted as a cache hit. if any of edges (s,Bi. j) and (Bi. j ,e) does not exist, then 19 Bounds on p-variables some path sequencing information can be expressed in terms of p-variables as extra functionality constraints Without the correct bounds, the solver may return an infeasible l-block count and an overly pessimistic estimated WCET. example showing two conflicting l-blocks (B4.1 and B7.1) from two different 20 loops. The italicized numbers shown on the left of the variables are the pessimistic worst case solution returned from ILP solver. For any variable p(i. j,u.v), its bounds are: A loop preheader is the basic block just before entering the loop. For instance, in the example shown in Fig. 4, basic block B1 is the loop preheader of the outer loop and basic block B5 is the loop preheader of the inner loop. a constraint at loop preheader B5 is needed 21 Interprocedural call function may be called many times from different locations of the program. Every function call is treated as if it is inlined. a function call is represented by an f - edge pointing to an instance of the callee function’s CFG. edge has a variable ‘fk ‘ which represents the number of times that the particular instance of the callee function is called 22 Function inc is called twice in the main function last equation above links the total execution counts of basic block B3 with its counts from two instances of the function 23 CCG CCG is constructed as before by treating each instance of l-block Bi. j . fk as different from other instances of the same l-block. In the example, if l-block B1.1 conflicts with l-block B3.1, then since l-block B3.1 has two instances ( B 3 . 1 . f 1 . and B 3 . 1 . f 2 . ), there will be 5 nodes in the CCG 24 Cache constraints cache constraints and the bounds on p variables are constructed as before, the hit constraints are modified slightly. Edge going from B i . j . f k . to B i . j . f 1 . counted as cache hit of block Bi.j The complete cache constraints derived from the example’s CCG are 25 CPU Pipeline The CPU pipeline is considered to be relatively easy to model because it is only effectedhitby adjacent instructions. miss As c i . j and ci . j must be constants Assumption: the time required to execute a sequence of instructions in the CPU pipeline is always a constant throughout the execution of the program. ci . j hit hit cost of a l-block Bi. j is determined by adding up the effective execution times of the instructions in the l-block the effective execution times of some instructions, especially the the floating point instructions, are data dependent, a conservative approach is taken by assuming the worst case effective execution time Additional time is also added to the last l-block of each basic block so as to ensure that all the buffered load/store instructions are completed when the control reaches the end of the basic block. ci. j miss miss cost of the l-block is equal to the time needed to load the instructions of the l-block into the cache memory and to execute them in the CPU. 26 Implementation cache analysis method has been implemented in a tool called cinderella4, which estimates the WCET of programs running The tool reads the subject program’s executable code and constructs the CFGs and the CCG outputs the annotation files in which the ‘x ‘and ‘f ‘ are labeled along with the program’s source code user is then asked to provide loop bounds estimated WCET can thus be computed user can provide additional path information, if available, to tighten this bound. 27 Experiment 28 Conclusion tight bound on a program’s WCET is estimated. small amount of pessimism due to (i) insufficient path information from the user so that some infeasible program paths are considered,=>can be reduced by providing more path information (i) inaccuracy in microarchitecture modeling affects the accuracy of the values of Chiti. j and Cmissi. j =>reduced by a more sophisticated hardware model 29