Nov 1st 2016

Computer System Design: Improving Energy Efficiency and Performance (edX)

Created by:Delivered by:
Taught by:

Learn the elements of computer design needed for programmers to make the most of computers’ speed and to write energy-effective programs. In this computer science course, you will learn the basic foundations underpinning the design of modern multicore-based computers. In addition, you will learn how design decisions affect how fast programs execute and how much energy is wasted.

Topics include:

- Basic design concepts of computers

- Principles and models for how fast a program will execute and how much energy it will waste

- Basic principles for exploiting instruction-level parallelism

- Data and control dependences

- Pipelining

- Memory locality

- Cache design principles

During the course you will engage with a community of learners with similar interests to share knowledge.

The course is derived from Chalmers’s senior undergraduate course in computer system design. It assumes only a basic course in computer organization including assembly-language programming.

What you'll learn:

- Design concepts in modern multicore-based computers including processors and memory hierarchies

- How energy efficient and fast a program will execute

- How to use simple models to analyze energy efficiency and performance

- How taught design concepts are used in modern multicore-based computer systems

Course Syllabus

Week 1: Execution model of computer systems

- The transformation hierarchy

- Instruction set architecture

- Execution stages

- Control, data paths, and a model of a computer

- Execution of a program

- Put it all together

Week 2: Performance and energy models of computers

- Basic performance model of an executing program

- Energy and power consumption in computer systems

- Basic energy model of an executing program

- How performance and energy can be improved

- Reporting performance and energy

- Put it all together

Week 3: Pipelining principles

- The principle of the conveyor belt – pipelining

- Instruction level parallelism and its relation to pipelining

- A pipelined model of a computer

- Pipeline hazards (structural, data and control)

- Simple techniques to avoid hazards

- Put it all together

Week 4: Cache memory hierarchy principles

- Memory system basics

- The memory locality principle

- Basic notion of cache memory and a direct mapped cache

- Set-associative caches

- Multi-level caches

- Put it all together