Capitolo 1 - Informazione
Possiamo definire genericamente informazione un'entità che riduce uno stato d'incertezza. Un numero, infatti, di per sé non riesce a rendere il significato per cui esiste, ma se associamo al numero l'informazione che lo caratterizza, allora riceviamo un'informazione. Es. 17650 (dato grezzo), n° matricola (descrittore). Informazione: dato + descrittore.
La modalità di rappresentazione di un'informazione è strettamente correlata all'uso che se ne deve fare o agli strumenti disponibili per gestirla. L'informazione è prodotta attraverso l'elaborazione del dato.
Tipi di elaborazione
- Aritmetica: es. calcolo di media, %.
- Logica: es. controllo, confronto, verifica.
- Memorizzazione, reperimento, presentazione, trasmissione delle informazioni.
- Selezione, aggregazione, fusione.
Il calcolatore elettronico
Viene definito come un elaboratore automatico di informazioni in formato digitale. Automatico, perché è in grado di risolvere il problema, dato che ne conosce il metodo risolutivo; digitale, perché le informazioni trattate sono rappresentate in forma numerica.
Gli elaboratori digitali sono realizzati con dispositivi elettronici che possono assumere due stadi: acceso o spento, detti anche alto o basso. Le informazioni sono rappresentate da sequenze di simboli binari.
Sistemi numerici
Il sistema numerico è definito una volta fissati:
- Un insieme limitato di simboli (cifre).
- Le regole da applicare.
I sistemi numerici si distinguono in:
- Non posizionali, se il valore delle cifre è indipendente dalla loro posizione, es. sistema romano.
- Posizionali, se dalla loro posizione si evince il loro peso, es. sistema decimale.
Nei sistemi numerici posizionali a base fissa, un numero "N" può essere rappresentato come:
N = d( * rn-1 + ....... + d( )*r0 + d( )*r-1 + d (- )*rm-n-1), dove d è la cifra, r la base, n il numero di cifre della parte intera, m il numero di cifre della parte frazionaria.
Il sistema decimale è posizionale: r=10, d=0,1,2,3,4,5,6,...9. Il sistema binario è posizionale ed è così definito: r=2, d=0,1.
Conversione da decimale a binario: metodo delle divisioni successive
Es. 1:
- 115/2 = 57+(0.5 parte decimale cui diamo valore 1)
- 57/2 = 28+(0.5 « valore 0)
- 28/2 = 14 (non vi è resto quindi diamo valore 0)
- 14/2 = 7 ("" valore 0)
- 7/2 = 3+(0.5 valore 1)
- 3/2 = 1+(0.5 valore 1)
- 1/2 = 0+(0.5 valore 1)
Quindi: 1000111
Es. 2: Conversione in binario del n° 10 decimale: 10 20 5 21 2 20 1 21 0 cioè 10 = 10102
Rappresentazione dell'informazione all'interno dei calcolatori
Come rappresentare simboli come lettere dell'alfabeto, segni di punteggiatura, etc? Poiché l'elaboratore tratta dati in formato numerico, si associano ai simboli da rappresentare, dei numeri interi. Deve quindi esistere una legge, detta codice, che associ a ciascun carattere un numero in modo biunivoco.
Esistono vari codici, uno dei più diffusi è il codice ASCII (american standard code for information interchange). Secondo il codice ASCII ciascun carattere dell'alfabeto di simboli all'interno del calcolatore viene rappresentato con 7 BIT. Ricordiamo che 1 BYTE=8 BIT.
Il codice ASCII comprende 128 caratteri distinti:
- Caratteri alfanumerici (cifre, 0...9, lettere dell'alfabeto maiuscole o minuscole) e segni di interpunzione dalla posizione 32 alla 127 della tabella ASCII.
- Caratteri di controllo (fine riga, inizio pagina, segnale acustico, etc), che occupano la posizione da 0 a 31.
Il codice ASCII esteso usa 8 BIT, con questo si possono rappresentare 256 caratteri distinti, il codice ASCII esteso oltre ad includere l'ASCII standard, contiene anche altri caratteri nelle posizioni da 128 a 255. L'ASCII esteso non è un codice standard: la corrispondenza simbolo - posizione (dalla 128 alla 255) può variare da un calcolatore all'altro.
Il calcolatore
Organizzazione di un calcolatore secondo Von Neumann (1945)
- CPU
- Unità di ingresso
- Unità di uscita
- Memoria
Oppure:
- Unità di controllo
- Unità di memoria
- Unità di ingresso/uscita
- Unità aritmetico logica (ALU)
Il calcolatore di Von Neumann è una "macchina astratta" perché non esiste un calcolatore reale con memoria infinita. Tutti i calcolatori reali contengono questi quattro elementi. Ognuno di questi quattro elementi gode di un'indipendenza funzionale. Una modifica ad una singola parte, infatti, non comporta necessariamente la modifica dell'intera struttura. Queste macchine sono dette "seriali" perché eseguono un’istruzione per volta.
Nello schema, unità di controllo e ALU appaiono separate. In realtà, esse sono integrate nell'unità centrale e realizzate tecnologicamente nel microprocessore. I microprocessori sono circuiti integrati programmabili che si occupano di:
- Regolare e coordinare le attività di tutte le parti che compongono gli elaboratori.
- Eseguire le istruzioni.
La realizzazione dei PC è stata resa possibile con l'avvento dei microprocessori.
Evoluzione dei calcolatori
| Generazione | Tecnologia | Anno |
|---|---|---|
| 0 | Elettro-meccanica (relè) | 1944 |
| 1 (ENIAC) | Elettronica (tubi elettronici) | 1946 |
| 1 (IBM 604 UNIVAC) | Tubi elettronici | 1948-1951 |
| 2 | Transistori | 1959 |
| 3 | Circuiti integrati | 1965 |
| 4 | Microprocessore | 1975-1981 |
L'evoluzione tecnologica ha consentito il passaggio dei sistemi di elaborazione da una struttura centralizzata ad una distribuita (informatizzazione di massa).
Schema generale di un calcolatore a bus
Tutte le parti che compongono il calcolatore sono collegate tra loro tramite il bus. Il bus è l'insieme dei collegamenti (fili) attraverso i quali viaggiano, nelle due direzioni, indirizzi, dati e segnali di controllo.
Bus di sistema:
- CPU
- Memoria centrale
- Memoria di massa
- Interfaccia di I/O
Interfaccia: sono dei "mediatori" tra il calcolatore ed i sistemi di ingresso ed uscita. I connettori realizzano il collegamento.
[ogni scheda (CPU ecc.), ha il requisito della modularità, in altre parole può essere sostituita senza apportare modifiche sostanziali all'intera configurazione]
La memoria
Parametri caratteristici della memoria
- Capacità: quantità di informazioni che possono essere immagazzinate. Si esprime in BYTE, ad es. una memoria da 1024 BYTE è detta memoria da un KB.
- 8 BIT = 1 BYTE
- 1024 BYTE = 1 KB 10240=210
- 65536 BYTE = 64 KB
- 1048576 BYTE = 1 MB 1048576=220
- Tempo di accesso: tempo necessario all'accesso in lettura o scrittura, misurato dall'istante in cui si richiede di accedere all'unità di informazione all'istante in cui questa è disponibile. (centinaia o decine di nanosecondi. 1 ns = 10-9 secondo).
Tipi di memoria
- Memoria principale o centrale. È realizzata tramite circuiti elettronici. Accesso veloce, costo elevato. (RAM, ROM, PROM, EPROM).
- Memoria secondaria o di massa. È realizzata tramite supporti magnetici oppure ottici. Tempi di accesso maggiori, costo minore. (Hard disk, floppy disk, cd-rom, nastri magnetici).
I dati ed i programmi da eseguire devono essere caricati nella memoria centrale per l'elaborazione. Memorizzazione temporanea. La memoria secondaria serve all'archiviazione di dati e programmi. Memorizzazione stabile.
La memoria centrale
È costituita da un insieme sequenziale di celle (locazioni) ciascuna delle quali contiene un'unità d'informazione di lunghezza fissa. Ogni unità di informazione è caratterizzata da un indirizzo, corrispondente alla posizione della cella rispetto all'inizio della memoria, e da un contenuto, sia questo un dato o una istruzione.
Ulteriore classificazione in conformità a:
- Accessi consentiti: sola lettura, scrittura - lettura, etc.
- Persistenza dell'informazione in assenza di alimentazione: volatili o permanenti.
- RAM (random access memory) memoria ad accesso casuale. Scrittura-lettura.
- ROM (read only memory) a sola lettura. Scrittura eseguita una volta per tutte dal costruttore. Permanente accesso casuale come la RAM, con tempi di accesso leggermente inferiori.
Altri tipi di memoria oltre RAM e ROM
- PROM: (progammable ROM). Analoghe alle ROM, con la possibilità di scrittura, una sola volta, da parte dell'utente (tramite dispositivi programmatori di PROM) detti microprogrammi.
- EPROM: (erasable progammable ROM) memoria simile alla ROM, con la possibilità di essere programmate e cancellate più volte dall'utente (cancellazione tramite esposizione ai raggi ultravioletti, differiscono dalle EEPROM per il sistema di cancellazione che in questi ultimi avvengono tramite impulsi elettrici).
- EEPROM: programmabili e cancellabili un elevato numero di volte. Tempi d’accesso più elevati (nell'ordine di millisecondi), uso limitato.
Nei PC, macchine di uso generale, la ROM ne contiene quanta basta per avviare il sistema. La RAM contiene sia dati che programmi in esecuzione.
La memoria cache
Esistono due tipi di memoria cache, detti di primo e secondo livello:
- La cache di primo livello, è un tipo di memoria interna al processore molto veloce, usata per memorizzare blocchi di istruzione e di dati ad ogni lettura della memoria principale. Sfrutta il cosiddetto principio di località, ossia; poiché i programmi sono generalmente sequenziali, se dalla RAM si copia nella cache l'intero blocco si goderanno di maggiori facilitazioni.
- La cache di secondo livello possiede le stesse funzioni di quella di primo livello, ma con costruzione esterna al processore e con capacità maggiore. Tipicamente 512KB.
Operazioni svolte dalla ALU (Unità Aritmetico Logica)
Operazioni aritmetiche
- Somma/sottrazione
- Moltiplicazione/divisione
- Incremento/diminuzione
Mentre la somma, sottrazione, moltiplicazione e la divisione sono operazioni compiute dal PC utilizzando il metodo binario, l'incremento e la diminuzione sono compiuti in sistema unario. Le operazioni aritmetiche possono essere di due generi:
- Doppia precisione nella quale per rappresentare un numero sono necessari due registri.
- Singola precisione nella quale per rappresentare un numero è necessario l’utilizzo di un solo registro.
Fino alla nascita del “Pentium”, vi era particolare differenza tra operazioni in virgola fissa ed operazioni in virgola mobile, poiché le prime erano effettuate utilizzando una memoria piuttosto ridotta, che non permetteva grandi calcoli e le seconde si sono affiancate alle prime proprio per sopperire questa mancanza. Potendo così utilizzare una memoria più vasta tramite un co-processore matematico affiancato al processore, col precipuo scopo di eseguire operazioni matematiche in virgola mobile. Questo problema fu risolto con l’avvento del “Pentium” che svolge indifferentemente operazioni in virgola fissa o mobile.
Es. di interpretazione numerica in virgola fissa: 37,25 è rappresentato come 3725 moltiplicato per un fattore di scala 10-2. Si tiene conto che la virgola si trovi nella posizione meno significativa (5) e si moltiplica per 10-2.
Interpretazione numerica in virgola mobile: “N = M*Xa” dove, con N indichiamo il numero da approssimare, con X la base, R l’esponente e M la mantissa. Ciò nasce dall’esigenza di poter rappresentare numeri decimali e numeri molto grandi.
Variabili booleane e funzioni logiche
Le variabili booleane possono assumere solo due valori, 0 e 1 che corrisponde rispettivamente a falso e vero. Le funzioni logiche applicate a variabili booleane restituiscono valori booleani. Esse sono definite tramite tabelle della verità, la tabella appunto, specifica il valore assunto da una funzione logica per ogni combinazione degli ingressi. Definiamo X variabile booleana, f funzione logica, f (x) =y con y variabile booleana. Nello scrivere una tabella della verità bisogna valutare tutte le possibili combinazioni della variabile booleana.
Variabili booleane ed operatori logici
Gli operatori logici sono: NOT, AND, OR, XOR.
Tabella della verità dell'operatore "NOT"
| X | NOT X |
|---|---|
| 0 | 1 |
| 1 | 0 |
NOT è detto operatore di complementazione o negazione.
Tabella della verità dell'operatore "AND"
| X | Y | X AND Y |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
"AND" è detto prodotto logico.
Tabella della verità dell'operatore "OR"
| X | Y | X OR Y |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
"OR" è detto somma logica.
Tabella dell'operatore "EX-OR"
| X | Y | X EX-OR Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
"EX-OR" è detto "or" esclusivo ma non entrambe. Se l'uno o l'altro è vero.
Unità di controllo
Sovrintende a tutte le attività del calcolatore. In particolare:
- Preleva le istruzioni dalla memoria.
- Le decifra.
- Invia i segnali di controllo necessari per eseguirle.
L’istruzione è una parola binaria che indica alla CPU di eseguire una certa funzione definita in modo non ambiguo. Un'istruzione è composta da due parti:
- Codice operativo, che serve ad attivare un'azione opportuna. Sempre presente.
- Operandi, che contengono l'indirizzo degli operandi o gli operandi stessi, in alcuni casi può mancare o essere sottintesa (end).
Dicesi programma l'insieme d’istruzioni che sono caricate nella memoria del microprocessore al momento dell'elaborazione. Tutte le istruzioni devono essere eseguite dalla CPU nell'ordine esatto.
Registri puntatori alla memoria
Questi registri vengono utilizzati per contenere l'indirizzo dei dati nelle operazioni di lettura o di scrittura in memoria. Se gli indirizzi di memoria sono rappresentati da 16 BIT, sono possibili 216 = 65536 combinazioni binarie, ognuna delle quali individua una locazione.
Dunque D (rappresenta la dimensione della memoria) = 65536 locazioni indirizzabili direttamente. Indirizzi (0,65535).
Alcune definizioni
- Periferiche: dispositivi che servono per l'entrata o l'uscita dei dati. Scambiano dei segnali con l'unità di controllo.
- Interrupt: segnale che un dispositivo di I/O invia alla CPU per indicarle che deve compiere una data azione.
- Azione: esecuzione di una serie di istruzioni che costituiscono la routine di servizio dell’interrupt. La periferica invia l'interrupt che è ricevuto dalla CPU, la quale, una volta finita l'esecuzione dell'operazione in corso esegue l'interrupt richiesto dalla periferica, che rappresenta un sottoprogramma.
- Problema: come fa la CPU a riprendere l'esecuzione del programma nel punto in cui si era interrotta? L'indirizzo di ritorno del programma è conservato in una particolare locazione di memoria, detta STACK.
- STACK: locazione di memoria facente parte di un gruppo di celle gestite a PILA (accesso sequenziale, tecnica LIFO, last in first out).
- STACK Pointer: registro della CPU che contiene l'indirizzo dello STACK; gestire una struttura LIFO indica che il primo elemento di cui si può usufruire è quello inserito per ultimo.
Tempi della CPU
La CPU deve generare i segnali di controllo nei tempi appropriati. A tal fine dispone di un segnale, il CLOCK, che scandisce il susseguirsi delle varie attività all'interno della CPU. Il segnale di CLOCK può essere compiuto da un generatore esterno o da uno interno al microprocessore. Ciascuna delle operazioni di prelievo dalla memoria, decodifica ed istruzione richiede un ciclo-macchina (alcuni periodi del segnale di CLOCK).
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.
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.