Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Architettura dei Computer: Memoria, Registri e Ciclo Operativo, Appunti di Elementi di Informatica

APPUNTI PROF ZANZOTTO CALCOLATORE

Tipologia: Appunti

2016/2017

Caricato il 20/11/2017

iaiarondi
iaiarondi 🇮🇹

5

(2)

4 documenti

1 / 10

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
L’ARCHITETTURA DI UN CALCOLATORE
Abbiamo bisogno di qualcosa che elabori e risolva gli algoritmi.
Luomo può essere considerato un esecutore generale di algoritmi perché, anche se ovviamente
non è in grado di risolvere ogni algoritmo, alcuni li sa risolvere, per esempio eseguire una ricetta, o
una somma. Lo risolve se gli è possibile e se ne ha voglia.
Per risolvere gli algoritmi leggiamo l’istruzione, la comprendiamo e la risolviamo, seguiremo
questo procedimento fino ad arrivare alla soluzione.
L’ALGORITMO VITALE è un algoritmo capace di eseguire altri algoritmi, lo fa attraverso
quattro operazioni in sequenza: localizzazione, lettura, decodifica ed esecuzione. (Ciclo operativo)
Alcuni algoritmi possono diventare dati per altri algoritmi, per questo, li rappresentiamo allo stesso
modo e possono trovarsi nello stesso spazio, detto MEMORIA, avviene perciò una confusione tra
dati e algoritmi. I dati iniziali li chiamiamo DATI D’INGRESSO e il risultato finale sarà DATI
D’USCITA. Poi chiaramente avremmo dei dati che variano nel procedere, che non saranno presenti
nel risultato finale ma che porteranno ad esso, sono i DATI TEMPORANEI (ad esempio i riporti).
Così stiamo andando verso la concezione della MACCHINA DI VON NEUMAN, abbiamo due
spazi, lo spazio che chiamiamo memoria e uno spazio che chiamiamo esecutore. L’algoritmo
vitale deve risolvere tutti gli altri algoritmi perciò non può trovarsi nella memoria insieme agli altri
algoritmi. Per passare dalla macchina che risolve solo un algoritmo a quella che risolve tutti quanti
gli algoritmi, inseriamo l’algoritmo vitale nello spazio dell’esecutore, che diventa quindi la CPU
(central processing unit).
ORGANIZZAZIONE DELLA MEMORIA
Cos’è una memoria?
Le MEMORIE ESTERNE del genere umano sono le lapidi, i fogli, i libri, le biblioteche ecc.
La memoria è uno spazio definito che contiene delle informazioni che possono essere reperite. È
diviso in parti uguali detti spazi, questi spazi prendono il nome di celle. Ogni cella ha un proprio
indirizzo, che ci permette di rintracciare facilmente le informazioni. Una cella può contenere un
dato numero di informazioni, ne più ne meno, altrimenti può solo essere vuota. (Esempio col libro
che ha tante pagine tutte uguali che contengono la stessa quantità informativa, l’indirizzo è il
numero di pagina)
Il valore che si trova in ogni cella della memoria è il valore che vogliamo memorizzare, e può
essere numerabile. La rappresentazione utilizzata è quella numerazione binaria, perché considerata
semplice.
In ogni spazio può trovarsi più di una cifra binaria, questo spazietto binario prende il nome di bit
che può assumere valori 0 ed 1. Una sequenza di k bit illimitata e ben definita è detta parola o
parole. I byte sono parole (serie di bit) formate da 8 lettere (8 bit). [K= numero di celle disponibili]
1
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Introduzione all'Architettura dei Computer: Memoria, Registri e Ciclo Operativo e più Appunti in PDF di Elementi di Informatica solo su Docsity!

L’ARCHITETTURA DI UN CALCOLATORE

Abbiamo bisogno di qualcosa che elabori e risolva gli algoritmi.

L’ uomo può essere considerato un esecutore generale di algoritmi perché, anche se ovviamente non è in grado di risolvere ogni algoritmo, alcuni li sa risolvere, per esempio eseguire una ricetta, o una somma. Lo risolve se gli è possibile e se ne ha voglia.

Per risolvere gli algoritmi leggiamo l’ istruzione , la comprendiamo e la risolviamo , seguiremo questo procedimento fino ad arrivare alla soluzione.

L’ALGORITMO VITALE è un algoritmo capace di eseguire altri algoritmi, lo fa attraverso quattro operazioni in sequenza: localizzazione, lettura, decodifica ed esecuzione. (Ciclo operativo)

Alcuni algoritmi possono diventare dati per altri algoritmi, per questo, li rappresentiamo allo stesso modo e possono trovarsi nello stesso spazio, detto MEMORIA , avviene perciò una confusione tra dati e algoritmi. I dati iniziali li chiamiamo DATI D’INGRESSO e il risultato finale sarà DATI D’USCITA. Poi chiaramente avremmo dei dati che variano nel procedere, che non saranno presenti nel risultato finale ma che porteranno ad esso, sono i DATI TEMPORANEI (ad esempio i riporti).

Così stiamo andando verso la concezione della MACCHINA DI VON NEUMAN , abbiamo due spazi, lo spazio che chiamiamo memoria e uno spazio che chiamiamo esecutore. L’algoritmo vitale deve risolvere tutti gli altri algoritmi perciò non può trovarsi nella memoria insieme agli altri algoritmi. Per passare dalla macchina che risolve solo un algoritmo a quella che risolve tutti quanti gli algoritmi, inseriamo l’algoritmo vitale nello spazio dell’esecutore, che diventa quindi la CPU ( central processing unit ).

ORGANIZZAZIONE DELLA MEMORIA

Cos’è una memoria?

Le MEMORIE ESTERNE del genere umano sono le lapidi, i fogli, i libri, le biblioteche ecc.

La memoria è uno spazio definito che contiene delle informazioni che possono essere reperite. È diviso in parti uguali detti spazi , questi spazi prendono il nome di celle. Ogni cella ha un proprio indirizzo , che ci permette di rintracciare facilmente le informazioni. Una cella può contenere un dato numero di informazioni, ne più ne meno, altrimenti può solo essere vuota. (Esempio col libro che ha tante pagine tutte uguali che contengono la stessa quantità informativa, l’indirizzo è il numero di pagina)

Il valore che si trova in ogni cella della memoria è il valore che vogliamo memorizzare, e può essere numerabile. La rappresentazione utilizzata è quella numerazione binaria, perché considerata semplice.

In ogni spazio può trovarsi più di una cifra binaria , questo spazietto binario prende il nome di bit che può assumere valori 0 ed 1. Una sequenza di k bit illimitata e ben definita è detta parola o parole. I byte sono parole (serie di bit) formate da 8 lettere ( 8 bit ). [K= numero di celle disponibili]

Se abbiamo k bit quante cellette di memoria possiamo avere al massimo? In ciascuno spazietto posso mettere 0 o 1.

Nella memoria gli indirizzi hanno la stessa lunghezza della parola. Quindi, se abbiamo una memoria pari a un solo byte, saranno poche le celle di memoria indirizzabili, mentre saranno molte se hanno lunghezza 32 o 64 bit. L’evoluzione ci ha portato adesso a 64bit.

Possiamo avere la memoria di dimensione K solamente se abbiamo una parola lunga N tale che **2^n

K**

1byte = 8bit

1kylobyte = 2^10 bytes = 1,024 bytes

1megabyte = 2^20 bytes = 1,000,000 bytes

OPERAZIONI DELLA MEMORIA

L’interazione con la memoria avviene per operazioni di lettura e di scrittura. Sono operazione non infinite.

Nell’operazione di lettura c’è un’informazione che deve passare dalla memoria alla CPU, la memoria deve comunicare con la CPU. Per comunicare con la CPU , pensiamo analogicamente come se dovessimo comunicare con un distributore di merendine, dobbiamo usare degli specifici canali di comunicazione. Bisogna comunicare alla memoria l’ indirizzo che passerà per questo canale di comunicazione. Il dato , che è ciò che vogliamo leggere o scrivere nella memoria, passerà dalla CPU alla memoria o viceversa.

I CANALI DI COMUNICAZIONE sono tre e sono chiamati anche BUS :

  • Quello dei dati
  • Quello degli indirizzi
  • Quello di controllo in cui passa l’istruzione (comando)

Il canale di controllo è breve e basta un solo bit per codificare le operazioni (per spegnere e accendere la luce basta un solo interruttore), mentre l’indirizzo e il dato hanno la lunghezza di una parola, quindi dipende dalla lunghezza della parola nella macchina. Esistono solo due tipi di comando: Lettura e Scrittura.

Nella lettura dell’informazione , la CPU mette a disposizione solo l’ indirizzo , nella scrittura dell’informazione la CPU mette a disposizione l’ indirizzo e il contenuto (valore) e quindi il dato.

All’interno della CPU abbiamo degli spazietti di memoria, chiamati REGISTRI , diversi dalle normali celle di memoria perché ognuno ha una propria funzione, dove finiscono le informazioni:

  • Il registro dell’indirizzo di memoria, MEMORY ADDRESS REGISTER ( MAR ) [dato]
  • Il registro del contenuto di memoria, MEMORY BUFFER REGISTER ( MBR ) [indirizzo]
  • Memoria di Massa o Secondaria : hanno la stessa organizzazione della memoria centrale. Sono divisi in parti non uguali chiamate settori. Memoria permanente, se si spenge l’informazione rimane per un tempo lungo. I dati vengono memorizzati su appositi supporti detti memorie di massa, ce ne sono di tanti tipi, fissi e mobili, un esempio di supporto fisso è il DISCO FISSO o ’ Hard Disk , essenziale in quanto su di esso è memorizzato il sistema operativo. La Pen-drive per esempio è un tipo di disco esterno racchiuso in una cartuccia removibile e viene utilizzata per le copie di sicurezza dei dati e sono collegabili al pc via USB.
  • Memoria Cache : è una parte di memoria che si trova tra i registri e la RAM. È una memoria molto vicina alla CPU, l’accesso è rapido. È una memoria veloce che immagazzina i dati in maniera tale da renderli immediatamente disponibili al processore appena questo li richiede. In questo modo la CPU non deve attendere l’invio dei dati da parte della RAM ed il processo di elaborazione diventa più veloce. È più piccola della memoria centrale e serve per svolgere operazioni ripetitive e di riporto dei bit.

CPU:

La CPU è il processore del computer , ed è il vero e proprio cervello.

Nella CPU c’è il ciclo operativo (algoritmo vitale) che ha il compito di eseguire gli altri algoritmi che noi scriviamo nella memoria. Il concetto di algoritmo vitale funziona in maniera simile ad esempio all’algoritmo del leggere, leggiamo parola per parola interpretandole.

  • L’ Instruction Register o Registro IR (di due parole) è il registro che contiene l’istruzione in fase di esecuzione. deve essere di almeno una parola, poiché contiene l’istruzione.
  • I registri operandi R1, R2. Sono gli operatori, è un’unità di memoria temporanea dove sono conservati i dati da elaborare e i risultati dell’elaborazione.
  • ALU consente di svolgere le operazioni e avvengono tutti i passaggi dell’elaborazione
  • La capacità di estrarre dalla memoria qualcosa

Come fa la CPU a fare quello che fa e cosa gli serve?:

L’algoritmo vitale LOCALIZZA l’istruzione successiva, CARICA l’istruzione, DECODIFICA ed ESEGUE. (4 operazioni). Questo viene fatto finché non troviamo l’istruzione HALT (spegni o ferma), con cui l’algoritmo vitale smette di vivere.

Fase di Localizza e di Carica: Per localizzare dobbiamo sapere a che punto siamo arrivati (come il segnalibro per sapere dove siamo arrivati), ci serve l’indirizzo dell’istruzione successiva da eseguire e viene memorizzato nel registro PROGRAM COUNTER (contatore), che contiene appunto

questo indirizzo. Una volta caricata l’istruzione successiva, la mettiamo in uno dei particolari registri ovvero nel INSTRUCTION REGISTER.

Fase di Decodifica e di Esecuzione: La decodifica e l’esecuzione sono le due operazioni più importanti. Una volta caricata l’istruzione dobbiamo capirla, e per farlo dovremmo avere un certo quantitativo di informazioni, dobbiamo scriverla per bene dividendo gli operatori dagli operandi. Una volta compresa la eseguiremo con un elemento particolare, che sta all’interno della CPU ovvero ALU o Arithmetic-Logic Unit , prende i dati e fa le operazioni richieste.

CU L’Unità di Controllo : La Control Unit si trova all’interno della CPU ed è il posto in cui risiede l’algoritmo vitale. Stabilisce la logica con cui devono essere effettuate le singole operazioni dall’unità logico-aritmetica. Legge dalla memoria le istruzioni, se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU.

Nel momento di caricare l’istruzione avviene, ciclo di caricamento delle istruzioni :

MAR PC : Localizziamo e Carichiamo l’istruzione. Metti il PC all’interno del MAR.

MBRM(MAR) % lettura istruzione: Localizziamo e Carichiamo. Chiediamo alla memoria di prendere il valore che si trova nella celletta di memoria chiamata MAR. Carica ciò che c’è nella celletta di memoria indicata dal MAR. questa informazione la mettiamo nel MBR.

IRMBR: se la vogliamo eseguire la dobbiamo mettere nell’IR. Dobbiamo sapere l’istruzione successiva.

PCPC+1: abbiamo un’informazione in più.

Quindi: Abbiamo 16 bit che è la parola della macchina. La UC è collegata con la memoria da un filo, un comando ovvero leggi e scrivi. MBR e MAR sono collegati alla memoria da tre fili, perché un filo rappresenta un bit. ALU prende informazioni da IR e da R1 ed R2 che sono informazioni e operandi. PC comunica con MAR da 16 bit. Lo spazio dell’IR è da 32 bit è quindi due parole.

CODIFICA E ISTRUZIONI:

La macchina di Von Neumann è formata da una parte che esegue e una che memorizza. Nessuna di queste può funzionare indipendentemente dall’altra. Per far funzionare la parte che esegue, la CPU, abbiamo bisogno di uno specifico linguaggio che non deve essere ambiguo. Le istruzioni sono di diverso tipo e sono:

  • Istruzione di assegnazione/modifica (SPOSTA)
  • Istruzione di salto e di controllo (SALTA)

Istruzioni di salto e di controllo:

Un'altra tipologia di operazioni sono le Operazioni di Salto. Complicate da codificare in due spazietti.

  • Salto Incondizionato può essere semplicemente SALTA , dove OPERANDO1 è l’indirizzo dell’istruzione successiva.
  • Salto Condizionato Se si verifica una data condizione si può operare, altrimenti no. Il salto condizionato ha due salti dentro di se, se la condizione è vera o se è falsa. Ci occorrerebbero due operandi uno per il vero e uno per il falso, due indirizzi. Se la condizione è verificata salta, altrimenti va avanti, così risparmiamo un operando. Abbiamo SALTA SE, CONDIZIONE, OPERANDO. Possiamo chiederci se in un particolare registro c’è un valore uguale, maggiore o minore di zero. Quindi prima di fare il salto, facciamo delle operazioni che vanno a finire in un registro particolare, il quale può avere questi valori: > , < , = a 0. Quindi se dobbiamo verificare che A=B dobbiamo scriverlo così C=A-B e C=0, fai prima l’operazione, se A è uguale a B allora nel registro ci deve essere 0, se c’è la condizione è vera altrimenti è falsa. Frase lecita: SALTA_SE_>.

Se abbiamo lo SPOSTA da una cella della memoria che è B ad un registro che è AX. Supponendo che i registri siano 8 e la lunghezza totale sia 32 bit. La parola del registro è da 16 e i rimanenti bit quindi saranno 16. Se vogliamo codificare anche i registri, che sono 8, ci occorrono 3 cifre perché 2 alla terza è 8, quindi 3 bit. 16 - 3 =13. Per codificare una cifra occorrono 8 bit (codice ASCI). Dobbiamo codificare SPOSTA dentro 13 bit. Ogni operazione ha un numero, esempio 001, 002, 003 ecc.. come le lettere dell’alfabeto, quindi per esempio sposta potrebbe essere operazione 50, risolviamo così il problema dello spazio.

DA ALGORITMO A PROGRAMMA

Avendo noi un problema, generiamo nella nostra mente un algoritmo. Questo algoritmo lo possiamo scrivere in linguaggio naturale, oppure, con i diagrammi di flusso. Il passo successivo è trasformarlo in programma. La differenza è che il programma è la traduzione dell’algoritmo per un particolare esecutore che utilizza un particolare linguaggio. L’algoritmo è scritto in un particolare linguaggio che un esecutore può capire. La macchina sa parlare un linguaggio particolare, non ambiguo, ristretto. Ogni macchina ha un suo linguaggio.

Una programmazione è per esempio quando creiamo una App, abbiamo un algoritmo in testa che si realizza con un insieme di passi, comunicandolo ad un oggetto che parla una lingua particolare. Questa è la programmazione e il risultato è il programma, solo quel linguaggio è compreso dalla macchina. Esempio:

  • Determinare il massimo tra due numeri A e B se A è maggiore di B allora il MASSIMO è A. Altrimenti il MASSIMO è B (questo è il problema che è diventato algoritmo). Ecco come il linguaggio trasforma questo algoritmo:

Prende i dati:

SPOSTA AX,A (sposta quello che sta nella locazione di memoria A nel registro AX)

SPOSTA BX, B (sposta quello che sta nella locazione di memoria A nel registro AX)

Richiesta AX è maggiore di BX? Salto condizionato con la condizione sovrastante

COMPARA AX, BX (

*SALTA_SE_> ALLORA ALLORA: SPOSTA MAX,AX FINE: SCRIVI MAX

Altrimenti:

SPOSTA MAX,BX

SALTA FINE

Una macchina può essere virtuale e non realizzata da una macchina fisica.

Quanti programmi esistono per ciascun algoritmo che ci viene in mente? Un programma è una traduzione di un algoritmo, quanti programmi esisteranno dato un algoritmo, il minimo numero è 1 per macchina. Esistono tanti programmi per ciascun algoritmo tante quante sono le macchine su cui li vogliamo far funzionare.

UN ESEMPIO DI PROGRAMMA IN UNA MACCHINA SEMPLIFICATA

Finché l’istruzione non è uguale ad HALT dobbiamo LOCALIZZARE, CARICARE, DECODIFICARE ed ESEGUIRE l’istruzione.

Mettiamo il nostro programma all’interno della Memoria. Tutte le istruzioni vanno scritte in due celle di memoria.

PC 100 IR SPOSTA R - 200 R1 905 R2 845 MAR 100 MBR SPOSTA R - -> 200 -- > 905 - - > 845

  1. Compariamo R1 ed R2 nella cella 104.
  2. Nella cella 105 : SALTA_SE_>-
  3. Nella cella 106 continuiamo se A > B e rimandiamo all’operazione che abbiamo nella cella
  4. Se invece A non è maggiore di B continuiamo nella cella 107: SPOSTA R2- e nella casella 108 mettiamo la casella in cui va spostato R2, ovvero 204.
  5. Casella 109: SPOSTA - -
  6. Casella 110: rimandiamo all’operazione che c’è nella casella 113.
  7. Casella 111: SPOSTA R1 – e la casella 112 dice in quale casella spostare R1, ovvero la 204.
  8. Casella 113: HALT.

Ogni istruzione avrà un effetto sulla macchina: semantica dell’istruzione, quando eseguiamo.

Nella decodifica usiamo la sintassi dell’istruzione, chi sono operatori e operandi.

Sintassi e semantica devono essere correlati.