Fundamentals of GPU Architecture: SIMT Core Part 3

Fundamentals of GPU Architecture: SIMT Core Part 3

Understanding the Two Loop Approximation in GPU Architecture

Overview of GPU Core Architecture

  • Nick introduces the topic of GPU architecture, specifically focusing on the two loop approximation and its relation to core architecture.
  • Recaps the one loop approximation, emphasizing how it handles instruction execution within warps and latency hiding through multiple warps.

Limitations of One Loop Approximation

  • Discusses the inefficiency of the one loop approximation due to lack of dependency tracking, which requires waiting for previous instructions to complete before issuing new ones.
  • Highlights that without dependency information, a large number of warps are needed to effectively hide long latency instructions.

Introduction to Two Loop Approximation

  • Proposes that by incorporating dependency information, fewer warps can be used while still allowing multiple instructions from those same warps to be issued.
  • Describes an instruction buffer that stores instructions fetched from cache and a scheduler that determines which instructions can be executed based on their readiness.

Instruction Buffer and Dependency Tracking

  • Explains how instruction memories function as a first-level cache supported by secondary unified caches, aiding in hiding instruction cache misses.
  • Introduces classical CPU methods for detecting data dependencies: scoreboards and reservation stations. Emphasizes simplicity in design for GPUs due to their massively parallel nature.

Challenges with Scoreboard Implementation

  • Notes that implementing a simple inorder scoreboard incurs significant overhead due to the large number of registers required per warp (up to 8192 bits).
  • Discusses complications arising from multi-threaded processors needing multiple threads to probe the scoreboard simultaneously, leading to excessive read port requirements (256 ports).

Solutions for Efficient Dependency Tracking

  • Suggests limiting scheduling consideration only to certain warps as a naive solution but warns this reduces parallelism benefits.
  • Introduces an alternative design from 2008 where instead of one bit per register per warp, several entries track outstanding dependencies more efficiently.

Final Thoughts on Two Loop Architecture

  • Concludes with how this new structure allows better management of dependencies while maintaining performance efficiency by checking dependencies when instructions enter the buffer.
  • Summarizes key ideas behind two loop architecture: reducing warp count while enabling multiple instruction issuance based on cleared dependencies.

Additional Resources

  • Mentions resources available on GitHub related to GPU programming and ongoing projects including a book draft covering various programming topics.
Video description

In this video we look at the two-loop approximation for describing the architecture of the SIMT core! For code samples: http://github.com/coffeebeforearch For live content: http://twitch.tv/CoffeeBeforeArch