[libre-riscv-dev] GPU design
lkcl at libre-riscv.org
Wed Dec 5 13:06:25 GMT 2018
right. something just went "click" in the past 30 minutes, i think it
was the diagram from slide 11 here:
i suddenly realised that the combination of each ROB line plus the
reservation station is *directly* equivalent to a "scoreboard" line.
* dest reg
* src reg1
* src reg2
* func unit producing value Qi
* func unit producing value Qj
* src reg has value Ri y/n
* src reg has value Rj y/n
* op: ROB "opcode"
* busy: ROB "completed y/n"
* dest reg: ROB "dest reg"
* src reg1: Reservation Station
* src reg2: Reservation Station
* func unit producing value Qi: Common Data Bus via ROB#
* func unit producing value Qj: Common Data Bus via ROB#
* src reg has value Ri y/n: Reservation Station / ROB has ROB# instead of value
* src reg has value Rj y/n: Reservation Station / ROB has ROB# instead of value
however, they're *not* directly equivalent, because in scoreboarding
there's absolutely no way to "roll back" operations. you commit to
the operation and you better hope nothing goes wrong (like an
i think, really, by the time scoreboarding is modified and augmented
with all the additional pieces of the puzzle, you end up *with*
More information about the libre-riscv-dev