Architettura Degli Elaboratori - Sergio Congiu - libro di testo universitarioFull description
Architettura e Modernità in Italia
Full description
Full description
pdf
Full description
storia architettura
architetturaFull description
descrizione di come si utilizza l'energia degli alberiFull description
Ideato per le classi di italiano LS e L2 (durata 20/30 min circa), prevede l'integrazione orale del professore e un esercizio di role-play finale, chi fosse interessato può richiedere l'esercizio.
Generazione -1: preistoria (… (…-1642) operazioni aritmetiche come procedure “manuali”: A
rappresentazione del numero “2”
B
rappresentazione del numero “1”
3
54
B
rappresentazione del numero “3”
Procedura: sposta il contenuto del sacco A nel sacco B Risultato: il sacco B contiene ora la rappresentazione di … Nome della procedura manuale : “addizione di numeri interi” Architettura degli Elaboratori
Generazione -1: preistoria (… (…-1642) Osservazioni: • manipolando conchiglie, si possono manipolare numeri… • e fare calcoli (addizioni, sottrazioni…)
4
54
• procedure semplici, soggette ad errore, lente Architettura degli Elaboratori
Solo più tardi il far di conto diventa un processo astratto che utilizza numeri rappresentati in 54 forma scritta da simboli (cifre). Le procedure per eseguire le operazioni aritmetiche sono eseguite su … papiro. 111 – 010 = 101
Si possono fare operazioni più complesse. Procedure ancora manuali, ma più veloci. Ancora soggette ad errore meno che con le conchiglie! Architettura degli Elaboratori
Al-Khwārizmī sviluppa il concetto di definizione scritta di un procedimento da seguire per ottenere un risultato XIII secolo, traduzione latina: algoritmo Architettura degli Elaboratori
Per secoli il problema principale era stato: come riuscire ad eseguire
54
Un Un dato algoritmo In modo non-manuale (automatico) Possibilmente più velocemente che a mano Possibilmente più affidabile (senza errori)
Architettura degli Elaboratori
Generazione -1: preistoria (… (…-1642) Codex Madrid - Leonardo Da Vinci (~1500) − scoperto per caso a Madrid nel 1967 − progetto di un calcolatore meccanico...?
Generazione 0: Meccanica (1642(1642-1935) Blaise Pascal, figlio di un esattore delle tasse, costruì a 19 anni una macchina addizionatrice con riporto automatico. Le cifre degli operandi venivano inserite nelle ruote inferiori, la somma eseguita dagli ingranaggi interni, le cifre del risultato apparivano nelle finestre superiori
Generazione 0: Meccanica (1642(1642-1935) Joseph-Marie Jacquard inventò nel 1801 un telaio automatico con trama e ordito controllati da schede perforate
La macchina di Jacquard (1801) operava secondo uno schema prefissato. 54 L’output era funzione del “programma” scritto nelle schede perforate ● Primo esempio di un software (istruzioni su schede perforate) ● Nessuno raccolse questa invenzione geniale di Jacquard (considerata una minaccia alla occupazione nell’industria tessile)
Charles Babbage nel 1822 ottenne dal governo 54 britannico un finanziamento per costruire una macchina (difference engine) intesa a calcolare rapidamente e senza errori le tavole numeriche usate per la navigazione. Primo esempio di finanziamento della ricerca in Computer Science.
Il Difference Engine progettato da Babbage doveva calcolare e stampare tavole di valori di 54 polinomi fino al sesto grado, con la precisione di 20 cifre decimali Oggi si chiamerebbe: application specific hard-coded machine Nonostante il finanzimento Babbage non riuscì a costruire il Difference Engine: dopo 10 anni, nel 1832, abbandonò il progetto e ne intraprese un altro (Analitical Engine) Architettura degli Elaboratori
Generazione 0: Meccanica (1642(1642-1935) Nel 1853 (più di 20 anni dopo) lo svedese Georg Scheutz, costruì una versione limitata del Difference Engine di Babbage
Generazione 0: Meccanica (1642(1642-1935) Nel 1989-91, fu costruita una versione completa del Difference Engine, sulla base del progetto originale di Babbage
Generazione 0: Meccanica (1642(1642-1935) L’Analytical Engine (il nuovo progetto di Babbage) è il primo vero “computer” della storia: Un dispositivo programmabile con la struttura dei computer moderni: Organi di Input (schede perforate) per dati e istruzioni Organi di Output (ruote predisposte per stampare) Organi di Memoria (the Store), posizione delle ruote dentate (1000 colonne di 50 ruote: ~200Kbit) Una unità aritmetica (the Mill), Un modulo di controllo, per stabilire la sequenza delle operazioni. Nonostante le energie (e il denaro) speso, Babbage non riuscì a costruire nemmeno la Analitical Engine: come per Leonardo, la tecnologia non era ancora matura. Architettura degli Elaboratori
Generazione 0: Meccanica (1642(1642-1935) Nel 1890 Herman Hollerith vinse la gara per la fornitura delle apparecchiature di calcolo necessarie al governo americano per elaborare i dati del censimento
21
54
Nel 1914, la società da lui fondata, Hollerith Tabulating Company, insieme ad altre due, costituì la Calculating-Tabulating-Recording (C-T-R) che, nel 1924, prese il nome di IBM. Architettura degli Elaboratori
Generazione 1: Elettrom. (1935(1935-1945) nel 1935 Konrad Zuse (Berlino) costruì nel salotto dei genitori lo Z-1. Era basato su relè e utilizzava l’aritmetica binaria. Tempo di esecuzione delle istruzioni: 6 s ~ 0.17 Hz).
1936: Alan M. Turing getta le basi della teoria della computabilità. La teoria è basata sulla macchina di Turing, una macchina molto semplice ma “universale”, cioè in grado di calcolare qualsiasi funzione computabile.
54
Il problema ingegneristico di produrre macchine diverse per svolgere compiti diversi è sostituito dal lavoro di programmare la macchina universale per i vari compiti. Architettura degli Elaboratori
Generazione 1: Elettrom. (1935(1935-1945) Fine degli anni 30: Howard Aiken costruì lo Harvard Mark I (IBM Automatic Sequence Control Calculator o ASCC) il primo calcolatore elettromeccanico “general purpose” messo in commercio. Le istruzioni venivano lette da banda perforata, come previsto nell’Analytical Engine di Babbage.
Nell’Harvard MARK I Grace M. Hopper trovò il primo bug (scarafaggio) ucciso tra le ganasce di un relay. L’insetto fu da lei incollato nel logbook del computer e da allora, ad ogni guasto della macchina, era solita dire ad Howard Aiken che dovevano "debug the computer” Architettura degli Elaboratori
Generazione 2: Valvole (1945(1945-1955) John Atanasoff and Clifford Berry costruirono, tra il 1939 e il 1942, il primo elaboratore digitale elettronico alla università dello Iowa. The ABC conteneva molte innovazioni tra cui l’aritmetica binaria, l’elaborazione parallela, le memorie dinamiche e la separazione tra la memoria e le funzioni di calcolo.
"It was at an evening of scotch and 100 mph car rides, when the concept came, for an electronically operated machine, that would use base-two (binary) numbers instead of the traditional base-10 numbers, condensers for memory, and a regenerative process to preclude loss of memory from electrical failure.” John Atanasoff scrisse la maggior parte dei concetti del primo elaboratore moderno sul retro di un tovagliolino da cocktail. Il prototipo funzionante non fu mai brevettato per l’inizio della II Guerra mondiale. Eckert and Mauchly furono i primi a brevettare un elaboratore digitale, l’ENIAC. Architettura degli Elaboratori
Nel 1943 iniziò il 54 progetto per costruire ENIAC (Electronic Numerical Integrator and Computer) Mauchly (1907-1980) e Eckert (1919-1995) Architettura degli Elaboratori
Generazione 2: Valvole (1945(1945-1955) ENIAC 18’000 valvole, 1’500 relay, 30 tonnellate, 140 kW, 20 registri da 10 cifre decimali. Programmi cablati (6’000 interruttori, tonnellate di fili). Soggetto a guasti: negli ultimi 6 anni, in media 100 ore/sett. di operatività: availability = 60% Architettura degli Elaboratori
Nel 1945, John von Neumann progettò un “stored program computer”: il programma non è più definito da interruttori e cavi o da schede perforate, ma si trova in memoria (la stessa 54 che contiene i dati). L’architettura di von Neumann prevede: - un modulo di controllo, - un modulo ALU con accumulatore, - una memoria per contenere programmi e dati, - l’uso dell’aritmetica binaria al posto di quella decimale. I computer odierni sono ancora basati sull’architettura di von Neumann (in realtà deriva da Babbage). Questa architettura presenta il cosiddetto (Backus, 1977) “von Neumann bottleneck” tra la memoria e le unità di controllo e calcolo; tutte le nuove architetture cercano di rimuovere questo collo di bottiglia. Architettura degli Elaboratori
Generazione 2: Valvole (1945(1945-1955) Altre macchine: Manchester Mark I, il primo “stored program” computer ad essere operativo (nel 1948) all’Università di Manchester.
Architettura degli Elaboratori
Generazione 2: Valvole (1945(1945-1955) Altre macchine: nel 1951, il Whirlwind computer (MIT) fu il primo ad impiegare memorie magnetiche (nuclei di ferrite)
Nel 1952 Grace Hopper, nell’articolo intitolato “The Education of a Computer”, (Proc. ACM Conference, Annals of the History of Computing Vol. 9, No.3-4, pp. 271-281) descrive il concetto di compilatore.
Nel 1954, John Backus (IBM) sviluppò il primo linguaggio di programmazione di alto livello (FORTRAN) con cui gli utenti potevano definire i problemi in termini di formule matematiche Il primo compilatore FORTRAN era costituito da 2’000 schede perforate (2000 righe di codice non documentato) Molti programmi scientifici sono tuttora scritti in FORTRAN Architettura degli Elaboratori
Generazione 3: Transistor (1955(1955-1965) Nel 1947 W. Shockley, J. Bardeen, e W. Brattain inventano il dispositivo transfer resistance in seguito chiamato transistor
Nel 1955, l’IBM produsse un computer mainframe (IBM 704), usando transistor discreti. Il primo computer con aritmetica floating point (5 kFlops, clock: 300 kHz) Architettura degli Elaboratori
Nel 1958, J. Kilby della Texas Instruments (premio Nobel per la fisica nel 2000) dimostrò la possibilità di integrare un transistor insieme con resistenze e capacità su un singolo chip di semiconduttore (~1 cm2), per ottenere un oscillatore phase shift.
Nel 1961, Fernando Corbató (MIT) produsse CTSS (Compatible Time Sharing System) per il computer IBM 7090/94: il primo sistema operativo (time-sharing) della storia.
54
Nel 1962 all’Università di Manchester fu operativo il computer Atlas: il primo ad usare le tecniche di memoria virtuale, di paging e di pipelining; possedeva moduli separati per l’aritmetica intera e floating-point, (prestazioni di ~200 kFLOPS). Architettura degli Elaboratori
Generazione 4: ICs (1965(1965-1980) Nel 1964 l’IBM annunciò il System/360, la prima famiglia di computer compatibili .
Nel 1975 MITS produsse l’Altair 8800, il primo personal computer (memoria di 256 byte). 54 Più tardi, Bill Gates and Paul Allen scrissero il primo compilatore BASIC per l’Altair. Nel 1976: Apple I (ne furono prodotti 200). Nel 1981: il primo PC IBM.
Cosa vedremo 1. I sistemi di numerazione • Decimale, binario, esadecimale… • Conversioni di base
1
33
2. Le informazioni numeriche • Numeri naturali (senza segno o “unsigned”) • Numeri interi (con segno o “signed”) • Numeri non interi ( fixed-/floating-point) 3. Le informazioni non numeriche • Testi, immagini, suoni, video… Architettura degli Elaboratori
Da ottale/esadecimale a binario: espansione di ogni cifra in una terna/quaterna di cifre binarie.
•
Da binario a ottale/esadecimale: raggruppamento in terne/quaterne di cifre e sostituzione di ciascuna terna/quaterna con l’opportuna cifra ottale/esadecimale.
•
Da qualsiasi base a decimale: applicando la definizione di notazione posizionale.
Negli elaboratori, l’elemento base 33 per la rappresentazione delle informazioni è il BInary digiT o più semplicemente BIT (Tukey, 1947). Può essere realizzato in molti modi diversi (carica elettrica, campo magnetico, ecc.), ma in tutti i casi può assumere esattamente 2 valori e corrisponde quindi a una cifra binaria. Qualsiasi informazione in un elaboratore è rappresentata tramite un numero finito di bit. Architettura degli Elaboratori
Rappresentazione finita: osservazione Utilizzando un numero di cifre finito si può rappresentare solo una quantità finita di numeri. Esempio per i numeri naturali: base n. di cifre quantità
min
max
10
M
10M
0
10M-1
10
4
104
0
9999
2
M
2M
0
2M-1
2
4
24
0
15
2
10
210
0
1023
2
20
220
0
1048575
2
30
230
0
1073741823
Potenze di 2
13
Quando il numero di bit è elevato, si usano delle abbreviazioni analoghe a quelle delle unità di misura Prefisso
Il valore rappresentato si ottiene sottraendo P al valore calcolato secondo la notazione posizionale. Esempio con M=4 e P=8 (di solito P=2M-1): Dissimmetria
La rappresentazione di un intero positivo coincide con quella del corrispondente numero naturale. La rappresentazione di un intero negativo si ottiene complementando bit a bit quella del suo opposto. 10002
La rappresentazione di un intero positivo coincide con quella del corrispondente numero naturale. La rappresentazione di un intero negativo si ottiene aggiungendo una unità al complemento a 1. 10002
Complemento a 2: proprietà È il metodo di rappresentazione più diffuso, perché è l’unico tra quelli visti con tutte le seguenti proprietà.
19
33
• Ha una sola rappresentazione dello 0. • Ha una struttura ciclica: aggiungendo 1 al massimo numero rappresentabile si ottiene il minimo numero rappresentabile. • Consente le operazioni aritmetiche con i numeri negativi usando le stesse regole valide per i numeri positivi. Esempi: 0011
Nell’eseguire le operazioni aritmetiche, ci si deve comunque assicurare che il risultato sia rappresentabile con il numero di bit a disposizione. Se ciò non è vero (overflow), l’esito dell’operazione è privo di significato.
33
Come riconoscere l’overflow? Tramite i riporti. Riporto nel bit di segno
24 bit: 1 per il segno s (0=“+”) 23 per l’ampiezza 1.xxx…xx - in notazione fixed point normalizzata; la parte intera (sempre 1) non viene rappresentata, i 23 bit rappresentano la parte frazionaria m = xxx…xx E (caratteristica)
R = M·2E Intervallo dei numeri rappresentabili sull’asse reale: -G
R
-P P
· d
P
33
G
0
1.410·10-45
G
3.410·10+38
degli infiniti numeri reali compresi tra - G e G sono rappresentabili con esattezza solo 232 ( 4·109) numeri razionali (in realtà un po’ meno); in generale un numero reale R sarà rappresentato dal più vicino di questi numeri razionali; l’errore di approssimazione è d/2 erra
R = M·2E Intervallo dei numeri rappresentabili sull’asse reale: -G
-P P
33
G
0
errr 2-24
10-8
P
1.410·10-45
G
3.410·10+38
precisione: 7 decimali significativi (es: h=173.4768 cm) Esempi di grandezze fisiche “estreme” i cui valori sono “gestibili” con questa rappresentazione f.p.: distanza terra - quasar: 1027 m dimensione quark: 10-18 m Architettura degli Elaboratori
precisione: 16 cifre decimali significative. Sono rappresentabili solo 264 = 16 E (EXA = 1018) degli infiniti numeri reali compresi tra -G e G. Esempio di grandezza fisica estrema gestibile con questa rappresentazione f.p.: numero di particelle subatomiche nell’universo: Architettura degli Elaboratori
Rappresentazione binaria delle informazioni numeriche NUMERI NATURALI con 32 bit (i primi 232 = 4G numeri) (da 0 a 232-1) 0 1 … 231 -2 231 -1 231 231+1 … 232 -2 232 -1
con 32 bit (da -231 a + 231-1) bit V = “guardalinee” 01 ... 11
10 ... 00
0010 … 00 _
_ 1100 ... 00
00 ... 00
11 ... 11
Rappresentazione binaria delle informazioni numeriche NUMERI INTERI (complemento a 2) con 32 bit -231 -231+1 -231+2 … … 0 1 … 231 -2 231 -1
Il bit più significativo ha “peso” negativo (-231) 10 ... 00 Gli altri bit hanno “peso” positivo (+20) 10 ... 01 21) 10 ... 10 … … 2 i) … 00 … 00 00 ... 01 … 01 ... 10 01 ... 11
Rappresentazione binaria delle informazioni numeriche NUMERI INTERI (complemento a 2) Come passare dalla notazione: con P bit con N bit a quella CP-1 CP-2 … CN CN-1 CN-2 … C1C0 CN-1 CN-2 … C1C0 • Ci =
{0,1}
•P >N
Rappresentazione binaria delle informazioni numeriche “PESO” DEGLI N BIT NEL COMPLEMENTO A DUE CN-1 CN-2 … C1C0
(Ci = {0,1})
= CN-1·(-2N-1) + CN-2 ·2N-2 + … + C1 ·21 + C0 ·20 • se CN-1= 0 il numero è positivo • se CN-1= 1 il numero è negativo vediamo separatamente i due casi …
Rappresentazione binaria delle informazioni numeriche • caso dei numeri positivi (CN-1= 0) con N bit: 0CN-2 …C1C0
= 0 · (-2N-1)+CN-2· 2N-2+…+C1· 21+C0· 20
{1}
aggiungendo (P - N) termini nulli alla {1}, il valore non cambia:
= 0 · (-2P-1)+0 · 2P-2+…+0 · 2N-1+CN-2· 2N-2+ …+C1· 21+C0· 20 notazione posizionale con P bit: 000…0CN-2 … C1C0
Rappresentazione binaria delle informazioni numeriche • caso dei numeri negativi (CN-1= 1) con N bit: 1CN-2 …C1C0
= 1·(-2N-1)+CN-2·2N-2+…+C1·21+C0·20
{1}
11…111… + 1 = 100…000…
(P > N) 2P-1 = 2P-2+2P-3 +…+2N+1 +2N +2N-1 +2N-1 -2P-1+2P-2+2P-3 +…+2N+1 +2N +2N-1 +2N-1 = 0 aggiungendo questa somma (= 0) alla {1}, il valore non cambia: = -2P-1+2P-2+2P-3 +…+ 2N-1+CN-2·2N-2+…+C1·21+C0·20 notazione posizionale con P bit: 111…11CN-2 … C1C0
Rappresentazione binaria delle informazioni numeriche NUMERI INTERI (complemento a 2) Per passare dalla notazione: con P bit con N bit a quella S S … S CN-1 CN-2 … C1C0 S CN-2 … C1C0
si estende verso sinistra il bit di segno
Testo di rif.to: [Congiu] - 1.2 (pg. 17–22)
Rappresentazione delle informazioni -1.h
Testi Immagini Suoni Video
Testi: lo standard ASCII
1
American Standard Code for Information Interchange
13
7 bit, 27 = 128 simboli diversi: • (a… z A…Z 0 … 9 ! ? , . ; : @ # $ …) • alcuni codici di controllo, per controllare la visualizzazione di un testo (capo riga, salto di pagina, …) o la sua trasmissione (XON, XOFF, …) I 7 bit sono memorizzati e trasmessi in un byte. Il bit in più può essere usato come bit di parità per rilevare eventuali errori di trasmissione. Architettura degli Elaboratori
• Codifica ASCII estesa ● 256 simboli; i 128 aggiuntivi rappresentano caratteri 13 di alfabeti nazionali (à, è, ô, …) e altro (½, ƒ, ®, …) ● Sviluppate varie estensioni tra loro incompatibili • Standard ISO/IEC 8859 (a 8 bit): varie tabelle compatibili ASCII per soddisfare le esigenze di varie lingue nazionali. • Standard UNICODE (a 16 bit): 216 = 65536 simboli per rappresentare i caratteri di tutte le principali lingue scritte del mondo. Architettura degli Elaboratori
Dal latino rastrum (“rastrello”): sottolinea come l’immagine sia costituita da una griglia di punti. I punti sono detti pixel (“PICture Elements”).
13
Il numero di bit usati per rappresentare un pixel definisce il tipo di immagine • 1 bit/pixel: bianco e nero • 8 bit/pixel: scala di grigi, a colori con palette • 24 bit/pixel: 16’777’216 colori (“true color”) Esempi di standard: • BMP • PNG Formati compressi (vediamo che significa) • JPEG Architettura degli Elaboratori
La qualità di un’immagine raster aumenta con il numero di pixel che la compongono
13
Anche l’occupazione in byte, però, aumenta! • Immagine 640x480, 24 bit/pixel: 900 KiB • Immagine 3648x2736, 24 bit/pixel: 29241 KiB (32x) Per ovviare al fenomeno si adotta la compressione Architettura degli Elaboratori
• Compressione senza perdite (lossless) ● Preserva interamente l’informazione originaria ● Fattore di compressione: 2 (tipico) ● Esempi: PNG (immagini), ZIP (documenti generici)
13
• Compressione con perdita (lossy) ● Scarta alcune informazioni, valutate meno rilevanti ● Il documento originale non può essere ricostruito fedelmente. ● Fattore di compressione: 20 o più ● Esempi: JPEG (immagini), MP3 (suoni) Architettura degli Elaboratori
Il suono (vibrazione dell’aria) tramite un trasduttore (microfono) viene trasformato in un segnale elettrico analogico (tensione elettrica che varia nel tempo in modo analogo al suono)
13
2. Tramite un convertitore analogico/digitale (A/D) il segnale analogico viene discretizzato • nel TEMPO, raccogliendone campioni a una frequenza prestabilita • nello SPAZIO, codificando ciascun A/D campione con un numero finito di bit La sequenza dei campioni codificati è la rappresentazione digitale del suono. Architettura degli Elaboratori
Il suono sonoro può essere ricostruito con la trasformazione inversa suono
D/A segnale elettrico
valori digitali
13
trasduttore
La rappresentazione è tanto più fedele quanto maggiori sono •la frequenza di campionamento (per riprodurre fedelmente un suono a frequenza f bisogna campionare a frequenza almeno 2f) •il numero N di bit dei campioni (rapp. segnale/rumore) Architettura degli Elaboratori
Frequenza di campionamento: 44100 Hz (la massima frequenza udibile è ~20KHz).
13
16 bit per campione. Suono stereofonico: 2 canali.
Una canzone di 3 minuti occupa ~31’000 KiB! Anche per i suoni è importante la compressione. Esempio: 3 minuti di suono compresso (lossy) in MP3 a 128 Kbit/s occupano ~3’000 KiB. Architettura degli Elaboratori
Un video è una sequenza di immagini (“frame”) •Cinema: 24 frame al secondo (fps) •TV, standard europeo PAL: 25 fps •TV standard USA NTSC: 30 fps
13
La compressione è fondamentale: •Un minuto di film alla risoluzione di 640x480 (true color) occupa 1’296’000 KiB (~1.2 GiB). •Un minuto di video ad alta definizione 1080p30 (1920x1080) occupa 10’935’000 KiB (~10.4 GiB) Architettura degli Elaboratori
La maggior parte dei formati sono lossy. Vengono ereditate le tecniche per le immagini, inoltre si effettua anche una compressione lungo l’asse del tempo (predizione del moto, eccetera).
13
Standard più diffuso: MPEG • MPEG-2: DVD, digitale satellitare e terrestre • MPEG-4 AVC (detto anche H.264): Blu-ray Disc Esempi di altri standard: •FLV (Macromedia/Adobe) •DiVX (DivX, Incorporated) •Windows Media Video (Microsoft) Architettura degli Elaboratori
Definizione di porta logica; porta NOT Una porta logica è un dispositivo con N ingressi ed 1 uscita, che realizza un legame tra il valore presente all’uscita e quelli presenti agli ingressi, esprimibile con una funzione logica elementare
3
24
Primo esempio di porta logica: la porta NOT
Produce in uscita un valore logico opposto a quello presente all’ingresso. Chiaramente N=1. Architettura degli Elaboratori
Porte logiche AND e OR La porta AND fa assumere all’uscita il valore logico 1 se e solo se tutti gli ingressi si trovano ad avere il valore 1
La funzione realizzata da una porta logica può essere ottenuta mediante opportune sequenze di altre porte logiche. Ad esempio, le porte NOR/NAND possono essere ottenute mediante una porta OR/AND e una NOT collegate in sequenza
Un secondo modo di rappresentare una rete logica è mediante la sua tabella di verità, che specifica il valore dell’uscita per ciascuna possibile combinazione dei valori in ingresso.
Un esempio più complesso è dato dalla rete logica che realizza la funzione di OR esclusivo: l’uscita Y assume il valore 1 se e solo se ai 2 ingressi sono presenti valori logici diversi A 0 0 1 1
A controlla se in uscita “passa” il valore di B, oppure no.
Ma Y=0 è un valore di A “passato” attraverso la porta “aperta”, oppure è dovuto alla porta chiusa? L’ambiguità si risolve con il buffer tri-state. Architettura degli Elaboratori
Il buffer tri-state è un dispositivo in cui il valore logico dell’uscita Y è non vincolato (n.v.) quando l’ingresso di controllo assume il valore logico 0
24
Quando l’uscita Y è non vincolata, il suo valore dipende dalle altre porte a cui è collegata Architettura degli Elaboratori
Collegam. wired OR di buffer tri-state Le uscite delle porte tri-state possono essere collegate tra loro purché al più una di esse sia vincolata ad un valore logico (0 oppure 1). Viene realizzato l’OR delle uscite senza l’effettiva presenza di una porta OR (“wired OR”).
L’uscita di una porta NAND open collector può assumere solo il valore logico 0: è dunque possibile attivare contemporaneamente più uscite di porte di questo tipo visto che i valori ad esse presenti non possono mai essere contrastanti.
24
Resistenza di pull-up
Lo schema qui sopra può essere usato per segnalare il verificarsi di un evento. Architettura degli Elaboratori
Un registro è un dispositivo in grado di memorizzare (cioè conservare nel tempo) un valore logico. Tale capacità distingue i registri dalle porte logiche.
Un bus è un collegamento elettrico tra parti diverse di un elaboratore che consente il trasferimento di informazione. Un bus è composto da una o più linee; ogni linea consente di trasferire un bit.
24
Per rappresentare un bus di n bit si usano i seguenti simboli grafici:
r1=1: il valore presente in R1 viene trasferito sul bus w2=1: il valore sul bus viene memorizzato in R2 Diagramma temporale dei segnali di controllo: r1 w2 Architettura degli Elaboratori
• 4 bit: “nibble” (o nybble) • 8 bit: “byte” • 16 bit: “half-word” • 32 bit: “word” • 64 bit: “double-word” La definizione di “word” dipende comunque dalla taglia della parola di memoria della macchina che si sta considerando (ne parleremo meglio più avanti). Architettura degli Elaboratori
• C=0: a ciascun impulso ( ) di S, un bit del registro di sx viene trasferito al registro di dx • C=1: a ciascun impulso di S, un bit del registro di sx - viene trasferito al registro di dx - e viene riportato all’ingresso del registro di sx stesso (dopo quattro impulsi di S nel registro di dx è stata trasferita copia del contenuto del registro di sx) Architettura degli Elaboratori
Testo di riferimento: [Congiu] - 2.4 (pagg. 37–57)
Reti Logiche Combinatorie 00.b
Analisi Minimizzazione booleana Sintesi
Rete logica combinatoria: definizione Una rete logica combinatoria è una rete logica nella quale, in ogni istante, i valori presenti alle uscite sono determinati unicamente dai valori presenti agli ingressi nel medesimo istante.
2
34
Una rete logica combinatoria è quindi • priva di stato (non contiene elementi di memoria); • interamente descritta dalla sua tabella di verità Architettura degli Elaboratori
Quanto abbiamo visto per le porte logiche vale in generale per le reti logiche. In altre parole, sono tra loro equivalenti le tre rappresentazioni…
34
• …mediante uno schema grafico • …mediante una tabella di verità • …mediante una espressione algebrica Sceglieremo in ciascun caso la rappresentazione più opportuna per quel caso. Architettura degli Elaboratori
L’analisi delle proprietà delle espressioni algebriche costruite da variabili binarie e operatori logici, si deve al matematico G. Boole (1815-1864), ed è nota come algebra booleana.
S = B•(A•B) + A•(A•B) Architettura degli Elaboratori
Minimizzazione: Mappe di Karnaugh (1/7) Tra le proprietà dell’algebra di Boole, le seguenti consentono di semplificare notevolmente le espressioni booleane:
21
34
A•B + A•B = A•(B + B) = A A•(B•C + B•C + B•C + B•C) = A Le mappe di Karnaugh sono una particolare forma di tabella di verità, che consente di individuare immediatamente la possibilità di fare queste semplificazioni.
Ad esempio, la seguente tabella di verità della funzione Y=Y(A,B,C) A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
Y 0 0 0 1 0 1 1 1
A B
0 0
0 1
1 1
1 0
0
0
0
1
0
1
0
1
1
1
può essere ridisegnata così: C
34
Mappa di Karnaugh della funzione Y
Nelle mappe di K. i valori della funzione sono scritti dentro le caselle. Dalla tabella di verità o dalla mappa di Karnaugh è immediato ottenere l’espressione booleana della funzione Y come “somma” di “prodotti”, cioè come OR di tanti termini AND quante sono le caselle in cui la funzione vale 1; ciascuno di questi termini AND (detti minterm) è costituito dall’AND delle variabili di ingresso, negate oppure no a seconda che il valore della variabile associato a quella casella sia 0 oppure 1: Y = A•B•C + A•B•C + A•B•C + A•B•C
Nel caso di funzioni di 4 variabili, ad es. Z=Z(A,B,C,D), la mappa di Karnaugh ha 4 righe e quattro colonne: A0 CD B 0
0 1
1 1
1 0
00
0
0
1
0
01
1
0
1
1
11
1
1
1
1
10
1
1
1
0
34
Mappa di Karnaugh della funzione Z
I valori delle variabili A,B,C,D individuano le “coordinate” delle caselle: le coppie di valori di A e B (di C e D) associate alle colonne (alle righe) sono ordinate in modo che tra due caselle adiacenti (della medesima riga o della medesima colonna) cambi il valore di una sola delle variabili, mentre quello di tutte le altre rimane lo stesso; ciò vale anche tra le caselle estreme di ciascuna riga e di ciascuna colonna (che possono quindi essere considerate “adiacenti”, in senso circolare). Architettura degli Elaboratori
Minimizzazione: Mappe di Karnaugh (4/7) In questo modo a ciascuna coppia di caselle adiacenti contrassegnate con il valore 1 corrispondono, nella espressione booleana, due termini “prodotto” (minterm) nei quali una variabile è presente negata in uno e non negata nell’altro, mentre tutte le altre variabili hanno lo stesso valore.
24
34
E` allora possibile semplificare l’espressione sostituendo quei due termini con un unico termine nel quale non è più presente la variabile che cambia valore. Ad esempio le ultime due caselle della seconda riga nella mappa della funzione Y portano alla seguente semplificazione: A•B•C + A•B•C = A•C
Minimizzazione: Mappe di Karnaugh (5/7) Allo stesso modo, quaterne di caselle adiacenti tutte con il valore 1 (sulla stessa riga o sulla stessa colonna) corrispondono a quattro termini che si riducono ad uno; ad esempio le quattro caselle della terza riga nella mappa della funzione Z portano alla seguente semplificazione:
Minimizzazione: Mappe di Karnaugh (6/7) Per semplificare l’espressione di una funzione, si individuano, nella mappa di K., i gruppi di (2 o 4 o 8) caselle adiacenti con il valore 1. Spesso conviene sfruttare la proprietà A+A=A, che consente di utilizzare più volte la stessa casella (lo stesso minterm), per formare gruppi diversi e ottenere il maggior numero di semplificazioni possibile. Individuando un insieme di gruppi (da 1, 2, 4 o 8) che copra tutte le caselle in cui compare il valore 1, si ottiene una espressione semplificata, costituita dall’OR dei termini corrispondenti a ciascun gruppo.
26
34
Ad es. per la funzione Z, si possono individuare i gruppi segnati in figura: A0 CD B 0
0 1
1 1
1 0
00
0
0
1
0
01
1
0
1
1
11
1
1
1
1
10
1
1
1
0
A•C
A•B
B•D
Si ottiene, immediatamente, l’espressione semplificata: Z=A•C+A•B+B•D Architettura degli Elaboratori
Funzioni booleane parzialmente definite: il loro valore è specificato solo per alcune combinazioni dei valori delle variabili. Le altre combinazioni o non si verificano mai o il valore della funzione non interessa: don’t care conditions (d.c.c.).
34
In una mappa di K. è spesso utile inserire un valore 1 al posto di d.c.c. (per formare ulteriori raggruppamenti). Es. Funzione parzialmente definita W (i trattini individuano d.c.c.): A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
W 1 1 0
C
Si possono sostituire due d.c.c. con altrettanti 1:
Minimizzazione booleana tramite Mappe di Karnaugh Tra le proprietà dell’algebra di Boole, le seguenti consentono di semplificare notevolmente le espressioni booleane: A•B + A•B = A•(B + B) = A A•(B•C + B•C + B•C + B•C) = A Le mappe di Karnaugh sono una particolare forma di tabella di verità, che consente di individuare immediatamente la possibilità di fare queste semplificazioni. Ad esempio, la seguente tabella di verità della funzione Y = Y(A,B,C) A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
Y 0 0 0 1 0 1 1 1
può essere ridisegnata così:
A 0 B 0 C 0 0
0 1
1 1
1 0
0
1
0
0
1
1
1
1
Mappa di Karnaugh della funzione Y
Dalla tabella di verità o dalla mappa di Karnaugh è immediato ottenere l’espressione booleana della funzione Y come “somma” di “prodotti”, cioè come OR di tanti termini AND quante sono le caselle in cui la funzione vale 1; ciascuno di questi termini AND (detti minterm) è costituito dall’AND delle variabili di ingresso, negate oppure no a seconda che il valore della variabile associato a quella casella sia 0 oppure 1. Y = A•B•C + A•B•C + A•B•C + A•B•C Nel caso di funzioni di 4 variabili, ad es. Z = Z(A,B,C,D), la mappa di Karnaugh ha 4 righe e quattro colonne: A0 CD B 0
0 1
1 1
1 0
00
0
0
1
0
01
1
0
1
1
11
1
1
1
1
10
1
1
1
0
Mappa di Karnaugh della funzione Z Nelle mappe di Karnaugh i valori della funzione Y sono scritti dentro le caselle. I valori delle variabili A,B,C,D sono indicati come “coordinate” delle caselle. Esaminando queste “coordinate, si constata che le coppie di valori di A e B (di C e D) associate alle colonne (alle righe) sono ordinate in modo che tra due caselle adiacenti (della medesima riga o della medesima colonna) cambia il valore di una sola delle variabili, mentre quello di tutte le altre rimane lo stesso; questa proprietà vale anche tra le caselle estreme di ciascuna riga e di ciascuna colonna (che, sotto questo aspetto, possono quindi essere considerate “adiacenti”, in senso circolare).
1
Si osserva che, in virtù di questo fatto, a ciascuna coppia di caselle adiacenti contrassegnate con il valore 1 corrispondono, nella espressione booleana, due termini “prodotto” (minterm) nei quali una variabile è presente negata in uno e non negata nell’altro, mentre tutte le altre variabili hanno lo stesso valore. E` allora possibile semplificare l’espressione sostituendo quei due termini con un unico termine nel quale non è più presente la variabile che cambia valore. Ad esempio le ultime due caselle della seconda riga nella mappa della funzione Y portano alla seguente semplificazione: A•B•C + A•B•C = A•C Allo stesso modo, quaterne di caselle adiacenti tutte con il valore 1 (sulla stessa riga o sulla stessa colonna) corrispondono a quattro termini che si riducono ad uno; ad esempio le quattro caselle della terza riga nella mappa della funzione Z portano alla seguente semplificazione: C•D•(A•B + A•B + A•B + A•B) = C•D le quattro caselle della terza colonna nella mappa della funzione Z portano alla seguente semplificazione: A•B•(C•D + C•D + C•D + C•D) = A•B Così pure quaterne adiacenti disposte secondo un quadrato producono un unico termine; ad esempio le quattro caselle in basso a sinistra nella mappa della funzione Z portano alla seguente semplificazione: A•C•(B•D + B•D + B•D + B•D) = A•C Analogo discorso vale per gruppi di otto caselle adiacenti tutte con il valore 1. Per semplificare l’espressione booleana di una funzione, si tratta dunque di individuare, nella relativa mappa di Karnaugh, i gruppi di (2 o 4 o 8) caselle adiacenti con il valore 1. Nel far ciò conviene tenere presente la proprietà A+A=A, che consente di utilizzare più volte la stessa casella (ovvero più volte lo stesso minterm nell’espressione booleana), per formare gruppi diversi, al fine di operare il maggior numero di semplificazioni possibile. Individuando un insieme di gruppi (da 1, 2, 4 o 8) che copre tutte le caselle in cui compare il valore 1, si ottiene una espressione semplificata, costituita dall’OR dei termini corrispondenti a ciascun gruppo. Riprendendo l’esempio della funzione Z, si possono individuare i gruppi segnati in figura: A0 CD B 0
0 1
1 1
1 0
00
0
0
1
0
01
1
0
1
1
11
1
1
1
1
10
1
1
1
0
A•C
A•B
B• D
Con questi raggruppamenti si ottiene, immediatamente, l’espressione semplificata di Z: Z = A • C + A• B + B• D Nell’esempio si può osservare che si sono considerate adiacenti anche le caselle estreme delle righe o delle colonne. Si osserva che si possono individuare diversi raggruppamenti che coprono tutte le caselle in cui Z vale 1, ciascuno dei quali porta a diverse espressioni di Z equivalenti (più o meno semplificate). 2
Funzioni booleane parzialmente definite Una funzione booleana si dice parzialmente definita se il suo valore è specificato solo per alcune combinazioni dei valori delle variabili. Nella pratica si ha a che fare con funzioni booleane parzialmente definite in due casi: o quando le altre combinazioni dei valori delle variabili non si possono verificare mai, oppure quando, anche se si verificano, i corrispondenti valori della funzione non importano (possono essere indifferentemente 0 od 1, perché comunque non vengono usati). Nella tabella di verità (o nella mappa di Karnaugh) di una funzione parzialmente definita, i valori non specificati sono comunemente indicati con un trattino e corrispondono a ciò che si chiama “condizioni di indifferenza”, ovvero don’t care conditions (d.c.c.). La presenza delle d.c.c. nelle caselle di una mappa di Karnaugh può essere convenientemente sfruttata, sostituendone alcune con il valore 1, al fine di ottenere gruppi (da 2, 4, 8) che portano a semplificare l’espressione della funzione. Ad esempio, considerando la funzione parzialmente definita W la cui tabella di verità è riportata qui sotto insieme con la relativa mappa di Karnaugh: A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
W 1 1 0
Si possono sostituire due d.c.c. con altrettanti 1:
A 0 B 0
0 1
1 1
1 0
0
-
-
-
1
1
1
-
0
-
A 0 B 0
0 1
1 1
1 0
0
1
-
-
1
1
1
-
0
1
C
C
e individuare la quaterna che consente di ottenere la seguente espressione semplificata di W: W = B
3
Sintesi di un encoder Si ricorda che il funzionamento di un encoder è basato sull’ipotesi che, in ogni istante, una e una sola delle variabili di ingresso abbia il valore 1. Si consideri il caso dell’encoder con 4 ingressi e due uscite: X0 X1 X2
ENC 4/2
Y0 Y1
X3 Le due funzioni d’uscita Y0 ed Y1 sono, dunque, parzialmente definite perché le combinazioni di valori delle variabili d’ingresso diverse da quelle in cui vi è un solo valore uguale ad 1 non si possono presentare mai (la rete logica a monte sarà tale da produrre valori di Xi che soddisfano questa ipotesi). Delle 16 righe della tabella di verità sono significative solo le 4 nelle quali Y0 ed Y1 sono definite: X0
X1
X2
X3
Y1
Y0
1
0
0
0
0
0
0
1
0
0
0
1
0
0
1
0
1
0
0
0
0
1
1
1
.
.
.
.
-
-
La corrispondente mappa di Karnaugh per la funzione Y0 è: X0 0 X2 X3 X1 0
0 1
1 1
1 0
0 0
-
1
-
0
0 1
1
-
-
-
1 1
-
-
-
-
1 0
0
-
-
-
Sfruttando le condizioni di indifferenza (d.c.c.) presenti in questa mappa, si possono disegnare i due raggruppamenti da 8 caselle indicati in figura: X0 0 X2 X3 X1 0
0 1
1 1
1 0
0 0
-
1
-
0
0 1
1
-
-
-
1 1
-
-
-
-
1 0
0
-
-
-
E ottenere l’espressione semplificata: Y0 = X1 + X3 Analogamente si può ottenere:
Y1 = X2 + X3 4
C -1
Approfondimento su binary adder: adder: Carry Look Ahead
* * !') !') C -1 A0 B0
'
A1 B1
'
A2 B2 A3 B3
S0
S1
S2
'
C2 S3
'
(S’)
gi= Ai•Bi
(C’)
+ C -1
C i = g i + p i • C i-1
C0
C1
pi= Ai Bi
C 0 = g 0 + p 0 • C –1 C1= g1+ p1•C0 = g 1 + p 1 • g 0 + p 1 • p 0 • C –1
A0 B0
'
A1 B1
'
C2= g2+ p2•C1 = g 2 + p 2 • g 1 + p 2 • p 1 • g 0 + p 2 • p 1 • p 0 • C –1
A2 B2
'
C 3 = g3 + p3 • C 2 = g3 + p3 • g 2 + p3 • p 2 • g 1 + p3 • p 2 • p 1 • g 0 + + p3 • p 2 • p 1 • p 0 • C –1
A3 B3
'
C3
A1 B1 A2 B2 A3 B3
'
S0
'
S1
C1
'
S2
C2
'
S3
C1
C2
Sia τ il tempo di propagazione attraverso una porta S 2 OR, AND, XOR: • gi e pi si ottengono (da A i e B i) in un tempo τ, • per ottenere Ci servono altri 2 τ: uno per le AND e uno per le OR; in tutto 3τ a partire da A i e B i. S 3 • per sveltire il calcolo si possono ottenere i riporti Ci con una rete combinatoria apposita:
CLA (Carry Look-Ahead)
*
ponendo: G0 = g3 + p3 • g 2 + p3 • p 2 • g 1 + p3 • p 2 • p 1 • g 0 P0 = p3 • p 2 • p 1 • p 0
-' !
si può scrivere: C3 = G0 + P0 • C –1
C2
è allora possibile iterare il metodo di CLA, applicandolo a 4 4-bit adder.
g3 p3
C3
C1
g2 p2
C i = g i + p i • C i-1
S1
Vediamo come: C3 = g3 + p3 • g 2 + p3 • p 2 • g 1 + p3 • p 2 • p 1 • g 0 + p3 • p 2 • p 1 • p 0 • C –1
C0
g1 p1
(S’) (C’)
Per operandi con più di 4 bit, la rete CLA diventa troppo complessa: conviene usare due livelli di CLA
g0 p0
C0
pi= Ai Bi gi= Ai•Bi
/ / !' -.'
C -1
A0 B0
S0 C0
C3
"
* * !' -.'
C 3 = g3 + p3 • g 2 + p3 • p 2 • g 1 + p3 • p 2 • p 1 • g 0 + p3 • p 2 • p 1 • p 0 • C –1
C3 ,
/
/ / !' -.' Per operandi con più di 4 bit, la rete CLA diventa troppo complessa: conviene usare due livelli di CLA
C -1 A 0 ..A 3 B 0 ..B 3 A 4 ..A 7 B 4 ..B 7 A 8 ..A 11 B 8 ..B 11 A 12 ..A 15 B 12 ..B 15
'
S 0 ..S 3
'
S 4..S 7
'
S 8..S 11
'
S 12 ..S 15
-'
C3
P0
-'
C7
-'
C 15
C3
G1 P1
-'
C 11
G0
G2 P2
C7
-'
(2°livello)
C 11
G3 P3
C 15 0
Testo di riferimento: [Congiu] - 2.5 (pagg. 57–76)
Reti Logiche Sequenziali 00.d
Latch e flip-flop Sintesi Reti sincrone
Rete logica sequenziale: definizione Una rete logica sequenziale è una rete logica nella quale i valori presenti alle uscite sono determinati dai valori presenti agli ingressi e dal valore dello stato in cui si trova il sistema.
2
33
Una rete logica sequenziale: • contiene elementi di memoria • è descritta da una tabella di verità che contiene anche lo stato del sistema Architettura degli Elaboratori
Shift register con flip-flop Master-Slave La proprietà di disaccoppiare gli ingressi dalle uscite, consentita dai flip-flop di tipo Master-Slave, risulta utile nella costruzione di registri a scorrimento.
Un’altra configurazione di flip-flop di tipo Master-Slave è quella del flip-flop J-K. Il funzionamento si distingue dal latch J-K per: - la commutazione sui fronti di discesa anziché sul livello - il disaccoppiamento uscita/ingresso tipico della configurazione Master-Slave Architettura degli Elaboratori
Se eliminiamo gli ingressi J e K da un flip-flop J-K si ottiene un flip-flop T sensibile ai fronti di discesa. L’uscita oscilla tra 0 ed 1 commutando in corrispondenza dei fronti di discesa.
Q 0 0 1 1
T 0 1 0 1
Q’ 1 0 0 1
T 0
T 1 Q=0
33
T 1 Q=1
T 0
tabella delle transizioni Architettura degli Elaboratori
Lo stato del sistema è contenuto in elementi di memoria: per Z stati servono P= log2Z bit di memoria. Ad ogni istante, una rete combinatoria fornisce le uscite e il nuovo valore dello stato in funzione degli ingressi. Architettura degli Elaboratori
Una “oculata” scelta delle variabili di stato riduce la complessità della parte combinatoria, ma non ci sono regole generali da seguire.
33
Per la sintesi della rete combinatoria si applicano le tecniche già illustrate in precedenza. Spesso la rete viene realizzata in due parti separate, secondo uno dei due modelli seguenti: • modello della macchina di Mealy (1955); • modello della macchina di Moore (1956). I due modelli sono funzionalmente equivalenti. Architettura degli Elaboratori
• Rete combinatoria C1: fornisce le uscite in funzione degli ingressi e dello stato. • Rete combinatoria C2: fornisce il nuovo stato in funzione degli ingressi e del vecchio stato (= stato all’istante precedente). Architettura degli Elaboratori
• Rete combinatoria C2’: fornisce le uscite in funzione del solo stato. • Rete combinatoria C1’: fornisce il nuovo stato in funzione degli ingressi e del vecchio stato. Architettura degli Elaboratori
1.Rete generica: (M+P)•2N+P bit di ROM; 2.Mealy: M•2N+P + P•2N+P = (M+P)•2N+P bit (come sopra); 3.Moore: P•2N+P + M•2P bit (sembra minore, ma il numero di stati P è in genere maggiore). Architettura degli Elaboratori
Un interruttore i, due lampadine l1 e l2. Assegnazione degli stati logici all’interruttore e alle lampadine: • 0 = interruttore aperto, 1 = interruttore chiuso (premuto); • 0 = lampadina spenta, 1 = lampadina accesa.
33
Specifica di funzionamento • Interruttore aperto (X=0): le lampadine sono entrambe spente (Y1=Y2=0). • Interruttore chiuso (X=1): si accende a turno una delle due lampadine. Architettura degli Elaboratori
Specifica di funzionamento • Interruttore aperto (X=0): le lampadine sono entrambe spente (Y1=Y2=0). • Interruttore chiuso (X=1): si accende a turno una delle due lampadine. Architettura degli Elaboratori
Nelle reti logiche reali i tempi di propagazione sono non nulli: questo può essere uno svantaggio, ma consente anche di operare simultaneamente i diversi passi di una catena di elaborazioni:
Automa a stati finiti: definizione Un automa a stati finiti deterministico (DFA – Deterministic Finite Automaton) è una quintupla (Q, , , qi, F) dove: • Q è un insieme finito di k 2 stati {q0, q1, … qk-1} • è un alfabeto finito di l 1 simboli d’ingresso {s0, s1, …, sl-1} • è la funzione di transizione di stato : Qx Q (q, s) è lo stato ‘futuro’ in cui l’automa si porterà se, a partire dallo stato q, il simbolo di ingresso è s • qi Q è lo stato iniziale • F Q è il sottoinsieme degli m 1 stati finali (di accettazione) F = {qf0, qf1, … qf(m-1)} Architettura degli Elaboratori
Una macchina di Mealy è una sestupla (Q, , , , , qi) dove Q, , , e qi hanno lo stesso significato del DFA, • è un alfabeto finito di n 1 simboli d’uscita {d0, d1, … dn-1} • è la funzione di uscita : Qx (q, s) è il valore dell’uscita che la macchina produrrà nella transizione dallo stato q con simbolo di ingresso s • La macchina ha generalmente un funzionamento continuativo e pertanto non vengono esplicitati stati finali (di accettazione; hanno più senso in altre applicazioni del DFA)
• Il valore dell’ingresso e la corrispondente uscita etichettano ogni transizione • Lo stato finale q4 diventa inutile: l’uscita a 1 si ha al ritorno allo stato iniziale Architettura degli Elaboratori
Una macchina di Moore è una sestupla (Q, , , , , qi) dove Q, , , , qi hanno lo stesso significato di quella di Mealy, • è la funzione di uscita :Q (q) è il valore dell’uscita quando la macchina si trova nello stato q • Si può dimostrare che data una macchina di Mealy (Moore) è possibile trovare una macchina di Moore (Mealy) equivalente nel comportamento ingresso/uscita •
Realizzare, sia in forma di macchina di Mealy che di Moore, il controllo di un ascensore di un edificio con piano terra e primo piano
•
L’ingresso è costituito dall’impostazione della tastiera (N=nessun tasto premuto, T=premuto tasto Terra, P=premuto tasto Primo piano) e dalla posizione corrente dell’ascensore (T=posizione di Terra, I=posizione intermedia tra i piani, P=posizione di Primo piano)
•
L’uscita è costituita dal comando da fornire al controllo dell’ascensore (F=fermo, A=verso l’alto, B=verso il basso)
•
Dopo aver progettato le macchine usando i simboli descritti sopra, si ipotizzi una codifica binaria per lo stato, gli ingressi e le uscite
•
In base a questa codifica si definiscano le funzioni di transizione di stato e d’uscita per le 2 macchine
Una rete logica combinatoria è una rete logica nella quale, in ogni istante, i valori presenti alle uscite sono determinati unicamente dai valori presenti agli ingressi nel medesimo istante. Una rete logica combinatoria è quindi • priva di stato (non contiene elementi di memoria); • interamente descritta dalla sua tabella di verità
Architettura degli Elaboratori martedì 29 marzo 2011
XOR Architettura degli Elaboratori martedì 29 marzo 2011
Reti logiche: rappresentazioni
Quanto abbiamo visto per le porte logiche vale in generale per le reti logiche. In altre parole, sono tra loro equivalenti le tre rappresentazioni… • …mediante uno schema grafico • …mediante una tabella di verità
L’analisi delle proprietà delle espressioni algebriche costruite da variabili binarie e operatori logici, si deve al matematico G. Boole (1815-1864), ed è nota come algebra booleana.
S = B•(A•B) + A•(A•B) Architettura degli Elaboratori martedì 29 marzo 2011
A·1 = A A+0 = A
A·0 = 0
A+1 = 1
A·A = A
A+A = A
A·A = 0
Algebra di Boole: proprietà (1 di 2) A
A=A A+A = 1
A+B = B+A
A·(B+C) = A·B+A·C
A·(B·C) = (A·B)·C
Proprietà commutativa, associativa e distributiva: A·B = B·A
A+(B+C) = (A+B)+C A+(B·C) = (A+B)·(A+C) Architettura degli Elaboratori
Utilizziamo l’algebra booleana e le sue proprietà per riscrivere S’ utilizzando solo porte NAND: S’ = A•B + A•B S’ = A•B • A•B S’ = (A•B+B•B) • (A•B+A•A) S’ = B•(A+B) • A•(A+B) S’ = B•(A•B) • A•(A•B)
Architettura degli Elaboratori martedì 29 marzo 2011
Half-adder con sole porte NAND S’ = B•(A•B) • A•(A•B) C’ = A•B
Architettura degli Elaboratori martedì 29 marzo 2011
Sintesi di reti combinatorie (4) • Rete combinatoria
– 1 a 1 con l’espressione principale ottenuta – realizzazione a due livelli AND-to-OR dalla forma normale canonica – progettata secondo obiettivi
• minimizzazione del costo • minimizzazione del tempo di propagazione • vincoli sugli elementi/componenti disponibili (porte elementari, circuiti integrati – MSI, LSI, VLSI)
martedì 29 marzo 2011
21
Tecniche di minimizzazione • Rete combinatoria
– rete a componenti discreti (porte elementari AND, OR, NOT, … – tecniche di minimizzazione con logica discreta
22
• disponibili tecniche sistematiche per la progettazione di reti a due livelli AND-to-OR (SOP) and OR-to-AND (POS) • N.B.: le reti a due livelli sono le più veloci in relazione alla realizzazione di una qualsiasi funzione
martedì 29 marzo 2011
Tecniche di minimizzazione (2) • Criteri di ottimalità - reti
– una rete a due livelli AND-to-OR è minimale se ha
• il numero minimo di porte AND, • tra tutte le reti che hanno numero minimo di porte AND, ha il minimo numero di ingressi alle porte AND
– una rete a due livelli OR-to-AND è minimale se ha
23
• il numero minimo di porte OR, • tra tutte le reti che hanno numero minimo di porte OR, ha il minimo numero di ingressi alle porte OR
martedì 29 marzo 2011
Tecniche di minimizzazione (4) • Criteri di ottimalità - esempio – espressioni
24
• le due espressioni sono equivalenti; il numero di prodotti si riduce; nel caso specifico viene rimossa anche l’operazione di somma
– reti
martedì 29 marzo 2011
Tecniche di minimizzazione (5) • Minimizzazione
– due minterm sono adiacenti quando differiscono in esattamente una variabile – due termini prodotto (non obbligatoriamente minterm) sono adiacenti quando differiscono in esattamente una variabile – l’adiacenza consente di accoppiare i termini, eliminando la variabile di differenziazione, usando distributività e complementarietà
• Tecniche di minimizzazione
– riconoscere ed accoppiare opportunamente i termini adiacenti
martedì 29 marzo 2011
25
Tecniche di minimizzazione (6) • Tecniche di minimizzazione
– riconoscere ed accoppiare opportunamente i termini adiacenti
• metodo algebrico • metodi grafici (mappe; valido fino a 4 variabili) • metodi tabulari
martedì 29 marzo 2011
26
Mappe di Karnaugh (3) • Riorganizzazione tabella di verità – Mappe di Karnaugh
1100
1001
1000
10
0100
1101
1011
00
0000
0101
1111
1010
0
0001
0111
1110
11
0011
0110
01
0010
1
000
011
010
111
110
101
100
27
001
• commutazioni delle variabili indipendenti (etichettatura regioni)
Variabili più significative Variabili meno significative
martedì 29 marzo 2011
Minimizzazione: Mappe di Karnaugh (1/7)
Tra le proprietà dell’algebra di Boole, le seguenti consentono di semplificare notevolmente le espressioni booleane: A•B + A•B = A•(B + B) = A A•(B•C + B•C + B•C + B•C) = A
Le mappe di Karnaugh sono una particolare forma di tabella di verità, che consente di individuare immediatamente la possibilità di fare queste semplificazioni.
Architettura degli Elaboratori martedì 29 marzo 2011
– dimensione inversamente proporzionale al numero di letterali presenti nei termini prodotto – ogni letterale implica un’intersezione – anche un prodotto di 1 solo letterale è un cubo (3-cubo) – Un k-cubo contiene 2k quadrati
Condizioni “Don’t care” • Condizioni don’t care (indifferenti o non specificate)
37
• combinazioni di ingressi che non si verificano mai (per esempio ingressi BCD, per i quali alcune combinazioni non sono consentite non essendo rappresentative di nessuna cifra tra 0 e 9) • uscita il cui valore è indifferente in determinate combinazioni degli ingressi
– In talune situazioni il valore dell’uscita di una rete (il valore della funzione booleana desiderata) può essere liberamente scelto (0 o 1) per alcune combinazioni degli ingressi
martedì 29 marzo 2011
Condizioni “Don’t care” (2)
38
• Il grado di libertà consentito dalle condizioni “Don’t care” viene utilizzato per minimizzare l’espressione • Notazione
– simbolo don’t care: δ – funzioni obiettivo con condizioni don’t care:
martedì 29 marzo 2011
Minimizzazione: Mappe di Karnaugh (7/7)
Architettura degli Elaboratori martedì 29 marzo 2011
– Sia dato un ingresso corrispondente ad una cifra decimale codificata in BCD; scrivere una funzione di commutazione per determinare se la cifra è dispari (uscita = 1), e progettare una rete che realizzi la funzione.
martedì 29 marzo 2011
f3
f1
f0
f6
f7
f5
f4
f14
f15
f13
f12
f10
f11
f9
f8
0
1
1
0
0
1
1
0
δ
δ
δ
δ
δ
δ
1
0
=
=
=
=
=
9
8
7
6
5
4
3
2
1
0
D
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
x4
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
x3
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
x2
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
x1
δ
δ
δ
δ
δ
δ
1
0
1
0
1
0
1
0
1
0
f
41
=
Condizioni “Don’t care” (4) • Esempio
f2
martedì 29 marzo 2011
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
0
0
0
δ=0
δ=1
δ=1
δ=0
0
0
1
0
δ=0
δ=1
1
0
42
0
Condizioni “Don’t care” (5) • Minimizzazione SOP – don’t care
– Se mettiamo tutti i δ a 0
martedì 29 marzo 2011
Encoder
1 1
0 1
0 0
0
-
1
-
X0 0 X2 X3 X1 0
-
-
-
1
0 1
-
-
-
-
1 1
-
-
-
0
1 0
Y0
1 0
Y0 = X1 + X3
Analogamente: Y1 = X2 + X3
Architettura degli Elaboratori martedì 29 marzo 2011
Valori logici: convenzione I valori logici sono 2. Per indicarli useremo i nomi:
1 VERO ALTO +5 V
0 FALSO BASSO 0 V
I nomi in ciascuna colonna sono equivalenti. I nomi sono solo una convenzione! martedì 29 marzo 2011
22
24
Definizione di porta logica; porta NOT
Una porta logica è un dispositivo con N ingressi ed 1 uscita, che realizza un legame tra il valore presente all’uscita e quelli presenti agli ingressi, esprimibile con una funzione logica elementare
Primo esempio di porta logica: la porta NOT
Produce in uscita un valore logico opposto a quello presente all’ingresso. Chiaramente N=1. martedì 29 marzo 2011
33
24
Porte logiche AND e OR La porta AND fa assumere all’uscita il valore logico 1 se e solo se tutti gli ingressi si trovano ad avere il valore 1
La porta OR fa assumere all’uscita il valore logico 1 se ad almeno uno degli ingressi è presente un valore logico 1
martedì 29 marzo 2011
44
24
Porte logiche NAND e NOR La porta NAND fa assumere all’uscita il valore logico 0 se e solo se tutti gli ingressi si trovano ad avere il valore 1
La porta NOR fa assumere all’uscita il valore logico 0 se ad almeno uno degli ingressi è presente un valore logico 1
martedì 29 marzo 2011
55
24
Equivalenze tra porte logiche (1 di 3)
La funzione realizzata da una porta logica può essere ottenuta mediante opportune sequenze di altre porte logiche. Ad esempio, le porte NOR/NAND possono essere ottenute mediante una porta OR/AND e una NOT collegate in sequenza
martedì 29 marzo 2011
66
24
Equivalenze tra porte logiche (2 di 3)
Ogni funzione logica può essere ottenuta impiegando solo porte OR e NOT
Ogni funzione logica può essere ottenuta impiegando solo porte AND e NOT
martedì 29 marzo 2011
77
24
Equivalenze tra porte logiche (3 di 3)
Ogni funzione logica può essere ottenuta impiegando solo porte NAND
Ogni funzione logica può essere ottenuta impiegando solo porte NOR (provarlo per esercizio) martedì 29 marzo 2011
88
24
martedì 29 marzo 2011
Realizzazione ALL-NAND
3
Tabelle di verità
Un secondo modo di rappresentare una rete logica è mediante la sua tabella di verità, che specifica il valore dell’uscita per ciascuna possibile combinazione dei valori in ingresso. Esempi per alcune porte logiche elementari:
martedì 29 marzo 2011
10 10
24
OR esclusivo
B 0 1 0 1
Y 0 1 1 0
Un esempio più complesso è dato dalla rete logica che realizza la funzione di OR esclusivo: l’uscita Y assume il valore 1 se e solo se ai 2 ingressi sono presenti valori logici diversi
A 0 0 1 1
martedì 29 marzo 2011
11 11
24
Reti ed espressioni • Simboli per invertitore, AND e OR
Terminali di ingresso
• Rete combinatoria e sottoreti
martedì 29 marzo 2011
Terminale di uscita
12
Reti ed espressioni • Definizione di reti combinatorie – i terminali di ingresso sono reti elementari – Se N1 e N2 sono reti, lo sono anche le seguenti
N1
N2
N1
N1
N2
• Definizione di espressioni booleane
– Le variabili (sia complementate che non complementate) e le costanti sono espressioni (espressioni elementari) – Se e sono espressioni, lo sono anche
martedì 29 marzo 2011
13
Reti ed espressioni • Rete, espressione, funzione
– Ogni rete di commutazione data, calcola una funzione di commutazione dei suoi ingressi
• Una espressione descrive una (n) rete con ingressi assegnati; una rete con ingressi assegnati realizza una espressione
martedì 29 marzo 2011
14
Fan-in e Fan-out
• Fan-in = numero di ingressi di una porta • Fan-out = numero di ingressi alimentati da una porta
–Fan-out multiplo = quando un’uscita di una porta alimenta due o più ingressi di
15
un’altra porta (rete con fan-out multiplo non corrisponde ad una singola espressione booleana)
martedì 29 marzo 2011
Funzione booleana
Descrizione verbale
Analisi di reti combinatorie Espressione booleana
• Schema di analisi Rete combinatoria
– Esempio
martedì 29 marzo 2011
16
Analisi di reti combinatorie (2) • Espressione booleana – Esempio
martedì 29 marzo 2011
17
Analisi di reti combinatorie (3) • Funzione booleana e tavola di verità – Esempio • modo A
18
– riduzione a forma SOP canonica (minterm) (algebra booleana)
• modo B – realizzazione diretta della tavola di verità
• Descrizione verbale ???
martedì 29 marzo 2011
Analisi di reti combinatorie (4)
• Funzione booleana e tavola di verità
0
0
0
0
0
0
x4
1
1
1
0
0
0
0
x3
1
1
0
0
1
1
0
0
x2
0
1
0
1
0
1
0
1
0
x1
…
0
0
0
1
1
1
0
1
f
…
0
0
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
1
0
1
0
1
0
0
0
0
1
1
0
0
0
0
0
1
1
1
0
1
– Esempio
0 1
0
f
0 0
19
1
martedì 29 marzo 2011
Funzione booleana
Rete combinatoria
Sintesi di reti combinatorie Espressione booleana
• Schema di sintesi Descrizione verbale
– Esempio
20
– la temperatura dell’acqua nel serbatoio (T) è “alta” » e – (è impostato il riscaldamento forzato manuale (M) » oppure – il termostato è in posizione inverno (I), la temperatura desiderata è superiore a quella corrente (D))
• ‘La pompa di circolazione di un impianto di riscaldamento deve essere abilitata quando contemporaneamente:
martedì 29 marzo 2011
Sintesi di reti combinatorie (2) • Espressione booleana – P=T(M+ID) – Realizzazione diretta della rete?
martedì 29 marzo 2011
21
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
T=x4
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
M=x3
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
I=x2
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
D=x1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
y
22
1
Sintesi di reti combinatorie (3) • Funzione booleana – P=T(M+ID) • tavola di verità – modo A: forma canonica SOP (mediante algebra) – modo B: calcolo diretto
– In certi casi ottenibile direttamente dalla descrizione verbale
martedì 29 marzo 2011
Buffer tri-state (1 di 2) A
23 23
Inibita 24
Abilitata
A controlla se in uscita Quando A=1, Y=B “passa” il valore di B, Quando A=0, Y=0 oppure no. Ma Y=0 è un valore di A “passato” attraverso la porta “aperta”, oppure è dovuto alla porta chiusa?
L’ambiguità si risolve con il buffer tri-state.
martedì 29 marzo 2011
Buffer tri-state (2 di 2)
Il buffer tri-state è un dispositivo in cui il valore logico dell’uscita Y è non vincolato (n.v.) quando l’ingresso di controllo assume il valore logico 0
Quando l’uscita Y è non vincolata, il suo valore dipende dalle altre porte a cui è collegata
Usato per collegare molti dispositivi sulla stessa linea di comunicazione dati. martedì 29 marzo 2011
24 24
24
Collegam. wired OR di buffer tri-state
Funzione di MULTIPLEXER 2/1
Y=A se C=1 Y=B se C=0
Le uscite delle porte tri-state possono essere collegate tra loro purché al più una di esse sia vincolata ad un valore logico (0 oppure 1). Viene realizzato l’OR delle uscite senza l’effettiva presenza di una porta OR (“wired OR”).
martedì 29 marzo 2011
25 25
24
Y=A se C=1 Y=B se C=0
Multiplexer 2/1 (senza buffer tri-state)
martedì 29 marzo 2011
26 26
24
Porta NAND open collector (1 di 2)
Un altro dispositivo che consente collegamenti in wired OR è la porta NAND open collector.
In tale porta l’uscita è vincolata (al valore logico 0) solo quando ad entrambi gli ingressi è presente il valore logico 1.
martedì 29 marzo 2011
27 27
24
Wired OR di NAND open-collector
L’uscita di una porta NAND open collector può assumere solo il valore logico 0: è dunque possibile attivare contemporaneamente più uscite di porte di questo tipo visto che i valori ad esse presenti non possono mai essere contrastanti. Resistenza di pull-up
Lo schema qui sopra può essere usato per segnalare il verificarsi di un evento. martedì 29 marzo 2011
28 28
24
Registro da un bit
Un registro è un dispositivo in grado di memorizzare (cioè conservare nel tempo) un valore logico. Tale capacità distingue i registri dalle porte logiche.
Latch o flip-flop
w è il segnale di controllo • w=1: il valore di X viene trasferito (memorizzato) nel registro; Y=X • w=0: Y rimane al valore memorizzato, senza risentire di eventuali variazioni di X martedì 29 marzo 2011
29 29
24
t
Registro da un bit: diagramma temporale
X
Y
w
martedì 29 marzo 2011
30 30
24
Bus
Un bus è un collegamento elettrico tra parti diverse di un elaboratore che consente il trasferimento di informazione. Un bus è composto da una o più linee; ogni linea consente di trasferire un bit.
Per rappresentare un bus di n bit si usano i seguenti simboli grafici:
martedì 29 marzo 2011
31 31
24
Trasferimento di un bit
r1=1: il valore presente in R1 viene trasferito sul bus
w2=1: il valore sul bus viene memorizzato in R2
w2
t
Diagramma temporale dei segnali di controllo: r1
martedì 29 marzo 2011
32 32
24
Trasferimento di gruppi di bit Un po’ di nomenclatura… • 4 bit: “nibble” (o nybble) • 8 bit: “byte” • 16 bit: “half-word” • 32 bit: “word” • 64 bit: “double-word”
“A nibble is a small bite”
La definizione di “word” dipende comunque dalla taglia della parola di memoria della macchina che si sta considerando (ne parleremo meglio più avanti).
martedì 29 marzo 2011
33 33
24
Trasferimento in parallelo di più bit
• Vantaggio: velocità • Svantaggio: servono più linee per il bus martedì 29 marzo 2011
34 34
24
Shift register
Per il trasferimento seriale si utilizza un dispositivo chiamato registro a scorrimento (shift register)
X → R1 R1 → R2 R2 → R3 R3 → R4
• a ciascun impulso ( ) di S, i bit contenuti nel registro scorrono di una posizione verso destra: -
Esempio: se inizialmente è X=1 e lo shift register contiene 0111, dopo un impulso di S lo shift register contiene 1011 martedì 29 marzo 2011
35 35
24
Trasferimento seriale di più bit
Trasferimento seriale tra due shift register:
• C=0: a ciascun impulso ( ) di S, un bit del registro di sx viene trasferito al registro di dx
• C=1: a ciascun impulso di S, un bit del registro di sx - viene trasferito al registro di dx - e viene riportato all’ingresso del registro di sx stesso (dopo quattro impulsi di S nel registro di dx è stata trasferita copia del contenuto del registro di sx) martedì 29 marzo 2011
36 36
24
00.a
martedì 29 marzo 2011
Fine
Reti logiche
37
00.e
Architettura degli Elaboratori martedì 29 marzo 2011
Un automa a stati finiti deterministico (DFA – Deterministic Finite Automaton) è una quintupla (Q, Σ, δ, qi, F) dove: • Q è un insieme finito di k≥2 stati {q0, q1, … qk-1}
• Σ è un alfabeto finito di l≥1 simboli d’ingresso {s0, s1, …, sl-1}
• δ è la funzione di transizione di stato δ: QxΣ → Q δ(q, s) è lo stato ‘futuro’ in cui l’automa si porterà se, a partire dallo stato q, il simbolo di ingresso è s • qi∈Q è lo stato iniziale • F⊆Q è il sottoinsieme degli m≥1 stati finali (di accettazione) F = {qf0, qf1, … qf(m-1)} Architettura degli Elaboratori
martedì 29 marzo 2011
Esempio: distributore di caffè Un caffè costa 40c Si accettano monete da 10c e da 20c
significato del DFA, Δ è un alfabeto finito di n≥1 simboli d’uscita {d0, d1, … dn-1}
qi)
Una macchina di Mealy è una sestupla (Q, Σ, Δ, δ, λ, dove Q, Σ, δ, e •
•
λ è la funzione di uscita λ : QxΣ → Δ
λ(q, s) è il valore dell’uscita che la macchina produrrà nella transizione dallo stato q con simbolo di ingresso s • La macchina ha generalmente un funzionamento continuativo e pertanto non vengono esplicitati stati finali (di accettazione; hanno più senso in altre applicazioni del DFA) Architettura degli Elaboratori martedì 29 marzo 2011
• Il valore dell’ingresso e la corrispondente uscita etichettano ogni transizione • Lo stato finale q4 diventa inutile: l’uscita a 1 si ha al ritorno allo stato iniziale
Preferibile quando il simbolo di uscita è direttamente legato ad un simbolo di ingresso Architettura degli Elaboratori martedì 29 marzo 2011
La macchina di Moore
Una macchina di Moore è una sestupla (Q, Σ, Δ, δ, λ, qi) dove Q, Σ, Δ, δ, qi hanno lo stesso significato di quella di Mealy, •
λ è la funzione di uscita λ:Q→Δ
•
Si può dimostrare che data una macchina di Mealy (Moore) è possibile trovare una macchina di Moore (Mealy) equivalente nel comportamento ingresso/uscita
λ(q) è il valore dell’uscita quando la macchina si trova nello stato q
•
A parità di problema, la soluzione con la macchina di Moore può necessitare di più stati rispetto alla soluzione con la macchina di Mealy perché quest’ultima è in grado di produrre uscite diverse a partire dallo stesso stato con ingressi diversi Architettura degli Elaboratori
Preferibile quando il simbolo di uscita deve essere insensibile ai transitori dei simboli di ingresso o dello stato interno Architettura degli Elaboratori martedì 29 marzo 2011
•
L’ingresso è costituito dall’impostazione della tastiera (N=nessun
Realizzare, sia in forma di macchina di Mealy che di Moore, il controllo di un ascensore di un edificio con piano terra e primo piano
Esercizio proposto •
tasto premuto, T=premuto tasto Terra, P=premuto tasto Primo
•
•
Dopo aver progettato le macchine usando i simboli descritti sopra, si ipotizzi una codifica binaria per lo stato, gli ingressi e le uscite
L’uscita è costituita dal comando da fornire al controllo dell’ascensore (F=fermo, A=verso l’alto, B=verso il basso)
piano) e dalla posizione corrente dell’ascensore (T=posizione di Terra, I=posizione intermedia tra i piani, P=posizione di Primo piano)
In base a questa codifica si definiscano le funzioni di transizione di stato e d’uscita per le 2 macchine
Architettura degli Elaboratori martedì 29 marzo 2011
Robovie-M v.2
! 22 DOF ! 45 cm, 2.3 Kg
24 Ottobre 2005
martedì 29 marzo 2011
Intelligent Autonomous Systems Lab (IAS-Lab) Tesi di Laurea Specialistica in Ingegneria Informatica
ARCHITETTURA HARDWARE
12
VS–7054 (VStone)
Caratteristiche: ! scheda VS–7054 (VStone): " SH7054 (Renesas) 40 MHz " RAM esterna (Cypress) da 256K x 16bit " EEPROM esterna (ATMEL) da 512K (65536x8) " accelerometro su due assi (ANALOG DEVICES) " convertitore seriale SP3222E (SIPEX) " bus a 16 bit per telecamera " alimentazione 6 V ! telecamera digitale OV7620
Alberto Maggi
Intelligent Autonomous Systems Lab (IAS-Lab) Tesi di Laurea Specialistica in Ingegneria Informatica
LIBRERIA DI RAGIONAMENTO
Mappa decisionale
Alberto Maggi
Mappa logica con sguardo basso
Processing
13
Etichettatura delle regioni
Sovrapposizione
ESEMPIO DI SOVRAPPOSIZIONE DELLE MAPPE LOGICHE
Immagine acquisita
Mappa logica con sguardo alto
24 Ottobre 2005
martedì 29 marzo 2011
Intelligent Autonomous Systems Lab (IAS-Lab) Tesi di Laurea Specialistica in Ingegneria Informatica
Alberto Maggi
LIBRERIA DI RAGIONAMENTO AUTOMA A STATI FINITI DEL GIOCATORE alcuni stati sono dei sotto-automi
24 Ottobre 2005
martedì 29 marzo 2011
14
00.e
Architettura degli Elaboratori martedì 29 marzo 2011
Caratteristiche della memoria centrale Ogni locazione (tipicamente byte) è individuata da un indirizzo. Con un indirizzo da N bit sono indirizzabili un totale di 2N locazioni (nota: 210 = 1024 = 1K, 220 = 1M, 230 = 1G). In realtà quasi sempre solo una parte di queste corrisponde a
4
24
memoria effettivamente presente e quindi indirizzabile.
Per motivi di efficienza, le singole operazioni di lettura e di scrittura interessano unità più ampie: 16 bit: word (halfword), ... 32 bit: longword (word), ... 64 bit: quadword (doubleword). ... nomi usati nel testo:
Principio di funzionamento: STATICHE (SRAM) il bit è memorizzato in un latch o flip-flop
24
– più veloci (memorie cache), dissipano poca potenza (dispositivi portatili), – non richiedono refresh, più costose (almeno 4 transistor per bit);
DINAMICHE (DRAM) il bit è la carica di un condensatore (refresh) – meno veloci, richiedono refresh, ma meno costose (1 transistor per bit).
Funzioni: RAM (rwm) read-write ROM read-only PROM programmable ROM tipi di prom erase time write read EPROM 20 m (chip) 100 ms 200 ns E2PROM 5 ms (byte) 5 ms 35 ns … FLASH 1 s (sector) 100 ms 200 ns Architettura degli Elaboratori
I computer IBM370, molti RISC e i processori Motorola usano il metodo big-endian. 24 Dell'altro partito sono i processori INTEL e i computer DEC Alpha che preferiscono usare il little-endian, ritenuto più conveniente nella trasmissione dei dati, ove è trasmessa per prima la parte meno significativa. Il PowerPC e l'ARM possono funzionare in tutte e due le modalità. Windows NT è stato progettato per la architettura Little Endian. Anche nei formati grafici vi sono scelte diverse: GIF -- Little Endian JPEG -- Big Endian Architettura degli Elaboratori
24 Tempo di accesso (ta ): tempo necessario per completare un’operazione di lettura o scrittura Il tempo è misurato a partire dall’istante in cui l’indirizzo fornito dalla CPU è valido (i livelli di tensione nelle linee indirizzi si sono stabilizzati). Tale istante corrisponde all’attivazione del segnale denominato ‘address strobe’ (AS) (il segnale MA nel nostro schema semplificato)
Memorie dinamiche (DRAM): • 50 ÷ 70 ns (DRAM asincrone) • 7 ÷ 12 ns (SDRAM sincrone) (+ latenza: per il primo dato ci vuole un tempo 4-5 volte quello per i dati successivi) Architettura degli Elaboratori
Operazione di scrittura: 1- imposta il valore (H o L) nella bit line (bit da memorizzare), 2- seleziona la riga (attiva row select): il transistor diventa un interruttore chiuso e la tensione della bit line si trasferisce ai capi del condensatore (caricandolo o scaricandolo); quando il row select viene disattivato, il transistor diventa un interruttore aperto e il condensatore conserva la carica (mantiene memorizzato il bit). Architettura degli Elaboratori
Operazione di refresh: 1- esegue un’operazione di lettura su tutte le celle della stessa riga (tutti i bit della riga vengono letti, memorizzati in altrettanti latch e poi riscritti). Architettura degli Elaboratori
DRAM 64Kx1 (256 righe x 256 colonne) Periodo di refresh di ciascun bit = 4 ms ta = 60ns Refresh di un bit alla volta tr = 4 ms / (64·210) 61 ns Impegno percentuale 100% Refresh di un’intera riga alla volta tr = 4 ms / 256 16 s Impegno percentuale=(60 ns/16 s)*100 Architettura degli Elaboratori
1. Aumentando il numero di bit per accesso (es.: con un bus dati da 64 bit si trasferiscono 8 byte per volta) svantaggi: aumentano le dimensioni, aumenta la corrente
44
2. Aumentando il grado di parallelismo interno delle operazioni (es. memory interleaving: con più banchi di memoria è possibile avviare un accesso ad un altro banco, prima che sia completato l’accesso precedente) 3. Evitando di eseguire alcune delle operazioni (ad es. la selezione di una riga già selezionata) Architettura degli Elaboratori
Interfaccia asincrona (DRAM “standard”): il processore deve attendere, in uno stato idle, il completamento dell’operazione in memoria.
44
Interfaccia sincrona (SDRAM): le operazioni sono in sincronia con clock del bus; con l'uso di opportuni latch si aumenta il parallelismo con la CPU (bus oltre i 66MHz). Interfaccia basata su protocollo (RDRAM): indirizzi e dati vengono trasmessi in parallelo con modalità pipelined sul medesimo bus. Architettura degli Elaboratori
In un’interfaccia asincrona il processore attende il tempo necessario per il completamento di ciascuna 44 operazione (invio di RAS dopo che l’indirizzo di riga è stabile; invio di CAS dopo che l’indirizzo di colonna è stabile; successivo trasferimento del dato). L’attivazione di RAS trasferisce, in appositi latch dati, il contenuto di tutti i bit della riga selezionata. Se un ciclo di clock inizia prima che sia trascorso il tempo richiesto per l’operazione, occorre attendere l’inizio del successivo ciclo di clock per poter iniziare l’operazione successiva. Tenendo presente questo vincolo, i tempi per il trasferimento di un dato sono indicati in termini di numero di cicli di clock. Architettura degli Elaboratori
1. Memorizza indirizzo di riga; legge la riga e la RAS memorizza nei latch dati 2. Invio del dato
Din
3. Write Enable
WE
dato
2. Memorizza indirizzo di colonna e modifica, nei CAS latch dati, il bit da scrivere 4. RAS alto: ricopia, dai latch dati, la riga modificata 5. CAS alto: termina il ciclo di scrittura Architettura degli Elaboratori
È un esempio della strategia 3): sfrutta il fatto che accessi consecutivi spesso interessano colonne successive della stessa riga. RAS\ rimane attivo per un intero ciclo di riga (=“pagina”): basta fornire l’indirizzo di riga una sola volta all’inizio dell’accesso.
44
Ogni ciclo di CAS\ include: impostazione dell’indirizzo di colonna, attivazione di CAS\, attesa del dato in uscita, latch del dato, refresh, disattivazione di CAS\ (necessaria per segnalare il termine del ciclo). Timing: indica il numero di cicli di clock necessari per il primo accesso a un dato della riga, seguito da quelli per gli accessi ai dati successivi nella medesima riga. Valori tipici per FPM: 6-3-3-3 o 5-3-3-3 con celle da 70 ns o 60 ns (bus a 66 MHz). Architettura degli Elaboratori
Vengono aggiunti dei latch dati che mantengono il dato appena letto, consentendo di anticipare la disattivazione di CAS\ e l’invio dell’indirizzo della colonna successiva. Si può così ridurre il periodo tPC del segnale CAS\ dopo il primo accesso: il segnale CAS\ rimane disattivato per il minimo intervallo di tempo.
Evoluzione dei moduli SIMM • 30 pin, DB da 8 bit (primi anni ’90) per fornire 16 bit alla volta (286, 386 SX) occorrevano 2 moduli giustapposti per fornire 32 bit alla volta (386 DX) occorrevano 4 moduli giustapposti
• 72 pin, DB da 32 bit (metà anni 90) con l’avvento del Pentium e del bus PCI per fornire 64 bit alla volta (Pentium) occorrevano 2 moduli giustapposti Architettura degli Elaboratori
DIMM (Dual In-line Memory Module): una schedina su cui sono collocati i chip di memoria, 44 caratterizzata da un bus dati da 64 bit; i moduli DIMM hanno ormai sostituito i moduli SIMM (Single In-Line Memory Module), nei quali il bus dati è da 32 bit; nei moduli SIMM (72 pin), i contatti sulle 2 facce della scheda sono uniti e formano un contatto unico; nei DIMM (168 pin), i contatti opposti sono elettricamente isolati e formano 2 contatti separati; le attuali DDR3 usano DIMM da 240 pin e DB da 128 bit ECC (Error Correction Codes): un chip in più contenente bit aggiuntivi per consentire la correzione di errori sui dati memorizzati. Architettura degli Elaboratori
Dopo l’accesso al primo dato di una riga, anziché attendere l’invio degli indirizzi di colonna successivi, questi vengono generati internamente alla DRAM con semplici incrementi (burst counter).
44
Le operazioni interne della DRAM sono strettamente regolate dal clock, che è l’unico segnale di temporizzazione da fornire per i dati della riga successivi al primo. Più comandi possono essere accodati (pipelining): si ottengono così prestazioni migliori e si possono usare bus a frequenze più elevate. Il tempo per l’accesso al primo dato (SDRAM latency) è maggiore di quello per i dati successivi della stessa riga (CAS latency). SDRAM latency e CAS latency sono ancora espresse in numero di cicli di clock: 5-1-1-1 (SDRAM Latency = 5, CAS Latency = 1). La CAS latency è determinata dal column access time tCAC. Le specifiche JEDEC prevedono valori di CAS latency pari a 1, 2, o 3. Architettura degli Elaboratori
JEDEC = Joint Electron Devices Engineering Council (1958) Dal 1993 definisce i tipi base di DRAM sincrona.
44
Caratteristiche: interfaccia sincrona; architettura a banco multiplo: consente di avviare un accesso ad un altro banco, prima che sia completato l’accesso precedente (su un banco diverso); burst mode. Una volta selezionata la riga, CS\, RAS\, CAS\, WE\ codificano il comando da eseguire (sincronizzato dal clock). Un registro “programmabile” di modo stabilisce: il tipo (sequential o interleaved) e le modalità di burst; la lunghezza del burst (1 bit, 2 bit, 4 bit, …); la CAS latency (1, 2 o 3). Architettura degli Elaboratori
All’inizio di un ciclo di lettura burst viene impostato l’indirizzo di riga e, nel successivo fronte di salita del clock, vengono attivati i segnali RAS\ e CS\. Ciò avvia il recupero dell’intera riga selezionata. Trascorso un tempo pari a tRCD (RAS\ to CAS\ delay), nel successivo fronte di salita del clock può essere attivato CAS\.
44
Trascorso un ulteriore tempo pari a tCAC (column access time), il primo dato è leggibile sulle linee d’uscita. Perché tutto funzioni deve essere: CASLatency * tCLK
Timing per SDRAM DDR-n • misurati in periodi di system clock • 4 valori tCL CAS latency tempo tra comando READ e dato disponibile in uscita tRCD RAS to CAS delay tempo tra comando ACTIVE e comando READ/WRITE tRP Row Precharge tempo tra comando PRECHARGE e comando ACTIVE tRAS Row Active time tempo tra un comando ACTIVE e un comando PRECHARGE
Indirizzi (row e col) e dati vengono trasmessi in parallelo con modalità pipelined sul medesimo bus (mentre nelle SDRAM gli indirizzi seguono percorsi diversi da quelli dei dati).
44
RDRAM (Rambus DRAM), DRDRAM (Direct Rambus DRAM) Soluzione proprietaria (Rambus Inc.) Adotta un approccio diverso rispetto a DDR e DDR2: anziché usare bus dati con molte linee, usa un bus da 16 bit con una elettronica progettata in modo da assicurare alte frequenze operative I dati sono trasferiti su entrambi i fronti del clock (come DDR) Data rate fino a 1.6 GB/s (standard PC800) e 2.1 GB/s (standard PC1066) Architettura degli Elaboratori
• Nel 2007 è iniziato un sensibile calo delle entrate dovuto a sovrapproduzione • Nel 2009 Qimonda (D) (ex Infineon) è fallita ed ha cessato la produzione, in parte rilevata dalla rivale Micron.
DENSITÀ DEI CHIP DRAM 64 Mb $2-3 | $0.25/Mbyte 128 Mb $3-5 | 256 Mb $4-7 (0.18-0.13 m) 512 Mb in produzione, 0.13 - 0.11 m 1 Gb in produzione, 0.11 m - 90 nm 4 Gb 30/1/09: SAMSUNG annuncia DDR3 DRAM chip da 4Gb (50nm)
Potranno sostituire le attuali NAND Flash, ma anche le DRAM: • PRAM (PCRAM) (Phase Change RAM): sfruttano le proprietà 44 di una lega calcogenura (Ge2Sb2Te5), in grado di cambiare fase (cristallina o amorfa) in modo controllato elettricamente; • FRAM (FeRAM) (Ferroelettric RAM): usano uno strato di materiale ferroelettrico il cui stato è controllabile da un campo elettrico; • MRAM (Magnetoresistive RAM): usano uno strato di materiale ferromagnetico il cui stato è controllabile da un campo magnetico; • NRAM (Nano-RAM): sfruttano la proprietà dei nanotubi di carbonio di cambiare posizione meccanica (toccarsi o non toccarsi) in modo controllato elettricamente. Architettura degli Elaboratori
Ancora allo stato sperimentale 44 Per memorizzare i dati utilizzano la polarità di minuscoli elementi magnetici, anziché la presenza o l’assenza di cariche elettriche (come avviene nelle DRAM) Non volatili: i dati non scompaiono quando manca l’alimentazione Nel giugno 2003 IBM e Infineon hanno presentato un chip MRAM da 128Kbit, costruito con tecnologia da 0.18 µm Con memoria MRAM non volatile un calcolatore potrebbe essere avviato istantaneamente all’accensione, con il sistema operativo già presente in memoria Le memorie dei primi calcolatori (1950-1960) erano costituite da nuclei di ferrite (non volatili): forse le RAM future saranno basate sullo stesso principio fisico, pur con dimensioni decisamente più ridotte
• C (carry): bit di riporto; • N (negative): N=1 indica che il risultato è negativo secondo la convenzione del complemento a 2; • Z (zero): Z=1 indica che il risultato è nullo; • V (overflow): V=1 indica che il risultato è affetto da overflow nell’aritmetica con numeri interi (signed); • P (parity): P=1 indica che il risultato contiene un numero pari di bit uguali a 1.
Le istruzioni che il PD32 è in grado di decodificare ed eseguire (istruzioni di macchina) sono le seguenti: Istruzioni di trasferimento dei dati Istruzioni aritmetiche e logiche Istruzioni di controllo del programma Istruzioni di ingresso e uscita
17
Sono esaminate alcune istruzioni di ogni classe. L’elenco completo delle istruzioni del PD32 si trova nell’appendice del libro di testo. Architettura degli Elaboratori
Istruzioni di trasferimento dati (1 di 2) MOVL s, d s: operando sorgente d: operando destinazione
3
17
‘s’ e ‘d’ possono essere o indirizzi di registri (R0, …, R7) oppure indirizzi di long-word (da 32 bit) di memoria. MOVW s, d MOVB s, d • se ‘s’ o ‘d’ rappresentano un registro di CPU, il word o il byte interessati sono quelli meno significativi • se ‘d’ rappresenta un registro di CPU, il bit di segno del risultato (byte o word) viene esteso all’intero registro Architettura degli Elaboratori
Istruzioni aritmetiche e logiche (1 di 3) opcode s, r ADDz s, r SUBz s, r CMPz s, r NEGz s, r ANDz s, r ORz s, r XORz s, r NOTz s, r UMULs, r SMUL s, r UDIV s, r SDIV s, r
5
(r indica uno dei registri R0, …, R7) ; somma: r + s r 17 ; sottrazione: r - s r ; confronto: imposta CNZV in funzione di r-s ; complemento a due: -s r ; funzione logica AND bit per bit ; funzione logica OR bit per bit ; funzione logica OR esclusivo bit per bit ; funzione logica NOT bit per bit ; moltiplicazione su operandi usigned ; moltiplicazione su operandi signed ; divisione su operandi usigned ; divisione su operandi signed
Istruzioni aritmetiche e logiche (2 di 3) Operazioni di scorrimento: opcode k, r
6
17
r registro (R0, …, R7) contenente l’operando su cui vengono effettuate le operazioni di scorrimento. k numero di posizioni che vengono scorse. ASLz ASRz LSLz LSRz
k, r k, r k, r k, r
; ; ; ;
scorrimento aritmetico verso sinistra scorrimento aritmetico verso destra scorrimento logico verso sinistra scorrimento logico verso destra
• l’operando destinazione delle istruzioni aritmetiche e logiche è sempre un registro dell’ALU; • se z=B (o z=W), viene modificato solo il Byte (o il Word) meno significativo del registro di destinazione Architettura degli Elaboratori
Istruzione di salto condizionato: Jc addr JNc addr c rappresenta uno dei bit di condizione, addr rappresenta un indirizzo di memoria. L’esecuzione di queste istruzioni comporta l’inserimento di addr nel PC (condizionato nel caso di Jc e di JNc). Architettura degli Elaboratori
Per realizzare i protocolli di input e di output descritti in precedenza, è sufficiente che il processore sia in grado di eseguire le seguenti istruzioni: INz OUTz START JR JNR
17
disp, d s, disp disp disp, addr disp, addr
se la destinazione dell’istruzione INz è un registro dell’ALU e se z=B (o z=W), viene modificato solo il Byte (o il Word) meno significativo del registro di destinazione Architettura degli Elaboratori
JNR DI, WAIT1 ;esame stato DI (ciclo ;di attesa: busy-wait) START DI ;avvio dell’operazione ;di produzione del dato JNR DI, WAIT2 ;esame stato DI INB DI, R0 ;trasferimento del dato
W1: JNR DO, W1 OUTB R0, DO START DO W2: JNR DO, W2 ...
Architettura degli Elaboratori
;esame stato DO: ;trasferimento del dato ;avvio dell’operazione ;di consumo del dato ;esame stato DO: ;l’istruzione successiva ;sarà eseguita quando il ;dato sarà stato consumato
Testo di rif.to: [Congiu] - 3.7,3.9,3.10 (pg. 112–127)
Modulo di Controllo 01.g
L’esecuzione delle istruzioni Realizzazione del modulo Microprogrammazione
Esecuzione delle istruzioni
1
Istruzione di un linguaggio di alto livello: Z := X + Y 14 (nel linguaggio assembly i nomi delle variabili X, Y, Z possono essere usati per rappresentare indirizzi di memoria) Il PD32 non è in grado di sommare due operandi in memoria (almeno uno deve essere in un registro dell’ALU). Pertanto l’istruzione di assegnazione va espansa in una sequenza di istruzioni macchina: MOVL X, R0 ADDL Y, R0 MOVL R0, Z Architettura degli Elaboratori 1
-programmazione orizzontale/verticale Orizzontale: ciascun bit nella -istruzione corrisponde ad un segnale di controllo: -istruzioni lunghe: ad es -istruzioni da 80 bit se ci sono 80 segnali di controllo.
n-ROM: la nano-ROM contiene (una sola copia di) tutte le -istruzioni orizzontali. -ROM: la micro-ROM, anziché contenere sequenze di -istruzioni orizzontali, contiene sequenze di puntatori (meno bit) alle -istruzioni nella n-ROM;
14
esempio: le -istruzioni orizzontali di un processore siano da 120 bit; il numero -istruzioni orizzontali diverse sia inferiore a 512; allora la -ROM contiene sequenze di elementi da 9 bit (puntatori alle -istruzioni orizzontali nella n-ROM), anziché sequenze di elementi da 120 bit.
minor area di silicio; ma sono richiesti 2 accessi Architettura degli Elaboratori 1
Classificazione delle istruzioni Direttive per l’assemblatore
Classificazione delle istruzioni
1
È consuetudine classificare le istruzioni macchina in base al numero degli operandi a cui si riferiscono.
15
Questa classificazione può essere usata per classificare anche i processori: Macchine a tre indirizzi Macchine a due indirizzi Macchine a un indirizzo Macchine a zero indirizzi Architettura degli Elaboratori 1
PUSH U PUSH V PUSH W PUSH X ADD PUSH Y DIV SUB MUL POP Z Architettura degli Elaboratori 1
L’espansione della espressione aritmetica in istruzioni a zero indirizzi corrisponde alla riscrittura della espressione con operatori postfissi, secondo la notazione polacca inversa (Reverse Polish Notation, RPN): U V W X + Y / - *
Specificano operazioni che devono essere eseguite dall’assemblatore.
15
direttive per la DEFINIZIONE DI SIMBOLI 1. direttiva LABEL WAIT1: JNR DI, WAIT1 ; il simbolo rappresenta ; un indirizzo di memoria 2. direttiva di ASSEGNAZIONE AD1 = 24 ; il simbolo rappresenta un ; valore generico ; (che di solito non è un ; indirizzo di memoria) Architettura degli Elaboratori 1
.DSz espressione ; l’assemblatore calcola il valore N ; della espressione e lascia libera ; un’area di memoria di dimensione ; pari a N byte (o word o long-word). .DCz esp1,esp2,…
; l’assemblatore calcola Ni=espi e ; inserisce in memoria i valori N1, N2,...
.DCB ‘stringa‘,0
; l’assemblatore inserisce in ; memoria, in byte consecutivi, ; i codici ASCII della stringa di ; caratteri.
direttive per la DEFINIZIONE DI SEGMENTI DI MEMORIA .TEXT .DATA .BSS
15
; indica l’inizio di un segmento contenente ; codice (istruzioni) ; indica l’inizio di un segmento contenente ; dati inizializzati ; indica l’inizio di un segmento contenente ; dati non inizializzati
In genere il primo word (operation word) di ciascuna istruzione contiene, oltre alla codifica dell’operazione da eseguire, le informazioni relative ai metodi di indirizzamento da utilizzare per accedere agli operandi.
24
Alcuni di questi metodi richiedono ulteriori informazioni che vengono memorizzate in uno o più word aggiuntivi (extension word).
Nel PD32 le istruzioni hanno un operation long-word (OL) di 32 bit. 24 Alcuni metodi di indirizzamento richiedono informazioni contenute in un extension long-word (EL) di 32 bit. Ogni indirizzo (IND1, IND2) è specificato da due campi: M (da 3 bit) che individua il modo di indirizzamento, R (da 3 bit) che individua l’eventuale registro usato.
Codifica dei modi di indirizzamento nelle istruzioni del PD32
Nel PD32 l’indirizzamento immediato è individuato dal valore 1 nel campo M. Il campo R non è usato.
24
L’operando immediato è contenuto in un EL di 32 bit. Il suo valore è compreso tra -231 e 231-1. Per accedere all’operando il processore deve eseguire il fetch di questo EL. Numero accessi alla memoria:
Nel PD32 l’indirizzamento assoluto corrisponde al valore 2 nel campo M. Il campo R non è usato. L’indirizzo assoluto è contenuto in un EL di 32 bit. Consente perciò di accedere a 232 = 4 GB di memoria. Per accedere all’operando il processore, dopo aver effettuato il fetch dell’EL, con cui ottiene l’indirizzo dell’operando, deve effettuare un ulteriore accesso alla memoria (al valore dell’operando). Numero accessi alla memoria:
Nel PD132 l’indirizzo del puntatore è contenuto in un EL di 32 bit, con cui si possono individuare 230 = 1 G puntatori (da 4 byte) situati in memoria.
24
Ciascun puntatore può accedere a 232 = 4 GB. Per accedere all’operando il processore, dopo aver effettuato il fetch dell’EL, con cui ottiene l’indirizzo di un puntatore all’operando, deve effettuare due ulteriori accessi alla memoria: il primo per leggere il puntatore all’operando, il secondo per accedere al valore dell’operando Numero accessi alla memoria: Architettura degli Elaboratori 1
Nel PD32 l’indirizzamento diretto di registro corrisponde al valore 0 nel campo M. Il campo R specifica il registro in cui si trova l’operando. Per accedere all’operando non sono necessari accessi alla memoria. Numero accessi alla memoria:
Indirizzamento indiretto con registro ADDL (R0), R1
; L[R0] + R1
10
R1 24
Nel PD32 l’indirizzamento indiretto con registro corrisponde al valore 3 nel campo M. Il campo R specifica il registro in cui si trova un puntatore all’operando.
Per accedere all’operando è necessario un accesso alla memoria (all’indirizzo contenuto nel registro specificato). Numero accessi alla memoria:
Nel PD32 questo indirizzamento è individuato dal valore 7 nel campo M. Il campo R specifica il registro in cui si trova un puntatore all’operando (è un indirizzamento indiretto con registro).
24
Dopo l’accesso all’operando, il puntatore viene incrementato di una quantità d pari alla lunghezza (in byte) dell’operando stesso (d = 1 per B, 2 per W, 4 per L). Per accedere all’operando è necessario un accesso alla memoria (all’indirizzo contenuto nel registro specificato). Numero accessi alla memoria: fetch(OL) + 1 fetch(OL) + 1 = 2 Architettura degli Elaboratori 1
; R0 - d R0 ; M[R0] + R1 R1 24 Nel PD32 questo indirizzamento è individuato dal valore 6 nel campo M. Il campo R specifica il registro in cui si trova un puntatore all’operando (è un indirizzamento indiretto con registro). Prima di accedere all’operando, il puntatore viene decrementato di una quantità d pari alla lunghezza (in byte) dell’operando stesso (d = 1 per B, 2 per W, 4 per L). Per accedere all’operando è necessario un accesso alla memoria (all’indirizzo contenuto nel registro specificato). Numero accessi alla memoria: fetch(OL) + 1 fetch(OL) + 1 = 2 Architettura degli Elaboratori 1
Questo metodo non esiste nel PD32. Il dato puntato dal registro specificato è un puntatore (un indirizzo, lungo 4 byte), perciò l’incremento è di 4. Dopo il fetch, il primo accesso alla memoria ottiene un puntatore all’operando; un secondo accesso è necessario per ottenere il valore dell’operando. Numero accessi alla memoria:
Questo metodo non esiste nel PD32. Il dato puntato dal registro specificato è un puntatore (un indirizzo, lungo 4 byte), perciò l’incremento è di 4. Dopo il fetch, il primo accesso alla memoria ottiene un puntatore all’operando; un secondo accesso è necessario per ottenere il valore dell’operando. Numero accessi alla memoria:
L’indirizzo base X è contenuto in un EL. Per accedere all’operando il processore, dopo aver 24 effettuato il fetch dell’EL, con cui ottiene l’indirizzo base, lo somma all’offset contenuto nel registro indice, per calcolare l’indirizzo dell’operando; effettua poi un ulteriore accesso alla memoria (al valore dell’operando). Numero accessi alla memoria: fetch(OL) +fetch(EL) +1 fetch(OL) + 2 = 3 Codifica, nel PD32, dell’indirizzamento con registro indice
Indirizzamento con registro indice - 4 La somma dei due array può essere effettuata mediante le seguenti istruzioni: MOVW 300(R1), R0 ;B[R1] R0 ADDW 500(R1), R0 ;C[R1] + R0 MOVW R0, 100(R1) ;R0 A[R1]
19
24
(B[i]) R0 (B[i]+C[i]) (A[i])
eseguite iterativamente 100 volte, con il registro R1 contenente il valore 0 la prima volta e incrementando questo valore di 2 unità ad ogni iterazione. Architettura degli Elaboratori 1
Indirizzamento indiretto con RI (PD132) • Forma pre-indexed: il registro indice RI viene usato prima di effettuare l’indirizzamento indiretto: in tal modo il longword situato all’indirizzo X+RI viene interpretato come un puntatore all’operando.
21
24
L’operando è M[L[X + RI]] • Forma post-indexed: il registro indice RI viene usato dopo aver considerato l’indirizzo base X in modo indiretto: l’indirizzo dell’operando si ottiene sommando il contenuto del registro indice al contenuto del longword di memoria situato all’indirizzo base. L’operando è M[L[X] + RI] Architettura degli Elaboratori 1
L’indirizzo viene calcolato come somma del contenuto di un registro RB (il registro base) e di un offset D fornito 24 dall’istruzione. L’operando è M[RB + D]. Alcune macchine ammettono sia l’indirizzamento con registro base sia quello con registro indice. In tal caso l’indirizzo dell’operando è dato dalla somma di tre componenti: RB (che contiene l’indirizzo base), X (che contiene un offset, specificato nella istruzione), RI (che contiene un indice). L’operando è M[RB + X + RI] Architettura degli Elaboratori 1
E’ anch’esso un metodo di indirizzamento a due componenti. L’indirizzo dell’operando è dato dalla somma del contenuto del program counter PC e di un offset D.
24
Nel PD32 l’indirizzamento auto-relativo è individuato dal valore 5 nel campo M. Il campo R non è usato e l’offset D è contenuto in un EL. L’operando è M[PC + D]. Il valore del PC che interviene nella somma è quello che punta al (primo) EL dell’istruzione. Nel caso di indirizzamento auto-relativo indiretto (PD132) la somma D + PC individua non l’operando ma un puntatore ad esso. Architettura degli Elaboratori 1
Le conversioni A/D sono sincronizzate da un clock c(t). Ciascun fronte di salita di c(t) avvia, in parallelo, le conversioni su tutti 5 i dispositivi: i 5 campioni (valori digitali prodotti nei registri Rui) si riferiscono quindi al medesimo istante.
35
L’elaboratore deve acquisire i 5 campioni e ricopiarli in memoria, prima che i valori contenuti nei Rui vengano sovrascritti dai nuovi campioni prodotti dal successivo fronte di salita del clock (specifica real-time). Si debbano acquisire 100 set di dati dai 5 convertitori A/D
Architettura degli Elaboratori
Conversione A/D registro Ru da 16 bit: 64 K valori digitali possibili, l’errore (assoluto) di discretizzazione massimo è: es = (SiMAX - SiMIN)/64K
Le conversioni vengono avviate dal primo fronte di salita del clock successivo al comando START. Il tempo necessario al convertitore A/D per produrre il valore digitale in Ru è tc (tempo di conversione). Rispetto allo START, il dato convertito è pronto con un ritardo minimo pari a tc e massimo pari a tc+T (T = periodo del clock).
35
Diagramma temporale delle operazioni di conversione
Organizzazione della struttura di dati nella memoria centrale: a ciascun convertitore sia associata un’area (a partire dagli indirizzi TAB1, TAB2, …) destinata a contenere i dati acquisiti; vi sia anche una tabella di puntatori, situata all’indirizzo IND, ciascuno dei quali individua il primo elemento dell’area corrispondente destinata a contenere i dati.
Conviene scrivere prima il codice che acquisisce i 100 campioni da un convertitore (ad es. AD4).
35
Vengono ora presentate diverse soluzioni, con diversi modi di indirizzamento (allo scopo di esemplificarne l’uso e di consentire qualche raffronto). Si affronterà poi il problema di codificare la soluzione completa, che acquisisce 100 set di 5 campioni simultanei dai 5 convertitori, rispettando le specifiche di tempo reale. Architettura degli Elaboratori
Si supponga di usare una macchina (più semplice del PD32) ad un indirizzo (con registro accumulatore), dotata dei soli metodi di indirizzamento:
35
immediato, assoluto (diretto e indiretto);
in grado di eseguire almeno le seguenti istruzioni: m - aritmetiche: ADD SUB m - di trasferimento: LOAD(W) m STORE(W) m - di controllo: JNZ m - di I/O: INW disp START disp JNR disp, m Architettura degli Elaboratori
Si supponga di usare una macchina: - con più registri e quindi con la possibilità di usare anche i metodi di indirizzamento con registro;
35
- i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro. Questa macchina potrebbe essere il PD32.
valore iniziale del puntatore valore iniziale del contatore protocollo di input per la … … acquisizione … … del … … dato incremento del puntatore aggiornamento del contatore iterazione se R0 0
Si voglia usare anche l’indirizzamento con registro indice;
35
- i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro, con registro indice. Questa macchina potrebbe essere il PD32. Architettura degli Elaboratori
valore iniziale dell’offset valore iniziale del contatore 35 protocollo di input per la … … acquisizione … … del … … dato incremento dell’offset aggiornamento del contatore iterazione se R0 0
Specificando gli indirizzi base TAB1, TAB2, …, nell’istruzione che memorizza il dato acquisito, con lo stesso valore in R1 si potrà collocare il set di 5 campioni in posizioni di pari indice nelle 5 tabelle. Questo sarà il metodo usato nella soluzione completa. Architettura degli Elaboratori
4a soluzione Si voglia usare l’indirizzamento con registro indice indiretto (pre-indexed); - i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro, con registro indice, con registro indice indiretto (pre-indexed). Questa macchina non è il PD32 (potrebbe essere il PD132). Architettura degli Elaboratori
valore nel registro indice valore iniziale del contatore protocollo di input per la … ; … acquisizione … ; … del … ; … dato incremento del puntatore in memoria (PD132!) attenzione: così si altera il contenuto della tabella IND aggiornamento del contatore iterazione se R0 0
Si voglia usare il registro indice indiretto nella forma post-indexed; - i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro, con registro indice, con registro indice indiretto (post-indexed). Questa macchina non è il PD32 (potrebbe essere il PD132). Architettura degli Elaboratori
Con l’indirizzamento auto-incrementante si ottiene la soluzione più efficiente (minor numero di istruzioni!); - i metodi di indirizzamento disponibili siano: immediato, assoluto (diretto), diretto di registro, indiretto con registro, post-incrementante e pre-decrementante con registro indice, Questa macchina è il PD32.
valore iniziale del puntatore valore iniziale del contatore protocollo di input per la … … acquisizione … … del dato … … + incremento del puntatore aggiornamento del contatore iterazione se R0 0
Se non è disponibile un indirizzamento tramite registro, bisogna ricorrere ad una locazione di memoria che svolga le funzioni di puntatore. Così si è fatto nella prima soluzione (puntatore PT): STOREW @PT LOAD PT ADD #2 STORE PT memoria puntatore
Se si usa il metodo di indirizzamento con registro indice, l’indirizzo di ciascun elemento si ottiene come somma di un indirizzo base X e di un offset, fornito da un registro indice RI. Per individuare elementi diversi si può modificare RI oppure X.
35
L’accesso agli elementi consecutivi di una lista di dati si ottiene incrementando RI, come fatto nel terzo dei metodi presentati (registro indice R1): INW AD4, TAB4(R1) ADDL #2, R1
; memorizzazione del dato ; incremento del puntatore
Con un diverso valore di X (ad es. TAB5 invece di TAB4) si accede all’elemento di uguale indice in un’altra tabella. Architettura degli Elaboratori
Diversi valori di X, inseriti in istruzioni diverse, consentono di accedere a elementi corrispondenti di liste diverse, come si è fatto nell’esempio della somma di due array: MOVW ADDW MOVW ADDW
Soluzioni esaminate - 4 Con l’indirizzamento indiretto e l’uso di un registro indice nella forma pre-indexed gli elementi della struttura di dati sono individuati da un puntatore che si trova all’indirizzo RI + X.
24
35
Per scandire gli elementi consecutivi si incrementa tale puntatore, come si è fatto nel quarto metodo presentato INW AD4, @IND(R1) ; memorizzazione del dato ADDL #2, IND(R1) ; incremento del puntatore ; in memoria (PD132!) istruzione ind. base registro
Con l’indirizzamento indiretto e l’uso di un registro indice nella forma post-indexed, l’indirizzo di ciascun elemento è fornito dalla somma dell’indirizzo base (puntatore situato 35 all’indirizzo X) e dell’offset (contenuto nel registro RI). Gli elementi successivi possono essere individuati incrementando RI, come si è fatto nel quinto dei metodi presentati (registro indice R1): INW AD4, [@PT](R1) ADDL #2, R1
; memorizzazione del dato ; incremento del reg. indice
In alternativa, sarebbe stato possibile incrementare il puntatore base (situato all’indirizzo PT): INW AD4, [@PT](R1) ADDL #2, PT Architettura degli Elaboratori
I metodi di indirizzamento con registro (diretto, indiretto, auto-incrementante e auto-decrementante) sono, per questo tipo di problemi, i più efficienti. La possibilità di auto-aggiornamento consente di risparmiare istruzioni, come appare dal sesto dei metodi presentati: INW AD4, (R1)+ ; memorizzazione del dato ; + incremento del puntatore registro puntatore
Soluzione completa Si tratta ora di codificare la soluzione completa, che acquisisce 100 set di 5 campioni simultanei dai 5 convertitori, rispettando le specifiche di tempo reale:
28
35
per evitare perdita di dati, dopo l’avvio del campionamento (fronte di salita del clock) il calcolatore deve acquisire i 5 campioni e ricopiarli in memoria, prima che i valori contenuti nei Rui vengano sovrascritti dai nuovi campioni prodotti dal successivo fronte di salita del clock: l’esecuzione di tutte le istruzioni che: acquisiscono i 5 dati, li mettono in memoria e comandano l’acquisizione dei successivi 5, deve durare meno del periodo del clock. per garantire la simultaneità dei 5 campioni acquisiti ad ogni “tic” del clock, il calcolatore deve inviare il comando START a tutti 5 i dispositivi, prima del fronte di salita del clock.
Con riferimento al sistema di acquisizione di 100 set da 5 campioni dai 5 convertitori A/D, supponendo che il tempo di conversione tc dei 5 convertitori sia compreso tra 1 µs e 1.2 µs, e nell’ipotesi che il tempo di esecuzione delle istruzioni del PD32 (comprese le operazioni di fetch) sia di 200 ns se la codifica dell'istruzione occupa un long word, 300 ns se occupa 2 long word, e 400 ns se occupa 3 long word,
35
si calcoli il periodo minimo TMIN del clock che garantisce la contemporaneità dei campioni acquisiti e la non perdita dei dati. Architettura degli Elaboratori
Prima che sia trascorso un periodo del clock, il processore deve completare l’acquisizione dei 5 campioni e comandare l’acquisizione dei 5 successivi; deve, cioè, completare l’esecuzione di tutte le istruzioni comprese tra V1: … e JMP V1. Va tenuto inoltre presente il fatto che le istruzioni di attesa (Vx: JNR ADx, Vx) sono destinate ad essere eseguite più volte, in attesa che, trascorso il tempo di conversione, il dato sia pronto. Per rispettare le specifiche del problema, va considerato il caso peggiore, che si ha quando il primo dei dispositivi che vengono esaminati (AD1) è il più lento (ha un tempo di conversione pari a tc MAX = 1200ns). Architettura degli Elaboratori
Nelle ipotesi fatte, il primo ciclo di attesa (V1: JNR AD1, V1) viene eseguito tante volte quante sono 35 necessarie a far trascorrere i 1200ns . Il caso più sfortunato è che, trascorso questo tempo, debba ancora iniziare il fetch della istruzione V1: JNR AD1, V1 (la cui esecuzione trova READY = 1 e consente di uscire dal ciclo di attesa). Pertanto la durata di questo primo ciclo di attesa è, nel caso peggiore, 1200+300ns. La durata totale del ciclo V1: … JMP V1 è, nel caso peggiore, 1200ns + 5200ns = 6400ns. Allo stesso risultato si arriva usando la formula tL < T - tc MAX da cui si ottiene: T > tL + tc MAX = 5200ns + 1200ns = 6400ns. In conclusione il periodo minimo del clock è TMIN = 6400ns Architettura degli Elaboratori
C. Fantozzi, A. Gardich (revisione di S. Congiu, M.Moro)
Che cosa è ARM?
1
ARM = Advanced RISC Machine 46
ARM Ltd non produce microprocessori: progetta e vende proprietà intellettuale ARM è una architettura: insieme dei registri e delle istruzioni disponibili modi d’indirizzamento gestione delle interruzioni
Esistono molte versioni dell’architettura, e molti processori per versione Architettura degli Elaboratori
La famiglia Cortex • Presentata nel 2005, si caratterizza per essere costituita da un insieme di unità funzionali collegabili tra loro • Uno specifico processore ne può realizzare un sottoinsieme • serie A (application) è quella più completa (computer, smartphone, ecc.) • serie R (realtime), floating point opzionale, cache configurabile, MMU più semplice • serie M (microcontroller) è quella più semplice, cache assente e MMU opzionale • Le diverse configurazioni possono essere a singolo core o multicore • Alcune caratteristiche specifiche dell’architettura v7 • unità NEON per operazioni SIMD su 64 o 128 bit • unità floating point con più registri e nuove operazioni • set di istruzioni Thumb per accelerare l’esecuzione di macchine virtuali (es. JVM) • modalità di esecuzione sicura (TrustZone) Architettura degli Elaboratori
Samsung S3C24xx Application Processors Applicazioni Mobile Computing Portable Network Devices Portable media players Edutainment toys E-book readers
Mobile Communication Smartphones
Obiettivi di progetto Insieme completo di periferiche on-chip Elevate prestazioni Basso consumo Rapporto prezzo/prestazioni
S3C2440: specifiche tecniche
Core ARM 920T; thumb i.s. Memory Management Unit Cache (instruction & data)
Nessun HW floating point Funzionalità integrate: ADC a 10 bit, 8 canali; 3 porte seriali; USB host & device; controller LCD, touch screen; Interfacce per sensori CMOS, schede di memoria, audio, ecc. ecc. Architettura degli Elaboratori
L’architettura ARMv4 è a 32 bit word=32 bit (in memoria allineati ad indirizzi multipli di 4) halfword=16 bit (in memoria allineati ad indirizzi multipli di 2) byte =8 bit (singolarmente indirizzabili in memoria)
46
232 byte di memoria indirizzabili (4GB), ma S3C2440 supporta max 1 GB (8 banchi da 128 MB) Architettura degli Elaboratori
L’architettura ARMv4 è di tipo RISC Numero elevato di registri (37 in tutto) Istruzioni con lunghezza fissa di 32 bit Le parole di estensione non esistono, Architettura load/store: ad esclusione di load e store, tutte le istruzioni operano su registri Modi di indirizzamento semplici: tutti gli indirizzi di memoria nelle istruzioni load/store sono specificati da informazioni contenute in registri o nei campi dell’istruzione Architettura degli Elaboratori
• Controllo sia dell’ALU sia dello shifter, con tutte le istruzioni di elaborazione-dati • Modalità di indirizzamento auto-incrementanti e auto-decrementanti (efficienza nei loop) • Esecuzione condizionata specificabile in tutte le istruzioni • Istruzioni di load e store multipli (più registri) • Shift di n posizioni in un solo ciclo di clock • Istruzioni a 3 operandi Architettura degli Elaboratori
Modi operativi User (USR): modo utente FIQ (FIQ): gestione veloce interruzioni IRQ (IRQ): gestione interruzioni Supervisor (SVC): modo protetto Abort (ABT): per gestione memoria Undefined (UND): emulaz. coprocessori System (SYS): usa risorse di USR senza limitazioni d’accesso
CPSR: bit utili • Bit 0–4 • Bit 7 • Bit 28 • Bit 29 • Bit 30 • Bit 31 Altri bit: • Bit 5 • Bit 6 • Bit 7
17
(M): modo operativo (7 attualmente previsti) (I): interruzioni on/off (0/1) (V): indica errore di overflow (aritmetica con segno in complemento a 2) (C): indica il carry o riporto (overflow nell’aritmetica senza segno) (Z): indica un risultato zero (N): indica un risultato negativo (aritmetica con segno in complemento a 2)
46
(T): Thumb instruction set off/on (0/1) (F): fast IRQ on/off (0/1) (I): IRQ on/off (0/1)
L’I/O è di tipo memory mapped: i registri delle periferiche si trovano in locazioni di memoria predefinite
46
2 tipi di interruzioni: Normale Fast (vengono salvati meno registri) Hardware delle periferiche con accesso diretto alla memoria (DMA) Architettura degli Elaboratori
Accesso alla memoria Load / store tra memoria e registri
46
Elaborazione di dati (data processing) Operazioni di movimento tra registri Operazioni aritmetico-logiche Operazioni di confronto Controllo di flusso Branch (=“salto”) con o senza condizione Architettura degli Elaboratori
ARMv4 prevede: - istruzioni di elaborazione dati a 3 operandi: uno (registro) per il risultato, due per gli operandi: SUB R2, R0, R1 @ R2=R0-R1 SUB R2, R0, R1, LSL #4 @ R2=R0-R1*16 - altre istruzioni a 2 operandi: uno per l’op. destinazione, uno per l’op. sorgente: MOV R2, R2, ASR #2 @ R2=R2/4 - altre istruzioni a 1 operando: ad es. le istruzioni di branch: B LAB2 Architettura degli Elaboratori
Istruzioni con condizione - 1 Aggiungendo specifici suffissi di condizione, l’istruzione viene eseguita solo se i bit di condizione soddisfano quanto specificato Esempi:
Ogni categoria di istruzioni ha i propri: ci sono 4 classi di modi di indirizzamento.
46
RISC: niente indirizzamento assoluto (non usa puntatori in memoria, ma solo nei registri) indirizzamento in memoria (indiretto con registro) solo per le istruzioni LDR (load) e STR (store) Architettura degli Elaboratori
Modo 1: per istruzioni di elaborazione dati ADC, ADD, AND, BIC, CMN, CMP, EOR, MOV, MVN, ORR, RSB, RSC, SBC, SUB, TEQ, TST
46
Modo 2: per Load&Store di word o unsigned byte LDR, LDRB, STR, STRB Modo 3: per L&S di halfword o signed byte LDRH, LDRSB, LDRSH, STRH Modo 4: per L&S di registri multipli LDMxx, STMxx Architettura degli Elaboratori
sintassi: Rd, Rn, Rd, può essere: un valore immediato # un registro Rm un registro, dopo scorrimento specificato con: - un valore immediato Rm, # - un registro Rm, Rs gli operatori disponibili sono: ASR, LSL, LSR, ROR, RRX Architettura degli Elaboratori
Il campo dell’istruzione contiene il valore su cui operare sintassi: # esempio:
add R3, R3, #1
@ R3
46
R3+1
12 bit a disposizione per l’operando immediato, con la seguente struttura: 8 bit (bit c) definiscono un valore c (0 c 255); 4 bit (bit r) specificano una rotazione verso destra di 2r posizioni
Il valore su cui operare è contenuto in un registro Rm Tale valore può essere shiftato di una quantità: specificata in modo immediato (0..31: 5 bit) specificata da un altro registro (Rs): Rm, LSR #shift_imm oppure Rm, LSR Rs Rm, ASR #shift_imm oppure Rm, ASR Rs Rm, LSL #shift_imm oppure Rm, LSL Rs Rm, ROR #shift_imm oppure Rm, ROR Rs Rm, RRX esempi: add R3, R1, R2, LSL #2 @ R3 R1+R2*4
0 R3+1 (R7–1000) R8 and not 0xff00 R0 R3+R2 R0*4 R5+R5*8 = R5*9 R5–R5/8 R5/8–R5 R3 ruotato esteso a destra di una posiz. R4 ruotato a destra di R3 posizioni
sintassi: LDR|STR{B} Rd, è un indirizzamento di registro con un eventuale:
46
offset immediato offset da registro offset da registro scalato pre-incremento immediato pre-incremento da registro pre-incremento da registro scalato post-incremento immediato post-incremento da registro post-incremento da registro scalato Architettura degli Elaboratori
Si ottiene usando il registro R15 (PC) nell’indirizzamento indiretto con registro: esempi: ldr R1, [R15, -#8] @ R1 ldr PC, [PC, R0, LSL #2] @ PC
46
M32[R15-8] M32[PC+R0*4]
Il valore di R15 usato è PC_istruz.+8 o +12 a causa del prefetching • Lo shift è specificato tramite un valore immediato: il valore di R15 usato è PC_istruz.+8 • Lo shift è specificato tramite un registro: il valore di R15 usato è PC_istruz.+12 Architettura degli Elaboratori
offset immediato offset da registro pre-incremento immediato pre-incremento da registro post-incremento immediato post-incremento da registro differenze rispetto al Modo 2: - non si possono scalare i registri - gli offset immediati sono a soli 8bit Architettura degli Elaboratori
NOTA BENE: non ha senso parlare di STORE per quantità con segno, perché non c’è alcuna estensione del segno da effettuare Architettura degli Elaboratori
è la lista di registri da salvare/caricare, racchiusa tra parentesi graffe “{}” e con gli elementi separati da virgola. esempi: STMDB SP!, {R0-R7} LDMIA SP!, {R0-R7}
@ salva sullo stack i registri @ da R0 a R7
@ @ LDMDA R9, {R1,R3-R5} @ @
Architettura degli Elaboratori
ricarica R0-R7 salvati dall’istruzione precedente carica i registri R1, R3-R5 da M32[R9-12].. M32[R9]
La forma generale delle linee di codice assembly è: 52
label:istruzioneoperandi@commento Ogni campo deve essere separato da uno o più spazi I label devono iniziare dal primo carattere della riga Le istruzioni non cominciano mai dal primo carattere della riga: devono essere precedute da almeno 1 spazio Tutti e tre le sezioni ... : ... @ ... sono opzionali Esistono inoltre: direttive per l’assemblatore pseudo-istruzioni Architettura degli Elaboratori 1
direttive: sono comandi per l'assemblatore, non per il processore
52
.text specifica la sezione contenente il codice eseguibile .data specifica la sezione contenente dati inizializzati .bss specifica la sezione contenente dati non inizializzati .end specifica la fine del modulo sorgente .global definisce simboli visibili al di fuori del modulo stesso: utile per collegare più moduli (linking) .long .short .byte definiscono costanti (es. in .data) .ascii definisce una stringa .lcomm .comm .skip definiscono aree di mem. non inizializzate (locali al modulo o visibili da altri moduli)
Modo 1: per istruzioni di elaborazione dati ADC, ADD, AND, BIC, CMN, CMP, EOR, MOV, MVN, ORR, RSB, RSC, SBC, SUB, TEQ, TST
52
Modo 2: per Load&Store di word o unsigned byte LDR, LDRB, STR, STRB Modo 3: per L&S di halfword o signed byte LDRH, LDRSB, LDRSH, STRH Modo 4: per L&S di registri multipli LDMxx, STMxx
sintassi: Rd, Rn, Rd, può essere: un valore immediato # un registro Rm un registro, dopo scorrimento specificato con: - un valore immediato Rm, # - un registro Rm, Rs gli operatori disponibili sono: ASR, LSL, LSR, ROR, RRX Architettura degli Elaboratori 1
0 R3+1 (R7–1000) R8 and not 0xff00 R0 R3+R2 R0*4 R5+R5*8 = R5*9 R5–R5/8 R5/8–R5 R3 ruotato esteso a destra di una posiz. R4 ruotato a destra di R3 posizioni
sintassi: LDR|STR{B} Rd, 52 è un indirizzamento indiretto con registro [Rn], che può avere una delle seguenti forme: offset immediato offset da registro offset da registro scalato pre-incremento immediato pre-incremento da registro pre-incremento da registro scalato post-incremento immediato post-incremento da registro post-incremento da registro scalato Architettura degli Elaboratori 1
NOTA BENE: non ha senso parlare di STORE per quantità con segno, perché non c’è alcuna estensione del segno da effettuare Architettura degli Elaboratori 1
è la lista di registri da salvare/caricare, racchiusa tra parentesi graffe “{}” e con gli elementi separati da virgola. esempi: STMDB SP!, {R0-R7} LDMIA SP!, {R0-R7}
@ salva sullo stack i registri @ da R0 a R7
@ @ LDMDA R9, {R1,R3-R5} @ @
Architettura degli Elaboratori 1
ricarica R0-R7 salvati dall’istruzione precedente carica i registri R1, R3-R5 da M32[R9-12].. M32[R9]
Elaborazione di dati operazioni aritmetiche e logiche: ADC, ADD, AND, BIC, EOR, ORR, RSB, RSC, SBC, SUB movimento tra registri: MOV, MVN confronto: CMN, CMP, TEQ, TST Accesso alla memoria load/store tra memoria e registri: LDR, LDRB, STR, STRB, LDRH, LDRSB, LDRSH, STRH, LDMxx, STMxx Controllo del flusso branch: B, Bcc
Queste istruzioni usano la classe di indirizzamento modo 1 52 Regole per le istruzioni di elaborazione di dati: tre operandi: due sorgente, uno destinazione tutti gli operandi sono a 32 bit, sia registri che costanti il risultato è anch'esso a 32 bit ed è posto in un registro
• rsb sta per reverse subtraction • C è il carry bit del CPSR • per impostare i bit di condizione in base al risultato occorre aggiungere il suffisso s al simbolo operativo Architettura degli Elaboratori 1
ADD R0, R0, #1 ADD R0, R0, #-1 ADDS R0, R0, #-1 ADD SUB SUB MUL
@ R0=R0+1 @ R0=R0-1 @ R0=R0-1 e aggiorna i bit @ di stato (utile nei cicli) R0, R1, R2, ASR #2 @ R0=R1+R2/4 R0, R0, #1 @ di nuovo R0=R0-1 PC, LR, #4 @ ritorno da interruzione R0, R1, R2 @ R0=R1*R2
@ set cc on r1 – r2 @ set cc on r1 + r2 @ set cc on r1 and r2 @ set cc on r1 xor r2
27
52
I risultati delle operazioni (-, +, and, xor) non sono salvati in alcun registro; Solo i bit di condizione (cc) del CPSR sono modificati da queste istruzioni.
Queste istruzioni usano gli indirizzamenti modo 2 e 3 52
Load : nel registro destinazione viene caricato il contenuto della locazione di memoria indicata dal modo di indirizzamento ldr r0, [r1] @ r0 M32[r1] Store : il contenuto del registro destinazione viene salvato nella locazione di memoria indicata dal modo di indirizzamento str r0, [r1] @ M32[r1] r0
La pseudo istruzione ldr (estensione di ldr) è: ldr rn, = valore 52 • l'assemblatore espande la pseudo istruzione, ovvero la realizza tramite una o più istruzioni assembly e aree di supporto: • viene creato un dato ausiliario, in un luogo “sicuro” nelle vicinanze dell’istruzione, contenente il valore da caricare e vi si accede tramite un indirizzamento relativo al PC pc