Introduction

Coreblocks is an out-of-order processor which implements the RISC-V architecture.

The graph below is a high level schematic of the core’s microarchitecture.

graph F[<b>FRONTEND</b><br>-get instruction<br>-decode] F -->|FIFO| S S[<b>SCHEDULER</b><br>-allocate register<br>-rename<br>-allocate ROB<br>-send to RS] S --RS--> E E[<b>EXEC</b><br>-listen to incoming operands<br>-select instruction to execute<br>-send to FU<br>-deallocate RS] E --FU--> B B[<b>BACKEND</b><br>-listen for results from FU<br>-announce results to RF and RS<br>-mark done in ROB] B --> R R[<b>RETIREMENT</b><br>-check readiness of instruction from the end of ROB<br>-update RAT<br>-deallocate old register<br>-deallocate ROB] ROB((ROB)) RF((RF)) FREE_RF((FREE RF)) RAT((RAT)) R --> FREE_RF --> S S & R & B <--> ROB B --> RF --> S S <--> RAT <--> R