La tastiera e il mouse sono dispositivi di input che utilizziamo per fornire istruzioni al calcolatore.
Questo schema ricorda lo schema di Von Neumann, il promo schema di calcolatori. Ho una serie di
dispositivi di input, che forniscono istruzioni al calcolatore, una CPU che manipola ed esegue
programmi. Una memoria con interazione bidimensionale attraverso cui si prendono programmi, si
eseguono e si salvano le soluzioni nella memoria; e dispositivi di output attraverso cui si mostrano
le soluzioni agli utenti.
Una CPU, il cuore del calcolatore, come va a eseguire le istruzioni di un programma? Un
programma è una sequenza di istruzioni, scritte in un particolare linguaggio di programmazione. La
CPU fa 3 step:
1. FETCH: la CPU legge l’istruzione che gli serve del programma dalla memoria secondaria e va
a prendersi l’istruzione. Noi scriveremo programmi con Phyton, e quindi scriveremo istruzioni
in un formato che si avvicina al linguaggio naturale, se le fornissimo alla CPU, non accade nulla
perche essa non è in grado di ragionare su istruzioni scritte in questa maniera; essa ragiona su
istruzioni scritte su un linguaggio binario (sequenze di zero e uno). Dati che quest’istruzione
non può essere eseguita così com’è, c’è una seconda fase:
2. DECODE: in questa fase la CPU ottiene una versione binaria delle istruzioni scritte in Phyton,
a fare questa traduzione da codice altolivello a codice binario, c’è un componente specifico del
linguaggio di programmazione che lo fa. La CPU interpreta le istruzioni, le decodifica. Ogni
istruzione è un’operazione che noi effettuiamo sulla memoria; può essere un’operazione
aritmetica, la lettura di un database, può essere semplice o molto complessa. Una volta
decodificata un’istruzione essa viene eseguita; decodificata significa che viene compresa dalla
CPU in formato binario, poi viene eseguita.
3. EXECUTE, poi i risultati vengono memorizzati all’interno di opportuni registri, celle di
memoria.
Cosa sono i registri? Essi sono celle di memoria di supporto che la CPU utilizza nel momento in
cui va a eseguire le operazioni.
Una CPU al proprio interno ha vari tipi di registri (celle di memoria specifiche per la CPU, che si
trovano direttamente dentro la CPU). Essendo all’interno della CPU, la CPU può accedere a questi
registri molto rapidamente, quasi in maniera immediata rispetto alla RAM, la connessione con essa
richiede uno specifico bus di sistema che è più lento rispetto alla comunicazione che avviene con i
registri nella CPU, questo perché i registri nella CPU stanno all’interno di essa.
Le CPU possono avere numerosi registri tra cui:
PC (Program Counter) è quel registri che si occupa di memorizzare l’indirizzo dell’istruzione
⁃ successiva da eseguire. Quando si esegue in istruzione ci viene fornito un indirizzo alla cella di
memoria in cui si trova l’istruzione, la CPU va in quella cella di memoria, esegue l’istruzione e
il Program Counter viene aggiornato all’indirizzo dell’istruzione successiva. È un registro
fondamentale per eseguire in maniera sequenziale le istruzioni del programma.
ACC (Accumulatore) registro che si occupa di memorizzare i risultati delle operazioni
⁃ eseguite attraverso le nostre istruzioni.
Ora parliamo delle due memorie principali che esistono all’interno di un calcolatore e di una terza
memoria che è di supporto, la memoria Cache.
La RAM (Random Access Memory)
Random Access Memory, significa memoria ad accesso casuale, questo significa che è formata da
⑪ varie celle, e ogni cella è formata da un particolare indirizzo. Noi possiamo accedere a vari indirizzi
di memoria. Memoria ad accesso casuale significa che qualsiasi indirizzo di memoria io voglio
accedere impiegherò sempre lo stesso tempo. Mentre alcune memorie in passato consentivano un
accesso sequenziale, quindi prima di arrivare alla 10 devo andare in quelle precedenti, questa no, ho
un accesso diretto a qualsiasi cella con lo stesso tempo.
② È una memoria volatile, i dati memorizzati nella RAM, una volta che non esiste più tensione di
corrente, cioè una volta che spengo il pc le informazioni le perdo.
Quando si acquista un computer la memoria RAM è sempre minore di quella secondaria. Per questo
③ motivo dato che la capienza della RAM è minore della capienza della memoria secondaria, la RAM
viene sovrascritta quando la CPU opera sui vari programmi.
La RAM viene riempita in maniera più veloce, quindi la CPU deve ragionare con quali programmi
riempire la RAM e quali lasciare alla memoria secondaria.
La CPU in base quali programmi deve eseguire elimina dalla RAM quei frammenti di programma
che non servono, quindi va a metterli nella memoria secondaria, e va a caricare la RAM con le
istruzioni necessarie per l’esecuzione del programma attuale.
Nella RAM, una volta acceso il pc, viene caricato immediatamente il sistema operativo. Esso è il
primo programma che viene caricato nella RAM perché perennemente in esecuzione, e un
⑫ frammento della RAM è sempre occupato dalle istruzioni del sistema operativo. Quindi la RAM è
fondamentale per il sistema operativo, per memorizzare i programmi prima della loro esecuzione
(voglio eseguire un word, le istruzioni vengono caricate sulla RAM, la CPU può operare su quelle
istruzioni), e memorizzare i dati utente provenienti dalle periferiche (in genere i dati e le soluzioni
di un programma vengono memorizzate o nei registri o nelle memorie secondarie; se sto eseguendo
un programma e ho bisogno di soluzioni intermedie vengono messe nella RAM perché servono
subito).
Perché si distingue tra RAM e memoria secondaria? Perché andrebbe tutto perso e perchè è più
lenta. La comunicazione tra la memoria secondaria e la CPU avviene attraverso il bus condiviso di
sistema attraverso cui passa tutto, ed è molto lento rispetto alla connessione tra la CPU e la ram
perché avviene attraverso un canale di comunicazione dedicato, che consente una comunicazione
più veloce.
Esiste un altro tipo di memoria, la memoria cache, esse sono altre celle di memoria. Sono memorie
intermedie tra la CPU e la RAM, e consentono una comunicazione ancora più veloce. Sono parti di
memoria collegate alla CPU e quando dobbiamo eseguire operazioni critiche (quelle in cui l’utente
aspetta il feedback) anzichè passare per la RAM, memorizziamo istruzioni critiche in queste
memorie cache.
Queste celle di memoria hanno capienza molto ridotta 128 kilobyte, e hanno lo scopo di velocizzare
al massimo istruzioni urgenti per la CPU. Sono memorie molto piccole, possiamo salvare
pochissime istruzioni. Le istruzioni poi vengono sovrascritta nella ROM.
Esistono più livelli di cache, L1, L2, L3, L1 sono le più piccole e più rapide, L3 sono le più grandi e
più lente. La CPU, quindi prima di passare per la RAM passa per le cache, collegate direttamente
alla CPU.
Mentre la CPU ha un collegamento secondario con la RAM, e un collegamento condiviso con la
ROM, qui il collegamento è diretto.
Il tempo medio di accesso alla RAM è di 50-70 nanosecondi mentre inferiore di 10 nanosecondi per
accedere alla memoria cache.
Ricapitolando: la CPU ha bisogno di un particolare dato, prima cerca il dato nella cache (la sua
memoria preferenziale), se lo trova lo utilizza e lo legge, se non lo trova passa alla RAM. Quando
reperisce il dato dalla RAM se è necessario sposta quel dato nella cache, in maniera tale che può
lavorare su quel programma in maniera più rapida.
La ROM, il disco rigido, una memoria secondaria; esso è l’acronimo di Read Only Memory,
poiché questa veniva scritta e poi veniva solo letta. È rimasto questo termine, ma ora la
caratteristica è che è una memoria ad accesso casuale, è quindi indifferente il tempo con il quale si
1 accede ad una cella di istruzione indipendentemente da dove sia locata l’istruzione nella cella.
È una memoria non volatile, ma permanente, significa che i dati che memorizzo rimarranno salvato
2 nell’hardisk anche dopo che non c’è tensione elettrica. Questa è la differenza sostanziale, anche
quella della comunicazione è un’altra differenza ovvero che la comunicazione tra la CPU e la ROM
è molto lenta poiché ho un canale di comunicazione condiviso.
La ROM viene utilizzata per memorizzare i programmi, ma c’è un software molto importante, che
consente all’utente di interagire con il computer, è un software che gestisce l’interazione con il
computer, il sistema operativo.
Il primo software che viene lanciato è Bios, verifica che tutti i componenti hardware del pc stanno
in buona salute, siano vivi, non ci siano problemi hardware. È un software dove posso andare a
verificare lo stato dei vari componenti hardware del mio pc, ma anche a operare scelte di
configurazione del pc a basso livello.
Quali sono le funzioni principali del Bios?
1. verifica che i componenti hardware siano sani se non lo fossero agisce con dei beep.
2. Carica i driver (i driver sono i programmi che consentono il funzionamento dei componenti
hardware come la scheda video. Quando accendo il pc i driver non stanno nella RAM, dopo
aver verificato che i componenti hardware sono sani, vado a caricare i driver, vado a lanciare i
driver: metto i software che mi servono per far funzionare l’hardware nella RAM, i driver
devono essere sempre nella RAM, perché sempre funzionante).
3. Check della memoria, si fanno controlli sul funzionamento della memoria
4. Viene caricato il primo software necessario per l’interazione con il pc, il sistema operativo
(Windows, Mac).
Tecnicamente accendiamo il pc, si stabilizza una tensione elettrica, viene inviato un comando di
reset alla CPU, questo comando è legato a una cella permanente, un indirizzo di jump (che è in
grado di interpretare solo questo comando di reset) la CPU fa partire il Bios che controlla lo stato
dell’hardware, carica i driver, carica il sistema operativo e il sistema operativo carica tutti gli altri
software.
Le schede periferiche consentono di interagire in modalità input (tastiere, mouse) o in modalità
output (stampanti, schede video) tra il calcolatore e un ente.
Come sono collegate le due memorie tra di loro? In realtà le due memorie non hanno un
collegamento diretto tra loro, ma sono collegate tramite un bus di sistema, tramite il canale di
comunicazione condiviso.
Schede di rete: consentono la connessione a internet, possono essere wired (via cavo) o wireless.
Un programmatore non scrive istruzioni in un linguaggio macchina, negli anni i software hanno
sempre scritto in modalità diversa da una notazione binaria cioè utilizzando istruzioni sempre più
vicin
-
Calcolatori elettronici
-
Calcolatori Elettronici
-
Calcolatori Elettronici
-
Appunti Calcolatori Elettronici