Varianti ed evoluzioni architetturali

// obiettivi di apprendimento
Distinguere l’architettura CISC da quella RISC per filosofia, struttura e implicazioni sul pipelining
Confrontare il modello di Von Neumann con l’architettura di Harvard e comprenderne le differenze strutturali
Collegare le scelte architetturali (memoria e ISA) all’efficienza del sistema di elaborazione
📄
Slides
Varianti architetturali

Dopo aver analizzato il modello di Von Neumann, il ciclo macchina e le ottimizzazioni come pipeline e cache, è il momento di allargare la prospettiva. L’evoluzione dei calcolatori non si è limitata a migliorare il modello originale — ha prodotto varianti architetturali basate su scelte progettuali fondamentalmente diverse.

// livello 1
Organizzazione della memoria
Von Neumann vs Harvard — memoria condivisa o separata?
// livello 2
Filosofia dell’insieme di istruzioni
CISC vs RISC — istruzioni complesse o semplici?

Il collo di bottiglia di Von Neumann

Nel modello classico, dati e istruzioni condividono la stessa memoria e lo stesso bus. Questo comporta una conseguenza strutturale precisa:

// limite strutturale
La CPU non può accedere contemporaneamente a un’istruzione e a un dato. Istruzioni e dati condividono lo stesso canale — devono transitare uno alla volta. Con l’aumento della velocità dei processori, questo limite è diventato il principale ostacolo alle prestazioni.
VON NEUMANN
Memoria unificata
Memoria condivisa
[ dati + istruzioni ]
↕ bus unico
CPU
HARVARD
Memorie separate
Mem.
istruzioni
Mem.
dati
↕ bus separati
CPU

L’architettura di Harvard

L’architettura di Harvard supera il collo di bottiglia separando fisicamente la memoria delle istruzioni da quella dei dati e utilizzando bus distinti per ciascuna. Il risultato è che la CPU può prelevare un’istruzione e leggere/scrivere un dato nello stesso istante.

// vantaggi
Accessi simultanei a dati e istruzioni
Riduzione del collo di bottiglia
Migliore sfruttamento del pipelining
// svantaggi
Maggiore complessità hardware
Progettazione più costosa

Dove si utilizza Harvard?

🔌
Microcontrollori
Arduino, PIC, AVR — sistemi a risorse limitate
📡
DSP
Digital Signal Processor — audio, telecomunicazioni
🏭
Embedded
Sistemi industriali, automotive, IoT
// Harvard modificata
I processori moderni per PC e server adottano una soluzione intermedia detta Harvard modificata: la separazione tra cache istruzioni (I-Cache) e cache dati (D-Cache) è logica ma la memoria principale rimane condivisa. Si ottengono i vantaggi di Harvard a livello di cache mantenendo la semplicità di Von Neumann a livello di RAM.

CISC vs RISC — la filosofia dell’insieme di istruzioni

Se Von Neumann e Harvard riguardano l’organizzazione della memoria, CISC e RISC riguardano invece la filosofia dell’ISA — l’Instruction Set Architecture, ovvero l’insieme delle istruzioni che il processore è in grado di eseguire.

// la domanda di fondo
È meglio avere poche istruzioni semplici oppure molte istruzioni complesse?

Architettura CISC — Complex Instruction Set Computing

Le architetture CISC nascono con l’obiettivo di rendere il linguaggio macchina più vicino ai linguaggi di alto livello: un’unica istruzione complessa può compiere più operazioni in un solo comando.

// caratteristiche
Insieme di istruzioni molto ampio
Istruzioni complesse — più operazioni in un comando
Molte modalità di indirizzamento
Lunghezza delle istruzioni variabile
// implicazioni
Richiede più cicli di clock per istruzione
Fase di decode più complessa (lunghezza variabile)
Programmi più compatti (meno istruzioni totali)
Pipelining più difficile da ottimizzare
// esempio CISC — x86
IMUL EAX, [EBX+ECX*4+8]   ; moltiplica EAX per il dato in memoria
                            ; calcolando l'indirizzo: EBX + ECX×4 + 8
                            ; tutto in una sola istruzione

Architettura RISC — Reduced Instruction Set Computing

Le architetture RISC nascono come risposta ai limiti delle CISC. L’idea è opposta: ridurre il numero di istruzioni, rendendole semplici e uniformi per favorire l’esecuzione in un singolo ciclo di clock e ottimizzare la pipeline.

// caratteristiche
Insieme di istruzioni ridotto
Istruzioni semplici di lunghezza fissa
Separazione netta tra operazioni ALU e accessi alla memoria (LOAD/STORE)
Ottimizzazione forte per il pipelining
// implicazioni
Ogni istruzione completata in un ciclo di clock
Hardware più semplice e prevedibile
Programmi leggermente più lunghi (più istruzioni)
Esecuzione complessiva spesso più efficiente
// esempio RISC — ARM / RISC-V
LDR R1, [R2, #8]   ; carica il dato da memoria in R1
MUL R0, R0, R1     ; moltiplica R0 × R1 → R0
                   ; stessa operazione dell'esempio CISC
                   ; ma separata in due istruzioni semplici

Confronto diretto — CISC vs RISC

CaratteristicaCISCRISC
Dimensione ISAAmpia — centinaia di istruzioniRidotta — poche decine di istruzioni
Lunghezza istruzioniVariabileFissa
Cicli per istruzioneVariabile (1–20+)Tendenzialmente 1
Complessità hardwareElevataRidotta
PipeliningDifficile da ottimizzareOttimizzato nativamente
Accesso alla memoriaIntegrato nelle istruzioni ALUSolo con LOAD / STORE dedicati
Esempi realiIntel x86, AMD64ARM, RISC-V, MIPS, Apple Silicon

I due livelli di progettazione — schema di sintesi

È fondamentale tenere distinti i due livelli: Harvard/Von Neumann e CISC/RISC riguardano aspetti diversi dell’architettura — e possono essere combinati liberamente.

LIVELLO MEMORIA
Come sono organizzati dati e istruzioni
Von Neumann ←→ Harvard
Memoria condivisa vs memorie separate
LIVELLO ISA
Come sono strutturate le istruzioni della CPU
CISC ←→ RISC
Istruzioni complesse vs istruzioni semplici

Combinazioni nei processori moderni

Intel / AMD x86-64
ISA CISC esternamente, ma traduce internamente in micro-operazioni RISC-like durante l’esecuzione
Harvard modificata + CISC
Apple Silicon / ARM
ISA RISC con estensioni, ottimizzata per efficienza energetica — domina smartphone, tablet e laptop moderni
Harvard modificata + RISC
Microcontrollori
Harvard pura con ISA ridotta — massima prevedibilità e velocità su sistemi embedded real-time
Harvard pura + RISC
// principio fondamentale
Le prestazioni non dipendono solo dalla velocità del clock, ma dalle scelte progettuali interne. Separare memoria e dati riduce i colli di bottiglia. Semplificare le istruzioni favorisce il parallelismo. Ottimizzare la struttura interna permette di sfruttare meglio pipeline e cache.

Riepilogo

  • Nel modello di Von Neumann, dati e istruzioni condividono memoria e bus — questo crea il collo di bottiglia
  • L’architettura Harvard separa fisicamente le due memorie con bus distinti, consentendo accessi simultanei
  • La Harvard modificata è il compromesso usato nei processori moderni: cache I/D separate, RAM condivisa
  • Harvard e Von Neumann riguardano l’organizzazione della memoria — CISC e RISC riguardano l’insieme di istruzioni
  • Le architetture CISC (x86) usano istruzioni complesse e variabili — programmi compatti, decode complessa, pipelining difficile
  • Le architetture RISC (ARM, RISC-V) usano istruzioni semplici e fisse — ogni istruzione in un ciclo, pipelining ottimale
  • I processori moderni combinano i due livelli: Intel/AMD traducono CISC in micro-op RISC internamente
  • La scelta architetturale non riguarda solo la velocità, ma l’efficienza complessiva del sistema

Lascia un commento