1. Componenti di una interfaccia di una periferica

Su un’architettura di elaborazione di calcolo come RISC o x86: L’interazione tra CPU e dispositivi periferici è mediata L’interfaccia (o device controller), la quale connette fisicamente e logicamente il dispositivo al bus di sistema.

L’accesso ai registri dell’interfaccia avviene tramite indirizzamento Memory-Mapped (mappato in memoria ,es. RISC) o tramite Istruzioni speciali di I/O (I/O Port map, es. architetture x86).

I componenti principali dell’architettura di un’interfaccia sono:

  • Unità di Controllo dell’interfaccia (Control Unit):
    • Gestisce la logica di accesso al bus e interpreta i comandi della CPU.
    • Effettua il bus snooping: monitora il bus degli indirizzi e attiva l’interfaccia solo quando riconosce l’indirizzo univoco assegnato alla periferica.
    • Gestisce i segnali di controllo e sincronizzazione (handshaking) come BusyAckInterrupt Request e Read/Write.
  • *Registro Dati (Data Register):
    • Funge da buffer temporaneo bidirezionale per i dati in transito tra CPU e periferica.
    • È essenziale per disaccoppiare la velocità di trasferimento della CPU (elevata) da quella della periferica (spesso più lenta), nascondendo la latenza.
  • Registro di Stato (Status Register):
    • Mantiene i flag che descrivono lo stato operativo corrente della periferica (es. IdleBusyErrorDone/Ready).
    • Viene letto dalla CPU (in polling o su interrupt) per verificare se la periferica è pronta a ricevere o trasmettere nuovi dati.

2. Modalità d'accesso a livello ISA alle periferiche : Meccanismo di Indirizzamento

2.1. Accesso con indirizzamento Memory-mapped (MMIO):

  • L’accesso alla periferica è mascherato dall’accesso alla memoria principale, si definiscono indirizzi speciali di I/O (tipicamente in area kernel) che, anziché puntare a celle di memoria, identificano un buffer di una periferica .
  • Il controller di ogni periferica «ascolta» il bus indirizzi, quando riconosce l’indirizzo associato si attiva.

La CPU o le istruzioni del programma , accedono alle periferiche (registri del device controller) attraverso il loro indirizzo di memoria (come se fosse un accesso in ram) Gli indirizzi di memoria delle periferiche vengono elencati come un indirizzi della memoria principale , i quali vengono istanziati sul blocco OS Kernel della memoria , questi indirizzi delle periferiche sebbene vengono mappati sugli indirizzi della memoria non puntano ad una cella di memoria (come fanno i dati/istruzioni di un programma ) ma referenziano un buffer/registro di una periferica (esterno alla memoria) connessa al bus system :

  • questa modalità d’accesso viene conosciuta come Memory Mapped (MMIO).
  • Le architetture MIPS32 (RISC in generale) , accedono alle periferiche con indirizzamento Memory-mapped .

In questa architettura non esistono istruzioni dedicate per l’I/O (come in/out su x86); la CPU utilizza le istruzioni standard di accesso alla memoria (es. Load e Store nelle architetture RISC) per comunicare con l’hardware esterno.

A. Organizzazione dello Spazio di Indirizzamento (Unified Address Space)

Abbiamo un unico spazio di indirizzamento per la gestione delle periferiche , dati e istruzioni del programma, la memoria principale ha una capacita di dirizzamento di 2^32 indirizzi x 1 byte= 4GB (i registri della CPU hanno larghezza 32 bit) , quindi avremmo un unico spazio di indirizzamento di 4GB, visto come un unico blocco di memoria :

  1. Spazio Utente / Memoria porzione 2 GB: per la memoria DATI (RAM) e memoria Text/istruzioni (Flash) .
  2. Spazio Kernel porzione I/O 2GB : per i registri delle diverse periferiche Input/Output :
    • rappresentato spesso come un unico blocco detto :“spazio kernel” , “OS kernel” , “HAL (per i MCU)” .
  • 📌 Leggere [[Note sulle architetture#^8e5083]]]

⚠️ come fanno le architetture RISC quando devono gestire più di 4 GB ? o più di 2GB di dati e istruzioni ? se la capacita di indirizzamento della CPU è di 4 GB ?

  • 📌Leggere [[Note sulle architetture#^8041a1]]

B. Meccanismo Hardware: Routing(Instradamento) della Richiesta

Come fa la CPU a distinguere tra un accesso alla RAM e uno a una periferica?

  1. Generazione Richiesta: La CPU esegue un’istruzione di memoria (es. lw $s0, INDIRIZZO in MIPS).
  2. Instradamento (Address Decoding):
    • Nelle architetture semplici (MCU senza MMU), il Bus Interconnect decodifica l’indirizzo fisico. Se l’indirizzo rientra nel range mappato per le periferiche (es. 0x40000000 – 0x5FFFFFFF su STM32), il segnale di selezione viene inviato al Device Controller corrispondente anziché al controller della RAM.
    • Nelle architetture avanzate (con MMU), l’indirizzo virtuale viene prima tradotto e controllato per i permessi. Se valido, viene instradato fisicamente verso il bus di I/O.
  3. Attivazione del Controller: Il controller della periferica riconosce di essere stato selezionato (tramite logica di Chip Select o decodifica sul bus) e risponde all’operazione di lettura/scrittura manipolando i propri registri interni

C. Equivoco Comune: “Memory Mapped” vs “Copia in Memoria”

  • Errato: Pensare che il registro di stato della periferica venga copiato periodicamente in una cella di RAM dal sistema.
  • Corretto: L’indirizzo di memoria è solo un “alias” o un “puntatore”. Quando la CPU accede a quell’indirizzo, il bus elettrico scavalca la RAM e connette i pin dati della CPU direttamente ai flip-flop del registro hardware della periferica. Non esiste alcuna copia in RAM.
  • In sintesi :
    • Quando diciamo che i registri data e status del controller sono memory-mappednon significa che esista una copia in RAM.
    • Significa che a quegli indirizzi di memoria (nello spazio di indirizzamento CPUnon corrisponde una cella di RAM, ma corrisponde un registro fisico del controller HW.
    • quando la CPU genera l’indirizzo :
      • Se indirizzo ∈ RAM → accedi alla SRAM/Flash.
      • Se indirizzo ∈ range periferica (es. 0x4000xxxx su STM32) → la richiesta viene instradata al device controller che risponde con i suoi registri.

D . Gestione SW e Protezione dei Registri dei Device controller :

Poiché i registri delle periferiche controllano l’hardware, l’accesso diretto deve essere regolamentato per garantire la stabilità del sistema.

  • Spazio Kernel: Gli indirizzi MMIO sono tipicamente mappati nello spazio di memoria riservato al Kernel del Sistema Operativo.
  • Protezione: Un programma utente non può eseguire una store diretta su questi indirizzi (la MMU o la MPU bloccherebbe l’accesso generando un’eccezione).
  • System Calls: Per effettuare I/O, il programma utente deve invocare il Sistema Operativo tramite una Syscall. Il SO, operando in modalità privilegiata (Kernel Mode), esegue le istruzioni di accesso alla memoria (sw/lw) sugli indirizzi riservati del device controller.
	sw $s0, indirizzo
	lw $s0, indirizzo
# dove lindirizzoè al di fuori dallo spazio fisico della memoria RAM.
  1. controller delle periferiche ascoltano tutti i segnali in transito sul bus e si attivano solamente quando riconoscono sul bus indirizzi, l’indirizzo corrispondente alla propria locazione di memoria (o porta) .
  2. Gli indirizzi riservati ai registri del controller fanno di solito riferimento alla porzione di memoria riservata al SO e non accessibile quindi al programma utente.
  3. I programmi utente devono quindi passare dal SO per accedere a questi indirizzi riservati (modalità kernel) e quindi effettuare operazioni di I/O. Questo è quanto viene fatto ricorrendo alle istruzioni dell’ISA di System Call (syscall).

2.2. Accesso con Istruzioni Speciali di I/O (Port-Mapped I/O)

In questa modalità, nota come I/O Isolato o Port-Mapped I/O, i registri del device controller non fanno parte dello spazio di memoria indirizzabile, ma risiedono in uno spazio di indirizzamento separato (I/O Address Space). L’accesso avviene tramite istruzioni dedicate dell’ISA (Instruction Set Architecture) progettate specificamente per l’input/output.

Meccanismo di Funzionamento: La CPU esegue un’istruzione di I/O specificando due operandi fondamentali:

  • Indirizzo di I/O (Numero di Porta): Un identificativo univoco che seleziona il dispositivo e lo specifico registro interno al controller.
  • Dato/Comando: Il valore da trasferire (comando da inviare o dato da leggere/scrivere), tipicamente contenuto in un registro della CPU (es. Accumulatore AX/EAX).

Protezione e Privilegi: Per garantire la sicurezza e la stabilità del sistema, queste istruzioni sono definite come privilegiate. Esse possono essere eseguite legalmente solo quando il processore si trova in Kernel Mode (es. Ring 0 su x86). Se un programma utente tenta di accedere direttamente ai device controller tramite queste istruzioni, la CPU solleva un’eccezione (General Protection Fault), impedendo l’accesso diretto all’hardware.

Esempio Architetturale: Questa metodologia è caratteristica delle architetture Intel x86 (IA-32) e IBM 370.

Snippet di codice

# Esempio Assembly x86 (Sintassi Intel)
out 70h, ax   ; Trasferisce il contenuto del registro AX (Dato/Comando)
              ; alla porta di I/O indirizzo 0x70 (Registro del Controller)[cite: 724, 725].

2.3. MMIO VS Port-Mapped

3.1 Memory-Mapped I/O (MMIO)

In questa modalità, i registri delle periferiche sono mappati nello stesso spazio di indirizzamento della memoria principale (RAM).

  • Vantaggi:
    • Semplificazione dell’ISA (Instruction Set Architecture): Non sono necessarie istruzioni dedicate per l’I/O. La CPU utilizza lo stesso set di istruzioni standard previste per la memoria (come lw – load word e sw – store word) per leggere e scrivere nei registri di controllo.
    • Flessibilità nell’indirizzamento: Poiché si usano le istruzioni di memoria, è possibile sfruttare tutte le modalità di indirizzamento supportate dalla CPU (es. indirizzamento indiretto, indicizzato) anche per le periferiche, semplificando la scrittura dei driver.
    • Protezione tramite MMU: L’accesso alle periferiche può essere protetto sfruttando lo stesso meccanismo di protezione della memoria virtuale; i registri vengono mappati in pagine riservate allo spazio Kernel (“System Space”), rendendoli inaccessibili ai programmi utente.
  • Svantaggi:
    • Consumo dello spazio di indirizzamento: I registri delle periferiche occupano indirizzi che vengono sottratti allo spazio indirizzabile della memoria RAM4. In architetture a 32 bit con molto I/O (es. schede video con grandi frame buffer), questo può ridurre significativamente la memoria RAM utilizzabile.
    • Complessità nella decodifica: Il sistema di memoria e il bus devono decodificare l’indirizzo per capire se la richiesta è diretta alla RAM o a una periferica (bus snooping/decoding), il che può richiedere logica hardware aggiuntiva per gestire la mappatura.

3.2 Istruzioni Speciali di I/O (Port-Mapped / I/O Isolato)

Questa modalità utilizza uno spazio di indirizzamento separato per le periferiche, accessibile solo tramite istruzioni specifiche previste dall’ISA (come in e out su x86).

  • Vantaggi:
    • Isolamento dello spazio di indirizzamento: Lo spazio di memoria RAM e lo spazio di I/O sono fisicamente e logicamente distinti. L’I/O non “consuma” indirizzi di memoria, lasciando l’intero range di indirizzamento disponibile per la RAM.
    • Codice più chiaro: L’uso di istruzioni specifiche (es. OUT 70h, AX 7) rende immediatamente evidente nel codice assembly quando si sta effettuando un’operazione di I/O rispetto a un accesso in memoria.
  • Svantaggi:
    • Complessità della CPU: Richiede che il processore implementi istruzioni dedicate e linee di controllo aggiuntive sul bus per segnalare che l’operazione è di I/O e non di memoria.
    • Rigidità: Le istruzioni speciali spesso supportano modalità di indirizzamento limitate (es. solo immediato o tramite registro accumulatore), rendendo meno flessibile la manipolazione dei dati rispetto alle istruzioni di memoria complete.
    • Protezione Hardware Rigida: La protezione è garantita rendendo queste istruzioni “privilegiate” (illegali in user-mode)9. Tuttavia, questo meccanismo è meno granulare rispetto alla gestione pagina per pagina offerta dalla MMU nel memory-mapped I/O.

3.3 Tabella Riassuntiva

CaratteristicaMemory-Mapped I/O (MMIO)Istruzioni Speciali (Port-Mapped)
Istruzioni usateStandard (Load/Store) 10Dedicate (In/Out) 11
Spazio IndirizziCondiviso con la RAM 12Separato (dedicato) 13
Efficienza RAMRiduce lo spazio indirizzabile per la RAMNon impatta lo spazio RAM
Architetture TipicheRISC (MIPS, ARM) 14CISC (x86, IBM370) 15

3. ISA MIPS – ISA x86

1. MIPS

L’architettura MIPS utilizza l’approccio Memory-mapped I/O. In questo modello non esistono istruzioni dedicate specificamente all’I/O .

  • Meccanismo: I registri dei controller delle periferiche (device controller) vengono mappati nello stesso spazio di indirizzamento della memoria principale. Agli occhi della CPU, i registri di stato e dati delle periferiche sono semplici celle di memoria situate in indirizzi specifici (solitamente riservati allo spazio Kernel) .
  • Istruzioni: Si utilizzano le istruzioni standard di accesso alla memoria, come lw (load word) per leggere dati da una periferica e sw (store word) per inviare comandi o dati.
  • Esempio: Dove indirizzo_periferica è un indirizzo fisico al di fuori dello spazio RAM, ma accessibile tramite il bus.lw $s0, indirizzo_periferica ; Legge dal registro della periferica sw $s0, indirizzo_periferica ; Scrive nel registro della periferica

2. x86 (Intel IA-32)

L’architettura x86 è caratterizzata dall’uso di Istruzioni speciali di I/O (spesso definito Isolated I/O o Port-mapped I/O). Sebbene l’x86 possa utilizzare anche il memory-mapped I/O, la sua ISA definisce uno spazio di indirizzamento separato per le periferiche6.

  • Meccanismo: Esiste uno spazio di indirizzamento di I/O distinto da quello della memoria. I dispositivi vengono identificati tramite un “numero di porta” (I/O port)7.
  • Istruzioni: L’ISA fornisce istruzioni specifiche come IN e OUT per comunicare con le porte8. Queste istruzioni trasferiscono dati tra un registro della CPU (spesso l’accumulatore EAX o AX) e la porta specificata999.
  • Esempio: In questo caso, la CPU invia sul bus il numero della porta (70h) come indirizzo e il segnale di controllo specifica che si tratta di un accesso allo spazio I/O e non alla memoria10.out 70h, ax ; Trasferisce il contenuto di AX alla porta di I/O 70h

3. Sintesi delle differenze

CaratteristicaISA MIPS (Memory-Mapped)ISA x86 (I/O Isolato)
Spazio indirizziCondiviso con la memoria (RAM)Separato (Spazio I/O o Porte)
Istruzioni usateStandard Load/Store (lwsw)Dedicate (inout)
ProtezioneGestita tramite permessi di memoria (Kernel Space)Istruzioni privilegiate (Kernel Mode)
VantaggiSemplicità dell’ISA (meno istruzioni)Non consuma spazio di indirizzamento della memoria

In entrambi i casi, l’accesso diretto ai controller è tipicamente consentito solo in modalità Kernel (dal Sistema Operativo o dai driver), impedendo ai programmi utente di accedere direttamente all’hardware per motivi di sicurezza.

4. Modalità di protezione per d'accesso a livello di sistema alle periferiche : Architettura di Gestione e Protezione della Memoria (MMU – MPU)

A livello di sistema (System Level), non è sufficiente che la CPU generi un indirizzo (tramite MMIO o I/O Port); è necessario un meccanismo hardware (es, MMU e MPU) intermedio che garantisca la sicurezza, l’isolamento e la traduzione degli accessi prima che questi raggiungano il bus di sistema .

Questa categoria hardware definisce chi ha il diritto di accedere a una risorsa e come l’indirizzo logico viene mappato sulla risorsa fisica .

1. Il Flusso dell’Indirizzo: Dal Core alla Periferica

Il percorso di una richiesta di I/O attraversa tre stadi logici distinti :

  1. Generazione (CPU Core): Il processore emette un indirizzo (Virtuale (MMU) o Fisico(MPU)) e un tipo di accesso (Read/Write, Instruction Fetch/Data Access).
  2. Filtraggio e Traduzione (MMU / MPU):
    • MMU (Memory Management Unit): Nelle architetture avanzate (es. x86Cortex-A), intercetta l’Indirizzo Virtuale (VA). Esegue due operazioni:
      • Traduzione: Converte il VA in Indirizzo Fisico (PA) usando le Page Table.
      • Protezione: Verifica i permessi (es. Kernel vs User, Read-Only). Se il check fallisce, solleva un’eccezione (Page Fault).
    • MPU (Memory Protection Unit): Nelle architetture embedded/real-time (es. Cortex-M, R52), intercetta l’Indirizzo Fisico (non c’è traduzione). Verifica che l’indirizzo rientri in una “regione” configurata come valida per il livello di privilegio corrente. Se fallisce, genera un Fault (es. MemManage Fault).
  3. Instradamento (Bus Interconnect / Matrix):
    • Una volta che l’indirizzo (ormai sicuramente fisico e validato) esce dalla MMU/MPU, il Bus Interconnect (o Bus Matrix) esegue la decodifica degli indirizzi (Address Decoding). È questo blocco che instrada fisicamente i segnali di Chip Select verso la periferica corretta (es. abilita la RAM, la Flash o il registro della UART) basandosi sulla mappa di memoria hardware.

⚠️👁️ Né la MMU né la MPU “instradano” l’indirizzo. Il loro compito è validare (MPU) o tradurre e validare (MMU). L’instradamento è compito del Bus Interconnect(Cortex-A) o Bus Matrix(cortex-M).

2. Esempio del Flusso dell’Indirizzo: Cortex-M VS Cortex-A VS intel core i7

  • Architettura Embedded (es. Cortex-M su STM32):
    1. CPU: Genera Indirizzo Fisico.
    2. MPU: Confronta l’indirizzo con le “regioni” configurate.
      • Check OK: L’indirizzo passa intatto.
      • Check Fail: Genera eccezione (MemManage Fault), l’accesso è bloccato.
    3. Bus Matrix (Interconnect): Prende l’indirizzo fisico (ormai validato) e attiva la linea di selezione (Chip Select) della periferica giusta (es. GPIO, UART, RAM).
  • Architettura Avanzata (es. Cortex-A su BeagleBone):
    1. CPU: Genera Indirizzo Virtuale (VA).
    2. MMU:
      • Traduzione: Cerca nella TLB (Translation Lookaside Buffer) o nelle Page Table per trovare l’Indirizzo Fisico (PA) corrispondente.
      • Protezione: Controlla i permessi (es. User vs Kernel, RWX).
      • Check Fail: Genera eccezione (Page Fault o Permission Fault).
    3. Bus Interconnect: Prende l’Indirizzo Fisico (PA) in uscita dalla MMU e lo instrada verso la periferica o la DRAM.
  • Architettura High-Performance (es. Intel Core i7 su PC):
    1. CPU: Le unità di esecuzione (AGU) generano un Indirizzo Virtuale (noto come Linear Address).
    2. MMU:
      • Traduzione: Le TLB (suddivise in Istruzioni e Dati) traducono istantaneamente l’indirizzo in Fisico (PA).
      • Protezione: Verifica i livelli di privilegio (Ring 0 vs Ring 3) e i permessi di accesso (es. Read-Only, No-Execute).
      • Check Fail: Genera un’eccezione hardware critica chiamata Page Fault (#PF).
    3. System Agent (Uncore): Riceve l’Indirizzo Fisico (PA) e lo instrada verso il controller di memoria (per la RAM) o verso il Root Complex (per le periferiche MMIO su PCIe).

3. MMU (Memory Management Unit)

  • Funzione Primaria: traduce indirizzi virtuali → fisici (paging/segmentazione, TLB), isola processi e implementa protezioni (P&H). Necessaria per OS completi.
  • Ambito: Sistemi Operativi General Purpose (LinuxWindowsAndroid).
  • Comportamento: Permette di mappare registri fisici di I/O (MMIO) nello spazio
  • virtuale del kernel, rendendoli invisibili o inaccessibili allo spazio utente (User Mode) se non tramite mapping specifico. Garantisce isolamento totale tra processi.
  • Esempio reale: su x86 la MMU gestisce la traduzione virtuale (con paging a 4KB/2MB/1GB) e TLB.

4. MPU (Memory Protection Unit)

  • Funzione Primaria : Protezione degli indirizzi fisiciNon effettua traduzione (Virtuale = Fisico).; definisce regioni fisiche con attributi (R/W/X, privilegi). Tipica dei microcontroller ARM Cortex‑M.
  • Ambito: Sistemi Embedded Real-Time, Microcontrollori (Cortex-M, R52), Bare-metal o RTOS.
  • Comportamento: Definisce “regioni” di memoria fisica con permessi specifici (es. Read-Only, No-Execute, Privileged Access Only). Se un driver tenta di accedere a una regione MMIO non permessa dalla MPU, viene generata un’eccezione (es. MemManage Fault), ma l’indirizzo emesso dalla CPU è quello che arriva al bus.

5. Differenze Architetturali: MMU vs MPU

CaratteristicaMMU (Memory Management Unit)MPU (Memory Protection Unit)
DominioGeneral Purpose (PC, Server, Smartphone)Embedded Real-Time, Safety-Critical, Automotive
Funzione ChiaveVirtualizzazione della memoria + ProtezioneProtezione deterministica delle regioni di memoria
IndirizzamentoTraduce Virtuale $\to$ FisicoUsa solo Indirizzi Fisici (Flat mapping)
Obiettivo SWIsolamento processi (ogni processo ha il suo spazio virtuale), Paging su disco.Protezione da Stack Overflow, isolamento Task RTOS vs Kernel, protezione da scritture errate (Safety).
EsempioLinux tenta di accedere a 0xDEADBEEF (Virtuale) $\to$ MMU mappa a RAM fisica 0x1000.Firmware tenta di scrivere in Flash (RO) $\to$ MPU blocca e genera Hardware Fault immediato.
  • Altre Piattaforme :
    1. PIC32 (MIPS32 MCU): tipicamente no MMU; indirizzi fisici. Alcune varianti possono offrire protezioni limitate a livello MPU/regioni, ma non MMU con paging.
    2. x86 (PC)MMU + IOMMU (questa ultima per l’indirizzamento DMA dei device bus‑master).

6. Dove si trovano fisicamente i moduli HW MPU-MMU?

Sia la MMU che la MPU sono moduli hardware strettamente integrati nel Core della CPU (all’interno del design del processore stesso), non sono chip separati sulla scheda madre né blocchi distanti sul silicio del SoC.

7. tabella di confronto : Cortex-M VS Cortex-A VS intel core i7

CaratteristicaCortex-M (STM32)Cortex-A (BeagleBone)Intel Core i7 (PC)
Tipo Indirizzo GeneratoFisicoVirtualeVirtuale (Lineare)
Modulo di GestioneMPU (Opzionale)MMUMMU (TLB + PMH)
Funzione PrincipaleProtezione AccessiTraduzione + ProtezioneTraduzione + Protezione
Posizione FisicaInterfaccia Bus CorePipeline (Integrata)Distribuita (L1-I / L1-D)
Routing FisicoBus Matrix AHB/APBInterconnect AXISystem Agent / Ring Bus

Caso A: STM32F (Cortex-M4) – MPU

  • Posizione: All’interno dell’IP del Core ARM Cortex-M4.
  • Dettaglio: Quando STMicroelectronics compra la licenza “Cortex-M4” da ARM per stamparla sul silicio, la MPU è un blocco opzionale dentro quella macro-cella. Si trova fisicamente tra l’unità di esecuzione (ALU/Registri) e l’interfaccia bus del processore (D-Code/I-Code bus).
  • Perché lì? Deve bloccare un accesso illegale in pochi cicli di clock, prima che la richiesta esca dal processore e intasi il bus di sistema.

Caso B: BeagleBone Black (TI AM335x – Cortex-A8) – MMU

  • Posizione: All’interno dell’IP del Core ARM Cortex-A8.
  • Dettaglio: La MMU è parte integrante della pipeline del processore.
  • Componenti interni: Include le TLB (piccole cache ad altissima velocità che memorizzano le traduzioni recenti).
  • Perché lì? Poiché ogni singola istruzione e ogni accesso ai dati richiede una traduzione di indirizzo, la MMU deve operare alla velocità di clock della CPU (es. 1 GHz). Se fosse esterna al core, il sistema sarebbe lentissimo.

Caso C : Intel Core i7 (PC)

A differenza di un blocco unico, nel Core i7 la MMU è frammentata e distribuita fisicamente all’interno del die del Core per massimizzare la velocità:

  • ITLB (Instruction TLB): Si trova nello stadio di Fetch, adiacente alla Cache L1 Istruzioni. Traduce l’indirizzo del codice da eseguire.
  • DTLB (Data TLB): Si trova nel backend di esecuzione, adiacente alle Load/Store Units e alla Cache L1 Dati. Traduce gli indirizzi dei dati (variabili, buffer).
  • Page Miss Handler (PMH): È un circuito logico dedicato situato nel cluster di gestione della memoria del core, che gestisce i casi in cui l’indirizzo non è presente nelle TLB, accedendo autonomamente alla RAM per leggere le tabelle delle pagine.

5. Accesso alle periferiche : Indirizzamento VS Protezione

CategoriaConcetto ChiaveDomanda a cui rispondeSottotipi
1. Indirizzamento (Addressing)Interfaccia ISACome parlo con la periferica? (Che istruzioni uso?)MMIO (Load/Store)

Port I/O (Special Instr.)
2. Protezione (Management)Controllo AccessiChi può parlare e come viene filtrato l’accesso?MMU (Virtualizzazione + Protezione)
MPU (Solo Protezione Fisica)