ILP Theory Flashcards
What is the goal of instruction level parallelism?
Is to maximize performance in terms of throughput. In other words, to increase the instructions per clock and decrease the clocks per instruction
What is the relationship between dependencies in the code, hazards and instruction level parallelism?
If two instructions are dependent on each other, they cannot be executed in parallel, they must be executed in order or partially overlapped.
Also, call dependencies might become hazards
Dependencies are a property of the code, while hazards are a property of the pipeline architecture
What are the three possible dependencies in a code?
Data, name, and control dependencies
What are the data dependencies?
A data dependencie occurs when an instruction depends on the data produced by the previous instruction
What are the control dependencies?
They are the ones related to branching. They impose the ordering of instructions.
What are the name dependencies?
The name dependencies occur when two instructions use the same register or memory location
What are the two types of name dependencies?
Anti-dependencie and output dependencies
What are the anti-dependencies?
The anti-dependencies occurs when a preceding instruction is reading a register or memory location later written by an older instruction. This generate a write after read Hazard where the preceding instruction reads the wrong value from the register or memory location
What are the output dependencies?
When to instructions right at the same register or memory location. It could generate a write after write hazard. The order must be preserved in order to make the value of the old instruction the one that is written later.
What is the cause of name dependencies?
The cause of name dependencies is register reuse
What is a possible solution for name dependencies
Register renaming. If the register used could be changed the conflict would not exist anymore
What are the two possibilities to perform register renaming?
Register renaming could be performed either statically by the compiler or dynamically by the hardware
What are the hazards a pipeline can face?
The reads after writes hazards, which corresponds to true data dependencies
The write after reads Hazard, which correspondence to anti-dependencies
And finally, the write after write Hazzard, which corresponds to output dependencies
What are the properties that need to be preserved in order to preserve program correctness?
Data flow, and exception behavior (changes in the ordering of instructions must not change how the exceptions are raised in the program)
What are the main characteristics of a multi cycle in order pipeline?
In order issue of instructions
Multiple functional unit is with different latencies
Delayed write back, in order to force in order to commit of instructions
One instruction in and one instruction out at every cycle