Calcolatore per Esercizi di Calcolatori Elettronici
Appunti ed Esercizi di Calcolatori Elettronici: Guida Completa
I calcolatori elettronici rappresentano il fondamento dell’informatica moderna. Questa guida completa, ispirata agli insegnamenti del prof. Pietro Leonardo Stroppa, copre tutti gli aspetti essenziali per comprendere e risolvere esercizi su architetture dei calcolatori, sistemi di numerazione, algebra booleana e organizzazione della memoria.
1. Sistemi di Numerazione e Conversioni
1.1. Sistema Binario
Il sistema binario è la base di tutti i calcolatori digitali. Utilizza solo due cifre: 0 e 1, chiamate bit (binary digit). Ogni gruppo di 8 bit forma un byte, che può rappresentare 256 valori diversi (28).
- Conversione da decimale a binario: Dividere ripetutamente per 2 e annotare i resti
- Conversione da binario a decimale: Moltiplicare ogni bit per 2n (dove n è la posizione da destra, partendo da 0) e sommare
- Binario con segno: Il bit più significativo (MSB) rappresenta il segno (0=positivo, 1=negativo)
| Sistema | Base | Cifre Utilizzate | Esempio (valore 10) |
|---|---|---|---|
| Binario | 2 | 0, 1 | 1010 |
| Ottale | 8 | 0-7 | 12 |
| Decimale | 10 | 0-9 | 10 |
| Esadecimale | 16 | 0-9, A-F | A |
1.2. Esercizi Pratici
Per esercitarsi con le conversioni:
- Convertire 197 in binario (risultato: 11000101)
- Convertire 10110101 binario in decimale (risultato: 181)
- Convertire 255 in esadecimale (risultato: FF)
- Rappresentare -45 in binario con 8 bit usando complemento a due
2. Algebra Booleana e Porte Logiche
2.1. Operatori Booleani Fondamentali
L’algebra booleana opera su variabili binarie (0 o 1) con tre operatori principali:
- AND (∧): 1 solo se entrambi gli operandi sono 1
- OR (∨): 1 se almeno un operando è 1
- NOT (¬): Inverte il valore (0→1, 1→0)
| Porta | Simbolo | Tabella di Verità | Espressione |
|---|---|---|---|
| AND | & |
0 0=0 0 1=0 1 0=0 1 1=1 |
A ∧ B |
| OR | ≥1 |
0 0=0 0 1=1 1 0=1 1 1=1 |
A ∨ B |
| NOT | O |
0=1 1=0 |
¬A |
2.2. Porte Logiche Derivate
Dalle porte fondamentali derivano altre porte utili:
- NAND: NOT AND – Universale (può implementare qualsiasi funzione)
- NOR: NOT OR – Universale
- XOR: 1 se gli input sono diversi
- XNOR: 1 se gli input sono uguali
2.3. Esercizi di Progettazione
Progettare i seguenti circuiti:
- Half Adder (sommatore di 1 bit senza riporto)
- Full Adder (sommatore di 1 bit con riporto)
- Decodificatore 2:4 (2 input, 4 output)
- Multiplexer 4:1 (4 input, 1 output, 2 selettori)
3. Architettura della CPU
3.1. Componenti Principali
Una CPU moderna è composta da:
- Unità di Controllo (CU): Gestisce l’esecuzione delle istruzioni
- Unità Aritmetico-Logica (ALU): Esegue operazioni matematiche e logiche
- Registri: Memoria ultra-veloce per dati temporanei
- Cache: Memoria intermedia tra CPU e RAM
- Bus: Canali di comunicazione (dati, indirizzi, controllo)
3.2. Ciclo di Istruzione
Ogni istruzione segue questo ciclo:
- Fetch: Prelevamento dell’istruzione dalla memoria
- Decode: Decodifica dell’istruzione
- Execute: Esecuzione dell’operazione
- Memory Access: Accesso alla memoria se necessario
- Write Back: Scrittura del risultato
3.3. Prestazioni della CPU
Le prestazioni si misurano con:
- Clock Speed: Frequenza in GHz
- IPC (Istruzioni per ciclo): Efficienza dell’architettura
- MIPS: Milioni di istruzioni per secondo
- FLOPS: Operazioni in virgola mobile per secondo
Formula per calcolare i MIPS:
MIPS = (Numero di Istruzioni) / (Tempo di Esecuzione × 106)
4. Gerarchia della Memoria
4.1. Livelli di Memoria
La gerarchia della memoria ottimizza costi e prestazioni:
- Registri: Nanosecondi, pochi byte
- Cache L1/L2/L3: 1-10 ns, KB-MB
- RAM: 50-100 ns, GB
- SSD: 25-100 μs, TB
- HDD: 5-10 ms, TB
- Memoria Secondaria: ms-s, TB-PB
4.2. Calcolo Indirizzamento
Per calcolare lo spazio di indirizzamento:
Spazio = 2n byte (dove n = numero di bit dell’indirizzo)
Esempio: con indirizzi a 32 bit → 232 = 4 GB
4.3. Esercizi di Memoria
- Calcolare quanti bit servono per indirizzare 16 GB di memoria
- Determinare la dimensione massima indirizzabile con 24 bit
- Calcolare il tempo medio di accesso in un sistema con:
- Hit rate cache = 90%
- Tempo accesso cache = 2 ns
- Tempo accesso RAM = 100 ns
5. Risorse Accademiche Autorevoli
Per approfondire gli argomenti trattati, consultare queste risorse ufficiali:
- Dipartimento di Informatica – Stanford University: Corsi avanzati su architetture dei calcolatori
- National Institute of Standards and Technology (NIST): Standard per sistemi digitali e misurazioni delle prestazioni
- MIT OpenCourseWare – Computer Science: Materiali completi su calcolatori elettronici
6. Strategie per Risolvere gli Esercizi
6.1. Approccio Metodologico
- Comprendere il problema: Leggere attentamente la domanda
- Identificare i dati: Estrapolare tutte le informazioni utili
- Scegliere la formula: Selezionare quella appropriata
- Eseguire i calcoli: Step by step con attenzione alle unità di misura
- Verificare il risultato: Controllare la coerenza con le aspettative
6.2. Errori Comuni da Evitare
- Confondere bit e byte (1 byte = 8 bit)
- Dimenticare il segno nei numeri binari
- Sbagliare l’ordine dei bit (MSB vs LSB)
- Non considerare il complemento a due per numeri negativi
- Unità di misura incoerenti (KB vs KiB)
6.3. Strumenti Utili
- Calcolatrice scientifica con conversione di base
- Simulatori di circuiti logici (Logisim, DigitalJS)
- Fogli di calcolo per tabelle di verità complesse
- Software di benchmark per misurare prestazioni reali
7. Esempi di Esami e Soluzioni
7.1. Esempio 1: Conversione e Aritmetica Binaria
Domanda: Convertire 1987 in binario, poi sommare 45 (in binario) al risultato.
Soluzione:
- 1987 in binario:
- 1024 (210) → 1
- 512 (29) → 1
- 256 (28) → 1
- 128 (27) → 1
- 64 (26) → 1
- 32 (25) → 0
- 16 (24) → 0
- 8 (23) → 0
- 4 (22) → 1
- 2 (21) → 1
- 1 (20) → 1
Risultato: 11111000111
- 45 in binario: 101101
- Allineamento: 11111000111 + 0000101101
- Somma binaria:
11111000111 + 101101 ----------- 11111110000
- Risultato finale: 11111110000 (2032 in decimale)
7.2. Esempio 2: Progettazione Circuito Logico
Domanda: Progettare un circuito che implementi la funzione F = (A ∧ B) ∨ (¬A ∧ ¬B).
Soluzione:
- Costruire tabella di verità:
A B A ∧ B ¬A ∧ ¬B F 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 - Riconoscere che F = 1 quando A=B (funzione XNOR)
- Implementazione con:
- 2 porte AND
- 2 porte NOT
- 1 porta OR