Skip to main content

CMPT 750/450: Computer Architecture


Fall 2024

Outline

Announcements

Date Post Link
02-Sep-2024 Course Webpage is Up link
02-Sep-2024 Lab0 (not graded, but expected completion Sep 9) link
06-Sep-2024 Quiz 1 (available at 2 PM, due Mon Sep 9 at 11:59 PM) link
06-Sep-2024 gem5 tutorial (not graded, expected completion Sep 14) link
09-Sep-2024 Complete slurm tutorial (not graded, expected completion Sep 14) link
09-Sep 2024 Assignment 1 (due Sep 27 at 11:59 PM) link
25-Sep 2024 Assignment 2 (due Oct 15 at 11:59 PM) link
14-Oct 2024 Assignment 3 (due Oct 28 at 11:59 PM) link
23-Oct 2024 Project Information link
27-Oct 2024 Assignment 4 (due Nov 13 at 11:59 PM) link
28-Oct 2024 Assignment 5 (due Dec 04 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 for exams (and optionally also for office hours, etc). Computer should be 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.

Delivery Plan

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

We undestand that some students may miss class because of reasons outside their control. If you are sick with Covid 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 Office Hours:
    • Mahmoud: A1 OHs (Sep 18th 2-4 PM, Sep 26th 8:30-10:30 AM) - Location & Zoom links posted on Piazza
  • Tuesdays 1:30PM—2:20PM In-person lecture in AQ 3150 except on Exam days (every three weeks starting Oct 1)
  • Thursdays 12:30PM—2:20PM: In-person lecture in AQ 3150.

Grading

  • 3 programming assignments. (35%)
  • Exams/Quizzes (35%)
  • Project OR (optional for 450 students) two programming assigments (30%)

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:
  • Make a piazza post Piazza about course content, 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 may 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 microarchitecture, speculative execution, cache and memory hierarchy, multiprocessors, cache coherence, memory consistency, implications of technology on architecture, parallel architectures (multi-threading, GPUs, vector processors), domain-specific accelerators.

  • Basic Concepts of superscalar processor microarchitectures: structural/data/control dependences, register renaming, out-of-order issue/execution, branch prediction, precise interrupts, instruction scheduling, 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 (time permitting): Domain-specific accelerators, 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 put in significant effort in C++ programming and analyzing hardware design tradeoffs. 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 microarchitecture, speculative execution, cache and memory hierarchy, multiprocessors, cache coherence, memory consistency, implications of technology on architecture, parallel architectures (multi-threading, GPUs, vector processors), domain-specific accelerators.

Prerequisites

Solid programming skills (C/C++). Solid background in Unix/Linux. If unsure whether you have the prerequisites, talk to the instructor! Programming assignments will require the student to implement programs parts in a simulator. 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 hours
Instructor Webpage
Food: Salmon
Cafe:
Music:
Language: C++, Python
Arrvindh Shriraman
Email: ashriram
Office hours
Instructor Webpage
Food: Pizza
Cafe: Batard (Fraser and 24th)
Music: Timecop
Language: C++, Python, Chisel

TAs

Email: mam47
Email: apa120
Food: Double Egg Kathi Rolls
Cafe: N/A
Music: Imagine Dragons
Language: English

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 your instructor in person during class

  • Students are expected to attend all classes: announcements about assigned readings, homeworks and exams will be made available in class. Such announcements may not be made on this web page, so don’t rely on information here instead of attending class.