We may earn an affiliate commission when you visit our partners.
Course image
Per Stenström

In order to be competitive in the computer science field, it’s imperative to understand the basic building blocks of a modern computer and how they directly impact the speed and efficiency of a program. Whether you work with embedded systems, mobile computer-based systems, or cloud systems, performance and energy efficiency are key drivers of usability and competitiveness of computerized products.

Read more

In order to be competitive in the computer science field, it’s imperative to understand the basic building blocks of a modern computer and how they directly impact the speed and efficiency of a program. Whether you work with embedded systems, mobile computer-based systems, or cloud systems, performance and energy efficiency are key drivers of usability and competitiveness of computerized products.

In this course, you will learn how to design modern multicore-based computers, and how the design choices you make affect performance and energy consumption. You will explore design principles governing modern microprocessors, such as pipelining and cache memories, as well as methods for determining the impact of your design on execution time and energy efficiency.

These skills can make a difference for practicing engineers for the purpose of building highly competitive products. Take, for instance, a smartphone with limited battery capacity. By adding value to end users through new or improved functionality, this can lead to significantly shorter operation time between battery charges, thus utilizing the already limited resources of a smartphone far more efficiently.

With this skillset, you can become an expert in computer system performance and energy efficiency - knowledge that is in high demand when designing computerized embedded products. With trends towards IoT (Internet of Things), autonomous systems and mobile computers, such a skillset will be critical in a career in systems engineering.

This course is derived from a Chalmers senior undergraduate course in computer system design.

What's inside

Learning objectives

  • 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

Syllabus

Week 1: Execution model of computer systems
The transformation hierarchy
Instruction set architecture
Execution stages
Read more
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
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
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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Supports practicing engineers by sharpening skills to build better, more efficient products
Strengthens a foundation for engineering professionals to boost performance and energy efficiency
Provides modern concepts of multicore system design, empowering learners to comprehend the factors that impact application performance
Reinforces basic understanding of execution models and computer system architecture, forming a solid foundation for advanced concepts
Enables modeling and analysis for efficient design of embedded systems, mobile devices, and cloud solutions
Lays a foundation for understanding emerging technologies like IoT and self-driving systems

Save this course

Save Computer Systems Design for Energy Efficiency to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Computer Systems Design for Energy Efficiency with these activities:
Read 'Computer Architecture: A Quantitative Approach' by Hennessy and Patterson
Gain a deeper understanding of computer architecture principles by reading this comprehensive and authoritative textbook.
Show steps
  • Obtain a copy of the book.
  • Read each chapter thoroughly, taking notes and highlighting key concepts.
  • Complete the practice problems and exercises provided in the book.
  • Discuss the content with peers or instructors to enhance your comprehension.
Engage in peer discussion forums on computer architecture
Enhance your understanding by actively participating in online or in-person discussion forums where you can exchange ideas and ask questions related to the course material.
Browse courses on Computer Architecture
Show steps
  • Identify and join relevant discussion forums.
  • Participate in discussions by asking questions, sharing insights, and responding to others.
  • Read and engage with the contributions of your peers.
  • Be respectful and constructive in your interactions.
Follow online tutorials on multicore-based computers
Supplement your learning by exploring online tutorials that provide in-depth explanations and examples of multicore-based computer concepts.
Show steps
  • Identify and select reputable online tutorials.
  • Follow the tutorials step-by-step.
  • Experiment with the examples and exercises provided.
  • Take notes or summarize the key concepts covered.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Attend a workshop on Computer Architecture
Enhance your understanding of the principles and design of modern multicore-based computers by attending a workshop.
Browse courses on Computer Architecture
Show steps
  • Identify a relevant workshop on computer architecture.
  • Register and attend the workshop.
  • Take notes and actively participate in discussions.
  • Follow up by reading additional materials or attending other related events.
Solve exercises and practice problems on performance and energy models
Sharpen your analytical skills and deepen your understanding by practicing problem-solving exercises that require you to analyze performance and energy models.
Browse courses on Computer Architecture
Show steps
  • Find practice problems and exercises online or in textbooks.
  • Attempt to solve the problems on your own.
  • Check your solutions against provided answers or consult with instructors or peers.
  • Identify areas where you need further clarification or practice.
Create a presentation on Pipelining and Caches
Solidify your understanding by creating a presentation that explains the principles and impact of pipelining and cache memory in computer systems.
Browse courses on Pipelining
Show steps
  • Research and gather information on pipelining and cache memory.
  • Organize your content into a logical structure.
  • Create slides with clear and concise explanations, diagrams, and examples.
  • Practice delivering your presentation.
  • Share your presentation with peers or instructors for feedback.
Develop a software simulation of a pipelined processor
Apply your knowledge by creating a software simulation that demonstrates the operation of a pipelined processor, enabling you to visualize and analyze the concepts in action.
Browse courses on Pipelining
Show steps
  • Design the architecture of your simulated processor and its pipeline stages.
  • Implement the simulation using a programming language.
  • Test and debug your simulation to ensure it accurately models pipelining.
  • Analyze the simulation results to observe the impact of pipelining on performance.
  • Write a report summarizing your findings and insights.
Contribute to an open-source project related to computer architecture simulation
Apply your knowledge by contributing to an open-source project that involves computer architecture simulation, gaining practical experience in this field.
Browse courses on Computer Architecture
Show steps
  • Identify an open-source project that aligns with your interests and skills.
  • Familiarize yourself with the project's codebase and documentation.
  • Identify a specific area where you can contribute, such as adding a new feature or improving existing code.
  • Write and test your code contributions.
  • Submit your contributions to the project's repository and engage in code reviews.

Career center

Learners who complete Computer Systems Design for Energy Efficiency will develop knowledge and skills that may be useful to these careers:
Computer Architect
Computer Architects design and develop the architecture of computer systems. This course can help Computer Architects understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of computer systems. Additionally, the course can help Computer Architects understand the trade-offs between different design choices.
Computer Systems Analyst
Computer Systems Analysts design, implement and maintain computer systems. They analyze user needs and develop solutions to meet those needs. The knowledge and skills acquired in this course can directly translate to success in this role. An understanding of system design and performance analysis are key to working in this role.
Embedded Systems Engineer
Embedded Systems Engineers design and develop embedded systems, which are computer systems that are designed to be part of a larger system. This course can help Embedded Systems Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of embedded systems. Additionally, the course can help Embedded Systems Engineers understand the trade-offs between different design choices.
Performance Analyst
Performance Analysts analyze the performance of computer systems and identify ways to improve it. This course can help Performance Analysts understand the principles of computer system design and performance analysis, which can help them make informed decisions about how to improve the performance of computer systems. Additionally, the course can help Performance Analysts understand the trade-offs between different design choices.
Computer Hardware Engineer
Computer Hardware Engineers research, design, develop, and test computer hardware components. The knowledge of computer system design provided by this course is essential to success in this role. Understanding the principles of pipelining and cache memory hierarchy is also crucial.
Software Engineer
Software Engineers apply the principles of computer science to design, develop, maintain, test, and evaluate computer software. This course can help Software Engineers understand computer system design and performance analysis, which can help them write more efficient and effective code. Additionally, the course can help Software Engineers make informed decisions about hardware and software trade-offs.
Systems Engineer
Systems Engineers design, develop, and maintain complex systems. This course can help Systems Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of complex systems. Additionally, the course can help Systems Engineers understand the trade-offs between different design choices.
Robotics Engineer
Robotics Engineers design and develop robots. This course can help Robotics Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of robots. Additionally, the course can help Robotics Engineers understand the trade-offs between different design choices.
Machine Learning Engineer
Machine Learning Engineers design and develop machine learning models. This course can help Machine Learning Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of machine learning models. Additionally, the course can help Machine Learning Engineers understand the trade-offs between different design choices.
Data Scientist
Data Scientists use data to solve problems and make predictions. This course can help Data Scientists understand the principles of computer system design and performance analysis, which can help them make informed decisions about how to use data to solve problems. Additionally, the course can help Data Scientists understand the trade-offs between different design choices.
Artificial Intelligence Engineer
Artificial Intelligence Engineers design and develop artificial intelligence systems. This course can help Artificial Intelligence Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of artificial intelligence systems. Additionally, the course can help Artificial Intelligence Engineers understand the trade-offs between different design choices.
Operations Research Analyst
Operations Research Analysts use mathematical and analytical techniques to solve problems and make decisions. This course may be useful to Operations Research Analysts who are interested in designing and developing computer systems. The course can help Operations Research Analysts understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of computer systems.
Electrical Engineer
Electrical Engineers design and develop electrical systems. This course may be useful to Electrical Engineers who are interested in designing and developing computer systems. The course can help Electrical Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of computer systems.
Mechanical Engineer
Mechanical Engineers design and develop mechanical systems. This course may be useful to Mechanical Engineers who are interested in designing and developing computer systems. The course can help Mechanical Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of computer systems.
Industrial Engineer
Industrial Engineers design and develop industrial systems. This course may be useful to Industrial Engineers who are interested in designing and developing computer systems. The course can help Industrial Engineers understand the principles of computer system design and performance analysis, which can help them make informed decisions about the design of computer systems.

Reading list

We've selected 23 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Computer Systems Design for Energy Efficiency.
Provides a comprehensive overview of computer systems performance analysis, covering topics such as experimental design, measurement, simulation, and modeling.
Provides a comprehensive overview of embedded systems design, with a focus on energy efficiency. It covers everything from hardware and software design to system integration and testing.
This classic textbook provides a comprehensive overview of computer architecture, covering fundamental concepts, design principles, and performance evaluation techniques. It valuable resource for understanding the underlying principles of modern computer systems.
Covers the concepts and techniques of energy-efficient computer architecture, including energy modeling and optimization, power management, and thermal management.
Provides a detailed guide to high-speed computing, covering topics such as instruction set architecture, pipelining, superscalar execution, and cache memory.
Provides a comprehensive overview of parallel computer architecture, including shared-memory and message-passing models, synchronization, and performance optimization.
Covers the fundamentals of superscalar processors, including instruction-level parallel processing, data hazards, branch prediction, memory and caches, microarchitecture optimizations, and more.
Provides a comprehensive guide to ARM system development, covering topics such as ARM architecture, assembly language programming, and operating systems.
Provides a good foundation in the fundamental concepts of digital design and computer architecture. It is particularly useful for understanding the hardware components and their impact on performance.
Provides a programmer's perspective on computer systems, covering topics such as assembly language programming, operating systems, and computer architecture.
Provides a comprehensive overview of real-time systems design and analysis. It covers everything from the basics of real-time computing to the latest advancements in the field.
This textbook provides a comprehensive overview of computer organization and design, covering the fundamental principles of computer hardware and software. It valuable resource for understanding the design and implementation of modern computer systems.
Provides a comprehensive overview of embedded systems design. It covers everything from the basics of embedded hardware and software to the latest advancements in the field.
Provides a comprehensive overview of energy-efficient embedded systems design. It covers everything from the basics of energy-efficient design to the latest advancements in the field.
Provides a comprehensive overview of embedded systems, including hardware design, software development, and system integration. It valuable resource for understanding the design and implementation of embedded systems.
Provides a comprehensive reference manual for the ARM architecture.
This textbook provides a comprehensive overview of embedded systems, including hardware architecture, software development, and system integration. It valuable resource for understanding the design and implementation of embedded systems.
This textbook provides a comprehensive overview of embedded systems, including hardware architecture, software development, and system integration. It valuable resource for understanding the design and implementation of embedded systems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Computer Systems Design for Energy Efficiency.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser