Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
MEMORIE
Le memorie sono le componenti del calcolatore in grado di conservare
informazioni, e sono strutturate a piramide.
Regis Volatile: informazione
tri
Cache memorizzata fin quando il
Memoria calcolatore è alimentato
Principale
Dischi
Magnetici e Persistente: l’informazione
SSD rimane memorizzata anche
Dischi
Nastri quando il calcolatore non è
Ottici alimentato
La memoria è organizzata in celle, cioè sequenze di bit caratterizzato da un
indirizzo specifico (1 Byte = 8 bit, 1KB = 1024 bit). Solitamente i calcolatori
(“Word”)
lavorano su blocchi di dimensioni superiori ad 8 bit, ed esistono due
modi per memorizzare valori nelle celle (di dimensione standard di 1 Byte): big
endian o little endian. Big endian assegna gli indirizzi da sinistra verso
destra mentre little endian da destra verso sinistra.
Spesso le memorie possono imbattersi in errori, sia durante operazioni di
lettura che di scrittura, perciò usano metodi (codici) di rilevazione ed eventuale
m r
correzione di errore. Quindi se una parola è di bit si aggiungono bit di
“parola di codice” n = m + r
controllo ottenendo una composta da bit.
Per sviluppare molti codici per rilevazione e correzione di errore si utilizza la:
“Distanza di Hamming” fra due sequenze di bit. Essa è il numero di bit per
cui le due parole, senza errori, differiscono (es. 1001 e 1101 hanno distanza di
d
Hamming = 1). Come regola generale per rilevare bit errati è necessario un
d + 1 d
codice con distanza di Hamming maggiore o uguale a e per correggere
2d + 1.
bit errati occorre un codice con distanza di almeno
Codice di bit di parità: solo per rilevazione di errori
● (r
Ha un unico bit di controllo = 1), il quale viene scelto in modo che il
• numero bit “1” nella parola di codice sia pari
Il codice ha distanza di Hamming pari a 2
• Può essere utilizzato per rilevare singoli bit errati controllando se il
• numero di bit messi a 1 siano pari
m r
Supponendo che un certo codice con bit di dati e bit di controllo sia in
grado di correggere tutti i possibili errori su un singolo bit:
2^m n
1. Ciascuna delle parole di codice necessita + 1 parole ad essa
n = m + r):
dedicate (con
1 per la parola di codice corretta
• n per i possibili errori di un solo bit
•
2. 2^n,
Dato che il numero totale di combinazioni di bit è deve valere
(n 2^m 2^n m r 2^n
+ 1) * ≤ da cui deriva + + 1 ≤
•
Detto questo possiamo affermare che il codice di Hamming è in grado di
correggere tutti i possibili errori su un singolo bit usando il proprio numero
r m r 2^n
minimo di bit di controllo che soddisfa la disequazione + + 1 ≤ .
Memoria CACHE
La memoria CACHE è una memoria molto veloce, ma poco capiente. Quando la
CPU deve cercare una parola di codice innanzitutto la cerca nella CACHE se non
la trova, allora va a cercare nella memoria, copiandola nella CACHE.
Solitamente però la CPU mette nella CACHE anche le parole vicine a quella di
cui ha bisogno principalmente perché con tutta probabilità avrà bisogno anche
di esse.
Dischi Magnetici
Un Hard Disk (HD) è un meccanismo che immagazzina le informazioni sotto
forma magnetica, ed è composto da:
Testina: magnetizza e legge lo stato di magnetizzazione della superficie
• del disco
Traccia: sequenza circolare di bit
• Settore: porzione di traccia che contiene una quantità prefissata di bit
• (uguale per tutti i settori)
Memorie a Strato Solido
Le memorie a strato solido (SSD) sono memorie poco capienti, ma molto veloci
ed interamente elettronici, senza parti in movimento, perciò molto utilizzati per
la realizzazione di portatili.
RAID (Redundant Array of Inexpensive Disks)
Essenzialmente sono una pila di Hard Disk che lavorano in parallelo,
ultimamente rese molto affidabili anche in lettura.
Altre tipologie di Dischi
A differenza degli HD i compact disk (CD) utilizzano un principio di lettura ottico
quindi hanno un metodo di memorizzazione di dati diverso. La codifica dei bit
viene divisa in fori (pit) e parti piane (land), il passaggio da una all’altra codifica
un 1 mentre l'assenza di variazioni uno 0. Le informazioni sono lette tramite un
raggio laser che viene riflesso diversamente su un passaggio pit-land o land-
pit.
Altri Componenti
Oltre alle memorie i calcolatori sfruttano altri componenti Hardware:
Monitor: Il quale richiede una scheda precisa (GPU)
• Solitamente le GPU sono basate su architetture avanzate multicore
◦ Hanno la possibilità di essere programmati attraverso linguaggi
◦ specifici (Cuda – C) per l’esecuzione di programmi non grafici.
Bus: Tutti i componenti del computer si collegano al bus tramite un
• “controller”, alcuni controller si collegano direttamente alla memoria:
tecnica DMA (Direct Memory Access), altri invece al termine della
lettura/scrittura inviano un segnale (interrupt) direttamente alla CPU
Arbitro
L’accesso al bus viene gestito da un “ ” del bus
•
Porte Logiche e Circuiti Combinatori
In algebra Booleana le operazioni sono rappresentate come:
Somma (+) → OR
• Moltiplicazione (*) → AND
• Negazione → NOT
•
L’algebra di Boole quindi definisce tutte le possibili operazioni che possono
essere svolte fra operatori che assumono due valori {0,1}. Un’espressione
booleana si basa sulle costanti 0 e 1 rispettivamente “falso” e “vero”, sugli
operatori booleani (And, Or, Not) e sulle variabili A,B,C, ecc. (che però devono
valere o 0 o 1).
Una funzione Booleana associa a delle variabili booleane in input un valore
“tabella di verità”
logico in output, quindi è caratterizzata da una cioè
componendo tutte le combinazioni dei valori in input riesce a comporne
l’output.
Mintermini n n
Un mintermine su variabili è l’AND fra letterali, cioè una variabile (es. A) o
n
una variabile negata (es. Ᾱ), corrispondenti alle variabili. Ogni combinazione
delle variabili di una funzione booleana ha un mintermine (vero per quella
specifica funzione).
Espressioni Booleane per descrivere funzioni
Ogni funzione booleana può essere definita tramite i suoi operatori di base,
“forma canonica”
cioè And, Or e Not. In particolare esiste una :
Considerare i mintermini corrispondenti alle combinazioni dell’input per
• cui la funzione è vera
Fare l’Or su di essi
•
Così facendo otteniamo la forma canonica usata per semplificare la costruzione
di circuiti.
Array Logico programmabile (PLA)
Dato che tutte le funzioni booleane hanno dei mintermini esistono dei circuiti
logici universali pre-costruiti che data una quantità di input prevedono porte
And per tutti i possibili mintermini, con uscite che entrano in un Or. Perciò è
possibile programmare qualsiasi funzione semplicemente fondendo dei fusibili
che interrompono il collegamento fra gli And dei mintermini che non
interessano e l’Or finale. N.B. non è possibile creare una CPU con un PLA
perché non possiede registri.
Mappe di Karnaugh
La mappa di Karnaugh è un metodo per rappresentare funzioni booleane, simili
alle tabelle di verità, ma che permettono di realizzare un circuito combinatorio
più “minimale”.
La mappa è una tabella bidimensionale con una cella per ogni possibile
mintermine, due celle adiacenti differiscono per un solo letterale, in ogni cella
si mette 1 se la funzione booleana vale 1, 0 altrimenti.
KARNAUGH Xor TABELLA DI VERITA’ Xor
A / B B A B F
1 1 0 0 1
A 1 0 0 1 1
1 0 1
1 1 0
Le indicazioni A (rispettivamente B) a fianco della mappa indicano righe
(rispettivamente colonne) contenenti i mintermini con il letterale A
(rispettivamente B)
Rappresentazione dell’Informazione
Esistono due tipi principali di rappresentazione dell’informazione che ci
interessano: Numeri (interi e con la virgola) e Caratteri. Perciò si deve
codificare queste informazioni tramite codice binario, in particolare:
La codifica di Numeri interi
• La codifica di numeri “Floating Point”
• La codifica di caratteri in ASCII e UniCode
•
Codificando i numeri in binario notiamo che è impossibile rappresentare i
numeri con segno perciò sono stati inventati vari metodi:
1. Modulo e Segno: questo metodo usa il bit più a sinistra per
rappresentare il segno, cioè
1 = - ...e… 0 = +
2. Complemento a 1: il bit più a sinistra è il segno e, se il numero è
negativo, tutti gli altri bit vengono girati
3. Complemento a 2: analogo al complemento a 1 eccetto che sommo
uno se il numero è negativo. Quindi considerando un numero negativo (-
n) , sia b ...b la sua codifica in complemento a 2 con k bit, se
k-1 0
interpreto b ...b come un numero binario, ottengo un numero positivo
k-1 0
m che coincide con un (-nmod2k)
4. Codifica “In Eccesso”: numeri nell’intervallo [ -2^(k-1)…2^(k-1)-1]
consiste nel sommare 2^(k-1) alla rappresentazione binaria dei numeri
stessi, così si sposta l’intervallo ai numeri non negativi [0…2^(k)-1].
Esempio:
0000…0 rappresenta il numero -2^(k-1)
◦ 1111…1 rappresenta il numero 2^(k-1)-1
◦ 1000…0 rappresenta lo 0
◦
Overflow
L’overflow non avviene mai se gli addendi sono di segno opposto, avviene
invece quando gli addendi sono di segno uguale, ma il risultato è di segno
opposto
Tecnica Floating Point
La tecnica più usata nei calcolatori per la rappresentazione dei numeri con la
virgola è la “virgola mobile”. Questo metodo si basa molto sulla
n f
rappresentazione scientifica dei numero, cioè, dato un numero e altri due ed
e, tali che:
n f 10^e
= x
• f è detto frazione (o mantissa)
• e viene detto esponente (o caratteristica)
•
Le operazioni sui numeri con virgola mobile possono dare due possibili errori:
1. Overflow: Il numero in valore assoluto è troppo grande
2. Underflow: il numero il valore assoluto è troppo piccolo
Inoltre fra un numero ed un altro esistono infiniti numeri reali, troppo piccoli per
essere rappresentati a causa della “precisione finita” dei calcolatori.
Per rappresentare i numeri in “floating point” si usa lo standard IEEE 754, che
definisce diversi formati, inclusi BINARY32 e BINARY64 precision. Il BINARY32
definisce i numeri in:
binario
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Per termini, condizioni e privacy, visita la relativa pagina.