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:
- Computer Function and Interconnection (Chapter 2 & 3, Lectures 1 & 5)
- Bus systems
- Point-to-point connections
- Computer Components
- Performance Evaluation
- 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)
- 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
- Operating System Support (Chapter 8, Lectures 10)
- Virtual Memory
- Segmentation
- Paging
- Address calculation
- Computer Arithmetic (Chapter 9 & 10, Lectures 1 & 2)
- Number systems (and conversion)
- Computer arithmetic
- Number representation
- Twos-complement
- Floating point calculations
- Digital Logic (Chapter 11, Lecture 3)
- Boolean algebra
- Gates
- Combinatorial and Sequential circuits
- Sum-of-products and Product-of-sums representation
- Minimizing boolean terms
- 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)
- 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
- Instruction level parallelism and superscalar processors (Chapter 16, Lecture 13)
- Principle of superscalarity
- Pipelining and pipeline hazards
- Branch prediction
- Out-of-order execution
- 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.
Lectures
# |
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 |
- |
Assignments
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!
Exercises
# |
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 |
Lab
# |
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(). |
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, 9th edition, Pearson, 2013.
Furthermore, all lecture slides are relevant for the exams.
Useful Links
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.