Tecniche della Programmazione, , Parte1

Documenti analoghi
Tecniche della Programmazione, , Parte1

Architettura del Calcolatore

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Architettura del Calcolatore

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

Architettura del calcolatore (Seconda parte)

Architettura hardware

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Il processore - CPU (CENTRAL PROCESSING UNIT)

Abilità Informatiche e Telematiche

Architettura dell elaboratore

Architettura dell elaboratore

Abilità Informatiche e Telematiche

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Elementi di informatica

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

Sistemi di Elaborazione delle Informazioni

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Fondamenti di Informatica A. A / 1 9

Elementi di informatica

Struttura di un elaboratore

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Architettura di von Neumann

Calcolatore: sottosistemi

L architettura del calcolatore (Seconda parte)

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Il modello di von Neumann

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Memoria centrale (RAM) Registri della CPU. Definizioni. Architettura considerata in CPUSim. Programma in linguaggio macchina

Architettura hardware

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Cenni sull architettura del calcolatore

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Terza lezione 21 ottobre 2016

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

ARCHITETTURA DI UN ELABORATORE. Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Il sistema di elaborazione

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Architettura dei calcolatori

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un elaboratore. Il modello di von Neumann

ARCHITETTURA DI UN ELABORATORE

ARCHITETTURA DEL CALCOLATORE

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

memoria PSW R1 R2 CPU Struttura logica dell elaboratore unità di controllo ALU unità di ingresso unità organo coordinatore clock di uscita

Laboratorio di Informatica L-A 1

Sistemi di numerazione

CPUSim. Laboratorio 30/11/2016

Lezione 15. L elaboratore Elettronico

Architettura dei calcolatori

Informatica di base 4 crediti 32 ore!!

Architettura degli Elaboratori

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Architettura dei computer

Architettura del computer

Componenti di un processore

Capitolo 5 Elementi architetturali di base

ARCHITETTURA DI UN ELABORATORE

Architettura del calcolatore

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Architettura e funzionamento del calcolatore

Lezione 1: L hardware

Architettura dei calcolatori

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Il modello di Von Neumann

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

Istruzioni e linguaggio macchina

Corso di Fondamenti di Informatica Elementi di Architettura

Sistemi e reti CPU Concetti di base

Corso di Informatica

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Architettura dell elaboratore

Fondamenti di Informatica B

Struttura di un sistema di elaborazione. SDE: basi. Descrizione dei componenti (2) Descrizione delle componenti

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

Parte 3. Linguaggio Macchina e Assembler

FONDAMENTI DI INFORMATICA Lezione n. 10

ARCHITETTURA DI UN ELABORATORE

Architettura dei computer

FONDAMENTI DI INFORMATICA Lezione n. 10

Componenti principali

Transcript:

Tecniche della Programmazione, 2017-18, Parte1 Per alcune slide di questa lezione ho tratto spunto, o brutalmente usato, quelle della raccolta dei proff. F.Frati e C.Limongelli, che ringrazio Tecniche della Programmazione, M.Temperini, 2017-2018 parte1, lezione1

(HARDWARE)

Memoria Centrale Consente di registrare (MEMORIZZARE ) dati/istruzioni in modo temporaneo: il contenuto scompare quando la memoria non e alimentata (la memoria e VOLATILE) - Operazione di MEMORIZZAZIONE: un dato/istruzione viene copiato in un area di memoria - Operazione di ACCESSO: il valore contenuto in un area di memoria viene acceduto, ad esempio viene copiato altrove per farci qualche altra operazione La chiamano RAM: Random Access Memory; non vuol dire che si accede a caso vuol dire che le operazioni di accesso e memorizzazione sono possibili ovunque, senza un ordine obbligatorio che imponga di visitare un area prima di un altra a priori. (Gli indirizzi, gli indirizzi!!!!) La CPU accede direttamente alla RAM, attraverso il BUS.

Struttura semplificata della memoria centrale gruppo di celle (LOCAZIONI DI MEMORIA); ciascuna (PAROLA) di 16/32/64 bit Indirizzi delle celle BUS indirizzi Cella selezionata in base all indirizzo Accesso Memorizzazione BUS di controllo BUS dati dato acceduto, o da memorizzare

Bah, vedremo per ora vale quanto scritto prima: kb 1024, etc!!!!

Si', ma... Cosa c'e' in una cella? 000000000 (Load) codice operazione IND What the hell, instructions, numbers... in a word DATA; in another word INFORMATION REG istr. macchina (load) da memoria a registro 0000000010 (add) R1 R2 Codice Reg1 Reg2 operazione istr. macchina per operazione tra due registri + -2 00003752 numero: un dato, che sicuramente rappresenta un'informazione...; in questo caso un numero rappresentato con segno, esponente e mantissa (ma potrebbe essere altro - intero, carattere... chissa'...)

Funzionamento di ACCESSO e MEMORIZZAZIONE In ACCESSO, il processore invia l indirizzo della cella da visitare, attraverso il BUS INDIRIZZI. E il valore acceduto e reso disponibile attraverso il BUS DATI. In MEMORIZZAZIONE, il processore invia il dato da copiare in memoria, attraverso il BUS DATI, e l indirizzo della locazione in cui eseguire la copia, attraverso il BUS NDIRIZZI. E Il valore viene copiato nella cella indicate. Ciasun accesso avviene in un tempo INDIPENDENTE DALLA LOCAZIONE (cioe dall indirizzo: remember, Random Access Memory)

Struttura della CPU accedi / memorizza

Elementi di una CPU CPU Unità di controllo Unità aritmetico logica (ALU) Registri Unità di controllo Control Unit CU) Svolge funzioni di controllo, decide quali istruzioni eseguire. Unità aritmetico logica (Arithmetic-Logic Unit ALU) esegue le operazioni aritmetico-logiche (+,-,ecc., confronto). Registri memoria ad alta velocità usata per risultati temporanei e informazioni di controllo; il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro; esistono registri di uso generico e registri specifici:

Registri (1/2) Esistono registri di uso generico e registri specifici : PC: contatore delle istruzioni (program counter) contiene l indirizzo della prossima istruzione da eseguire IR: registro delle istruzioni (instruction register) contiene l istruzione che deve essere eseguita PSW: program status word contiene informazioni, opportunamente codificate, sull esito dell ultima istruzione che è stata eseguita

Registri (2/2) MAR: registro indirizzi della memoria indirizzo della cella di memoria che deve essere acceduta o memorizzata MDR: registro dati della memoria dato che è stato acceduto o che deve essere memorizzato registri generali per memorizzare gli operandi ed il risultato di una operazione

Unità Aritmetico-Logica L'Unità Aritmetico-Logica (ALU) è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico La ALU accede ai valori di registry, esegue operazioni tra quei valori, memorizza risultati delle operazioni in registri

si', ma che fa la CPU? (che fa la ALU in collaborazione con la CU?) eseguele istruzionidel programma, chedeveesserescritto in linguaggio macchina... no?chealtro? ESEGUE Istruzioni MACCHINA per elaborazione dati aritmetiche logiche (AND, OR, NOT) relazionali (maggiore, minore, uguale,...) ESEGUE Istr. MACCHINA per controllo flusso esecuz. sequenza selezione ciclo salto (Jump) ad una data istruzione ESEGUE Istruzioni MACCHINA per trasferimento info dati ed istruzioni fra CPU e memoria dati fra CPU e dispositivi di I/O (tramite interfacce)

Istruzioni macchina? I circuiti della CPU collegano registri ed eseguono operazioni di accesso e memorizzazione su registry. Attraverso il BUS, e i registri, i circuiti possono interagire con la memoria e con le interfacce di I/O Yawn Piu o meno ogni circuito corrisponde ad una delle operazioni (compiti, lavori, cose che possono essere fatte) che la CPU puo eseguire usando e controllando le altre strutture del calcolatore. Yes! Queste sono le istruzioni eseguibili dalla CPU E queste sono le istruzioni macchina,

Istruzioni macchina! E queste sono le istruzioni macchina, nel senso che un programma scritto in linguaggio macchina, descrive la sequenza di istruzioni macchina che devono essere eseguite per acquisire i dati di input e risolvere il problema. Per essere eseguito, il programma va memorizzato (cioe messo in memoria). Ogni istruzione va scritta in memoria specificando il suo codice (codice operativo che identifica il circuito) (per questo si parla di codice sorgente, codice di programma, codifica per scrittura di un programma ) e quali registri sono coinvolti nell operazione da eseguire, e se serve, anche quali indirizzi di RAM devono essere coinvolti nell operazione. Continua con i Cenni sul linguaggio macchina

Memoria Cache La velocità con cui la CPU esegue le sue operazioni è la massima possibile in tutto il sistema di elaborazione. Il BUS trasmette dati alla sua velocità, che e' minore. La memoria gestisce le sue locazioni a velocità ancora minore. Le operazioni che coinvolgono le periferiche (unità di I/O, memoria esterna...) sono diversificate ma sempre (molto) più lente. Così, in quest'immensità, può succedere che il processore debba fermarsi ad aspettare che altre componenti del calcolatore finiscano il loro lavoro. Ad esempio se la CPU ha richiesto un dato alla RAM, la risposta arriverà un bel po' di clock dopo, lasciando la CPU inattiva per quel po' di tempo. Per diminuire i "clock di inattività della CPU", la soluzione consiste nell'usare una memoria più veloce della RAM e far interagire questa con la CPU. MA questa memoria è più costosa e quindi più piccola della RAM: non si può solo sostituire la RAM con questa memoria più veloce...che si chiama CACHE. Come funziona? Parti contigue della RAM vengono trasferite nella cache: la CPU interagisce con quelle. Quando i dati che servono non si trovano in cache, altre parti di RAM vengono messe in cache, al posto di quelle inutili. Cosi' la CPU interagisce con una memoria ad alta velocità, invece che con la RAM.

Cenni sul linguaggio macchina e sull esecuzione di un programma scritto in linguaggio macchina (ciclo di esecuzione delle istruzioni macchina da parte della CPU: Fetch, Decode, Execute)

CPU... R 0 R 1 R 1 L istruzione in IR, corrispondente all indirizzo in PC, viene riconosciuta (decodificata) e il relative circuito viene attivato C I ALU CU IR PC C I RAM Dati Programma in linguaggio macchina

Istruzioni di trasferimento: registri RAM 00000000 0000 00000000000000000011 R 0 R 1 R 2 00000001 0010 00000000000000000110 0001 0010 0011 0100 0101 0110 Codice registro Indirizzo locazione in RAM 8 bit 4 bit 20 bit Load Codice 00000000: copia nel registro specificato il contenuto della locazione specificata Store Codice 00000001: copia nella locazione specificata il contenuto del registro

Istruzioni aritmetiche eseguono somma, differenza, moltiplicazione e divisione usando i registri come operandi C Op R i R j ADD 00000010 SUB 00000100 MULT 00000110 DIV 00001000 MOD 00001010 Codice Reg-i Reg-j - 8 bit 4 bit Non usati 4 bit

Istruzioni di I/O: unita I/O RAM 00010000 0000 00000000000000000011 OUTPUT unit: 0001 INPUT unit: 0000 0001 0010 0011 0100 00010001 0001 00000000000000000110 0101 0110 Codice Unita Indirizzo locazione in RAM 8 bit 4 bit 20 bit write Codice 00010001: trasferisce all unita di output specificata il dato presente nella locazione specificata read Codice 00010000: legge un dato dall unita di input specificata e lo copia nella locazione specificata

Istruzioni di confronto confrontano il contenuto di 2 registri R i ed R j : se R i < R j viene messo -1 nel registro RC se R i = R j 0 in RC se R i > R j 1 in RC R C i Cf R j 00100000 Reg-i Reg-j - RC 8 bit 4 bit Non usati 4 bit COMP 00100000

STOP termina il programma Codice: STOP 10000001 10000001 8 bit Non usati

esempio scriviamo un programma macchina che: trasferisce il contenuto di 2 parole di indirizzo 64 e 68 della RAM nei registri R 0 ed R 1 li somma trasferisce la somma nella parola di indirizzo 60 della RAM

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro R0 (ind. 0000); Si trasferisce il contenuto della locazione 1000100 nel registro R1 (ind. 0001); Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 E poi si termina

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 00000000 0001 0000000000000100100 00000010 0000 0001 00000001 0000 00000000000000111100 10000001 10000001000000000000000000000000

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 Load 64 in R0 00000000 0001 0000000000000100100 00000010 0000 0001 00000001 0000 00000000000000111100 10000001 10000001000000000000000000000000

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 00000000 0001 0000000000000100100 Load 4 in R0 Load 68 in R1 00000010 0000 0001 00000001 0000 00000000000000111100 10000001 10000001000000000000000000000000

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 00000000 0001 0000000000000100100 00000010 0000 0001 Load 64 in R0 Load 68 in R1 Somma R0+R1 in R0 68 in R1 00000001 0000 00000000000000111100 10000001 10000001000000000000000000000000

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 00000000 0001 0000000000000100100 00000010 0000 0001 00000001 0000 00000000000000111100 Load 64 in R0 Load 68 in R1 Somma R0+R1 in R0 68 in R1 Store R0 in ind.60 10000001 10000001000000000000000000000000

Algoritmo Si trasferisce il contenuto della locazione 1000000 nel registro 0000; Si trasferisce il contenuto della locazione 1000100 nel registro 0001; Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0) Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 00000000 0000 00000000000001000000 00000000 0001 0000000000000100100 00000010 0000 0001 00000001 0000 00000000000000111100 10000001 Load 64 in R0 Load 68 in R1 Somma R0+R1 in R0 68 in R1 Store R0 in ind.60 Stop

000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 000001000000000100 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 Programma in linguaggio macchina

000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 Il programma che inizia li viene eseguito ripetendo il ciclo seguente: FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

X 000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 prima 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

X Y 000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 seconda 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

X Y 000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 Terza. X+Y -> R0 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

X Y X+Y 000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 quarta 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

X Y 000000000000111100 000000000000111101 000000000000111110 000000000000111111 000000000001000000 000000000001000001 000000000001000010 000000000001000011 000000000001000100 000000000001000101 61 RUN 000001000000000111 PC 000001000000000100 Quinta (stop) 00000000000000000000000001000000 000001000000000111 00000000000100000000000000100100 000001000000001000 00000010000000010000000000000000 000001000000001001 00000001000000000000000000111100 000001000000001010 10000001000000000000000000000000 000001000000001011 000001000000001100 FETCH ISTR in PC IR DECODE Analisi IR code EXECUTE Circuito code attivato

Cosa succede? Ciclo di esecuzione delle istruzioni Tre FASI, ripetute fino a quando si arriva a STOP (cioe, in altre parole, ripeture fintantoche non si arriva a STOP) - FETCH il processore si procura l istruzione da eseguire (ne ha l indirizzo nel PC, chiede, e la mette nell IR - DECODE l istruzione viene decodificata, cioe si decide che istruzione e - EXECUTE l istruzione in IR viene eseguita, cioe si attiva il circuito corrispondente (e qui puo essere che alter component del calcolatore vengano coinvolte)

Si, vabbe, ma in dettaglio? Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale - avviene lo START dell'esecuzione, copiando l'indirizzo della prima istruzione nel registro PC (Program Counter). Poi vengono eseguite ripetutamente le tre fasi... FETCH - la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire; - il contenuto di PC viene copiato in MAR (Memory Address Register) - la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene l'istruzione da eseguire) - la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data Register) - la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire - PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire

Si, vabbe, ma in dettaglio? Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale - avviene lo START dell'esecuzione, copiando l'indirizzo della prima istruzione nel registro PC (Program Counter). Poi vengono eseguite ripetutamente le tre fasi... FETCH - la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire; - il contenuto di PC viene copiato in MAR (Memory Address Register) - la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene l'istruzione da eseguire) - la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data Register) - la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire - PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire DECODE - la CU analizza IR e capisce qual e' il codice dell'istruzione; di conseguenza sa anche quali operandi aspettarsi (numero di registro, indirizzo in RAM... nulla...) - la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati. - I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguita

Si, vabbe, ma in dettaglio? Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale - avviene lo START dell'esecuzione, copiando l'indirizzo della prima istruzione nel registro PC (Program Counter). Poi vengono eseguite ripetutamente le tre fasi... FETCH - la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire; - il contenuto di PC viene copiato in MAR (Memory Address Register) - la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene l'istruzione da eseguire) - la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data Register) - la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire - PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire DECODE - la CU analizza IR e capisce qual e' il codice dell'istruzione; di conseguenza sa anche quali operandi aspettarsi (numero di registro, indirizzo in RAM... nulla...) - la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati. - I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguita EXECUTE - la CU coordina l'esecuzione, coinvolgendo le parti necessarie (le periferiche di I/O per le operazioni di lettura/scrittura, la ALU per le operazioni di competenza, bus e memoria per gli accessi e memorizzazioni eventuali - l'esito dell'operazione viene registrato nella PSW (Program Status Word). I bit della PSW dicono, ad esempio, se l'ultima operazione aritmetica ha restituito 0, se c'e' stato un riporto, se c'e' stato un errore, se c'e' un'interrupt (sospensione del programma)...vengano coinvolte)

Si, vabbe, ma in dettaglio? Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale - avviene lo START dell'esecuzione, copiando l'indirizzo della prima istruzione nel registro PC (Program Counter). Poi vengono eseguite ripetutamente le tre fasi... FETCH - la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire; - il contenuto di PC viene copiato in MAR (Memory Address Register) - la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene l'istruzione da eseguire) - la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data Register) - la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire - PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire DECODE - la CU analizza IR e capisce qual e' il codice dell'istruzione; di conseguenza sa anche quali operandi aspettarsi (numero di registro, indirizzo in RAM... nulla...) - la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati. I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguita EXECUTE - la CU coordina l'esecuzione, coinvolgendo le parti necessarie (le periferiche di I/O per le operazioni di lettura/scrittura, la ALU per le operazioni di competenza, bus e memoria per gli accessi e memorizzazioni eventuali - l'esito dell'operazione viene registrato nella PSW (Program Status Word). I bit della PSW dicono, ad esempio, se l'ultima operazione aritmetica ha restituito 0, se c'e' stato un riporto, se c'e' stato un errore, se c'e' un'interrupt (sospensione del programma)...vengano coinvolte)