Anteprima
Vedrai una selezione di 6 pagine su 21
Architettura degli Elaboratori Pag. 1 Architettura degli Elaboratori Pag. 2
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 6
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 11
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 16
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 21
1 su 21
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2018-2019
21 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher edoardofst di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori 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 di Bologna o del prof Lanese Ivan.