91.305 home

WED MAY 5
&bull assignment 9: cache memory pdf
due Wed May 12
&bull microprocessor design article pdf

WED APR 14
&bull archlab part B practice html

FRI APR 2
• assignment 8: archlab parts A and B
due Mon Apr 12
    tar
    sum.ys starter file
    pdf handout
for Mon Apr 12: Part A, sum.ys and rsum.ys only

FRI MAR 26
• assignment 7: bomblab
    pdf due Fri Apr 2
    BOMBLAB README txt
    gdb notes pdf txt

FRI MAR 12
• assignment 6 answers out
• mid-term review txt

WED MAR 10
• assignment 4 handed back w/answers

MON MAR 1
assignment 6: memory-mapping and the stack pdf due Mar 10
• appendix b pdf
• cy6264 pdf
• expanddemo.s s
• mystery5000.rel rel

NOTE: THERE IS NO ASSIGNMENT 5.

FRI FEB 20
assignment 4: the HC11 pdf due Feb 27
• java setup html
README FIRST!
• intro to 6811 pdf
• m68hc11e manual pdf
HC11Boot.java
Serial.java
beep.s
BootLoad.java
ReadRel.java
serialxmit.s
BootTerm.java
BootTermSafe.java
analogdemo.s
the above files in a zip

THU FEB 19
• assignment 2 answers out

WED FEB 11
assignment 3b: transistor ckts html due Feb 18

MON FEB 9
• sch draw hints pdf
• volt div, trans reading – no link
assignment 3: state machines pdf due Feb 18

FRI FEB 6
univ closed – class canceled

WED FEB 4
• uml305dev manual pdf
• uml305dev checkout pdf
• datasheets html

MON FEB 2
• labkits distributed
assignment 2: transistors, gates, & mystery chips pdf due Feb 9
• Horowitz/Hill logic implementations no link

WED JAN 28
assignment 1: historic computer html due Jan 30

resources ikonboard software data links

91.305 Computer Architecture Spring 2004

Contact
Prof. Fred G. Martin
http://www.cs.uml.edu/~fredm/
fr...@...uml.edu
Olsen 208 (office) x1964
Olsen 306 (lab) x2705

TA Karthik Ramanathan, kramanat at-sign cs dot uml dot edu

Schedule
MWF, 10:30 – 11:20 am, OS 414

Office Hours
Monday 3:30 – 4:30 pm, OS 306 (Martin)
Wednesday 1:00 – 3:00 pm, OS 208 (Martin)
Thursday 2:30 – 4:30 pm, OS 306 (Ramanathan)

Web Site
http://www.cs.uml.edu/~fredm/courses/91.305/

Discussion Board
The class will use the ikonboard system for web-based threaded discussions of lectures, assignments, and other course-related material. All students are expected to create an account for themselves on the discussion board, and use it when appropriate. Before sending me an email, please consider posting your question to the discussion board. Private/personal matters (e.g., academic standing in the class) should be addressed to me.

Look for the link to the course board at the top of any course web page, in the pink resources menu.

Text
Computer Systems: A Programmer’s Perspective, (C) 2003 by Randal E. Bryant and David R. O’Hallaron, ISBN 013034074X, Prentice-Hall.

The book’s web site on the publisher’s page is http://vig.prenhall.com/catalog/academic/product/0,4096,013034074X,00.html.

The authors’ site is http://csapp.cs.cmu.edu/.

This is a new textbook and takes a practical, hands-on approach to the subject matter. In addition to learning particular topics in the course (e.g., cache memory), you will learn how to write better code to exploit this knowledge.

I will hand out additional material in class (which will also be posted to the course web site).

Course Description
From the UML CS brochure:

“An examination of the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and microcode.”

Now, my words. We will learn the structure of computers and how they work. We’ll study computers as layered systems, like a Russian nesting doll. From the inside of the doll (lowest level) moving outward, here’s one way to describe the layers:

0. semiconductor physics—electron flow; how transistors work

1. transistors as switches / logic gates / boolean operations—for our purposes, the most primitive element of a computational system

2. adders / math units / mutiplexers / decoders—the stuff you can build with gates, which become the building blocks of the CPU (central processing unit)

3. CPU—the heart of the computer. It’s implemented by what’s called the “microarchitecture level.” Its external interface—the way you experience it as a programmer—is called the “instruction set archictecture” or machine language.

4. memory, peripherals [input/output], and the other doo-dads the CPU talks to—logically, this isn’t actually above the CPU, but rather along side it

5. compilers—software that takes higher level code written by people and generates machine code to run on the CPU. The compiler matters because (1) if you’re writing a compiler, you need to intimately understand the CPU to do a proper job, and more commonly (2) if you’re using a compiler [who doesn’t?] you need to understand how it works to write decent code.

6. operating system—in a sense the most important program the CPU will run. The OS doesn’t do useful work by itself, but it implements a rich set of services that application programmers use.

In this class, we won’t worry about my “level 0,” and we probably won’t get to anything too important in “level 6.” For “level 0,” see 16.423/16.523 Intro to Solid-State Physical Electronics; for “level 6,” see 91.308, Introduction to Operating Systems !

Syllabus
Broadly, the class has four sections:

  • First section: We will examine digital systems, including gates, latches, counters, adders, multiplexers, and combinational logic. The highlight of this section is the finite state machine, which is the controller core of any CPU (as well as being relevant to some software designs). Each students will be given a personal lab kit (see below); we will build circuits to explore and demonstrate the class material (3 weeks).

  • Second section: We will learn the instruction set architecture of a simple 8–bit microprocessor (the Motorola 68HC11), wire it up, and program it to perform a number of tasks. Topics include instruction set design, CPU registers, memory mapping and address decoding, timing and cycle-counting, analog-to-digital conversion, ASCII and the serial line (2 weeks).

  • Third section: We will study the internal design of the “Y86” a version of the Intel IA32 (Pentium) processor that has been simplified for pedagogical purposes. We will use HCL (hardware control language) with a simulator to implement and improve the Y86 design, learning about registers, pipelining, instruction decoding, other aspects of processor design, and memory design. This is the core of the class. (4 weeks, based on Chapters 4 and 6 of the Bryant/O’Hallaron book.)

  • Fourth section: Practical approaches based on this knowledge, including how to design algorithms that take into account cache memory configurations, and how C-compilers translate into machine code. (4 weeks, based on Chapters 3 and 5 of Bryant/O’Hallaron.)

Lab Kit
Each student will be provided with a lab kit for use in the first two sections of the class. Most work using the kit will be able to be done at home (with your own PC). Some assignments may require the use of computers or other resources located on campus.

The kit must be returned in the same condition it was provided to you (or better). Students who fail to return the kit will not be awarded a grade in the class. The replacement cost (if the kit is lost) is $100.

Grading
Assuming you complete all of the homework assignments, your grade in the class is calculated primarily from your performance on exams:

mid-term exam, 30%
final exam, 50%
in-class participation, 10%
homework assignments, 10% — see below.

Homework
Homework assignments are the core of the class. It is where I expect, for most students, the most important learning will take place.

The key to success in this class is the following:

  • Even though they do not count substantially toward your grade, all homework assignments must exhibit significant effort and thought.

  • Homework that is obviously prepared without effort (“lame”), or is too late (see below), will be counted as missing.

  • After two missing homeworks, each subsequent missing homework will cost you a half-letter grade in the class.

In other words:

1 or 2 missing/lame homeworks – no penalty.
3 missing homeworks – half-letter grade reduction (A becomes an AB, AB becomes a B, etc.)
4 missing homeworks – one-letter grade reduction (A becomes B, etc.)
5 missing homeworks – 1.5-letter grade reduction (A becomes BC, etc.)
...
10 missing homeworks – 4-letter grade reduction (A becomes F, a.k.a. automatic failure)

Here is the reason for this policy. The homework is the place to learn. So I don’t want to penalize you if you didn’t understand something on the assignment. Hence, the grades on your homeworks are only worth 10% of your overall grade. When you get your corrected assignments back, check to make sure you understood the material, or come see me or the TA to ask questions and debug your thinking.

On the other hand, I expect you to make an honest effort in the class—not to skate by, cram, and hope for a passing grade on the two exams. If you are not willing to take the class seriously and do the work, you should drop the class, because (with this policy) it’s pretty hard to pass otherwise.

Finally, at the end of the day, if you understand what happened in each homework assignment, you should do fine on the exams! I am not going to surprise you with material on the exams that had nothing to do with the homework. Quite the opposite: the exams will be based specifically on the material on the assignments.

Also:

  • There will be approximately one homework assignment per week. You should budget 4 – 8 hours per week to do the assignments.

  • We will make every effort to return corrected homework to you, with an answer key as appropriate, within one week of its due date.

  • Late homework will not be corrected. This is a practical matter of respect to the professor and TA, who are responsible for timely and thoughtful treatment of a significant number of students’ homework.

  • If late homework is turned in before answers are handed out, though, it will be counted as being done. This gives you a non-deterministic period typically no longer than a week to get late homework in. Don’t push it.

  • As discussed, homework grades are not counted significantly toward your course grade.

  • Exceptions will only be made for serious personal situations.

Copying
Short form: I encourage you to study groups and work with each other, but all prepared work you turn in must be your own. Do NOT copy code, solutions, or other text from your study partners or anyone else.

Long form: In professional as well as academic life outside the classroom, people seldom work completely on their own. They typically work in teams and help each other extensively. I have no objection to you getting help from me or your fellow students. I encourage you to do so. However, prepared work in this course is to be each student’s own.

Students should therefore be familiar with the University’s definitions and policies on academic dishonesty, found in the University course catalog. [above adapted from Prof. Jesse Heines’ copying policy]

The contributions of others to your thinking must be acknowledged in all work you turn in. As UML Prof. Sarah Kuhn says, “Using works of others, or drawing extensively on their ideas, without clearly stating that they are not your work (by using quotation marks, and references to the cited work) is plagiarism, a very serious academic offense.” [Prof. Sarah Kuhn, syllabus for 65.790, from Prof. Marian William’s 91.531 course syllabus.] With each assignment, you must mention people whom you worked with, who you have helped, or who have helped you.

Honors Program
Students enrolled in the honors program will be expected to do an exemplary job with all coursework. Additionally, a term paper or term project will be required. A due date will be set in early May. Please schedule a meeting with Prof. Martin to plan the project by April 1.


Last modified: Monday, 05-Apr-2004 11:31:34 EDT by fr...@...uml.edu