CSE502: Computer Architecture (v4)
Tuesdays & Thursdays 3-4:15PM in Staller M0113
Computer Architecture is about planning, designing and, eventually, building computer systems. It is where hardware design meets software. A computer architect’s job is to choose, and sometimes create, hardware components and interconnect them in order to create computers that meet certain functional, performance and cost goals.
This course is an introductory study of the major concepts of modern processor architecture. Through this course, students will gain an understanding of the key concepts of modern processor architecture and its implications on software and hardware design. Specifically, the course will concentrate on the memory hierarchy and out-of-order execution, giving students the necessary tools to understand the micro-architecture of modern processors and to reason about their performance.
The best way to understand why systems are built the way they are is to build such systems. To that end, this is primarily a project-oriented course. The lectures will be dominated by a discussion of micro-architectural components, with the explicit goal of enabling students to create detailed working models of these components.
Memory Hierarchy, Cache Internals, DRAM, Prefetching, Pipelining, Instruction-Level Parallelism, Instruction Fetch, Branch Prediction, Instruction Decode, Out-of-order Execution, Register Renaming, Instruction Scheduling, Vector Processing, GPUs, and Multi-[socket(SMP,DSM)|core(CMP)|thread(SMT,CMT)] machines.
- Warm-up Project 1 – 10
- Warm-up Project 2 – 10
- Course Project – 100
- Final Exam – 40
Only the Course Project (100 points) is required, the rest of the components are optional. Students who attain a total of 100 points or more are guaranteed an A. The rest of the grades are curved (many students get A grades with fewer than 100 points). Individual participation will be judged by the instructor based on active interaction during lecture and on the course mailing list (attendance in lecture or office hours does not constitute participation).
An undergraduate course in computer architecture or system organization is an informal prerequisite for this class, as is proficient knowledge of programming and debugging. Students without prior systems experience or working knowledge of programming will be expected to devote additional time early during the course. Prior coursework in operating systems, compilers, digital logic, and/or hardware design will likely be of help. If you are unsure whether or not you have the necessary background or if you are unable to sign up via the web, please contact the instructor.
The books recommended for this course are Modern Processor Design: Fundamentals of Superscalar Processors by Shen and Lipasti or Computer Architecture: A Quantitative Approach by Hennessy and Patterson. Any edition is fine, as the core concepts that are covered in this course have not changed since the early editions of these books. In addition to the paper books, several Appendices of H&P are available online.
For the homework, warm-up projects, and course project, you may work in groups of any size. If you work alone, you submit your own work. If you work with partners, you submit your assignments jointly. Whether or not you work in a group, you may discuss the assignment details, designs, debugging techniques, or anything else with anyone you like in general terms, but you may not provide, receive, or take code to or from anyone outside of your group. The code that you submit must be your own work and only your own work. Any evidence that source code has been copied, shared, or transmitted in any way between non-partners will be regarded as evidence of academic dishonesty.
You must declare your group via email to the instructor and TA at most 5 days after the assignment handout. You may change group composition for each assignment, as long as each change is announced within 5 days of that assignment’s handout.
Larger group sizes allow you to take on more challenging projects. To balance out the advantages of a larger group compared to individuals working alone, grading strictness depends on the size of the group. In the past, large groups have succeeded in submitting amazing projects. However, beware of accepting deadbeats into your group: they are likely to hurt your grade beyond repair.
Some more-specific guidelines for the assignments:
- You may not look at code from previous years of this course.
- You may not look at code from similar courses at other universities.
Assignment Hand-in Policy
All deadlines are before the start of lecture on the due date. Submissions will be accepted on or after the due date. Assignments submitted after the due date will be assessed a 1-point per day penalty (multiplied by the number of group members) for each late day, in 24-hour increments.
Course Mailing List
Subscription to the course mailing list is mandatory.
This term we will be using Piazza for class discussion. The system is designed to getting you help quickly and efficiently from classmates, TAs, and the instructor. Rather than emailing questions to the teaching staff, you should post your questions on Piazza. If you have any problems or feedback for the developers, email firstname.lastname@example.org.
Find our class page at: https://piazza.com/stonybrook/spring2022/cse502
Critical Incident Management
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.
Until/unless the latest COVID guidance is explicitly amended by SBU, during Spring 2022 "disruptive behavior? will include refusal to wear a mask during classes. For the latest COVID guidance, please refer to: https://www.stonybrook.edu/commcms/strongertogether/latest.php
Student Accessibility Support Center Statement
If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at email@example.com. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to the following website: https://ehs.stonybrook.edu//programs/fire-safety/emergency-evacuation/evacuation-guide-disabilities and search Fire Safety and Evacuation and Disabilities.
Academic Integrity Statement
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html
- Introduction (lecture 1)
- Review (lectures 2, 3)
- Pipelining (lectures 4, 5)
- System Verilog (lectures 6, 7)
- Memory Hierarchy (lectures 8, 9)
- DRAM (lectures 10, 11)
- OoO and Register Rename (lecture 12)
- OoO Speculation (lectures ...)
- OoO Memory (lectures ...)
- OoO Scheduler (lectures ...)
- OoO Commit (lectures ...)
- Branch Prediction (lectures ...)
- Memory Prefetching (lectures ...)
- Multi-X (lectures ...)
- Shared Memory (lectures ...)