Vorlesungen für das aktuelle Semester WS09
Multicore System Architecture
Dozent: Prof. Dr. Wolfgang J. Paul
Assistent: M. Sc. Mikhail Kovalev
Ort:
Zeit:
Teilgebiet: Advanced course
Inhalt:
The same topics that were treated for single processors in our elementary system architecture lectures are treated here for multicore processors, namely processors, compilers and operating system kernels. The following complications arise and are addressed in the lectures.

1) The manufacturers documentation of the instruction sets of high end processors has thousands of pages, and any document with so many page is almost necesserily contradictory and incomplete. We have to boil this down to a manageable size. Where the manuals do not provide all necessary details we have to make educated guesses by reverse engineering parts of the processors hardware. This concerns in particular the memory system.

2) In the full instruction set many parts of the machines hardware are visible to the programmer that one prefers to be hidden. This concerns in particular: caches, the states of the cache coherence protocols used, store buffers and translation look aside buffers (TLB's) of memory units (MMUs). Moreover in general a multicore processor does NOT interleave instructions of the sequential instruction set architecture (ISA); if it is not properly configuerd and used it interleaves a sort of microinstructions. We will show how to configure a multicore processor such that it simultaneously
- runs in translated mode
- interleaves instructions of the ISA workig on a sequentially consistent shared memory.

3) We have to specify the semantics of parallel C. In general compiled C code running on a multicore machine does NOT interleave small steps semantics steps of sequential C threads. We formalize the subset of parallel C known as 'structured parallel C' and show how to compile it such that it runs on the machine model exhibited in 2). In particular we have to consider here volatile variables and their treatment by optimizing compilers.

4) In order to give semantics to assembler portions of C programs we have to specify the behavior of optimizing compilers for multicore machines at least as far as allocation functions are concerned. We give specifications which guarantee that when a C variable X is accessed by assembler code, then its current value (a non trivial concept) is stored at &X (with an optimizing compiler this is in general not the case).

5) We specify hypervisors for multicore machine. Hypervisors are operating system (OS) kernels whose user processes are so called partitions. This are simply virtual multicore processors which are allowed to run in system mode, i.e. in translated mode; thus each partition of a hypervisor can run its own OS. The specification of hypervisors is very CVM like (CVM is the generic OS kernel from the elementary architecture lectures).

6) Hypervisors have to compose the translation of the host machine with the translation of the guest partitions. On many processors there is 'virtualization support' for this in the form of 'nested page tables'; this is hardware supporting the composition of two translations. If we have such hardware and if the guest partitions do not run hypervisors but only operating systems (i.e. they have only a single level of translation), then hypervisor construction is very similar to the elementary case.

7) One can also construct hypervisors on processors without nested page tables; after all the composition of two translations is a translation. This requires to implement page tables for the composed translation in the form of a C data structure called 'shadow page tables' and to redirect the MMUs to walk these data structures (which simultaneously are updated by other cores). This leads to two very exciting subjects:
7.1. the design and correctness proof of a parallel page table algorithm and
7.2. the semantics of the parallel programming model in which this algorithm is programmed. In this model we have
- C portions
- assembly portions
- user visible translations (hypervisors have to inspect guest page tables; this happens to be implemented my memory relocation).
- MMU travesing (and even writing) the shadow page tables ( a C data structure) in parealle with the C threads.

We plan to produce lecture notes. They will be ready between 1 and 2 weeks after the lectures.

Prerequisites: ideally computer architecture and system architecture as read by the author. If you have heard none of these lectures prepare to do some serious additional reading; we will point you to the appropriate texts.
Scheinvergabe: Oral exam. 50% of all exercise points is required for the admission to the exam.

 
Praktika

Hardware Design Praktikum (HaDePrak)
Assistent: Dipl.-Ing. Jan Dörrenbächer
Ort:
Zeit: 1.-19. März 2010
Teilgebiet: Grundstudium
Inhalt:
Es werden grundlegende Kenntnisse in Hardware und über den Aufbau und die Arbeitsweise eines Rechners (DLX) vermittelt.
Ein einfacher Rechner wird mit Hilfe von Xilinx-Design-Tools entworfen und auf einem FPGA-Board implementiert.
Scheinvergabe: Teilnahme an den Übungen, bestandene Abschlussklausur

 
Seminare
Multi-Core Programming
Dozent: Prof. Dr. Wolfgang J. Paul
Assistent: M.Sc. Sabine Schmaltz
Ort: building E1.3, room SR015
Zeit: Tuesdays, 16:00-18:00
Teilgebiet:
Inhalt:
The days of single-threaded programs are over. Even cheap commodity hardware features at least two processors. Eight processors are available for a reasonable price, and even graphics processors start to contribute to main stream computing. In this seminar we are working our way through the book “The Art of Multiprocessor Programming” by M. Herlihy and N. Shavit. The book lays a thorough foundation for multi-core programming, and after successfully mastering the material you will be able to write concurrent programs and to reason why they are correct. Topics for both the more theoretically and the more practically inclined are available.
Scheinvergabe: 90 min presentation + written exposition + attendance at the talks of the other participants

 
 
Ältere Vorlesungen
Computer Architecture - SS09
Computer Architecture 2 - WS08
Informatik 2 / Systemarchitektur - SS08
Computer Architecture - WS07
Informatik 2 / Systemarchitektur - SS07
Computer Architecture - WS06
Computer Architecture 2 - WS06
Informatik 2 / Systemarchitektur - SS06
Computer Architecture 2 - WS05
Verification Lab Course - WS05
Informatik 2 / Systemarchitektur - SS05
Computer Architecture - WS04
Computer Architecture 2 - SS04
Informatik 2 / Systemarchitektur - SS04
Computer Architecture - WS03
Computer Architecture 3 - WS03
Informatik 2 / Systemarchitektur - SS03
Informatik 3 / Theoretische Informatik - SS03
Computer Architecture 2 - SS03
Rechnerarchitektur - WS02
 
 
Ältere Seminare
Instruktionssätze moderner High-End-Prozessoren - WS07
The FlexRay Communication Protocol - WS05
Ausgewählte Komponenten von Betriebssystemen - SS04
State of the Art of Formal Hardware Verification - SS03
Model Checking - WS02