CMSC
22200 Computer Architecture
Spring
2018
Course Hours and
Location: Tuesday
and Thursday, 11am-12:20pm:20am, Ry
276
Lab Hours and
Location: Thursday,
CSIL (attend the session you
signed up for)
Session
1: 3:30pm – 4:50pm CSIL3
Session
2: 2:00pm – 3:20pm CSIL4
Session
3: 3:30pm – 4:50pm CSIL4
Instructor:
Fred Chong (chong@cs.uchicago.edu)
Office Hours: Tue
10:00a – 11:00a, Wed 1:30p-2:30p Ry278 (in the annex, go to the back of the
building on the 1st floor before going upstairs)
Teaching Assistants:
Mohammad Reza Jokar
(jokar@uchicago.edu)
Office Hours: Mondays 4:30pm - 5:30pm Eckhart 131
Course Description
Computing
systems have advanced rapidly and transformed every aspect of our lives for the
last few decades, and innovations in computer architecture is a key enabler.
Residing in the middle of the system design layers, computer architecture
interacts with both the software stack (e.g., operating systems and
applications) and hardware technologies (e.g., logic gates, interconnects, and
memories) to enable efficient computing with unprecedented capabilities. In
this course, students will learn the fundamental principles, techniques, and
tradeoffs in designing the hardware/software interface and hardware components
to create a computing system that meets functional, performance, energy, cost,
and other specific goals. Example topics include instruction set architecture
(ISA), pipelining, memory hierarchies, input/output, and multi-core designs. In
addition, we will discuss advanced topics regarding recent research and trends.
This course also includes hands-on labs, where students will enhance their
learning by implementing a modern microprocessor in a C simulator.
Prerequisites
Students are expected to be able to program in C and have basic
computer systems background (e.g., have taken CMSC 15400)
Grading
Labs: 50%
Exam I: 25%
Exam II: 25%
Textbook
Computer Organization and Design: ARM Edition, Patterson and Hennessy
(Required)
Exams
There are two
in-class exams, 4/26 and 5/29.
There are no make-up exams, except for
extenuating situations, e.g., illnesses requiring hospitalization, a death in
the immediate family (siblings, parents, grandparents). Please contact me
immediately if you think you have a legitimate reason to be absent. I will require documentation.
Labs
Each lab, the TA will hold glorified office hours with students on
computers. It is highly recommended that you attend lab, as the TA will give
significant advice on how to implement the labs.
Lab Submission
All lab assignments are posted online at the class website.
You will be working in groups of 2 for all lab assignments, and we
require only one copy of the work to be turned in from each group.
Watch out - they build on each other. Make sure
you start early so you can complete them before the deadline. Otherwise, you
will stay behind for the next assignment.
Late Policy
All lab assignments are due at 11:59pm on the
due date. You may use 2 late days (these are intended to include legitimate
excuses, so donÕt ask for more). Once
you run out of late days, you can turn in lab assignments up to 24 hours late
for a 10% penalty and 24-48 hours late for a 20% penalty. HOWEVER, after
two days past the due date, they will not be accepted (you canÕt combine late
days and the penalty to be more than 2 days late).
General
Information on Lab Assignments, Use of Reference Simulators, etc.
First, the purpose of the lab assignments is to enhance your
understanding of computer architecture concepts. We always try to be as
specific as possible in the write-ups; however, there can still be multiple
valid implementations. You are free to implement the processor simulator based
on your understanding as long as they satisfy the lab requirements.
Furthermore, we are very reasonable when it comes to grading, and if you can
show us that you truly understand course materials, we will not take off points
even if there are a few *small* discrepancies between your implementation and the
write-up.
Second, we provide the reference simulators just to help with
understanding the requirements of the lab and testing your code. However, if
your results do not match ours exactly, it doesn't necessarily mean that you
implementation is incorrect (and, of course, you won't lose points if your
implementation is correct). You should use good judgement when referring to the
results of the reference simulators, and you're always welcome to ask
clarification questions.
Finally, we only guarantee that our reference simulators are
correct for the test cases provided.
Piazza
Important announcements will be made via Piazza. It will also be
used for you to post questions for the course personnel. Do not post code
publicly on Piazza. Check your code into svn or use
private posts instead.
You need to sign up for the class. Follow this link:
piazza.com/uchicago/spring2018/cs222
Note on
academic dishonesty and plagiarism
Cooperative work is an important part of
learning; you are encouraged to study together, discuss the lectures,
laboratory concepts and computer architecture issues.
For lab assignments, you will be working in
groups of 2, and you may discuss anything you want with your partner. If you
get stuck, it's important that you seek out the proper help - always go the TAs
or myself first. Be careful that you DO NOT,
-- copy work (even one
line) from another group's assignment or file.
-- copy work (even one line) from a published source
without credit (and permission from instructor).
-- lend another group your
assignment.
-- look at another groupÕs working code to fix your
problem
-- e-mail or transfer any of your files to another student whoÕs not your lab
partner.
If you have a bug, you may ask a student who
has gotten farther in the lab to
help you find your mistake. You may not look at his/her project if that
student is not your lab partner.
If you violate these rules, you will receive a
grade of F.
Acknowledgements
Prof. Yanjing Li
Prof. Diana Franklin (class materials from CS154 in UCSB)
Prof. James Hoe (class materials from 18447 in CMU)
Prof. Onur Mutlu
(class materials from 18447 in CMU)