Um engenheiro compartilhou sua jornada na “construção de uma GPU do zero, sem nenhuma experiência anterior”. Tal como acontece com seu projeto anterior de projetar uma CPU do zero, Adam Majmudar levou apenas duas semanas para concluir esse feito cerebral. Em um Tópico Twitter/X Majmudar nos conduz pelo processo passo a passo e admite que o design da GPU foi uma tarefa muito mais difícil do que o esperado. Para ser claro, a conclusão atual do projeto é um layout de chip em Verilog que finalmente foi passado pelo software OpenLane EDA para verificá-lo. No entanto, a GPU será enviada para tapeout via Fita adesiva minúscula 7 então está destinado a se tornar um chip físico nos próximos meses.
Acima você pode ver o fluxo de tarefas que Majmudar trabalhou para projetar sua GPU. No entanto, como um projeto “do zero”, foi necessário muito estudo e reflexão, mesmo antes de o primeiro passo ser dado provisoriamente. Da última vez, destacamos as preocupações do engenheiro de que as GPUs seriam um campo de estudo relativamente difícil, devido ao domínio da tecnologia proprietária, quando essa previsão se tornou realidade.
Através de várias iterações da arquitetura acima, Majmudar decidiu focar nos recursos de computação paralela de uso geral (GPGPUs). Assim, ele ajustou sua Arquitetura de Conjunto de Instruções (ISA), que apresenta apenas 11 instruções, para atingir esse objetivo. Em seguida, o engenheiro escreveu dois kernels matemáticos matriciais para rodar em sua GPU. Esses núcleos de adição e multiplicação de matrizes demonstrariam a funcionalidade principal da GPU e forneceriam evidências de sua aplicação útil em tarefas gráficas e de aprendizado de máquina.
Até agora tinha sido relativamente fácil para o engenheiro, mas construir sua GPU em Verilog apresentava “muitos problemas”. O conselho do (in) famoso George Hotz ajudou Majmudar a superar um de seus primeiros (e segundos) obstáculos em relação à memória e à implementação de um agendador de warp. Uma terceira reescrita de seu código funcionou, corrigindo o agendamento de execução do núcleo de computação.
Mais algumas reformulações não especificadas posteriormente e a prova do pudim, um vídeo mostrando o kernel de adição de matriz em execução e validação, foi compartilhado no tópico do Tweet.
Por último, o projeto Verilog concluído foi passado pelo OpenLane EDA, visando o nó de processo Skywater 130nm (para Tiny Tapeout). Mais uma vez, algumas questões precisaram ser resolvidas. Em particular, Majmudar explica que algumas verificações de regras de design (DRCs) falharam e necessitaram de retrabalho.
Após o esforço de duas semanas, o engenheiro gostou de brincar com um Visualização 3D de seu design de GPU. Isso terá que ser suficiente até que o TT7 devolva o silício aos participantes. Claro, o trabalho não vai ficar entre as melhores placas gráficas. Se você quiser ler mais sobre esta GPU caseira, confira o divertido tópico de mídia social e/ou investigue o dedicado GitHub com GPU minúscula página.