[Home]
[Announcements]
[Course desc]
[Prereq]
[Grading]
[Admin info]
[Assignments]
[Slides]
[syllabus].
Course Announcements
- 10/30: Exam#2 will be on Tuesday, 11/6/07.
- 09/27: announced reducing number of programming assignments by 1.
- 09/27: announced Assignment 1 will be accepted as late with -5 if
submitted before midnight 09/27/07. Will be accepted as late with
-10 if submitted before midnight 10/02/07. Will not be accepted after
10/02/07.
- 09/14: announced Assignment 1 deadline is now Tuesday, Sep 25.
- 09/11: found and corrected error in my pipesim routine, where it didn't
do correct floating-point forwarding
- 09/11: found and corrected error in my pipesim routine: failed to handle
(or print out) structural hazards on the FRN stage.
- 09/11: Announced exam #1 covering Chapter 1 & Appendix A will be on
Thursday, September 20.
- 09/06: Interim Due Date for asg 1 is Wednesday, 09/12/07, not
Thursday, 09/12/07.
- 09/04: Assigned and went over
Assignment 1.
- 08/27: The TA for the class is Guo Yifeng
(yguo at cs.utsa.edu
- 08/27: Their will be a recitation class on Tuesday 28 at
12:30-1:20PM in BB 3.04.06. The first quize will cover slides 1-8
(of chapter 1).
- 08/20: First day of classes is Thursday, August 23 (come to class
prepared to take notes).
- 08/20: No recitation for week of Aug 23.
Course Description
In this course you should learn how your computer operates at the
hardware level, and how this information may be utilized in optimization.
This includes how program instructions are executed within the processing
elements, as well as how modern heirarchial memories affect program
execution. Understanding these basic concepts is critical in any
performance-critical programming and design, including Operating Systems,
compilers, and high performance computing.
Topics of interest include (but are not limited to) the following:
- Ch 1: Terminology and trends in Computer Architecture; how to
measure computer performance and predict optimization gains, etc.
- App A: Understanding pipelining. In particular, speedups and
slowdowns from it, how to handle hazards in the pipe, handling interrupts
with varying length instructions, etc.
- Ch 3: Instruction level parallelism via multi-issue, dynamic
scheduling (Tomasulo's Algorithm) , branch prediction, superscalar and
VLIW design and speculation.
- Ch 4: Transformations to enhance ILP: scheduling, loop unrolling
dependence ameliorating techniques, software pipelining.
Further info on superscalar and VLIW designs.
- Ch 5: Modern memory heirarchy and its affect on program execution.
We will also discuss transformations to exploit this heirarchy.
If time allows, we will also cover chapters 2 (ISA design), 6 (multiprocessing)
and 7 (I/O).
Prerequisites
We will be programming in a unix environment, using ANSI C and make.
Textbooks
Required:
Computer Architecture, A Quantitative Approach by Hennessy & Patterson
(third edition).
Recommended (background):
Computer Organization and Design, by Patterson & Hennessy (third edition).
Evaluation Criteria
The rough breakdown should be:
- 55-60% From three major exams.
- 30-40% from various projects.
- 5-10% class participation/quizzes.
For a more complete description, consult the
syllabus.
Administrative Information
Class Hours: Tuesday and Thursday, 11:00PM to 12:15PM.
Location : MB 0.212.
Instructor :
Dr. Whaley.
Office Hours: Tuesday and Thursday 3PM to 4PM, or by appointment.
Course recitation.
There is also a recitation that goes with this course:
Rec Hours : T 12:30-1:20PM.
Location : BB 3.04.06.
Instructor: Guo Yifeng (yguo at cs.utsa.edu
Students with disabilities:
If you have a physical, psychological, medical or learning disability that
may impact on your ability to carry out assigned course work, I would urge
that you contact University Disability Services (DS),
Multidisciplinary Studies Building, Room 2.03.18,
210-458-4157 (Voice), 210-458-4981 (TTY), 210-458-4980 (Fax),
homepage: http://www.utsa.edu/disability/.
Please bring a letter to me from the DS indicating your need for academic
accommodations within the first week of class. The syllabus and other class
materials can be made available in alternative format upon request.
Academic Integrity:
Remember that the goal of programming or written assignments is to enhance your
programming skills and understanding of the topics under discussion.
Thus indulging in academic dishonesty results in poor understanding of the
material as well as being unfair to other students.
In case you have any questions about whether an act of collaboration
may be construed as academic dishonesty, please clarify the issue with the
instructor before you collaborate.
Academic dishonesty can result in a grade of 'F'.
- It is understandable that discussing a problem with other people may
lead to more insight into the issues involved. Thus discussing a problem in
assignments/homeworks in a general way with other people is fine. However,
discussing the solutions to the problem or showing/examining actual
code is NOT acceptable.
- Every student must write his/her own code and homework. Showing your
code or homework to members of other teams, giving it to them, or making it
accessible to them (e.g., by making the files world-readable) is academic
dishonesty.
- You are responsible for ensuring that your code/documentation/results
are adequately protected and not accessible to other teams. Change permissions
of your working directory to 0700 ('chmod 0700 <directory>).
- Consulting code from a textbook, or from the Internet, in order to
understand specific aspects of your assignment is fine. However, copying
entire code or large parts of such code will be considered academic dishonesty.
If you borrow small parts of code from these sources, you must acknowledge
this in your submission and additionally you must clearly understand and be
able to explain how the code works. If you cannot explain your own code
in detail, it will be graded as zero.
[Home]
[Announcements]
[Course desc]
[Prereq]
[Grading]
[Admin info]
[syllabus].