CmpSci 635
Modern Computer
Architecture
Course Syllabus
Fall, 2007
Chip Weems Office Hours:
Office: CS-342 Wed: 10:30 - 11:30
Phone: (413)545-3163 and by appointment
weems@cs.umass.edu
Office Hour Appointments: Send me e-mail to make an appointment. Feel free to drop in whenever I'm in the office. If I'm really too busy to see you, I'll ask you to make an appointment for a later time.
Text: Computer Architecture A Quantitative Approach, 4th Ed.
John Hennessy and David Patterson, Morgan Kaufmann 2007
Copies available at Jeffrey Amherst Bookstore, or online.
Lecture Notes: My lecture notes are available on line via my personal web page (http://www.cs.umass.edu/~weems/courses.html). The previous semester's notes are there already, and I will be updating some of them to reflect recent advances. The CSCF has requested that these not be printed on the Edlab printers, due to the excessive load that they place on those already overburdened machines, and the unbudgeted additional paper cost.
Course Goals: The goal of this class is for you to develop an understanding of the factors influencing modern microprocessor and parallel processor designs, and a working knowledge of the specific choices made in some current designs. You will also gain an understanding of some of the acceleration mechanisms employed in modern processors, such as superpipelining, branch prediction, out-of-order superscalar issue, predication, speculation, multithreading, and multi-core. By the end of the course you should be able to read between the lines of a newly-announced architectural specification and describe some of the tradeoffs that influenced the design and the implications for software. You should also be able to make well-reasoned predictions of system performance and limitations for specific application scenarios.
Grading:
Midterm : 10% Wednesday, October 24
Final: 10%
Homework: 20%
Mini-essays 10%
Class participation 30%
Project:: 20%
Exams: Exams are open book and open notes. This is so that you can look up formulas or data from the text or lecture notes -- I don't expect you to memorize this sort of information for exams. But I do expect you to have read the book, attended class, and to know where to look up the information that you need. There won't be time in the exams for you to read through material you're unfamiliar with. The purpose of the exams is for you to demonstrate that you have attained an operational level of understanding of the material. Bring a calculator capable of exponential functions to all exams.
Homework:
Number: At most eight homework assignments will be given out.
Due Dates: They are each due at the end of class one week later unless otherwise indicated.
Late Policy: You must do your work on time because we'll be correcting it in class. If you know that you have a specific time conflict, make arrangements with me in advance for a separate assignment for late submission. The answers will usually be given out in class on the due date, so credit cannot be given for regular homework turned in after that.
Format: All homework and in-class assignments will be done in the style of an engineering notebook, which is a permanent record of a conceptual flow. Some of your assignments will involve drawing large diagrams. Please use an 11x14 field sketch-book with at least 80 pages of high quality, non-lined paper (e.g., 65lb acid-free). DO NOT use 8.5 x 11 or other smaller sizes of notebook. The campus store usually has a good supply of such books, as does Hastings in Amherst, and Michael's in Hadley. Your writing should be done in pen (color choice is up to you). Please do not use pencil, with the exception of colored art pencils, which may be used for illustrations. Do not remove pages from the book. Only paste other work in if I specifically indicate that you should. Neatly cross out mistakes rather than erasing them. This is standard practice for engineering notebooks used in support of patent applications – it is thus a good habit to develop. Think before writing and plan drawings out in advance so that you keep a neat and presentable book that you can be proud of. If you keep your class notes in the same book, I will review them when you submit it for homework.
Collaboration: Do not collaborate on the actual solution of the homework. The purpose of the homework is for each person to gauge their comprehension of material from class, and to practice answering questions similar to those in the exams. It is thus best for you to do the work alone. If someone else asks you for help, take the role of a teacher and help them find the solution on their own; don't just give them the answer. If I feel that people have submitted answers that are merely copies of each other, I will grade the one solution and divide the credit for it equally among the copies. You may think that it helps your team to split up the homework and share answers, but if your team-mates then do poorly on the exams because they lack the experience of solving similar problems in the homework, your team will actually suffer more.
Grading: Homework will be corrected as an exercise in class. I will have teams exchange homework and mark each other's work. Be considerate of your fellow classmates by writing legibly and organizing your answers in a clear manner. You will mark each answer for correctness and provide corrections as necessary. I will collect all of the homework to review and assign grades. An overall numerical grade will be given -- some number of points, with the maximum number indicated. Each of the homework assignments makes up the same percentage of your final grade. You should mark answers that are obviously correct or wrong, and comment on answers that are not clear-cut. I will review your marks and make the final assignment of credit for the answers.
Mini-essays
In most lectures, a mini-essay assignment will be given out, due a week later. The purpose of these is to encourage you to keep up in the reading. The questions should be fairly easy, once youÕve read the associated material and given it some thought. They are intended to be answerable in one or two written paragraphs. Be succinct in your answer. Writing more wonÕt necessarily gain you more credit, and may give the impression that you donÕt have a clear understanding of the reading. Essays must be on either a 5x8 index card (preferred) or a half-sheet of 8.5 x 11 paper (write on one side only). The standard grade is a check, indicating that your answer shows that you read the material and understood it reasonably well. A minus indicates that your answer doesnÕt show a solid understanding of the reading (or of the question), and you should reread the material. On occasion, if an answer is especially insightful, IÕll give a plus grade.
Class Participation
A large component of your learning takes place in class. It is where you have me as a resource. I will lecture to you less than in a typical class. The actual concepts of modern architectures are fairly simple, although their implementation is often complicated by real-world constraints. Thus, I tend to give short lectures to explain these concepts, and pose questions for discussion that are meant to draw out these implications. I will guide discussion, and add information here and there as necessary to carry the discussion forward or to lead it into a digression that adds depth in a different direction. I will frequently have in-class exercises that you will do as teams. Thus, it is very important that you attend class regularly. I will keep attendance throughout the semester. Please let me know in advance of any scheduled absences. If you are going to be out due to illness, please let your team know so that they can properly prepare for class.
It is very important that we focus our attention during the limited time we have together in class. Each of us comes to the classroom filled with thoughts from outside. Thus, each day we will begin promptly with a brief mind-clearing exercise, followed by a focusing exercise. During the mind-clearing exercise we will sit in silence and focus as completely as possible on our breathing, an image, a sound, or a verse. To then focus our attention within the classroom, we will recite some words in unison (these may be a piece of a poem, some nonsense words, song lyrics, a short piece of prose, etc.). The recitation also serves to warm up our voices. Because it is important that we not be distracted while doing these exercises, I will close the door promptly at the start of class. If you arrive late and the door is already closed, wait outside until I reopen it and invite you in. I will record late arrivals on the day's attendance, and chronic lateness will count against your class participation grade (three late arrivals equals one absence).
In addition to attendance, your class participation grade depends on how much you contribute to discussions and the in-class exercises, your record of in-class exercises in your sketch-book, my sense of how well you are prepared for class, and the overall attitude and quality of participation that you display. As a team, it is important for you to draw each other out. I will especially notice teams that are dominated by one or two members, with other members remaining silent. DonÕt let this happen in your team!
Learning Process
It is well documented that we learn in different ways with the two hemispheres of our brains. Our right hemisphere is oriented toward the artistic and creative side of things while our left hemisphere is oriented toward the logical and analytical. Learning is more effective when both hemispheres are engaged and reinforcing one another. Thus, you will find that I sometimes assign unusual homework and class work that is designed to stimulate this kind of holistic learning. I may ask you to write a poem about a technical topic, or to draw an artistic representation of a concept. I won't evaluate these works on their artistic merit, but I will look for evidence of both personal creativity and knowledge being employed. Keep in mind they will also be reviewed by other students in the class.
Thus, you'll need appropriate drawing supplies for some assignments. Keep in mind that the media you use must be appropriate to the paper in your book – so oils, watercolors and pastels are going to be problematic. Colored art pencils or art crayons (such as Stockmar) are likely to be good choices. Inexpensive children's crayons and colored felt pens are difficult to use with subtlety and I strongly recommend against them. You should have at least eight different colors in your set. Red, green, blue, yellow, black, and sometimes purple, are used in some VLSI layout exercises that we will do, and I may assign drawings that use spectrum-ordering as a color code (red, orange, yellow, green, blue, indigo, violet).
Teams
Some time soon after the end of the add-drop period, I will divide the class into four-person teams. Your grade for the semester depends on your performance as a team. Only in very exceptional cases will I assign a different grade to the members of a team. Thus, you are responsible not only for your own grade, but for that of your team partners. Your grade thus depends equally on how well your partners do in the class. If one of your partners is having trouble with some concept, you need to work to ensure that he or she understands it before an exam or homework assignment. This sort of teaching within teams by team members leverages my teaching efforts, ensures that no one falls behind, and helps to deepen understanding of the material for those who are helping others. Here are some ways that you can help to insure that your team does well:
Meet regularly for study sessions. Quiz each other on concepts. Work together on problems from textbooks, or on problems that you make up which are similar to assigned homework. Try doing some of the latter before you tackle the actual homework assignment, so that doing the assignment comes easily. Get together and review homework assignments prior to each exam. Make up mock exams for each other and then grade them.
Do not help each other on the actual homework, but use it as a mini-test between yourselves. Review each other's homework after it is written and discuss how it might be improved. Then make corrections separately. You won't be able to collaborate on exams, and you need this sort of practice to be well-prepared.
Make sure that you have each other's schedules, phone numbers, e-mail addresses, etc. Establish a clear policy of when it is OK to contact one another. Let each other know when you are going to be unavailable with enough advance warning for good contingency planning.
Be realistic with regard to your abilities and time commitments when you divide up project work. Look at the long-term project workload – you can vary the workload over the semester as well as on each portion of the project.
Come to class on time, well prepared. Meet before class to review your preparations; identify, discuss and clarify issues from the reading, and formulate any questions you need to ask in class. Meet briefly after class to debrief each other on what you learned. Each person in a class takes away a different perspective from each lecture and you can potentially quadruple your understanding of what was covered by sharing your perspectives among your team.
Be very explicit in communicating your expectations of each other. Write them down and sign them. Communicate! Communicate! Communicate! Tell each other what you are thinking. Don't keep thoughts inside. Remember to praise each other for jobs well done. If you feel the need to criticize, use statements that start with "I thinkÉ." or "I feelÉ" Avoid criticism that starts with an accusatory "You didÉ," or "You alwaysÉ". Praise others in the presence of the team when possible, and criticize them privately.
Think of yourselves as a team. Develop some team spirit. Name your team or your project. Develop a unique style for your homework and demos that you share in common (e.g., team colors, a logo, a border pattern that appears on each page of your sketch book). Get to know each other as individuals. Do lunch. Discuss hobbies, career goals. If you each take the time to care about the other, then you'll do what has to be done to excel as a team.
Write down a list of your individual goals in the class at one of your first meetings. Identify the goals that you have in common, and acknowledge the goals that differ. Make lists of what each of you is willing to contribute to the team effort, and a list of the limits that you wonÕt exceed. Try to reach a consensus on the groupÕs expectations of each other.
Semester Project:
The project is a team effort to explore some aspect of modern computer architecture in an area of particular interest to the team members. Some reasonable projects include:
¥ designing a new high performance architecture, simulating it, and analyzing its performance
¥ conceiving a new idea for enhancing an existing architecture, and modifying existing simulation tools to analyze the performance effects of these changes
¥ measuring the performance of an application on a sample population of processors in order to develop a detailed analysis of the architectural bottlenecks and then propose enhancements which can be measured using software emulation
¥ using a trace analysis tool to study in detail the execution of some application, and determine the impact of various hardware changes (such as alternate branch prediction schemes, new instructions, different memory hierarchy, etc.) on its performance
¥ developing a benchmark that tests an aspect of performance that is not adequately covered by existing benchmarks, ensuring its portability to various systems, and evaluating the performance of different processors (SPEC actually gives awards for this)
¥ developing a compiler optimization or a new algorithm that takes advantage of some feature of a modern architecture, or of a feature that you add to a simulation of an architecture
¥ exploration of architecture-dependent performance optimizations for a parallel processor, such as profiling execution of a parallel application on the nodes of a cluster and identifying architectural bottlenecks in different nodes that motivate adjustment of the load distribution
¥ experimenting with a nontraditional architecture, such as a network interface processor, router core, extreme low power processor, graphics processor, or vector processor. Then develop a novel application or show how an existing application can benefit from the special features of the architecture. Or explore performance issues with the architecture.
¥ studying security or reliability issues in a processor, identifying architectural issues that may contribute to (or degrade) security or reliability, and proposing ways to enhance security and reliability.
¥ proposing and evaluating architectural features for novel computational models, such as virtual machines, virtual architectures, transactional memory, write-only storage arrays.
I would like to see you propose an idea of your own that interests you -- the purpose of this effort is for you to gain an in-depth appreciation of the impact of architecture on some area of computer science that is important to you. You will need to develop a written project proposal with a schedule of milestones and a division of labor among the team members. Several classes will be devoted to brief project status reports from teams. If you would like to use the video projector for your presentation, please bring a laptop. If your presentation is available on the web, you may use my laptop. Your status reports and final presentation should be a properly prepared research-style talk of 5 minutes or less. These presentations have the purpose of teaching the rest of the class about your work – make it interesting and informative. A final written report will be due at the end of finals week.
Past projects have occasionally resulted in publications, synthesis projects, or useful tools. I am happy to discuss such opportunities with your team. It is best to do so in the early planning stages, so that I can help you design your project to produce results that will have the necessary quality.
Reading Assignments -- Read by
Date Shown
1. Sep. 5 W First class, no reading Historical perspective
2. Sep. 10 M Sect. 1.1 - 1.3, Lecture 1 Performance Trends
3. Sep. 12 W Sect. 1.4 – 1.5, 1.7 Technology Trends
4. Sep. 17 M Sect. 1.6, Lecture 2 VLSI layout and cost models
5. Sep. 19 W Sect. 1.8 - 1.13, Lecture 3 Measuring performance
6. Sep. 24 M Sect. B.1 - B.5, Lecture 4 Instruction set paradigms
7. Sep. 26 W Sect. B.6 – B.12, Lecture 5 Superscalar and ILP
8. Oct. 1 M Sect. A.1 - A.2, Lecture 6 Pipeline hazards, proposal presentations
9. Oct. 3 W Sect. A.3 – A.5 Instruction issue, nonlinear pipes
Oct. 8 M Holiday
10. Oct. 9 Tu Sect. A.6 – A.10, Lecture 7 Pipeline example
11. Oct. 10 W Sect. 2.1 – 2.3 Branch prediction
12. Oct. 15 M Sect. 2.4 – 2.6, Lecture 8 Speculation, Limits of ILP
13. Oct. 17 W Sect. 2.7 – 2.13, 3.1 – 3.4 Multithreading, project status reports (G)
14. Oct. 22 M Sect. 3.5 – 3.7, Lecture 17 VLIW, EPIC (G)
15. Oct. 24 W Midterm Exam Chapters 1 – 3, Appendix A, B
16. Oct. 29 M Sect. C.1 – C.3, Lecture 9 Cache basics, Memory technology
17. Oct. 31 W Sect. 5.1 -5.3, Lecture 10 Accelerating access, specialized caches
18. Nov. 5 M Sect. C.4 – C.8, Lecture 11 Virtual memory and examples
19. Nov. 7 W Sect. 5.4 – 5.9 Virtual machine and OS support
Nov. 12 M Holiday
20. Nov. 14 W Chapter 6 Buses, I/O, and disk, project status reports
21. Nov. 19 M Sect. 4.1 Shared memory multiprocessors
22. Nov. 21 W Lecture 15 Shared memory parallelizing example
Thanksgiving
Break
23. Nov. 26 M Sect. 4.2 – 4.3 Cache coherence schemes
24. Nov. 28 W Sect. 4.4 – 4.9 Distributed shared memory
25. Dec. 3 M Appendix E, Lecture 13 Network topologies
26. Dec. 5 W Appendix H, Lecture 14 Supercomputer scaling, MTTF
27. Dec. 10 M Lecture 16, Appendix F Vector/array processors, GPUs
28. Dec. 12 W No reading Project final reports