"Doom gira su qualsiasi cosa" � ormai un tormentone che in realt� seguiamo con piacere: il first person shooter di id Software del 1993 � stato fatto girare su microcontrollori, tostapane e persino colonie di batteri. Armaan e Liam hanno deciso di spostare l'asticella un pezzetto pi� avanti: invece di portare Doom su un pezzo di hardware gi� esistente, si sono costruiti da zero la CPU su cui farlo girare, progettandola a livello di porte logiche e sintetizzandola su FPGA.
Prima di arrivarci avevano fatto girare solo programmi scritti da loro, come Pong e il calcolo degli insiemi di Mandelbrot. Il salto verso un gioco pubblicato completo si scontrava con due ostacoli: la memoria e la velocit�. Il progetto iniziale della CPU poteva contare solo sulla BRAM dell'FPGA, meno di un megabyte, mentre il solo file shareware di Doom (doom1.wad) pesa 14 megabyte, senza contare la memoria necessaria a eseguirlo. In parallelo Liam ha iniziato a lavorare sull'esecuzione fuori ordine per spremere pi� parallelismo, mentre Armaan si � preso in carico la memoria.
Dalla BRAM alla DDR3, con la cache in mezzo
La BRAM � stata all'inizio una scelta comoda: latenza di un ciclo, accesso parola per parola, delay costante che la pipeline assorbe senza mai fermarsi. La DDR3 montata sull'FPGA � tutta un'altra storia: restituisce due parole ogni 30-60 cicli, con latenza variabile e bus largo. Collegare direttamente ogni operazione alla DDR3 avrebbe ridotto la CPU al passo d'uomo.








