Term
What are the components of a computer at the Device Physical Level? |
|
Definition
Transistors, Atoms. What is used to make the gates |
|
|
Term
What is included at the CPU's Gate Level? |
|
Definition
Flip-flops, AND, OR, etc. gates. |
|
|
Term
What components are involved in the Microarchitecture - Microprogramming? |
|
Definition
Physical organization - registers, ALU, Bus, control unit. Determined at processor design time. |
|
|
Term
What's included on the Low-Level Language level? |
|
Definition
Architecture dependent and will only execute on one particular class of computer. ARM, Intel i7, etc. |
|
|
Term
What is the High-Level Language Level of processor control? |
|
Definition
Computer appears to be machine independent. All computers executing the same language are identical. Even if the program as to be compiled specifically for that target machine. |
|
|
Term
What is the application level of processor control? |
|
Definition
The computer appears to be a device that performs a function. GPS, Car stereo, Gaming system, smart phone, etc. |
|
|
Term
What is the fetch process? |
|
Definition
[MAR] <-- [PC]
Get ready to fetch the next instruction from memory
[PC] <-- [PC] + 4
Point to the next instruction.
[MBR] <-- [[MAR]]
Read the instruction from memory and store results
[IR] <-- [MBR]
Transfer the instruction to the instruction register and start decode process. |
|
|
Term
|
Definition
Multiple instructions are executing at the same time on the same CPU or core |
|
|
Term
What are the stages of the 5-stage pipeline? |
|
Definition
1. IF - Instruction Fetch 2. ID - Instruction Decode - Depends on the complexity of the instruction 3. OF - Operand Fetch - Gets the data (if needed) that the instruction needs to execute upon. 4. Exec - Execute - Performs the operation specified by the instruction.
5. OS - Operand Store - Save the data to the specified location. |
|
|
Term
True or False. All instructions require all stages of the 5-stage pipeline? |
|
Definition
False. Not all instructions require all 5-stages. For example a CMP does not have the Operand Store stage. |
|
|
Term
How does parallel processing affect the hardware? |
|
Definition
Will have to have redundant hardware if it can be used by the different stages at the same time. For example the PC increment during the fetch cannot use the ALU that is used for the Execute stage. |
|
|
Term
How does parallel processing affect the software? |
|
Definition
There are cases where an operand read can happen prior to or at the same time as the operand write. Can get old data. The assembler has to know about this and reorganize the code to make sure this does not happen. |
|
|
Term
What are the 4 stages of the 4-stage pipeline? |
|
Definition
1. Fetch 2. Operand read 3. Execute 4. Write Operand |
|
|
Term
In the pipeline speed formula, what do n and i stand for? |
|
Definition
n = number of pipeline stages i = number of operations performed in the pipeline
(n * i = how long it takes to perform i instructions without having a pipeline) |
|
|
Term
What is the overall concept to know about speed up? |
|
Definition
The more instructions that I have, the closer the speed up is to n |
|
|
Term
|
Definition
problems that reduce the pipeline's throughput |
|
|
Term
What are structural hazards? |
|
Definition
When you don’t have sufficient hardware to support the pipeline (only 1 ALU)
Done at design time of the CPU- nothing you can do about these |
|
|
Term
What are data/pipeline hazards? |
|
Definition
It's when the pipeline has to wait until another step is complete
Data dependencies are bad for pipelines |
|
|
Term
What are the three types of data/pipeline hazards? |
|
Definition
1.Read after write- this is a true data hazard
2. Write after write
3. Write after read
* 2 and 3 are only data hazards if the code is reordered/superscalar architecture |
|
|
Term
What is a control/branch hazard? |
|
Definition
It's when a branch instruction is executed and the pipeline is filled with incorrect instructions. This makes a bubble in the pipeline that has to be flushed out |
|
|
Term
How can you mitigate branch hazards? |
|
Definition
1. Speculative execution- You can play the odds and assume the branch isn't taken 2. Freeze the Pipeline, where you stop loading more instructions once a branch is detected (freeze the pipeline) until you know if the branch is taken or not. Then adds the correct instructions. 3. Delayed branching where the compiler reorders the instructions so you don't have to freeze the pipeline (works 60% of the time) |
|
|
Term
What does it mean to squash/flush a pipeline? |
|
Definition
It means that the program took a branch and the pipeline is filled with incorrect instructions which have to be removed before proceeding. |
|
|
Term
What is start-up latency? |
|
Definition
It's the time it takes the pipeline to backfill after a branch is executed |
|
|
Term
What is a branch penalty? |
|
Definition
The cost (in terms of time) of executing an operation that causes a non-sequential flow of control. |
|
|
Term
What are the high-language constructs that cause branches? |
|
Definition
1. Conditional statements (if, then, else, switch) 2. Loops (for, reap until, while, do while) 3. Conditional subroutine/function calls and the conditional return from them |
|
|
Term
|
Definition
They don't contain anything in the pipeline- usually due to conditional branching |
|
|
Term
How does knowing about the effects of branching effect our programming? |
|
Definition
The most efficient program does not contain conditional branching, so the majority of the routes through the code should be in a straight flow to maximize efficiency |
|
|
Term
True or False, in speculative execution, the processor always assumes the branch is not taken |
|
Definition
True (this is hardwired into the CPU) |
|
|
Term
What are the two types of speculative execution? |
|
Definition
1. static- usually set by whomever designed the architecture (usually don't branch)
2. dynamic- the CPU makes its own decision based on the information it has (uses the history) |
|
|
Term
What is contained in the branch target buffer? |
|
Definition
1. Address of the branch instruction 2. Predicted outcome of the branch (take or not take) 3. Past history 4. Branch target address. 5. Copy of the instruction where the branch is located. |
|
|
Term
True or False: The prediction in the branch target buffer can be more than a single bit. |
|
Definition
|
|
Term
What is branch pattern history? |
|
Definition
It keeps track of interactions between multiple branches i.e. the previous branch influences the current branch |
|
|
Term
True or False: The write after read and the write after write data hazards do not typically present problems with a pipeline CPU unless other speed-up techniques like instruction reorder or parallel execution are employed. |
|
Definition
|
|
Term
True or False: A pipeline structural hazard happens when there is a data reference in one of the pipeline stages and the data is not ready for use. |
|
Definition
|
|
Term
True or False: There are no drawbacks associated with implementation of a pipeline architecture for CPUs. |
|
Definition
|
|
Term
True or False: Delayed branching uses a technique called reordering code to limit the negative effect of conditional branching in pipelined CPUs. |
|
Definition
|
|
Term
True or False: Unconditional branches have no negative effect on modern pipelined CPUs. |
|
Definition
|
|
Term
True or False: Every conditional branch instruction requires the pipeline to be flushed. |
|
Definition
|
|
Term
What is the branch target buffer? |
|
Definition
it is special-purpose memory that stores information about the branch instructions that are currently active in the program |
|
|