PDA

View Full Version : [ASSEMBLER] Fase di fetch ed esecuzione di alcune istruzioni


patatonzoromano
10-07-2012, 19:45
Buonasera a tutti, vi scrivo per sapere una piccola cosa.
Sto dando la parte teorica del mio esame di programmazione e (data anche la mia età e il mio orientamento superiore) fatico a capire alcuni esercizi. Oddio, riesco a risolverlo praticamente tutto ma un punto mi blocca.

"Disegnare la struttura di una semplice CPU e indicare le operazioni elementari necessarie a svolgere una istruzione assembler che esegua una operazione di caricamento nell’accumulatore di un dato definito in modo immediato:

MOV A, !=22."

La prima parte della domanda l'ho studiata sul libro di testo ma la seconda parte proprio non la trovo, ho cercato e ricercato ma tutti i siti non mi hanno soddisfatto. :muro:
Nella prova (che tra l'altro ho sostenuto già due volte) si chiedono le istruzioni di fetch e di execute di quel comando. Panico. :help:
Qualcuno di voi potrebbe aiutarmi?
Grazie in anticipo ragazzi!
Matteo

FedNat
11-07-2012, 08:11
Buonasera a tutti, vi scrivo per sapere una piccola cosa.
Sto dando la parte teorica del mio esame di programmazione e (data anche la mia età e il mio orientamento superiore) fatico a capire alcuni esercizi. Oddio, riesco a risolverlo praticamente tutto ma un punto mi blocca.

"Disegnare la struttura di una semplice CPU e indicare le operazioni elementari necessarie a svolgere una istruzione assembler che esegua una operazione di caricamento nell’accumulatore di un dato definito in modo immediato:

MOV A, !=22."

La prima parte della domanda l'ho studiata sul libro di testo ma la seconda parte proprio non la trovo, ho cercato e ricercato ma tutti i siti non mi hanno soddisfatto. :muro:
Nella prova (che tra l'altro ho sostenuto già due volte) si chiedono le istruzioni di fetch e di execute di quel comando. Panico. :help:
Qualcuno di voi potrebbe aiutarmi?
Grazie in anticipo ragazzi!
Matteo

Credo che la seconda parte della domanda faccia riferimento alle varie parti in cui è scomposta l'esecuzione di una istruzione (che poi compongono la pipeline di un processore, vedi Wiki (http://it.wikipedia.org/wiki/Pipeline_dati))

Le fasi classiche sono

Fetch: reperire l'istruzione
Decode: capire cosa comporta eseguire l'istruzione
Execute: eseguire l'istruzione
Write Back: Scrittura del risultato nel registro destinazione


Nel caso della tua istruzione:

Nella fase di Fetch viene utilizzato il Program Counter (PC) come indirizzo per accedere alla RAM e prelevare l'istruzione
Nella fase di Decode la CPU capisce che deve caricare un valore in un determinato registro
Nella fase di Execute viene prelevato dal codice dell'istruzione il valore immadiato da caricare nell'accumulatore
Nella fase di Write Back il suddettovalore viene scritto nel registro


Questa è una descrizione grossolana delle fasi di esecuzione di una istruzione.
Tieni conto che tutto dipende da come sono state definite le fasi e quante sono, dovresti vedere cosa ha detto il professore durante le lezioni e cosa dice il libro di testo.

Z80Fan
13-07-2012, 14:35
"Disegnare la struttura di una semplice CPU e indicare le operazioni elementari necessarie a svolgere una istruzione assembler che esegua una operazione di caricamento nell’accumulatore di un dato definito in modo immediato:

MOV A, !=22."

Ciao,
le operazioni elementari di cui parla lui sono le istruzioni del microcodice del processore; dovrebbe essere spiegato nel tuo libro perchè è una cosa importante.

Dovrai quindi disegnare il tuo semplice processore, e indicare quali linee di comando (che escono dall'unità di controllo e vanno ai moduli della CPU, come ALU, registri etc.) vengono attivate e in quale sequenza per eseguire le tre fasi principali di esecuzione fetch, decode, execute, come ha scritto FedNat (tipicamente, quella che lui ha indicato come Write Back viene inclusa come parte della fase di execute).

Secondo me dovresti partire da quella istruzione scritta, e pensare: "cosa fa questa istruzione?" -> "preleva il valore 22 dalla memoria e lo mette nel registro A"; "come fa a prelevare il valore 22?" -> "mette l'indirizzo xxx nel bus yyy..." etc. Continuando con le domande e abbassandoti di livello arriverai a un punto dove avrai descritto esattamente cosa ogni elemento della tua CPU deve fare, e quelle saranno le operazioni elementari.

Non penso che ti venga richiesta la progettazione di una pipeline quindi non preoccuparti di quella.
Sei sicuro che nel tuo libro non ci sia un esercizio svolto simile?

Mi sembra un po' strano come esercizio in un corso di programmazione, penserei a uno di Architetture (che ho fatto di recente anche io).