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.


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.


# 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 --


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!


# 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 -- --


Do not forget to read the Cheat Sheet by Svend!

# Date Topic Assignment Solution
1 Wed, 16.09.2015 Getting used to assembly Assignment & Snippet
2 Wed, 30.09.2015 Command Line Arguments & Input/Output Assignment
2nd Snippet
3 Wed, 21.10.2015 More Assembly Assignment
4 Wed, 28.10.2015 Completing the previous assignments -- --
5 Wed, 04.11.2015 Mandatory Assignment Q&A -- --
6 Wed, 18.11.2015 Introduction to C Assignment
Introduction Slides
7 Wed, 02.12.2015 Pointers and Structs Assignment


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.

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.