18 Aug 2019 - 07:22--=[Computer]=----=[Computer]=----=[Musica]=----=[Musica]=----=[Geometra]=----=[Geometra]=----=[Download]=----=[Download]=----=[Link]=----=[Link]=----=[Articoli]=----=[Articoli]=--
Indice Computer Computer/ Hardware/ Struttura/


Prima di iniziare questa lettura si consiglia di consultare questa pagina del sito:
» Organizzazione software del processore

Logica a tre stati

I blocchi funzionali presenti in un calcolatore si costituiscono a partire da circuiti integrati effettivi, che comunicano con l'esterno mediante un certo numero di piedini (pin). Ogni piedino supporta un bit, e quindi può avere due livelli di tensione, associati rispettivamente allo zero logico (valore tipico di 0 volt) e all'uno logico (valore timpico 5 volt). In alcuni casi, su un piedino di uscita può essere presente un terzo stato, caratterizzato da alta impedenza e denominato Z. Come è illustrato in fugura (sotto), i tre possibili stati vengono ottenuti, a partire dai valori di una variabile binaria, utilizzando una porta (porta-3state), costituita da un amplificatore (AM) e da un interruttore, pilotata da un segnale di comando /OE (output enable, per il '/' sarà spiegato in seguito). L'interruttore può essere aperto o chiuso: se è aperto (/OE=1) l'uscita vale Z, mentre se è chiuso (/OE=0) l'uscita coincide con l'ingresso.

Porta 3-state

Notare che l'amplificazione AM non consente alla porta di far passare in uscita, con interruttore chiuso, un eventuale stato Z presente in ingresso.
Un circuito integrato esegue algoritmi anche complessi: per esaminare il suo funzionamento interno, occorrono conoscenze approfondite di reti logiche. Nel seguito, ci limiteremo a descrivere la funzionalità di un circuito "ai morsetti", ponendo l'accento sulle modalità che consentono di effettuare montaggi partendo da circuiti integrati base. Nei monataggi, utilizzeremo spesso reti elementari, come le porte (OR, AND e NOT) e gli elementi di memoria (registri).


Aspetti fisici del processore PS

Quanto detto in organizzazione software del processore, un processore, nell'eseguire un programma, accede allo spazio di memoria per perlevare le istruzioni e prelevare o memorizzare operandi, e allo spazio di I/O per prelevare o inviare dati ai dispositivi esterni tramite le interfaccie (cicli di accesso). Ogni ciclo di accesso comporta l'emissione, da parte del processore, di un certo numero di informazioni, che specificano lo spazio (memoria o I/O) e l'indirizzo entro lo spazio, il tipo di operazione (lettura o scrittura) e la lunghezza in byte dell'informazione da trasferire. I dati veri e propri seranno emessi dal processore oppure dai banchi di memoria o dalle interfaccie, a seconda che il ciclo sia di scrittura o di lettura. Si dice che un processore è a 8, 16, 32, ... bit se è in grado di trasferire in un unico ciclo di accesso a uno spazio esterno informazioni costituite da un massimo di 1, 2, 4, ... byte, rispettivamente.
Il processore PS è un tipico processore a 8 bit, la sua piedinatura è riportata sotto in figura. Le funzioni principali piedini sono descritte nella tabella sotto la figura.
Generalmente la funzione associata a un piedino è espletata attraverso la emissione/ricezione di un livello logico o di un impulso (in quest'ultimo caso, accanto al nome del piedino, riportero esplicitamente l'indicazione impulso). Diremo poi che il piedino è attivo alto se l'espletamento della funzione avviene attraverso la emissione/ricezione del livello 1 o dell'impulso 0->1->0, e che un piedino è attivo basso (e faremo iniziare il simbolo che lo contraddistingue con il carattere '/') se l'espletamento della funzione avviene attraverso la emissione/ricezione del livello 0 o dell'impulso 1->0->1.


Piedinatura del processore PS
Simbolo Tipo Nome e funzione
RESET ingresso RESET (impulso): porta il processore nello stato iniziale (tutti i registri a 0)
A31-A0 uscita Addres: specificando l'indirizzo durante le operazioni di lettura e di scrittura sia nello spazio di memoria che nello spazio di I/O
D7-D0 bidirirezionali DATA (3 state): supportano i dati durante le operazioni di lettura e di scrittura sia nello spazio di memoria che nello spazio di I/O
/MRD uscita Memory ReaD (impulso): indica che il processore intende compiere un'operazione di lettura nello spazio di memoria
/MWR uscita Memory WRite (impulso): indica che il processore intende compiere un'operazione di scrittura nello spazio di memoria
/IORD uscita I/O ReaD (impulso): indica che il processore intende compiere un'operazione di lettura nello spazio di I/O
/IOWR uscita I/O WRite (impulso): indica che il processore intende compiere un'operazione di scrittura nello spazio di I/O


L'evoluzione dei segnali sui vari piedini del processore durante un ciclo di lettura e un ciclo di scrittura nello spazio di memoria è riportata in modo qualitativo nelle figure sotto.

Diagramma temporale di un ciclo di lettura

Per compiere un ciclo di lettura nello spazio di memoria, il processore specifica innanzitutto, attraverso i piedini A31-A0, l'indirizzo della locazione interessata. Successivamente, esso genera sul piedino /MRD un impulso di lettura avente una durata opportuna (alcune decine di nsec). Alla fine di tale impulso (fronte in salita) il processore memorizza la suo interno il byte trasportato dai piedini D7-D0. Il banco di memoria che risponde al ciclo di lettura deve provvedere a inviare il byte sui piedini D7-D0 un certo tempo prima che termini l'impulso di lettura. I piedini /MWR, /IORD, /IOWR restano inattivi per tutta la durata del ciclo.
Un ciclo di lettura nello spazio I/O avviene con modalità del tutto analoghe: l'indirizzo viene generato sui piedini A15-A0 (gli altri hanno valore 0). L'impulso di lettura sul piedino /IORD, mentre i piedini /MRD, /MWR, /IOWR restano inattivi per tutta la durata del ciclo.

Diagramma temporale di un ciclo di scrittura

Per compiere un ciclo di scrittura nello spazio di memoria, il processore specifica anzitutto i piedini A31-A0, l'indirizzo della locazione interessata all'operazione. Contemporaneamente pone il byte da scrivere sui piedini D7-D0. Successivamente genera sul piedino /MWR un impulso di scrittura avente una durata opportuna (alcune decine di nsec). Il banco di memoria che risponde al ciclo di scrittura deve provvedere a prelevare il byte sui piedini D7-D0 alla fine dell'impulso di scrittura (fronte di salita). I piedini /MRD, /IORD, /IOWR restano inattivi per tutta la durata del ciclo.
Un ciclo di scrittura nello spazio I/O avviene con modalità del tutto analoghe: l'indirizzo viene generato sui piedini A15-A0, l'impulso di scrittura sul piedino /IOWR, mentre i piedini /MRD, /MWR, /IORD restano inattivi per tutta la durata del ciclo.
Occorre notare che la durata di un ciclo di lettura o di scrittura, stabilita come caratteristica costruttiva di ogni processore, può essere aumentata quando i banchi di memoria o le interfaccie richiedano tempi più lunghi per effettuare i cicli stessi. Per fare questo ogni processore possiede un ulteriore piedino di ingresso (/READY) che viene esaminato a certi intervalli di tempo, e determina un allungamento prefissato del tempo di ciclo ogni qualvolta viene trovato 0. Per semplicità non abbiamo esplicato tale piedino nelle figure precedenti.
Quando devono essere lette o scritte entità informative costituite da più byte (parole, parole lunghe), il processore effettua un ciclo di lettura o di scrittura per ogni byte da trasferire.


Funzionamento interno del processore

Esaminiamo adesso in maggior dettaglio il funzionamento interno del processore. Come già detto più volte, esso preleva dalla memoria un'istruzione alla volta e quindi la esegue. Per svolgere questa sua attività, il processore adopera, oltre ai registri esaminati in precedenza (registri visibili al programmatore) anche un certo numero di registri di appoggio (registri invisibili al programmatore) tra cui il registro istruzioni (IR: Instruction Register).
Più in dettaglio, il funzionamento interno di un processore può essere schematizzato nelle seguenti tre fasi:
  • Fase di chiamata. In questa fase l'istruzione che deve essere eseguita viene trasferita dallo spazio di memoria nel registro IR, attraverso più cicli di lettura. L'indirizzo della prima delle locazioni che contengono l'istruzione (brevemente: l'indirizzo dell'istruzione), è rappresentato dal contenuto di EIP. Dopo ogni ciclo di lettura il contenuto del registro EIP viene aggiornato, in modo tale che alla fine della fase di chiamata esso risulta incrementato di tante unità quante sono le locazioni occupate dall'istruzione letta: risultano così predisposte le condizioni per la chiamata dell'istruzione sequenzialmente successiva;
  • Fase di indirizzamento. In questa fase, in conformità alle regole specificate nell'istruzione, viene calcolato l'indirizzo dell'operando destinatario e, se l'istruzione è a due operandi, l'indirizzo dell'operando sorgente (l'indirizzo di IR se l'indirizzamento è immediato); nel caso di istruzioni per il controllo del flusso del programma, viene calcolato l'indirizzo dell'istruzione a cui saltare;
  • Fase di esecuzione. In questa fase, l'istruzione contenuta in IR viene interpretata dal processore ed eseguita. Sa l'istruzione è di controllo e la condizione di salto non è verificata, allora non viene eseguita nessuna operazione; se, invece, la condizione di salto è verificata, l'indirizzo di calcolo nella fase 2 viene trasferito nel registro EIP. Se l'istruzione è opertiva, e gli operandi sorgente e destinatario risiedono nei registri generali (oppure l'operando sorgente è immediato), allora l'istruzione viene eseguita direttamente senza altre iterazioni con gli spazi estremi. Diversamente il processore deve effettuare ulteriori operazioni di lettura e scrittura, utilizzando gli indirizzi calcolati nella fase 2: per esempio, per un'istruzine di ricopiamento di una quantità di memoria in un registro generale, deve essere eseguita una preventiva operazione di lettura. Similmente, per un'operazione aritmetica (somma) con operando destinatario in memoria principale deve essere effettuata una preventiva operazione di lettura, dopodichè, eseguita l'addizione, deve essere effettuata una successiva operazione di scrittura del risultato.
In molti processori la fase chiamata delle istruzioni avviene in parallelo alle altre due fasi (prefetch): mentre viene effettuata una fase di indirizzamento o di esecuzione di un'istruzione, ne vengono prelevate altre dalla memoria (in sequenza), fino a riempire una coda interna al processore. Le sinfole istruzioni vengono poi prelevate dalla cosa per effettuare le successive due fasi. Quando viene eseguita un'istruzione di salto la coda interva viene invalidata.


Struttura di un calcolatore

Nella figura sotto è riportato lo schema di principio di un calcolatore basato sul processore PS. Il calcolatore, oltre al processore, comprende banchi di memoria (posizionati nello spazio di memoria), interfacce (posizionate nello spazio di I/O), e un bus di comunicazione, costituito dalle linee che collegano il processore ai due spazi esterni (i cerchietti utilizzati al posto dei puntini indicano collegamenti parziali).

Schema di un semplice calcolatore

Supponiamo (come avviene comunemente) che le memorie e le interfaccie che si collegano al processore abbiano piedini e segnali sui piedini compatibili con quelli del processore: i piedini per gli indirizzi e per i dati vengono indicati con lo stesso nome dei corrispondenti piedini del processore, mentre i piedini che servono a recepire gli impulsi di lettura e di scrittura prendono il nome di /RD e /WR, rispettivamente.


Organizzazione dello spazio di memoria

Lo spazio di memoria indirizzabile dal processore PS ha la capacità di 4 Gbyte. Vediamo adesso come, partendo da integrati (chip) di memoria disponibili, possano essere costruiti dei bachi da montare nello spazio di memoria del processore.
Nella figura sotto è riportata la piedinatura di un ipotetico integrato RAM 1Mx4, costituito da 220 locazioni, ciascuna a 4 bit. Nella tabella subito dopo è descritta la funzione dei vari piedini.

Un ipotetico chip di memoria 1Mx4

Simbolo Tipo Nome e funzione
A19-A0 ingresso Address: specificano l'indirizzo durante le operazioni di lettura e di scrittura
D3-D0 bidirezionali Data (3-state): supportano i bit dei dati durante i cicli di lettura/scrittura; rimangono in alta impedenza quando l'integrato non risponde a richieste di lettura
/RD ingresso ReaD (impulso): indica la richiesta di un'operazione di lettura
/WR ingresso WRite (impulso): indica la richiesta di un'operazione di scrittura
/S ingresso Select: abilita l'ingresso a rispondere a richiedere di operazioni di lettura e di scrittura


Con due di questi integrati possiamo costruire un gruppo 1Mx8 come illustrato nella fugura successiva. I due integrati sono collegati in parallelo, e il gruppo complessivo risulta avente lo stesso numero di piedini per gli indirizzi e un numero doppio di piedini per i dati rispetto a un singolo integrato.


Un gruppo di memoria 1Mx8


Con due gruppi 1Mx8 possiamo costruire un banco 2Mx8, come illustrato nella figura seguente. Il banco richiede un piedino di indirizzo in più (A20) rispetto a quelli dei singoli gruppi. La rete R, per la quale è riportata la tabella di verità, produce i segnali di abilitazione /SL e /SH dei due gruppi, in funzione del segnale di abilitazione /S dell'intero banco di A12 (bit più significativo dell'indirizzo): in un gruppo risultano quindi posizionate le locazioni per le quali A12=0 (gruppo basso o low) e nell'altro gruppo le locazioni per le quali A12=1 (gruppo alto o high).


Un banco di memoria 2Mx8


Il banco 2Mx8 può essere montato nello spazio di memoria in una qualunque delle 211 porzioni (ciascuna di 2Mbyte) definite da una combinazione di valori dei 11 bit più significativi dell'indirizzo presente sul bus (vedi figura sotto). Per esempio, la porzione definita dalla combinazione A31-A21 = 0000 0000 001 va all'indirizzo 00200000 all'indirizzo 003FFFFF, estremi compresi. La maschera sotto deve quindi essere progettata per riconoscere (producendo 0 in uscita) la combinazione desiderata.


Collegamento di un banco di memoria al bus del processore


Organizzazione dello spazio di I/O

Lo spazio di I/O indirizzibile dal processore PS ha una capacità di 32K byte. In questo spazio vengono montate le interfacce.
Come detto precedentemente, un'interfaccia semplificata appare al programmatore come una piccola memoria, costituita da un certo numero di registri di un byte. In figura sotto è mostrata la piedinatura di una semplice interfaccia, del tipo di quella schematizzata in precedenza (con tre registri interni): per semplicità sono omessi i piedini relativi all'alimentazioni, alla massa e al clock, e non sono evidenziati il numero e la direzione dei piedini per il collegamento al dispositivo esterno. Le funzioni dei vari piedini dell'interfaccia sono riportate nella tabella seguente.


Piedinatura di una semplice interfaccia


Gli indirizzi (binari) dei tre registri all'interno dell'interfaccia sono 00 per RBR, 01 per TBR, 10 STR (vedi organizzazine software - interfacce).

Simbolo Tipo Nome e funzione
A1-A0 ingresso Addres: specificano l'indirizzo per i registri interni durante le operazioni di lettura e scrittura
D7-D0 bidirezionali Data (3-state): supportano i dati durante i cicli di lettura/scrittura; rimangono in alta impedenza quando l'interfaccia non risponde a richieste di lettura
/RD ingresso ReaD (impulso): indica un'operazione di lettura
/WR ingresso WRite (impulso): indica una richiesta di un'operazione di scrittura
/S ingresso Select: abilita il chip a rispondere a richieste di operazioni di lettura o scrittura
EXIO ing/usc EXternal I/O: servono a effettuare gli scambi di informazioni tra interfaccia e dispositivo esterno


L'interfaccia di cui sopra può essere montata nello spazio I/O del processore PS secondo lo schema nella figura sotto. L'indirizzo di ciascun registro nello spazio di I/O (così come deve essere specificato dal programmatore) si ottiene a partire dal suo indirizzo all'interno dell'interfaccia, applicando la regola:

indirizzo = indirizzo base + indirizzo interno

dove l'indirizzo base si ricava completando la configurazione dei bit riconosciuta dalla maschera con i rimanenti bit di indirizzo pensati uguali a zero: per esempio, se la maschera produce 0 in uscita quando A15-A2 = 0000 0000 1111 10, allora l'indirizzo base è 00F8.


Collegamento di un'interfaccia al bus del processore


Occorre infine notare che un'interfaccia, apprendo esternamente come una piccola memoria, può essere montata anche nello spazio di memoria: in questo caso l'accesso ai registri interni si ottiene attraverso l'istruzione MOV, invece che con le istruzioni IN e OUT.


Bus di comunicazione

Il bus di comunicazione serve a collegare al processore, banchi di memoria e interfaccie (blocchi). Esso è semplicemente costituito da un insieme di collegamenti, che devono però essere utilizzati in modo corretto: al più un blocco alla volta deve inviare informazioni sul bus, che vengono ricevute da un altro blocco (in genere anch'esso unico). Se un collegamento vengono inviate informazioni da parte di due blocchi diversi, è possibile un conflitto (o cortocircuito): si deve avere quindi mutua esclusione.


Collegamento di un dispositivo al bus del processore


In un calcolatore semplificato, la mutua esclusione interessa solo il bus dati, in quanto il bus indirizzi e il bus di controllo vengono comandati unicamente dal processore.
Inoltre, il bus dati è bidirezionale: i banchi di memoria e le interfaccie possiedono per ciascun piedino dati, una porta 3-state (figura precedente). Quando avviene un ciclo di bus, il segnale di abilitazione /S diviene attivo in dipendenza di alcuni bit più significativi dall'indirizzo, indipendentemente dallo spazio. Nel caso di un'operazione di scrittura, la porta 3-state è aperta, e l'informazione presente sul bus viene scritta nel registro selezionato (/WR viene utilizzato come impulso di scrittura, e questa avviene sul fronte in salita). Nel caso di un'operazione di lettura, la porta 3-state è chiusa, e il registro selezionato determina, con il suo contenuto, la quantità inviata sul bus dati.
--=[Home page]=----=[Home page]=----=[Forum]=----=[Forum]=----=[lingua]=----=[lingua]=----=[Statistiche]=----=[Statistiche]=----=[Cerca in questo sito]=----=[Cerca in questo sito]=----=[Info sul copyright]=----=[Info sul copyright]=----=[Scegli le impostazioni che preferisci]=----=[Scegli le impostazioni che preferisci]=----=[Scrivi al webmaster]=--
vPHPvHTMLvCSS