ECE243

“SPRING” 2006

Andreas Moshovos (*)

 

Lecture Notes

 

There may be errors or omissions in the notes that follow and of course I’m responsible for them. If you do spot an error please let me know. These notes are provided as an aid. The book and the lab manual are the primary texts for this course.

 

How these relate to the book: In our lectures we will use a slightly different order than the book and also emphasize some topics more than others. Accordingly, there may not always be a direct correspondence between a lecture and a book section. Where possible I will be noting the book sections each lecture corresponds to.

 

If you want to experiment with 68k programs that do not use I/O devices you can try Easy68K, a 68k simulator that runs under windows. This is a simulator and not actual hardware hence it may not faithfully simulate 68k’s behavior. So use this with caution and as an aid. You will not be able to complete most of the labs on this simulator because they involve I/O devices.

 

--------

Understanding what Computers do at the low level:

What you need to know to successfully program a computer

 

1. Introduction, course goals, digital systems and why they are useful.

(book chapter 1 except 1.6 & 1.7)

2. Using Binary Quantities to Represent Other Things.

(book 2.1)

Added section on converting from decimal to binary for integers and fractions.

3. Behavioral Model of Memory.

(book 2.2 – 2.3)

4. Introduction to the 68k programming model.

(book 3.8 and some of 3.9 and 2.4)

5. Instruction Representation, Stored Program, Straight-Line instruction sequencing.

      (book 2.4.4, 3.9  and some of 3.11)

6. Assembly representation of 68k instructions and data.

      (book 2.6, 3.10 and Ultragizmo manual 2.1)

7. Simple Control Flow (non straight-line sequencing).

      (book 2.4.5, 2.4.6, 3.11.1, 3.11.2)

8. For loops, arrays and do-while loops.

      (not as-is in the book related sections 2.11 and 3.15)

9. Implementing the C switch structure.

      (not as-is) see above

10. Subroutines – Requirements – Calling and Returning

 

11. Subroutines – Passing Arguments and Returning Values – Complete Example (Ackerman Function)

11.1 Step-by-Step Example: What happens when Ackerman(1,1) is called.

       This is provided as an aid, we will not go through this example during the lectures.

11.2 Subroutines – The Frame Pointer – General Discussion
11.3 Subroutine Examples: (1) Searching through a Sorted Binary Tree, (2) Detecting whether a string is a palindrome

      (book 2.8, 2.9 and 3.13)

12. Introduction to Input/Output Devices: The Parallel Port Interface

13. The Universal Asynchronous Receiver Transmitter AKA UART: A Serial Communication Device – Introduction to Polling

14. Introduction to Interrupts – Concept – A first example using the UART on the Ultragizmo board

15. Interrupts continued – Using interrupts to emulate non-existent instructions

16.1 Binary/Bit manipulation instructions.

      (book 2.10.1, 2.10.2 and 3.14)

16.2 Characterization of Instruction Sets

 

---------

Building Processors:

What you need to know to build a computer

PRINT THESE IN LANDSCAPE MODE

17. Single Cycle Implementation of a Simple CPU/Instruction Set (updates/corrections: 2/3/2005, ORI, load/store address/data lines)

18.1 Multiple Cycle Implementation of a Simple CPU/Instruction Set: The Datapath

18.2 Multiple Cycle Implementation of a Simple CPU/Instruction Set: The Control

19.1 Extending/Changing the Multicycle Datapath

      Changing LOAD r1 (r2) into LOAD r1 (r2)+

19.2 Microprogramming (there will be short notes posted but please do read the book)

20.  Pipelining 

<--------------------------------- WE ARE HERE --------------------------------->

21. Synthesizing larger memories

22. Cache Memory
      Please read sections 5.5 and 5.6 from the book.

22.1 Reasoning about caches and performance: examples

 

 

(*) Permission is given to reproduce these notes provided that a notice of their origin is clearly given. All rights reserved just in case :)