EE460N / EE382N.1 Fall 2017 Descriptor
Tentative, last updated 17-AUG-2017
Class lectures will be held on Tuesdays and Thursdays 2:00pm - 3:30pm in ECJ 1.202.
There are currently 5 TA sessions scheduled. All sessions convey the same information, but seating may be limited with priority given to those registered for a specific one. Please check this page and Canvas for announcements regarding TA sessions.
|Th 3:30 - 5:00pm||WAG 308|
|Th 5:00 - 6:30pm||RLM 7.112|
|F 10:30 - 12:00pm||EER 1.516|
|F 12:00 - 1:30pm||EER 1.516|
|F 3:00 - 4:30pm||EER 1.512|
Instructors Mailing List
We will use Piazza in this class — Piazza enables all students to see questions and answers, which is important for both fairness and efficiency.
Please search Piazza (through Canvas) before posting a new question. Only email us individually if your email is of a personal nature. You should be able to post anonymously to Piazza so that only truly personal stuff will go through email. Remember, there are no stupid questions — just poor explanations.
Office Hours: Tuesday 4:30 to 5:30 PM, Wednesday 10 to 11 AM, and always possible by appointment.
The class only received an allotment of 60 hours of teaching assistant support. This has a few implications:
- The TAs will not be entirely equal with some TAs having a greater share of the TA duties.
- The TAs are likely to be overloaded and therefore will count the hours they spend on class. If they devote more than their allotted times, they may not be able to answer all questions they get or extend their office hours.
- Because of the limited resources, the TAs may be forced to cut off help sessions with certain students if many other students are waiting for help.
Remember to use Piazza and only email when it’s personal.
Office hours: Monday 3–4:30 PM (at EER 0.814F), Tuesday 12:30–2 PM (at ETC 2.102)
Office hours: Wednesday 5–7 PM (at EER 0.814D), Thursday 1–2 PM (at RLM 6.112)
Office hours: Tuesday 3:30–5 PM (at WAG 420), Wednesday 11:30–1 PM (at EER 0.814 Lounge)
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)
- Interactions of hardware and software
- Improving the performance and usability of the processor
- Taking advantage of parallelism
- Measuring and understanding tradeoffs between performance, usability and design complexity
The syllabus contains a list of subjects that will most likely be covered along with dates for all assignments and the exams.
What I Expect
I expect you to learn the material, which will require you to work hard. To assist you in that goal, I will assign problems almost every lecture (due weekly) to help you learn the material and programming assignments (to let you practice the material). To assess how well you have learned the material, I will provide two mid-term exams and a final exam. The exams serve three critical roles: (1) to let me assess how well I am teaching, (2) to let you assess how well you are learning, and (3) to differentiate between those of you who internalized the material better from those of you who didn’t. I hope to cover most of the material one should expect in an introduction to computer architecture and 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. Also, part of your grade will be the instructors’ subjective evaluation of your work. An important part of this evaluation is how much we feel you contributed back to class in terms of asking good questions, pointing out mistakes or concepts that were poorly explained, and participating in Piazza discussions.
The class is meant to be challenging. It will take you time to do the assignments, labs, and study for exams. This is an advanced elective so I also expect you to be able to think for yourselves and some aspects (especially exam questions and some labs) should be intellectually challenging rather than “just follow the instructions”. I expect you to try hard and ask me or the TAs questions after you have thought things through.
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 (with the exception of Lab 1 and Lab 2 that can be done in pairs) must be your own individual work and are subject to the cheating policy (see below). This also applies to all test cases you need to create to test your design.
The only formal prerequisites are EE 319K and EE312, with a grade of C or higher. It is also assumed that the you actually can program in 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. Graduate students (those registered to EE382N.1) may be expected to be able to understand and program C++ as well.
There is no required textbook for the course. I will make available as appropriate copies of slides/notes that I will use throughout the course (though I plan to mostly use the blackboard during lecture). In addition, Prof. Derek Chiou has made available a collection of notes taken when he taught the course in the past, which will closely reflect the material covered this semester (although organized based on two lectures per week). Note that these are just notes and not an official text. Please let us know if anything in these notes seems wrong or is not clear, or if you have suggestions for improvement.
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. If you feel like you must buy a book, I recommend you buy this one.
- John Hennessey and David Patterson, Computer Architecture: A Quantitative Approach.
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
I will occasionally assign research papers for reading. Most will be optional reading, but some may be required. More will be required reading for those registered to EE382N.1
Note that while the class itself includes both graduate and undergraduate students, my expectations of graduate students are slightly different.
- 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 (other than Lab 1 and Lab 2, which can be done in pairs) must be your own individual work and are subject to the cheating policy (see below).
- Late Policy: No extensions will be given for completing problem sets late. Programming labs will have slack days in lieu of special requests. Each student will be allowed 5 flexible slip (slack) 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 by up to 2 days max per lab. Slip days will be tracked at the granularity of a day; if a lab assignment is 1 minute late, it is one day late. We will automatically track late submissions. Slack days cannot be used for Labs 0 - 1 and the grad lab.
- Problem Sets (10% of final grade): Problems will be assigned at almost every lecture. Students will have roughly one week to complete a problem once it is assigned. The writeup will be due each Friday the week following its assignment. In other words, the problems from two or three lectures will be handed in together. Students are encouraged to form study groups of two or three (no more than four) to work on homework problems. Only one copy of a problem per group should be turned in. Note that because of limited TA resources assigned this semester we will likely only grade in detail a subset of the problems assigned every week (we will grade the same subset, possibly just 1, randomly-chosen problems from every homework handed in). Before assigning final grades, the worse homework for each student will be dropped. This drop policy should cover any and all requests for late submissions so we will not be accepting late submissions.
- Programming 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 regular programming 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. Lab regrading: for only Lab 3 and Lab 4, we will allow regrading. In the lab instructions we will describe how this will be done and the deadlines involved. Briefly, after submitting Lab 3, you will get a chance to fix all your mistakes and apply for regrading (you’ll need to fix your mistakes because Lab 4 relies on a correct Lab 3); your final Lab 3 grade will be 60% of your initial submission grade and 40% of your resubmission grade (and won’t be lower than your initial submission). Same for Lab 4 because Lab 5 depends on it.
- Midterms (28% of final grade): The class will tentatively have two in-class midterms. Each midterm will contribute 14% to your final grade. 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 (24% of final grade): The final exam will be held at the time alloted by the registrar, tentatively December 15, 9am-12pm. The final exam will contribute 24% to your final grade. 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 (8% of final grade): The instructors will subjectively evaluate each student based largely on interest shown in the material and contributions made to the class. Contributions include asking good questions, correcting mistakes or suggesting concrete improvements to lecture, slides, or the class notes], …
- Graduate Lab (half of subjective evaluation): To differentiate between the undergraduate and graduate versions of the course, those registered for EE382N.1 will most likely be required to submit one additional lab. This lab will be designed as an introduction to typical research in computer architecture. All students are welcome to do the lab, but we will only grade the labs of those registered for EE382N.1.
- Feedback (0% of final grade): 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. To encourage it, I will publish many surveys.
- Extracurricular Research: I do not provide opportunities for extra credit in the class, but I strongly encourage interested students to pursue further ideas and research related to class. If you are such a student, please see me about working together towards these goals.
- Policy summary:
|Component||% of final grade|
|Labs||30% (5% per lab)|
|Midterms||28% (14% per midterm)|
Plagiarism or any form of academic dishonesty (cheating includes, but is not limited to, copying another student’s work, bringing disallowed items into a test, copying material directly from a book, article or web site without including appropriate references, falsifying data, and doing someone else’s work for them) is a violation of University rules and may result in failing the class or may incur even steeper penalties. If it’s not clear, this includes asking someone who previously took this course or a similar one, for their work, code, etc., or using their work without their knowledge. For University policies and our honor code see: http://deanofstudents.utexas.edu/sjs/spot_honorcode.php. We take the Honor’s Code seriously and expect you to as well. We think it’s your responsibility to ensure that you and your fellow students strictly adhere to this code and will do what we can to help (including checking for cheating when appropriate).
We take this very seriously and you should too. It saddens me to say this, but I encounter some cheating almost every semester and it’s bad for everyone. It sets a bad atmosphere and attitude between students, it is painful for me to deal with, and it often leads to the cheating students failing the class (you are far better off not submitting an assignment or lab than attempting to cheat). If you are not sure whether something constitutes cheating or not, ask me! Asking after someone catches you is not OK. For example, searching the web for solutions to the labs, copying solutions blindly, or engaging someone to perform work for you are all clearly cheating. Yes, material and solutions can easily be found, but that doesn’t mean that using them isn’t cheating — it most definitely is.
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 (http://ddce.utexas.edu/disability/).
Please contact the instructor with any issues related to religious holidays. We will be quite accommodating.
(topics that will most likely be covered at some point in the semester)
- 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
- Performance Improvement. Metrics, Pipelining.
- Branch prediction
- Out-of-order execution
- Vector processing
- 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
Tentative schedule (likely to change at this point)