Simulatore Architettura Out-of-Order: Algoritmo di Tomasulo & Reorder Buffer

Simulatore interattivo ciclo-per-ciclo • Confronto tra Tomasulo Base (Senza ROB) e Architettura Speculativa con ROB

Ciclo: 0
💡 Tocca o passa il mouse sui blocchi dello schema per i dettagli hardware
Velocità:
Editor Assembly RISC-V (Istruzioni: ADD, ADDI, SUB, MUL, LW, SW, BEQ, JAL • Registri: x0..x31 o ABI • Etichette supportate)
1. ISSUE (Dispatch)In Ordine
Pronto a iniziare la simulazione.
2. EXECUTE (Unità Funzionali)Out-of-Order
Nessuna operazione in esecuzione.
3. WRITEBACK (Broadcast CDB)Out-of-Order
Common Data Bus inattivo.
4. COMMIT (Solo con ROB)Disattivato
In modalità Senza ROB il Register File si aggiorna direttamente in Writeback.
SCHEMA ARCHITETTURALE INTERATTIVO — Flusso Dati Ciclo per Ciclo
■ Issue ■ Execute ■ CDB & Snooping ■ ROB Commit ■ Flush
1. Instruction Queue (FIFO) 5 in coda Testa: ADDI x1, x0, 20 Succ: ADD x4, x1, x2 2. Issue / Dispatcher Pronto (Premi Step) 3. Register File + Campo Qi (Renaming) x0:0(0) | x1:10(0) | x2:4(0) | x3:2(0) x4:0(0) | x5:5(0) | x6:0(0) | x7:0(0) Formato: Reg:Valore(Qi) • Qi=0: pronto, Qi≠0: attende Tag Load / Store Buffers LS1: Busy=0 | Libero LS2: Busy=0 | Libero Campi: Busy, Op, A (Addr), V, Q ALU Reservation Stations (1..3) RS1: Busy=0 | Libera RS2: Busy=0 | Libera RS3: Busy=0 | Libera Pronta per Execute quando Qj=0 e Qk=0 MUL Reservation Stations MUL1: Busy=0 | Libera MUL2: Busy=0 | Libera Latenza esecuzione MUL: 3 cicli Memory Unit Idle ALU (ADD / SUB / ADDI) Idle (Latenza 1 ciclo) Multiplier (MUL) Idle (Latenza 3 cicli) Reorder Buffer (ROB) DISATTIVATO (Senza ROB) Head: - Tail: - Occupati: 0 / 6 CDB scrive diretto in RegFile COMMON DATA BUS (CDB) — Broadcast (Tag, Valore) a Reservation Stations, Register File e ROB
↔ Scorri lo schema in orizzontale o usa il pulsante "📐 Adatta Schema" in alto
Coda Istruzioni (Instruction Queue - In Ordine)
PCIstruzione AssemblyOpDest (rd)rs1rs2 / Imm
Reservation Stations (Campi: Busy, Op, Vj, Vk, Qj, Qk) Qj / Qk = 0 significa operando pronto in Vj / Vk
Stazione Busy Op Vj (Val 1) Vk (Val 2) Qj (Tag 1) Qk (Tag 2) Tag Uscita Stato nel Ciclo
Load / Store Buffers (Campi: Busy, Op, A = Indirizzo, V = Dato, Q = Tag)
BufferBusyOpA (Indirizzo)V (Dato SW)Q_AddrQ_DataStato
Register File + Campo Qi (Qi = Tag che scriverà il registro, 0 se valido)
Reorder Buffer (ROB Circolare a 6 Slot) HEAD (Commit) TAIL (Issue)
SlotPtrBusyIstruzioneDestValoreReadyStato
Memoria Dati RAM (Indirizzi Attivi)
Cronologia Eventi Hardware (Ciclo per Ciclo)