Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Svolgimento Fetch, Schemi e mappe concettuali di Architettura Dei Calcolatori

Come Svoglere Le FETCH nei loro dettaglio

Tipologia: Schemi e mappe concettuali

2024/2025

Caricato il 08/06/2026

francesco-agazzi
francesco-agazzi 🇮🇹

3 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Guida alla Risoluzione del Datapath MIPS
a Ciclo Singolo
Questa guida fornisce uno schema generale per analizzare il flusso di dati nel processore
MIPS. L'approccio consigliato è immaginare il datapath come un sistema idraulico: il flusso
parte sempre dal Program Counter (PC) e si dirige verso destra, ma il percorso cambia in
base a quali "rubinetti" (Multiplexer) vengono aperti dai segnali di controllo.
1. Fase di Fetch (Comune a tutte le istruzioni)
Indipendentemente dal tipo di istruzione, i primi passi sono sempre identici:
1. Lettura PC: Si parte dall'indirizzo contenuto nel Program Counter.
2. Lettura Istruzione: Si preleva l'istruzione dalla Memoria Istruzioni.
3. Aggiornamento PC: Si calcola $PC + 4$ (indirizzo della prossima istruzione
sequenziale).
2. Fase di Decode (Analisi)
L'istruzione viene divisa nei suoi campi binari. Bisogna guardare l'Opcode (primi 6 bit) per
capire quale delle tre strade principali seguirà il dato.
3. I tre percorsi principali
A. Istruzioni di Tipo R (Aritmetiche/Logiche)
Esempi: add, sub, and, or, slt
Queste istruzioni lavorano esclusivamente all'interno dei registri.
Lettura Registri: Vengono letti i dati da $rs e $rt.
ALU (Operazione):
o Il Multiplexer (ALUSrc) seleziona il Dato B del registro (valore 0).
o L'ALU esegue il calcolo (es. somma).
Memoria Dati: Viene completamente saltata (ignorata).
Scrittura (Write Back):
o Il risultato dell'ALU torna indietro al Banco dei Registri.
o Il registro di destinazione è $rd (bit 15-11).
o Segnali Chiave: RegDst = 1, RegWrite = 1, ALUSrc = 0, MemtoReg = 0.
B. Istruzioni di Tipo I - Load & Store
Esempi: lw (Load Word), sw (Store Word)
Queste istruzioni calcolano un indirizzo per accedere alla memoria RAM.
pf3

Anteprima parziale del testo

Scarica Svolgimento Fetch e più Schemi e mappe concettuali in PDF di Architettura Dei Calcolatori solo su Docsity!

Guida alla Risoluzione del Datapath MIPS

a Ciclo Singolo

Questa guida fornisce uno schema generale per analizzare il flusso di dati nel processore MIPS. L'approccio consigliato è immaginare il datapath come un sistema idraulico: il flusso parte sempre dal Program Counter (PC) e si dirige verso destra, ma il percorso cambia in base a quali "rubinetti" (Multiplexer) vengono aperti dai segnali di controllo.

1. Fase di Fetch (Comune a tutte le istruzioni)

Indipendentemente dal tipo di istruzione, i primi passi sono sempre identici:

  1. Lettura PC: Si parte dall'indirizzo contenuto nel Program Counter.
  2. Lettura Istruzione: Si preleva l'istruzione dalla Memoria Istruzioni.
  3. Aggiornamento PC: Si calcola $PC + 4$ (indirizzo della prossima istruzione sequenziale).

2. Fase di Decode (Analisi)

L'istruzione viene divisa nei suoi campi binari. Bisogna guardare l' Opcode (primi 6 bit) per capire quale delle tre strade principali seguirà il dato.

3. I tre percorsi principali

A. Istruzioni di Tipo R (Aritmetiche/Logiche)

Esempi: add, sub, and, or, slt Queste istruzioni lavorano esclusivamente all'interno dei registri.

  • Lettura Registri: Vengono letti i dati da $rs e $rt.
  • ALU (Operazione): o Il Multiplexer (ALUSrc) seleziona il Dato B del registro (valore 0). o L'ALU esegue il calcolo (es. somma).
  • Memoria Dati: Viene completamente saltata (ignorata).
  • Scrittura (Write Back): o Il risultato dell'ALU torna indietro al Banco dei Registri. o Il registro di destinazione è $rd (bit 15-11). o Segnali Chiave: RegDst = 1, RegWrite = 1, ALUSrc = 0, MemtoReg = 0.

B. Istruzioni di Tipo I - Load & Store

Esempi: lw (Load Word), sw (Store Word) Queste istruzioni calcolano un indirizzo per accedere alla memoria RAM.

  • Lettura Registri: Viene letto il registro base $rs.
  • Estensione del Segno: L'offset (16 bit) viene esteso a 32 bit.
  • ALU (Calcolo Indirizzo): o Il Multiplexer (ALUSrc) seleziona il valore esteso immediato (valore 1). o L'ALU esegue sempre una somma (Base + Offset) per trovare l'indirizzo di memoria.
  • Memoria Dati: o Se è lw: Si legge il dato all'indirizzo calcolato. o Se è sw: Si scrive il valore di $rt in memoria (MemWrite = 1).
  • Scrittura (Solo per lw): o Il dato letto dalla memoria viene scritto nel registro. o Il registro di destinazione è $rt (bit 20-16), non $rd. o Segnali Chiave (lw): RegDst = 0, MemtoReg = 1, RegWrite = 1.

C. Istruzioni di Branch

Esempio: beq (Branch on Equal) Queste istruzioni decidono se saltare a una parte diversa del codice.

  • Confronto: L'ALU sottrae i due registri ($rs - $rt). Se il risultato è zero, attiva il flag Zero.
  • Calcolo Salto: In parallelo, l'offset esteso e shiftato (x4) viene sommato a $PC+4$.
  • Decisione (Logica del PC): o Se Zero = 1 (registri uguali) AND Branch = 1 (istruzione beq) $\rightarrow$ Il PC viene sovrascritto con l'indirizzo di salto. o Altrimenti $\rightarrow$ Il PC rimane $PC+4$.
  • Scrittura: Nessun registro viene modificato (RegWrite = 0). 4. Tabella di Controllo Rapido (I Bivi del Datapath) Usa questa tabella per verificare la correttezza del percorso durante gli esercizi: Componente (Bivio) Domanda da farsi Risposta per TIPO R (add) Risposta per Load/Store (lw/sw) Mux Ingresso ALU (ALUSrc) Uso un registro o un numero fisso? Registro (0) Numero Esteso (1) Mux Destinazione (RegDst) Dove scrivo? In $rd o $rt? $rd (bit 15-11) $rt (bit 20-16) Memoria Dati Leggo, scrivo o ignoro? Ignoro lw: Leggo / sw: Scrivo Mux Uscita Finale (MemtoReg) Cosa salvo nel registro? Risultato ALU Dato da Memoria (lw) 5. Consigli Pratici per l'Esame Quando ti trovi davanti allo schema del datapath vuoto: