Fall 2015 / DM548
Computer Architecture
General Information
Important Information for DM544 students
In case you are enrolled in a study program requiring you to pass the 5 ECTS version of computer architecture (DM544), please get in touch with me as soon as possible. Be aware that you have to complete the assembly assignment by November 8th in order to be eligible for the oral exam.
Course introduction
The course introduces the student to the architecture of general purpose computers, from the logic level over the microprogramming level to the conventional ISA level; also major components in the storage hierarchy, bus architectures and the organization of pipelined CPU's are presented. In addition, the main aspects of a system programming language are introduced.
Topics Covered
The student will obtain insight into the organization of modern computers and their CPU's, in order to be able to compare and evaluate their performance on a level independent of the specific technology. More specifically the course provide the following competences:
- to understand basic logic diagrams, and to express the functionality of basic CPU components in terms of such diagrams.
- to express the functionality of an ISA level instruction by interpretation on an underlying (micro)architecture.
- to be able to interpret ordinary binary integer and floating point number representations, and to be able to convert between these.
- to know and be able to explain the properties and limitations of the different storage components, including their addressing, and to evaluate the performance of a multi-level storage hierarchy.
- to be able to explain and discuss the exploitation of parallelism in the form of pipelining, their limitations, and the distribution of tasks on multiple functional units.
- to be able to explain and discuss the internal organization and internal communication paths at a high level, including communication with external units and interrupts from these.
- to express the functionality of a given algorithm as an assembler program, including to bring such a program to execution on a specific machine.
- to express the functionality of a given algorithm as a system program, including to bring such a program to execution on a specific machine.
Requirements
During the course the students have to complete two mandatory projects. One project will cover programming in assembly language, the other will cover system programming. Both projects will be evaluated with pass/fail and need to be passed in order to be eligible for the written exam at the end of the semester. Please go to the according section of the website for examples of old exams. The lab courses are mainly targeted towards the mandatory projects, the exercises mostly prepare for the written exam.
Course Evaluation
According to SDU regulations, the course was evaluated. Please find the evaluation results here and the according action plan here.
All about the Exam
The written exam will follow in terms of style, difficulty, and length (4h) the exams of the previous years. Below, you will find a link to download examples of previous years (unfortunately in Danish language only). This years exam will be in English. Also note, that the old exams miss the systems programming part of this years lecture. Furthermore, the old exams used a different assembly language, so there might be parts in them which are no longer relevant for you.
Information about the exact time and location will follow in due course.
Download very old exams here.
Last year's exam and solution.
Lectures
# |
Date |
Content |
Slides |
Readings |
1 |
Tue, 01.09.2015 |
Introduction |
here |
Chapter 2 |
2 |
Thu, 03.09.2015 |
Integer & Floating Point Computer Arithmetic |
here |
Chapter 9 & 10 |
3 |
Tue, 08.09.2015 |
Introduction to Assembly |
here |
Chapters 12 & 13
Useful Links
Cheat Sheet by Svend
|
4 |
Tue, 15.09.2015 |
Digital Logic |
here |
Chapter 11 |
5 |
Thu, 17.09.2015 |
-- |
-- |
-- |
6 |
Tue, 22.09.2015 |
Finishing Digital Logic |
|
see above |
7 |
Tue, 29.09.2015 |
Top Level View of a Computer |
here |
Chapter 3 |
8 |
Thu, 01.10.2015 |
Caches |
here |
Chapter 4 |
9 |
Tue, 06.10.2015 |
Internal & External Memory |
here |
Chapter 5 & 6 |
10 |
Tue, 20.10.2015 |
I/O |
here |
Chapter 7 |
11 |
Thu, 22.10.2015 |
Operating System Support |
here |
Chapter 8 |
12 |
Tue, 27.10.2015 |
CPU Structure and Simple Pipelining |
here |
Chapter 14 |
13 |
Tue, 03.11.2015
Thu, 29.10.2015 |
RISC Computers |
here |
Chapter 15 |
14 |
Thu, 05.11.2015 |
-- |
-- |
-- |
15 |
Tue, 10.11.2015
Thu, 12.11.2015 |
Super Scalar & Parallel Processing & Multi-core |
here |
Chapteres 16, 17, 18 |
16 |
Tue, 17.11.2015 |
Control Unit |
here |
Chapter 19 & 20 |
17 |
Thu, 19.11.2015 |
Introduction to C |
here |
-- |
18 |
Tue, 24.11.2015 |
Control Flow and I/O |
here |
-- |
19 |
Tue, 01.12.2015 |
Pointers |
here (updated, 30.11.2015) |
-- |
20 |
Thu, 03.12.2015 |
Makefiles & Libraries |
here |
-- |
21 |
Tue, 08.12.2015 |
Memory Management |
here |
-- |
Assignments
Assignment 1 - String Search in Assembler
Download this pdf in order to receive all necessary information for the first assignment.
The deadline is Sunday, November 8th.
In case you have any questions or doubts, do not hesitate to ask us. Use the lab snippets and the cheat sheet to recycle helpful snippets (e.g., reading files)!
Malloc Code-snippet: here.
Assignment 2 - String Vector in C
Download this pdf in order to receive all necessary information for the second assignment.
The deadline is Sunday, December 13th at midnight.
You should use the following header file for your data structure: vector.h (updated ... some clarifications in the comments)
There will be no extended deadline for this assignment! You have to pass this assignment in order to be eligible for the exam!
Exercises
# |
Date |
Topic |
Questions |
Solution |
1 |
Thu, 10.09.2015 |
Integer Arithmetic & Benchmarking |
here |
|
2 |
Thu, 24.09.2015 |
Floating Point Calculations & Boolean Algebra |
here |
|
3 |
Thu, 08.10.2015 |
Buses & Caches |
here |
|
4 |
Thu, 29.10.2015 |
Continuation of last exercises |
here |
|
5 |
Thu, 12.11.2015 |
Virtual Memory |
here |
|
6 |
Thu, 26.11.2015 |
Pipelining |
here
corrected version |
|
7 |
Thu, 10.12.2015 |
Q&A session |
-- |
-- |
Lab
Do not forget to read the Cheat Sheet by Svend!
Materials
Due to the responses of the last year, this year's course will use a different textbook:
- William Stallings: Computer Organization and Architecture - Designing for Performance, 8th, 9th or 10th edition, Pearson, 2013.
- Assembler Cheat Sheet by Svend!
Furthermore, all lecture slides are relevant for the exams.
Useful Links
Very good and regularly updated C manual: link
Differences between Intel and ATT syntax: link
GNU Assembler Manual: link
x86 Assembly Wiki Book: link
x86 Opcode and Instruction Reference: link
x86_64 Cheat sheet:
link
Linux syscalls: 32bit, 64bit.