The content of student presentations will not be included in
this quiz but may be covered on the final exam.

This quiz covers pipelining and code optimization.

Review the hints for Quiz 4, since Quiz 5 also involves
assembly language programming.

For this quiz, also be able to:

-- Describe the tasks performed in each stage of the 
Fetch-Decode-Execute-Memory-Writeback-PC pipeline.

-- Schedule instructions in such a pipeline, and see where
bubbles occur due to data dependencies and branches.

-- Explain why function calls and possible memory aliasing 
block optimization by compilers.

-- Use loop unrolling, reassociation, and separate accumulators
to reduce cycles per inner iteration.

-- Use latencies and cycles/issue to predict program performance.

-- Solve B&H Chapter 4 Practice Problems 4.26, 4.27.

-- Solve B&H Chapter 5 Practice Problems 5.1 -- 5.8. 

-- Solve the October 31 exercises.
 
---------------------------------------------------------------------

Notes: 

-- I will provide a copy of the 1-page summary of assembly language 
instructions for you to use during the quiz, if needed.  I'll 
collect it for reuse after the quiz, so try to save a tree by not 
writing on it.

-- I will also provide a copy of the handout from Oct 24,
posted as https://www.cs.umd.edu/users/oleary/c662/pipeline,
if it is needed for this quiz.

-- "Describe" means "explain in English, program in Matlab, and 
illustrate on an example."

-- If I ask you to write Matlab on a quiz, I'm expecting about
5-10 lines of Matlab code as your answer.  

-- Minor Matlab syntax errors will not hurt your grade, as long
as what you mean is clear.  Include a Matlab comment if you are
unsure of clarity because of syntax issues.