The final exam will be held on Monday, Aug. 14 from 9:00 am to noon
in our regular classroom.
The final examination will cover the course lectures, homework problems,
assigned material
from the course textbook, and material from the laboratory projects.
The final exam is closed book but you may bring one 8 1/2 x 11 sheet of paper
with notes in your own handwriting.
No printed material or copied material may
be used except handouts or figures from our textbook.
Calculators may not be used.
In addition, you may be provided the following figures from the textbook as
appropriate:
Figures B.5.10, B.5.12, B.9.3, 5.7.2, 5.7.3, 5.28, 5.30, 5.39,
7.9, 7.17, 7.21, 7.23, 7.26 and the
official MIPS instruction sheet
Important Notes
To do well on the examination, you should be able to:
Why do computers use binary numbers?General Design
Why do we humans use hexadecimal numbers?
What is two's complement? (note: it's a noun, not a verb)
Why do ALUs use two's complement? Explain.
What are some alternatives to two's complement? Explain.
What operations can the MIPS ALU perform? (e.g. A+B, A-B, ...)
Why does the alu perform subtraction?
How does the alu perform subtraction?
What does it mean to say: n-bit machine? What parts of the CPU determine n?
What does it mean to say: n-bit program?
How is the address space of a computer defined? How could it be changed?
What determines the maximum address of a computer?
What determines the maximum memory size of a computer?
Why are CPUs designed in layers (e.g. hardware, microcode, machine code, C++)
Why don't we build CPUs that interpret C++?
What is the purpose of microcode? machine code? assembly language?
Why are some CPUs microprogrammable? Why not all CPUs?
Why are computers constructed with memory hierarchies?
Why are emulators used in a computer system? Why are emulators usually faster than the native CPU?
Why are simulators used to interpret instruction set architectures?
Why are are simulators always slower than the native CPU?
What are the major differences between a RISC and CISC machine?
What are the advantages of a RISC machine?
What are the advantages of a CISC machine?
What are the characteristics of a RISC machine?
What are the characteristics of a CISC machine?
Address Space
What determines the address space of a program?Performance
What parts of the CPU determine its address space? (Think carefully!)
Why do computer designers build CPUs with an address space smaller than physical memory? (e.g. SUN SPARC)
Why do computer designers build CPUs with an address space larger than physical memory? (e.g. MIPS)
Suppose you were asked to determine the address space of a computer; how would you proceed?
Some CPUs (e.g. 80x86, MIPS) have multiple address spaces of different sizes; explain why.
What is the purpose of the basic performance equation?
List several common benchmarks and explain what's wrong with each.
How should a computer scientist measure the performance of a CPU?
How do you choose the programs to execute for a performance measurement?
Is it necessary to execute programs to measure the performance of a CPU?
How is performance (CPU time and throughput) affected by architectural choices? e.g.
    Virtual Memory, cache design, pipelining, DMA, ...
Microprogramming
Why are CPUs microprogrammed? microprogrammable? hard-wired?Caches
Why is there a trend away from microprogramming?
What are the motivations for using caches?
Explain the rationale for each type of cache (direct mapped, set associative, fully associative)
What's the purpose of a translation lookaside buffer?
Under what circumstances should a cache use write-through? write-back?
How does cache affect the basic performance equation?
Explain locality, both temporal and spatial. Use/discuss actual code examples
Virtual Memory
Explain how virtual memory is used to help solve each of the following architecture problems.
In addition to the MMU, what features must be provided by the CPU to implement virtual memory?
- Multiple programs executing in the same CPU
- Accessing memory addresses larger than 2 largest address
- Executing a program with only part of it in memory
- Executing a program larger than memory
- Program sharing
- Protection