Estratto del documento

BUS

CPU e MEM

La CPU è costituita di porte logiche organizzate in vari dispositivi, in grado di eseguire istruzioni, quindi

programmi, e di ritenere informazioni, che vengono fornite dalla MEM, all’interno di registri. I dati fluiscono

attraverso i dispositivi tramite i BUS (fili conduttori), mentre la CPU comunica con il mondo esterno, cioè le

periferiche, attraverso la I/O.

La MEM è una matrice di celle di memoria di tipo , cioè essa ha un numero di righe, ciascuna delle quali

è formata da bit, in base alla tipologia di computer (i dispositivi che considereremo noi hanno MEM da 8 bit).

si dice profondità della MEM, mentre la sua dimensione si misura in byte e misura esattamente byte.

Se allora una riga corrisponde ad un byte. Si pongono quindi queste grandezze per dimensionare le

memorie: (presenti in piccole CPU, in memorie dette Cache, e nella I/O)

(presenti in MEM e CPU per dispositivi dedicati)

(presenti nelle MEM dei computer)

(presenti solo in Hard Disk esterni di grossa capienza)

L’accesso alle celle di memoria avviene grazie alla presenza di un elenco di indirizzi, uno per ogni riga del

registro, che sarà descritto da un codice binario. Se si hanno righe saranno necessari bit per

codificarle tutte (per esempio, con 10 bit posso codificare 1024 indirizzi). Si effettua un accesso alla memoria

per compiere una di tre operazioni: leggere la memoria, scriverla oppure cancellare il suo contenuto.

Vi sono due grandi famigli tecnologiche di memorie centrali:

ROM RAM

(Read Only Memory) (Random Access Memory)

In seguito ad una previa fase di scrittura, queste In queste memorie il tempo necessario ad accedere ad

memorie vengono rese di sola lettura. una cella è indipendente dalla sua posizione: tutte le

celle possono essere raggiunte con il medesimo

Sono memorie non volatili, cioè mantengono salvato il utilizzo di tempo.

loro contenuto anche quando la corrente viene

scollegata dal dispositivo che le ospita. Sono memorie volatili, cioè perdono il loro contenuto

se la corrente viene scollegata dal dispositivo che le

Questa memoria contiene quindi i programmi in grado ospita.

di avviare il Sistema Operativo. Vi sono 3 tipi di memorie RAM:

Vi sono 4 tipi di memorie ROM: - SRAM: Static RAM, contengono i Flip-Flop.

- PROM: ROM programmabili, cioè riscrivibili; Sono memorie molto veloci ma molto costose.

- EAROM: Electrically Alterable ROM, cioè Stanno nella CPU.

modificabili attraverso modifiche della - DRAM: Dynamic RAM, sono costituite di un

tensione; transistor e di un condensatore, quindi sono

- EPROM: Ereasable PROM, cancellabili se a molto economiche. Il dato (un bit) contenuto in

contatto con la luce; una DRAM è generato dalla carica del

2

- EEPROM o E PROM o comunemente condensatore:

FLASH: Electrically Ereasable PROM. È proprietà dei condensatori quella di

Le memorie FLASH sono veloci ma non scaricarsi nel tempo (10-12 millisecondi), è

eterne, cioè possono essere riscritte intorno al quindi necessario che sia presente un

milione di volte, dopodiché si guastano. dispositivo controllore della DRAM che legga

e riscriva periodicamente le celle di memoria.

- SDRAM: Syncronized DRAM, il Clock di

sistema sincronizza dinamicamente le celle.

Riassumiamo quindi quali sono i compiti della CPU:

- Coordinare gli elementi della macchina di Von Neumann;

- Eseguire programmi, cioè prelevare istruzioni dalla MEM, osservarle, capire di che istruzioni si tratta ed

eseguirle;

CPU ME M

- Nella CPU sono presenti anche ALU e registro di FLAG. read

ALU UCD

Ecco una rappresentazione schematica della CPU: MFC

Internamente alla CPU vi sono dei BUS che collegano le varie componenti

C FLAG IR

A B M

PC BUS

A IND =

1010 0000 = A0

IND

R 3F

BUS

SP MDR DATI

Lettura della MEM

Per poter accedere alla MEM la CPU ha bisogno di conoscere l’indirizzo della cella da cui prelevare il dato.

Questo indirizzo è contenuto nel registro degli indirizzi della memoria MAR, mentre nel registro dati della

memoria MDR è presente il dato che è già stato letto dalla MEM stessa. A collegare questi due registri con la

MEM ci sono due BUS preposti: il BUS IND che collega unidirezionalmente il MAR alla MEM; il BUS DATI

che collega bidirezionalmente il MDR alla MEM. Inoltre c’è un BUS di controllo bidirezionale che collega

l’unità di controllo e decodifica UCD alla MEM. L’operazione di lettura si articola nei seguenti passaggi:

1. L’UCD invia un segnale al MAR, che si apre all’invio di segnali al BUS IND

2. Sul BUS IND si propaga il potenziale relativo alla codifica dell’indirizzo della cella che si vuole leggere

3. L’UCD genera un segnale di controllo read e lo invia alla MEM, in questo modo la MEM accede al

BUS IND

4. MEM, ricevuta l’informazione dal MAR, immette sul BUS DATI il dato contenuto dalla cella relativa

all’indirizzo ricevuto

5. La MEM rilascia verso la UCD il segnale di controllo memory function completed MFC, che indica alla

CPU che la MEM ha svolto il suo compito

6. Il MDR riceve il dato dal BUS DATI e lo scrive nel proprio registro

7. La CPU si chiude al mondo esterno

Scrittura della MEM

Poiché i dati ricevuti o da inviare alla MEM si trovano nel MDR, la scrittura si articolerà nei seguenti passaggi:

1. L’UCD invia tre segnali in parallelo: due di questi vengono inviati a MDR e MAR, che si aprono verso i

BUS IND e DATI, il terzo segnale write viene inviato alla MEM, che si predispone ad essere scritta

2. La MEM riceve il dato da scrivere e l’indirizzo della cella nella quale scriverlo dai BUS IND e DATI e

completa l’operazione

3. La MEM rilascia verso la UCD il segnale di controllo MFC

4. La CPU si chiude al mondo esterno

Nella figura sopra notiamo la presenza di alcuni elementi mai visti prima, ecco le loro funzioni:

- IR (Instruction Register): contiene l’istruzione in esecuzione o la seguente. Appena l’istruzione viene

spostata nell’IR l’UCD la legge e manda i segnali di controllo ad essa relativi ai dispositivi che

quell’istruzione coinvolge.

- PC (Program Counter): contiene l’indirizzo dell’istruzione successiva a quella in esecuzione

- SP (Stack Pointer): puntatore dell’area di Stack, che è una particolare area della MEM. Lo SP punta alla

prima cella libera dell’area di Stack.

I/O I/O

Il dispositivo di Input/Output è un dispositivo elettronico in grado di

interfacciare le periferiche con il mondo interno alla macchina.

Il registro RDP contiene i dati in entrata e in uscita dalle periferiche, RDP

mentre il registro di stato definisce il modus operandi dell’interfaccia

verso l’esterno, per esempio gestisce l’invio in parallelo o in serie dei

bit a seconda della periferica collegata.

Un problema molto diffuso nel campo delle comunicazioni tra

dispositivi è quello del rumore: esistono particolari dispositivi che R STATO

permettono di correggere errori di trasmissione derivanti dal rumore

esterno.

TIPOLOGIE DI ISTRUZIONI

Un programma non è altro che un processo di formalizzazione di un algoritmo, che si appoggia ad una

grammatica. Questa grammatica è costituita da istruzioni, ciascuna avente il proprio compito specifico. Avremo

quindi uno spazio delle istruzioni, così suddiviso:

- Istruzioni di scambio dei dati: lettura, scrittura e gestione della MEM

- Istruzioni che controllano l’interfaccia I/O

- Istruzioni aritmetico-logiche

- Istruzioni varie

- Istruzione halt: l’istruzione che arresta la CPU.

Lo spazio delle istruzioni contiene delle parole, cioè le istruzioni in esso contenute sono scritte in un linguaggio

vicino al nostro. La scelta delle istruzioni da includere nello spazio è fondamentale e varia a seconda

dell’obiettivo che abbiamo. Il numero di istruzioni utilizzabili, infatti, non è infinito, poiché ogni istruzione

andrà codificata in una sequenza binaria affinché la macchina fisica sia in grado di eseguirla. Se perciò la

macchina è in grado di lavorare su bit si potranno codificare istruzioni. Vediamo alcuni esempi di

istruzioni divisi per categorie.

Gestione della MEM:

- loadA, ind (carica nel registro A della CPU il contenuto della cella di memoria avente indirizzo ind)

- loadB, ind

- storeA, ind (memorizza nella cella di memoria avente indirizzo ind il contenuto del registro A)

- storeB, ind

Gestione delle periferiche I/O:

- readA, indp (copia nel registro A il contenuto del registro RDP)

- readB, indp

- read ind (memorizza in una cella libera della MEM il dato presente nel RDP, che proviene da una

periferica di default)

- writeA, indp (scrive nel RDP il contenuto di A)

- writeB, indp

ESECUZIONE DI PROGRAMMI

Eseguire un programma significa rappresentare un algoritmo attraverso uno spazio di istruzioni predefinito.

All’interno di questo spazio stanno tutte le istruzioni, scritte in un linguaggio a noi vicino, che descrivono le

operazioni che la macchina dovrà compiere. Per esempio vi sono istruzioni di lettura, di scrittura delle

memorie, e anche quattro istruzioni che eseguono le operazioni elementari:

- ADD: preleva il contenuto di A, somma ad esso il contenuto di B, genera un risultato che viene

memorizzato in A

- SUB: A

- MUL: A

- DIV: divisione tra interi. A; resto B

 

Immaginiamo di avere un algoritmo che prelevi i dati contenuti nei registri A e B della CPU, svolga

un’operazione e visualizzi il risultato sullo schermo del computer.

Abbiamo a disposizione la macchina di Von Neumann: CPU, MEM e I/O connessa a tastiera (input) e schermo

(output). Vogliamo eseguire una moltiplicazione inserendo i due operandi da tastiera.

- Inseriamo il primo elemento dalla tastiera e memorizziamolo in una

cella di memoria il cui indirizzo è ind a.

read inda (RDP MEM, ind a)

Non specifichiamo quale periferica leggere perché ce n’è solo una,

la tastiera, oppure supponiamo di andare a leggere la periferica di

default. Il valore ASCI immesso attraverso la tastiera è presente nel

RDP del I/O e viene copiato all’interno della cella ind a della MEM.

- Allo stesso modo bisognerà inserire il secondo operando e metterlo

in una cella in MEM distinta da ind a, per esempio possiamo

utilizzare la cella avente indirizzo ind b.

read indb

- Per poter svolgere la moltiplicazione è necessario che gli operandi si

trovino nei registri A e B della CPU, quindi copiamo i dati appena

immessi nella MEM in questi registri. Poniamo a in A e b in B.

load A, inda (MEM, ind a CPU, A)

load B, indb

- Eseguiamo la moltiplicazione, che automaticamente andrà a moltiplicare i due valori presenti in A e in B

per poi salvare il risultato in A stesso.

Anteprima
Vedrai una selezione di 12 pagine su 55
Appunti informatica A Pag. 1 Appunti informatica A Pag. 2
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 6
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 11
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 16
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 21
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 26
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 31
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 36
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 41
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 46
Anteprima di 12 pagg. su 55.
Scarica il documento per vederlo tutto.
Appunti informatica A Pag. 51
1 su 55
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher giovanini di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Alippi Cesare.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community