FRI DEC 12
finals study guide txt
bombs source code directory
MON DEC 8
gdb notes pdf
FRI DEC 5
bomblab (ass'n 11) pdf
due fri dec 12
WED DEC 3
adv cpu topics txt
pls rtn kit on friday! pdf
pls do course eval! html
MON DEC 1
assignment 10: caches pdf
due fri dec 5
FRI NOV 14
assignment 9: pipe optimization pdf
FRI NOV 7
assignment 8: cpu research pdf
TUE NOV 4
take-home midterm due Wed Nov 5 pdf
MON NOV 3
assignment 7 practice pdf
FRI OCT 31
assignment 7: y86 and seq pdf
due Nov 7
ass'n 5 back
ass'n 6 back
ass'n 6 answers
ISA slides pdf
SEQ slides pdf
WED OCT 22
midterm (open data sheets, ass'n 6 not included)
MON OCT 20
WED OCT 15
assignment 6b: mapping a RAM pdf
due Oct 20 (along with Ass'n 6)
6.270 hardware pdf
Cypress 6264 8K RAM pdf
Handy Board schem gif
68HC11 big manual pdf
FRI OCT 10
assignment 6: address decoding pdf
due Oct 17
MON OCT 6
assignment 5 pdf
due Oct 15
MON SEP 29
intro to 6811 pdf
m68hc11e manual pdf
assignment 4 pdf
due Oct 6
java setup html
WED SEP 24
garage state machine pdf
MON SEP 22
logic implementation of eqns pdf
FRI SEP 19
assignment 3 pdf
html due Sep 29
logic eqn reading from Fletcher no link
MON SEP 15
schematic hints html
mystery hints pdf
FRI SEP 12
transistor reading from horowitz/hill no link
pp 117-141 from Tanenbaum no link
MON SEP 8
assignment 2 pdf
due Sep 15
data sheets html
WED SEP 3
assignment 1 pdf
due Sep 8
91.305 Computer Architecture Fall 2003
Prof. Fred G. Martin
Olsen 208 (office) x1964
Olsen 306 (lab) x2705
Karthik Ramanathan, kramanat at-sign cs dot uml
MWF, 10:30 11:20 am, OS 412
Monday 3:30 4:30 pm, OS 306 (Martin)
Tuesday 2:00 4:00 pm, OS 306 (Ramanathan)
Wednesday 2:00 4:00 pm, OS 208 (Martin)
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.
Systems: A Programmers Perspective, (C) 2003 by Randal E. Bryant
and David R. OHallaron, ISBN 013034074X,
The books web site on the
publishers 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 brand-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).
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.
From the UML CS brochure:
Now, my words. We will learn the structure of computers and how they
work. Well study computers as layered systems, like a Russian
nesting doll. From the inside of the doll (lowest level) moving
outward, heres one way to describe the layers:
0. semiconductor physicselectron flow; how transistors work
1. transistors as switches / logic gates / boolean operationsfor
our purposes, the most primitive element of a computational system
2. adders / math units / mutiplexers / decodersthe stuff you can
build with gates, which become the building blocks of the CPU (central
3. CPUthe heart of the computer. Its implemented by
whats called the microarchitecture level. Its
external interfacethe way you experience it as a
programmeris called the instruction set
archictecture or machine language.
4. memory, peripherals [input/output], and the other doo-dads the CPU
talks tologically, this isnt actually above the CPU, but
rather along side it
5. compilerssoftware that takes higher level code written by
people and generates machine code to run on the CPU. The compiler
matters because (1) if youre writing a compiler, you need to
intimately understand the CPU to do a proper job, and more commonly
(2) if youre using a compiler [who doesnt?] you need to
understand how it works to write decent code.
6. operating systemin a sense the most important program the CPU
will run. The OS doesnt do useful work by itself, but it
implements a rich set of services that application programmers
In this class, we wont worry about my level 0, and
we probably wont 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 !
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 8bit 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
- 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/OHallaron.)
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.
Assuming you complete all of the homework assignments, your grade in
the class is calculated primarily from your performance on exams:
mid-term exam, 40%
final exam, 50%
in-class participation, 10%
homework assignments see below.
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 directly 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
- 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,
5 missing homeworks 1.5-letter grade reduction (A becomes BC,
10 missing homeworks 4-letter grade reduction (A becomes F, a.k.a.
Here is the reason for this policy. The homework is the place to
learn. So I dont want to penalize you if you didnt understand
something on the assignment. Hence, there are no grades
per se on the homework. 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
classnot 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) its
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.
- 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. Dont push it.
- As discussed, homework grades are not counted significantly
toward your course grade.
- Exceptions will only be made for serious personal situations.
A mid-term will be held during October. It will be scheduled for a
90-minute period outside of normal class hours. Students will
be given at least three weeks notice of the date and time. The
instructor will make all effort to select a time convenient for the
Short form: you may form 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
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 students own.
Students should therefore be familiar with the Universitys
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 Williams 91.531 course syllabus.] With each
assignment, you must mention people whom you worked with, who you have
helped, or who have helped you.
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 December.
Please schedule a meeting with Prof. Martin to plan the project by
Tuesday, 27-Jan-2004 17:09:27 EST