Midterm 1 Study Guide

General Concepts

  1. What is big-endian, little-endian, and bi-endian? What are the advantages/disadvantages of each one?
  2. What are the advantages/disadvantages of fixed-length versus variable length instructions? Why do some architectures use one versus the other?
  3. What are the advantages/disadvantages of RISC versus CISC? Why do some architectures use one versus the other?
  4. What goes into a calling convention?
  5. What is a function caller versus callee? Prologue versus epilogue?
  6. What is the purpose of the link register?
  7. Be sure to be able to calculate CPI and CPU time given some piece of assembly and CPI for instruction class.
  8. What are some ways that a compiler can reduce execution time?
  9. What is Amdahl's Law?
  10. What does it mean to align instructions and data? Give an example of aligning instructions, and another example of aligning data.

Gates

  1. Be able to discern between the different types of gates: AND, OR, NOT, XOR, NXOR, NAND, and NOR.
  2. Be able to build a Karnaugh map given a particular truth table.
  3. What is gate propagation delay? How is it calculated it?
  4. What is the difference between a ripple adder versus carry lookahead adder? What are the advantages/disadvantages of them?

Computer Arithmetic

  1. Understand the differences between unsigned, ASCII, signed magnitude, one's complement, and two's complement.
  2. Explain the difference between arithmetic shift right versus logical shift right. Then explain why shift left for both are mostly the same.
  3. Describe in C what a bitfield is, and why they would be used.
  4. What are condition codes? How are they calculated?
  5. Be able to perform multiplication, via a shift-add and via Booth's algorithm.
  6. Be able to perform division, via shift-subtract.
  7. What is the difference between remainder and modulo?