Computer Architectures and Operating Systems
Content
Starting from basic computer architectures and the interaction of the basic components, the mapping of programs in C into executable instructions in assembler is explained using executable instructions based on the example of a specific CPU such as RISC-V, ARM, MIPS or x86. The basics of number representation in hardware systems and basic constructs such as branches and loops at the hardware level are also briefly discussed.
Motivated by current CPU models, concepts for efficient execution are also presented, as well as basic laws that prevent the theoretical performance of processors from being available for real programs. In the following, solution approaches such as temporal or spatial locality, cache architectures, optimization of data access patterns and optimization of execution, e.g. with instruction level parallelism, are presented.
The third topic block begins with basic laws such as Amdahl's law and then takes up concepts for parallelizing execution and the presentation of various approaches such as data parallelism or task parallelism.
Learning Objectives
The students...
... understand the basic structure of computer systems and can use abstract models such as the Von Neumann architecture to explain the interaction of the various components when executing arithmetic operations.
... understand how the hardware components influence the performance and energy efficiency of software and can identify critical bottlenecks such as memory bandwidth, storage capacity or data dependencies for various problems from embedded systems to high-performance computers and know strategies at the hardware and software level to address these problems.
... understand the basic concepts of parallelization and can identify limiting factors for scalability.
In addition to the hardware, the operating system, as a link between the hardware and the application software, influences the performance of a program. The students understand the processes by which an executable program is created by the compiler based on a program in a higher programming language and how the operating system and hardware interact when executing a program.
Knowledge Requirements
Programming skills in a higher programming language and the use of software development environments are recommended as a basis. Knowledge of binary number systems, number representation in computing systems and basic knowledge of digital technology or Boolean algebra are an advantage.