1 la struttura hardware. 2 esecuzione di programmi algoritmo codifica in un linguaggio di...
TRANSCRIPT
![Page 1: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/1.jpg)
1
La struttura hardware
![Page 2: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/2.jpg)
2
Esecuzione di programmi
AlgoritmoCodifica in un linguaggio diprogrammazione C, Java etc.
Programma
Compilatore Input : programma
Output : rappresentazione di dati ed istruzioni elementari comprensibile alla macchina
Eseguibile
Effetto : esecuzione delle istruzionisulla macchina fisica
Hardware
![Page 3: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/3.jpg)
3
Esecuzione di programmi (2)• L’eseguibile dipende dalla macchina che dobbiamo
specializzare (es. processore Intel, o processore SUN), dal sistema operativo (es. Windows, Linux …) e dal linguaggio usato (es: C o Java)
• Gli eseguibili di alcuni linguaggi (come Java) contengono operazioni complesse che non possono essere eseguite direttamente!
• In questo caso si utilizza un programma interprete (es Java Virtual Machine) che realizza le operazioni elementari complesse
![Page 4: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/4.jpg)
4
Esecuzione di programmi (3)
AlgoritmoCodifica in un linguaggio diprogrammazione Java-like
Programma
Compilatore Input : programma
Output : rappresentazione di dati ed istruzioni elementari comprensibile all’interprete (es JVM)
Eseguibile
Effetto : esecuzione delle istruzioni elementari dell’interprete sulla macchina fisica
Interprete
Hardware
![Page 5: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/5.jpg)
5
Esecuzione di programmi (4)
AlgoritmoCodifica in un linguaggio diprogrammazione (C, Java etc)
Programma
Compilatore Input : programma
Output : rappresentazione di dati ed istruzioni elementari comprensibile alla macchina o all’interprete
Eseguibile
Sistema operativo
Effetto : esecuzione delle istruzionisulla macchina fisica
Interprete
Hardware
![Page 6: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/6.jpg)
6
Ritorniamo alla …. struttura generale di un calcolatore
• Il calcolatore di Von Neumann
Memoria(RAM,dischi, etc)
Mantiene Dati e Programmi
Processore(CPU)
E’ un esecutore capacedi interpretare i singoli passirichiesti dai programmi (istruzioni elementari)
Sottosistemadi Interfaccia
Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, micr., stampante, schermo, )
![Page 7: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/7.jpg)
7
Struttura di un calcolatore (2)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
![Page 8: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/8.jpg)
8
Struttura di un calcolatore (3)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
.
.
.
01234
indirizzi Sequenza di parole (un array …)
![Page 9: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/9.jpg)
9
Struttura di un calcolatore (4)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
.
.
.
01234
indirizzi Sequenza di parole (un array …)
Valore da trasferire
Dove trasferirlo
Direzione di trasferimento, unitàcoinvolte etc.
![Page 10: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/10.jpg)
10
Struttura di un calcolatore (5)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
![Page 11: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/11.jpg)
11
Operazioni elementari eseguibili da un processore
• Dati numerici (binari) :– operazioni matematiche : +,-,divisione e moltiplicazione per
potenze di due– confronti con 0– operazioni logiche o booleane: AND, OR, XOR, NOT
• Dati numerici e non– letture/scritture nella memoria, letture e scritture nei registri
di controllo dei dispositivi– uguaglianza e disuguaglianza di due rappresentazioni
![Page 12: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/12.jpg)
12
Operazioni elementari eseguibili da un processore (2)
• Operazioni di ‘controllo di flusso’ :– salti condizionati (corrispondono alla
combinazione di istruzioni di controllo se ( …) vai al passo X )
– salti incondizionati (corrispondono alla istruzioni di controllo vai al passo X )
– chiamate di un sottoprogramma (CALL)– terminazione del programma (RETURN)
![Page 13: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/13.jpg)
13
Operazioni elementari eseguibili da un processore (3)
• Abbiamo elencato le funzionalità tipiche, i loro nomi ed il funzionamento specifico variano da macchina a macchina
• Esistono sul mercato processori ‘compatibili’ cioè in grado di eseguire lo stesso insieme di istruzioni (facilita la portabilità dei programmi in linguaggio macchina)– es : Intel Pentium, IBM-Cyrix, AMD
![Page 14: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/14.jpg)
14
Operazioni booleane
• Sono operazioni che lavorano su variabili che assumono valori di verità o boolani (vero, falso) :– es : se fuori piove e mi sposto a piedi allora apro l’ombrello– La due sotto-condizioni (fuori piove, mi sposto a piedi) avranno
un valore vero/falso che dipende dalla situzione in cui mi trovo– l’operatore booleano ‘e’ permette di combinare fra loro due
valori booleani – il risultato dell’operazione ‘e’ è il valore vero se entrambi gli
operando sono veri e falso altrimenti
![Page 15: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/15.jpg)
15
Operazioni booleane (2)
• Con le operazioni booleane è possibile complicare arbitrariamente le condizioni delle strutture se…allora…altrimenti e finchè...ripeti
• Anche i valori booleani si possono rappresentare in codifica binaria: generalmente– 1 rappresenta VERO– 0 rappresenta FALSO
• La definizione di ciascuna operazione booleana si può dare sotto forma di tabellina (la tabella di verità)
![Page 16: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/16.jpg)
16
Operazioni booleane (3)
Le operazioni boolane più comuni sono :• Operazione di and () :
– A and B : combina i valori di A e B in modo che il risultato sia vero solo se sono veri sia A che B
• Operazione di or () : – A or B : combina i valori di A e B in modo che il
risultato sia vero solo almeno uno fra A e B è vero
• Operazione di not () : – not A : restituisce falso se A e vero e viceversa
![Page 17: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/17.jpg)
17
Tabelle di verità delle operazioni and, or e not
A B A and B A or B Not A
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
![Page 18: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/18.jpg)
18
Operazioni logiche/booleane : perché sono importanti
• Sono facili da realizzare utilizzando circuiti elementari
• È possibile dimostrare che tutte le funzioni interessanti possono essere calcolate utilizzando una opportuna combinazione delle funzioni logiche
• Esiste un procedimento automatico per trovare questa combinazione, che viene utilizzato per realizzare le funzioni disponibili nell’hw
![Page 19: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/19.jpg)
19
Operazioni logiche : perché sono importanti (2)
• Quando si scrivono programmi che ‘parlano’ con l’hw spesso dobbiamo manipolare sequenze binarie direttamente
• Usando le funzioni logiche è sempre possibile costruire la manipolazione che ci interessa – es: mettere a 0 il terzo bit di una rappresentazione
consideriamo la rappr. 0001001111111
mi costruisco la ‘maschera’ 1111111111011
e poi calcolo AND 0001001111011
‘bit a bit’
AND
![Page 20: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/20.jpg)
20
Linguaggio macchina e assembler
• Linguaggio macchina :linguaggio comprensibile direttamente dal
processore della macchina (binario)
• Assembler : versione simbolica del linguaggio macchina in
cui i nomi delle operazioni e degli operandi sono indicati con codici simbolici
![Page 21: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/21.jpg)
21
Linguaggio macchina e assembler (2)
• Per ‘parlare direttamente con la macchina’ si usa l’assembler
• Assemblatori : programmi che traducono il codice simbolico in
sequenze di 0 e 1
• Nei prossimi lucidi vediamo un esempio di un tipico programma assembler e i passi necessari per la sua traduzione in binario
![Page 22: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/22.jpg)
22
Linguaggio macchina e assembler (3)
• Esempio: come si realizza in assembler l’operazione x=y+2 : LOAD Y, R1
ADD 2, R1
STORE R1, X
34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanole variabili intere x e y
17R1
Registro interno del processore (variabile temporanea su cui lavorare)
Legge il valore in Y e lo scrive in R1
memoria
![Page 23: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/23.jpg)
23
Linguaggio macchina e assembler (4)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanointeri
34R1
Registro interno del processore (variabile temporanea su cui lavorare)
Aggiunge 2 a R1
memoria
![Page 24: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/24.jpg)
24
Linguaggio macchina e assembler (5)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanointeri
36R1
Registro interno del processore (variabile temporanea su cui lavorare)
Scrive il contenuto di R1 nella parola di indirizzo X
memoria
![Page 25: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/25.jpg)
25
Linguaggio macchina e assembler (6)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
36
Y
X
Situazione finale dellamemoria
36R1
memoria
![Page 26: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/26.jpg)
26
Linguaggio macchina e assembler (7)
• Traduzione binaria (in linguaggio macchina) diLOAD Y, R1
ADD 2, R1
STORE R1, X
• Prima di tutto dobbiamo decidere quale è il vero indirizzo di X e Y
01101
11100
memoria
Y
X
![Page 27: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/27.jpg)
27
Linguaggio macchina e assembler (8)
• Codifica binaria diLOAD 01101, R1
ADD 2, R1
STORE R1, 11100
• Ogni operazione si codifica secondo un formato stabilito da chi costruisce l’hw– un formato semplificato è
Codice operativo Modo 1 Op1 Modo 2 Op2
![Page 28: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/28.jpg)
28
Linguaggio macchina e assembler (9)
• Vediamo i vari campi del formato :
Codice operativo Modo1 Op1 Modo2 Op2
È la codifica dell’operazione da eseguirees:
ADD 0001LOAD 0110STORE 0111
![Page 29: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/29.jpg)
29
Linguaggio macchina e assembler (9)
• Vediamo i vari campi del formato :
Codice operativo Modo1 Op1 Modo2 Op2
È la codifica primo operando, MODO1dice a cosa si riferisce OP1es:
se MODO1 = 00 l’operando è nel registro interno del processore (e OP1 è il numero del registro)se MODO1 = 01 l’operando è in memoria (e OP1 è l’indirizzo)se MODO1 = 10 l’operando è immediato, cioè OP1 è direttamente il valore dell’operando
Lo stesso vale per il secondo operando!
![Page 30: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/30.jpg)
30
Linguaggio macchina e assembler (10)
• Tipicamente la codifica di una istruzione ‘ lunga come una parola o multipli della parola per poterla leggere dalla memoria in modo più efficiente :– es : con parole di 4 byte (32 bit)
Codice operativo Modo1 Op1 Modo2 Op2
2bit 2bit4bit 12bit 12bit
![Page 31: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/31.jpg)
31
Linguaggio macchina e assembler (11)
• Problema …..– es : con 12 bit posso indirizzare ‘solo’ 212 parole di
memoria centrale (RAM) !
Cioè posso avere al massimo una RAM di 4K parole … se ne ho di più (oggi si arriva tranquillamente a 512K e siamo sempre in aumento …) devo inventarmi codifiche diverse….
Codice operativo Modo1 Op1 Modo2 Op2
2bit 2bit4bit 12bit 12bit
![Page 32: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/32.jpg)
32
Linguaggio macchina e assembler (12)
• Codifica binaria diLOAD 01101, R1
ADD 2, R1
STORE R1, 11100
Codice operativo Modo1 Op1 Modo2 Op2
MODI00 registro01 memoria10 immediatoCODICI OPERATIVIADD 0001LOAD 0110STORE 0111
2bit 2bit4bit 12bit 12bit
0110 01 01101 00 00001 load
0001 10 00010 01 00001 add
0111 00 00001 01 11100 store
![Page 33: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/33.jpg)
33
Il processore
• Come è strutturato il processore per riuscire ad eseguire i programmi in linguaggio macchina che abbiamo appena visto ….
• Dati e programmi sono codificati in binario e risiedono in Memoria Centrale (RAM) ad opportuni indirizzi
![Page 34: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/34.jpg)
34
Il processore (2)
• Esegue il seguente ciclo ininterrottamente :1. (fetch) legge una nuova istruzione da eseguire
dalla memoria centrale
2. (decode) risale alla operazione richiesta decodificando la rappresentazione binaria
3. (execute) porta a termine l’operazione richiesta
![Page 35: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/35.jpg)
35
Il processore: struttura base
Processore
Parte controllo
PC
IR
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
MAR
MDR
Memoria
centrale
Bus dati
Bus indirizzi
Bus controllo
Registro/i coinvolti
![Page 36: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/36.jpg)
36
Il processore struttura base (2)• PC (program counter)
indica l’indirizzo di memoria della prossima istruzione da eseguire
• IR (Instruction register) contiene copia della codifica dell’istruzione da eseguire
• MAR, MDR (Memory Address Register, Memory Data Register)contengono l’indirizzo della cella di memoria che vogliamo
leggere/scrivere (MAR) ed i dati da/per la memoria (MDR)
![Page 37: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/37.jpg)
37
Il processore struttura base (3)• PSW (program status word)
contiene informazioni, opportunamente codificate, sull’esito di operazioni aritmetico logiche o sull’esito di operazioni di confronto e informazioni sul funzionamento della macchina (le vedremo qundo parleremo dei sistemi operativi)
• ALU (Arithmetic-Logic Unit) effettua operazioni di tipo aritmetico e logico-
booleano (+,-,and,or …)
![Page 38: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/38.jpg)
38
Un esempio : ADD 2, R1 (fetch 1)
Processore
Parte controllo
40
IC
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
MAR
MDRBus dati
Bus indirizzi
Bus controllo
Registro/i coinvolti
000..01
40
memoria
Indirizzo della istruzione
codifica
PC
![Page 39: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/39.jpg)
39
Un esempio : ADD 2, R1 (fetch 2)
Processore
Parte controllo
41
IC
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
EsitoMDRBus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
Indirizzo della istruzione
codifica
PC
40
MAR
Leggi!
![Page 40: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/40.jpg)
40
Un esempio : ADD 2, R1 (fetch 3)
Processore
Parte controllo
41
000110000100100001
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
Bus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
![Page 41: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/41.jpg)
41
Un esempio : ADD 2, R1 (dec)
Processore
Parte controllo
41
000110000100100001
PSW
R0
R1R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
![Page 42: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/42.jpg)
42
Un esempio : ADD 2, R1 (exe 1)
Processore
Parte controllo
41
000110000100100001
PSW
00010
R1R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
![Page 43: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/43.jpg)
43
Un esempio : ADD 2, R1 (exe 2)
Processore
Parte controllo
41
000110000100100001
PSW
00010
34R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
![Page 44: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/44.jpg)
44
Un esempio : ADD 2, R1 (exe 3)
Processore
Parte controllo
41
000110000100100001
PSW
00010
36R2...
R16 Registri generali
ALUEsito
Bus dati
Bus indirizzi
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
![Page 45: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/45.jpg)
45
Il processore : il clock ed i GHz• I vari sotto-passi che compongono l’esecuzione di una
istruzione seguono algoritmi cablati nei circuiti della macchina
• L’esecuzione è sincrona, – cioè esiste un segnale di ‘inizio della sottooperazione’ (detto
tick, in quanto generato da un clock) riconosciuto da tutti i componenti
• La frequenza con cui viene inviato il tick è misurata in ‘numero di tick al secondo’ (Hz) – nei computer attuali 1Ghz (giga hertz), ovvero uno al
nanosecondo, o più
![Page 46: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/46.jpg)
46
Il processore : nella realtà ...• La struttura è estremamente più complessa
– ci sono più registri interni di quelli mostrati, es Stack Pointer (SP) usato per implementare le chiamate a sottoprogrammi
• Vengono eseguite più attività in parallelo:– pipelining : si eseguono fasi diverse di istruzioni
consecutive contemporaneamente (es. fetch I3, decode I2, execute I1...)
– superscalari : più istruzioni sono eseguite in parallelo (duplicazione unità funzionali)
![Page 47: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/47.jpg)
47
Il processore : nella realtà … (2)• E molto altro ancora ….
• Per chi è interessato – Patterson Hennessy. Computer Organization
and Design: The Hardware / Software Interface (3ed). Morgan and Kaufmann, 2004
![Page 48: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/48.jpg)
48
Le memorie
• Cosa vorremmo :– una memoria veloce– abbastanza grande da contenere tutti i dati e i
programmi che servono– persistente (o non volatile) cioè capace di
mantenere il suo contenuto anche in assenza di alimentazione elettrica
– di basso costo
![Page 49: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/49.jpg)
49
Le memorie (2)
• Cosa può fare la tecnologia ?– Memorie relativamente piccole (qualche centinaio di
MB) e veloci, volatili, a costo medio alto • RAM : lettura e scrittura nell’ordine delle decine di
nanosecondi per parola
– Memorie grandi, molto capienti (decine di GB), persistenti e lente
• Dischi rigidi : lettura e scrittura nell’ordine di alcuni millisecondi per blocco (qualche KB)
• Nastri magnetici, CD ROM, DVD
![Page 50: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/50.jpg)
50
Le memorie (3)
• I computer quindi utilizzano supporti di memorizzazione di più tipi :– una memoria centrale, tipo RAM : contiene i
programmi durante la loro esecuzione ed i dati relativi
• altrimenti il processore sarebbe per la maggior parte del tempo fermo in attesa di dati da/per la memoria
– una o più memorie di massa (dischi etc.) : che mantengono tutti i dati ed i programmi in attesa di essere eseguiti (in modo persistente)
![Page 51: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/51.jpg)
51
La memoria centrale
![Page 52: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/52.jpg)
52
Struttura di un calcolatore (ancora!)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
![Page 53: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/53.jpg)
53
Struttura di una RAM elettronica
...
Bus dati
Bus indirizzi
Bus controllo
00003
memoria
Decodificatore
1 0 1 01 0
01234
00010..000000
1 0 1 01 0
Dato letto o da scrivere
Parola :gruppo minimodi bit indirizzabili
Indirizzo
![Page 54: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/54.jpg)
54
Struttura di una RAM elettronica (2)
• La dimensione massima della RAM è data dalla dimensione della parte indirizzi del bus– al solito con N linee posso indirizzare da
0 a 2N-1
• Velocità, ordine decine di nanosecondi– ancora troppo lenta per i processori attuali (1 op
elementare al nanosecondo o più)
![Page 55: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/55.jpg)
55
Struttura di una RAM elettronica (3)E allora ? • Si usano memorie velocissime e molto piccole
realizzate con tecnologia speciale• Si usa il principio dello scaffale e della scrivania
ovvero– tengo impilati sulla scrivania i testi che sto consultando
per la mia attività corrente– se prendo un nuovo testo dallo scaffale generalmente poi
lo poso per un po’ sulla scrivania in attesa che mi serva di nuovo
![Page 56: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/56.jpg)
56
Memoria cache
Processore Cache
Memoria piccolae molto veloce
RAM
![Page 57: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/57.jpg)
57
Memoria cache
Processore Cache
Memoria piccolae molto veloce
RAM
Tutti i dati
Copia dei dati usati di recente
![Page 58: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/58.jpg)
58
Memoria cache (2)
Algoritmo seguito:
• Il dato viene cercato prima nella cache
• Se è presente abbiamo finito (cache hit)
• Se non è presente si legge in RAM e si mette una copia nella cache (cache miss)
• Per le scritture generalmente si scrive la RAM e si aggiorna la copia se c’è
![Page 59: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/59.jpg)
59
Memoria cache (3)
• Costo medio di un accesso :
tempo_RAM *p + tempo_cache * (1-p)
– p è un valore compreso nell’intervallo (0,1) ed esprime la probabilità che si verifichi un cache miss
– p può essere reso piccolo usando il principio di località
![Page 60: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/60.jpg)
60
Memoria cache (4)
• Località temporalese un programma accede una parola al tempo t è
molto probabile che la stessa parola sia acceduta di nuovo a breve
• Località spazialese il programma accede all’indirizzo K è molto
probabile che anche gli indirizzi vicini siano acceduti a breve
![Page 61: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/61.jpg)
61
Memoria cache (5)E se devo inserire un nuovo dato e non c’è più posto
nella memoria cache?– Questo accade perché le memorie cache sono molto più
piccole delle RAM (< 1MB)– La soluzione è sovrascrivere una posizione già in uso.– Ci sono diverse strategie : di solito si sovrascrive la
posizione con dati utilizzati meno di recente (strategia LRU Least Recently Used) applicando il principio di località.
– Nelle cache si usa con successo anche la Random
![Page 62: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/62.jpg)
62
Memoria cache (6)
• I computer attuali hanno tutti 1 o più livelli di cache
• Si riesce ad approssimare la velocità della memoria più piccola e le dimensioni della memoria grande a prezzi contenuti
![Page 63: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/63.jpg)
63
Le memorie secondarie
![Page 64: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/64.jpg)
64
Hardware del disco (1)
Struttura di un disco rigido
Braccio (direzioni movimento)
Testine (una per superfice)
Superfici 0
1
![Page 65: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/65.jpg)
65
Hardware del disco (2)
• Ogni superficie è divisa in tracce concentriche (una per ogni possibile posizione della testina)
traccia
settore
Unità minima diinformazione leggibile/scrivibileAmpiezza standard:512 byte
![Page 66: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/66.jpg)
66
Struttura di un settore
preambolo dati ECC
Codici correttori di errore :dati in più per accorgersi se la lettura è andata bene
dati
Permette alla testina di capire chesta iniziando un nuovo settore, fornisceil numero del settore etc
![Page 67: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/67.jpg)
67
Sommario memorie
Tipo Dimensioni T. accesso Volatile?
Registri < 1KB < .5 ns si
Cache < 1MB < 10ns si
RAM < 1GB < 100ns si
Dischi > 50 GB 10 ms ca.
Nastri > 10 GB 100 ms ca.
No
No
CD-ROM 650 MB 10 ms ca NoCD-RW DVD 17 GB 10 ms ca No(Digital Versatile Disc)
![Page 68: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/68.jpg)
68
Dispositivi di ingresso/uscita (I/O)
(o periferiche)
![Page 69: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/69.jpg)
69
Struttura di un calcolatore (5)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
![Page 70: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/70.jpg)
70
La connessione dei dispositivi di I/0 (periferiche)
• L’interfaccia (adapter) : – traduce i segnali interni al calcolatore in modo
comprensibile alla periferica– mantiene informazioni sullo stato della periferica
• La periferica– è connessa all’interfaccia tramite porte di I/O (mouse,
tastiera …)– oppure è integrata assieme all’interfaccia internamente
al calcolatore (dischi, schede di rete)
![Page 71: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/71.jpg)
71
La connessione dei dispositivi di I/0 (periferiche) (2)
• Diversi tipi di porte :– seriali (i bit arrivano uno alla volta)
• mouse, modem, collegamenti wireless,IR
– parallela (tutto il byte assieme)• stampante
• Diversi standard per scambiare il segnale sui vari tipi di porte :– seriale : RS - 232C, USB, Firewire,Bluetooth– parallela : Centronics
![Page 72: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/72.jpg)
72
La connessione dei dispositivi di I/0 (periferiche) (3)
Interfaccia I/O
Registro dati
Registro stato
Unità di controllo
Bus datiBus indirizzi
Bus controllo
Periferica
porta
Sottoprogramma per realizzarel’operazione richiesta
Operazione /esiti
Dati da/perla periferica
![Page 73: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/73.jpg)
73
La connessione dei dispositivi di I/0 (periferiche) (4)
• Vari tipi di gestione delle interazioni con le periferiche– a controllo di programma : il processore esegue
personalmente tutti i trasferimenti dalla RAM alle periferiche e viceversa
– in DMA (Direct Memory Transfer) l’interfaccia può accedere direttamente alla RAM
• possibilità di trasferire dati mentre il processore elabora
• la periferica avverte quando ha finito attraverso una particolare linea di controllo del bus (interruzione)
![Page 74: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/74.jpg)
74
L’hardware del Video (1)
Si usano delle schede di interfaccia speciali che effettuano tutto il calcolo necessario all’invio dei segnali analogici per il video
Parallel portSegnale analogico per il dispositivo
Scheda grafica
![Page 75: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/75.jpg)
75
Domande ed esercizi
• È possibile far eseguire direttamente al processore un programma ad alto livello (C/Java)?
• Che differenza c’è fra linguaggio assembler e linguaggio macchina?
• Cosa contiene un file eseguibile?
• Cos’è un compilatore?
![Page 76: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/76.jpg)
76
Domande ed esercizi (2)
• In cosa consiste il ciclo fetch, decode execute?
• Che differenza c’è fra una memoria persistente ed una volatile?
• Supponedo un hit-rate dell’80%, tempo di accesso alla cache di 1ns, e tempo di accesso in RAM di 70ns, calcolare il tempo medio di ogni accesso alla memoria.
![Page 77: 1 La struttura hardware. 2 Esecuzione di programmi Algoritmo Codifica in un linguaggio di programmazione C, Java etc. Programma Compilatore Input : programma](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb4c497959361e8b99f7/html5/thumbnails/77.jpg)
77
Domande ed esercizi (3)
• Perché è necessario utilizzare diversi tipi di memorie all’interno della macchina?
• A cosa servono i registri PC ed IC del processore?• Come vengono collegati i dispositivi?• Fornire esempi di informazioni che vengono
inviate sui diversi gruppi di linee del bus• Costruire la tabella di verità di
– (~ a) AND (b OR c)