Old Flame, New Flame

2022 April 12 15:37 stuartscott 1108659¤ 574¤

Nearly 11 years ago, at the University of Sheffield, I submitted my dissertation on "A Graphical Simulation of a Microprocessor for Teaching". The goal was to create a teaching aid to help students understand what goes on under-the-hood of a microprocessor.

Called Serenity, written in Java with a Swing GUI, the software enabled students to write assembly and execute it on a virtual processor to understand the architecture, watch how data flowed through the pipeline, and avoid pipeline hazards through liberal use of 'noop' instructions.

Now with fresh eyes, over a decade of industry experience, and a new programming language of choice (Go) I decided to revisit the problem to create a new and better solution.

Flame is the resulting architecture, and Pyromancer is the resulting toolchain.

Flame intends to cover computer architecture more broadly and holistically than Serenity; from Processor (Instruction Set Architecture, Instruction Pipeline, Multicore & Multithreading), to Memory Hierarchy (L1, L2, L3 Caches and Main Memory), to IO devices.

The 64bit processor has 8 cores and employs a barrel design to avoid pipeline hazards by interleaving 8 contexts (threads of execution) on each core.

The RISC-style instruction set is easy to learn - consisting of only 32 instructions.

Each component is clocked at different speeds to better represent the cost of cache misses, main memory accesses, and IO operations.

Pyromancer provides control of the clock and enables inspection of every facet of the machine's operation so students can follow the execution of their code step-by-step, clock-by-clock.

Sort: Cost Yield Time

Sign Up