Skip to main content

CMPT 750/450: Computer Architecture


Fall 2022

Outline

Announcements

Date Post Link
04-Sep-2022 Course Webpage is Up link
05-Sep-2022 Lab0 (not graded, but expected completion Sep 08) link
09-Sep-2022 Quiz 1: Due Sep 12 link
09-Sep-2022 gem5 tutorial (not graded, expected completion Sep 15) link
09-Sep-2022 Complete slurm tutorial (not graded, expected completion Sep 15) link
12-Sep 2022 Assignment 1 (due Sep 26 at 11:59 PM) link
28-Sep 2022 Assignment 2 (due Oct 17 at 11:59 PM) link
17-Oct 2022 Assignment 3 (due Nov 02 at 11:59 PM) link
17-Oct 2022 Project Information link
14-Nov 2022 Assignment 4 (due Nov 28 at 11:59 PM link

Piazza Groups for Discussion

Please read email policy on policy page. Any course-related questions should be posted to the groups only; no personal email. Ensure you tag the messages properly.

This course will use canvas for online quizzes, for turning in assignments and project reports, and to view your grades.

Canvas Course Page

Laptop/Computer Requirements

  • A computer. with a webcam, required to take a verification photo during quizzes (and optionally also for office hours, etc). If you don’t have a webcam but do have a phone, I’ll point out EpocCam.
  • that is powerful enough to run a VM: at least 8 GB memory, 20 GB disk, reasonably decent processor (not too old, not a Celeron or macbook air).
  • a stable internet connection.
  • participation during the lecture time required for the quizzes.

Delivery Plan

This is mainly an in-person class. Lectures are in AQ3150 and AQ3149 on Mondays and Wednesdays. We encourage all students to attend the class in person and participate in the classroom discussions. Class participation will count towards your grade.

We undestand that some students may miss class because of reasons outside their control. If you are sick with Covid-19 or any other contagious illness, we ask you not to attend lectures in person. We requested SFU IT to record lectures from the classroom. Students who miss class can ask for a link to to lecture recordings, which will be provided at the instructors’ discretion.

  • Homeworks/Assignments Submissions - Github. Refer lab0 for steps.
  • Exams - There are no midterm or final exams in this course. Instead, we will have four exams (one every three weeks roughly) to assess students’ learning. Exams will be held online on canvas. However, students should answer exams synchronously during the Wednesday lecture time slot. More details will be provided as we get closer to Exam 1.

Time and Organization

  • **TA OH: TBD
  • Wednesdays 12:30 — 1:20PM Regular lecture in AQ 3149 except on Exam days (roughly every three weeks)
  • Mondays 12:30PM—2:20PM: AQ 3150 will be live lecture day.

Grading

  • 4 programming assignments. (40%)
  • Exams/Quizzes (35%)
  • Project (25%)

Asking Questions, Getting Assistance, Giving Feedback

  • It is very important to us that you succeed in CMPT 750/450! Outside of lectures and sections, there are different ways to ask questions or discuss course issues:
  • Go to the labs and ask questions of the TA.
  • Make a piazza post Piazza about course content on the groups, where they benefit the whole class. If other students can answer your question, you may receive a response more quickly than you would by emailing the course staff.
  • This is the best way of asking questions about homework, labs, and other class-related topics. Before posting, please search through the questions that have already been posted in case someone has already asked the same question.
  • Send an email to the course staff. The instructors will try to address the issue and share it with others only as appropriate, but will not have a way to reply to you without addressing the whole class.

What is the class about ?

Principles of the architecture of computing systems. Topics include: superscalar processor micro- architecture, speculative execution, cache and memory hierarchy, multiprocessors, cache coherence, memory consistency, implications of technology on architecture, parallel architectures (multi-threading, GPUs, vector processors).

Basic Concepts of superscalar processor microarchitectures: structural/data/control dependences, register renaming, out-of-order issue/execution, branch prediction, precise interrupts, issue logic, memory ordering

  • Cache hierarchy: memory-level parallelism, cache management (prefetching, replacement, insertion policies, dead block prediction)
  • Multiprocessor basics: parallel programs, shared-memory and distributed memory multiprocessors, cache coherence protocols (snooping and directory protocols), memory consistency models
  • Main memory architecture: DRAM basics, memory controllers
  • Impact of technology on architecture: Memory and logic power, active and idle power.
  • Multi-threading: Simultaneous multi-threading, speculative multi-threading, multi-core processors, runahead execution.
  • Other architectures: Vector architectures, Single-Instruction Multiple-Data architectures, Dataflow architectures, Graphics Processing Units, Very-Large Instruction Word architectures

This course is a hands-on, programming-heavy course. Expect to get down and get your hands dirty with concurrent C programming and hardware design. We will discuss the fundamental design and engineering trade-offs in computer architecture at every level.

Instructor Objectives

This course teaches the principles of the architecture of computing systems. Topics include: superscalar processor micro-architecture, speculative execution, cache and memory hierarchy, multiprocessors, cache coherence, memory consistency, implications of technology on architecture, parallel architectures (multi-threading, GPUs, vector processors).

Prereq

Solid programming skills (C/C++). Solid background at Unix/Linux. If unsure whether you have the pre-requisites, talk to the instructor! Programming exercises will require the student to implement programs parts. Strong knowledge of C/C++ and the UNIX environment is assumed.

For homeworks and programming assignments, students are encouraged to consult each other, the TA, the instructor, or anyone else for that matter. **However, the assistance offered or accepted should not go beyond a discussion of the problem. You can use the following guideline: When it comes time for you to write your program or your homework paper, do not use any written material from the discussion.

If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course!). For team projects, you should make sure to identify division of labor in your README. While projects will generally be graded as a team rather than separately for each individual, corrective action could be taken.

Prereq Linux knowledge

Linux knowledge

We assume the following strong linux environmental experience; typically obtained through CMPT 127 or related course at SFU. If you do not have this experience; please head to the tutorials page and watch the videos we recommend. All assignments and lab in this course are administered through the linux environment.

Staff

Instructor

Alaa Alameldeen
Email: alaa
Office hrs
Instructor Webpage
Food: Peaches, pears
Cafe:
Music: Cairokee
Language: C++, Python
Arrvindh Shriraman
Email: ashriram
Office hrs
Instructor Webpage
Food: Pizza
Cafe: Batard (Fraser and 24th)
Music: Timecop
Language: C++, Python, Chisel

TAs

Email: tianhaot
Email: ygk1
Email: aha149

Disclaimers about this web page

  • All course information on this web page is tentative and could be in error. It can also change at any time. Confirm crucial dates or information with me in person during class. Double check with SFU calendar or schedule information for official class times and final exams time and location.
  • Students are expected to attend all classes: announcements about assigned readings, homeworks and exams will be made available at the start of each class. Such announcements may not be made on this web page, so don’t rely on information here instead of attending class.