Architettura. degli. Elaboratori

Documenti analoghi
Architettura dei computer

Architettura hardware

Architettura dei computer

Architettura del calcolatore (Seconda parte)

Cenni sull architettura del calcolatore

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

Architettura del Calcolatore

Lezione 15. L elaboratore Elettronico

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

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

Fondamenti di Informatica A. A / 1 9

Struttura di un elaboratore

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Architettura hardware

Componenti principali

Calcolatore: sottosistemi

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

Architettura dell elaboratore

Architettura dell elaboratore

Il processore. Istituzionii di Informatica -- Rossano Gaeta

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

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

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

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti e connessioni. Capitolo 3

Il modello di Von Neumann

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

L architettura del calcolatore (Seconda parte)

Architettura di un calcolatore: primi cenni introduttivi

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

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

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

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

Abilità Informatiche e Telematiche

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

Abilità Informatiche e Telematiche

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

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

La memoria principale

Capitolo 5 Elementi architetturali di base

Elementi di informatica

LABORATORIO DI INFORMATICA

ARCHITETTURA DI UN ELABORATORE

ARCHITETTURA DI UN CALCOLATORE ELETTRONICO

Architettura dei Calcolatori Elettronici

Terza lezione 21 ottobre 2016

Architettura di un calcolatore: introduzione

Il processore - CPU (CENTRAL PROCESSING UNIT)

Sistemi di numerazione

Architettura del Calcolatore

La macchina di Von Neumann

Laboratorio di Informatica L-A 1

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

Architettura di una CPU

Architettura dei Calcolatori elettronici

Architettura di Von Neumann

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Architettura degli Elaboratori

architettura degli elaboratori Alberto Ferrari Alberto Ferrari Informatica e Laboratorio di Programmazione

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Architettura degli elaboratori CPU a ciclo singolo

Architettura di un Elaboratore

Componenti di un processore

Architettura e funzionamento del calcolatore

Il Processore. Informatica di Base -- R.Gaeta 27

Corso di Fondamenti di Informatica Elementi di Architettura

ARCHITETTURA DI UN ELABORATORE

Architettura del calcolatore. Prima parte

FONDAMENTI DI INFORMATICA Lezione n. 10

Richiami sull architettura del processore MIPS a 32 bit

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

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

FONDAMENTI DI INFORMATICA Lezione n. 10

Rappresentazione dell informazione

ESERCIZIO: PROGETTO DI UNA CPU A PIU REGISTRI

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

L architettura di riferimento

Organizzata secondo il modello della macchina di von Neumann definita nei tardi anni 40 all Institute for Advanced Study di Princeton.

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Struttura dell elaboratore elettronico

ARCHITETTURA DI UN ELABORATORE

Corso di Calcolatori Elettronici I

Sistemi di Elaborazione delle Informazioni

Fondamenti di Informatica B

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

Architettura dell elaboratore

Architettura di von Neumann

Architettura degli Elaboratori

ALU e Control Unit. ALU e Control Unit

Architettura dei calcolatori

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Transcript:

Architettura degli Elaboratori A cura del prof. Cristoforo Modugno

GENERALITÀ Un sistema per l elaborazione automatica dell informazione (elaboratore o computer) possiede due livelli fondamentali di descrizione: l hardware e il software. Il primo si riferisce alle apparecchiature fisiche che costituiscono il computer, il secondo alle attività di programmazione che consentono una utilizzazione efficiente delle risorse hardware disponibili. Il software è classificato in: 1. software applicativo: è costituito dai programmi degli utenti per le risoluzioni di particolari problemi; 2. software di base: è costituito dai programmi di gestione dell elaboratore (sistemi operativi). Elaborare informazioni in modo automatico significa trasformare delle informazioni-dati in informazioni-risultati, fornendo al sistema regole di trasformazione ben precise. Il sistema rende, quindi, semplicemente realizzabile la trasformazione non prendendo alcuna iniziativa che non gli sia stata precedentemente specificata. Per realizzare in modo automatico la trasformazione occorre che il sistema possa soddisfare le seguenti funzioni: 1. immissione (input): i dati e le regole di trasformazione provenienti dall esterno devono essere immessi nel sistema; 2. memorizzazione (store): i dati, le regole di trasformazione, i risultati intermedi e finali devono essere memorizzati in un opportuno dispositivo che li renda disponibili in ogni istante; 3. elaborazione (processing): i dati devono essere trasformati agendo su di essi con operazioni ad esempio di tipo aritmetico logico; 4. emissione (output): i dati risultati ed ogni altra informazione utile devono essere inviati all esterno del sistema; 5. controllo (control): occorre controllare che le altre funzioni vengano Architettura degli elaboratori - Cristoforo Modugno - Pag. 2

attuate in modo corretto e nella giusta sequenza. Un elaboratore non è quindi un semplice organo di calcolo, ma uno strumento più complesso che elabora, nel senso specificato, informazioni di varia natura. In questa dispensa il termine informazione viene utilizzato nella sua accezione più ampia e cioè come ogni elemento che concorre alla risoluzione di un determinato problema quali le istruzioni (parti fondamentali del programma che specifica le regole di trasformazione) e i dati veri e propri. COMPONENTI FONDAMENTALI DI UN ELABORATORE Il termine hardware è usato per riferirsi alla circuiteria elementare che costituisce un computer e che viene interconnessa per realizzare una circuiteria più complessa. Il funzionamento di un computer è forzato da un clock di macchina che è un dispositivo che produce impulsi a intervalli regolari distribuiti in modo da abilitare il funzionamento delle apparecchiature con tecnica asincrona. Sebbene tutti i moderni elaboratori siano sincroni, alcune parti possono funzionare in modo asincrono (cioè non pilotate da un clock). Le componenti fondamentali di ogni elaboratore sono: 1. l unità di controllo (CU, Control Unit); 2. l unità di elaborazione (ALU, Arithmetic Logic Unit); 3. la memoria centrale (CM, Central memory); 4. le unità di ingresso-uscita (I/O Unit, Input-Output Unit dette anche periferiche). Tradizionalmente il termine unità centrale di elaborazione (CPU, Central Processing Unit o processor) è usato per riferirsi all unità di controllo e all ALU al fine di distinguere le parti di logica combinatoria del computer dalla memoria centrale e da altri dispositivi di memoria. Nella figura il simbolo indica il flusso dell informazione (dati + istruzioni), mentre le linee tratteggiate indicano l azione di controllo cioè i segnali di controllo emessi dalla CPU per far operare in modo appropriato il computer. Architettura degli elaboratori - Cristoforo Modugno - Pag. 3

Dati + programma Unità di input CM memoria centrale Unità di output Risultati ALU CU unità di controllo CPU STRUTTURA A BUS Se teniamo conto che le informazioni (dati + istruzioni) all interno di un elaboratore sono rappresentati in forma digitale e, dunque, mediante bit, e che i bit viaggiano attraverso fili elettrici capiamo che, per permetterne il trasferimento tra le varie unità dell elaboratore, sarebbe necessario che ciascuna di queste sia interconnessa, in termini di linee fisiche, con tutte le altre, generando un groviglio caotico di un numero elevatissimo di fili. Una organizzazione più razionale di un elaboratore fa uso, invece, di particolari percorsi di informazione detti BUS che costituiscono l organo di comunicazione fra le diverse unità del computer. Un BUS è un gruppo di fili su ciascuno dei quali viene trasferito un bit di informazione; dal BUS più unità funzionali possono prelevare contemporaneamente informazioni, ma una sola può immetterla in un determinato istante. I trasferimenti da e verso il BUS sono comandati dall unità di controllo che abilita o inibisce le porte di accesso da una unità al BUS e viceversa. La struttura a BUS è quella più diffusa per i mini computer (computer di medie dimensioni) ed è universalmente utilizzata per i micro computer (computer di dimensioni minime). Architettura degli elaboratori - Cristoforo Modugno - Pag. 4

Ogni unità è contraddistinta da un proprio indirizzo attraverso il quale viene identificata dal resto del sistema. Per semplificare, si può pensare che vi sia un BUS per il trasferimento informazioni (dati + istruzioni), uno per gli indirizzi ed uno per i segnali di controllo. In tal modo si ottiene lo schema generale indicato nella figura. BUS informazioni BUS segnali di controllo BUS indirizzi Unità di Input- Output CM Central Memory ALU Unità Logico- Aritmetica CU Control Unit CPU Attraverso il BUS degli indirizzi viene attuato il dialogo tra le varie unità; in alcuni casi il BUS delle informazioni e il BUS degli indirizzi possono coincidere fisicamente per cui si ha un unico BUS usato per trasferire informazioni o indirizzi in tempi diversi: in tal caso si parla di UNIBUS. Il BUS dei segnali di controllo è bidirezionale per tutte le unità. LE MEMORIE Una memoria è un dispositivo mediante il quale è possibile: - scrivere (store): cioè immagazzinare delle informazioni provenienti da altre parti dell eleboratore; la scrittura è distruttiva, cioè se si scrive un informazione si distrugge quella precedentemente contenuta; - conservare (keep): cioè rendere sempre disponibile l informazione memorizzata; - leggere (research): cioè richiamare l informazione e renderla disponibile Architettura degli elaboratori - Cristoforo Modugno - Pag. 5

all esterno della memoria stessa; la lettura non è distruttiva, cioè se si legge un informazione non se ne altera il contenuto. Il meccanismo di memorizzazione consiste nel far assumere ad ogni componente del supporto fisico della memoria un dato stato fisico; la configurazione degli stati è messa in corrispondenza biunivoca con l informazione mediante un codice opportuno. Un sistema di elaborazione fa uso di diversi tipi di memorie la cui classificazione può avvenire secondo criteri diversi fra i quali due sono più comunemente usati: uno basato sul tempo di accesso e l altro basato sulla funzione svolta. Sulla base del tempo di accesso, indicando con t ij il tempo necessario per accedere all informazione J avendo già letto l informazione i come ultima informazione, possiamo distinguere fra: - memorie ad accesso casuale (RAM, Random Access Memory) per le quali t ij è costante cioè tutte le informazioni sono accessibili nello stesso intervallo di tempo; - memorie ad accesso semi-casuali (SRAM, Semi Random Access Memory) per le quali t ij subisce delle piccole variazioni a seconda dell area in cui è memorizzata l informazione desiderata; - memorie ad accesso sequenziale (SM, Sequential Memory) per le quali t ij subisce grandi variazioni in quanto le informazioni possono essere ritrovate solo percorrendo sequenzialmente le informazioni precedentemente memorizzate. Considerando, invece, la funzione svolta le memorie si possono classificare in: - registri: hanno la funzione di memorizzare informazioni utili all elaborazione che può avvenire sfruttando il registro stesso; sono realizzate mediante circuiti Flip-Flop ed hanno un t ij dell ordine dei nanosecondi (miliardesimi di secondo); - memoria centrale (CM, Central Memory): ha la funzione di memorizzare il programma (le istruzioni) e i dati; ha accesso casuale con t ij dell ordine dei Architettura degli elaboratori - Cristoforo Modugno - Pag. 6

microsecondi (milionesimi di secondo); - memorie di massa: sono memorie ad accesso sequenziale (nastri) e ad accesso semi-casuale (dischi) che esplicano la funzione di memorizzare grosse quantità di dati necessari all elaborazione; i tempi di accesso variano dai millisecondi (millesimi di secondo) per le SRAM ai minuti per le SM. Nel caso delle memorie sequenziali più che di tempo di accesso è opportuno parlare di velocità di lettura-scrittura cioè numero di caratteri letti (o scritti) nell unità di tempo, in quanto l accesso all informazione è vincolato all ordine sequenziale imposto dal supporto. Oltre alle memorie su indicate ne esistono altre particolari fra le quali è importante ricordare le memorie a sola lettura (ROM, Read Only Memory) nelle quali l informazione è fissa e può essere solo letta e non modificata, le PROM (Programmable ROM) che sono programmabili al momento dell impiego e le EPROM (Erasable PROM) che sono cancellabili e riprogrammabili. LA MEMORIA CENTRALE Possiamo considerare la memoria centrale di un elaboratore come costituita da un certo numero di locazioni o celle di memoria a ciascuna delle quali è associato un indirizzo che la identifica univocamente. Il numero di tali locazioni definisce la capacità della memoria. Il numero n di bit che costituisce la cella definisce il tipo di organizzazione della memoria centrale; a seconda dell elaboratore, la memoria centrale può essere organizzata: - a byte: ciascuna locazione può contenere un carattere opportunamente codificato; - a parola: ciascuna locazione è costituita da due byte (halfword), da quatto byte (word) oppure da otto byte (double word). L organizzazione di molti elaboratori è di tipo misto e consente l accesso a campi costituiti da uno o più byte; la posizione in memoria dei campi è comunque sempre definita dall indirizzo (posizione) del suo primo byte a Architettura degli elaboratori - Cristoforo Modugno - Pag. 7

sinistra. Per individuare un campo è quindi sufficiente fornire l indirizzo del byte di sinistra e il numero di byte che lo compongono. La capacità della CM è generalmente espressa in Kilo-Byte dove K(ilo) indica 2 10 = 1.024; ad esempio una memoria di 256 Kbyte significa che è costituita da un numero di byte dato da 256 x 1.024 = 262.144. Le nuove memorie, molto più capienti rispetto a quelle di pochi anni fa, hanno capacità dell ordine di decine o centinaia di Mega-Byte dove M(ega) indica 2 10 Kbyte (ovvero 1.024 x 1.024 = 1.048.576). La capacità della memoria centrale costituisce un indicatore della potenzialità di un elaboratore poiché pone un vincolo alla dimensione e al numero dei programmi che possono essere eseguiti. Fra la memoria centrale e il Dati e Istruzioni M B R Memoria effettiva processore esistono due tipi di interazione: - memorizzazione (store) di Controllo e temporizzazione dati (iniziali, intermedi e finali) e istruzioni nelle celle della CM; - prelievo (fetch) dei dati e delle indirizzi MAR istruzioni da una specificata cella di memoria. Nella figura è rappresentato lo schema di principio della memoria centrale, nel quale sono riportati: - il registro degli indirizzi di memoria (MAR, Memory Address Register) che contiene l indirizzo della locazione della CM interessata all operazione di lettura o scrittura dell informazione; - il registro di tramite della memoria (MBR, Memory Buffer register) in cui viene depositata l informazione per eseguire la fase di store o di fetch; - la linea di segnali di controllo e temporizzazione percorsa dal segnale di scrittura in memoria (store), lettura (fetch) e dai segnali di temporizzazione. Architettura degli elaboratori - Cristoforo Modugno - Pag. 8

Le fasi secondo le quali si svolgono le operazioni di lettura e scrittura sono dette cicli di memoria e sono: - lettura: nel MAR viene posto l indirizzo della locazione da leggere, viene inviato dalla CPU il segnale di fetch e copiato nel MBR il contenuto della cella selezionata; - scrittura: l informazione da memorizzare viene posta nel MBR e l indirizzo nel MAR; il segnale di controllo store attiva la scrittura dell informazione nella cella di memoria il cui indirizzo è specificato nel MAR, cancellando così l eventuale contenuto precedente. L UNITÀ DI CONTROLLO L unità di controllo è la più laboriosa da descrivere in quanto la sua costituzione dipende in gran parte dal tipo di elaboratore e dall insieme (set) di istruzioni che esso è in grado di eseguire; tale insieme definisce il linguaggio macchina nel quale devono essere scritti o tradotti tutti i programmi che si vogliono eseguire. clock CM ALU I/O CU Control Unit CM ALU I/O Schematicamente l unità di controllo può essere rappresentata come una rete sequenziale i cui ingressi provengono dal clock di macchina, dalla memoria centrale (dalla quale viene prelevata l istruzione), dall ALU e dai dispositivi di I/O; le uscite della rete sono costituite, invece, dai segnali di controllo alle unità interessate all elaborazione dell istruzione (ALU, CM, unità di I/O) e ai percorsi di informazione. L unità di controllo esegue due fasi principali: - lettura dell istruzione dalla memoria centrale (fetch); - esecuzione dell istruzione (execute). Architettura degli elaboratori - Cristoforo Modugno - Pag. 9

I passi del procedimento per l attuazione delle due fasi sono schematizzati nella figura seguente dove è evidenziata l unità interessata ad una data azione: CM { Fetch della istruzione Fetch degli operandi Store del risultato CPU{ Calcolo indirizzo istruzione decodifica del codice operativo Calcolo indirizzo operandi Esecuzione operazione specificata Calcolo indirizzo risultato start L unità di controllo deve provvedere a: 1. calcolare l indirizzo di memoria in cui si trova l istruzione da prelevare; 2. comandare la lettura e il trasferimento dell istruzione nel processor; 3. decodificare l istruzione, cioè interpretare la particolare operazione da eseguire; 4. calcolare l indirizzo di memoria degli operandi; 5. comandare il prelievo degli operandi dalla CM e la loro eventuale memorizzazione temporanea in appositi registri del processor; 6. comandare l applicazione dell operazione richiesta agli operandi e l eventuale memorizzazione del risultato nel processor; 7. calcolare l indirizzo di memoria in cui collocare il risultato; 8. comandare il trasferimento del risultato nella memoria centrale. Il ritorno al passo 1. dà inizio ad un nuovo ciclo delle fasi principali; l arresto dell elaborazione avverrà con il riconoscimento di una istruzione di stop. Osserviamo che le funzioni dell unità di controllo si possono sostanzialmente raggruppare nelle seguenti categorie: a. emissione dei segnali di comando da inviare a tutte le unità Architettura degli elaboratori - Cristoforo Modugno - Pag. 10

dell elaboratore; b. calcolo degli indirizzi fisici (o assoluti) delle informazioni da reperire o da depositare nella CM. Per poter espletare le fasi e le funzioni descritte, l unità di controllo deve disporre delle seguenti parti: - registro istruzione (IR, Instruction Register): contiene l istruzione che deve essere eseguita; l istruzione permane nell IR fino al completamento della sua esecuzione; - registro contatore istruzioni (PC, Program Counter): contiene l indirizzo dell istruzione successiva a quella in corso di esecuzione; l unità di controllo deve infatti garantire la successione delle istruzioni del programma e, pertanto, occorre che sappia continuamente a quale punto del programma si è giunti; - decodificatore (decoder): è un dispositivo a logica combinatoria che permette di tradurre (interpretare) il codice operativo (op, operation code) dell istruzione; - sequenziatore (sequencer): ha il compito di emettere e inviare segnali di controllo alle varie componenti dell elaboratore lungo il percorso del controllo, garantendo l abilitazione delle porte per il trasferimento dell informazione sui percorsi dell informazione e il corretto funzionamento degli organi preposti al calcolo. Possiamo considerare il decodificatore e il sequenziatore come la componente della CU che ha la funzione di emettere i segnali di comando per la successione delle operazioni elementari in cui è scomposta l esecuzione di una istruzione. Facendo riferimento al caso di un unico BUS per indirizzi (address) e dati e tralasciando il BUS dei segnali di controllo, si può schematizzare la situazione come in figura. Osserviamo che l UNIBUS risulta suddiviso nel tempo tra le varie unità (shared) e quindi occorre stabilire una priorità di impiego. Architettura degli elaboratori - Cristoforo Modugno - Pag. 11

UNIBUS (a + i) a + i Unità di Input- Output i M B R M A R a ALU AC Unità Operativa a + i Memoria fisica PC IR CM decoder a = address i = informazioni = collegamenti diretti CPU CU sequenziatore Per chiarire il significato dello schema è utile far riferimento alle istruzioni dell elaboratore; una istruzione è costituita da una particolare configurazione binaria in grado di definire il tipo di operazione da eseguire (op, codice operativo) e da informazioni che permettono di calcolare l indirizzo degli operandi sui quali opera l istruzione. Ogni elaboratore è caratterizzato dal proprio set di istruzioni e dalle proprie modalità per calcolare gli indirizzi degli operandi (modalità di indirizzamento) cioè ogni computer è dotato di un proprio liguaggio macchina. L insieme delle istruzioni che costituiscono un programma si suppone allocato nella memoria centrale all atto dell esecuzione e costituisce il programma memorizzato (stored program). Se l istruzione oltre al campo del codice operativo presenta un campo indirizzo dell operando, l elaboratore è detto ad indirizzo singolo (è il caso dei personal computer). Per eseguire un operazione è, pertanto, necessario introdurre nella ALU un registro nel quale memorizzare un operando implicito; tale registro è detto accumulatore AC ed ha una lunghezza pari ad una parola di memoria. Il secondo operando si troverà nel registro MBR e il risultato dell operazione sarà lasciato nell accumulatore; l operazione sarà eseguita da una particolare unità Architettura degli elaboratori - Cristoforo Modugno - Pag. 12

operativa. Un tipico formato dell istruzione di un elaboratore ad indirizzo singolo è quello rappresentato in figura: n bytes OP address IR a r bit p bit Nel campo address IR a dell istruzione può comparire o l indirizzo di un operando oppure l indirizzo dell istruzione successiva da eseguire, nel caso in cui si sta eseguendo una istruzione di salto, o anche il nome di un registro sul quale effettuare particolari operazioni. Il caso più frequente è, tuttavia, quello in cui nel campo address compare un indirizzo di memoria. I passi elementari della fase di fetch dell istruzione sono i seguenti: - MAR PC: l indirizzo dell istruzione da prelevare dalla CM viene trasferito nel registro MAR; - MBR M[MAR]: il contenuto delle celle di memoria il cui indirizzo è specificato nel MAR viene prelevato e posto nel registro MBR ( con il simbolismo M[MAR] si intende il contenuto della locazione di memoria di indirizzo specificato nel MAR); - IR MBR: l istruzione letta viene trasferita nel registro dell istruzione (IR); - PC PC + n: occorre aggiornare il contenuto del Program Counter in modo da corrispondere all indirizzo dell istruzione successiva a quella che si sta eseguendo; con n viene indicata la lunghezza dell istruzione in fase di esecuzione. In conclusione la fase di fetch si sviluppa attraverso diversi cicli (corrispondenti ad intervalli elementari di clock) durante i quali il sequenziatore emette tutti i segnali di comando necessari per eseguire delle operazioni elementari. Ultimata la fase di fetch, la decodifica dell istruzione fa sì che inizi la fase di esecuzione; per l esecuzione dell istruzione il sequenziatore impartisce, in un Architettura degli elaboratori - Cristoforo Modugno - Pag. 13

certo numero di cicli, segnali di comando necessari all esecuzione dell istruzione mentre le informazioni relative all indirizzo sono elaborate al fine di ottenere l indirizzo fisico di memoria. Consideriamo, a titolo esemplificativo e con una certa libertà di linguaggio, la sequenza di comandi di controllo per l esecuzione di una istruzione di addizione del tipo ADD 300 che significa: somma al contenuto dell accumulatore il contenuto della cella di memoria di indirizzo simbolico 300 e lascia il risultato nell accumulatore, cioè in simboli: AC C[AC] + M[300] dove C[AC] indica il contenuto del registro accumulatore. Il decoder riconosce l istruzione ADD e informa il sequenziatore che può emettere il primo comando necessario all esecuzione dell istruzione ADD che deve essere quello di reperire l addendo dell addizione (l augendo si trova già nel registro accumulatore dell ALU) ad un indirizzo fisico calcolato in base a quello simbolico 300. A questo punto viene inviato alla CM il comando di lettura, a seguito del quale il dato si trova disponibile nel registro MBR; viene, poi, comandata l esecuzione dell addizione del contenuto del MBR con il contenuto dell accumulatore, lasciando il risultato nell accumulatore. I passi elementari per eseguire una istruzione di somma sono i seguenti: - MAR IR a - MBR M[MAR] - AC C[AC] + C[MBR] È opportuno evidenziare che, in generale, la CPU per svolgere la propria attività farà uso non solo del registro accumulatore ma, anche, di un gruppo di registri generali (general purpose register) usati principalmente nelle operazioni aritmetiche o logiche; il numero e il tipo di registri generali varia naturalmente a seconda del tipo di computer. Oltre ai registri IR e PC, detti registri interi, la CPU dispone anche di un altro registro detto registro di stato (PSW, processor status word) che sintetizza ad ogni istante lo stato della CPU. Architettura degli elaboratori - Cristoforo Modugno - Pag. 14

Per eseguire una istruzione la CPU impiega un certo tempo, detto ciclo di macchina; tale tempo è molto inferiore al ciclo di memoria, per cui per sveltire l esecuzione di un programma è utile ridurre al minimo il numero di accessi alla CM oppure fare uso il più possibile di registri che risultano molto più veloci della CM. TECNICHE DI INDIRIZZAMENTO Una delle funzioni più importanti svolte dalla unità di controllo consiste nel reperimento delle informazioni memorizzate nei vari organi dell elaboratore. Le informazioni possono essere: - Istruzioni nella fase di fetch della successiva istruzione che occorre eseguire; - Dati (operandi o risultati) nella fase di esecuzione della istruzione stessa. Le informazioni possono essere registrate nella memoria centrale oppure in registri operativi il cui numero e tipo dipende dall elaboratore. Se l informazione è memorizzata nei registri il reperimento può avvenire: - in forma implicita: il codice operativo definisce in modo implicito quali sono i registri interessati al prelevamento o immagazzinamento dell informazione; ad esempio l istruzione ADD A carica nel registro accumulatore il risultato dell addizione del contenuto dell accumulatore stesso e del registro MBR nel quale è stato posto il contenuto di memoria M[A]; - in forma implicita: viene indicato esplicitamente nel formato dell istruzione il registro che deve essere utilizzato; supponendo che un operando si trovi nell accumulatore e l altro in un registro di lavoro λ, l istruzione ADR λ effettuerà l operazione: AC C[AC] + C[λ]. Viceversa, per quanto riguarda l accesso ad informazioni memorizzate nella memoria centrale le tecniche possono essere diverse a seconda della struttura del sistema di elaborazione; di seguito vengono riportate quelle più comunemente utilizzate. Architettura degli elaboratori - Cristoforo Modugno - Pag. 15

Indirizzamento immediato Con l indirizzamento immediato, la parte address (IR a ) del registro istruzione contiene già il valore dell operando, per cui per eseguire l istruzione non è necessario accedere alla CM in quanto il dato è direttamente disponibile e utilizzabile. Indirizzamento diretto (o assoluto) In questo caso, l indirizzo fisico effettivo (assoluto) dell operando è fornito esplicitamente nell istruzione; se IR a è la parte address del registro istruzione, si accederà all informazione in base al valore binario contenuto in IR a. 2 bytes OP address IR a 4 bit 12 bit La dimensione massima della memoria su cui si può agire è data da 2 IRa ; poiché la cella unitaria di memoria (word) degli elaboratori è relativamente breve (generalmente 16 bit = 2 byte), pur riservando ad es. 12 bit per l indirizzo (riducendo il set di istruzioni al numero minimo 2 4 = 16) potremmo indirizzare una memoria di 2 12 = 4096 celle che risulta troppo piccola per la maggior parte delle applicazioni. Si presenta, dunque, la necessità di introdurre nuovi meccanismi che permettano di agire su una zona di memoria più ampia e facilitino anche il reperimento delle informazioni nel caso in cui queste ad es, siano usate in un ciclo. Indirizzamento indiretto Si ha un indirizzamento indiretto quando l indirizzo riportato nella parte Architettura degli elaboratori - Cristoforo Modugno - Pag. 16

address dell istruzione IR a fa riferimento ad una locazione di transito nella quale è pre-memorizzato l indirizzo effettivo dell informazione cui si vuole accedere. Il fatto che l indirizzamento sia diretto o indiretto viene generalmente indicato dal valore di un apposito bit incluso nell istruzione; il formato dell istruzione sarà, allora, come indicato in figura: n bytes OP I address IR a r bit q bit bit di indirizzamento I= 0 diretto 1 indiretto Indirizzamento con registro base La tecnica di indirizzamento mediante registro base risolve il problema di indirizzare locazioni di memoria consecutive registrate in una qualsiasi porzione di memoria, senza per questo richiedere un numero elevato di bit per il campo address dell istruzione. Il registro base è un registro general pupose che contiene l indirizzo di inizio del programma in esecuzione in un determinato istante; esso può indirizzare tutta la memoria dell elaboratore. Con questa tecnica l indirizzo assoluto dell operando viene ottenuto addizionando il contenuto del registro base con lo scostamento (displacement), contenuto nel campo IR a dell istruzione, che esprime la distanza tra una posizione di memoria e quella assunta come iniziale. n bytes OP I B address IR a r bit q bit bit registro base Architettura degli elaboratori - Cristoforo Modugno - Pag. 17

La figura sequente schematizza l operazione di calcolo dell indirizzo assoluto con la tecnica del registro base: OP I B address A (displacement) Indirizzo iniziale programma IR Instruction Register Registro Base Central Memory + indirizzo assoluto TIPI DI PROCESSOR Di seguito vengono descritti alcuni tipi di processo che presentano varianti significative nel funzionamento. Processor ad indirizzo singolo È il tipo di processor al quale si è fatto riferimento nella trattazione precedente: esso è organizzato con il registro PC (Program Counter), il registro IR (Instruction Register), eventuali registri generali e un registro AC (Accumulatore) nella ALU che contiene, in modo implicito, un operando o il risultato di una operazione riducendo, in tal modo, ad uno il numero di indirizzi richiesti per ciascuna istruzione; questo processor è detto single address processor. Per questo tipo di processor un ristretto set di istruzioni potrebbe essere, a titolo esemplificativo: Architettura degli elaboratori - Cristoforo Modugno - Pag. 18

codice operativo indirizzo significato Descrizione LOAD A AC M[A] Caricamento nell accumulatore STORE A M[A] C[AC] Memorizzazione del contenuto di AC JUMP A PC A Salto incondizionato ADD A AC C[AC] + M[A] Operazione di somma SUB A AC C[AC] - M[A] Operazione di sottrazione MUL A AC C[AC] * M[A] Operazione di moltiplicazione DIV A AC C[AC] / M[A] Operazione di divisione L istruzione JUMP interrompe l esecuzione sequenziale del programma ponendo nel Program Counter l indirizzo A, per cui l istruzione successiva sarà reperita a tale indirizzo. Come esempio di utilizzo di un processor ad indirizzo singolo, scriviamo un programma per calcolare l espressione: r = (x + y) / z. Indicando con A l indirizzo della locazione di memoria in cui è caricata la prima istruzione del programma, la situazione sarà quella indicata di seguito: memoria centrale A LOAD A + 5 A + 1 ADD A + 6 A + 2 DIV A + 7 A + 3 STORE A + 8 A + 4 JUMP A + 9 A + 5 Valore di x A + 6 Valore di y A + 7 Valore di z A + 8 Valore di r A + 9 programma dati Osserviamo che la funzione dell istruzione JUMP e quella di saltare i dati, poiché l esecuzione dei dati da parte del processor condurrebbe ad errore. La situazione di avere il programma e i dati già caricati in memoria in modo lineare e nello stesso modo corrisponde al modello di Von Neumann che Architettura degli elaboratori - Cristoforo Modugno - Pag. 19

permette una semplica trattazione delle tecniche di programmazione; in realtà esistono tecniche (cfr: le procedure pure) che permettono di registrare le istruzioni e i dati in zone diverse della memoria centrale. Processor a tre indirizzi Le operazioni aritmetiche e logiche prevedono generalmente due operandi ed un risultato. In un processor a tre indirizzi, allora, l istruzione sarà del tipo seguente: codice operativo indirizzo primo operando indirizzo secondo operando indirizzo risultato OP X Y Z n bit a 1 bit a 2 bit a 3 bit Il formato dell istruzione prevede, dunque: - 2 n possibili operazioni codificate con gli n bit del codice operativo (op); - 2 a 1-2 a 2-2 a 3 indirizzi diversi di locazioni di memoria centrale per il primo operando; indirizzi diversi di locazioni di memoria centrale per il secondo operando; indirizzi diversi di locazioni di memoria centrale per il risultato. Un set esemplificativo di istruzioni per un processor a tre indirizzi può essere: istruzione significato ADD (X,Y) Z M[X] + M[Y] M[Z] SUB (X,Y) Z M[X] - M[Y] M[Z] MUL (X,Y) Z M[X] * M[Y] M[Z] DIV (X,Y) Z M[X] / M[Y] M[Z] JUMP Z Z PC L istruzione JUMP, che interrompe l esecuzione sequenziale del programma ponendo nel Program Counter l indirizzo Z, richiede solo un campo indirizzamento, per cui il suo formato sarà il seguente: codice operativo campo non usato campo non usato indirizzo che viene posto nel PC JUMP - - Z n bit a 1 bit a 2 bit a 3 bit Il programma per calcolare l espressione: r = (x + y) / z sarà, in questo caso, il seguente: Architettura degli elaboratori - Cristoforo Modugno - Pag. 20

memoria centrale A ADD A + 3 A + 4 A + 6 A + 1 DIV A + 6 A + 5 A + 6 A + 2 JUMP - - A + 7 A + 3 valore di x A + 4 valore di y A + 5 valore di z A + 6 valore di r A + 7 programma dati Osserviamo che con il processor ad indirizzo singolo si ottengono istruzioni molto più corte di quelle relative al processor a tre indirizzi, ma il programma è più lungo per la presenza delle istruzioni di gestione dell accumulatore e i programmi sono più complessi per poter minimizzare le operazioni di LOAD e STORE; viceversa nel processor a tre indirizzi il numero di bit per l indirizzamento è molto più grande rispetto al processor ad un indirizzo, per cui in definitiva i programmi per un processor a singolo indirizzo normalmente occupano meno memoria di quelli a tre indirizzi. Processor a stack (zero indirizzi) Un processor a stack possiede un particolare accumulatore, lo stack, costituito da una sequenza di registri: lo stack viene gestito con il principio della pila (L.I.F.O. last in first out) per cui l inserimento di un dato o il prelevamento di un dato avviene sempre dalla sommità della pila; l ultima posizione occupata dello stack è puntata da un registro puntatore T il cui contenuto viene variato automaticamente a seguito di ogni operazione; poiché non c è bisogno di alcun indirizzo, dal momento che ogni operazione agisce sugli elementi dello stack, il processor è detto a zero indirizzi. Le istruzioni per inserire e prelevare elementi dallo stack sono chiamate Architettura degli elaboratori - Cristoforo Modugno - Pag. 21

rispettivamente PUSH e POP. L istruzione di ADD, ad esempio, estrae gli ultimi due elementi caricati nello stack e memorizza il risultato nello stack nella prima posizione disponibile. stack stack T y x + x + y T prima dopo esecuzione della istruzione ADD Un possibile set di istruzioni potrebbe essere il seguente, il cui significato è facilmente interpretabile: istruzione significato ADD S[T-1] + S[T] S[T-1] ; T-1 T SUB S[T-1] - S[T] S[T-1] ; T-1 T MUL S[T-1] * S[T] S[T-1] ; T-1 T DIV S[T-1] / S[T] S[T-1] ; T-1 T PUSH A T+1 T; M[A] S[T] POP A S[T] M[A] ; T-1 T JUMP Z vai a Z In questo caso, il programma per il calcolo dell espressione: r = (x + y) / z, produrrà in memoria la situazione schematizzata di seguito: memoria centrale A PUSH A + 7 A + 1 PUSH A + 8 A + 2 ADD - A + 3 PUSH A + 9 A + 4 DIV - Architettura degli elaboratori - Cristoforo Modugno - Pag. 22

A + 5 POP A + 10 A + 6 JUMP A + 11 A + 7 A + 8 A + 9 A + 10 A + 11 Valore di x Valore di y Valore di z Valore di r L UNITÀ ARITMETICO-LOGICA La funzione specifica svolta dalla ALU è quella dell esecuzione di operazioni aritmetiche, di confronto e di trasformazione di informazioni. Le principali parti componenti di una ALU sono: - uno o più registri R i che costituiscono la memoria locale e sono utilizzati per contenere temporaneamente uno o più dati; l accesso a questi registri è regolato dalla unità di controllo attraverso un selettore di ingresso; - una unità operativa (rete combinatoria) che riceve solitamente due operandi e produce un risultato; - un selettore di input e uno di output: il selettore di input, pilotato dalla CU, seleziona il registro nel quale immagazzinare il dato, quello di output, sempre controllato dalla CU, seleziona i registri i cui dati costituiscono l input della unità operativa. R 1 U N I B U S Selettore di input R 2 Memoria locale Selettore di output Unità operativa R n Architettura degli elaboratori - Cristoforo Modugno - Pag. 23

La figura precedente riporta lo schema di principio di una Unità Aritmetico- Logica. Quando il BUS fornisce dati, cioè si comporta da linea di input, il selettore di output inibisce ogni output di dati e, analogamente, il selettore di ingresso potrà inibire ogni memorizzazione quando il BUS si comporta come linea di uscita. L ALU può avere configurazioni e capacità molto diverse nel senso che può compiere operazioni di natura e complessità svariate. Partendo da un set elementare di operazioni aritmetiche e logiche è sempre possibile realizzare operazioni più complesse mediante opportuni programmi; è evidente, però, che l esecuzione di un programma comporta un tempo di calcolo decisamente più lungo di quello relativo all esecuzione diretta da parte della ALU stessa. Considerando il caso di elaboratori molto semplici, il set di istruzioni comprende generalmente: - l addizione algebrica di due numeri binari; - almeno una operazione di logica booleana fra i bit di uquale posizione di due numeri binari; - le operazioni di caricamento dell accumulatore (load) e memorizzazione del risultato (store). Architettura degli elaboratori - Cristoforo Modugno - Pag. 24