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

In this computer science course, you will learn advanced concepts underpinning the design of today’s multicore-based computers. Additionally, you will learn how design decisions affect energy efficiency and performance.

Overall, topics include fundamentals on exploiting parallelism among instructions such as out-of-order execution, branch prediction, exception handling and advanced concepts of memory systems including prefetching and cache coherency. These concepts are fundamental for future computer systems to maximize compute efficiency.

Read more

In this computer science course, you will learn advanced concepts underpinning the design of today’s multicore-based computers. Additionally, you will learn how design decisions affect energy efficiency and performance.

Overall, topics include fundamentals on exploiting parallelism among instructions such as out-of-order execution, branch prediction, exception handling and advanced concepts of memory systems including prefetching and cache coherency. These concepts are fundamental for future computer systems to maximize compute efficiency.

You will also engage with a community of learners with similar interests to share knowledge.

The course is derived from Chalmers’s advanced graduate course in computer architecture. Prospective students should have a foundation in basic computer design, as offered by, for example, in “Computer System Design - Improving Energy Efficiency and Performance.“

What's inside

Learning objectives

  • The anatomy of a multicore-based computer
  • Advanced design concepts used in future multicore-based computers
  • How computer design affects how energy-efficiently and fast a program can execute on future computer systems
  • How taught design concepts are used in modern multicore-based computer systems

Syllabus

Week 1: Instruction and thread-level parallelism and models for parallel and out-of-order execution (1 hour)
Multicore systems: It is all about parallelism. Fundamentals.
Read more
Microarchitecture fundamentals.
Memory systems fundamentals.
Performance fundamentals.
Energy fundamentals.
Putting it together.
Week 2: Speculative execution = OoO + branch prediction + Exception handling (1 hour)
Baseline model and out-of-order completion.
Tomasulo algorithm: step 1.
Tomasulo algorithm: step 2.
Branch prediction.
Exception handling.
Speculative execution.
Week 3: Advanced topics on cache design (1 hour)
Fundamentals of memory design.
The 3C model.
Replacement algorithms.
Prefetching algorithms.
Memory systems (DRAM).
Memory systems (Virtual memory and virtualization).
Week 4: Multicore design: multithreading and cache coherence (1 hour)
Multicore design challenges.
Multithreading fundamentals.
Multithreading design alternatives (fine/course, SMT).
Cache coherence concepts.
Interconnection concepts.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores computer design concepts, which are highly relevant to advanced computer engineering
Taught by Per Stenström, who is recognized for their work in the field of computer design
Derived from Chalmers's advanced graduate course in computer architecture
Provides a strong foundation for learners interested in deep expertise in computer design
Builds on the prerequisites of Computer System Design - Improving Energy Efficiency and Performance
Requires learners to come in with extensive background knowledge

Save this course

Save Computer System Design: Advanced Concepts of Modern Microprocessors 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 System Design: Advanced Concepts of Modern Microprocessors with these activities:
Organize and review course notes, assignments, and quizzes
Solidify your understanding by organizing and reviewing course materials regularly.
Show steps
  • Gather all course notes, assignments, and quizzes
  • Organize the materials into a logical structure
  • Review the materials regularly to reinforce your learning
Review 'Computer Architecture: A Quantitative Approach' 6th Edition
Review a classic textbook on computer architecture to strengthen your foundational knowledge.
Show steps
  • Read Chapters 1-3: Introduction, Instruction-Level Parallelism, and Instruction-Level Pipelining
  • Complete the end-of-chapter exercises for Chapters 1-3
  • Summarize the key concepts in Chapters 1-3 in your own words
Join a study group to discuss multicore architecture concepts
Collaborate with peers to reinforce your understanding and gain diverse perspectives.
Browse courses on Parallel Computing
Show steps
  • Find or create a study group with other students enrolled in the course
  • Meet regularly to discuss course materials, solve problems, and share ideas
Five other activities
Expand to see all activities and additional details
Show all eight activities
Follow tutorials on cache coherence protocols
Enhance your understanding of cache coherence protocols through guided tutorials.
Show steps
  • Identify reputable online tutorials on cache coherence protocols
  • Follow the tutorials and take notes on the concepts and techniques
  • Apply the concepts to solve problems related to cache coherence
Solve leetcode problems on instruction-level parallelism
Practice applying concepts of instruction-level parallelism through coding challenges.
Browse courses on Branch Prediction
Show steps
  • Identify leetcode problems related to instruction-level parallelism
  • Solve the problems using techniques such as branch prediction and instruction pipelining
  • Review your solutions and identify areas for improvement
Create a compilation of resources on multicore architecture
Deepen your understanding and broaden your knowledge base by compiling a collection of valuable resources.
Browse courses on Parallel Computing
Show steps
  • Identify and gather high-quality resources on multicore architecture, such as research papers, articles, and videos
  • Organize the resources into a logical structure
  • Share the compilation with your peers or the online community
Attend a workshop on advanced computer architecture
Gain hands-on experience and insights from experts by attending a specialized workshop.
Browse courses on Parallel Computing
Show steps
  • Identify and register for a reputable workshop on advanced computer architecture
  • Attend the workshop and actively participate in discussions and hands-on activities
  • Follow up after the workshop to reinforce your learning
Design and present a multicore-based computer architecture
Deepen your understanding of multicore architecture by designing and presenting your own system.
Show steps
  • Research different multicore architectures
  • Design your own multicore architecture, considering factors such as core count, cache size, and interconnection network
  • Create a presentation to explain your design and its advantages

Career center

Learners who complete Computer System Design: Advanced Concepts of Modern Microprocessors will develop knowledge and skills that may be useful to these careers:
Computer Architecture
A Computer Architect designs and develops the overall architecture of computer systems. They work on the design, implementation, and optimization of computer hardware and software. This course provides a comprehensive overview of advanced computer design concepts essential for working on multicore-based computer systems, which is an essential foundation for a Computer Architect.
Computer Hardware Engineer
A Computer Hardware Engineer designs, develops, and tests computer hardware components. They are responsible for ensuring that hardware components meet performance, reliability, and cost requirements. For a Computer Hardware Engineer, a solid foundation in computer architecture and design is essential. The course "Computer System Design: Advanced Concepts of Modern Microprocessors" provides a comprehensive overview of advanced computer design concepts essential for working on multicore-based computer systems used in modern devices like smartphones and laptops.
Software Engineer
A Software Engineer designs, develops, and tests software applications. While this course is more focused on hardware design, it could still be helpful for a Software Engineer who wants to gain a deeper understanding of computer architecture and design principles. This knowledge can help a Software Engineer write more efficient and effective code by understanding how the hardware executes their code.
Computer Scientist
A Computer Scientist conducts research and develops new computing technologies. This course is a good starting point for someone who wants to learn about advanced computer design concepts. The course will cover topics such as instruction-level parallelism, branch prediction, exception handling, and cache coherency. A Computer Scientist can benefit from this knowledge when designing or researching new computing systems.
Systems Analyst
A Systems Analyst studies an organization's current computer systems and procedures and designs new systems that will meet the organization's needs. This course can help a Systems Analyst better understand the hardware and software components of computer systems, which can be helpful when designing and implementing new systems.
Information Security Analyst
An Information Security Analyst plans and implements security measures to protect an organization's computer systems and networks. This course can provide foundational knowledge in computer architecture for an Information Security Analyst, helping them understand how computer systems work and how to identify and mitigate potential security threats.
Data Scientist
A Data Scientist collects, analyzes, and interprets data to extract meaningful insights. This course could be helpful for a Data Scientist who wants to gain a deeper understanding of how computer hardware and software work together to process and analyze data. This knowledge may be helpful when developing data-intensive applications or designing data analysis pipelines.
Network Architect
A Network Architect designs and implements computer networks. This course can provide foundational knowledge in computer architecture for a Network Architect, helping them understand how computer systems work and how to design and implement efficient and reliable networks.
IT Manager
An IT Manager plans, implements, and manages an organization's computer systems and networks. This course can help an IT Manager gain a deeper understanding of computer architecture and design principles. This knowledge can be helpful for managing and maintaining an organization's computer systems and networks.
Quality Assurance Analyst
A Quality Assurance Analyst tests and evaluates software applications to ensure they meet quality standards. This course can help a Quality Assurance Analyst understand how software applications interact with computer hardware. This knowledge can assist in designing and executing effective test cases.
Web Developer
A Web Developer designs and develops websites and web applications. While this course is focused on hardware design, it could be helpful for a Web Developer who wants to gain a deeper understanding of how the internet works and how to design and develop websites and web applications that are efficient and effective.
Technical Writer
A Technical Writer creates technical documentation, such as user manuals and white papers. This course can help a Technical Writer gain a better understanding of computer hardware and software, which can help them write more accurate and informative documentation.
Database Administrator
A Database Administrator manages and maintains an organization's databases. This course can help a Database Administrator gain a better understanding of computer hardware and software, which can help them manage and maintain databases more effectively.
Business Analyst
A Business Analyst analyzes business needs and designs solutions to improve business processes. This course may be helpful for a Business Analyst who wants to gain a deeper understanding of computer hardware and software, and how to design and implement solutions that meet business needs.
Product Manager
A Product Manager manages the development and launch of new products. This course may be helpful for a Product Manager who wants to gain a deeper understanding of computer hardware and software, and how to develop and launch successful technology products.

Reading list

We've selected 14 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 System Design: Advanced Concepts of Modern Microprocessors.
This comprehensive textbook classic work in computer architecture. It provides a solid foundation in the principles of computer design, covering topics such as instruction set architecture, pipelining, memory hierarchies, and multiprocessors.
Provides a detailed overview of advanced computer architecture concepts, including branch prediction, exception handling, and cache coherency, which are covered in this course.
Provides a comprehensive overview of computer systems from a programmer's perspective.
Provides a comprehensive overview of memory systems, including cache design, prefetching algorithms, and virtual memory, which are covered in this course.
Provides a unique approach to learning about computer systems. It starts with the basics of logic gates and builds up to a complete modern computer system.
Provides a practical introduction to embedded microprocessor system design using FPGAs, which can be useful for understanding the hardware implementation of the concepts covered in this course.
This textbook provides a comprehensive introduction to computer organization and architecture. It covers topics such as instruction set architectures, pipelining, and memory hierarchies.
Provides a comprehensive overview of multiprocessor programming, including concepts like synchronization and shared memory, which are relevant to the multicore design topics covered in this course.
Provides an in-depth overview of superscalar processor design, which key concept in modern multicore processors covered in this course.

Share

Help others find this course page by sharing it with your friends and followers:
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