Questo documento offre una trattazione organica e approfondita dei principi
che governano il funzionamento e la progettazione dei calcolatori elettronici.
Dall’algebra booleana che ne costituisce il fondamento matematico, fino alle
complesse architetture parallele che caratterizzano i processori moderni, ogni
argomento è stato affrontato con un approccio sistematico. L’obiettivo è fornire
una guida di livello accademico che non solo riassuma i concetti chiave, ma
li contestualizzi e li approfondisca, creando una solida base di conoscenza
sull’architettura dei sistemi di calcolo.
Capitolo 1: Introduzione ai Calcolatori Elettronici
1.1 Breve Storia del Calcolo Automatico
La storia dei calcolatori è un percorso che parte da semplici strumenti mec-
canici e arriva ai complessi dispositivi elettronici odierni. * Abaco: Uno dei
primi strumenti per il calcolo. * Pascalina (1642): Blaise Pascal inventa una
macchina calcolatrice meccanica capace di eseguire addizioni e sottrazioni. *
Macchina Analitica (1837): Charles Babbage progetta, ma non realizza com-
pletamente, la prima macchina calcolatrice programmabile, dotata di un’unità
di calcolo (mill) e una memoria (store). Ada Lovelace, collaboratrice di Bab-
bage, è considerata la prima programmatrice della storia. * Primi Calcolatori
Elettronici: Durante la Seconda Guerra Mondiale, nascono i primi calcolatori
elettronici come il Colossus (per decifrare i codici tedeschi) e l’ENIAC (per
calcoli balistici). Erano macchine enormi, basate su valvole termoioniche, e non
programmabili in senso moderno (la programmazione avveniva ricablando la
macchina).
1.2 L’Architettura di Von Neumann
La svolta concettuale arriva nel 1945 con John von Neumann, che definisce un
modello architetturale per un calcolatore a programma memorizzato. Questa
architettura, che è alla base di quasi tutti i calcolatori moderni, si fonda su tre
caratteristiche chiave:
1. Programma Memorizzato (Stored Program): Le istruzioni del
programma sono memorizzate nella stessa memoria utilizzata per i dati.
Questo rende il calcolatore universale e facilmente riprogrammabile.
2. Uso dell’Aritmetica Binaria: Tutte le informazioni (dati e istruzioni)
sono codificate in formato binario.
3. Struttura a Componenti: Il calcolatore è suddiviso in quattro compo-
nenti funzionali principali: 1
• CPU (Central Processing Unit): Il “cervello” del calcolatore. È
a sua volta composta da:
– ALU (Arithmetic Logic Unit): Esegue le operazioni arit-
metiche (somma, sottrazione) e logiche (AND, OR, NOT).
– CU (Control Unit): Interpreta le istruzioni del programma e
genera i segnali di controllo per coordinare le altre componenti.
– Registri: Piccole e velocissime unità di memoria interne alla
CPU, usate per memorizzare temporaneamente dati e indirizzi.
• Memoria Principale (RAM): Memorizza dati e istruzioni. È una
memoria volatile, veloce e ad accesso casuale (Random Access Mem-
ory).
• Periferiche di Input/Output (I/O): Permettono al calcolatore
di interagire con il mondo esterno (tastiera, mouse, monitor, dischi).
• Bus di Sistema: Un insieme di collegamenti elettrici che connette
tutte le componenti, permettendo lo scambio di dati, indirizzi e seg-
nali di controllo.
1.3 Rappresentazione dell’Informazione
Tutte le informazioni in un calcolatore sono rappresentate da sequenze di bit
(binary digit), che possono assumere valore 0 o 1. * Numeri Interi: * Senza
segno: Un numero a N bit può rappresentare valori da 0 a 2^N - 1. * Com-
plemento a 2: È la rappresentazione standard per i numeri interi con segno.
Un numero a N bit può rappresentare valori da -2^(N-1) a +2^(N-1) - 1. Il bit
più significativo (MSB) indica il segno (0=positivo, 1=negativo). Il vantaggio è
che la sottrazione si riduce a una somma. * Numeri Reali (Floating Point):
Lo standard più diffuso è l’IEEE 754, che rappresenta un numero in virgola
mobile tramite tre campi: segno, esponente e mantissa. * Caratteri: Codificati
tramite tabelle come ASCII (7/8 bit per carattere) o Unicode (es. UTF-8),
che supporta un insieme molto più vasto di caratteri.
Capitolo 2: Reti Logiche e Algebra Booleana
Il funzionamento fisico di un calcolatore si basa su circuiti elettronici digitali, il
cui comportamento è descritto matematicamente dall’algebra di Boole.
2.1 Algebra di Boole e Porte Logiche
L’algebra di Boole è un sistema algebrico in cui le variabili possono assumere
solo due valori, 0 (falso) e 1 (vero). Le operazioni fondamentali sono: * AND
(prodotto logico): Y è 1 solo se A e B sono entrambi 1. * OR
Y = A · B.
(somma logica): Y è 1 se almeno uno tra A e B è 1. * NOT
Y = A + B.
(negazione o complemento): Y è 1 se A è 0, e viceversa.
Y = ¬A.
Queste operazioni sono realizzate fisicamente da circuiti chiamati porte logiche
2
(AND, OR, NOT, NAND, NOR, XOR).
2.2 Reti Combinatorie
Una rete combinatoria è un circuito la cui uscita in un dato istante dipende
unicamente dagli ingressi in quello stesso istante. Non ha memoria. * Anal-
isi: Data una rete, derivare la sua funzione logica e la tabella di verità. *
Sintesi: Data una funzione logica, progettare il circuito corrispondente. Il pro-
cesso di sintesi include: 1. Minimizzazione: Semplificare la funzione logica
per ridurre il numero di porte necessarie. Uno strumento classico per la minimiz-
zazione manuale sono le Mappe di Karnaugh, che permettono di identificare
e raggruppare i termini adiacenti di una funzione booleana. 2. Realizzazione:
Implementare il circuito usando un set di porte logiche (es. solo porte NAND).
Esempi di circuiti combinatori sono il sommatore, il multiplexer (seleziona
uno tra più ingressi), il demultiplexer (invia l’ingresso a una tra più uscite) e
il decoder.
2.3 Reti Sequenziali
Una rete sequenziale è un circuito la cui uscita dipende non solo dagli ingressi
attuali, ma anche dalla storia passata degli ingressi. Possiede quindi uno stato
interno, ovvero ha memoria.
• Latch: È l’elemento di memoria fondamentale. Un Latch SR (Set-Reset)
è un semplice circuito con due stati stabili che può “ricordare” un bit.
• Flip-Flop: È un’evoluzione del latch, sincronizzato da un segnale di
clock. Cambia stato solo in corrispondenza di un fronte del segnale di
clock (es. fronte di salita). È l’elemento base per costruire registri e mem-
orie.
• Registri: Insiemi di flip-flop usati per memorizzare una parola di N bit
(es. un registro a 32 bit è composto da 32 flip-flop).
• Macchine a Stati Finiti (FSM): Un modello matematico per descrivere
il comportamento delle reti sequenziali. Una FSM è definita da un insieme
di stati, un insieme di ingressi, una funzione di transizione di stato e una
funzione di uscita.
Capitolo 3: Le Prestazioni di un Calcolatore
Valutare le prestazioni di un calcolatore è un compito complesso.
3.1 Metriche di Performance
• Tempo di Risposta (Response Time): Il tempo che intercorre tra
l’inizio e la fine di un’operazione. 3
• Throughput: Il numero totale di operazioni completate in un’unità di
tempo.
• Tempo di CPU: Il tempo che la CPU impiega effettivamente per
eseguire un programma. Si calcola come: Tempo di CPU = Numero di
Istruzioni * CPI * Periodo di Clock
– Numero di Istruzioni: Dipende dal programma e dal compilatore.
– CPI (Cycles Per Instruction): Il numero medio di cicli di clock
necessari per eseguire un’istruzione. Dipende dall’architettura della
CPU.
– Periodo di Clock (1 / Frequenza): La durata di un ciclo di clock.
Dipende dalla tecnologia hardware.
Migliorare le prestazioni significa ridurre il tempo di CPU, agendo su uno o più
di questi fattori.
3.2 Benchmark
I benchmark sono programmi standardizzati usati per misurare e confrontare le
prestazioni di sistemi diversi. Esempi noti sono i benchmark SPEC (Standard
Performance Evaluation Corporation).
3.3 Legge di Amdahl
La legge di Amdahl descrive il miglioramento massimo teorico delle prestazioni
di un sistema quando solo una parte di esso viene migliorata. Lo speedup
complessivo è limitato dalla frazione di tempo in cui il miglioramento non è
applicabile.
Speedup = 1 / [(1 - F) + (F / S)]
Dove è la frazione di tempo in cui il miglioramento è utilizzabile e è lo
F S
speedup ottenuto in quella frazione. La legge di Amdahl evidenzia che bisogna
concentrarsi sull’ottimizzazione del “caso comune” (il “collo di bottiglia”).
Capitolo 4: Architettura della CPU
4.1 Il Set di Istruzioni (ISA - Instruction Set Architecture)
L’ISA è l’interfaccia tra l’hardware e il software. Definisce il set di istruzioni che
la CPU può eseguire, i registri, i formati di indirizzamento, ecc. * CISC (Com-
plex Instruction Set Computer): Architetture con un set di istruzioni vasto
e complesso. Le istruzioni possono eseguire operazioni complesse in un singolo
passo (es. architettura x86). * RISC (Reduced Instruction Set Com-
puter): Architetture con un set di istruzioni piccolo, semplice e regolare. Ogni
istruzione esegue un’operazione elementare. Questo semplifica la progettazione
della CPU e favorisce tecniche come il pipelining (es. architetture ARM, MIPS).
4
4.2 Il Datapath e l’Unità di Controllo
Il datapath è la parte della CPU che contiene i circuiti per eseguire le istruzioni:
l’ALU, i registri, i bus interni. L’unità di controllo (CU) genera i segnali che
comandano il datapath, orchestrando il flusso di dati per eseguire l’istruzione
richiesta.
Il ciclo di esecuzione di un’istruzione si articola in fasi: 1. Fetch: L’istruzione
viene prelevata dalla memoria all’indirizzo indicato dal Program Counter (PC).
2. Decode: L’unità di controllo decodifica l’istruzione per capire cosa fare.
3. Execute: L’ALU esegue l’operazione richiesta. 4. Memory: Eventuale
accesso alla memoria (lettura o scrittura). 5. Write-back: Il risultato viene
scritto in un registro.
4.3 Pipelining
Il pipelining è una tecnica fondamentale per migliorare le prestazioni della CPU.
Sovrappone l’esecuzione di più istruzioni, dividendo il ciclo di esecuzione in stadi
(es. le 5 fasi sopra). Mentre un’istruzione è in fase di Execute, l’istruzione
successiva è in fase di Decode e quella dopo ancora in fase di Fetch.
In una pipeline ideale a N stadi, il throughput si avvicina a 1 istruzione per
ciclo di clock (CPI � 1), con uno speedup teorico di N.
Criticità (Hazard) della Pipeline: * Hazard Stru
-
Miei appunti personali presi con latex di Ricerca operativa
-
Miei appunti personali presi con latex di Sistemi operativi e laboratorio
-
Miei appunti personali presi con latex di Fisica tecnica applicata
-
Miei appunti presi con latex di Telecomunicazioni