Estratto del documento

Università degli Studi della Basilicata

Architettura dei calcolatori elettronici 1

Introduzione

L'architettura dei calcolatori elettronici è la disciplina che si occupa della composizione e dell'ideazione di calcolatori più o meno complessi, ottenendo la massima resa prestazionale con il minimo costo possibile. Nello specifico, la composizione del sistema si basa intorno ad una derivazione del modello di Von Neumann (1944), basato su quattro componenti fondamentali: CPU, memoria, input e output.

In questa trattazione si cercherà di affrontare questi concetti evidenziando come queste componenti siano collegate tra loro, evidenziando gli aspetti fondamentali delle componenti singole e degli apparati che compongono. Si partirà dall'elaborazione ciclica dei dati, dalla loro codifica ed elaborazione circuitale, alla memorizzazione, seguendone poi il ciclo all'interno del calcolatore. Una volta introdotta le architetture di Von Neumann, SEC-XR e MIPS si passerà alla microprogrammazione, seguita dalle gerarchie di memoria, concludendo infine con i principi della programmazione.

Codifiche

Affinché un calcolatore possa comprendere i dati in ingresso, è necessario codificarli in maniera standard per renderne possibile analisi, elaborazione e memorizzazione tramite un numero finito di simboli.

Codifica binaria

È il più semplice dei sistemi di codifica: viene utilizzato l'alfabeto binario, ovvero composto semplicemente dai valori “1” e “0” e viene utilizzato nei dispositivi bistabili (ovvero in grado di assumere solo due configurazioni). Utilizzando K bit di memoria (il bit è il più piccolo spazio di memoria occupabile su un calcolatore) si ottengono 2K combinazioni diverse. Sulla base di questa considerazione si è arrivati a usare i bit come unità di misura dello spazio occupato da una determinata informazione.

L'unità di misura della memoria può infatti essere espressa come:

  • 8 Bit = 1 Byte
  • 1024 Byte = 1 KiloByte
  • 1024 KiloByte = 1 MegaByte
  • 1024 MegaByte = 1 GigaByte

Codifica in modulo e segno

È necessario, nella codifica numerica, poter indicare sia il numero sia il segno del valore. Uno dei due metodi utilizzati per conseguire quest'obiettivo è la codifica in modulo e segno. 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 come esempio il numero binario 11101. Per ottenere la conversione dobbiamo sommare i valori di tutti i bit di valore 1, escluso il primo in quanto indica il segno. Otteniamo quindi:

  • -(23 + 22 + 20) = -13

Viceversa, se sostituissimo il valore del primo bit con “0” otterremmo come soluzione “+13”.

Codifica in complemento a due

Abbiamo precedentemente accennato che esistono due tecniche per codificare i valori numerici. Il secondo è quello della codifica in complemento a due, che prevede di assegnare ancora una volta il compito di identificare il segno al primo bit, ma che a differenza del metodo con modulo e segno viene sommato agli altri bit. Considerando lo stesso valore preso in considerazione in precedenza otteniamo:

  • -(23 + 22 + 20) = -3

Opposto del complemento a due

Possiamo calcolare l'opposto in complemento a due facendo il complemento di tutti i numeri al bit. Vediamo ancora con lo stesso numero di esempio, 11101 diventa:

  • 11101 + 1 = 00011

Che in binario ha valore 3, ovvero l'opposto del valore che avevamo in partenza.

Esempi di codifiche

Un numero di parte intera può venire codificato tramite la tecnica delle divisioni successive, mentre un numero decimale può essere codificato tramite il metodo delle moltiplicazioni successive. La codifica a 4 bit in modulo e segno a base 2 del numero 20,50 è:

  • 20/2 = 10 con resto 0;
  • 10/2 = 5 con resto 0;
  • 5/2 = 2 con resto 1;
  • 2/2 = 1 con resto 0;

Quindi possiamo scrivere 20 come 0010, mentre la codifica a 4 bit di parte decimale in modulo e segno e base 2 di 0,50 è:

  • 0,50*2 = 1,00 con parte intera 1;
  • 0,00*2 = 0,00 con parte intera 0;
  • 0,00*2 = 0,00 con parte intera 0;
  • 0,00*2 = 0,00 con parte intera 0;

Quindi possiamo asserire che è 0,50 = 1000. Nel caso preso in analisi il numero decimale viene codificato esattamente, ma questa evenienza può non verificarsi sempre. In questi casi può verificarsi che ci siano approssimazioni che vanno così a generare un errore di rappresentazione.

Esempi di decodifiche

(1231.543)10 codificato in base 10 diventa:

  • (1-2*s) * (1*103 + 3*102 + 2*101 + 5*10-1 + 4*10-2 + 3*10-3) = -231.543, dove s=1;

(0110.10)2 codificato in base 2 diventa:

  • (1-2*s)*(0*23 + 1*22 + 1*21 + 1*20 + 0*2-1) = +6.5, dove s=0;

Notazione scientifica

La notazione scientifica è degna di nota in quanto permette di esprimere in modo conciso i numeri reali utilizzando le potenze intere in base 10. Il vantaggio fondamentale è che permette di utilizzare grandezze molto grandi o molto piccole senza memorizzare lunghe sequenze di 0, infatti viene considerato un solo numero intero diverso da 0, seguito dalla sua parte decimale, moltiplicato per 10K, con K intero che può essere sia positivo che negativo. Lo schema di rappresentazione è:

  • (±N.F*BK), dove N rappresenta la parte intera, compresa tra 1 e B-1, F è un insieme di cifre comprese tra 0 e B-1 e B, normalmente, è 10.

Standard IEEE 754

Lo standard IEEE 754 specifica la codifica binaria per i numeri in notazione scientifica normalizzata. Con questo standard il numero viene espresso tramite una parola binaria da 32 bit in precisione singola e da 64 bit in precisione doppia. Un numero in virgola mobile è composto da 1 bit di segno, da un campo per l'esponente sommato alla base di polarizzazione (127) indicato con la lettera “E” e da un campo per la mantissa.

Esempio di codifica del numero +110.524 in singola precisione (1 bit di segno, 8 bit di campo E, 23 bit per la parte frazionaria):

Il segno del numero è positivo, ciò implica che il bit di segno è 0. 110.524 è codificato in 1101110.100 (col metodo delle divisioni e moltiplicazioni successive).

Spostiamo la virgola in modo da scrivere il numero in notazione scientifica:

  • 1.101110100 x 26

La parte frazionaria della mantissa è 10111010000000000000000 (aggiungiamo zeri per riempire tutti i 23 spazi per i bit). L’esponente è 6 e sommando alla base di polarizzazione ricaviamo il campo E in decimale (133), che codificato è pari a 10000101.

Codifica alfanumerica ASCII

La codifica ASCII è lo standard americano per la codifica di numeri, lettere e simboli. Utilizza combinazioni di 7 bit dove i primi 3 più significativi sono usati per i simboli e i rimanenti 4 per numeri e lettere in ordine alfabetico. Successivamente alla sua creazione venne proposto un nuovo standard, l'extended ASCII, che utilizza 8 bit e permette di rappresentare il doppio dei caratteri, quali vocali accentate, simboli semigrafici e simboli di uso meno comune. La lettera “A”, ad esempio, viene rappresentata come 01000001. Successore dell'extended ASCII è la codifica Unicode, a 16 bit, che permette di rappresentare fino a 1.114.112 caratteri. La codifica Unicode venne creata per poter utilizzare anche caratteri, ad esempio, in cirillico o greco.

Codifica esadecimale

La codifica esadecimale (base 16) ha sedici caratteri a disposizione (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, ove le lettere indicano i numeri da 10 a 15) per la rappresentazione dei dati. Se si vuole effettuare una codifica da binario in modulo e segno ad esadecimale (o viceversa) bisogna tener presente che ogni carattere del sistema esadecimale corrisponde a 4 bit del sistema binario.

Esempio: la codifica di “0111010100111101” è “753D”.

Circuiti

Gli elementi per la realizzazione delle operazioni sono i circuiti combinatori. I circuiti combinatori di base sono associati alle principali operazioni e sono identificati da porte logiche. I circuiti si distinguono per la profondità, che indica sia il numero massimo di porte collegate, in serie o in parallelo, sia il tempo che il circuito impiega per realizzare il calcolo richiesto. Tutte le porte logiche hanno un solo elemento in output che può essere un input per altre porte. Esistono sei funzioni booleane di base: NOT, AND, OR, NOR, NAND, XOR:

  • NOT: complemento di bit; ha una sola linea in input e restituisce l'inverso dell'ingresso
  • AND: prodotto logico di 2 bit; ha due linee in ingresso e una in uscita
  • OR: somma logica di 2 bit (ad eccezione del caso di input (1,1), in cui il risultato è 1); ha due linee in ingresso e una in uscita
  • NOR: funzione complementare dell'OR
  • NAND: funzione complementare dell'AND
  • XOR: detto anche OR esclusivo, esegue la somma in modulo due di 2 bit; ha due ingressi e una in uscita

Porte elementari (o porte base)

Per mezzo di queste porte possiamo effettuare operazioni che con le quali possiamo esprimere funzioni diverse. I circuiti calcolano funzioni booleane, costituite da variabili in forma vera o negata, detti letterali. Le espressioni di letterali possono essere ridotte in forme SOP canoniche o forme POS canoniche. Le forme SOP sono somme di prodotti, ossia OR di minterm. I minterm sono termini prodotto fondamentali che contengono tutte le variabili di una funzione (in forma vera o negata) e nella tabella di verità è presente un unico 1. Le forme POS sono prodotti di somme, ossia AND di maxterm. I maxterm sono termini somma fondamentali che contengono tutte le variabili di una funzione (in forma vera o negata) e nella tabella di verità presentano un unico 0. I minterm di n variabili definiscono 2n funzioni che presentano un solo 1 nella tavola di verità. In maxterm di n variabili definiscono 2n funzioni che presentano un solo 0 nella tavola di verità.

Esempio: se n è pari a 3, possiamo individuare 8 funzioni booleane e possiamo costruire una tavola di verità che verifichi la condizione espressa precedentemente. Si dice profondità della rete combinatoria la quantità di porte che il circuito è in grado di sopportare e la quantità di tempo che impiega per compiere un’operazione.

Algebra di commutazione

È possibile rappresentare i circuiti combinatori in maniera compatta grazie agli operatori dell'algebra di commutazione, ovvero: ¬ = Not, ∧ = And, ∨ = Or.

L'algebra di commutazione è definita dall'insieme di tutte le espressioni booleane e dalle regole di calcolo indotte sulle espressioni dagli operatori Not, And e Or.

Teorema fondamentale dell'algebra di commutazione

Una qualunque funzione booleana può essere espressa in forma SOP (l’Or delle funzioni distinte che associano un solo uno in corrispondenza di un qualche assegnamento alle variabili) canonica, ovvero come l’Or di termini prodotto (minterm) distinti, ciascuno formato dall’And di n variabili prese in forma vera o negata.

Dimostrazione: Si consideri una funzione f di n variabili indipendenti a valori {0,1}. Se la f associa uno ad un assegnamento, la somma di prodotti, SOP canonica, comprende il minterm (reso vero), per cui vale uno. Se invece, la f associa zero ad un assegnamento, la SOP è OR di minterm, tutti uguali a zero.

Teorema fondamentale duale

Il teorema fondamentale duale spiega che le funzioni booleane si possono esprimere in forme POS, cioè come AND di maxterm distinti (ogni maxterm è dato dall’OR di n letterali). Vengono considerati i maxterm che definiscono funzioni con valore pari a 0, poiché 1 è elemento neutro per il prodotto.

Lo scopo della minimizzazione è quello di trovare una forma SOP con il minimo numero possibile di termini prodotto, ovvero riducendo al minimo le porte AND e OR.

Dimostrazione: consideriamo una funzione f di n variabili indipendenti a valori in {0,1}. Se la f associa 1 ad un assegnamento, la SOP è AND di maxterm uguali a uno. Le forme SOP/POS minimali rappresentano circuiti minimali con il numero minore possibile di porte AND (OR) e, a parità di numero di porte AND, con il numero minore possibile di ingressi alle porte AND(OR). Le tecniche di ottimizzazione circuitale che esprimono le funzioni calcolate in forma SOP le riducono a forme SOP equivalenti che contengono il minor numero di implicanti.

L'ottimizzazione di Karnaugh

Le tavole di verità di una funzione devono essere sviluppate facendo sì che coppie di minterm simili siano vicine tra loro. Questa rappresentazione prende il nome di mappe di Karnaugh, definite per un numero di variabili al più pari a 4. Se il numero di variabili è al più 3 avremo 2 righe, altrimenti ne avremo 4; una volta disegnate vanno completate inserendo il minterm reso vero e il valore assunto dalla funzione (f) per ogni assegnamento. Il senso di compilazione è dall'alto verso il basso e da sinistra a destra. Una volta completate, le colonne 3 e 4 vanno scambiate. Se abbiamo n variabili, il numero di minterm sarà 2n. Le caselle con un lato in comune sono dette adiacenti; inoltre devono essere considerate adiacenti anche le caselle all’estremità di una riga o di una colonna come se la mappa fosse disegnata su di una superficie chiusa su sé stessa.

Nelle mappe di Karnaugh le espressioni SOP canoniche possono essere facilmente ottenute componendo l’OR di tutti i minterm resi veri da assegnamenti su cui la funzione assume valore uno (per il Teorema Fondamentale). Le forme SOP semplificabili contengono esattamente 2k minterm distinti, formati da tutti i termini prodotto distinti di k variabili prese in forma vera o negata. Possiamo quindi identificare gli (n-k)-cubi sulle mappe, a patto che il numero di variabili sia piccolo. Ci interessano i cubi massimali essenziali (ovvero quelli non contenuti in altri cubi formati da un numero maggiore o uguale di minterm) che contengono valori uno assunti dalla funzione e che non sono contenuti in altri cubi massimali. Individuano i termini prodotto semplificati che vanno scelti per costruire l'espressione SOP minimale.

Analisi di circuiti

Come il nome suggerisce, l'analisi dei circuiti consiste nel descrivere come funziona il circuito e, essendo nota la sua configurazione, le porte logiche utilizzate. Nell'analisi si ricava la funzione applicata al circuito e si descrive ciò che il circuito si propone di fare. Per sintesi di un circuito si intende il processo opposto: dato un problema, si ricava la funzione che lo caratterizza e si definisce un circuito. Le soluzioni possono essere differenti e varieranno per costi, complessità, numero di porte logiche utilizzate, profondità del circuito. L’obiettivo principale è trovare soluzioni efficaci e semplici, definendo circuiti con profondità sempre più basse, poiché ciò implica una diminuzione del tempo impiegato per svolgere le operazioni.

Moduli combinatori

I moduli combinatori sono moduli del calcolatore i quali non si occupano di svolgere calcoli aritmetici. Questi circuiti non memorizzano informazioni, ma sostanzialmente, date alcune variabili d’ingresso, l’uscita o le uscite sono solamente funzione dello stato attuale degli ingressi.

Codificatore

Il codificatore è il modulo combinatorio che realizza una funzione booleana di m bit, tutti posti a 0 tranne l’i-esimo (posto a 1), e viene definito da m-ingressi e n-uscite, numerati da 0 a m-1, tali che m=2n. A questi dispositivi possono essere associate le proprietà distributiva e complementare. I codificatori sono tipicamente impiegati quando diverse unità sono connesse a un sistema. Essi costituiscono una famiglia di reti combinatorie che trasformano, tra ingresso e uscita, parole rappresentate in un dato codice in parole rappresentate in un codice diverso. I codificatori sono spesso costruiti come singoli circuiti integrati. Tuttavia, al crescere delle loro dimensioni, diviene necessario realizzarli per composizione di pezzi più piccoli.

Funzionamento: sia xi l'ingresso posto a 1. Ovvero:

  • xi = 1 per 0 ≤ i ≤ p-1
  • xj = 0 per j ≠ i ≤ j ≤ p-1

Allora le uscite sono tali da codificare l’intero i in binario. Per esempio, se n vale 4 e i vale 9, abbiamo in uscita z = 0101, che è proprio la codifica di 9 in binario.

Decodificatore

Il decodificatore svolge la funzione inversa del codificatore ed è definito come n=2m. Un particolare tipo di decodificatore è la memoria ROM. Le uscite di questo codificatore sono collegate a porte OR. Anche questa rete trasforma quindi la rappresentazione dei numeri, passando dal codice binario a un'esplicita indicazione della posizione del numero in un ordinamento progressivo. Le funzioni in uscita del decodificatore sono semplicemente zi=pi, dove pi è il minterm i-esimo in n variabili; cioè zi è un prodotto delle n variabili di ingresso. Esso viene usato per accedere a parti di una rete identificate da un numero e raggiunte con l'attivazione di una linea (zi=1).

Funzionamento: il decoder realizza la funzione inversa del coder; infatti interpreta l'insieme degli ingressi come un numero i, espresso in codifica binaria (il cui valore è perciò compreso fra 0 e n–1), pone ad 1 la i-esima linea di uscita, e mantiene a 0 tutte le altre.

Multiplexer

I multiplexer sono circuiti integrati in grado di selezionare un segnale da restituire in uscita tra molti ingressi disponibili. La selezione avviene tramite segnali di controllo che determinano quale dei segnali di ingresso debba essere inviato all'uscita. Il multiplexer è un elemento fondamentale nelle applicazioni di selezione dei dati all'interno di una rete o di un sistema informatico.

Anteprima
Vedrai una selezione di 13 pagine su 58
Appunti Architettura dei Calcolatori Elettronici Pag. 1 Appunti Architettura dei Calcolatori Elettronici Pag. 2
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 6
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 11
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 16
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 21
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 26
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 31
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 36
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 41
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 46
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 51
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Appunti Architettura dei Calcolatori Elettronici Pag. 56
1 su 58
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher meccag di informazioni apprese con la frequenza delle lezioni di Architettura dei calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Basilicata o del prof Carpentieri Marco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community