Designing a basic CPU from scratch may seem like a challenging task, but what about GPUs? One software engineer, Adam Majmudar, decided to take on the challenge and documented his journey on Twitter. Starting with learning the fundamentals of central processor architecture, Majmudar then moved on to creating a complete CPU. However, he quickly realized that designing a GPU posed a whole new set of challenges. While CPUs and GPUs share some common aspects, such as arithmetic logic units and data registers, the way they use memory and manage threads is vastly different.
It’s important to note that Majmudar’s goal was not to create a traditional ‘graphics’ GPU, but rather a GPGPU (General-Purpose GPU). This distinction is crucial as it meant he was not focusing on designing systems like triangle setup, TMUs, ROPs, or other fixed-function circuits found in graphics cards. Despite the complexities of designing a GPGPU, Majmudar’s perseverance paid off, and his basic GPU design was able to run a small number of instructions and crunch through some matrix calculations in software simulation.
Both Majmudar’s CPU and GPU designs are set to be brought to life through the Tiny Tapeout project. This initiative will see his designs translated into physical form, allowing for further experimentation and testing. Majmudar’s willingness to share his project on Github is commendable, as it provides a valuable resource for anyone seeking to gain a deeper understanding of GPU hardware.
While designing a GPU from scratch may seem like a daunting task, the necessary tools and resources are readily available online. With a plethora of tutorials and exercises to follow, anyone can learn to program a GPU. However, designing a GPU at the transistor level is a vastly different challenge, as major chip makers like AMD, Intel, and Nvidia do not publicly share such information. This highlights the complexities involved in truly understanding the intricacies of GPU design.
The process of designing a GPU from scratch is a formidable undertaking that requires a deep understanding of hardware architecture and programming principles. Adam Majmudar’s journey serves as a testament to the complexities involved in creating a functional GPU design. Through his dedication and perseverance, Majmudar was able to overcome numerous challenges and ultimately achieve success in designing a basic GPU. His willingness to share his project with the wider community demonstrates the collaborative spirit of the tech industry and provides a valuable resource for aspiring GPU designers.
Leave a Reply