Estratto del documento

Microprocessors based

instrumentation

1. Spiega le strategie adottate nel corso degli anni per

aumentare la velocità dei microprocessori, con

particolare attenzione alle metodologie di progettazione

dei processori e al loro scaling

Le prestazioni dei microprocessori sono strettamente legate all’evoluzione dei

transistor, che costituiscono l’elemento fondamentale dei circuiti integrati. Un

maggior numero di transistor corrisponde a un aumento delle prestazioni del

microprocessore e di conseguenza a un numero superiore di istruzioni eseguibili

al secondo.

Negli ultimi trent'anni, i progressi nelle tecnologie di produzione hanno portato a

un raddoppio del numero di transistor nei microprocessori circa ogni 18–24 mesi,

in accordo con la Legge di Moore, contribuendo così a un costante aumento delle

prestazioni.

Uno degli sviluppi chiave è stata la riduzione delle dimensioni dei transistor,

passati dai micrometri ai nanometri. Questa miniaturizzazione ha permesso di

aumentare significativamente il numero di transistor integrabili nella stessa

area, migliorando le prestazioni complessive dei chip. Poiché la produzione dei

circuiti integrati (IC) è costosa, integrare un numero sempre maggiore di

transistor in un singolo chip si è rivelato fondamentale non solo per incrementare

l’efficienza, ma anche per ridurre i costi di produzione.

Il principale motore dell'industria dei semiconduttori è stata il processo di scaling,

ovvero la riduzione delle dimensioni fisiche dei transistor e dei fili che li collegano,

permettendo di posizionare più dispositivi su ogni chip.

I transistor più piccoli hanno il vantaggio di commutare più velocemente poiché

richiedono meno corrente e possiedono una capacità inferiore, (secondo la legge

= RC).

τ

La riduzione della lunghezza del dispositivo (transistor) o della tensione di soglia

riducono il ritardo di un MOSFET e contribuiscono a velocizzare il tempo di

commutazione. Con l'aumento del numero di transistor disponibili, è stato

possibile aggiungere memoria cache nei microprocessori, dedicando una parte di

essi allo storage e i rimanenti alla computazione, incrementando così il numero di

istruzioni che possono essere eseguite in un secondo.

Un'altra strategia efficace è stata l'implementazione della computazione in

“pipeline”, che consente di eseguire più istruzioni in parallelo, migliorando

l'efficienza del microprocessore.

La progettazione dei microprocessori si è evoluta attraverso due approcci

principali: il lead design, che comporta la creazione di nuovi progetti e

architetture, e la compaction, che modifica i progetti esistenti per adattarli ai

nuovi processi di fabbricazione. La compaction permette di utilizzare i design

precedenti riducendo la dimensione della maschera di produzione, quindi avere

un componente più piccolo, senza dover sviluppare nuovi schemi da zero.

2. Descrivi le caratteristiche di un bus e le differenze fra un

bus asincrono e sincrono con il loro diagrammi

operazionali.

Un bus è un sistema di comunicazione che trasferisce dati tra componenti

all'interno di un computer o tra computer. Esso integra hardware, software e

protocolli di comunicazione per permettere lo scambio di informazioni tra i vari

componenti del sistema. Un bus funge da percorso elettrico comune che collega

più dispositivi, facilitando così la comunicazione tra di loro.

I bus vengono utilizzati all’interno della CPU per lo scambio di dati con l’ALU

(Arithmetic Logic Unit) e, all’esterno, per collegare la CPU alla memoria e alle

periferiche di I/O.

Il bus di un sistema microprocessore è composto da tre sottosistemi:

Control Bus: un bus bidirezionale utilizzato dalla CPU per gestire la

●​ comunicazione, sincronizzando i segnali di controllo affinché i dispositivi

possano comunicare correttamente.

Data Bus: bidirezionale e utilizzato per scambiare dati tra dispositivi (un

●​ parlante, uno o più ascoltatori).

Address Bus: Contiene il valore dell'indirizzo della cella (memoria o

●​ dispositivi I/O) che viene letta o scritta. Generalmente è una comunicazione

unidirezionale tra la CPU e la memoria o i dispositivi I/O.

Il funzionamento dei bus segue un’architettura MASTER-SLAVE, dove la CPU

agisce come master e i dispositivi di memorizzazione e periferiche sono

considerati slave.

Due caratteristiche importanti che servono a descrivere le performance del bus

sono la larghezza e il clock del bus.

La larghezza del bus si riferisce al numero di linee che compongono il bus stesso:

un bus più ampio offre una capacità dati maggiore consentendo il trasporto di

una quantità più elevata di dati ma allo stesso tempo questo aumento rallenta la

velocità di propagazione del segnale lungo il bus stesso a causa della capacità

parassita causata dai fili paralleli, inoltre i bus più larghi hanno anche un costo

maggiore. È quindi necessario trovare un trade-off tra la larghezza del bus e le

prestazioni complessive del sistema.

Una delle possibili soluzioni per aumentare la larghezza di banda del bus e

garantire un opportuno trade-off è utilizzare il multiplexed bus, che aumenta lo

spazio di memoria indirizzabile e la capacità di dati, senza aumentare il numero di

linee che compongono il bus stesso grazie ad un sottoinsieme di fili che possono

assumere ruoli diversi in diversi istanti.

Un altro modo per aumentare la capacità di trasferimento dei dati è aumentare

la velocità della comunicazione sul bus, ovvero diminuire il tempo di ciclo, ma

questo può portare ad un’asimmetria nel flusso dei dati poiché alcuni componenti

del sistema potrebbero non essere in grado di adattarsi al ciclo veloce, questo

fenomeno si chiama Bus skew (disallineamento del dato).

Il clock del bus invece definisce la velocità a cui avvengono le operazioni di

trasferimento dei dati sul bus, ed in base alla sincronizzazione si possono definire

bus di due tipi:

Bus sincrono: uno dei suoi segnali trasferiti è il clock, generato da un

●​ oscillatore al quarzo che produce un'onda quadra con una frequenza

generalmente compresa tra 5 e 133 MHz. Tutte le attività del bus avvengono

in un numero intero di cicli del clock, chiamati cicli del bus. Il clock viaggia

insieme ai dati;

Bus asincrono: non esiste un clock globale; ogni trasferimento è regolato

●​ da un protocollo di handshake (tipicamente segnali “Request” e

“Acknowledge”) tra mittente e destinatario. Un trasferimento parte solo

quando il mittente predispone i dati e il destinatario conferma di essere

pronto, e termina quando il ricevente segnala di averli acquisiti.

Lettura bus sincrono

In particolare considerando ad esempio un’azione di lettura in memoria di un

bus sincrono si può notare che l’inizio del primo ciclo è definito dal fronte di salita

del clock: durante questo ciclo la CPU inserisce sulle linee di indirizzo, l’indirizzo

della memoria che deve essere letto. Dopo un tempo TML necessario per

l’assestamento delle linee di indirizzo la CPU emette una richiesta di lettura e i

segnali MREQ (accesso alla memoria) e RD (indica un’operazione di lettura)

vengono attivati. La memoria richiede del tempo per leggere il valore e scriverlo

nei dati e comunica questo ritardo alla CPU con il segnale di WAIT; quando i dati

sono stati scritti la memoria disattiva questo segnale, la CPU inizia a leggere i dati

e disattiva i segnali MREQ e RD.

Lettura bus asincrono

Considerando invece un’azione di lettura effettuata con un bus asincrono Invece

di avere un clock, i bus asincroni sfruttano un principio di causa-effetto. Quando il

dispositivo master ha inserito l’indirizzo, i segnali MREQ e RD vengono attivati, e

subito dopo anche un segnale MSYN (Master SYN-chronization). Quando lo slave

vede questo segnale, esegue il suo lavoro il più rapidamente possibile e poi attiva

SSYN (Slave SYNchronization). Quando il master vede l’attivazione del segnale

SSYN, sa che i dati sono disponibili, li memorizza e poi nega indirizzo, MREQ, RD e

MSYN. La negazione di MSYN causa la negazione di SSYN, che conclude la lettura e

riporta il sistema allo stato originale. Questo approccio è indipendente dal tempo

e un evento è causato da un evento precedente (handshake completo).

I bus asincroni gestiscono meglio i ritardi poiché il meccanismo WAIT è gestito con

SSYN che viene attivato quando la memoria è pronta. Tuttavia, non essendo

dipendente da un clock si traduce in una maggiore incertezza nella gestione dei

segnali man mano che diventano più complessi, e questo complica le altre

procedure di trasferimento dei dati. Per questo motivo, i microprocessori

utilizzano bus sincroni.

I bus sincroni offrono una progettazione più semplice grazie alla sincronizzazione

tramite un clock comune, ma possono essere limitati dalla velocità del

dispositivo più lento. Al contrario, i bus asincroni gestiscono i ritardi in modo più

flessibile e non dipendono da un clock comune, ma introducono complessità

aggiuntive nella sincronizzazione dei segnali. Per questi motivi, i bus sincroni sono

frequentemente preferiti nei microprocessori moderni per la loro prevedibilità e

semplicità nella progettazione.

3. Descrivi l’arbitraggio del bus

I bus lavorano con una logica master-slave: durante un’operazione di

trasferimento i dispositivi Master sono attivi e iniziano il trasferimento dei dati

mentre i dispositivi slave sono passivi e aspettano la richiesta del trasferimento.

Diversi dispositivi possono comportarsi da master, ad esempio quando la CPU

ordina al controller del disco di leggere o scrivere un blocco, la CPU agisce come

master e il controllore del disco come slave, tuttavia anche il controllore del disco

può comportarsi da master mettendo in atto un’operazione di trasferimento

direttamente dalla memoria verso una periferica.

È però importante che durante un’operazione solo un dispositivo tra quelli

connessi allo stesso bus agisca da master.

L’arbitro dei bus determina chi agisce come master e può essere centralizzato o

decentralizzato.

Nell’arbitraggio centralizzato la richiesta del bus è un “wired-AND” che viene

attivato (valore 0) quando almeno un dispositivo richiede il bus, quindi l’arbitro

non può sapere quanti dispositivi hanno richiesto il bus ma solo se ci sono

dispositivi che lo hanno richiesto ed è quindi necessario un meccanismo per

capire chi ha fatto la richiesta.

Qualsiasi dispositivo che richiede il bus tiene “premuta” la linea “bus request” e

quando l’arbitro vede una richiesta del bus emette un consenso attivando la linea

“bus grant”.

Quando il primo dispositivo riceve il consenso, se ha fatto richiesta prende il

controllo del bus e blocca il segnale di consenso, così che il secondo non veda il

permesso di comunicare, altrimenti inoltra il segnale al dispositivo successivo,

quindi se più dispositivi richiedono contemporaneamente il bus quello con la

priorità più alta (la priorità è definita dall’ordine fisico di collegamento) è quello

più vicino all’arbitro: questo meccanismo si chiama daisy chaining.

Per evitare le priorità implicite basate sulla distanza dall’arbitro, molti bus

implementano livelli di priorità multipli. Per ciascun livello di priorità, esiste una

linea “bus request” e una linea di concessione del bus. Se vengono richiesti più

livelli di priorità contemporaneamente, l’arbitro emette una concessione solo per il

livello di priorità più alto.

Nell’arbitraggio decentralizzato invece non ci sono arbitri e quando un

dispositivo vuole utilizzare il bus attiva la sua linea di richiesta; tutti i dispositivi

monitorano tutte le linee di richiesta quindi, alla fine di ogni ciclo del bus ogni

dispositivo sa se è stato il richiedente con la priorità più alta.

Questo metodo rispetto all’arbitraggio centralizzato richiede più linee ma evita il

costo dell’arbitro e limita il numero dei dispositivi al numero delle linee di

richiesta.

Esiste poi un altro tipo di arbitraggio decentralizzato che utilizza solo 3 linee

indipendentemente dal numero di dispositivi.

La prima linea è la linea di richiesta, di tipo open drain e condivisa tra tutti i

dispositivi. Questa linea funziona secondo una logica wired-AND: se almeno un

dispositivo la attiva, il livello logico va a zero, indicando la presenza di una

richiesta. La seconda linea è chiamata BUSY e viene attivata dal dispositivo che

ha ottenuto il controllo del bus, segnalando agli altri che il bus è attualmente

occupato. La terza linea, quella di arbitraggio, è collegata in serie tra tutti i

dispositivi, formando una sorta di catena. La testa della catena è sempre attiva,

poiché collegata all’alimentazione, e il segnale si propaga da un dispositivo al

successivo, finché non viene interrotto.

Quando un dispositivo desidera accedere al bus, controlla innanzitutto che la

linea BUSY non sia attiva, ossia che il bus sia libero. Successivamente verifica che il

segnale di arbitraggio in ingresso, chiamato IN, sia attivo. Se entrambe le

condizioni sono soddisfatte, il dispositivo può iniziare la procedura di arbitraggio

negando il proprio segnale di uscita, OUT. In questo modo, il segnale non viene più

propagato ai dispositivi successivi nella catena. Questi, ricevendo un segnale di IN

negato, capiscono di non poter ottenere il bus e negano a loro volta il proprio OUT,

impedendo la propagazione verso valle.

Alla fine di questo processo, solo un dispositivo avrà IN attivo e OUT negato: è

quello che si trova più vicino alla testa della catena tra tutti quelli che hanno fatto

richiesta. Questo dispositivo ottiene il controllo del bus, attiva la linea BUSY per

indicare che sta effettuando una comunicazione e successivamente, al

completamento, riattiva la propria uscita OUT per ripristinare la catena.

Questo schema garantisce che, in caso di richieste simultanee, il dispositivo con

priorità più alta – determinata dalla sua posizione nella catena – ottenga

l’accesso al bus. Il sistema è quindi simile al classico arbitraggio daisy chaining,

ma completamente decentralizzato: non esiste un arbitro centrale, rendendolo più

semplice, meno costoso e più resistente a guasti.

4. Descrivi come funziona l’interrupt

Un interrupt è un meccanismo che consente di interrompere l'attività corrente del

processore in risposta a una richiesta esterna. È molto utile per ottimizzare

l'utilizzo della CPU, evitando che essa debba attendere un intervallo di tempo

indefinito per completare operazioni con dispositivi esterni. Gli interrupt sono

tipicamente generati dai dispositivi di I/O. Una questione critica nella gestione

delle interruzioni è il salvataggio dello stato della macchina nel momento in cui la

CPU passa alla nuova attività perché deve tornare allo stato originale quando ha

finito.

Il processo che porta alla generazione di un interrupt segue generalmente i

seguenti passi:

1.​ La CPU richiede a un dispositivo di I/O di eseguire una determinata

operazione che richiede un tempo indeterminato per essere completata.

Durante il tempo in cui il dispositivo esegue l’operazione, la CPU continua a

eseguire altre attività senza attendere il completamento dell’operazione.

2.​ Quando l'operazione è stata completata, il dispositivo di I/O invia un

segnale di interruzione per informare la CPU che l’operazione è terminata e

che è pronta a gestire i dati.

3.​ Nel momento in cui la CPU riceve il segnale di interruzione, deve salvare lo

stato corrente ed esegue poi la IHR - Interrupt Handler Routine per

esaminare la natura dell'interruzione e invocare la ISR - Interrupt Service

Routine specifica. Al termine della ISR, la CPU ripristina lo stato precedente

e riprende l'attività originale.

La gestione delle interruzioni richiede un’organizzazione specifica per trattare

richieste multiple in modo efficace. Questo processo è simile all’arbitraggio del

bus, poiché le interrupt vengono gestite attraverso cicli di bus specifici.

La soluzione per la gestione delle interruzioni è avere un arbitro centralizzato per

daremo priorità ai dispositivi più critici in termini di tempo e per gestire l

Anteprima
Vedrai una selezione di 9 pagine su 37
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 1 Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 2
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 6
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 11
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 16
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 21
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 26
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 31
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Risposte a domande frequenti dell’esame di Microprocessor and based instrumentation Pag. 36
1 su 37
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Lauraa2002 di informazioni apprese con la frequenza delle lezioni di Microprocessor and based instrumentation e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Sardini Emilio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community