Computer Architecture
DM544 / DM548

General Information

This course covers both, the lecture DM544 and DM548. The first part of the course, the computer architecture part, is common to both courses. The 5 ECTS DM544 course ends around mid-term and will be completed with an oral exam. In this time 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.

After this phase, the students of the 10 ECTS course DM548 continue with an introduction to the main aspects of system programming, including an introduction to C. This course will be completed by a written exam at the end of the semester.

If not stated otherwise, all information given here is relevant for both courses!

All about the Exam

DM544 - Oral Exam

Exam Procedure:

The exam will last about 25 minutes. At the beginning, one topic from the list below will be drawn randomly. For each topic the examinee should be prepared to make a short presentation of about 8 minutes. It is allowed to bring one page of hand-written notes (DIN A4 or US-Letter, one-sided) for each of the ten topics. The examinee will have max. 2 minutes to briefly study the notes for the drawn topic before the presentation. The notes may be consulted during the exam if needed but it will negatively influence the evaluation of the examinee's performance. During the presentation, only the blackboard can be used (you cannot use overhead transparencies, for instance).

After the short presentation, additional question to the topic are asked, followed by (less detailed) questions of other topics of the course.

The oral exam will be held on January 23rd 2015 in the room U10. Further information about the order and schedule will follow a few days before the actual exam.

Below is the list of possible topics. Please note, that the chapters and lectures given for each topic are only suggestions and might not cover all relevant points to a topic. It is the responsibility of the examinee to gather and select among all relevant information for each topic from the course material.

Possible topics and suggested readings:
  1. Computer Function and Interconnection (Chapter 2 & 3, Lectures 1 & 5)
    • Bus systems
    • Point-to-point connections
    • Computer Components
    • Performance Evaluation
  2. Memory Hierarchy (Cache and Internal Memory) (Chapter 4 & 5, Lectures 6 & 7)
    • Memory characteristics
    • Cache hierarchy
    • Cache organization
    • Cache characteristics
    • Error correction (Hamming distance, parity bit, Hamming code)
  3. External Memory and I/O (Chapter 6 & 7, Lectures 8 & 9)
    • Disk (optical and magnetic)
    • RAID systems
    • I/O modes (programmed, interrupted, DMA)
    • I/O Channels
  4. Operating System Support (Chapter 8, Lectures 10)
    • Virtual Memory
    • Segmentation
    • Paging
    • Address calculation
  5. Computer Arithmetic (Chapter 9 & 10, Lectures 1 & 2)
    • Number systems (and conversion)
    • Computer arithmetic
    • Number representation
    • Twos-complement
    • Floating point calculations
  6. Digital Logic (Chapter 11, Lecture 3)
    • Boolean algebra
    • Gates
    • Combinatorial and Sequential circuits
    • Sum-of-products and Product-of-sums representation
    • Minimizing boolean terms
  7. Instruction Sets (Chapter 12 & 13, Lectures 3 & 4)
    • Characteristics
    • Overview of the ISA level
    • Data types
    • Instruction formats and types
    • Addressing modes (immediate, direct, register, indirect, indexed, base-indexed, stack)
  8. Processor structure and organization (Chapter 14 & 15, Lectures 11 & 12 & 13)
    • Pipelining
    • Register organization
    • Processor organization
    • Instruction cycle
    • RISC vs. CISC
    • Specialties of RISC machines
  9. Instruction level parallelism and superscalar processors (Chapter 16, Lecture 13)
    • Principle of superscalarity
    • Pipelining and pipeline hazards
    • Branch prediction
    • Out-of-order execution
  10. Parallel processing and multicore computers (Chapter 17 & 18, Lecture 14 & 15)
    • Symmetric multiprocessors
    • Cluster computers
    • NUMA clusters
    • Cache coherence
    • Design and performance issues for multicore computers

DM548 - Written Exam

The written exam will follow in terms of style, difficulty, and length (4h) the exams of the previous years (2006-2009, after that, Computer Architecture had oral exams). You can download them at the end of this post (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.

We will have a test-exam on Tuesday, December 16th instead of a lecture. Please note, that this exam will have a reduced length but still will be a good test-run for you. The answeres and general questions will be answered on the following Friday, December 19th.

Download the test-exam here. Solutions for this exam (including an explanation for the Product-of-sum terms) can be found here.

Download the old exams here.


# Date Content Slides Readings
1 Tue, 02.09.2014 Introduction, Computer Arithmetic Bam! Chapters: 2.1, 2.2, 2.4, 2.6, 9, 10.1, 10.2, 10.3
2 Fri, 05.09.2014 Computer Arithmetic, Floats here Chapters 10.4, 10.5
3 Tue, 09.09.2014 Digital Logic, Assembly here Chapters 11, 12
4 Fri, 12.09.2014 Adressing Modes, Function Calls here Chapter 13
5 Tue, 16.09.2014 Computer Function and Buses here Chapter 3
6 Fri, 19.09.2014 Cache Memory here Chapter 4
7 Tue, 23.09.2014 Cache Memory, Internal Memory here Chapter 4, 5
8 Fri, 26.09.2014 External Memory here Chapter 6
9 Tue, 30.09.2014 I/O here Chapter 7
10 Thu, 02.10.2014 Operating System Support, Virtual Memory here Chapter 8
11 Tue, 07.10.2014 Processor Structure and Function here Chapter 14
12 Fri, 10.10.2014 RISC here Chapter 15
13 Tue, 21.10.2014 RISC part 2 / Superscalar Processors here Chapter 16
14 Fri, 24.10.2014 Parallel Processing here Chapter 17
15 Thu, 28.10.2014 Multicores here Chapter 18
16 Thu, 31.10.2014 The Control Unit here Chapter 19
17 Tue, 04.11.2014 Microprogrammed Control here Chapter 20
18 Fri, 07.11.2014 Microprogrammed Control here Chapter 20
19 Tue, 11.11.2014 Introduction to C here -
20 Fri, 14.11.2014 Variables and Datatypes here -
21 Thu, 18.11.2014 Control Flow & I/O here -
22 Fri, 21.11.2014 Pointers here -
23 Thu, 25.11.2014 Pointers Continued - -
24 Fri, 28.11.2014 Makefiles here -
25 Thu, 02.12.2014 Pointer to Pointers, void and function Pointers here -
26 Fri, 05.12.2014 Libraries here -
27 Tue, 09.12.2014 Advanced Memory Management here -


Assignment 1 - Sorting in Assembler

Download this pdf in order to receive all necessary information for the first assignment.

This assignment is mandatory for both courses, DM544 and DM548. The deadline is October 26th.

You may (but don't have to) use the following code snippets: link

Assignment 1.5 - Sorting in Assembler

This is the harder assignment for students who faild commiting the first assignment. There will be no additional chance when failing this assignment!

Download this pdf in order to receive all necessary information for the new assignment. All changes made to the original assignment are marked in bold red. You may use the same snippets as for assignment 1, but be aware that these snippets are not programmed to deal with negative numbers (Also see the PDF file)

Assignment 2 - String Vector in C (only relevant for the students of DM548)

Download this pdf in order to receive all necessary information for the second assignment.

This assignment is mandatory only for students of DM548. The deadline is December 14th at midnight.

You should use the following header file for your data structure: vector.h

There will be no extended deadline for this assignment! You have to pass this assignment in order to be eligible for the exam!


# Date Questions Download
1 Wed, 03.09.2014 Problems 2.4, 2.10, 10.1, 10.2, 10.5, 10.9, 10.10, 10.12 download
2 Wed, 17.09.2014 Problems Chapter 10: 15, 24, 30, 32, 36, 38, 39, 40; Chapter 11: 1, 8 download
3 Wed, 01.10.2014 Problems Chapter 3: 3, 7, 16; Chapter 4: 1, 10, 18, 23; Chapter 5: 2, 4, 12 download
4 Thu, 22.10.2014 Catch Up with the previous assignments -
5 Wed, 05.11.2014 Problems Chapter 7: 11, 13, 14; Chapter 8: 3, 6, 9, 13, 16 download
6 Wed, 19.11.2014 Problems Chapter 14: 1, 9, 10, 12; Problems Chapter 15: 3, and Review Question 15.1 download
7 Wed, 03.12.2014 Problems 16.3, 16.4, 17.1, 17.4; Review Question 16.4, 16.5 download


# Date Assignment
1 Thu, 11.09.2014 Assignment. You will also need this small assembler snipplet: link.
2 Thu, 25.09.2014 Assignment. You will also need this small assembler snipplet: link.
3 Thu, 09.10.2014 Catch up with the previous Assignments and time if you have questions regarding the big pass/fail assignment (Sorting in Assembler).
4 Thu, 30.10.2014 Assignment. Using SSE instructions.
5 Thu, 13.11.2014 Assignment. Introduction to C.
6 Thu, 27.11.2014 Assignment. Coding an Expression Interpreter.
7 Thu, 11.12.2014 Assignment. Implementing your own malloc().


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, 9th edition, Pearson, 2013.

Furthermore, all lecture slides are relevant for the exams.

Very good and regulary 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

Linux syscalls: 32bit, 64bit.