Course Paper

Assignment: Research and write a paper discussing a current computer architectural topic/issue. Specific requirements:

  1. Originality:This topic and paper must be researched and written this semester for this class(i.e. a paper from a previous class is not allowed to be used).
  2. Sources: You must have at least three sources. Wikipedia may be used, but counts for at most ONE source.
  3. Bibliography: Append a list of resources/references used to the end of your paper. You can pick the format. See note below.
  4. Length: 3 to 5 pages.
  5. Content: Your paper should have some analysis, not just a rehashing of the sources that you found. For instance, if discussing a problem, how serious a problem is it and are the solutions you discovered likely to really work?
  6. No name! Please do not place your name on the paper itself -- only on the coversheet that will be provided and stapled to your paper.
  7. Quotations: Use your own words. Use quotations where necessary, but this should be infrequent and brief.
  8. Format: Your paper must be typed.

Important note on sources and the bibliography

Specific deliverables:

  1. Paper description: Submit your description to your instructor (see calendar for deadline) via plain text e-mail (do NOT send a Microsoft Word document etc.). Include the following:
  2. TWO copies of Paper v1.0. See calendar for due date. You will submit a complete, well-written draft of your paper (see calendar for deadline). Very soon thereafter, we will devote one day of class to peer review: everyone will read and give constructive feedback on two papers. You will receive this feedback, and will use it to revise the paper.
  3. Final paper submission. See calendar for due date. Be sure that you have revised the paper based on the comments you received. Turn in:


Suggested topics (but need not be one of these):

NOTE: where links are provided, they often refer to original articles (from several years ago) that "set the tone" -- use such articles for your initial understanding, and then also seek out more recent articles to understand the state-of-the-art.


-Transactional memory

-"Free instruction sets", such as "RISC-V".  See, and especially "Instruction Sets Should Be Free: The Case For RISC-V", available at 

-Very Long Instruction Word (VLIW) machines.  Why do this -- what are the costs and benefits? 

-Costs and benefits from going to a 64-bit architecture.

-Wire delay -- what is it and why are chip designers so scared about it?

-What is a dataflow machine?  Why didn't the idea take over the world?

-Multicore chips

-Writing software for multicore/multiprocessor systems.  Apple's Xcode has some tools for this that you might consider.
Also consider MPI, OpenMP, or Cilk.

-Also related to writing "parallel code", consider the "Ninja" performance gap:

-Quantum computation

-Simultaneous multithreading:
(renamed Hyperthreading by Intel)

-Fault tolerant computing
(hardware failures or design flaws)
For instance, see DIVA:

-Reconfigurable computing.  You could start here:
or this older survey

-Concurrency in hardware and software
One possible place to start:

-Why is branch prediction so important?  Investigate and describe
some of the most successful techniques that have been recently 
proposed or used.

-Why is power consumption an increasingly important factor for
processors?  Research and describe some techniques for reducing power consumption.

-Optical based computers or interconnect.

-Issues with scaling down transistor size.

-Formal methods to verify hardware (e.g. model checking, equivalence checking).

-Virtual machines, VMWare.  How do they work?  Why would you want to use them? 

-More on virtual machines: you could also examine JVMs (Java Virtual Machine), from a hardware point of view.   

-Malware plus virtual machines.  For instance, see

-Security and information leakage from a processor?

-Errors in main memory.  For instance,

Valid XHTML 1.1!