| OCR Text |
Show 14 Timing probes are additional HLL statements (also known as software instrumentation [19]) that are inserted into the application program to increment the simulated clock by appropriate amounts. The number of "software probes" needed to instrument a HLL program can be optimized by simple control flow analysis of the program structure [32]. For example, a single probe is sufficient for instrumenting a single entrance, single exit, sequential block of HLL statements.* The syntactic analysis required for the insertion of software instrumentation is identical to the syntactic analysis of the HLL compiler. This allows the strategy to be implemented through relatively simple modifications to existing compilers [30]. The time increment for each probe is derived from timing estimates of the primitive operations of the HLL (i.e ., so many microseconds for an add, so many for each call, so many for a simple conditional, etc.). This timing estimation does not account for timing differences due to particular combinations of instructions. For instance, a processor without a pipeline and a processor with a pipeline might have identical execution times for isolated HLL primitives. The aggregate execution time for a sequence of primitives on the unpipelined processor could be accurately estimated by simply summing the timings of the primitives. However, the execution time of the sequence of HLL primitives on the pipelined processor could be significantly shorter (provided that the pipeline is kept busy) or longer (for pathological combinations of data dependencies and pipeline "turbulence"). The effects on performance due to the sequencing of primitives and dynamic behavior of the processor (e.g., cache behavior or pipeline turbulence) cannot be included into the timing model without making explicit assumptions about the machine code that is being generated by the HLL compiler. If such assumptions are made, then it is the machine code and not the HLL code that k "Single entrance, single exit. sequential blocks" are more commonly known as " basic blocks." [16] |