Computer Architecture (Spring 2019) | SNU Systems Software & Architecture Laboratory

News

   The final exam results are posted in the eTL system. You can examine your exam papers by visiting the TA at #301-517. Any claims should be made by June 20. Have a good vacation!

(Posted Jun 17, 2019)

   The grading script for Project #4 is now running. Please use the QnA board if you have any questions.

(Posted Jun 3, 2019)

   The final exam will be held from 9:30am to 10:45am on June 13. The scope is Chap. 1, 2.1-2.4, 3.1-3.10, 4, 5.7, 6, 9.1-9.7 in the textbook and those materials covered in lecture slides and project assignments. This will be a closed-book exam.

(Posted Jun 1, 2019)

Schedule

The following schedule is tentative and subject to change without notice.

Day Topic Reading
3/5 Course Overview Chap. 1
3/7 Integers Chap. 2.1-2.3
3/12 Floating Points Chap. 2.4
3/14
3/19 Machine-level Representation of Programs Chap. 3.1-3.3
3/21
3/26 Assembly I: Basic Operations Chap. 3.4-3.5
3/28
4/2 Assembly II: Control Flow Chap. 3.6
4/4
4/9 Assembly III: Procedures Chap. 3.7-3.10
4/11
4/16
4/18 Y86-64 ISA Chap. 4.1
4/23 Logic Design Chap. 4.2
4/25 Sequential Y86-64 Implementation Chap. 4.3
4/30 Midterm Exam
5/2
5/7 Pipelining Chap. 4.4
5/9 Pipelined Y86-64 Implementation Chap. 4.5
5/14
5/16 CPU Performance Chap. 5.7
5/21 Canceled
5/23 Canceled
5/28 The Memory Hierarchy Chap. 6.1-6.3
5/30 Cache Memories Chap. 6.4-6.6
5/31 Supplementary Class I-A (6:30pm ~ 9:00pm @ #301-551)
6/3 Supplementary Class I-B (6:30pm ~ 9:00pm @ #301-551)
6/4 Virtual Memory Chap. 9
6/6 National holiday
6/7 Supplementary Class II-A (6:30pm ~ 9:00pm @ #301-551)
6/10 Supplementary Class II-B (6:30pm ~ 9:00pm @ #301-551)
6/11 Exceptions and Interrupts Chap. 8.1
6/13 Final Exam

Credit: Most of slides for this lecture are based on materials provided by the textbook publisher.

Projects

For project submission and automatic grading, we are running a dedicated server at http://sys.snu.ac.kr. If you want to access the sys server outside of the SNU campus, please send a mail to the instructor.

Project #4: Optimzing Program for a Pipelined Y86-64 Processor

In this project, you will learn how to optimize the performance of a program on a pipelined Y86-64 processor. Our target is the pipelined Y86-64 processor implementation called PIPE-Stall that does not support data forwarding. You need to optimize the bmp_diag() function written in Project #3 so that you can get the most out of the PIPE-Stall processor.

  • Project specification and skeleton code available here
  • Due date: 11:59PM, June 16.

Project #3: Drawing diagonal lines in an image

In this project, you will implement a basic image processing program using the x86-64 assembly language. An image file in the BMP format will be given as an input to your program. This assignment aims at introducing various primitive instructions provided by the x86-64 assembly language. In addition, you will learn the basic structure of the BMP image file.

  • Project specification and skeleton code available here
  • Due date: 11:59PM, May 19.

Project #2: TinyFP (8-bit floating point) Representation

The goal of this project is to get familiar with the floating-point representation by implementing a simplified 8-bit floating-point representation.

  • Project specification and skeleton code available here
  • Due date: 11:59PM, April 14.

Project #1: Converting Fixed-Point to Floating-Point

The purpose of this project is to understand the fixed-point representation. Another goal is to make your Linux development environment ready and to get familiar with our sys server for project submission.

  • Project specification and skeleton code available here
  • Due date: 11:59PM, March 31.

Course Information

When 9:30 - 10:45 (Tuesday / Thursday)
Where Lecture room #301-203, Engineering Building I
Instructor Jin-Soo Kim
Professor, Dept. of Computer Science and Engineering, SNU
Language English
Course Description This course introduces the main components of a modern computer system including the instruction set, the processor, and the memory hierarchy. We cover techniques such as pipelining, caching, and virtual memory. In addition, this course gives a historical perspective on the evolution of computer systems and an overview of performance evaluation methodologies.
Textbook Randal E. Bryant and David R. O’Hallaron, Computer Systems: A Programmer’s Perspective, 3rd Edition, Pearson Education Limited, 2016.
Reference David A. Patterson and John L. Hennessy, Computer Organization and Design: RISC-V Edition, First Edition, Morgan Kaufmann, 2017.
Prerequisites 4190.103A Programming Practice
M1522.000700 Logic Design
Basic knowledge of C programming on Linux
Grading Exams: 60% (Midterm 25%, Final 35%)
Projects: 40% (4 ~ 5 project assignments planned)
* Grading policy is subject to change
Teaching Assistant Jaehoon Shim
(x7296, Room #301-517)