Eight Great Ideas in Computer Architecture Flashcards
List the 8 great ideas in computer architecture
- Design for Moore’s law
- Use abstraction to simplify design
- Make the common case fast
- Performance via parallelism
- Performance via pipelining
- Performance via prediction
- Hierarchy of memories
- Dependability via redundancy
Explain what it means to design for Moore’s law
Meant designing with the assumption that every new generation would improve performance. Today more focus on architectural improvements and using the larger number of transistors without relying on silicon performance improvements
Give an example of designing for Moore’s law
Intel’s tick tock model
tick - new processor design but on existing well tested silicon node ie. performance gain through architectural improvements
tock - existing processor but on next generation silicon node ie. performance gain through silicon improvements
What do we mean by abstraction?
Levels of program code
Give the 3 levels of abstraction
- High-level language
- Assembly language
- Hardware representation
Describe high-level language
- Level of abstraction closer to problem domain
- Provides productivity and portability
Describe assembly language
Textual representation of instructions
Describe hardware representation
Bits used to encode instructions and data
What makes it difficult to define performance?
Different applications have different performance requirements
Give the equation for performance
performance = 1/execution time
How is relative performance defined?
The execution time of one process divided by the execution time of the other
What are the 2 ways we can measure execution time?
- Elapsed time (total response time that determines system performance)
- CPU time (time spent processing a given job, comprised of user CPU time and system CPU time)
Give the equation for CPU time then simplify it
CPU time = CPU clock cycles x clock period
= CPU clock cycles / clock frequency
= (instruction count x cpi) / clock frequency
How can performance be improved (use CPU time equation)?
- Reducing number of clock cycles
- Reducing clock period (increasing frequency)
This is a trade off
Give the equation for clock cycles
clock cycles = instruction count x cpi
If different instructions take different numbers of cycles then multiple instruction count by cpi for each different instruction class
What determines the instruction count for a program?
Program, ISA and compiler
What determines the average cycles per instruction?
Program, ISA, compiler and CPU hardware (processor design)
Write out the equation for weighted average CPI
.
What determines clock rate?
ISA, processor design, implementation technology
Give Amdahl’s law for sequential programs
Execution time after improvement = (execution time affected by improvement / amount of improvement) + execution time unaffected
Give an example of making the common case fast
Integer division is rarely used. Adding integer division can make the processor clock much slower without being worth it, so early processors did not have an instruction for this and used a library function instead
What are the 3 forms of parallelism?
- Instruction-level parallelism
- Thread-level parallelism
- Data-level parallelism
Describe instruction-level parallelism
Trying to execute more than one instruction in the same clock cycle
Describe thread-level parallelism
Run N sequential threads on N processors, or an N-way multithreaded processor, or some combination