EE360N -- Computer Architecture
Spring 2008
Course Descriptor and Syllabus
Class lectures will generally be held on Mondays and Wednesdays 5:00pm - 6:30pm in CPE 2.208. There are currently 6 TA sessions scheduled and you may go to any session (other scheduled sessions have been converted to office hours pending higher demand):
TA | Time | Room |
Doe Hyun | Th 2:00-3:30pm | ENS 109 |
Ikhwan | Th 5:00-6:30pm | RLM 6.112 |
Ardavan | F 12:30-2:00pm | RLM 6.112 |
Please check the class web page on Blackboard
frequently for updates, reading material, assignments, and feedback.
Professor:
Mattan Erez
ENS 538
mattan.erez@mail.utexas.edu
471-7846
Office Hours: T 4 - 5 and W 6:30 - 7:30, or by appointment.
TAs:
Ikhwan Lee
Office: ENS 526E
ilee1@ece.utexas.edu
Office Hours: M 10am - 12pm, Th 6:30 - 7:30
Ardavan Pedram
Office: ENS 526E
ardavan@mail.utexas.edu
Office Hours: Tu 11am - 1pm, Th 3:30 - 5
Doe Hyun Yoon
Office: ENS 526E
dyoon@ece.utexas.edu
Office Hours: W 3 - 5pm, F 2 - 3:30
You have written at least a few programs in
at least one high-level (well, whatever level you want to call C)
language (since that is a prerequisite to the class), and you've
compiled them into an executable and run those on a computer. How
do those executables execute? Are there microscopic pixies
in your computer that read your program and turn microscopic wheels and
levers to execute that program for you? An oracle that
guesses the answer? What magic takes an executable and performs
trillions of tasks that run your executable on your inputs (and
hopefully does the right thing?)
This class covers many of the concepts that implement that execution
magic, more commonly called computer architecture. We start by
learning the machine language that a computer exposes to the user and
how one can use that language to express algorithms in the form of
machine language (or the more human-readable form of machine language
called assembly language) programs. We then learn how a simple
hardware-based machine language interpreter (generally called a
processor) is structured. We use that as a launching point to
explore
- implementing the processor (in a basic sense)
- improving the performance and usability of the processor
- measuring and understanding tradeoffs between performance, usability and design complexity
The syllabus contains a list of subjects to be covered
along with dates for all assignments and the exams.
I expect you to learn the
material. To assist you in that goal, I will assign problems
almost every lecture to help you learn the material and programming
assignments (to let you practice the material). To
prove that you have learned the material, I will provide two mid-term
exams and a final exam. I hope to cover most of the material one
should expect in an introduction to computer organization, but I expect
to not read to you from any textbook. You should consider my lectures
and the corresponding treatments in various textbooks as different
approaches to learning the same material.
I will not take attendance, and attendance will not be
considered in the grading. However, do not expect
me or the TAs to repeat a lecture/discussion section that you missed
unless you have a very good reason for not attending that
lecture/discussion section.
I encourage you to study in groups, and to come to my
office in groups. That usually will result in all of you understanding
the material better. You are encouraged to ask questions after you have
thought about the material. You are encouraged to challenge
assumptions. Computer Science and Engineering deals with "nature" that
is man-made (person-made, actually, but that is awkward) and so we the
people may have made it wrong.
If you are part of a study group, you will need to turn in
only one copy of a solution to a problem set for the entire group (thus
a serious incentive to be part of a study group). The front page should
contain the names of all members of the study group who have
contributed to the solution. Each student will receive the same grade
for that problem set.
Although I encourage you to
study together, examinations and programming assignments must be your
own individual work and are subject to the cheating policy (see
below).
The only formal prerequisite is EE 319K,
with a grade of C or higher. It is also assumed that the student has
facility in the programming language C, or is willing and able to pick
up the small differences from C++ that will be needed to complete the
six programming lab assignments.
There is no
required textbook for the course. I will make available as appropriate
copies of notes I will use throughout the course.
I have not yet found a perfect textbook for computer
architecture. The following textbook is often considered the
standard graduate architecture textbook and is good to have a reference.
- John Hennessey and David Patterson. Computer
Architecture: A Quantitative Approach. 2006. ISBN 0123704901.
The following textbooks are also good in their own way.
- Harvey G. Cragon, Computer
Architecture and Implementation, Cambridge University Press,
2000, ISBN 0521651689, 0521657059
Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Computer Organization, 5th
Edition, McGraw Hill, 2001, ISBN 0072320869
-
Andrew Tanenbaum, Structured
Computer Organization, 5th Edition, Prentice Hall, 2005, ISBN
0131485210
-
Class attendance and participation: Students are not required to
attend classes, but past experience has shown that skipping classes will probably hurt your grade. I strongly encourage you to actively
participate in class, and your contribution to the entire class will be taken into account in your final grade.
-
-
Collaboration: Group work is strongly encouraged in studying for exams, asking questions in office hours, and preparing problem sets. If you are part of a study group, you will need to turn in
only one copy of a solution to a problem set for the entire group (thus
a serious incentive to be part of a study group). The front page should
contain the names of all members of the study group who have
contributed to the solution. Each student will receive the same grade
for that problem set.
Although I encourage you to
study together, examinations and programming assignments must be your
own individual work and are subject to the cheating policy (see
below).
-
Late Policy:
No extensions will be given for completing
the programming labs or problem sets, except that each student will be
allowed 4 flexible slip days for the labs. A student may divide his/her
slip days across labs in any way he/she wishes to extend deadlines for
the labs. (The exception: you can not use any slip days on the final
lab, which is due on the last class day.) Slip days will be
tracked at the granularity of a day; if an assignment is 1 minute late,
it is one day late.
-
Problem Sets (10% of final grade):
Problems will be assigned at almost every
lecture. Students will have one week to
complete a problem once it is assigned, and the writeup must be handed in before the lecture on which it is due . Students are encouraged to
form study groups of two (no more than two) to work
homework problems. Only one copy of a problem per group should be
turned in.
-
Labs (30% of final grade, 5% per lab):
Most students say the labs are the MOST important component to learning the
material, so please treat them as such. There are 6 labs and later labs tend to depend on earlier labs. We will not hand out lab solutions, so BE SURE TO DO THEM AND DO THEM RIGHT. Otherwise, you'll wind up having to do them
anyways. Labs due dates are available here, and will be re-iterated as necessary.
-
Midterms (30% of final grade): The class will tentatively have
two in-class midterms, the first tentatively on October 17 and the second tentatively on November 19. Each midterm will be contribute 14% to your final grade, with an additional 1% given for a midterm problem that you will write and submit separately. All exams are
open book where “book” means any sort of paper-based product (book,
magazine,
handouts, old problem sets, old tests, etc.), but nothing else
including electronic anything (laptop,
cell phone, calculator, etc.) or biological anything (your roommate,
husband, your hamster, another professor, etc.) is
allowed. Exams are designed to test your ability to apply
what you have learned and not your memory (though a good memory almost
never hurts).
-
Final Exam (25% of final grade):
The final exam will be held at the time alloted by the registrar (which has not yet been announced). The final exam will contribute 23% to your final grade, with an additional 2% given for an exam problem that you will write and submit separately. The exam will be
open book where “book” means any sort of paper-based product (book,
magazine,
handouts, old problem sets, old tests, etc.), but nothing else
including electronic anything (laptop,
cell phone, calculator, etc.) or biological anything (your roommate,
husband, your hamster, another professor, etc.) is
allowed. The exam is designed to test your ability to apply
what you have learned and not your memory (though a good memory almost
never hurts).
-
Subjective Evaluation (5% of final grade):
The instructors will subjectively evaluate each
student based largely on class participation and
individual/group meetings.
-
Feedback: Candid and frank (anonymous) feedback and criticism
regarding the choice of topics, pace, workload, etc ...,
will be greatly appreciated by the instructors and will
positively impact the class.
-
Policy summary:
Component |
% of final grade |
Problem Sets |
10% |
Labs |
30% (5% for each of 6 labs) |
Midterms |
30% (14% + 1% per midterm) |
Final Exam |
23% + 2% |
Subjective Evaluation |
5% |
Feedback |
0% |
Cheating and Academic Dishonesty Policy
|
We strongly encourage you to form a study
group, and to work together on the problem sets and study together to
prepare for each exam. However collaboration is not permitted on the
programming lab assignments (unless otherwise stated), the two
mid-terms and final exam. The programs you write and the examinations
you take MUST be your own work. Providing information to another
student where prohibited, or obtaining information from another student
where prohibited is considered cheating. This includes the exchange of
any information during an examination and any code that is part of a
solution to a programming assignment. Allowing another student to read
something on your paper during an examination is considered cheating.
In fact, leaving information unprotected so it can be compromised by
another student is considered cheating. This includes sheets of paper
lying about in your home, and computer files that are not properly
protected. If you cheat, you violate the soul of the University, which
we take very seriously, and will deal with in the harshest possible
way. If you have any question as to what is permitted and what is not,
ask the instructor or a TA FIRST. If you don't ask first, and you do
something that is not allowed, the response "I thought it was okay" is
not an acceptable justification. I am embarrassed to have to bother all
of you with this paragraph, since for most of you, this paragraph is
totally unnecessary.
Plagiarism or any form of academic dishonesty (cheating includes, but
is not limited to, copying another student's work, bringing notes
into a test and copying material directly from a book, article or
web site without including appropriate references, falsifying
data, and doing someone's work) is a violation of University rules and
may result in failing the class or may incur even steeper
penalties. For University policies see:
http://www.utexas.edu/opa/news/04newsreleases/nr_200404/nr_honor040429.html.
College of Engineering Drop/Add Policy
|
The Dean must approve adding or dropping courses after the fourth class day of the semester.
Students with Disabilities
|
The University of Texas at Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259, 471-4641 TTY or the College of Engineering Director of Students with Disabilities at 471-4382.
- What is Architecture, Tradeoffs
- Instruction Set Architecture, LC-3b ISA
- Assemblers: Translating Assembly
Language to ISA
- Microarchitecture:
Detailed LC-3b implementation
- Physical memory, unaligned access,
interleaving, SRAM, DRAM
- Virtual memory, page tables, TLB, VAX
model, PowerPC model, contrast with segmentation
- Cache memory
- Interrupts/Exceptions
- I/O
- Performance Improvement. Metrics,
Pipelining.
- Branch prediction
- Out-of-order execution
- Vector processing
- Integer arithmetic, Floating point,
IEEE Standard
- Measurement Methodology
- Intro to Multiprocessing,
Interconnection networks, Amdahl's Law, Consistency models
- Cache coherency
- Alternative Models of Concurrency:
SIMD, MIMD, VLIW, dataflow, etc.
- State-of-the-art Microprocessor
1/14/2008 | Lab 1 Issued
(write LC-3b assembler, write an assembler, assemble your program) |
1/16/2008 | |
1/23/2008 | Lab 2 Issued
(Write a program in C that simulates at the
instruction
cycle level the baseline LC-3b ISA. Test your simulator with
the output of the assembler for the application program
written in Programming Lab 1.) |
1/28/2008 | |
1/30/2008 | Lab 1 Due (Jan 29, 11:59PM) |
2/4/2008 | |
2/6/2008 | Lab 2 Due (Feb 5, 11:59PM)
Lab 3 Issued
(Finish the LC-3b) |
2/11/2008 | |
2/13/2008 | |
2/18/2008 | |
2/20/2008 | Lab 3 Due (Feb 19, 11:59PM)
Lab 4 Issued
(Interrupts/Exceptions) |
2/25/2008 | |
2/27/2008 | |
3/3/2008 | Midterm 1 |
3/5/2008 | |
3/10/2008 | SPRING BREAK |
3/12/2008 | SPRING BREAK |
3/17/2008 | |
3/19/2008 | |
3/24/2008 | |
3/26/2008 | Lab 4 Due (Mar 25, 11:59pm)
Lab 5 Issued
(Virtual memory) |
3/31/2008 | |
4/2/2008 | |
4/7/2008 | Midterm 2 |
4/9/2008 | |
4/14/2008 | Lab 5 Due (April 15, 11:59PM)
Lab 6 Issued
(Pipelining) |
4/16/2008 | |
4/21/2008 | |
4/23/2008 | |
4/28/2008 | |
4/30/2008 | Lab 6 Due (April 29, 11:59PM) |