vuoi
o PayPal
tutte le volte che vuoi
Struttura della macchina di Von Neumann
Viene utilizzata per contenere completamente o in parte i programmi inesecuzione: ogni programma occupa più o meno indirizzi, ma ha sempre un indirizzo di inizio e uno di fine. Nella memoria vengono anche caricati i dati che i programmi in esecuzione stanno utilizzando; - Periferiche di I/O; - Interfacce di Comunicazione: permettono alle periferiche di comunicare con gli altri componenti; - Bus: è un canale che collega tutti i componenti tra di loro. Figura 03: Struttura della macchina di Von Neumann 6 Program counter: registro nel quale viene salvato l'indirizzo di memoria della prossima istruzione da eseguire; dopo ogni esecuzione di un'istruzione viene incrementato. 7 Instruction register: registro che immagazzina l'istruzione in fase di elaborazione. 43.2 Esempio Di Programma (Assembly) // Programma per il calcolo della radice quadrata 1300 LOAD R1, 5000 1305 ZERO R2 1310 COPY R2, R3 1315 MULTR3, R31320 JGEQ R1, R3, 1 3 3 51325 INC R21330 JUMP 13101335 STORE R2, 5 0 0 11340 END PL
La prima colonna indica gli indirizzi della memoria nella quale è stato col-locato il programma, la seconda le istruzioni utilizzate mentre la terza indica i registri (sia della memoria che della CPU) con i quali sono state fatte delle operazioni. Ogni comando ha un significato:
- LOAD: copia il valore contenuto nell'indirizzo della memoria al registro della CPU;
- ZERO: azzera il valore del registro;
- COPY: copia in valore del primo registro nel secondo;
- MULT: moltiplica il valore del primo registro per il secondo;
- JGEQ: è un comando di salto condizionato, salta all'istruzione contenuta nell'indirizzo della memoria se il valore del primo registro è maggiore o uguale (Greater Or Equal) del secondo;
- INC: incrementa il valore del registro di 1;
- JUMP: è un comando di salto incondizionato, salta all'istruzione
contenu-ta nell'indirizzo della memoria;
- STORE: copia il valore contenuto nel registro nell'indirizzo di memoria;
- END P: termina il programma.
Ogni volta che un comando viene eseguito avviene una serie di operazioni chiamata fetch-execute, divisa in tre fasi:
- Fetch: la CPU carica l'istruzione da eseguire dalla memoria centrale e la deposita nell'instruction register;
- Decode: la CPU "capisce" cosa deve fare con l'istruzione da eseguire;
- Execute: la CPU eseguita l'istruzione e eventualmente interagisce con i registri (passando i loro valori alla ALU) e la memoria.
Una volta terminato il ciclo per un'istruzione ne inizia un altro per l'istruzione successiva, fino a quando il programma non termina.
4.1 Tipi Di Informazione
Per rappresentare i dati e le informazioni (foto, audio, video, testi, ...) vengono usate sequenze di 0 e 1. Le informazioni possono essere di
tipo:- Analogico: si hanno un numero infinito di bit, quindi bisogna introdurre delle approssimazioni, perdendo delle informazioni. Aumentando il numero di bit utilizzati si riduce l'approssimazione, ma aumenta la memoria utilizzata. Se i bit utilizzati si ripetono con lo stesso valore per un certo periodo è possibile effettuare delle compressioni, riducendo l'utilizzo della memoria. Alcuni formati non approssimano (loseless), mentre altri sì (lossy), riducendo ulteriormente la memoria occupata (artefatti di compressione, utilizzati spesso con foto, video e musica, nella quale le variabili da approssimare sono la velocità di campionamento e la frequenza di campionamento);
- Digitale (discreta): il numero di bit utilizzati è finito, quindi le approssimazioni sono molto limitate. Le principali informazioni sono costituite da numeri e caratteri. I numeri si dividono in interi e "reali", e a loro volta i numeri interi si dividono
In naturali e relativi. I numeri vengono rappresentati attraverso uno o più numerali (ogni numero può avere più numerali); generalmente si usano sistemi posizionali di base 10 (cifre dallo 0 al 9), mentre con i bit viene utilizzato un sistema posizionale di base 2, in quanto possono assumere solo i valori 0 e 1.
64.2 I Sistemi Posizionali Utilizzati
Nel mondo dell'informatica vengono utilizzati 3 sistemi posizionali oltre a quello di base 10, e sono:
- Sistema posizionale di base 2 (binario): vengono utilizzati solo i valori 0 e 1. Un numero scritto in binario avrà quindi questo aspetto:
010011010
. Viene utilizzata una quantità definita di bit, generalmente di 8 in 8 (8 -> 16 - ... bit 256 - 65536 - ... possibili valori ); - Sistema posizionale di base 16 (esadecimale): vengono usati i numerali dallo 0 al 9 e le lettere dalla A
alla F. Un numero scritto in esadecimale 2B5F potrebbe allora essere: 16
Sistema posizionale di base 8 (ottale): vengono utilizzati i valori dallo 0 al 7. Un numero scritto in ottale avrà questo aspetto: 84.
Conversione Da Base X A Base 10
Per convertire un numero scritto con un sistema posizionale di base qualsiasi ad un sistema posizionale di base 10, basta moltiplicare il valore del numerale per il valore posizionale elevato alla posizione del numerale:
posizioneP * N = (nbase).10N
Esempio: Da base 2 a base 10
1010011101 = N2 100 2 3 4 7
N = 1 * 22 + 1 * 23 + 1 * 24 + 1 * 27
N = 1 + 4 + 8 + 16 + 128
N = 157
Esempio: Da base 16 a base 10
10A4C1 = N16 100 1 2 3
N = 1 * 162 + 12 * 163 + 4 * 164 + 10 * 161
N = 1 + 192 + 1024 + 4096
N = 4217
Esempio: Da base 8 a base 10
10421502 = N8 100 2 3 4 5
N = 2 * 82 + 5 * 83 + 1 * 84 + 2 * 85 + 4 * 86
N = 2 + 320 + 512 + 1024 + 4096
8192 + 13107210N = 14009810
74.4 Conversione Da Base 10 A Base X
Per convertire un numero scritto con un sistema posizionale di base 10 ad un sistema posizionale di base qualsiasi, si divide il numerale per la base del sistema posizionale e si continua dividendo il resto della divisione precedente fino a quando il risultato della divisione è 0. N
Esempio: Da a10 2N = 15710157 | 78 resto 178 | 39 resto 039 | 19 resto 119 | 9 resto 19 | 4 resto 14 | 2 resto 02 | 1 resto 01 | 0 resto 1N = 100111012 2
Esempio: Da a10 16N = 421771042177 | 2636 resto 12636 | 164 resto C164 | 10 resto 410 |0 resto AN = A4C116 16
Esempio: Da a10 8N = 14009810140098 | 17512 resto 217512 | 2189 resto 02189 | 273 resto 5273 | 34 resto 134 |4 resto 24 |0 resto 4N = 4215028 8
84.5 Conversione Da Base X A Base Y
Per convertire un numero scritto con un sistema posizionale di base qualsiasi ad un altro sistema posizionale con una base qualsiasi, si
esegue un passaggio intermedio, passando attraverso il sistema decimale: → → →N N = N N Nx y x 10 y
Alcune conversioni non necessitano di passaggi intermedi, in quanto risultano molto più semplici.
4.5.1 Conversione Da Base 2 A Base 8
Si raccolgono le cifre a gruppi di 3 (partendo da destra) e si convertono i gruppi di 3 cifre separatamente gli uni dagli altri.
Esempio:
N = 10101101012
N = (1)(010)(110)(101)2
101 = 52 8
110 = 62 8
101 = 22 8
1 = 1 8
N = 12658
Operazione inversa (se i numeri convertiti non occupano 3 bit bisogna utilizzarli tutti e 3 aggiungendo gli 0 necessari):
N = 12658
1 = 0018
22 = 0108
26 = 1108
25 = 1018
2 = 2
N = (001)(010)(110)(101)2
N = 10101101012
94.5.2 Conversione Da Base 2 A Base 16
Si raccolgono le cifre a gruppi di 4 (partendo da destra) e si convertono i gruppi di 4 cifre separatamente gli uni dagli altri.
Esempio:
N = 10101101012
N = (10)(1011)(0101)2
10 = 2
161011 = B2
160101 = 52
16N = 2B516
Operazione inversa (se i numeri convertiti non occupano 4 bit bisogna uti-lizzarli tutti e 4 aggiungendo gli 0 necessari):
N = 2B516
2 = 001016
2B = 101116
25 = 010116
2N = (0010)(1011)(0101)
2N = 1010110101
24.6 Operazioni In Binario
Con il sistema di numerazione binario, così come con il sistema decimale, è pos-sibile effettuare le operazioni di somma, sottrazione, moltiplicazione e divisionetra due numeri. Ecco alcuni esempi:
−10110101 + 10011010101011 = 110100 =11100000 1100110
Eccezione: come detto in precedenza, per i numeri in binario viene utilizzatauna quantità di bit prestabilita. Prendiamo per esempio 2 numeri di 8 bit;sommandoli è possibile che servano più di 8 bit per via di eventuali riporti, si8ha allora un caso di overflow .
8 Overflow: il valore del risultato non corrisponde alla realtà in quanto il numero di bitprestabilito per l’operazione
eseguita non è in grado di contenere tutte le cifre del risultato della stessa. 104.7 I Numeri Relativi
Per rappresentare i numeri relativi esistono due metodi principali:
- Rappresentazione con bit di segno: il primo bit a partire dalla destra viene usato per identificare il segno del numero (0 in questo modo si hanno possibili valori, in quanto lo 0 può essere rappresentato con due combinazioni diverse (10000000 e 00000000). Inoltre questa rappresentazione rende difficili per la ALU ottenere i risultati corretti;
- Rappresentazione in complemento a 2: utilizzando questa rappresentazione non ci sono ridondanze, in quanto lo 0 è rappresentato soltanto dalla combinazione 00000000. In questo modo la ALU, pur non sapendo se sta operando con numeri naturali o relativi, ma restituisce sempre il risultato corretto (cosa che non avviene con la rappresentazione con bit di segno).