A cura di Gerardo Bonelli
52228
Pag. 1
- Introduzione 4
- Codifiche 4
- Codifica binaria
- Conversione decimale binario
- Conversione binario decimale
- Codifica in modulo e segno
- Codifica in complemento a due
- Notazione scientifica
- Standard IEEE 754
- Codifica esadecimale
- Codifica alfanumerica ASCII
- Circuiti 8
- Elementi di base dell’algebra di commutazione
- Teorema fondamentale dell’algebra di commutazione
- Teorema fondamentale duale
- Moduli combinatori 11
- Codificatore
- Decodificatore
- Multiplatore
- Demultiplatore
- ROM
- PLA
- Memorie 13
- Latch
- Flip Flop
- Registri
- RAM
- ALU 17
- Aritmetica binaria
- Addizione
- Sottrazione
- Moltiplicazione
- Divisione
- Celle addizionatrici
- Operazioni effettuate dai circuiti ALU
- Architettura di Von Neumann 19
- Istruzioni
- Fetch ed execute
- Cenni di multiprogrammazione
- Architettura MIPS 21
- Assembler MIPS
- Planimetria
- Input/output 24
- Tipologie di I/O
- Esempi di periferiche
- BUS 26
- BUS processore-memoria
- BUS di I/O
- BUS backplane
- BUS sincroni e asincroni
Pag. 2
- Tecniche di arbitraggio
- Centralizzato parallelo
- Distribuito per autoselezione
- Recupero delle collisioni
- Concatenamento a festone
- Prestazioni di un’architettura 29
- Analisi delle prestazioni
- CPI
- MIPS
- MFLOPS
- Overclocking
- Gerarchie di memoria 30
- Cenni di Programmazione Assembler 31
Introduzione
L’Architettura dei Calcolatori Elettronici è la disciplina che studia, idea e progetta calcolatori elettronici più o meno complessi, in maniera da ottenere la massima resa possibile con una spesa sempre più contenuta. La composizione di un calcolatore elettronico si basa sul modello di Von Neumann e quindi su 4 componenti fondamentali quali CPU, RAM, Input e Output.
Pag. 3
Chi si occupa di architettura dei calcolatori ha il compito di costruire sistemi di elaborazione di diversa complessità (da una semplice scheda elettronica a un complesso sistema con grossa potenza di calcolo) mettendo insieme questi componenti elementari.
Un problema assai discusso agli albori dei calcolatori elettronici furono le modalità di programmazione. Nel 1944 Von Neumann si unì al progetto ENIAC proprio con l’intento di semplificare le modalità di programmazione, fissando le basi dei calcolatori odierni. Oggi, per poter gestire l’hardware di un calcolatore bisogna conoscere il suo linguaggio; ogni calcolatore è infatti in grado di comprendere un unico set di istruzioni, e sulla base del set di istruzioni definiamo architetture di varia natura. Il software eseguibile su un dato calcolatore non può essere eseguito su un calcolatore che non è in grado di interpretare lo stesso set di istruzioni; il passaggio di Apple da processori PowerPC a Intel ha reso inutilizzabile tutto il software scritto per hardware precedente, tanto per fare un esempio tangibile. Nonostante ciò, tutti i linguaggi assembler sono relativamente simili, poiché le architetture si basano sugli stessi principi di base e alcune operazioni devono poter essere eseguite da ogni calcolatore.
Prenderemo per lo più in esame il set di istruzioni che proviene da processori MIPS.
Codifiche
La matematica alla base di un calcolatore elettronico si basa sul sistema sistema numerico posizionale numerico binario. Si tratta di un a base 2, che ammette solo due simboli, quali “0” ed “1”. È sensibilmente diverso rispetto al unità, decine, centinaia, sistema decimale1, pertanto al posto di (...) avremo unità, duine, quattrine, ottine, (...), e potranno assumere solo valori {0,1}.
Codifica binaria
La Codifica Binaria è il più semplice sistema di codifica che utilizza l’alfabeto binario.
Bit. Un bit di memoria è il più piccolo spazio di memoria presente all’interno di un calcolatore. Può ospitare una o ovvero una variabile binaria booleana, una variabile che possiede due soli stati (0 ed 1). Utilizzando K bit di memoria, si ottengono 2k combinazioni differenti; il susseguirsi di 8 bit forma 1 byte. Sulla base di ciò, si è arrivati a considerare il bit ed il byte, con i corrispondenti multipli, come unità di misura dello spazio occupato da una certa informazione.
Multipli fondamentali
| Nome | Simbolo | Multiplo | Nome | Simbolo | Multiplo |
|---|---|---|---|---|---|
| Kilobyte | kB | 103 | Kibibyte | KiB | 210 |
| Megabyte | MB | 106 | Mebibyte | MiB | 220 |
| Gigabyte | GB | 109 | Gibibyte | GiB | 230 |
| Terabyte | TB | 1012 | Tebibyte | TiB | 240 |
Pag. 4
Conversione decimale-binario
La conversione da Decimale a Binario si effettua mediante ripetute divisioni per due, considerando solo il resto (1 o 0). Il corrispondente numero in forma binaria sarà dato dal susseguirsi di tutti i resti ottenuti, a partire dall’ultimo.
Per esempio:
Conversione binario-decimale
Per convertire un numero binario in un numero decimale basta sommare fra loro le singole cifre ciascuna moltiplicata per il proprio peso.
Per esempio:
Abbiamo dunque: 1 x 32 + 0 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 45
Ovviamente il procedimento può essere reso più rapido sommando solo i bit uguali a 1 (infatti il contributo dei bit zero è nullo).
Codifica in modulo e segno
Nella codifica numerica è opportuno indicare tanto il modulo del numero di interesse quanto il suo segno. La codifica in modulo e segno permette di conseguire quest’obiettivo. La tecnica prevede che il primo bit venga utilizzato per indicare il segno; mentre i restanti bit per il modulo.
Pag. 5
Questa tecnica prevede che venga utilizzato il primo bit del dato per indicare il segno (0 se positivo, 1 se negativo) e i restanti bit per codificare il valore assoluto.
Prendiamo il valore precedentemente calcolato 1011012. Con la codifica in modulo e segno è necessario aggiungere un bit sulla sinistra: se per esempio volessimo rappresentare 4510, con questa codifica avremmo: 11011012. La cifra in rosso rappresenta il segno.
Codifica in complemento a due
Con il complemento a due, il bit iniziale può avere un valore positivo oppure negativo, e da questo deriva il fatto che tutti i numeri che cominciano con un "1" sono numeri binari negativi, mentre quelli che iniziano con "0" sono numeri binari positivi. Attraverso questo metodo è possibile avere un’unica rappresentazione dello zero e poter eseguire efficacemente le addizioni o le sottrazioni sempre avendo il primo bit che ci indicherà il relativo segno.
Si vuole rappresentare il numero -510 su 6 bit.
Iniziamo col rappresentare il modulo di 5. 5 = 0001012
Calcoliamone il complemento: ¬ 000101 = 111010
Aggiungiamo 111010 + 000001 = 111011 = -510
Notazione scientifica
La notazione scientifica è un modo conciso di esprimere i numeri reali utilizzando le potenze intere della base utilizzata per la notazione posizionale. Il principale vantaggio è quello di permettere di utilizzare grandezze molto grandi o molto piccole senza memorizzare lunghe sequenze di 0, infatti viene considerata una sola cifra intera diversa da 0, seguita dalla parte decimale del numero di interesse, il tutto moltiplicato per 10K, con K intero che può essere sia positivo che negativo.
Standard IEEE 754
Lo standard IEEE 754 per il calcolo in virgola mobile è lo standard più diffuso nel campo del calcolo automatico. Questo standard definisce il formato per la rappresentazione dei numeri in virgola mobile ed un set di operazioni effettuabili su questi. Specifica inoltre quattro metodi di arrotondamento e ne descrive cinque eccezioni.
Un numero in virgola mobile, secondo lo standard IEEE è rappresentato su parole di 32, 64 o 128 bit divisi in tre parti:
Pag. 6
- S; un bit di segno
- E; un campo di esponente
- M; un campo di mantissa
Il numero cercato, con la codifica secondo lo standard IEEE 754 sarà dato dalla giustapposizione dei tre campi.
Codifica esadecimale
Il sistema numerico esadecimale (spesso abbreviato come esa o hex) è un sistema numerico posizionale in base 16, cioè che utilizza 16 simboli invece dei 10 del sistema numerico decimale tradizionale. Per l'esadecimale si usano in genere simboli da 0 a 9 per le prime dieci cifre, e poi le lettere da A a F per le successive sei cifre, per un totale di 16 simboli.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Codifica ASCII
Codice Standard ASCII (American Standard Code for Information Interchange, Americano per lo Scambio di Informazioni) è un codice per la codifica di caratteri.
La codifica ASCII di base rappresentava i caratteri su 7 bit (cioè 128 caratteri possibili, da 0 a 127).
Pag. 7
Circuiti
Il calcolatore può essere visto come una rete logica cioè come un insieme di dispositivi chiamati porte logiche connessi. I circuiti logici sono componenti hardware che manipolano informazione binaria. I circuiti di base sono detti porte logiche (logical gate). Le porte logiche sono dispositivi in grado di eseguire operazioni logiche su segnali binari. I segnali binari sono livelli di tensione. Il valore esatto della tensione del segnale non è significativo: conta l’appartenenza ad un livello contrassegnato alto e ad un livello contrassegnato basso.
Questi livelli sono identificati tramite una coppia di simboli:
| 0 | 1 |
| Low | High |
| False | True |
| Open | Close |
L’algebra che useremo è dovuta a Boole ed è detta algebra booleana. Le variabili di questa algebra sono binarie, possono assumere solo due valori (0,1). Le variabili si indicano con le lettere A,B,C,X,Y,W,Z. Le operazioni base sono AND ( • ), OR ( + ), NOT ( ¯ ) Possiamo definire questi operatori tramite la tabella di verità:
AND Prodotto logico
OR – Somma logica
NOT Negazione logica
I Circuiti digitali possono essere classificati in:
- Circuiti logici combinatori dove i valori presenti in uscita in tali circuiti dipendono esclusivamente dalle combinazioni binarie in ingresso e non
Pag. 8
Dalla sequenza temporale con cui tali combinazioni vengono fornite al circuito.
- Circuiti sequenziali dove le uscite dipendono anche dalla sequenza (cioè dall'ordine con cui vengono forniti gli ingressi). Per fare un esempio, una porta AND è un circuito combinatorio, in quanto non ha nessuna importanza l'ordine con cui vengono forniti i due valori di ingresso: l'uscita dipende semplicemente dalla combinazione (00, 01, 10 o 11) presente in ingresso.
Porte logiche
Le porte logiche derivano direttamente dagli operatori dell’algebra booleana quali AND, OR e NOT.
NOT – Complemento di un bit
AND – Prodotto di due bit
OR – Somma logica di due bit (il caso 1 + 1 restituisce sempre valore logico alto)
NOR (NAND) – Complemento dell’OR(NAND)
XOR – Somma modulo di due bit
XNOR – Complemento di XOR
Attraverso queste porte possiamo esprimere funzioni differenti.
Ogni funzione ammette due forme canoniche che sono, rispettivamente, la forma somma di prodotti (SoP) e quella prodotto di somme (PoS).
Le forme SOP sono somme di prodotti (sum of product), ovvero OR di minterm.
Un Minterm è una funzione booleana che assume il valore 1 in corrispondenza di un'unica configurazione di variabili (booleane) in ingresso indipendenti.
Le forme POS sono prodotti di somme (product of sum),
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Tesina Architettura dei calcolatori
-
Tesina di Architettura dei Calcolatori Elettronici
-
Tesina Architettura dei calcolatori elettronici
-
Calcolatori Elettronici II - Tesina