Estratto del documento

1)L’interazione fra la CPU e le periferiche può avvenire in vari modi; si presenti il

problema, si descriva e si discuta la gestione tramite polling, interruzione e

accesso diretto alla memoria (DMA). Per ciascun modo si evidenzino vantaggi e

svantaggi e si proponga un esempio di applicazione.

CPU e dispositivi I/O devono mettere in sequenza le proprie attività perché non possono

colloquiare in parallelo con la memoria.

Esistono diversi modi per risolvere il problema di ottimizzazione dei tempi della CPU per

quanto riguarda il colloquio con le periferiche: polling, tecnica dell’interrupt, DMA e

gestione tramite canali I/O.

Il polling consiste nel far sì che la CPU interrompa il proprio lavoro periodicamente ad

• intervalli regolari per interrogare sequenzialmente le periferiche, provvedendo a gestire

eventuali situazioni in cui l’operazione di I/O sia conclusa e riprenda il programma

interrotto.

Vantaggi: poco costosa da realizzare

➔ Svantaggi: la CPU dovendo continuamente interrompere il proprio lavoro rallenta

➔

le altre operazioni in corso. Perdita di tempo. Operazione dispendiosa perché c’è il rischio di

fare interrogazioni non fruttuose

Con la tecnica dell’interrupt non pi la CPU ad interrompere s stessa in maniera

• “arbitraria”, ma la periferica che al momento opportuno (cioè̀ quando ha terminato

l’operazione di I/O) invia un segnale di interrupt alla CPU.

la CPU svincolata dalle continue interruzioni. Inoltre la CPU viene avvisata

➔Vantaggi:

dalla periferica solo quando questa ha terminato il proprio lavoro ed pronta a comunicare

dati e informazioni necessarie.

Svantaggi: quando la CPU comunica con una periferica deve adattarsi alla velocit di

➔

questa + Spreco di tempo perch devo effettuare due trasferimenti dati (I/

O→CPU→Memoria).

Con Il DMA CPU non coinvolta come sorgente o destinatario di dati scambiati nel

• colloquio con le periferiche. In questo caso la tecnica DMA permette il passaggio diretto

dei dati dalla periferica alla memoria centrale. Vantaggi: la CPU svincolata da

➔

processi di comunicazione. Utile se devo ricevere molti dati velocemente. Opera con

segnali di DMA request e DMA aknowledge. Svantaggi:La CPU smette di lavorare (non

➔

pu usare bus dati) ma ho un solo trasferimento anziché́ due, come nella soluzione prima.

ò è è è é

è ù é è è à

2)Si elenchino i tipi di istruzioni presenti tipicamente in una CPU descrivendo in

particolare le funzioni svolte dalle istruzioni di controllo macchina (CPU Control).

Una CPU per poter lavorare deve conoscere una serie di istruzioni elementari (essenziali)che una

volta decodificate, le permetteranno di ottenere il risultato richiesto. Le istruzioni sono scritte in

ASSEMBLY LANGUAGE, ovvero una rappresentazione simbolica che usa codici mnemonici per

indicare le varie operazioni da eseguire.

◼ TRASFERIMENTO DATI

Istruzioni che servono a trasferire dati dalla memoria ai registri, da registri a registri, da registri a

unit esterne, e viceversa.

LD A <indirizzo> carica l’indirizzo di memoria -> A

ST B<indirizzo> store (B)-> indirizzo di memoria

MOV A B serve per copiare da un registro ad un altro (A)->B

Differenza tra move e load?

MOV: sposto un registro a un altro quindi rimango dentro la cpu

LOAD :è un interazione sterna alla cpu (cpu->memoria)

INP <porta> B (porta)->B

OUT A<porta> (A) -> porta

Fanno la stessa operazione concettuale che load e store ma non interagiscono con a memoria ma con

dispositivi di ingresso e uscita. Queste operazioni coinvolgono la CPU e dispositivi input output

tramite, base indirizzi/ dati e controlli.

◼ ISTRUZIONI ARITMETICHE

Permettono di eseguire operazioni aritmetiche elementari su numeri interi. Chiedono alla CPU di

svolgere i compiti propri dell’ALU.

Esempi:

ADD<indirizzo> A (indirizzo)+A->A

Questo vuol dire che io voglio sommare quello che trovo in memoria ad un certo indirizzo + quello

dell’accumulatore = nuovo accumulatore inoltre oltre al risultato produrrà quei indicato FLAG che

mi dicono se i bit sono bastati in valore assoluto, commento a 2.

SUB A<indirizzo> (indirizzo)-(A)->A

Sottraggo dall’accumulatore quello che trovo in memoria

SBC B<INDIRIZZO> sottrae gli operandi e tiene conto degli eventuali prestiti riporti alle

operazioni precedenti.lei stessa produrrà un prestito nel caso in cui si debbano effettuare ulteriori

sottrazioni.

Questa volta il Carry si tende come prestito dell’operazione presente perché una sottrazione .

ADC <indirizzo> A ci permette di gestire un numero di dimensione maggiore rispetto

quello che l’ALU può gestire ma con dei passaggi ripetuti. Dove 1° sommo gli operandi

(ADD) 2°(ADC) sommo i numeri ma nel sommarli aggiungi il riporto della somma

precedente come addendo.

◼ ISTRUZIONI LOGICHE

Permettono di eseguire operazioni logiche su stringhe di bit. I vari operatori operano su coppie di

bit.

AND<INDIRIZZO> A (indirizzo)*A->A and tra accumulatore e registro

OR<INDIRIZZO> B (B)->A

XOR<INDIRIZZO>A (indirizzo) EXOR (A)->A (servono per la mascheratura e operazioni

booleane)

à ◼ ISTRUZIONI DI ROTATE E SHIFT

Sono istruzioni che operano sul contenuto di un registro. Esse servono a operare un singolo bit di

una fila di celle, senza cambiare il contenuto delle altre.

SRL A shif logico destra: traslare verso destra utile per dividere per 2 potenze di 2 in valore

assoluto .

SRA shift aritmetico a destra di ((A)): operazione per dividere per 2 potenze di 2 quando lavoriamo

in complimento a 2 perché traslo i bit ma riconfermo il bit signi cativo

RRA rotazione a destra di ((A))

Esempio: 0110 1011 voglio dividere con SRL la prima parte e la seconda parte con RR perché in

questo modo ci permette di recuperare il bit che avevamo tenuto nel Carry e adesso con l’RR lo

rimettiamo come bit signi cativo

*non posso fare l’inverso perché perderei il Carry dell’operazione precedente.

SLLB shift logico sinistra ((B)) moltiplicare per 2 potenze di 2 in valore assoluto

RLA rotazione a sinistra di ((A))

Esempio: 0110 1011 IL2° cosi rientra nel Carry

2°RL 1°SLL

◼ ISTRUZIONI DI CONTROLLO PROGRAMMA

Sono istruzioni che servono a modificare l’ordine di esecuzione sequenziale delle istruzioni di cui

composto un programma Esempio:

JP PO, DOPO questo signi ca : JUMP ovvero vai a guardare i ag di parità se la parità dispari vuol

dire che si è veri cata questa condizione e vogliamo effettuare il salto

JP NC, POI questo signi ca: jump in poi se il valore ottenuto nel Carry dice che precedentemente

non si è ottenuto riporto

SALTI SENZA RITORNO

JP<indirizzo> salto incondizionato

Salta a quella posizione quindi vai a cambiare il valore del program counter perché

quella non è l’istruzione da eseguire ma si trova nell’indirizzo speci cato all’interno

dell’istruzione quindi indirizzo->pc

JP<condizione><indirizzo> salto condizionato

In fase di execute verrà controllato il valore che c’è nel ag speci cato nell’istruzione e quel ag

corrisponde dalla condizione vera-> salto falsa-> non stato e vado avanti normalmente

Esempio in Ca2: ADD A, B

Dopo aver effettuato questa somma visto che non sono certo che l’accumulatore contenga il risultato

corretto dell’operazione perché i bit potrebbero non essere bastati

Quindi dopo faccio: JP ow,”poi” se il programma non salta a poi (over ow)Continua a fare le

operazioni perché il risultato che la somma ha prodotto è corretto ovvero sono bastati viceversa se ho

avuto over ow vuol dire che il risultato non è compatibile con dim. dell’accumulatore e quindi nella

porzione di programma si deciderà di usare più bit af nché il numero si rappresenti correttamente.

JR<DISPLACEMENT> salto relativo alla posizione attuale del pc

Nell’istruzione non troverò l’indirizzo a cui andare ma un numero mi ca2 che mi trasla un numero di

posizioni avanti o indietro

Il numero che compare nell’istruzione è lo spostamento che dobbiamo inviare al program counter

per raggiungere la posizione

La sua esecuzione quindi: (pc) +displacement ->pc

JR <COND><DISPLACEMENT > salto relativo condizionato

Dal registro dei ag quindi salto se e solo se i ag assume valore vero indicato nell’istruzione

Se istruzione veri cata:(pc) +displacement ->pc altrimenti non si fa niente

perché due istruzioni diverse: jump JP 1000 e jump relativo JR-10 ?

In base dati è più piccolo del base indirizzi con quindi con un numero più piccolo di bit posso

speci care dove andare JR quindi se mi basta ascrivere -50 è più veloce rispetto al caso in cui

voglio avere un intero indirizzo (JP)

fi fl fl fi fi fi fi fi fl fi fl fl fi fi fi fl è fl

SALTI CON RITORNO

Quando scriviamo un programma potrebbe esserci l’esigenza di abbandonare l’istruzione corrente. Ci sono

richiami a sottoprogrammi per cui salviamo il Contenuto del pc prima di caricare il nuovo valore per rendere

possibile il ritorno all’esecuzione successiva a quella che ha effettuato il salto.Il salvataggio consiste nella

memorizzazione del contenuto del pc (l’indirizzo) nello stack (una parte di memoria che segue la logica lifo)

mi permetterà di avere chiamate nidi cate ovvero potrò raggiungere un sottoprogramma che a sua volta ne

potrà chiamare un altro e cosi via.

Quindi pc lo riempiremo dallato verso il basso. Indirizzo della cella di memoria che per l’ultima è stata

riempita viene identi cata da un registro interno alla cpu chiamato stack pointer(puntatore alla pila). Quando

alla ne del sottoprogramma viene richiesto il ritorno allora recupero il pc salvato nello stack prelevarlo e

rimetterlo nel pc

CALL<INDIRIZZO> salto con ritorno incondizionato

Salto in cui dobbiamo preoccuparci di non perdere il valore che il pc aveva all’uso interno

call<cond><indirizzo> salto con ritorno condizionato

Questo comando si compone di codice operativo e indirizzo a cui saltare. Cosa dovrà prendere fase di

execute? L’indirizzo a cui andare a prender il posto del pc corrente?

(SP)-1 -> SP

(PC)-> MAR

(PC)->MBR

(MBR)->(MAR)

Con questi passi abbiamo preso da parte il valore che nel program counter è stato impostato alla conclusione

della fase di fetch avendo da parte l’indirizzo in cui voglio tornare posso prendere l’indirizzo e lo metto nel

pc : indirizzo ->pc

perchè lo stack pointer si incrementa?

Il puntatore alla pila (stack pointer) per convenzione punta sempre alla ultima cella occupata però abbiamo

l’esigenza di scrivere un nuovo valore e non possiamo scriverlo in una cella già occupata: la casella vuota

che troveremo è quella più basso in cui ci troviamo però innanzitutto devo veri care se la condizione si è

veri cata poiché era salto condizionato

In fondo al programma cosa ci sarà scritto?troveremo un comando ritorna al punto di partenza : ret

Per ritorno condizionato Oltre al codice operativo avremo bisogno di altro? No, perché la cpu sa che

l’indirizzo si trova nella posizione indicato nel punto della pila.

1) ret ritorno condizionato

Quindi se andiamo a fare ritorno dobbiamo :

1.(SP)-> MAR

2.((mar)) ->mbr

3.(mbr)-> pc

4.(sp)+1-> sp

Il puntatore alla pila (che sta puntando alla ultima casella) lo mando sul bus indirizzi quello che trovo: il

contenuto lo mando sui bus dati che quando raggiunge la cpu viene caricata nel pc cosi il mio programma

riparte da dove era rimasto poi il puntatore s +1 diventa un nuovo puntatore della pila e risalgo

2)ret<cond>ritorno condizionato se vene veri cata

◼ ISTRUZIONI DI CONTROLLO MACCHINA

Sono istruzioni che servono a modificare direttamente lo stato della CPU, senza operare sui dati n

sulle operazioni tra dati (trasferimenti, ecc.).

▪ ▪HALT

Arresta il funzionamento della CPU

▪ ▪NOP

Che sta per “No Operations”, mantiene inalterato lo stato della CPU, serve a creare dei ritardi per

permettere il completamento di altre operazioni.

▪ ▪DI

Che sta per “Disable Interrupt”, comando che disattiva gli interrupt, cos la CPU non ricever

segnali di interrupt.

fi fi fi fi fi ì fi à é

▪ ▪EI

Che sta per “Enable Interrupt”, comando che attiva gli interrupt, cos la CPU potr ricevere segnali

di interrupt.

▪ ▪RESET

Comando che azzera lo stato della CPU a livello software quindi va usata quando la CPU è ancora in

grado di elaborare l’istruzione, altrimenti si usa HD RESET che provoca una ripartenza hardware

circuitale a livello dei bus control grazie anche al watch dog che permette di interrompere tutto

quello che stava accadendo nell CPU.

3)Si descriva l’architettura di una generica CPU evidenziando in particolare le funzioni che

vengono svolte dal Program Counter e dallo Stack Pointer.

Si commenti il coinvolgimento delle risorse della CPU durante la fase di decodifica

dell’istruzione, ben commentando lo scopo di tale fase (cosa si richiede perché venga svolta,

cosa produce e per chi).

Una generica CPU (Central Processing Unit) contiene al suo interno le seguenti

• componenti: ALU (Unità logico-aritmetica), accumulatore, program counter, instruction

register, decodificatore, controllore, registri a scopi generali, stack pointer e bus indirizzi e

dati e controller esterni e interni

Il PROGRAM COUNTER contiene gli indirizzi per le istruzioni che servono per ogni

• istante del tempo

-Formato da circuito con autoincremento cioè si aggiorna con un nuovo indirizzo quando

l’istruzione precedente si è conclusa

Lo STACK POINTER detto anche “puntatore alla pila”, è associato allo stack.

• - é un dispositivo che punta sempre all’indirizzo in cima alla pila.

Il program counter segue l’andamento di un programma normalmente e ogni volta che si

passa ad un sottoprogramma , si salva nella prima cella dello stack l’indirizzo a cui

l’esecuzione del main program si è interrotta (cioè il contenuto del PC). Funziona nella

stessa logica per chiamate a programmi ricorsivo o nidificate infatti la pila segue la logica

LIFO (Last in first out) e quindi il primo indirizzo inserito nello stack sarà l’ultimo a uscire.

La fase di decodifica è la seconda fase del ciclo macchina (fetch, decode , execute).

• Una volta che l’instruction register ha ricevuto l’istruzione, questa viene decodificata dal

decoder che identifica il CODICE OPERATIVO (che definisce il tipo di istruzione) e il

CAMPO OPERANDO che verrà scomposto nei due operandi (fornisce indirizzi degli

operandi da dove andarli a prelevare e poi dove memorizzarli e la modalità di

indirizzamento)

Utile per il controllore che dovrà attivare i circuiti idonei a svolgere l’operazione richiesta

nella fase di execute. ì à

4)Si descriva l’architettura di una generica CPU evidenziando in particolare la

modalità di interazione fra gli elementi della CPU e lo Stack. Si motivi infine la

necessità di prevedere un collegamento fra i registri per scopi generali sia con il

bus dei dati che con quello degli indirizzi, indicando la/e direzione/i in cui

possono avvenire i trasferimenti delle informazioni, ben motivando la risposta.

Una generica CPU (Central Processing Unit) contiene al suo interno le seguenti

• componenti: ALU (Unità logico-aritmetica), accumulatore, program counter, instruction

register, decodificatore, controllore, registri a scopi generali, stack pointer e bus indirizzi,

bus dati interni ed esterni e bus controlli.

Lo stack è una sezione di memoria contenuta nella CPU composta da una serie di cellette

• in colonna.

Lo Stack segue l’andamento di un programma ogni volta che esso passa a un

sottoprogramma o da quest’ultimo si passa al programma precedentemente in corso.

Esso salva nella sua prima cella l’indirizzo a cui l’esecuzione del MAIN PROGRAM si

interrotta (ossia il contenuto del Program Counter).

Nella stessa logica nel caso di molteplici sottoprogrammi nidificati vengono via via segnati

gli indirizzi a cui l’esecuzione dei vari programmi si interrotta.

In questo modo la pila si sposta in avanti o indietro (se vengono aggiunti o tolti dati).

La pila Segue la logica LIFO (Last In First Out) pertanto la cima della pila contiene sempre

l’ultimo indirizzo utile che sar presente nello stack pointer.

Pertanto lo stack interagisce con bus dati interno nei due sensi di marcia invece ha un

• collegamento solo uscente con i bus indirizzi interno.

I registri a scopi generali hanno collegamneti sia uscenti che entranti con i bus dati interno

• perché sia possibile far entrare e uscire dati siccome l’utilità dei registri a scopi generali è

proprio conservare dati. Inoltre ha un collegamento soltanto uscente con il nìbus indirizzi

interno.

5)Si descriva l’architettura di una generica CPU evidenziando in particolare le funzioni che

vengono svolte da ALU, accumulatore e registro dei Flag. Si motivi infine la necessità di

prevedere un collegamento fra il registro PC sia con il bus dei dati che con quello degli

indirizzi, indicando la/e direzione/i in cui possono avvenire i trasferimenti delle informazioni,

risposta.

ben motivando la

Una generica CPU (Central Processing Unit) contiene al suo interno le seguenti

• componenti: ALU (Unità logico-aritmetica), accumulatore, program counter, instruction

register, decodificatore, controllore, registri a scopi generali, stack pointer e bus indirizzi,

bus dati interni ed esterni e bus controlli.

ALU (Arithmetic -logic unit) esegue le operazioni logiche e matematiche elementari.

•

Per operare necessità di conoscerel’operazione ch

Anteprima
Vedrai una selezione di 7 pagine su 28
Domande aperte di esercizio Pag. 1 Domande aperte di esercizio Pag. 2
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Domande aperte di esercizio Pag. 6
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Domande aperte di esercizio Pag. 11
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Domande aperte di esercizio Pag. 16
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Domande aperte di esercizio Pag. 21
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Domande aperte di esercizio Pag. 26
1 su 28
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 Patrik2205 di informazioni apprese con la frequenza delle lezioni di Fondamenti 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à Università degli Studi di Roma La Sapienza o del prof Rubeo Francesco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community