Skip to content
armaangomes.com·

💻Doom Runs on FPGA With DDR3 Memory

Running Doom on an FPGA is a feat of engineering

TL;DR

Liam's project to run Doom on an FPGA with DDR3 memory highlights the complexity of modern hardware. The CPU design needs significant modifications, including out-of-order processing and cache optimization.

Liam is working on running DOOM, a classic game from 1993, on an FPGA using DDR3 memory. This project showcases the intricate challenges of adapting legacy software to new hardware architectures. For developers familiar with embedded systems or retro gaming projects, this work provides insights into optimizing CPU pipelines and cache management for efficient data access. The core pipeline consists of five stages: Instruction Fetch, Decode, Register Read, Execute, Writeback. DDR3 memory complicates things due to its variable latency, requiring extensive modifications like out-of-order processing and optimized caching.

Key Points

1

DOOM's basic shareware (doom1.wad) is a mere 14 megabytes, fitting neatly on early '90s machines but pushing FPGA limits.

2

The original CPU design had clean memory with 1-cycle latency; DDR3 introduces variable latency and wider bus widths, complicating operations.

3

DDR3 can return two words every 30-60 cycles, far slower than desired throughput for Doom's performance needs.

4

Two caches are essential: Instruction Cache (ICache) and Data Cache (DCache), each with 2048 cache lines to manage memory requests efficiently.

5

Cache stores active regions in BRAM, reducing DDR3 latency; well-optimized cache can almost eliminate added latency entirely.

Why It Matters

If you're working on FPGA projects or optimizing CPU pipelines for embedded systems, Liam's work offers valuable insights. The project demonstrates how to handle DDR3 memory's variable latency and wide bus widths, critical for efficient data access in modern hardware designs.

DoomFPGADDR3 MemoryCPU Pipeline OptimizationCache Management

Frequently Asked Questions

Why does this matter?

If you're working on FPGA projects or optimizing CPU pipelines for embedded systems, Liam's work offers valuable insights. The project demonstrates how to handle DDR3 memory's variable latency and wide bus widths, critical for efficient data access in modern hardware designs.

What happened?

Liam's project to run Doom on an FPGA with DDR3 memory highlights the complexity of modern hardware. The CPU design needs significant modifications, including out-of-order processing and cache optimization.

Comments

Subscribe to join the conversation...

Be the first to comment

Enjoyed this article?

Get it daily. 7am. Free. Reads in 5 minutes.

Also get